GrabBag/App/StatorPosition/Doc/定子线圈ModbusTCP协议.md
2026-02-23 19:45:47 +08:00

6.5 KiB
Raw Blame History

定子线圈定位 - Modbus TCP 通信协议

1. 系统架构

3D视觉系统提供双通道 Modbus TCP 通信接口,两个通道使用相同的寄存器协议,独立运行。

                    ┌──────────────────┐
                    │                  │
       通道1        │    3D视觉系统     │        通道2
  ┌────────────────►│                  │◄───────────────┐
  │   Modbus TCP    │                  │   Modbus TCP   │
  │                 └──────────────────┘                │
  │                                                     │
  ▼                                                     ▼
┌──────────────────┐                          ┌──────────────────┐
│       PLC        │                          │       外部设备    │
│  192.168.0.88    │                          │                  │
│     端口 502     │                          │     连接端口 502  │
└──────────────────┘                          └──────────────────┘
  • 通道1:3D视觉系统作为 Modbus TCP 客户端,连接 PLC(服务端,端口502)
  • 通道2:3D视觉系统作为 Modbus TCP 服务端(监听端口502),等待外部设备连接

2. 寄存器定义

每次检测输出1个目标位置(6个float值 = 12个寄存器)。

2.1 寄存器地址表

地址 类型 说明
0 uint16 触发信号(边沿检测 0→1 触发)
1 uint16 工作状态
2-13 float × 6 目标位姿数据(X, Y, Z, Roll, Pitch, Yaw)

2.2 工作状态值(地址1)

值 含义
0 正在工作
1 完成(正常)
2 完成(异常)

2.3 目标位姿数据布局(地址2-13)

地址 类型 说明
2-3 float X坐标 (mm)
4-5 float Y坐标 (mm)
6-7 float Z坐标 (mm)
8-9 float Roll角度 (°)
10-11 float Pitch角度 (°)
12-13 float Yaw角度 (°)

float编码:IEEE 754 单精度浮点数,每个float占2个保持寄存器,默认大端序(高位字在低地址)。

3. 通信流程

3.1 通道1 时序(3D视觉系统 → PLC)

3D视觉系统主动轮询PLC的触发寄存器,检测到触发后执行检测并回写结果。

3D视觉系统                            PLC
    │                                  │
    │  ① 轮询读取地址0                 │
    │◄─────────────────────────────────│
    │                                  │
    │  ② 地址0=1(PLC发起触发)         │
    │◄─────────────────────────────────│
    │                                  │
    │  ③ 写0到地址0(清除触发)          │
    │─────────────────────────────────►│
    │                                  │
    │  ④ 写0到地址1(状态=正在工作)     │
    │─────────────────────────────────►│
    │                                  │
    │      [3D视觉系统执行检测]          │
    │                                  │
    │  ⑤ 写位姿数据到地址2-13           │
    │─────────────────────────────────►│
    │                                  │
    │  ⑥ 写1到地址1(状态=完成正常)     │
    │─────────────────────────────────►│
    │                                  │

3.2 通道2 时序(外部设备 → 3D视觉系统)

外部设备作为 Modbus 客户端连接到3D视觉系统(端口502),通过写寄存器触发检测,通过读寄存器获取结果。

外部设备                            3D视觉系统(:502)
    │                                  │
    │  ① 写1到地址0(触发)             │
    │─────────────────────────────────►│
    │                                  │
    │      [3D系统清除地址0、置地址1=0]  │
    │      [3D系统执行检测]             │
    │      [3D系统写位姿到地址2-13]      │
    │      [3D系统置地址1=1或2]         │
    │                                  │
    │  ② 轮询读取地址1(查询状态)       │
    │─────────────────────────────────►│
    │  返回: 1=完成正常 / 2=异常        │
    │◄─────────────────────────────────│
    │                                  │
    │  ③ 读取地址2-13(获取位姿)        │
    │─────────────────────────────────►│
    │  返回: 6个float(X,Y,Z,R,P,Y)   │
    │◄─────────────────────────────────│
    │                                  │

3.3 流程说明

  1. 触发:地址0写入1,采用边沿检测(0→1变化时触发),重复写1不会重复触发
  2. 工作中:触发后3D系统立即清除地址0并将地址1置为0(正在工作)
  3. 结果输出:检测完成后,位姿数据写入地址2-13,然后地址1置为1(完成正常)
  4. 异常处理:检测失败时,地址1置为2(异常),位姿数据无效
  5. 双通道联动:任一通道触发检测后,结果会同时写入两个通道的寄存器

4. 使用建议

4.1 触发方检查流程

  1. 写1到地址0,触发检测
  2. 轮询读取地址1,等待值变为非0
    • 值为1:检测成功,读取地址2-13获取位姿
    • 值为2:检测异常,可重新触发
  3. 处理完毕后可再次触发下一次检测

4.2 注意事项

  • 3D系统工作期间(地址1=0),请勿重复触发
  • 位姿数据仅在地址1=1(完成正常)时有效
  • 两个通道独立运行,可同时使用