# 皮带撕裂检测系统 - ModbusTCP协议文档 ## 版本信息 | 版本号 | 修订日期 | 修订人 | 修订说明 | |--------|---------|--------|----------| | v1.0.0 | 2025-11-25 | - | 初始版本,定义基础报警和复位功能 | **当前版本**:v1.0.0 **文档状态**:正式发布 --- ## 1. 概述 本文档描述了皮带撕裂检测系统与PLC系统通过ModbusTCP协议进行数据交互的简化规范。系统提供撕裂报警信息和手动复位功能。 ## 2. 系统架构 - **服务器端**:皮带撕裂检测系统 - **客户端**:PLC或外部控制系统 - **通信协议**:ModbusTCP - **默认端口**:502 ## 3. 寄存器地址分配 | Modbus地址 | 寄存器名称 | 类型 | 读/写 | 描述 | |-----------|----------|------|------|------| | 40001 | 撕裂报警标志 | UInt16 | 只读 | 0=无报警,1=撕裂报警 | | 40002 | 最大长度 | UInt16 | 只读 | 撕裂最大长度值(mm) | | 40003 | 最大宽度 | UInt16 | 只读 | 撕裂最大宽度值(mm) | | 40004 | 复位命令 | UInt16 | 读/写 | 写入1执行复位,清除报警 | ## 4. 工作原理 ### 4.1 报警流程 1. 系统检测到撕裂时,**40001寄存器**自动置为1 2. 同时更新**40002**(最大长度)和**40003**(最大宽度)数据 3. 报警状态会一直保持,直到手动复位 ### 4.2 复位流程 1. PLC向**40004寄存器**写入值1 2. 系统执行复位操作: - 清除40001报警标志(置为0) - 清除40002和40003数据(置为0) - 重置内部检测状态 3. 系统恢复正常监测状态 ## 5. 功能码支持 | 功能码 | 描述 | 支持情况 | |--------|------|----------| | 0x03 | 读取保持寄存器 | 支持 | | 0x06 | 写单个寄存器 | 支持(仅40004复位寄存器) | | 0x10 | 写多个寄存器 | 支持(仅40004复位寄存器) | ## 6. 使用示例 ### 6.1 读取报警状态 ``` 请求: 功能码: 0x03 (读取保持寄存器) 起始地址: 40001 寄存器数量: 3 响应示例(有报警): - 40001: 0x0001 (报警) - 40002: 0x0032 (长度50mm) - 40003: 0x000A (宽度10mm) ``` ### 6.2 复位报警 ``` 请求: 功能码: 0x06 (写单个寄存器) 寄存器地址: 40004 寄存器值: 0x0001 响应: 功能码: 0x06 寄存器地址: 40004 寄存器值: 0x0001 (确认写入成功) ``` 复位完成后再次读取: ``` 请求: 功能码: 0x03 (读取保持寄存器) 起始地址: 40001 寄存器数量: 3 响应示例(复位后): - 40001: 0x0000 (无报警) - 40002: 0x0000 (数据已清除) - 40003: 0x0000 (数据已清除) ``` ## 7. 注意事项 1. **报警保持特性**:报警标志(40001)一旦置位,只能通过写入复位寄存器(40004)来清除,不会自动复位 2. **数据单位**:长度和宽度数据单位为毫米(mm),范围0-65535 3. **复位操作**:只有40004寄存器支持写操作,写入其他地址将返回异常 4. **复位值**:向40004写入任何非零值都会触发复位操作,建议统一使用1 5. **读取频率**:建议PLC以100ms-500ms的周期轮询读取40001寄存器监测报警状态 6. **数据有效性**:仅当40001=1时,40002和40003的数据才有意义 ## 8. 错误处理 系统可能返回以下Modbus异常码: | 异常码 | 描述 | 常见原因 | |--------|------|----------| | 0x01 | 非法功能码 | 使用了不支持的功能码 | | 0x02 | 非法数据地址 | 访问了未定义的寄存器地址 | | 0x03 | 非法数据值 | 写入了不合法的数据值 | | 0x04 | 从设备故障 | 检测系统内部故障 | ## 9. 典型应用场景 ### 场景1:PLC监控报警 ``` 循环执行: 1. PLC定时读取40001寄存器 2. 如果40001=1,读取40002和40003获取撕裂尺寸 3. PLC触发声光报警 4. 操作员检查现场后,通过HMI按钮触发复位 5. PLC向40004写入1执行复位 ``` ### 场景2:自动记录报警历史 ``` 循环执行: 1. 检测到40001从0变为1 2. 立即读取40002和40003 3. 记录时间戳和撕裂尺寸数据 4. 等待手动复位指令 5. 执行复位后继续监测 ``` ## 10. 地址映射说明 | 寄存器描述地址 | Modbus协议地址 | 实际寄存器地址 | |--------------|---------------|---------------| | 40001 | 功能码0x03, 地址0 | 内部地址0 | | 40002 | 功能码0x03, 地址1 | 内部地址1 | | 40003 | 功能码0x03, 地址2 | 内部地址2 | | 40004 | 功能码0x03/0x06, 地址3 | 内部地址3 | **注意**:Modbus协议中实际使用的寄存器地址需要减去40001,例如访问40001时使用地址0,访问40004时使用地址3。