使用IOT-Tree消息流Modbus Slave节点,实现Modbus设备的模拟
IOT-Tree消息流功能是在规整接入各种设备数据之后,提供的功能块组合配置支持(直观快速),通过她你可以在大部分场合快速实现数据的处理——存储、转换、发送等。
本例子比较特殊,假设你已经部署了一个IOT-Tree设备,并且里面的项目中已经接入了现场数据,形成的规范的标签列表。此时,你可能会产生一个特殊的需求,现场的其他设备(如PLC或DTU)希望获取IOT-Tree设备中的一些特殊数据进行工艺控制改进。
此时,你可以通过运行IOT-Tree设备提供的RS485接口或以太网接口,模拟出Modbus RTU设备,以供现场相对简单的PLC或DTU使用。
1 案例背景
1.1 Modbus RTU协议
Modbus标准协议可以说是工业领域里面的最简单协议了。相关内容请参考网络上的技术文档,如果你不怎么熟悉这个协议,还可以参考我之前文章的前面部分。我已经用最直观的方式介绍了工业现场RS485总线和Modbus协议。文章链接如下:
机房自动化监控手把手分享给你 - 2 温湿度传感器的对接
1.2 IOT-Tree接入和数据组织
此部分内容,本文也不重复了,如果不熟悉,请参考如下内容:
https://gitcode.com/jasonzhu8888/iot-tree
https://github.com/bambooww/iot-tree
机房自动化监控手把手分享给你 - 2 温湿度传感器的对接
机房自动化监控手把手分享给你 - 3 漏水传感器的对接
机房自动化监控手把手分享给你 - 4 空调设备对接
机房自动化监控手把手分享给你 - 5 电流监测模块对接
机房自动化监控手把手分享给你 - 6 UPS设备对接
如果你已经对Modbus协议和IOT-Tree接入和数据组织足够熟悉,那么就可以在对应项目中,配置Modbus Slave协议转换了(也即是Modbus设备模拟)。以下的例子,数据接入和标签已经配置完备。只具体介绍Modbus Slave的配置过程。
2 Modbus Slave模块节点配置
2.1 新增Modbus Slave模块节点
在你的IOT-Tree项目管理界面左下角,你可以添加一个消息流,点击之后,可以看到消息流具体配置界面,你可以在配置界面左边列表选择模拟器分类下的“Modbus Slave”节点,拖拽到配置区就完成了节点的添加。如下图:
双击刚刚添加的Modbus Slave节点,可以看到弹出配置界面。你可以在里面进行详细配置。
2.2 配置总线上的设备
2.2.1 总线设备列表
一个Modbus Slave节点代表了一个Modbus 总线,上面可以配置一个或多个Modbus设备(每个设备地址不相同)。因此,在节点弹出的配置界面中,上面部分是设备区域(Devices),你可以在其中添加多个设备。
请注意:根据Modbus协议要求,每个设备地址不允许相同,设置时请限制在1-254之间的范围内
2.2.2 设备内部数据地址段
点击新增设备或现有设备编辑按钮。弹出单个设备具体的配置界面。如图:
每个设备根据需要可以配置多个地址段。每个地址段可以选定Modbus协议规定的功能码(FC)——这个同时也限定了地址段内部每个数据项的值类型(bool开关量,int16字数据),你还可以设定这个地址段的起始地址和数量。如下图:
完成之后,点击左边某个地址段(Segment),就可以在右边看到这个地址段的所有Modbus数据项表格。
2.2.3 Modbus数据项绑定项目数据标签
在Modbus数据项列表中,针对某一行(某个modbus具体数据)和Bind Tag列点击空白出,就可以弹出当前项目中的标签选择窗口。你可以选择具体的标签,确定之后就可以使得项目实时标签和这个数据项绑定。运行过程中,IOT-Tree内部会自动刷新标签实时数据到Modbus地址空间中。
简单地重复以上操作,你就可以很轻松的配置出一个或多个Modbus设备及内部数据段了。
2.3 配置外部调用接口
接下来,你就可以配置外部如何访问你这个Modbus Slave总线,以及挂接上面的一个或多个设备了。这个就在Connector区添加配置。
点击添加按钮时,你可以看到如下选择,Tcp Server、COM和Tcp Client
2.3.1 Tcp Server访问方式
此方式是Modbus总线对外提供了一个Tcp Server监听端口,外界设备或程序通过建立一个Tcp Client主动建立Tcp连接,然后在这个Tcp连接上以主(Master)设备的方式访问我们这个节点对应的总线。
请注意:虽然基于Tcp连接,当前协议的数据包格式还是属于Modbus RTU,而不是Modbus TCP数据包
2.3.2 COM范围方式(串口)
如果IOT-Tree运行的设备有串口COM(RS232或RS485),那么你就可以选择对应的串口号对外提供访问,外部设备或程序连接这个COM口(RS232电缆或485双绞线物理连接),然后在这个连接上以主(Master)设备的方式访问我们这个节点对应总线。
2.3.3 Tcp Client访问方式
这个方式与Tcp Server倒过来。由我们这个节点主动连接远程的某个Tcp Server,当连接建立成功之后,远程程序或设备在这个连接上以主(Master)设备的方式访问我们这个节点对应的总线。
此方式可以支持现场非固定IP,主动连接云端固定IP的服务器,然后服务器程序通过Modbus RTU协议以主设备方式获取本节点定义的总线设备数据。
为了支持云端对当前连接的区分,可以设定一个连接id(Conn Id)。当tcp连接新建立时会立刻发送,服务端通过这个id类确定当前连接设备的身份。
3 最终效果
以上配置全部确定完成之后,你可以看到此Modbus Slave模块节点会自动生成几个关联节点,总线上每个设备都会有对应两个节点。你可以在这些节点展开窗口中查看运行状态,并且还可以通过消息流做更细致的调试和控制。
启动项目之后,modbus slave节点会进入运行状态。此时你可以通过Modbus相关软件对此Modbus设备进行测试。