一、物理连线

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:10123475 串口服务器作为 server 开放的地址和端口
1设备编号,填写 1
3读寄存器,固定为 3
0寄存器地址,湿度是 0,温度是 1
1读取几个字节,此处只读取湿度,所以填写 1
int162 字节表示一个物理含义

(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》