TCP-Modbus-RTU实战指南_物联网平台_边缘计算网关

准备工作:

NetAssist.exe网络调试助手。创建TCP_modbus-rtu类型的产品和设备。

Modbus通信知识引导

此处为语雀内容卡片,点击链接查看:https://yunteng.yuque.com/avshoi/hxd0ak/fclp7dt9iby5yo1t

TCP连续性地址数据实现

连续性地址物模型json:温度int类型(寄存地址1),湿度int类型(寄存地址2),氨气int类型(寄存地址3)。

TCP温湿度氨气json数据,可下载后直接在产品中导入该物模型json。

问询帧

地址码

功能码

起始地址

数据长度

校验码低位

校验码高位

0x01

0x03

0x00 0x00

0x00 0x03

0x05

0xCB

💡 提示

地址码:请求设备的地址码。功能码:表示查询保持寄存器。起始地址:代表查询寄存器起始地址为0000H。

数据长度:意思就是查询从0开始有几个个寄存器。校验位:校验固定公式生成。

应答帧

地址码

功能码

字节数

温度值

湿度值

氨气

校验码低位

校验码高位

0x01

0x03

0x06

0x00 0x1F

0x00 0x2D

0x00 0x64

0x25

0x55

💡 提示

地址码:请求设备的地址码。功能码:表示查询保存寄存器。字节数:代表后面数据的字节数(数据长度),由于一个寄存器两个字节,查询一个寄存器的数据,返回的数据长度就是两个字节,返回数据长度(单位字节)=查询寄存器格式*2。温度值湿度值等:寄存器数据值。校验位:校验固定公式生成。

温度:00 1F H(十六进制) = 31 =>如果缩放因子为10,则 温度= 3.1℃ (单位)。

湿度: 00 2D H(十六进制)= 45 => 如果缩放因子为10,则 湿度= 4.5%RH(单位)。

准备hex16进制数据:01 03 06 00 1F 00 2D 00 64 25 55

操作流程:添加TCP产品–>添加该产品设备–>通过NetAssist.exe网络调试助手连接设备(连接时需要设备访问令牌发送进行验证)–>推送hex16进制数据–>设备物模型数据显示推送值。

TCP不连续地址数据实现

不连续性地址物模型json导入:温度int类型(1个寄存器,寄存地址1),湿度int类型(1个寄存器,寄存地址2),一氧化碳单精度(2个寄存器,寄存器地址6),二氧化碳单精度(2个寄存器,寄存器地址8)。温湿度为连续地址,一氧化碳和二氧化碳为连续地址。

准备16进制数据:

温湿度为连续性地址:01 03 04 00 1F 00 2D 0B E8

一氧化碳和二氧化碳为连续地址:01 03 08 42 0E 7A E1 42 83 33 33 F9 07

操作流程:添加TCP产品–>添加该产品设备–>通过NetAssist.exe网络调试助手连接设备–>先推送符合温湿度寄存器数的16进制数据–>再推送符合一氧化碳和二氧化碳寄存器数的16进制数据。

💡 提示

因为modbus默认以连续性地址进制数据为准,如果寄存器地址不为连续,则需要推送不同的hex数据实现。

TCP位开关解析数据实现

比特位实现开关

开关物模型json:开关解析从0位开始,0-7为一个寄存器两个字节16位。测试的开关位分别为0,2,5,7,8。

16进制开关位数据:01 03 02 03 FF F8 F4。

💡 提示

开关位一般是一个寄存器->两个字节-十六位。下图为16进制转2进制数据,16位前面需补位0000,开关位效果为从右往左。

正常线圈开关状态实现

开关物模型json:开关从0位开始解析,线圈为读取01,写入05,测试开关为5个,寄存器地址0-4连续,示例开关16进制数据为:01 01 01 15 90 47,开关状态为0001 0101,从右往左进行控制则为开,关,开,关,开。

设备物模型数据展示:

看板开关控制组件展示:

本文通过 YUQUE WORDPRESS 同步自语雀
云腾五洲-AI助理