GrabBag/App/WeldSeam/Doc/WeldSeam_TCP_Protocol.md
2026-08-18 14:44:38 +08:00

97 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WeldSeam TCP 报文格式
## 1. 通信参数
| 项目 | 值 |
|---|---|
| 角色 | 视觉控制器为服务端,主控软件为客户端 |
| 默认端口 | `7800`,可在参数页面修改 |
| 编码 | UTF-8 文本 |
| 字段分隔符 | `_` |
| 报文结束符 | `\r\n` |
接收端必须按 `\r\n` 组帧,不能假定一次 TCP 接收对应一条完整报文。
## 2. 扫描与计算时序
```text
主控软件 WeldSeam视觉控制器
|---- START_SCAN\r\n ----------------->|
|<--- START_ACK\r\n -------------------|
| 收到确认后移动相机,视觉持续动态采集 |
|---- STOP_SCAN\r\n ------------------>|
|<--- STOP_ACK\r\n --------------------|
| | 自动计算
|<--- RESULT_OK_N_X1_Y1_Z1_...\r\n --|
```
视觉只负责采集和检测,不负责相机或机械臂运动控制。未收到 `START_ACK` 前,主控不得开始移动相机。
## 3. 请求与应答
### 3.1 开始动态扫描
```text
START_SCAN\r\n
START_ACK\r\n
```
`START_ACK` 表示 VzNLSDK 非摆动动态采集已经启动。
### 3.2 停止扫描并自动计算
```text
STOP_SCAN\r\n
STOP_ACK\r\n
```
`STOP_ACK` 只表示采集已停止且计算任务已受理。计算结果随后由视觉控制器主动发送。
### 3.3 成功结果
```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 位小数。
- 点序固定为焊接行进方向:首点、中间参考点、末点。
- 相邻路径点组成一段直线。
### 3.4 无有效结果
```text
RESULT_NG\r\n
```
## 4. 错误报文
```text
ERROR_错误码\r\n
```
| 报文 | 含义 |
|---|---|
| `ERROR_UNKNOWN_COMMAND` | 命令无法识别 |
| `ERROR_INVALID_FORMAT` | 命令格式错误 |
| `ERROR_BUSY` | 正在扫描或计算 |
| `ERROR_NOT_READY` | 相机未就绪,或当前状态不允许该命令 |
| `ERROR_INTERNAL_ERROR` | 停止采集等内部操作失败 |
## 5. 状态约束
```text
Ready --START_SCAN--> Scanning --STOP_SCAN--> Calculating --RESULT--> Ready
```
- `Scanning``Calculating` 状态收到 `START_SCAN`,返回 `ERROR_BUSY`
-`Scanning` 状态收到 `STOP_SCAN`,返回 `ERROR_NOT_READY`;计算期间返回 `ERROR_BUSY`
- 扫描期间 TCP 断开,本次扫描立即取消并清空缓存;重新连接后必须从扫描起点重新开始。