欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > 塔石配置解析

塔石配置解析

2024/10/23 15:29:37 来源:https://blog.csdn.net/OpsEye/article/details/143116574  浏览:    关键词:塔石配置解析

文章目录

    • 一、物理连线
      • 1、传感器与475串口服务器连线
      • 2、475串口服务器接入网络
    • 二、modbus对接(475作为server)
      • 1、配置475的模式为server模式
      • 2、使用NetAssist1调试
      • 3、zabbix使用modbus对接

一、物理连线

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进制数据做转换
0X 02 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)异常处理
和同事一起在测试时,发现一个问题,就是他测试的数据我也可能收到,完全是混乱的。查了产品资料发现是下图这个原因。正是由于这个原因,串口服务器设置server模式在多个client访问数据时并不友好,modbus tcp server不能用于稳定性要求高的监控场景。于是有了下文mqtt模式的继续摸索。
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com