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

154 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 皮带撕裂检测系统 - 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. 典型应用场景
### 场景1PLC监控报警
```
循环执行:
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。