阿里云怎么接收上传的json(如何将Modbus转JSON上报至阿里云)
阿里云怎么接收上传的json(如何将Modbus转JSON上报至阿里云)·支持自定义JSON格式·支持Modbus Rtu转JSON,支持采集多个寄存器数据打包成JSON上传到服务器功能特点·支持连接自建服务器和阿里云IoT平台·支持TCP-Client/UDP-Master/TCP-ZSD/UDP-ZSD/MQTT/HTTP协议
测试设备为:众山科技提供的LTE-669边缘解析网关
某宝有售
前引
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发送到服务器。
流程如下:
(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平台物联网服务器需要先开通服务才能使用。
3.1.3 选择产品-创建产品。
3.1.4 创建产品,产品名称可以自己定义,其他参数按图片上的配置即可。
3.1.5 创建产品成功以后添加设备。
3.1.6 添加好设备后会弹出设备鉴权证书,新建一个文本文档,点击一键复制,将信息复制到一个TXT文档里。
3.1.7配置连接阿里云IoT平台的相关参数。
打开参数配置软件左下角的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平台。
3.1.8切换到Modbus RTU参数,根据实际需要采集的Modbus Rtu设备配置相应的参数,本手册用一个温湿度-光照度传感器示例,Modbus Rtu地址及寄存器定义如下:
可以看出温度和湿度为两个字节,温度有符号,数据类型是int16;湿度无符号,数据类型是uint16,转换为十进制以后都需要除以10,公式配置为valuey=valuex/10。光照度为四个字节,无符号,数据类型为uint32,字节序为1234,无公式,取原始值。参数配置如下:
点击工具-Modbus参数配置可以进入Modbus配置界面
注:点击添加按钮添加功能标识符,删除按钮删除功能标识符。
参数配置成功以后需要点复位设备,参数才会生效
3.1.9阿里云IoT平台物理模型配置
在阿里云IoT平台的产品-功能定义里面设置每个功能标识符的定义(根据每个寄存器的实际类型定义,不然阿里云IoT平台平台会提示参数类型错误),定义好以后点发布。当DTU采集数据上报后可以在设备-物理模型里面看数据,数据是Modbus Rtu协议解析后的数据。
注:虽然实际温度是int16类型,湿度是uint16类型,但经过公式计算以后有小数,所以阿里云IoT平台平台上定义温度和湿度的数据类型为float浮点数类型才能正确解析;光照度不需要通过公式计算,上报的值为原始值,类型为uint32。
点击产品-功能定义,选择编辑草稿。
点击添加自定义功能
按照采集数据的类型添加功能。
注:标识符需要和Modbus Rtu参数中的功能标识符保持一致,这样阿里云IoT平台平台才能正确解析物理模型
(4)功能定义完以后点左下角发布
3.1.10当设备采集数据并上报到阿里云IoT平台,可以在设备-物理模型数据查看。现在就实现了Modbus Rtu转JSON并上报到阿里云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)
3.1.13 从阿里云IoT平台的在线调试功能下发控制继电器的指令
阿里云IoT平台下发的原始指令为JSON格式,网关DTU会转换为相应的Modbus指令控制继电器,RTU返回的Modbus指令也会打包成JSON然后立即上报,这样可以实时控制和获取继电器状态。