问题:请阅读下列例子
1.首先要建立一个项目,对两个plc的mpi网络组态。假设a站和b站的mpi地址分别为2和3。
2.使用 sfc65 “x_send” 和 sfc66 “x_rcv” 发送和接收数据。
3.发送程序可以放于循环中断组织块ob35中,接收程序可以放于循环组织块ob1中。
例:
说明1:在a站(2号站)的plc的定时循环中断组织块ob35中编写发送程序,把a站中的mb20~mb24发送到b站(3号站)中的mb30~mb34中。
说明2:在ob1中编写接收程序,把a站(2号站)发送到的数据存入b站(3号站)的mb30~mb34中。
按题给的能否实际编一下。
还有如果像题一样,是不是b站的mb30~mb34变成了a站的mb20~mb24?不是b站的mb30~mb34了,而a站的mb20~mb24还依旧是a站的mb20~mb24.
佳答案
1、在a站(2号站)的plc的定时循环中断组织块ob35中编写发送程序,把a站中的mb20~mb24发送到b站(3号站)。程序如下
call x_send //sfc65
req :=true //使能端
cont :=true //通讯资源,=true时,完成后保持连接,=false时,不保持
dest_id:=w#16#3 //对方 plc2 的 mpi 地址
req_id :=dw#16#1 //id号
sd :=p#m 20.0 byte 5 //2号站要发送的数据区指针,mpi通讯一次多可发送76个字节。
ret_val:=mw2 //状态返回字
busy :=m1.0 //当前通讯有没有完成
2、在b站的ob1中编写接收程序,把a站(2号站)发送到的数据存入b站(3号站)的mb30~mb34中。程序如下
call x_rcv //sfc66
en_dt :=true //使能接收
ret_val:=mw2 //返回的状态字
req_id :=md4 //id号
nda :=m1.1 //接收完成一次,本位有一个扫描周期的高电平
rd :=p#m 30.0 byte 5 //3号站,将接收到的数据放到这个指定的数据区
3、参考资料可以参考 renhq大侠的,他提供的已经很全了