课程中心
HOME
课程中心
正文内容
plc编程开发心跳 PLC通信中处理心跳信号的两种方法
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

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 购买

AB PLC网络心跳监测程序开发

前言:一个工业项目的网络架构复杂程度取决项目的规模,不过再复杂的网络架构,都是由一个个节点组成的,那么节点与节点之间、服务端和客户端之间、应用软件与底层设备之间通信的状态如何监测,这是一个值得关注的课题,当然,目前也有很多成熟的解决方案。那么,AB PLC之间,或者AB PLC与第三方网络设备如何实现通信状态监测呢?今天,先分享一种方法:网络心跳监测。

01

项目环境

1. 操作系统:Windows10 专业版 64位 21H1

2. 编程软件:Studio 5000 英文版 V32.01.00

3. 上位软件:FT View Studio 中文版 V11.00.00

4. 5370硬件:1769-L30ER

5. 5570硬件:1756-L72 + 1756-ENBT

02

网络心跳

1. 何为网络心跳?该词来源于人类的心跳,即一分钟跳动多少次,如果正常,那么表明活着,网络心跳正是利用这一原理,告诉通信伙伴,自己的网络状态是正常,一旦心跳停止,那么网络状态势必发生了故障.

2. 如何实现网络心跳监测程序呢?假设服务端与多个客户端进行以太网通信,服务端需要监测客户端的通信状态,方法应该有很多种,我是这样做的:

3. 上面的图片可以放大了查看,如果不想费劲,那么,就看下面的文字吧,实现网络心跳监测的程序逻辑:

客户端以一定的频率产生心跳 客户端将网络心跳数发送给服务端 服务端监测客户端心跳数,并将其存入心跳缓存 服务端将客户端心跳与心跳缓存进行比较 如果心跳 ≠ 心跳缓存,通信正常; 如果心跳 = 心跳缓存,通信故障.

4. 看了上面的程序逻辑描述,是不是有了想写程序冲动呢,下面的段落,我将用【图文+视频】的方式来演示如何实现这一过程。如果,你,以前没有写过网络心跳的程序,建议:看到这里,关闭文章,自己去写一个;当然,你,也可以看完文章,再去写一个.

03

心跳程序

1. 项目情景: 1756-L72与1769-L30ER通过Ethernet/IP以太网通信,并接收它产生的心跳,并根据心跳变化来判断网络通信状态,IP地址详见下图.

2. 由于这两款控制器,都属于AB LOGIX5000系列,那么,它们之间实现通信交换数据非常方便,本文使用的方法是生产/消费者标签,1769-L30ER作为生产者,1756-L72作为消费者,在1769-L30ER项目中,控制器名称为CML30ER,在控制器标签域中配置生产型标签HeartBeat,数据类型DINT,标签类型Produced,详见下图.

3. 在1756-L72项目中,在以太网中添加1769-L30ER控制器CML30ER,在控制器标签域中,创建消费者标签HeartBeatFromCML30ER,数据类型DINT,标签类型Consumed,生产者选择CML30ER,远程标签填HeartBeat,RIP填写100ms,详见下图.

4. 本文所描述的心跳程序,具体一定的通用性,所以决定使用AOI指令进行封装,程序分为两部分:

第1部分,产生网络心跳的程序:设置心跳频率、心跳最大数等;第2部分,接收通信伙伴的心跳程序:设置通信中断时间、判断通信状态等;AOI封装块使用,如下图,建议放大查看.

5. AOI封装块里第1部分,产生网络心跳的程序代码,详见下图,如果放大了还看不清楚的话,文末提供了代码下载方法.

6. AOI封装块里第2部分,接收通信伙伴的心跳,并以此判断通信状态的程序代码.

结语:综上所述,本文通过图文、理论、案例等方式方法比较详细的讲解了网络通信心跳机制,以及LOGIX5000控制器如何编写代码来实现,由于该属性具有通用性,即不仅仅限于AB PLC之间的通信,还适用于AB PLC与第三方设备通信,故使用了AOI封装的方式,便于快速移植和部署,感兴趣的朋友可以试试,也可以开发适合自己项目的代码。

相关问答

plc心跳判断程序?

PLC心跳判断程序是用于监测PLC系统是否正常运行的程序。以下是一个简单的PLC心跳判断程序的示例:1.创建一个心跳变量heartbeat,并初始化为0。2.循环执行以下...

60多岁老人健康体检都有哪些项目_千问健康

问题描述:左乳房有硬结,压痛,经过一段时间治疗,现在有所缓解,查肝功和激素水平在正常范围内.现在想做一个全身健康体检,像这个年龄一般都要做哪些检查

求解如何检测触摸屏_其他问答_系统粉

检测方法:1、检查显示器与电脑主机的连接线两端是否松动;2、尝试调整显示器上的设置按钮;3、拆开主机,将内存卡拔出后擦拭芯片再插回卡槽。如果提示...

广药发布研究成果称喝王老吉可延长10%的寿命,这可信么?

广药发布研究成果称喝王老吉可延长10%的寿命,这可信么?近日,广药集团董事长李楚源在《财富》全球论坛上表示:“国家863计划研究结果表明,喝王老吉可延长10%...

老师们!请解答一下:多功能健康手环有哪些,健康手环排名好...

[回答]宜准的外观比较大众化,平时出去运动都戴它。功能也挺多的,跑步时可以测心率,还有虚拟兔子陪练的功能,周围挺多跑步的伙伴都在使用的。千元百元的运...

 阜城中学  倒桩 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部