跳到主要内容

202603 海康机器人 CTU 与物流大师 WMS 对接实践

· 阅读需 10 分钟

徐工料箱库项目的核心,重要有三件事:仓库结构要在 WMS 中建清楚,入库必须先经过探测位扫码确认,再进入可分配库存池,出库则必须由 WMS 先完成库存分配,再下发海康调度执行。

项目目标

这个 CTU 场景本质上是“料箱立库 + WMS + 海康调度”的组合系统:

  1. 物流大师 WMS 负责仓库结构、库位、容器、物料、库存、入库单、出库单、任务指引与库存分配。
  2. 海康 RCS-2000 负责 CTU 机器人搬运执行、路径调度、流程编排和任务回调。
  3. 现场探测位/扫码位 负责在入库之前确认条码,保证 WMS 中的库存记录与真实箱体一致。

因此,系统边界要先划清:

  • 入库不是“先丢给调度再记账”,而是先扫码、后建库存、再分配库位并下发任务
  • 出库不是“海康自己找货”,而是WMS 先选库存与源库位,再把搬运任务发给海康
  • 海康回调不是只配一个地址,而是至少区分 任务状态资源申请/释放 两条链路。

总体业务链路

入库链路

本文建议把入库做成下面 6 步:

  1. 来料箱先到探测入库位。
  2. 在探测位扫描条码,读取箱号。
  3. WMS 校验条码与主数据,确认该箱可以入库。
  4. WMS 根据任务指引为该箱分配目标库位。
  5. WMS 调用海康调度,生成 CTU 搬运任务。
  6. 海康在执行过程中通过任务回调与资源回调把状态反馈给物流大师 WMS。

出库链路

出库则反过来做:

  1. 上层业务系统或人工在 WMS 中发起出库请求。
  2. WMS 根据物料、批次、库存状态、锁定状态和任务指引,先选出源库位。
  3. WMS 生成出库单与仓库任务。
  4. WMS 直接把目标搬运任务下发给海康调度系统。
  5. 海康 CTU 执行搬运,并持续回调任务状态。
  6. WMS 根据回调更新出库单、库存和任务完成状态。

WMS 侧建模与页面配置

结合物流大师 WMS 的设计,CTU 项目至少要把“仓库 -> 库区 -> 货架/巷道 -> 库位 -> 容器 -> 库存 -> 任务指引”这一条链路建完整。

1. CTU 仓库结构建模

从现场页面可以看到,这个项目已经把 CTU 库区配置成货架型结构,并在货架页按巷道逐行维护。

CTU 货架列表页

  • 页面路径是 首页 / 库区(CTU库区) / 货架
  • 列表中的货架名称使用 CTU库区-23RCTU库区-22R 一直到 CTU库区-14R 这种规则。
  • 每个货架的结构参数一致:巷道/货架 16、层数 12、深度 1
  • 编码模板使用 {zoneCode}-A{aisle:00}-{bay:00}-{level:00}

这类结构对 CTU 很重要,因为后续库位编码、库位可视化与任务指引都会依赖这套坐标体系。

2. 库位可视化与库存明细

仓库结构建完后,WMS 需要能够直接看到每个库位上放了什么容器、容器里是什么库存。

CTU 库位可视化与库位详情

这张图反映的信息比较完整:

  • 左侧菜单位于 库存 -> 库位可视化
  • 顶部筛选条件依次选中了 CTUCTU库区(CTU)CTU库区-1R
  • 中间区域按层展示库位,从 层 1 到层 8,绿色格子表示当前有货。
  • 右侧抽屉中,当前选中的库位编码为 CTU-A01-07-03
  • 库位名称为 RC090A03031,库区名称为 CTU库区
  • 结构坐标显示为 1排/巷道 7列/隔间 3层
  • 当前库位下有 1 个容器:30020802003460
  • 容器内物料编码为 805144870,批次号为 *****
  • 数量为 1000.0000,可用数量同样为 1000.0000,状态为 正常库存
  • 页面底部统计还能看到当前库区概况:总库位 192,空库位 174,有货-正常 18

这正好符合 WMS 的核心职责:库存不是只知道“有货”,而是要知道货在哪个库位、在哪个容器、数量多少、状态是什么

3. 任务指引与策略配置

WMS 之所以能先分配再下发,靠的不是人工硬编码,而是任务指引与策略。

CTU 动态查询策略配置

从截图可识别出,这里配置的是 起点策略,策略类型为 动态查询策略,筛选与排序规则包括:

  • 字段 物料编码,操作符 等于,值使用变量 @MaterialCode
  • 字段 库存是否被锁定,操作符 等于,值为
  • 排序规则按 入库时间 排序,聚合函数为 最小值,排序方向为 降序

