使用SFC67和SFC68,多台S7-200,谢谢
问题补充:
谢谢,如果我有8台S7-200作为从站,我就要在OB1中添加16个网段,调用8次SFC67和SFC68,是这样吗?
最佳答案
通过调用SFC67/68实现无组态的MPI的通信,适合S7-400PLC、S7-300PLC、S7-200PLC之间的通信。
以S7-200与S7-300之间的无组态MPI通信为例来说明,一般S7-200与S7-300之间只能采用单边无组态通信方式,即仅在S7-300
在X_PUT(SFC68)发送数据的指令,通过SFC68将数据写入不在同一个本地S7站的通信伙伴。在通信伙伴上没有相应的SFC68,必须确保由SD(本机的数据区,数据类型为ANY,在发送CPU上,既S7-300PLC上)定义的发送区和由VAR_ADDR参数(对方的数据区,数据类型为ANY,在通信伙伴上,这里是指S7-200)定义的接收区长度相同,并且数据类型相匹配。
一般若对S7-200的V区读写,则在S7-300中定义S7-200的V区,须用DB1代替,用指针间接寻址方式进行。如你想读出S7-200中VB0以后的30个字节并且放到S7-300的MB20以后的30个字节中,需要调用系统功能SFC67,在参数VAR_ADDRESS(对方数据区,指S7-200)中设定S7-200的地址区为:P#DB1.DBX0.0 BYTE 30, 在参数RD(本机的数据区,指S7-300)中设定S7-300的地址区为P#MB20.0 BYTE30.
同样如果将S7-300的MB40以后的70个字节写入7-200中VB31以后的70个字节中,需要调用系统功能SFC68,在参数VAR_ADDR中定义S7-200的地址区:P#DB1.DBX31.0 BYTE 70, 在参数SD中设定S7-300D的地址区为P#MB40.0 BYTE 70;
一般S7-300/400可以同时作为客户机和服务器,而S7-200只能作为服务器。如果想实现S7-300/400与两个S7-200站通信,在通过REQ=1调用相应SFC67/68之后,激活读写作业。此后可以继续调用SFC67/68, 两套指令的REQ和CONT可以一直为1,直到参数BUSY=0 指示接收到应答为止
具体可以看下面的资料
http://www.ad.siemens.com.cn/download/docMessage.aspx?ID=1360&loginID=&srno=&sendtime=
提问者对于答案的评价:
谢谢
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc261412.html