当代工业控制已经越来越趋于网络化,一台设备往往不是孤立的存在,而是需要跟它的外围系统进行各种各样的通信。比如:设备要跟工厂的管理系统(MES)进行通信以传送过程数据、跟生产线进行通信以获取相关的启停信号、跟目视管理系统(ANDON)进行通信以收发一些可视化数据等等。设备在与外围系统的通信中要发送/接收一种信号,用来判断通信是处于正常状态还是中断状态。这是一种跳变的信号,只要通信正常,它就会按照某种规律变化;一旦在某段时间内检测不到这种变化,就认为通信中断了。这种跳变的信号被形象的称为"心跳信号"。
今天这篇文章,和大家分享下PLC处理心跳信号的两种方法。
1、心跳脉冲
处理心跳信号的比较简单的方法是使用脉冲。
发送方以一定的频率发送脉冲信号,接收方用该脉冲信号的取反值启动延时接通定时器(TON),并设置一个比脉冲周期长的延时时间。
如果脉冲信号处于变化状态,延时接通定时器不会到达其设定时间;
如果脉冲信号停止变化,延时接通定时器会开始计时,达到其设定时间后触发通信中断报警;
脉冲的周期不宜太短或太长,一般使用1秒的脉冲信号。
举个例子:
以DB10.DBX0.0做为心跳信号,DB10.DBX0.1做为报警信号,以心跳信号的取反值启动延时定时器,可以这样写代码:
上述代码其实有一个小的漏洞:假设DB10.DBX0.0恰好在值为1的时候发生了中断(不再变化),上述代码是不会触发报警的。
为了补上漏洞,可以在上述代码的基础上再增加一个延时接通定时器,以心跳信号触发,如下图:
这样任何一个定时器时间到了都会触发通信中断报警。
上述是以脉冲的方式处理心跳信号,还有一种方法是使用心跳计数器。
2、心跳计数器
与心跳脉冲使用布尔型变量不同,心跳计数器使用整数作为心跳值。该数值从0开始计数,每隔一定时间(通常是1秒)加1,当到达最大值后再从0开始重新计数。
对于心跳计数器的检测采用定时取样的方法,每隔一定时间(比如5秒钟)采集心跳计数器的数值,用当前值跟上一次采样的值进行比较,如果不同,说明心跳信号正常;如果两者相同,说明心跳计数器没有更新,即通信发生了中断。
关于如何定时采样,我之前写过一篇文章,请参考:西门子SCL编程实例——定时采样程序
好了,关于PLC处理心跳信号的两种方法就先介绍到这里。
欢迎扫描下方的二维码关注我的微信视频号:
发表评论