GrabBag/App/RodAndBarPosition/Doc/MODBUS_PROTOCOL.md

3.0 KiB
Raw Blame History

棒材定位系统 Modbus TCP 通信协议

1. 系统架构

  • 视觉系统:作为 Modbus TCP Server默认端口 502
  • 外部客户端:连接到视觉系统进行检测触发和结果读取

2. 连接参数

参数
协议 Modbus TCP
端口 502默认
角色 Server被动等待连接

3. 寄存器定义

地址 寄存器数 类型 读/写 说明
0 1 uint16 R/W 检测触发写入非零值触发1=相机12=相机2触发后自动清零
1 1 uint16 R 状态码
2 2 float R X中心点 X 坐标mm
4 2 float R Y中心点 Y 坐标mm
6 2 float R Z中心点 Z 坐标mm
8 2 float R Roll绕X轴旋转角
10 2 float R Pitch绕Y轴旋转角
12 2 float R Yaw绕Z轴旋转角

浮点数编码IEEE 754 单精度浮点数,每个 float 占 2 个 uint16 寄存器,字节序由网络配置决定

坐标系XYZ 为机械臂坐标系下的值已经过手眼标定转换RPY 为 ZYX 外旋欧拉角

4. 状态码定义

状态码 说明
0 正在检测
1 检测成功(地址 2~13 数据有效)
2 检测失败
3 检测成功但结果为空

5. 通信流程

5.1 触发检测

  1. 外部客户端写入地址 0值为相机编号1 或 2
  2. 视觉系统自动清零地址 0并将地址 1 设为 0正在检测
  3. 视觉系统触发对应相机的检测

5.2 读取结果

  1. 检测完成后,视觉系统写入:
    • 地址 1状态码1=成功2=失败3=空结果)
    • 地址 2~13第一个棒材的 X, Y, Z, Roll, Pitch, Yaw仅状态码为 1 时有效)
  2. 外部客户端轮询地址 1当值从 0 变为非零时表示检测完成
  3. 状态码为 1 时,读取地址 2~13 获取定位结果

5.3 典型时序

客户端                              视觉系统
  |                                    |
  |--- 写入 地址0 = 1 (触发相机1) ----->|
  |                                    |-- 清零地址0地址1=0(正在检测)
  |                                    |-- 执行检测...
  |                                    |
  |<-- 读取 地址1 = 0 (正在检测) -------|
  |                                    |
  |<-- 读取 地址1 = 1 (检测成功) -------|
  |                                    |-- 写入地址1=1, 地址2~13=结果
  |<-- 读取 地址2~13 (XYZ+RPY) --------|
  |                                    |

6. 注意事项

  1. 触发寄存器写入后会自动清零,无需客户端手动清零
  2. 仅输出第一个检测到的棒材结果
  3. 坐标数据为机械臂坐标系下的值(已经过手眼标定转换)
  4. 欧拉角为 ZYX 外旋顺序(从轴向方向和法向方向构建旋转矩阵提取)
  5. 浮点数字节序(大端/小端)由网络配置中的 byteOrder 参数决定