其他分享
首页 > 其他分享> > S7 400H之间单边通讯实现方法

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配置如下:

ID4配置如下

在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存放通讯错误代码。

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

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

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

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

 

 

标签:PLC1,通讯,单边,程序,S7,192.168,400H,PLC2,ID
来源: https://www.cnblogs.com/fishingsriver/p/15807974.html