# 轮胎孔定位 ModbusTCP 协议 ## 1. 概述 - **协议**: Modbus TCP(保持寄存器) - **端口**: `502` - **模式**: 眼在手外(相机固定,无需机械臂位姿) ## 2. 寄存器定义 | 地址 | 长度 | 访问 | 说明 | |---:|---|---|---| | `0` | 1 | 写 | 触发检测,写入 `1` | | `1` | 1 | 读 | 工作状态 | | `14` | 2 | 读 | 目标点 X(float32,单位 mm) | | `16` | 2 | 读 | 目标点 Y(float32,单位 mm) | | `18` | 2 | 读 | 目标点 Z(float32,单位 mm) | | `20` | 2 | 读 | 目标点姿态分量 1(float32,单位 deg) | | `22` | 2 | 读 | 目标点姿态分量 2(float32,单位 deg) | | `24` | 2 | 读 | 目标点姿态分量 3(float32,单位 deg) | | `26` | 2 | 读 | 孔半径 R(float32,单位 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` 时,本次检测失败