S7通信是S7系列PLC基于MPI、PROFIBUS、ETHERNET网络的一种优化的通信协议,主要用于S7-300/400PLC之间的通信。
经过测试发现S7-300通过集成的PN口或CP343-1与S7-200 PLC 之间的S7通信也是可以成功的, 但是需要S7-300侧编程调用PUT/GET指令。
注意:
1.S7-200 CPU 与S7-300 CPU 之间的S7通信未经西门子官方测试,本文档仅供客户测试使用,使用该种通信方式所产生的任何危险需要有客户自己承担!
2. S7-300若采用CP通信时,则需要采用Standard或Advanced类型通信模块,CP343-1 Lean模块不支持。
3.本文仅介绍S7-300集成PN口与S7-200 CPU S7通信。
S7-300根据使用通信接口(集成的PN口或CP343-1)不同,调用的功能块来源也不同。
通信接口为S7-300 集成PN接口时,需要使用Standard Library中PUT/GET指令。
通信接口为S7-300 CP通信模块时,需要使用SIMATIC_NET_CP 库中PUT/GET指令。
硬件及网络组态:
本文以采用1个CPU 315-2PN/DP,1个S7-200 PLC为例,介绍它们之间的S7通信。
在STEP7中创建一个新项目,插入1个S7-300站,在硬件组态中插入CPU 315-2 PN/DP。
设置CPU 315-2PN/DP的IP地址:192.168.1.30,如图5所示。硬件组态完成后,即可下载该组态。
打开“网络组态”设置网络参数,选中CPU 315-2PN/DP,在连接列表中建立新的连接。
选择 未指定 站点,选择通讯协议 S7 连接,点击 应用
在弹出的S7 连接属性对话框中,勾选 建立主动连接,设置参数地址:192.168.1.20(S7-200 PLC IP 地址)
点击 "地址详细信息" ,再弹出来的对话框设置 参数 的 插槽为1
网络组态创建完成后,需要编译,网络组态编译无错,鼠标先点击 CPU 315-2PN/DP ,然后点击下载按钮下载网络组态。
程序编程:
可以通过FB 14 "GET",从远程CPU中读取数据。
S7-300:在REQ的上升沿处读取数据。在REQ的每个上升沿处传送参数ID、ADDR_1和RD_1。在每个作业结束之后,可以分配新数值给ID、ADDR_1和RD_1参数。
通过使用FB 15 "PUT",可以将数据写入到远程CPU。
S7-300:在REQ的上升沿处发送数据。在REQ的每个上升沿处传送参数ID、ADDR_1和SD_1。在每个作业结束之后,可以给ID、ADDR_1和SD_1参数分配新数值。
打开SIMATIC 315的OB1,在OB1中依次调用FB14,FB15
注意:S7-200 PLC 不需要编程。 S7-200 中的V存储区在S7-300 PLC 编程中以DB1数据块的形式体现。
以GET指令为例,参考如下:
可见通讯成功。