Neuron工业协议网关软件
为了能够将RS485等接口设备转换为MQTT设备,我使用了Neuron工业协议网关软件。Neuron是EMQ(杭州映云科技有限公司)出品的,它在物联网和工业互联网领域算是个领先厂商。我以前上课用的MQTTX客户端就是该公司的产品。
Neuron早先是开源软件,核心部分和MODBUS、MQTT插件都免费。现在NeuronEx是最新版本,已经不开源了。
软件安装
Neuron是可以直接用现成的deb软件包安装的。厂商提供的x86和ARM架构的不同软件包。
根据不同版本及架构下载安装包,例如:
wget https://www.emqx.com/zh/downloads/neuron/2.6.8/neuron-2.6.8-linux-amd64.deb
sudo apt install neuron-2.6.8-linux-amd64.deb
安装后的版本,Neuron 提供了 30 个点(30 个连接和 30 个数据标签)的免费额度。可在不安装 EMQ 许可证的情况下,运行这些商业模块。超出免费额度后,则必须安装有效的试用版或官方 EMQ 许可证。
软件运行
在浏览器输入http://localhost:7000就可以看到Neuron的登录界面了。
创建南向设备
在南向设备中选择新建设备,创建一个名为RS485的设备,设备类型选择Modbus-RTU。
在创建设备的页面,物理链路选择为Serial,串口设备设置为/dev/ttyS8。
创建要监视的数据点位
完成南向插件的添加和配置后,要建立设备与 Neuron 之间的通信,首先应为南向驱动程序添加组和点位。点击RS485设备,添加一个名为 Data 的数据组 。
点位是分配给一条信息的非分层唯一关键字,其中定义了设备中的数据存储位置和数据操作属性,还包含有关数据的一些元数据信息,如比例因子、精确度和读/写属性等。我使用的温湿度传感器有两个点位:温度和湿度。点位将被分配到组中。同一个组的数据以相同的频率进行采集以及上报。创建好组和点位,即可从数据监控中获取点位的实时值。
我选用的传感器是冀欧速传感器,它的产品采用的是MODBUS协议。MODBUS是一个非常老的协议,1979年成为事实上的国际标准,目前有个国际组织进行维护:The Modbus Organization。
RS485接口产品中使用的是MODBUS over Serial Line协议,或者称为MODBUS RTU协议,其官方文档定义:Specification and Implementation Guide for MODBUS over serial line
协议的基本格式非常简单,有地址域、功能码、数据和CRC校验组成。
冀欧速传感器的查询命令如下,这里功能码0x03就是用来查询数据的。
对数据简单解释一下:
- 湿度数据0x164,就是10进制的356,对应着35.6% RH
- 温度数据0xFFDD,就是-35的补码,对应-3.5℃。
在组列表页,点击组名称进入点位列表页,添加需要采集的设备点位,包括点位地址,点位属性,数据类型等。我们添加两个点位:
- 温度:read属性,INT16类型,地址:1!40001,乘系数值为 0.1
- 湿度:read属性,INT16类型,地址:1!40002,乘系数值为 0.1
其中,其中Read属性用于读取数据,1 代表 Modbus 模拟器中设置的点位站点号,40001 代表点位寄存器地址,400001是第一个保持寄存器,设备值 * 乘系数 = 显示值`。
数据查看
在南向设备中,可以看到RS485设备的运行状态。
在数据监控页面就可以看到温湿度传感器传过来的信息。
至此,我们完成了南向设备的添加工作。