背景

TCP透传

TCP客户端工具模拟设备连接云平台,发送十六进制或字符报文或接收平台下发,是在设备接入时实施调试非常常见的手段,来测试平台网络连接是否正常、数据报文格式是否正确等等。

ModbusRtu

modbus协议是最常见的传感设备报文协议,尤其是modbus_rtu。不过通常需要本地基于串口的rtu设备需要数据对接到云端平台,往往需要加上DTU进行透传,实现云端采集(或者本地采集后数据给到云端以及接受云端的下发控制或查询)

目的

结合背景中的两点,实现平台配置TCP端口接受本地DTU(由TCP客户端模拟)连接,并且按照平台对设备和数据按modbus协议寄存器的相关配置,下发相应指令;本地能够接收到,并且可以回复相应的modbus指令给到平台,实现数据上报、数值显示。

注意:如果熟悉测试驱动dr_modbus_rtu.py的参数配置,非开发人员完全可以自行添加任一支持modbus_rtu协议的设备通过DTU接入到线上平台,并且无任何限制。(若需驱动支持设备接入鉴权、ID注册等高级功能,需再二次开发或采用企业收费版)

1分钟录屏效果如下,仅供参考,下文并不完全一致(主要是网关、设备等名称、标识等)

步骤

1. 登录

用帐号密码test/123456登录到线上平台:http://sys.aiotos.net

2. 创建网关

注意,通信配置内容忽略,包括IP等参数,新版本将省去该子项配置。

3. 导入点表

1)点击下载excel格式的点表文件,存到本地:TestFor-ModbusRtuDevice.tb.xls

2)点击2中创建网关的“高级”选项,弹窗中选择“上传点表”

3)点击1)中下载的点表并上传

4)上传后会自动在当前网关(mytest)下创建1个设备实例

5)点击表格内文字“1个”,进入到设备实例

6)点击表格内文字“22个”,进入到设备下的数据点,自此点表导入及自动创建完毕。

4. 驱动配置

回到3中自动在网关下创建好的设备,打开“编辑”弹出配置窗口

重点”tcp”字段配置的监听端口,可以修改成想要的监听的(范围最好在10000到60000之间,为避免端口冲突)

具体配置参见:Modbus rtu驱动配置

5. 启动云网关

回到当前网关mytest,点开“高级”,其中“云网关”按钮默认灰色

点击启动云网关,输入当前登录密码(test默认密码123456)

稍后可以见到网关test在线了(网络不好时,可能需要手动刷新页面)

6. 测试TCP连接

到设备(TestDevice)下,默认看到是离线状态

打开本地TCP调试工具,连接sys.aiotos.net服务实际对应的IP:203.189.6.3(最新),端口用步骤4中配置的,这里默认用59142

TCP客户端工具的连接和断开,会实时对应设备的连接状态

7. 测试报文协议

TCP客户端连接上后,会周期收到不同的modbus指令下发

(参见步骤6中截图的TCP工具接收区域数据日志)

进入到设备下的数据点页面,此时是没有数据的

图(略)

当下发01 03开头时,可以将下面数据以hex回复过去,此时页面可看到上报的数值了!

1 3 60 42 62 70 19 43 30 77 19 43 30 77 19 43 30 77 19 0 0 0 19 0 0 0 19 0 0 0 19 0 0 0 19 39 89 92 19 0 0 0 19 39 e1 1d 19 39 48 1a 19 3a 3 51 19 39 61 1d 19 0 0 0 19 0 0 0 19 3a 53 33 19 3a 53 33 19 3a 53 33 19 0 0 0 19 0 0 0 19 0 0 0 19 0 0 0 19 0 0 0 19 17 1


完毕!

其他

手动输入指令以及模拟返回,需要CRC校验(注2字节需倒序),提供modbus rtu标准协议发送及返回指令demo示例数据组,方便调试测试:

  • 发送:13 03 00 00 00 02 C7 79
    接收:13 03 04 00 00 00 00 C8 32

  • 发送:13 01 00 01 00 01 AF 78
    接收:13 01 01 00 54 F0 或 13 01 01 FF 14 B0

作者:admin  创建时间:2022-05-18 20:17
最后编辑:admin  更新时间:2023-11-29 09:38