# WorkpieceTapered / WorkpiceRotor TCP 协议 ## 1. 概述 - 传输协议:TCP/IP - 数据编码:UTF-8 文本 - 服务模式:视觉侧作为 TCP 服务端 - 默认端口:`7800` - 报文结束符:`\r\n` - 字段分隔符:`_` - 当前模式:眼在手外 - 请求和响应均不使用 JSON 适用项目: - `WorkpieceTapered`:锥形工件定位 - `WorkpiceRotor`:转子钢芯定位 两个项目共用同一套 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`。