Skip to content

无人拖车对接文档

1. 概述

本文档描述无人拖车系统与威海港 YMS 系统的对接规范,包括消息队列配置、消息格式、状态流转等内容。

2. 技术架构

┌─────────────────┐          RabbitMQ          ┌─────────────────┐
│   无人拖车系统   │ ────────────────────────→ │    YMS 系统     │
│  (Producer)     │   队列: unmanned_DRIVER_  │  (Consumer)     │
│                 │       status_queue         │                 │
└─────────────────┘                            └─────────────────┘


                                              ┌───────────────┐
                                              │    Redis      │
                                              │ (会话状态存储)│
                                              └───────────────┘

3. 队列配置

3.1 RabbitMQ 连接信息

配置项
主机地址192.168.31.30
端口5672
用户名admin
密码admin
Virtual Host/

3.2 队列参数

配置项说明
Exchangeunmanned_DRIVER_exchange直连交换机
Queueunmanned_DRIVER_status_queue状态消息队列
Routing Keyunmanned_DRIVER_status_key路由键
Durabletrue持久化
Auto Deletefalse不自动删除

4. 消息格式

4.1 基础消息结构

所有消息均为 JSON 格式,编码为 UTF-8。

json
{
  "terminalName": "UT-001",
  "username": "unmanned_system",
  "workStatus": "WAITING_FOR_PALLET",
  "timestamp": 1715115000000
}

4.2 字段说明

字段类型必填含义
terminalNameString无人拖车唯一标识(车号)
usernameString无人拖车系统用户名
workStatusString当前作业状态(见 4.3)
timestampLong消息时间戳(毫秒),不传则由 YMS 系统生成

4.3 状态值说明

状态值含义触发时机
WAITING_FOR_PALLET等待拉托盘拖车空闲,等待分配托盘任务
WAITING_FOR_CONTAINER等待正面吊放箱已绑定托盘,到达正面吊位置等待放箱
WAITING_FOR_SHIPMENT等待装船已完成放箱,等待前往装船位置
PENDING作业中正在执行运输任务
DONE已完成完成当前作业,返回等待区

4.4 状态流转图

WAITING_FOR_PALLET

       ▼ (分配托盘)
WAITING_FOR_CONTAINER

       ▼ (正面吊放箱完成)
WAITING_FOR_SHIPMENT

       ▼ (装船完成)
    DONE

       ▼ (返回等待区)
WAITING_FOR_PALLET

5. 交互流程

5.1 拖车上线流程

无人拖车系统                    YMS 系统
       │                            │
       │ 发送状态消息               │
       │ workStatus=WAITING_FOR_   │
       │   PALLET                  │
       │──────────────────────────→│
       │                            │
       │         注册会话到Redis     │
       │                            │
       │                            │ 更新在线状态
       │                            │

5.2 作业任务分配

无人拖车系统                    YMS 系统                     前端
       │                            │                         │
       │                            │ 分配任务 (STOMP)        │
       │                            │──────────────────────→  │
       │                            │                         │
       │                            │ 发送任务消息            │
       │   接收任务消息             │ (STOMP /topic/terminal/ │
       │←───────────────────────────│   name/{terminalName})  │
       │                            │                         │

5.3 状态同步

无人拖车系统                    YMS 系统
       │                            │
       │ 状态变更时发送消息          │
       │ workStatus=xxx            │
       │──────────────────────────→│
       │                            │
       │                            │ 更新Redis会话状态
       │                            │
       │                            │ 推送状态变更到前端
       │                            │

6. 消息示例

6.1 上线消息

json
{
  "terminalName": "UT-001",
  "username": "unmanned_system",
  "workStatus": "WAITING_FOR_PALLET",
  "timestamp": 1715115000000
}

6.2 前往正面吊位置

json
{
  "terminalName": "UT-001",
  "username": "unmanned_system",
  "workStatus": "WAITING_FOR_CONTAINER",
  "timestamp": 1715115060000
}

6.3 等待装船

json
{
  "terminalName": "UT-001",
  "username": "unmanned_system",
  "workStatus": "WAITING_FOR_SHIPMENT",
  "timestamp": 1715115120000
}

6.4 作业完成

json
{
  "terminalName": "UT-001",
  "username": "unmanned_system",
  "workStatus": "DONE",
  "timestamp": 1715115180000
}

7. YMS 系统反馈

YMS 系统通过 STOMP 协议向无人拖车发送任务指令,无人拖车系统需订阅以下地址:

订阅地址说明
/topic/terminal/DRIVER所有拖车广播消息
/topic/terminal/name/{terminalName}指定拖车的消息

7.1 任务指令格式

json
{
  "terminalType": "DRIVER",
  "terminalName": "UT-001",
  "action": "ASSIGN_CONTAINER",
  "cLaneCntrIdList": ["f3e1b8f2-53b1-4b1f-a43f-72e2f7e7f6df"],
  "description": "请前往指定位置执行放箱作业",
  "timestamp": 1715115000000
}

7.2 动作类型说明

action含义
ASSIGN_CONTAINER分配放箱任务
MOVE_CONTAINER移箱任务
CANCEL_TASK取消任务
REQUIRE_DRIVER叫车指令

8. 错误处理

8.1 消息重试

  • 消息消费失败时,RabbitMQ 会自动重试
  • 超过重试次数后,消息会被移入死信队列

8.2 消息幂等性

YMS 系统保证消息处理的幂等性,同一消息重复处理不会产生副作用。

9. 安全注意事项

  1. 认证: 无人拖车系统连接 RabbitMQ 需使用专用账号密码
  2. 消息加密: 生产环境建议启用 TLS 加密
  3. 权限控制: 队列权限仅限无人拖车系统账号

10. 测试环境

配置项
RabbitMQ 主机192.168.31.30
端口5672
测试拖车号UT-TEST01, UT-TEST02

11. 附录

11.1 无人拖车会话标识规则

  • 会话 ID 格式:unmanned:{terminalName}
  • 示例:unmanned:UT-001

11.2 时间格式

所有时间戳均为 Unix 时间戳(毫秒),时区为 UTC+8。


文档版本: v1.0
创建日期: 2026-05-18
维护人: ZhangHL

MIT版权,未经许可禁止任何形式的转载