GrabBag/App/BeltTearing/Doc/撕裂ModbusTCP协议文档.md
2025-09-29 00:56:53 +08:00

3.2 KiB
Raw Blame History

撕裂ModbusTCP协议对接文档

1. 概述

本文档描述了皮带撕裂检测系统与外部系统通过ModbusTCP协议进行数据交互的规范。系统将检测到的皮带撕裂信息写入保持寄存器供外部系统读取。

2. 系统架构

  • 服务器端:皮带撕裂检测系统
  • 客户端:外部监控或控制系统
  • 通信协议ModbusTCP
  • 默认端口502

3. 数据格式

3.1 保持寄存器地址分配

起始地址 名称 类型 描述
0 系统状态 UInt16 系统运行状态
1-16 撕裂信息1 结构体 第一个撕裂检测结果
17-32 撕裂信息2 结构体 第二个撕裂检测结果
33-48 撕裂信息3 结构体 第三个撕裂检测结果
49-64 撕裂信息4 结构体 第四个撕裂检测结果
65-80 撕裂信息5 结构体 第五个撕裂检测结果

3.2 单个撕裂信息结构

每个撕裂信息占用16个保持寄存器具体分配如下

寄存器地址(相对) 名称 类型 描述
0 撕裂ID UInt32 撕裂的唯一标识符
2 状态 UInt16 撕裂状态
3 宽度 Float 撕裂宽度(mm)
5 深度 Float 撕裂深度(mm)
7-15 保留 - 保留用于未来扩展

3.3 数据类型说明

3.3.1 撕裂状态枚举

状态 描述
0 keSG_tearStatus_Uknown 未知状态
1 keSG_tearStatus_New 新发现的撕裂
2 keSG_tearStatus_Growing 正在增长的撕裂
3 keSG_tearStatus_Ended 已结束的撕裂
4 keSG_tearStatus_Invalid 无效撕裂

3.3.2 浮点数表示

浮点数使用两个连续的16位寄存器表示采用Modbus标准的大端字节序

  • 高16位存储在较低地址的寄存器中
  • 低16位存储在较高地址的寄存器中

例如浮点数3.14159会被分解为:

  • 寄存器n: 高16位
  • 寄存器n+1: 低16位

4. 功能码支持

功能码 描述 支持情况
0x03 读取保持寄存器 支持
0x06 写单个寄存器 不支持
0x10 写多个寄存器 不支持

5. 示例

5.1 读取撕裂信息

假设要读取第一个撕裂的信息:

请求:
功能码: 0x03 (读取保持寄存器)
起始地址: 1
寄存器数量: 8

响应:
数据:
- 地址1-2: 撕裂ID (例如 0x0000 0001)
- 地址3: 状态 (例如 0x0001 表示新发现)
- 地址4-5: 宽度 (例如 0x4049 0FD0 表示 3.14mm)
- 地址6-7: 深度 (例如 0x3F80 0000 表示 1.0mm)

6. 错误处理

系统可能返回以下Modbus异常码

异常码 描述
0x01 非法功能码
0x02 非法数据地址
0x03 非法数据值
0x04 从设备故障

7. 注意事项

  1. 系统最多同时报告5个撕裂信息
  2. 当没有撕裂时对应的寄存器区域保持为0
  3. 浮点数精度为IEEE 754单精度格式
  4. 所有数据均为只读,不支持外部写入
  5. 系统状态寄存器值为1表示系统正常运行

8. 更新频率

撕裂信息更新频率取决于检测算法的处理速度,通常在每次检测到新的撕裂或撕裂状态发生变化时更新。