# 撕裂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. 更新频率 撕裂信息更新频率取决于检测算法的处理速度,通常在每次检测到新的撕裂或撕裂状态发生变化时更新。