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