S7 400H之间单边通讯实现方法

        现场有两套S7 400Hi同,PLC1先投入使用,PLC2正在调试。前期没有把项目程序做在一个程序中,造成无法做容错链接。今天尝试着在PLC2中做单边通讯,把过程记录下来。

前面的硬件组态等就略过了。PLC1的CPU是412-4H,IP地址是192.168.20.202和192.168.20.203.

PLC2也是412-4H,IP地址是192.168.20.204和12.168.20.205。

step7打开PLC2程序,打开netpro,在每一个CPU下建立一个未知对象的S7 通讯,ID分别为3和4

ID3配置如下:

S7 400H之间单边通讯实现方法

ID4配置如下

S7 400H之间单边通讯实现方法

在PLC2下新建一个FC,用于通讯程序,新建DB9和DB13用于向PLC1写数据,新建DB10和DB14用于接收PLC2传来的数据。FC下插入SFB15,用于向PLC1写数据,REQ需要上升沿,这里使用时钟存储器M0.6,这个是经过逐步测试找到的,速度太快不行,比如尝试过M0.0至M0.5,通讯都不正常。ID就是通讯ID,和前面netpro中设置的ID号码保持一致。P#DB9.DBX0.0表示指针,从DB9.DBX0.0开始,两个字节长度的数据。输出M131.0表示通讯是否完成,M131.1表示通讯是否有错,MW8164存放通讯错误代码。

S7 400H之间单边通讯实现方法

插入一个network,放SFB14,用于接收PLC1传来的数据,各管脚定义参考前面的描述

S7 400H之间单边通讯实现方法

需要判断一下通讯是否正常,插入一个NEtwork,写下面程序,这里通过PLC1传来的DB10.BX0.0来判断,在PLC1中使用时钟存储器M0.5对其赋值,理论上接收端这也是一个脉冲信号,随时变化,如果在S_ODT时间范围内不变化,那么M131.4就会为1,从而判断出两套PLC之间通讯是否正常。

S7 400H之间单边通讯实现方法

同样的思路,把ID4的通讯也使用SFB做读写数据,存放在其他的DB中。

根据两个通讯的状态,来决定程序中具体使用哪个DB里面的元素。

 S7 400H之间单边通讯实现方法

S7 400H之间单边通讯实现方法

S7 400H之间单边通讯实现方法

 

上一篇:Linux 的 FIGlet 指令产生 ASCII Art 大型文字教学


下一篇:CP342-5通讯端口几种模式之间的区别