# 钢筋焊缝定位系统 TCP/IP 文本通信协议 ## 1. 连接参数 | 参数 | 说明 | |------|------| | 角色 | 视觉系统作为 TCP Server,机械臂或 PLC 作为 TCP Client | | 默认端口 | 7800,可在网络配置界面修改 | | 编码 | UTF-8 文本 | | 行结束符 | `\r\n`(接收端兼容单独 `\n`) | ## 2. 触发检测 请求格式: ```text W{Camera}_X_Y_Z_A_B_C\r\n ``` 示例: ```text W1_100.000_200.000_300.000_0.000_90.000_180.000\r\n ``` - `W`:焊缝检测命令标识。 - `Camera`:相机编号,从 1 开始。 - `X/Y/Z`:拍照时机械臂当前法兰位置,单位 mm。 - `A/B/C`:拍照时机械臂当前法兰姿态,单位度,轴顺序由网络配置 `poseOutputOrder` 决定。 - 报文必须恰好包含 7 段。格式或数值非法时返回 `ERR\r\n`。 - 系统正在检测、相机不可用或触发失败时返回 `BUSY\r\n`。 - 命令被接受时不单独返回 ACK,检测完成后返回结果报文。 ### 2.1 姿态字段顺序 | `poseOutputOrder` | A | B | C | |-------------------|---|---|---| | 0 | RX | RY | RZ | | 1 | RX | RZ | RY | | 2 | RY | RX | RZ | | 3 | RY | RZ | RX | | 4 | RZ | RX | RY | | 5 | RZ | RY | RX | ## 3. 检测结果 成功且检测到焊缝时: ```text PointNum_WeldType_CX_CY_CZ_SX_SY_SZ_EX_EY_EZ_A_B_C[_WeldType_CX_..._C]\r\n ``` - `PointNum`:本次焊缝总数。 - 每条焊缝包含 13 个字段:焊缝类型、中心点 XYZ、起点 XYZ、终点 XYZ、姿态 ABC。 - 多条焊缝按同一 13 字段块连续追加,返回数量与 `PointNum` 一致。 - 所有浮点数保留 3 位小数。 - TCP 为文本协议,不使用 Modbus 的 `byteOrder` 配置。 - 检测失败或结果为空时返回 `0\r\n`。 示例(1 条焊缝): ```text 1_2_10.000_20.000_30.000_5.000_20.000_30.000_15.000_20.000_30.000_0.000_90.000_180.000\r\n ``` 焊缝类型: | 值 | 含义 | |----|------| | 0 | 未知 | | 1 | 点焊 | | 2 | 焊缝 | | 3 | 焊缝间隙 | ## 4. 手眼转换说明 - 眼在手上:`T_base_camera = T_base_flange × T_flange_camera`。触发报文中的机械臂当前位姿参与本次检测的中心、起点、终点、方向和姿态转换。 - 眼在手外:标定矩阵直接表示相机到机器人基座的变换,触发报文仍保留六轴位姿字段,但不参与结果计算。 - 检测结果会广播给当前连接到服务端的所有 TCP 客户端。