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

78 lines
2.4 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 协议
## 1. 概述
- **协议**: Modbus TCP保持寄存器
- **端口**: `502`
- **模式**: 眼在手外(相机固定,无需机械臂位姿)
## 2. 寄存器定义
| 地址 | 长度 | 访问 | 说明 |
|---:|---|---|---|
| `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 |
- 每个 `float32` 占 2 个保持寄存器(大端序,高 16 位在前)
- 结果寄存器共 14 个7 个 float32地址 14~27
- 多个检测结果时仅输出第一个
- 位置 / 孔半径保留 3 位小数,姿态保留 3 位小数
## 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
寄存器 `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 |
以上三项均在"检测设置 → 网络配置"页面中配置。
## 4. 工作状态
| 状态值 | 含义 |
|---:|---|
| `0` | 空闲 |
| `1` | 检测中 |
| `2` | 检测完成 |
| `3` | 异常 |
## 5. 触发流程
1. 读寄存器 `1`,确认状态为 `0`(空闲)
2. 写寄存器 `0 = 1`(触发检测)
3. 轮询寄存器 `1`
4. 状态为 `2` 时,读寄存器 `14~27` 获取目标点及孔半径
5. 状态为 `3` 时,本次检测失败