背景
TCP透传
TCP客户端工具模拟设备连接云平台,发送十六进制或字符报文或接收平台下发,是在设备接入时实施调试非常常见的手段,来测试平台网络连接是否正常、数据报文格式是否正确等等。
ModbusRtu
modbus协议是最常见的传感设备报文协议,尤其是modbus_rtu。不过通常需要本地基于串口的rtu设备需要数据对接到云端平台,往往需要加上DTU进行透传,实现云端采集(或者本地采集后数据给到云端以及接受云端的下发控制或查询)
目的
结合背景中的两点,实现平台配置TCP端口接受本地DTU(由TCP客户端模拟)连接,并且按照平台对设备和数据按modbus协议寄存器的相关配置,下发相应指令;本地能够接收到,并且可以回复相应的modbus指令给到平台,实现数据上报、数值显示。
注意:如果熟悉测试驱动dr_modbus_rtu.py的参数配置,非开发人员完全可以自行添加任一支持modbus_rtu协议的设备通过DTU接入到线上平台,并且暂无限制。(若需驱动支持设备接入鉴权、ID注册等高级功能,需再二次开发或采用企业收费版)
1分钟录屏效果如下,仅供参考,下文并不完全一致(主要是网关、设备等名称、标识等)
1分钟录屏ModbusRtu网络透传通过TCP客户端模拟设备
步骤
1. 登录
用帐号密码test/123456登录到线上平台:http://sys.aiotos.net
2. 创建网关
3. 导入点表
1)点击下载excel格式的点表文件,存到本地:TestFor-ModbusRtuDevice.tb.xls
2)点击2中创建网关的“高级”选项,弹窗中选择“上传点表”
3)点击1)中下载的点表并上传
4)上传后会自动在当前网关(mytest)下创建1个设备实例
5)点击表格内文字“1个”,进入到设备实例
6)点击表格内文字“22个”,进入到设备下的数据点,自此点表导入及自动创建完毕。
4. 驱动配置
回到3中自动在网关下创建好的设备,打开“编辑”弹出配置窗口
重点"tcp"字段配置的监听端口,可以修改成想要的监听的(范围最好在10000到60000之间,为避免端口冲突)
5. 启动云网关
回到当前网关mytest,点开“高级”,其中“云网关”按钮默认灰色
点击启动云网关,输入当前登录密码(test默认密码123456)
稍后可以见到网关test在线了(网络不好时,可能需要手动刷新页面)
6. 测试TCP连接
到设备(TestDevice)下,默认看到是离线状态
打开本地TCP调试工具,连接sys.aiotos.net对应的IP:49.234.230.71,端口用步骤4中配置的,这里默认用59142
sys.aiotos.net对应的IP:49.234.230.71,端口用步骤4中配置的,这里默认用59142
TCP客户端工具的连接和断开,会实时对应设备的连接状态
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7KxxQBln-1652968947338)(/uploads/iotos/images/m_78945b360080cf32c9e050ca5a70b5bd_r.png)]
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
完毕!