图4. 程序调用功能
CALL “GET” | ,%DB1 | //调用 GET,使用背景DB块:DB1 |
REQ | :=%M0.7 | //系统时钟 2秒脉冲 |
ID | :=W#16#0001 | //连接号,要与连接配置中一致 |
NDR | :=%M4.0 | //为1时,接收到新数据 |
ERROR | :=%M4.1 | //为1时,有故障发生 |
STATUS | :=%MW6 | //状态代码 |
ADDR_1 | :=P#DB3.DBX 0.0 BYTE 100 | //从通信伙伴数据区读取数据的地址 |
RD_1 | :=P#DB4.DBX0.0 BYTE 100 | //本地接收数据地址 |
CALL “PUT” | , %DB2 | //调用 PUT_S,使用背景DB块:DB2 |
REQ | :=%M0.7 | //系统时钟 2秒脉冲 |
ID | :=W#16#0001 | //连接号,要与连接配置中一致 |
DONE | :=%M10.0 | //为1时,发送完成 |
ERROR | :=%M10.1 | //为1时,有故障发生 |
STATUS | :=%MW12 | //状态代码 |
ADDR_1 | :=P#DB4.DBX 0.0 BYTE 100 | //发送到通信伙伴数据区的地址 |
SD_1 | :=P#DB3.DBX0.0 BYTE 100 | //本地发送数据区 |
4. 监控结果
通过在S7-300侧编程进行S7通讯 ,实现 两个CPU之间数据交换,监控结果如图5
图5. 监控结果
附加说明
请注意,以上例子中使用1500的作为服务器的PLC,需要如下额外设置,才能保证S7通信正常。
请点开作为S7服务器(sever)的 CPU的设备组态,“属性->常规->保护”里“连接机制”一项需要勾选“允许从远程伙伴(PLC\HMI\OPC\...)使用PUT/GET 通信访问”,如下图所示: