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

5.6 KiB
Raw Permalink Blame History

皮带撕裂检测系统 - ModbusTCP协议文档

版本信息

当前版本v1.1.0 文档状态:正式发布

版本号 修订日期 修订人 修订说明
v1.1.0 2025-11-30 - 调整寄存器地址
将复位命令移至第一个寄存器,便于后续扩展
v1.0.0 2025-11-25 - 初始版本,定义基础报警和复位功能

1. 概述

本文档描述了皮带撕裂检测系统与PLC系统通过ModbusTCP协议进行数据交互的简化规范。系统提供撕裂报警信息和手动复位功能。

2. 系统架构

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

3. 寄存器地址分配

Modbus地址 寄存器名称 类型 读/写 描述
40001 复位命令 UInt16 读/写 写入1执行复位清除报警
40002 撕裂报警标志 UInt16 只读 0=无报警1=撕裂报警
40003 最大长度 UInt16 只读 撕裂最大长度值(mm)
40004 最大宽度 UInt16 只读 撕裂最大宽度值(mm)
40005 最大撕裂ID UInt32 只读 最大撕裂对应的ID
占用2个寄存器40005-40006

4. 工作原理

4.1 报警流程

  1. 系统检测到撕裂时,40002寄存器自动置为1
  2. 同时更新40003(最大长度)、40004(最大宽度)和40005-40006最大撕裂ID数据
  3. 报警状态会一直保持,直到手动复位

4.2 复位流程

  1. PLC向40001寄存器写入值1
  2. 系统执行复位操作:
    • 清除40001复位命令置为0
    • 清除40002报警标志置为0
    • 清除40003和40004数据置为0
    • 清除40005-40006最大撕裂ID置为0
    • 重置内部检测状态
  3. 系统恢复正常监测状态

5. 功能码支持

功能码 描述 支持情况
0x03 读取保持寄存器 支持
0x06 写单个寄存器 支持(仅40001复位寄存器)
0x10 写多个寄存器 支持(仅40001复位寄存器)

6. 使用示例

6.1 读取报警状态

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

响应示例(有报警):
- 40001: 0x0000 (复位命令)
- 40002: 0x0001 (报警)
- 40003: 0x0032 (长度50mm)
- 40004: 0x000A (宽度10mm)
- 40005: 0x0000 (撕裂ID高16位)
- 40006: 0x2710 (撕裂ID低16位ID=10000)

6.2 复位报警

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

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

复位完成后再次读取:

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

响应示例(复位后):
- 40001: 0x0000 (复位命令已清除)
- 40002: 0x0000 (无报警)
- 40003: 0x0000 (数据已清除)
- 40004: 0x0000 (数据已清除)
- 40005: 0x0000 (ID已清除)
- 40006: 0x0000 (ID已清除)

7. 注意事项

  1. 报警保持特性:报警标志(40002)一旦置位,只能通过写入复位寄存器(40001)来清除,不会自动复位
  2. 数据单位:长度和宽度数据单位为毫米(mm)范围0-65535
  3. 复位操作只有40001寄存器支持写操作写入其他地址将返回异常
  4. 复位值向40001写入任何非零值都会触发复位操作建议统一使用1
  5. 读取频率建议PLC以100ms-500ms的周期轮询读取40002寄存器监测报警状态
  6. 数据有效性仅当40002=1时40003、40004和40005-40006的数据才有意义
  7. 撕裂ID格式最大撕裂ID是32位整数占用2个寄存器40005为高16位40006为低16位采用大端字节序
  8. 扩展性设计:复位命令位于第一个寄存器(40001),便于后续在末尾扩展更多数据字段而不影响核心功能

8. 错误处理

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

异常码 描述 常见原因
0x01 非法功能码 使用了不支持的功能码
0x02 非法数据地址 访问了未定义的寄存器地址
0x03 非法数据值 写入了不合法的数据值
0x04 从设备故障 检测系统内部故障

9. 典型应用场景

场景1PLC监控报警

循环执行:
1. PLC定时读取40002寄存器报警标志
2. 如果40002=1读取40003、40004和40005-40006获取撕裂尺寸和ID
3. PLC触发声光报警
4. 操作员检查现场后通过HMI按钮触发复位
5. PLC向40001写入1执行复位

场景2自动记录报警历史

循环执行:
1. 检测到40002从0变为1
2. 立即读取40003、40004和40005-40006
3. 记录时间戳、撕裂尺寸和撕裂ID数据
4. 等待手动复位指令
5. 执行复位后继续监测

10. 地址映射说明

寄存器描述地址 Modbus协议地址 实际寄存器地址
40001 功能码0x03/0x06, 地址0 内部地址0
40002 功能码0x03, 地址1 内部地址1
40003 功能码0x03, 地址2 内部地址2
40004 功能码0x03, 地址3 内部地址3
40005 功能码0x03, 地址4 内部地址4
40006 功能码0x03, 地址5 内部地址5

注意Modbus协议中实际使用的寄存器地址需要减去40001例如访问40001时使用地址0访问40006时使用地址5。