S7-200与S7-300的MPI通信 点击:250 | 回复:4



稚若初现0

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:104帖 | 384回
  • 年度积分:0
  • 历史总积分:4735
  • 注册:2012年4月20日
发表于:2012-10-01 11:09:43
楼主
MPI(多点接口)是西门子内部使用的通信协议,物理层为RS-485。通过MPI网络的S7基本通信,S7-300可以用系统功能X_GET和X_PUT来读、写S7-200的存储区,最多可读、写76字节的数据,S7-200不需要编写通信程序。其优点是使用PLC自带的RS-485通信接口,不需要增加通信用的硬件,编程简单,容易实现。

1.通信参数的设置

用系统块设置CPU 224在MPI网络中的站地址为3。为了方便下载和监控,将S7-200、S7-300和计算机的通信速率均设置为19.2 kbit/s。需要将系统块下载到CPU,设置的参数才会起作用。

组态时将CPU 315-2DP连接到MPI网络上,设置MPI站地址为2。将设置的参数下载到CPU 315-2DP。

2.CPU 315-2DP读写CPU 224的V区的编程
在CPU 315-2DP的OB35中调用SFC 68“X_PUT”,将本站的DB 1的76字节数据发送到通信伙伴的DB 1的DBB100~DBB175,即CPU 224的VB100~VB175。调用SFC 67“X_GET”,读取CPU 224的VB200~VB275(即DB 1的DBB200~DBB275)中的数据,将它们存放到DB 2。执行OB35的时间间隔为默认的100ms。

    下面是CPU 315-2DP的循环中断组织块OB35的程序:

程序段 1:将本站的DB1中的数据写入CPU 224的V区

CALL  "X_PUT"                             

  REQ           :=TRUE                      

  CONT         :=TRUE                        

  DEST_ID    :=W#16#3                                //S7-200的MPI地址

  VAR_ADDR:=P#DB1.DBX100.0 BYTE 76       //S7-200要写入数据的VB100~VB175

  SD             :=P#DB1.DBX0.0 BYTE 76            //存放本站要发送的数据的地址区

  RET_VAL   :=MW2                      

  BUSY         :=M0.1                        

程序段 2:读取CPU 224的V区的数据,保存到本站的DB 2

CALL  "X_GET"                              

  REQ             :=TRUE                      

  CONT          :=TRUE                      

  DEST_ID     :=W#16#3                     

  VAR_ADDR:= P#DB1.DBX200.0 BYTE 76      //要读取S7-200的VB200~VB275

  RET_VAL    :=MW4                      

  BUSY          :=M0.3                        

  RD              := P#DB2.DBX0.0 BYTE 76           //保存读取的数据的地址区

为了验证通信是否实现,在初始化程序OB100将数据块DB 1的76字节数据发送区的字预置为W#16#3333,将DB 2的76字节数据接收区复位为0。

3.CPU 224的程序
为了验证通信是否实现,在CPU 224的OB1中,在第一个扫描周期将发送数据区VW204~VW274预置为16#2222,将接收数据区VW100~VW174清零。

LD     SM0.1                                       

FILL     16#2222, VW204, 38                  

FILL     16#0, VW100, 38                     

可以用CPU 315-2DP的变量表和CPU 224的状态表来监视参与通信的存储区。

    我第1次做实验的时候,很顺利地一下就成功了。总的感觉是只要组态和编程没有问题,通信很容易实现。




lcl545467411

  • 精华:0帖
  • 求助:9帖
  • 帖子:62帖 | 478回
  • 年度积分:197
  • 历史总积分:34719
  • 注册:2011年9月24日
发表于:2012-10-01 15:41:41
1楼
学习下。好没用过MPI通信。

王道火山--纵横军团

  • 精华:2帖
  • 求助:5帖
  • 帖子:86帖 | 1878回
  • 年度积分:0
  • 历史总积分:7858
  • 注册:2012年1月11日
发表于:2012-10-05 11:42:44
2楼

恩 来试试!!!

 

 

                                            

遇雨的舟

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 30回
  • 年度积分:0
  • 历史总积分:1877
  • 注册:2008年9月17日
发表于:2012-10-08 09:36:53
3楼

SFC67,68完全可以实现200和300之间的通讯。

但是在REQ这个管脚处不宜一直为1.我也做过同样的例子,两个CPU之间需要MPI通讯时,通过300这边的一个启动信号来触发这种通讯。

另外,关键的地方在于这根通讯线的连接,两边连接头一定要做好。

niki

  • [版主]
  • 精华:7帖
  • 求助:2帖
  • 帖子:1050帖 | 1332回
  • 年度积分:376
  • 历史总积分:8436
  • 注册:2009年2月24日
发表于:2012-10-10 10:14:03
4楼

可以将西门子smart IE新款触屏连接到s7-300 PLC的映射转换器,详见www.dl-winbest.cn PPItoMPI映射转换器产品。


热门招聘
相关主题

官方公众号

智造工程师