一、物理连线
1、传感器与 475 串口服务器连线
传感器 4 线,2 根信号线连 475 串口服务器,2 根电源线连电源。475 串口服务器有两个 485 口可以用作电源,给传感器供电。
2、475 串口服务器接入网络
(1)重设 IP 地址
网线连接电脑,设置 192.168.0 网段,登录默认 IP 192.168.0.80,重设 IP 地址为 10.10.200.1/16 的网络地址,网关 10.10.10.1。
(2)接入网络
测试是否可以页面登录 10.10.200.1,如下显示登录页面表示 IP 设置没有问题。
二、Modbus 对接(475 作为 Server)
1、配置 475 的模式为 Server 模式
打开 Tool V4.5.5 D20230606.exe,修改设备工作模式为 tcp server(参照《TAS-LAN-475_Datasheet V1.0.2.pdf》的 3.2.2 章节)。记录 475 的地址和端口号用于客户端访问。
2、使用 NetAssist1 调试
(1)客户端配置服务器参数
NetAssist1 模拟客户端(相当于自研软件来访问 475 server)。协议类型选择 client,远程主机和端口填写 475 作为 server 的 IP。
(2)发送 Modbus 指令测试
参照《塔石传感器寄存器定义说明_V1.0.pdf》中定义的温湿度寄存器示例,发送指令。
注:远程主机地址截图为之前的 IP,新的是 200.1
(3)检查结果
按照 Modbus 的协议,取 16 进制数据做转换:
0X02 94的湿度转换十进制是 660,表示 66.0%0X01 08的温度转换十进制是 264,表示 26.4°
3、Zabbix 使用 Modbus 对接
(1)Modbus RTU 转 Modbus TCP
Zabbix 对接时,Modbus RTU 要转换成 Modbus TCP。否则串口服务器发现 Zabbix 的报文多了包头无法解码会丢弃。修改以下转换协议,然后点"配置参数",完成串口服务器配置。
(2)Zabbix 配置监控项
创建一个部署有 agent2 的主机,填写键值如下。
参数含义:
| 参数 | 说明 |
|---|---|
tcp://10.10.200.1:10123 | 475 串口服务器作为 server 开放的地址和端口 |
1 | 设备编号,填写 1 |
3 | 读寄存器,固定为 3 |
0 | 寄存器地址,湿度是 0,温度是 1 |
1 | 读取几个字节,此处只读取湿度,所以填写 1 |
int16 | 2 字节表示一个物理含义 |
(3)真实报文帧参考
以下是 Zabbix 的抓包报文及温湿度传感器的定义。
(4)有关 Zabbix 官方寄存器地址说明的解释
Zabbix 官方文档中,有关寄存器地址 address 和 function 关系的描述较为复杂。简单理解就是:
modbus.get[tcp://10.10.200.1:10123,1,3,0,1,int16]
modbus.get[tcp://10.10.200.1:10123,1,,40001,1,int16]
上面这两个表达式完全等价。一个指定了 function 使用寄存器地址(0000H,即 0);一个未指定 function 使用组态地址(40001)。
(5)Zabbix 的监控项两种写法
塔石传感器是温湿度一体的。在 Zabbix 定义监控项时,可以有两种写法:
写法 1:分别创建两个监控项
modbus.get[tcp://10.10.200.1:10123,1,3,0,1,int16] // 湿度,寄存器地址0开始,长度1
modbus.get[tcp://10.10.200.1:10123,1,3,1,1,int16] // 温度,寄存器地址1开始,长度1
写法 2:创建一个主监控项,从寄存器地址 0 开始,长度 2,同时获取温湿度
modbus.get[tcp://10.10.200.1:10123,1,3,0,2,int16] // 寄存器地址0开始,长度2
获取的是 JSON 格式的字符串,然后新建 2 个依赖监控项,通过预处理来取第一个和第二个值。
(6)异常处理
在测试时发现,多个 client 访问 475 server 时数据会混乱。查阅产品资料后发现,这是由于 Modbus TCP Server 在多 client 访问时的局限性。因此,Modbus TCP Server 不适合用于稳定性要求高的监控场景,后续需要探索 MQTT 模式。
相关文件引用
- 《TAS-LAN-475_Datasheet V1.0.2.pdf》第 3.2.2 章节
- 《塔石传感器寄存器定义说明_V1.0.pdf》