成都众山科技有限公司官网 成都众山科技有限公司官网

028-64267900

了解更多众山讯息——多年的通信软硬件开发经验使公司在通信产品开发和技术服务方面有着丰富的经验和雄厚的实力

了解更多众山讯息

多年的通信软硬件开发经验使公司在通信产品开发和技术服务方面有着丰富的经验和雄厚的实力

在线咨询
首页 > 新闻资讯 > 行业资讯

Modbus转JSON上报至阿里云

时间:2021-04-16 作者:众山科技

Modbus转JSON功能主要用于采集Modbus Rtu传感器数据,将采集的数据按配置的数据类型解析,并且打包成key-value的JSON格式上报到服务器,支持服务器下发JSON格式命令,省去了用户自己解析数据和转换格式的麻烦。支持连接自建服务器和阿里云IoT平台。

功能特点

·支持连接自建服务器和阿里云IoT平台

·支持TCP-Client/UDP-Master/TCP-ZSD/UDP-ZSD/MQTT/HTTP协议

·支持Modbus Rtu转JSON,支持采集多个寄存器数据打包成JSON上传到服务器

·支持自定义JSON格式

·支持JSON转Modbus,支持接收服务器JSON指令,转换为Modbus Rtu输出

·支持NTP时间

·支持本地、远程参数配置

·支持公式运算,可以将原始数据按照一定公式转换为需要的数据

·支持Lua代码,用户可以对采集的数据做判断,并且执行不同的操作

一、网关工作流程

JSON网关DTU通过配置Modbus相关参数往串口发送相应的Modbus指令,485设备收到指令以后会返回采集的数据,网关DTU通过数据类型进行解析,并将解析以后的数值以key-value的格式打包成JSON发送到服务器。

Modbus指令

流程如下:

1)配置服务器IP地址/域名和端口号,如果是MQTT协议还需要配置ClinetID、username、password、发布主题和订阅主题等参数,配置轮询周期和上报周期、JSON数据格式。

2)配置Modbus相关参数,Modbus子站地址、寄存器地址、数据类型、计算公式。

3)如果是阿里云IoT平台,需要在服务器上创建设备;如果是自建服务器,需要在服务器端打开相应的上位机软件。

4)服务器接收到打包的JSON数据。

二、参数说明

参数说明

三、使用说明

3.1 阿里云IoT平台接入

3.1.1 进入阿里云IoT平台官网https://www.aliyun.com,登录账号,然后点击右上角的控制台。

云平台接入

3.1.2 进入控制台后选择产品与服务-物联网平台。

注:第一次使用阿里云IoT平台物联网服务器需要先开通服务才能使用。

阿里云IoT物联网平台

3.1.3 选择产品-创建产品。

云平台创建

3.1.4 创建产品,产品名称可以自己定义,其他参数按图片上的配置即可。

参数配置

3.1.5 创建产品成功以后添加设备。

阿里云添加产品

云平台添加

3.1.6 添加好设备后会弹出设备鉴权证书,新建一个文本文档,点击一键复制,将信息复制到一个TXT文档里。

设备证书

3.1.7配置连接阿里云IoT平台的相关参数。

打开参数配置软件左下角的MQTT客户端,选择阿里云登录信息合成器,将信息复制到粘贴区,点击生成登录信息,将相关信息填入参数配置软件对应的位置。

MQTT配置

打开“DTUCFG-V1.1.5”,将生成的阿里云IoT平台MQTT相关参数配置进对应的参数项。发布号配置“属性上报”内容

/sys/a1XSBRUBMXW/866262044304197/thing/event/property/post

订阅号配置“设置设备属性”内容:

/sys/a1XSBRUBMXW/866262044304197/thing/service/property/set

阿里云IoT平台相关参数配置完以后需要配置“变化周期”和“固定上传周期”,变化周期表示发送Modbus指令的时间间隔,固定上传周期表示将JSON包发送到服务器的周期,单位都为毫秒。

注:除了连接阿里云IoT平台的必要参数,还需要将Modbus转JSON开关打开,JSON格式设置为阿里云IoT平台。

阿里云IoT平台参数

Modbus转JSON

3.1.8切换到Modbus Rtu参数,根据实际需要采集的Modbus Rtu设备配置相应的参数,本手册用一个温湿度-光照度传感器示例,Modbus Rtu地址及寄存器定义如下:

Modbus RTU参数

Modbus RTU

可以看出温度和湿度为两个字节,温度有符号,数据类型是int16;湿度无符号,数据类型是uint16,转换为十进制以后都需要除以10,公式配置为valuey=valuex/10。光照度为四个字节,无符号,数据类型为uint32,字节序为1234,无公式,取原始值。参数配置如下:

点击工具-Modbus参数配置可以进入Modbus配置界面

注:点击添加按钮添加功能标识符,删除按钮删除功能标识符。

Modbus参数配置

功能标

参数配置成功以后需要点复位设备,参数才会生效

3.1.9阿里云IoT平台物理模型配置

在阿里云IoT平台的产品-功能定义里面设置每个功能标识符的定义(根据每个寄存器的实际类型定义,不然阿里云IoT平台平台会提示参数类型错误),定义好以后点发布。当DTU采集数据上报后可以在设备-物理模型里面看数据,数据是Modbus Rtu协议解析后的数据。

注:虽然实际温度是int16类型,湿度是uint16类型,但经过公式计算以后有小数,所以阿里云IoT平台平台上定义温度和湿度的数据类型为float浮点数类型才能正确解析;光照度不需要通过公式计算,上报的值为原始值,类型为uint32。

点击产品-功能定义,选择编辑草稿。

自定义功能

点击添加自定义功能

功能定义

按照采集数据的类型添加功能。

注:标识符需要和Modbus Rtu参数中的功能标识符保持一致,这样阿里云IoT平台平台才能正确解析物理模型

阿里云IOT平台

(4)功能定义完以后点左下角发布

功能定义

3.1.10当设备采集数据并上报到阿里云IoT平台,可以在设备-物理模型数据查看。现在就实现了Modbus Rtu转JSON并上报到阿里云IoT平台的功能。

上报阿里云IOT平台

3.1.11 阿里云下发设置

如果配置了可读可写的开关量类型,比如继电器,可以使用阿里云设置功能。先在阿里云IoT平台物理模型添加一个继电器。

阿里云

3.1.12 在Modbus参数配置软件配置IO口的Modbus RTU相关参数(以众山RTU为例,默认Modbus RTU地址为100,DI1、DI2的寄存器地址分别为17、18;DO1、DO2的寄存器地址分别为20、21,数据类型为bool)

Modbus RTU

3.1.13 从阿里云IoT平台的在线调试功能下发控制继电器的指令

调试指令

阿里云IoT平台下发的原始指令为JSON格式,网关DTU会转换为相应的Modbus指令控制继电器,RTU返回的Modbus指令也会打包成JSON然后立即上报,这样可以实时控制和获取继电器状态。