NodeRed中Modbus数据解析流程原理设计与实现

 01 前言

本文章原文发表于我的微信公众号,请大家关注阅读,涉及的源代码等都在公众号,请搜索公众号: 智能家居NodeRed和HomeAssistant 即可关注。

02 概述

Modbus设备的数据解析有很多种方法,在智能家居中一般采用的是HomeAssistant和NodeRed,这两个平台各有千秋,有各自的优缺点,至于平台的选择根据实际需求和喜好来决定,而我更喜欢用NodeRed。

03 为何不愿使用第三方节点

当然NodeRed门槛稍稍有点高,初次接触都会一头雾水,因为大家都习惯了图形化的操作界面,虽然说NodeRed采用拖拽式操作也比较直观,但是如果想实现更多的功能就得使用诸多的第三方节点。

第三方节点依赖于广大开发者的分享和维护,在升级NodeRed版本时如果节点维护更新不及时,可能造成无法使用的尴尬;其二,三方节点大多无用功能太多,很多时候安装一个节点而只是使用到其中的一个功能;其三,有时为了实现某些特定功能则需要使用很多节点来完成,显得流程臃肿。

基于以上原因,我更喜欢用function来完成复杂的功能,流程显得更简洁,运行更高效,免配置的HA自动发现功能应该算是一大亮点,希望推广我的流程和理念使更多人使用并受益。

04 解析流程原理与实现

相信在NodeRed中99%都是采用Modbus节点完成的,而我则没有使用过,主要原因是它不能和HA无缝对接(当然可以使用HA节点),而且设置过程也较为繁琐,我的初衷是用简单的流程完成想要的所有功能,下面是我在用的流程图:

图片

以上流程图中,比我以前发布的流程多了分组输出功能和其他平台的订阅发布功能,分组输出功能可以显示解析的各路数据及状态,这个功能还没发布过,这里只对流程原理进行说明。

流程的核心是“轮询查询”节点,也是流程中唯一需要自定义设置的节点,后面可能改名为“轮询查询&系统设置”,其他节点除串口和MQTT节点简单设置后,其他函数节点完全不用理会,所以我认为此流程使用很方便,完全不需要任何基础知识,至于具体使用方法,前面文章有具体介绍,大家可以前去翻阅。

“轮询查询”节点主要把定义的Modbus参数、HA自动发现参数等,并写入变量中,这个变量类似于一张数据表,方便后边节点读取调用;另外该节点根据定义的数据自动生成Modbus指令,并根据从站信息自动轮询,这里只需要根据函数计算的时间设置时间戳的重复间隔即可自动完成轮询指令发送。

“队列”节点的作用是为了防止读写冲突而采取的排队机制。

串口或串口服务器接收到正确指令后反馈“报文数据解析”节点,该节点通过报文buffer内容读取出从站地址、功能码、寄存器数量内容,并在定义的变量数据表中检索对应的条目,根据定义的解析格式从而解析出数据,然后生成主题发送状态信息到MQTT服务区,例如HA,这里生成的是HA状态主题。

在数据解析节点对数据进行CRC校验,如果校验码错误,则抛弃该数据,防止解析错误造成数据异常。

“查询变量”节点作用只是读取一次定义的数据内容并以Json格式发送至“HA自动发现发布”节点,该节点通过数据定义自动生成相应的自动发现主题并发布至HA,实现自动发现功能。

“HA动态指令订阅“节点作用是通过获取到的Json数据,判断哪些设备需要生成自动订阅主题并发送至HA的MQTT服务器,MQTT服务器则会自动订阅HA的控制指令并发送至“解析HA指令并发布”节点,该节点生成Modbus控制命令,发送给串口从而实现串口控制功能。

05 结束语

以上大致介绍了图示NodeRed流程中解析Modbus数据流程的工作原理,目的是让各位朋友能够了解认识流程并逐步认同我的观点和理念。当然以上流程我也会在后期不断的改进或者扩充功能。

感兴趣的朋友请关注我的公众号获取相关资料

  • 13
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Node-RED是一款基于JavaScript的开源软件,用于创建基于流程的物联网应用程序。Modbus是一种通用的通信协议,常用于连接工业自动化设备。Node-RED通过Modbus插件,可以实现数据采集。 数据采集是指从各种传感器、设备或系统收集数据的过程。使用Node-RED进行Modbus数据采集可以帮助我们获取工业设备的实时数据,并进行实时监测和分析。 在Node-RED,我们需要安装Modbus插件来支持Modbus通信。安装插件后,我们可以在流程编辑器添加Modbus节点,配置节点的通信参数,例如Modbus设备的IP地址和端口号。然后,我们可以选择读取或写入Modbus设备的寄存器数据。 在数据采集过程,我们可以通过设置定时器节点来定期读取Modbus设备的数据。读取到的数据可以保存在本地的数据,或者通过其他节点进行处理和分析。我们还可以通过在网页上创建可视化界面,实时展示采集的Modbus数据Node-RED流程编辑器提供了丰富的功能和节点库,可以灵活地处理和展示数据。我们可以根据具体的需求,选择适合的节点进行数据处理。例如,我们可以使用计算节点对数据进行转换、计算或筛选;使用图表节点可视化数据;使用报警节点根据设定的阈值触发警报等等。 通过Node-RED进行Modbus数据采集,我们可以快速建立起一个灵活、可扩展的数据采集系统。同时,Node-RED的直观界面和丰富的节点库,简化了数据采集过程,使我们能够更轻松地获取和利用Modbus设备的数据
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值