# WeldSeam TCP 报文格式 ## 1. 通信参数 | 项目 | 值 | |---|---| | 角色 | 视觉控制器为服务端,主控软件为客户端 | | 默认端口 | `7800`,可在参数页面修改 | | 编码 | UTF-8 文本 | | 字段分隔符 | `_` | | 报文结束符 | `\r\n` | 接收端必须按 `\r\n` 组帧,不能假定一次 TCP 接收对应一条完整报文。 ## 2. 相机与机械臂对应关系 | 命令 | 用途 | |---|---| | `START_SCAN_1` | 启动物理相机 1 扫描 | | `START_SCAN_3` | 启动物理相机 2 扫描 | | `GET_RET_1` | 获取物理相机 1 检测得到的机械臂 1 坐标 | | `GET_RET_2` | 获取物理相机 1 检测得到的机械臂 2 坐标 | | `GET_RET_3` | 获取物理相机 2 检测得到的机械臂 3 坐标 | | `GET_RET_4` | 获取物理相机 2 检测得到的机械臂 4 坐标 | - 配置 1 个机械臂:物理相机 1 对应机械臂 1。 - 配置 2 个机械臂:物理相机 1 对应机械臂 1、2。 - 配置 3 个机械臂:物理相机 1 对应机械臂 1、2,物理相机 2 对应机械臂 3。 - 配置 4 个机械臂:物理相机 1 对应机械臂 1、2,物理相机 2 对应机械臂 3、4。 - 两个物理相机不允许同时扫描。 ## 3. 扫描与查询时序 ```text 主控软件 WeldSeam视觉控制器 |---- START_SCAN_1\r\n ------------->| |<--- START_ACK\r\n -------------------| | 收到确认后移动物理相机 1 | |---- STOP_SCAN\r\n ------------------>| |<--- STOP_ACK\r\n --------------------| | | 自动检测 |<--- RESULT_READY\r\n ----------------| |---- GET_RET_1\r\n ------------------->| |<--- RESULT_OK_N_X1_Y1_Z1_...\r\n --| 机械臂 1 坐标 |---- GET_RET_2\r\n ------------------->| |<--- RESULT_OK_N_X1_Y1_Z1_...\r\n --| 机械臂 2 坐标 ``` 视觉只负责采集和检测,不负责相机或机械臂运动控制。未收到 `START_ACK` 前,主控不得开始移动相机。 ## 4. 请求与应答 ### 4.1 开始动态扫描 ```text START_SCAN_1\r\n START_SCAN_3\r\n START_ACK\r\n ``` 只允许使用 `START_SCAN_1` 和 `START_SCAN_3`:前者启动物理相机 1,后者启动物理相机 2。`START_SCAN_3` 仅在已配置物理相机 2 时有效。 ### 4.2 停止扫描并自动计算 ```text STOP_SCAN\r\n STOP_ACK\r\n ``` `STOP_ACK` 表示采集已停止且检测任务已开始,不表示检测已经完成。检测结束后,视觉控制器主动发送: ```text RESULT_READY\r\n ``` `RESULT_READY` 只表示本次检测已经结束。主控收到该通知后,应通过 `GET_RET_n` 获取检测结果;检测是否成功以查询应答为准。 ### 4.3 查询机械臂结果 ```text GET_RET_n\r\n ``` `n` 为已配置的机械臂编号 `1..4`,具体对应关系见第 2 节。 | 应答 | 含义 | |---|---| | `RESULT_PENDING` | 正在扫描或计算,结果尚未就绪 | | `RESULT_EMPTY` | 对应物理相机尚无可用检测结果 | | `RESULT_NG` | 检测失败、结果无效或手眼矩阵缺失 | | `RESULT_OK_...` | 手眼转换成功,返回机械臂坐标 | 可以重复查询最近一次检测结果。 ### 4.4 成功结果 ```text RESULT_OK_PointNum_X1_Y1_Z1_X2_Y2_Z2_..._Xn_Yn_Zn\r\n ``` 示例: ```text RESULT_OK_3_12.500_20.000_301.250_512.000_20.400_300.900_1012.750_21.100_300.500\r\n ``` - `PointNum` 必须等于后续 XYZ 点数量。 - 坐标单位为 mm,默认保留 3 位小数。 - 坐标系为 `GET_RET_n` 对应机械臂的坐标系。 - 点序固定为焊接行进方向,相邻路径点组成一段直线。 ## 5. 错误报文 | 报文 | 含义 | |---|---| | `ERROR_UNKNOWN_COMMAND` | 命令无法识别 | | `ERROR_INVALID_FORMAT` | 命令格式错误 | | `ERROR_INVALID_CAMERA` | 启动编号不是 1/3、物理相机未配置,或查询的机械臂未配置 | | `ERROR_BUSY` | 正在扫描或计算 | | `ERROR_NOT_READY` | 相机未就绪,或当前状态不允许该命令 | | `ERROR_INTERNAL_ERROR` | 停止采集等内部操作失败 | ## 6. 状态约束 ```text Ready --START_SCAN_1/3--> Scanning --STOP_SCAN--> Detecting --RESULT_READY--> Ready | +-- GET_RET_n ``` - `Scanning` 或 `Detecting` 状态收到 `START_SCAN_1/3`,返回 `ERROR_BUSY`。 - 非 `Scanning` 状态收到 `STOP_SCAN`,返回 `ERROR_NOT_READY`;计算期间返回 `ERROR_BUSY`。 - 扫描期间 TCP 断开,本次扫描立即取消;重新连接后必须从扫描起点重新开始。