GrabBag/App/StatorWorkpiecePosition/Doc/工件定位TCP通信协议.md

130 lines
2.7 KiB
Markdown
Raw Normal View History

# 锥形工件定位 / 转子钢芯定位 TCP 协议
2026-08-04 14:23:07 +08:00
## 1. 概述
- 传输协议:TCP/IP
- 数据编码:UTF-8 文本
- 服务模式:视觉侧作为 TCP 服务端
- 默认端口:`7800`
- 报文结束符:`\r\n`
- 字段分隔符:`_`
- 当前模式:眼在手外
- 请求和响应均不使用 JSON
## 2. 请求报文
格式:
```text
类型+相机索引\r\n
```
示例:
```text
S1\r\n
```
字段说明:
| 字段 | 说明 |
|---|---|
| `S1` | `S`=工件检测,后跟相机索引 |
本项目为眼在手外,检测请求不需要传入机械臂当前 `X/Y/Z/A/B/C`。
工件检测算法会在定位过程中同步计算所需的料框信息,不需要发送单独的料框检测请求,
也不通过 TCP/IP 返回料框几何数据。
2026-08-04 14:23:07 +08:00
## 3. 工件检测返回报文
格式:
```text
PointNum_Type_X_Y_Z_A_B_C[_Type_X_Y_Z_A_B_C...]\r\n
```
`PointNum=0` 时表示未检测到有效工件,报文只有一个字段:
```text
0\r\n
```
示例:
```text
1_2_100.500_200.300_50.100_15.500_-2.300_45.000\r\n
2_2_100.500_200.300_50.100_15.500_-2.300_45.000_3_120.000_220.000_55.000_16.000_-2.000_44.500\r\n
0\r\n
```
字段说明:
| 字段 | 说明 |
|---|---|
| `PointNum` | 检测到的工件数量 |
| `Type` | 工件类型 `workpieceType` |
| `X/Y/Z` | 工件位置,单位 mm,保留 3 位小数 |
| `A/B/C` | 工件姿态,单位 deg,保留 3 位小数 |
`Type`(`workpieceType`)取值含义如下:
| `workpieceType` | 含义 |
|---:|---|
| `0` | 中央 |
| `1` | 上边 |
| `2` | 下边 |
| `3` | 左边 |
| `4` | 右边 |
| `5` | 左上角 |
| `6` | 右上角 |
| `7` | 左下角 |
| `8` | 右下角 |
| `9` | 隔板 |
2026-08-04 14:23:07 +08:00
本项目不输出接近点坐标,只输出工件定位结果。
## 4. 错误响应
格式:
```text
Error_code_message\r\n
```
示例:
```text
Error_-5_工件检测启动失败\r\n
```
## 5. 姿态输出顺序
返回报文中的 `A/B/C` 由网络配置中的 `poseOutputOrder` 控制。
支持顺序:
- `RPY`
- `RYP`
- `PRY`
- `PYR`
- `YRP`
- `YPR`
## 6. 配置相关
`config.xml` 中与协议相关的关键项:
- `TcpServerConfig.robotServerPort`:本 TCP/IP 协议服务端监听端口,默认 `7800`。
- `TcpServerConfig.poseOutputOrder`:TCP 和 Modbus 姿态输出顺序。
## 7. Modbus TCP 对接
除本 TCP/IP 服务端协议外,项目还支持 Modbus TCP Server 对接:
- 应用只作为 Modbus TCP Server/从设备。
- 客户 PLC/上位机作为 Modbus TCP Client,写触发寄存器并读取状态和结果。
- Modbus TCP Server 端口固定为应用内 `5020`;现场需要标准 `502` 时由系统映射到 `5020`。
- `robotServerPort` 不控制 Modbus 端口,只控制本 TCP/IP 文本协议端口。
寄存器地址配置和结果格式详见 `定子工件定位ModbusTCP协议.md`。