GrabBag/App/TireHolePose/Doc/轮胎定位ModbusTCP协议文档.md

78 lines
2.4 KiB
Markdown
Raw Normal View History

# 轮胎孔定位 ModbusTCP 协议
## 1. 概述
2026-06-25 00:04:26 +08:00
- **协议**: Modbus TCP保持寄存器
- **端口**: `502`
- **模式**: 眼在手外(相机固定,无需机械臂位姿)
## 2. 寄存器定义
| 地址 | 长度 | 访问 | 说明 |
|---:|---|---|---|
2026-06-25 00:04:26 +08:00
| `0` | 1 | 写 | 触发检测,写入 `1` |
| `1` | 1 | 读 | 工作状态 |
| `14` | 2 | 读 | 目标点 Xfloat32单位 mm |
| `16` | 2 | 读 | 目标点 Yfloat32单位 mm |
| `18` | 2 | 读 | 目标点 Zfloat32单位 mm |
| `20` | 2 | 读 | 目标点姿态分量 1float32单位 deg |
| `22` | 2 | 读 | 目标点姿态分量 2float32单位 deg |
| `24` | 2 | 读 | 目标点姿态分量 3float32单位 deg |
| `26` | 2 | 读 | 孔半径 Rfloat32单位 mm |
2026-06-25 00:04:26 +08:00
- 每个 `float32` 占 2 个保持寄存器(大端序,高 16 位在前)
- 结果寄存器共 14 个7 个 float32地址 14~27
2026-06-25 00:04:26 +08:00
- 多个检测结果时仅输出第一个
- 位置 / 孔半径保留 3 位小数,姿态保留 3 位小数
2026-06-25 00:04:26 +08:00
## 3. 欧拉角顺序配置
### 3.1 输入顺序eulerOrder
机械臂法兰姿态分解为旋转矩阵时使用的欧拉角顺序(外旋约定),在网络配置页面设置:
| 值 | 顺序 |
|---:|------|
| `10` | RX-RY-RZ (外旋XYZ) |
| `11` | RZ-RY-RX (外旋ZYX默认) |
| `12` | RZ-RX-RY (外旋ZXY) |
| `13` | RY-RX-RZ (外旋YXZ) |
| `14` | RY-RZ-RX (外旋YZX) |
| `15` | RX-RZ-RY (外旋XZY) |
### 3.2 输出顺序outputEulerOrder
旋转矩阵合成为欧拉角时使用的顺序(外旋约定),选项同上,默认值 `10`RX-RY-RZ 外旋XYZ
### 3.3 姿态输出顺序poseOutputOrder
2026-06-25 00:04:26 +08:00
寄存器 `20~25` 中三个姿态分量的含义由 `poseOutputOrder` 控制:
| poseOutputOrder | 顺序 |
|----------------:|------|
| `0` | RX, RY, RZ默认 |
| `1` | RX, RZ, RY |
| `2` | RY, RX, RZ |
| `3` | RY, RZ, RX |
| `4` | RZ, RX, RY |
| `5` | RZ, RY, RX |
以上三项均在"检测设置 → 网络配置"页面中配置。
2026-06-25 00:04:26 +08:00
## 4. 工作状态
| 状态值 | 含义 |
|---:|---|
| `0` | 空闲 |
| `1` | 检测中 |
| `2` | 检测完成 |
2026-06-25 00:04:26 +08:00
| `3` | 异常 |
## 5. 触发流程
2026-06-25 00:04:26 +08:00
1. 读寄存器 `1`,确认状态为 `0`(空闲)
2. 写寄存器 `0 = 1`(触发检测)
3. 轮询寄存器 `1`
4. 状态为 `2` 时,读寄存器 `14~27` 获取目标点及孔半径
2026-06-25 00:04:26 +08:00
5. 状态为 `3` 时,本次检测失败