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

123 lines
2.6 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.

# WorkpieceTapered / WorkpieceRotor TCP 协议
## 1. 概述
- 传输协议TCP/IP
- 数据编码UTF-8 文本
- 服务模式:视觉侧作为 TCP 服务端
- 默认端口:`7800`
- 报文结束符:`\r\n`
- 字段分隔符:`_`
- 当前模式:眼在手外
- 请求和响应均不使用 JSON
适用项目:
- `WorkpieceTapered`:锥形工件定位
- `WorkpieceRotor`:转子钢芯定位
两个项目共用同一套 TCP/IP 协议格式。
## 2. 请求报文
格式:
```text
类型+相机索引\r\n
```
示例:
```text
S1\r\n
T1\r\n
```
字段说明:
| 字段 | 说明 |
|---|---|
| `S1` | `S`=工件检测,后跟相机索引 |
| `T1` | `T`=料框检测,后跟相机索引 |
本项目为眼在手外,检测请求不需要传入机械臂当前 `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 位小数 |
本项目不输出接近点坐标,只输出工件定位结果。
## 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`