5.4 KiB
5.4 KiB
HoleDetection 孔洞检测 - Modbus TCP 通信协议
注意:此协议已停用。 当前版本使用 TCP 文本协议(眼在手上),详见
孔洞检测TCP通信协议.md。
1. 系统架构
┌─────────────────┐ Modbus TCP ┌─────────────────────┐
│ │◄────────────────────►│ │
│ 3D视觉系统 │ 192.168.0.88 │ 汇川PLC-easy320 │
│ (Modbus客户端) │ :502 │ (Modbus服务端) │
│ │ │ │
└─────────────────┘ └─────────────────────┘
2. 网络配置
| 设备 | IP地址 | 端口 | 角色 |
|---|---|---|---|
| 3D视觉系统 | - | - | Modbus TCP 客户端 |
| 汇川PLC-easy320 | 192.168.0.88 | 502 | Modbus TCP 服务端 |
3. 地址映射规则
寄存器地址直接对应 Modbus 保持寄存器地址(可通过配置文件自定义)。
默认配置:
地址 0: 拍照请求
地址 1: 数据输出完成标志
地址 2: 坐标数据起始
4. 寄存器地址定义
4.1 控制寄存器
| 寄存器地址 | 类型 | 读/写 | 说明 |
|---|---|---|---|
| 0 | uint16 | R/W | 拍照请求标志(1=触发相机1, 2=触发相机2) |
| 1 | uint16 | W | 数据输出完成标志(1=完成) |
4.2 坐标数据寄存器(地址2开始,最多10个点)
每个点包含6个float值(X, Y, Z, Pitch, Roll, Yaw),每个float占用2个寄存器(大端序),共12个寄存器/点。
| 点序号 | 寄存器地址范围 | 说明 |
|---|---|---|
| 点0 | 2-13 | 第1个孔洞坐标 |
| 点1 | 14-25 | 第2个孔洞坐标 |
| 点2 | 26-37 | 第3个孔洞坐标 |
| 点3 | 38-49 | 第4个孔洞坐标 |
| 点4 | 50-61 | 第5个孔洞坐标 |
| 点5 | 62-73 | 第6个孔洞坐标 |
| 点6 | 74-85 | 第7个孔洞坐标 |
| 点7 | 86-97 | 第8个孔洞坐标 |
| 点8 | 98-109 | 第9个孔洞坐标 |
| 点9 | 110-121 | 第10个孔洞坐标 |
4.3 单点坐标数据布局(以点0为例)
| 寄存器地址 | 类型 | 说明 |
|---|---|---|
| 2-3 | float (大端) | X坐标 (mm) |
| 4-5 | float (大端) | Y坐标 (mm) |
| 6-7 | float (大端) | Z坐标 (mm) |
| 8-9 | float (大端) | Pitch角度 (°) |
| 10-11 | float (大端) | Roll角度 (°) |
| 12-13 | float (大端) | Yaw角度 (°) |
注意:
- 每个float值占用2个寄存器,采用IEEE 754单精度浮点数格式
- 大端序(Big-Endian):高位字在低地址寄存器,低位字在高地址寄存器
- 最多支持10个点,共120个寄存器(10 × 6 × 2 = 120)
5. 通信流程
时序图:
3D视觉系统 汇川PLC
│ │
│ 轮询读取地址0(拍照请求) │
│◄─────────────────────────────│
│ │
│ 地址0=1(相机1) 或 =2(相机2) │
│◄─────────────────────────────│
│ │
│ 写0到地址0(清除请求) │
│─────────────────────────────►│
│ │
│ [执行拍照和孔洞检测算法] │
│ │
│ 写坐标到地址2开始 │
│─────────────────────────────►│
│ │
│ 写1到地址1(数据完成) │
│─────────────────────────────►│
│ │
5.1 详细流程说明
-
轮询拍照请求
- 3D系统持续轮询读取PLC的拍照请求寄存器(地址0)
- 轮询间隔:100ms(可配置)
- 使用边沿检测:只在0→非0变化时触发
- 寄存器值即为相机索引:1=相机1, 2=相机2
-
拍照执行
- 检测到地址0为非0值后,立即写0到地址0清除请求
- 根据寄存器值选择对应相机触发拍照
- 执行孔洞检测算法
-
坐标输出
- 算法处理完成后,将坐标数据写入地址2开始的寄存器
- 单点12个寄存器(6个float值)
- 数据格式:IEEE 754单精度浮点数,大端序
-
完成通知
- 坐标数据写入成功后,写1到地址1
- 通知PLC数据输出完成
6. 连接管理
6.1 自动重连机制
- 初始化时尝试连接PLC
- 连接失败时自动启动重连定时器
- 重连间隔:3000ms(可配置)
- 持续重连直到连接成功或软件关闭
6.2 优雅退出
- 设置关闭标志,阻止新的重连尝试
- 停止所有定时器(轮询、重连)
- 断开Modbus连接
- 释放资源
7. 错误处理
| 错误类型 | 处理方式 |
|---|---|
| 连接失败 | 自动重连,发送错误信号 |
| 读取失败 | 记录日志,下次轮询重试 |
| 写入失败 | 记录日志,返回失败状态 |
| 超时 | 默认1秒超时,触发重连 |