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区的编程#p#分页标题#e#
在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的#p#分页标题#e#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
#p#分页标题#e# 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 #p#分页标题#e#16#2222, vw204, 38
fill 16#0, vw100, 38
可以用cpu 315-2dp的变量表和cpu 224的状态表来监视参与通信的存储区。
我第1次做实验的时候,很顺利地一下就成功了。总的感觉是只要组态和编程没有问题,通信很容易实现。