介绍
本文主要介绍Node-Red读取AB PLC 数据并做简单的数据可视化设计以及数据的云端局部共享 。
目的只为分享Node-Red节点及使用。
数据读取及发布配置
本节通过Node-Red节点的数据读取、MQTT节点的数据发布,实现数据局部云共享。
PLC型号及硬件连接
- PLC型号
我目前所找到的Node-Red节点是连接 AB的 ControlLogix系列PLC ,此型号为大型的AB PLC,由于时间仓促,本人未找到与其他系列AB PLC连接的节点,若哪位大佬知晓,还望不吝告知! - 硬件连接
电脑(带Node-Red )与PLC通信模块通过交换机连接或网线直连
Node-Red之PLC节点
- 节点名称
eth-ip in
- 节点配置
1、PLC。 填写PLC地址及CPU所在卡槽号、读取的PLC变量名称及类型 ;
2、Mode。 读取变量的方式。
3、Scope。变量所属范围。
4、Tag。读取的变量名称。
5、Name。节点重命名。
Node-Red之MQTT节点
- mqtt out节点
此节点用于消息的发布;消息的订阅为 mqtt in 节点
使用此节点之前,必须有MQTT服务器(EMQX MQTT服务器下载地址)才能成功连接并实现数据的局部云共享。 - 节点配置
1、服务端。 填写MQTT服务端及端口号、MQTT协议版本、客户端ID。其中的客户端ID虽然也会自带生成,建议自定义ID,这样在服务端能看见成功连接的ID,同时还能清楚地知道此客户端ID含义。对于可自定义的东西,最好自定义,如此会使得后续更加方便 。
2、主题。MQTT是通过主题过滤机制实现数据的传递, 故合适的主题命名在保证消息准确性的同时还能形象地传递消息的内容。
3、QoS。可根据消息内容的不同选择合适的QoS。
数据可视化
Node-Red的数据可视化可以展示多个不同界面的显示。其前端设计有点类似国家、省份、地区的的划分从而实现整体布局。其所有排布均是 根据不同类别属性的节点顺序实现整体布局。
节点属性:
- ui-tab :不同界面的ID
- ui-group :同界面下的不同区域ID
- dashboard节点(组件) :实现可视化功能的UI设计节点
通过调换同界面( ui-tab )下不同区域( ui-group )的顺序实现不同区域的排布;同区域的排列也是根据各dashboard节点间的顺序实现区域排布。
其次为了使得布局美观且组件受控,不建议使用系统自定义的大小。可以先规定 ui-group的宽度( width)确定区域展示的大小,最大宽度应该为27 ;接着再对调节dashboard组件 的大小( size)确定其在区域内所占的大致位置。
- 使用的dashboard节点的描述
gauge —用于数据的实时显示。
chart —用于数据的记录。
对于chart节点主要有X、Y轴的定义及曲线颜色定义。这些配置简单摸索就明白了。gauge节点就更简单了,在此就不细说了哦!
switch —用于数据的筛选实现报警数据分流。
通过定义不同的 规则 实现数据的流向。其中的规则包含大于、小于、等于、非空等等。
form —用于数据的文本写入。
其节点会以 {“名称”:“Type”}的形式输出,其中的 名称 和 Type 均为 Form elements 中的配置。 名称 规定后,其每次的输出不会改变; Type 只是约束所发送的内容格式,比如 Type=E-mail时,只能在前端中输入类似"xxx@gmail.com"的邮箱格式的内容时,才能使得此节点成功输出。
file —用于数据的文本记录。
此节点主要是 文件名 的命名,此命名规则为存储文件的绝对路径 。
email —通过邮箱通知实现数据报警扩展功能。
此节点的使用前提是邮箱具备 互联网邮件访问协议 ,此功能的开通详细见下文说明。
其中的配置如下:
To :目标邮箱地址
Server :由于此节点是发送消息,故选择发件服务器
Port :Server的端口
Userid :发件邮箱地址
Password :值得注意此密码并不是邮箱自定义的密码,而是开通互联网邮件访问协议的授权码
function —函数节点,可编写函数实现不同功能。
此处我只是用其转换时间戳为当前的时间,在获取的同时发现与实际的时间相差8小时。故而学习的别人的思想完成时间的转换(在此很抱歉没找到那位大佬的原文链接)。其思想是将获取的时间对象拆分为年月日时分秒,之后再拼接在一起。
由于个人原因,此josn文件暂时不可分享。设计的部分流程如图所示:
如上所述,可通过此Node-Red开发工具实现异构工控设备间的数据交互和数据的局部云端共享。
附—互联网邮件访问协议的开通
以QQ邮箱为例,进入账户界面下,如图:
点击开启按钮后,会提示发送"配置邮件客户端"的内容发送至xxx号码,本人如此操作时是失败了。
解决方法:可以在发送短信前,先点击"我已发送"按钮,之后提示提示为收到短信且会有一个新的目标号码,发送之前的短信内容至此目标哦号码,便可以成功开通此功能。这是本人的解决方法,若有其他方法可通此功能,可以分享哦!