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封装的方式,便于快速移植和部署,感兴趣的朋友可以试试,也可以开发适合自己项目的代码。