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

130 lines
2.7 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.

# 锥形工件定位 / 转子钢芯定位 TCP 协议
## 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 返回料框几何数据。
## 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` | 隔板 |
本项目不输出接近点坐标,只输出工件定位结果。
## 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`。