PLC通信中处理心跳信号的两种方法
当代工业控制已经越来越趋于网络化,一台设备往往不是孤立的存在,而是需要跟它的外围系统进行各种各样的通信。比如:设备要跟工厂的管理系统(MES)进行通信以传送过程数据、跟生产线进行通信以获取相关的启停信号、跟目视管理系统(ANDON)进行通信以收发一些可视化数据等等。设备在与外围系统的通信中要发送/接收一种信号,用来判断通信是处于正常状态还是中断状态。这是一种跳变的信号,只要通信正常,它就会按照某种规律变化;一旦在某段时间内检测不到这种变化,就认为通信中断了。这种跳变的信号被形象的称为"心跳信号"。
今天这篇文章,和大家分享下PLC处理心跳信号的两种方法。
1、心跳脉冲
处理心跳信号的比较简单的方法是使用脉冲。
发送方以一定的频率发送脉冲信号,接收方用该脉冲信号的取反值启动延时接通定时器(TON),并设置一个比脉冲周期长的延时时间。
如果脉冲信号处于变化状态,延时接通定时器不会到达其设定时间;
如果脉冲信号停止变化,延时接通定时器会开始计时,达到其设定时间后触发通信中断报警;
脉冲的周期不宜太短或太长,一般使用1秒的脉冲信号。
举个例子:
以DB10.DBX0.0做为心跳信号,DB10.DBX0.1做为报警信号,以心跳信号的取反值启动延时定时器,可以这样写代码:
上述代码其实有一个小的漏洞:假设DB10.DBX0.0恰好在值为1的时候发生了中断(不再变化),上述代码是不会触发报警的。
为了补上漏洞,可以在上述代码的基础上再增加一个延时接通定时器,以心跳信号触发,如下图:
这样任何一个定时器时间到了都会触发通信中断报警。
上述是以脉冲的方式处理心跳信号,还有一种方法是使用心跳计数器。
2、心跳计数器
与心跳脉冲使用布尔型变量不同,心跳计数器使用整数作为心跳值。该数值从0开始计数,每隔一定时间(通常是1秒)加1,当到达最大值后再从0开始重新计数。
对于心跳计数器的检测采用定时取样的方法,每隔一定时间(比如5秒钟)采集心跳计数器的数值,用当前值跟上一次采样的值进行比较,如果不同,说明心跳信号正常;如果两者相同,说明心跳计数器没有更新,即通信发生了中断。
关于如何定时采样,我之前写过一篇文章,请参考:西门子SCL编程实例——定时采样程序
好了,关于PLC处理心跳信号的两种方法就先介绍到这里。
我的新书《西门子S7-200 SMART PLC应用技术——编程、通信、装调、案例》已经出版,欢迎点击下面的链接查看:
#pgc-card .pgc-card-href { text-decoration: none; outline: none; display: block; width: 100%; height: 100%; } #pgc-card .pgc-card-href:hover { text-decoration: none; } /*pc 样式*/ .pgc-card { box-sizing: border-box; height: 164px; border: 1px solid #e8e8e8; position: relative; padding: 20px 94px 12px 180px; overflow: hidden; } .pgc-card::after { content: " "; display: block; border-left: 1px solid #e8e8e8; height: 120px; position: absolute; right: 76px; top: 20px; } .pgc-cover { position: absolute; width: 162px; height: 162px; top: 0; left: 0; background-size: cover; } .pgc-content { overflow: hidden; position: relative; top: 50%; -webkit-transform: translateY(-50%); transform: translateY(-50%); } .pgc-content-title { font-size: 18px; color: #222; line-height: 1; font-weight: bold; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .pgc-content-desc { font-size: 14px; color: #444; overflow: hidden; text-overflow: ellipsis; padding-top: 9px; overflow: hidden; line-height: 1.2em; display: -webkit-inline-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; } .pgc-content-price { font-size: 22px; color: #f85959; padding-top: 18px; line-height: 1em; } .pgc-card-buy { width: 75px; position: absolute; right: 0; top: 50px; color: #406599; font-size: 14px; text-align: center; } .pgc-buy-text { padding-top: 10px; } .pgc-icon-buy { height: 23px; width: 20px; display: inline-block; background: url(https://lf6-cdn-tos.bytescm.com/obj/cdn-static-resource/pgc/v2/pgc_tpl/static/image/commodity_buy_f2b4d1a.png); } S7-200 SMART PLC应用技术 ¥88 购买PLC编程基础定时器的使用举例
PLC编程过程中,定时器是非常常用的控制指令。常用于定时、延时、流程控制等。在几种类型的定时器中,接通延时定时器是非常常用的,绝大多数的控制场景都可以使用此定时器完成控制功能。这里就定时器的使用举例如下。
延时输出控制
功能说明
检测到输入信号后,延时2s,然后输出。
PLC资源分配
X0:延时输入信号
T1:延时定时器
Y0:输出信号
程序实现
延时输出控制程序
X0接通时,开始定时计时,当其计时2s后。定时器T1的触点导通,从而控制Y0输出;当X0断开后,则T1定时器复位,Y0输出亦复位。
表时钟控制
功能说明
使用定时器实现时钟,小时、分、秒的控制。
PLC资源分配
D0:秒时计时
D1:分钟计时
D2:小时计时
T0:功能实现定时
程序实现
计时心跳处理
使用定时器自己的常闭触点,启动定时器的运行。当其运行到设置定位时间后,定时器的触点导通(从此时看,假定本次PLC扫描周期为第一个周期);在PLC运行的下一个周期(第2个扫描周期),那么其常闭触点就会断开;从而复位定时计数;(第三个扫描周期)。又开始下一次定时运行,如此往复。实现1s种定时处理。
秒钟计时处理
取1s定时器的触点导通的上升沿信号,对秒钟加一计时。每计时一秒,则D0加1.
秒钟复位及分钟计时处理
当秒钟计时到59秒后,对秒钟计时寄存器D0复位。并将分钟计时寄存器D1进行加1计时。
分钟复位及小时计时处理
当分钟计时到59秒后,对秒钟计时寄存器D1复位。并将分钟计时寄存器D2进行加1计时。
小时复位处理
当计时到23小时后,对小时寄存器D2复位。
完成程序实现
(转载请注明来源函控自动化工程师头条号)
相关问答
plc心跳信号是什么意思?
PLC心跳信号是指在工业自动化系统中,由可编程逻辑控制器(PLC)发送的周期性信号。这个信号的目的是用于检测PLC的运行状态和通信是否正常。PLC心跳信号通常以固...
PLC1200如何传递心跳给上位机以便上位机监控通讯状态?
做个自加或自减的数值,送上位机进行锁存判断,不同即有心跳。做个自加或自减的数值,送上位机进行锁存判断,不同即有心跳。