不管现场最终用 FIFO、近效期优先还是其他排序逻辑,本质都是同一件事:先在 WMS 中定义好“哪些库存可以被选、选中的优先级是什么”,然后再让 CTU 去执行

入库与出库单据页面

1. 入库单页面

入库业务在 WMS 中要有单据化承载,这样后续才能追溯每一箱是从哪里来、去了哪里。

CTU 入库单列表页

这张图展示了典型入库单页面:

  • 左侧菜单定位到 任务 -> 入库单
  • 顶部有搜索框,可按任务号、配盘单号、托盘号检索。
  • 右上有状态筛选:待处理处理中已完成已取消
  • 页面支持 手动创建入库单
  • 展开明细后可以看到字段:箱号物料编码起点终点物料描述数量批次号

在 CTU 方案里,探测位扫码 最终就要落到这类单据数据中。也就是说,扫码不是孤立动作,而是入库单生成与库存建立的前置条件。

2. 出库单页面

出库单同样由 WMS 管理,并且在这里完成库存分配结果的承载。

CTU 出库单列表页

  • 左侧菜单定位到 任务 -> 出库单
  • 顶部搜索支持按 托盘号点位编码 查询。
  • 页面支持 手动创建出库单
  • 主列表字段包括 托盘号点位编码状态拼单完成
  • 展开后的明细字段包括 任务号物料编码箱号源库位库位物料描述数量

这也对应了本文的核心原则:出库单先在 WMS 里明确“从哪个源库位取哪一箱,送到哪个点位”,再把任务发给海康执行。

海康 RCS-2000 侧配置要点

海康侧这次不是只接一个通用回调,而是要把“任务状态回调”和“资源申请回调”拆开配置。

1. 资源回调:api/rcs2000/v4/robot/reporter/resource

资源相关事件,建议配置在 申请外部资源 节点中。

海康 RCS 资源回调配置

  • 页面位于 RCS-2000 -> 任务编排
  • 当前流程图里包含 脚本逻辑搬运任务申请外部资源申请站点通知RCS 等节点。
  • 右侧当前选中的是 申请外部资源 节点,参数页签为 业务参数
  • 目标应用选择的是 logimaster
  • 申请路径需要配置到物流大师的资源回调地址。
  • 请求编号与任务编号都绑定到流程变量。
  • 请求类型显示为 申请仓位
  • 资源编号使用变量 ${carrierCode}

这个节点建议填写的物流大师回调路径是:

api/rcs2000/v4/robot/reporter/resource

它的职责不是报告“任务完成了没”,而是把资源申请、占用、释放这类事件回传给 WMS,让 WMS 和海康在资源状态上保持一致。

2. 任务回调:api/rcs2000/v4/robot/reporter/task

任务生命周期通知则放到搬运任务的通知配置里。

海康 RCS 任务回调配置

  • 页面弹窗标题为 通知信息配置
  • 取到载具通知 已启用。
  • 列表中的应用选择为 logimaster
  • 通知路径填写的是 api/rcs2000/v4/robot/report... 这一类路径。
  • 任务开始通知离开起点通知提前完成通知 在截图里没有启用。
  • 页面下部还能看到 任务完成通知 开关。

在这个项目里,建议统一落到物流大师的任务回调地址:

api/rcs2000/v4/robot/reporter/task

这样 WMS 可以接收到诸如任务开始、取到载具、任务完成等节点状态,并及时更新入库单、出库单和仓库任务状态。

现场监控与运行效果

除了业务页面与编排页面,现场还做了一个 CTU 大屏,用于把机器人运行、库位、任务和告警状态集中展示。

CTU 智能立库监控大屏

现场问题:CTU 不进行料箱码校验

预期行为

海康通用模板即可支持料箱码校验,流程编号 PF-CTU-COMMON。执行任务时:

  1. 执行机构抬升到料箱码高度,识别并校验料箱码;
  2. 码值一致:下降到仓位码高度,识别仓位码后继续执行任务;
  3. 码值不一致:报“料箱 ID 错误”。

现象

任务下发的料箱是 666003,现场实际摆放的是料箱 666020,CTU 没有报错,入库也执行成功了。

原因

CTU 仓位的“仓位二次定位类型”配置成了 容器码及仓位码校验纠偏。在这种模式下,机器人会分别识别仓位码和料箱码,但只用来纠正位置,偏差超过阈值才报错;料箱码与任务不一致时,并不会作为识别异常上报。

仓位二次定位类型:用于选择二次定位取货时的校准方式。

解决方法

将 CTU 仓位的“仓位二次定位类型”改为 仓位码定位,即机器人仅使用仓位码进行定位和纠偏。修改后,料箱码校验由 PF-CTU-COMMON 流程完成,料箱码不一致时会正常报“料箱 ID 错误”。