一个检测主站与从站是否存在通讯故障的小技巧

本文介绍了如何通过西门子PLC的从站和主站程序设计,利用脉冲信号和定时器来检测通讯故障。通过比较心跳数据变化,判断通讯是否中断,提供了一种实用的故障识别方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

本文提供了一个西门子PLC与远程设备建立通讯后,检测通讯故障的程序思路。
关于通讯程序的编写,请参考文章:
S7-1200PLC通讯问题总结
这里不再赘述。


一、从站程序编写

在从站PLC中编写如下程序:
其中,“PULSE_1HZ"表示1HZ的脉冲信号;
“DB40_ParaSet”.OSR[8]用来存储上一次查询的 RLO 的边沿存储位;
“DB3_S7-Communicate_BOF”.VAP_TRIGGER随着脉冲信号的触发,依次加一,1~9999循环。
通过通讯程序,将"DB3_S7-Communicate_BOF”.VAP_TRIGGER的数据,传递给主站PLC。
在这里插入图片描述

二、主站程序编写

在主站PLC中编写如下程序:
其中,"PULSE_05HZ"表示5HZ脉冲信号;
“DB10_SYS_SIG”.BOF_TRIGGER_PRE用来存储上一个扫描周期的“3#汽化心跳”数据。

分析:
1.当通讯正常时,“3#汽化心跳”一秒递增一次,每0.2秒将数据传递给"DB10_SYS_SIG".BOF_TRIGGER_PRE,在0.2秒的扫描周期内,“3#汽化心跳”的数据和"DB10_SYS_SIG".BOF_TRIGGER_PRE的数据是相等的,由于"DB4_IEC_Timer".T80是10秒的接通延迟定时器,在0.2秒内不会接通,所以通讯正常时不会触发“与本体通讯故障”信号,如图1;
2.但在下一个扫描周期,“3#汽化心跳”已经完成了递增,还未传递给"DB10_SYS_SIG".BOF_TRIGGER_PRE,此时它两个存储的数据相差1,如图2;
3.当通讯出现故障时,“3#汽化心跳”内存储的是上一个扫描周期的数据,不会继续递增,此时,“3#汽化心跳”和"DB10_SYS_SIG".BOF_TRIGGER_PRE内存储的数据相等,“DB4_IEC_Timer”.T80开始计时,若通讯故障超过10秒,则"DB4_IEC_Timer".T80接通,触发“与本体通讯故障”信号,如图3。

在这里插入图片描述
图1
在这里插入图片描述
图2
在这里插入图片描述
图3


总结

判断通讯故障的方法有很多,本文旨在提供一个解决思路。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值