北岛夜话
原创工业智能控制领域(PLC、单片机/嵌入式、机器人、通信、机器视觉)的技术及经验分享。
文章545 浏览8641522

PLC通信中处理心跳信号的两种方法

当代工业控制已经越来越趋于网络化,一台设备往往不是孤立的存在,而是需要跟它的外围系统进行各种各样的通信。比如:设备要跟工厂的管理系统(MES)进行通信以传送过程数据、跟生产线进行通信以获取相关的启停信号、跟目视管理系统(ANDON)进行通信以收发一些可视化数据等等。设备在与外围系统的通信中要发送/接收一种信号,用来判断通信是处于正常状态还是中断状态。这是一种跳变的信号,只要通信正常,它就会按照某种规律变化;一旦在某段时间内检测不到这种变化,就认为通信中断了。这种跳变的信号被形象的称为"心跳信号"。

今天这篇文章,和大家分享下PLC处理心跳信号的两种方法。

cover.png

1、心跳脉冲

处理心跳信号的比较简单的方法是使用脉冲。

发送方以一定的频率发送脉冲信号,接收方用该脉冲信号的取反值启动延时接通定时器(TON),并设置一个比脉冲周期长的延时时间。

如果脉冲信号处于变化状态,延时接通定时器不会到达其设定时间;

如果脉冲信号停止变化,延时接通定时器会开始计时,达到其设定时间后触发通信中断报警;

脉冲的周期不宜太短或太长,一般使用1秒的脉冲信号。

举个例子:

以DB10.DBX0.0做为心跳信号,DB10.DBX0.1做为报警信号,以心跳信号的取反值启动延时定时器,可以这样写代码:

heartbeat1.png

上述代码其实有一个小的漏洞:假设DB10.DBX0.0恰好在值为1的时候发生了中断(不再变化),上述代码是不会触发报警的。

为了补上漏洞,可以在上述代码的基础上再增加一个延时接通定时器,以心跳信号触发,如下图:

heartbeat2.png

这样任何一个定时器时间到了都会触发通信中断报警。

上述是以脉冲的方式处理心跳信号,还有一种方法是使用心跳计数器。

2、心跳计数器

与心跳脉冲使用布尔型变量不同,心跳计数器使用整数作为心跳值。该数值从0开始计数,每隔一定时间(通常是1秒)加1,当到达最大值后再从0开始重新计数。

对于心跳计数器的检测采用定时取样的方法,每隔一定时间(比如5秒钟)采集心跳计数器的数值,用当前值跟上一次采样的值进行比较,如果不同,说明心跳信号正常;如果两者相同,说明心跳计数器没有更新,即通信发生了中断。

关于如何定时采样,我之前写过一篇文章,请参考:西门子SCL编程实例——定时采样程序

好了,关于PLC处理心跳信号的两种方法就先介绍到这里。

欢迎扫描下方的二维码关注我的微信视频号:

founderchip.png

取消

感谢您的支持,欢迎常来看看!

扫码支持
一点动力,多少随意

打开支付宝扫一扫,即可进行扫码打赏哦

发表评论