GrabBag/App/BeltTearing/Doc/撕裂ModbusTCP协议文档.md

5.6 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 结构体 只读 第五个撕裂检测结果
81 相机重连命令 UInt16 读/写 Modbus显示地址40082;写入非零值后停止并重新启动相机,执行后自动清零

3.2 单个撕裂信息结构

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

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

3.3 数据类型说明

3.3.1 系统状态枚举

系统状态寄存器(地址0)既可以读取也可以写入:

读取时的状态值:

值 状态 描述
0 系统停止 系统处于停止状态,不进行检测
1 系统运行 系统正常运行,正在进行撕裂检测
2 系统忙碌 系统正在处理数据

写入时的控制命令:

值 命令 描述
0 停止工作 停止相机检测,停止算法处理
1 开始工作 启动相机检测,开始算法处理
2 报警复位 清空检测结果寄存器并确认当前撕裂;不停止或重连相机,不清空点云队列

3.3.2 撕裂状态枚举

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

3.3.3 浮点数表示

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

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

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

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

4. 功能码支持

功能码 描述 支持情况
0x03 读取保持寄存器 支持
0x06 写单个寄存器 支持地址0和地址81
0x10 写多个寄存器 支持单个地址0或地址81

5. 示例

5.1 控制系统状态

5.1.1 停止工作

请求:
功能码: 0x06 (写单个寄存器)
寄存器地址: 0
寄存器值: 0x0000

响应:
功能码: 0x06
寄存器地址: 0
寄存器值: 0x0000 (确认写入成功)

5.1.2 开始工作

请求:
功能码: 0x06 (写单个寄存器)
寄存器地址: 0
寄存器值: 0x0001

响应:
功能码: 0x06
寄存器地址: 0
寄存器值: 0x0001 (确认写入成功)

5.1.3 复位报警

请求:
功能码: 0x06 (写单个寄存器)
寄存器地址: 0
寄存器值: 0x0002

响应:
功能码: 0x06
寄存器地址: 0
寄存器值: 0x0002 (确认写入成功)

5.1.4 相机重连

请求:
功能码: 0x06 (写单个寄存器)
寄存器地址: 81 (显示地址40082)
寄存器值: 0x0001

系统完成相机停止和重新启动后自动将地址81清零。

5.2 读取系统状态

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

响应:
数据: 0x0001 (系统运行中)

5.3 读取撕裂信息

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

请求:
功能码: 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. 撕裂信息数据为只读,仅系统状态寄存器(地址0)和相机重连命令(地址81)支持写入
  5. 系统状态寄存器值为1表示系统正常运行
  6. 写入系统状态寄存器时:
    • 写入0:停止相机检测和算法处理
    • 写入1:启动相机检测和算法处理
    • 写入2:复位报警并清空检测结果寄存器,不重连相机
  7. 地址81写入非零值用于相机重连,命令执行后自动清零
  8. 报警复位后,复位时仍存在的撕裂在消失前不会重复报警

8. 更新频率

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