GrabBag/App/WeldSeam/Doc/WeldSeam_TCP_Protocol.md

4.5 KiB
Raw Permalink Blame History

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. 扫描与查询时序

主控软件                         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 开始动态扫描

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 停止扫描并自动计算

STOP_SCAN\r\n
STOP_ACK\r\n

STOP_ACK 表示采集已停止且检测任务已开始,不表示检测已经完成。检测结束后,视觉控制器主动发送:

RESULT_READY\r\n

RESULT_READY 只表示本次检测已经结束。主控收到该通知后,应通过 GET_RET_n 获取检测结果;检测是否成功以查询应答为准。

4.3 查询机械臂结果

GET_RET_n\r\n

n 为已配置的机械臂编号 1..4,具体对应关系见第 2 节。

应答 含义
RESULT_PENDING 正在扫描或计算,结果尚未就绪
RESULT_EMPTY 对应物理相机尚无可用检测结果
RESULT_NG 检测失败、结果无效或手眼矩阵缺失
RESULT_OK_... 手眼转换成功,返回机械臂坐标

可以重复查询最近一次检测结果。

4.4 成功结果

RESULT_OK_PointNum_X1_Y1_Z1_X2_Y2_Z2_..._Xn_Yn_Zn\r\n

示例:

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. 状态约束

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 断开,本次扫描立即取消;重新连接后必须从扫描起点重新开始。