202603 海康机器人 CTU 与物流大师 WMS 对接实践
徐工料箱库项目的核心,重要有三件事:仓库结构要在 WMS 中建清楚,入库必须先经过探测位扫码确认,再进入可分配库存池,出库则必须由 WMS 先完成库存分配,再下发海康调度执行。
项目目标
这个 CTU 场景本质上是“料箱立库 + WMS + 海康调度”的组合系统:
- 物流大师 WMS 负责仓库结构、库位、容器、物料、库存、入库单、出库单、任务指引与库存分配。
- 海康 RCS-2000 负责 CTU 机器人搬运执行、路径调度、流程编排和任务回调。
- 现场探测位/扫码位 负责在入库之前确认条码,保证 WMS 中的库存记录与真实箱体一致。
因此,系统边界要先划清:
- 入库不是“先丢给调度再记账”,而是先扫码、后建库存、再分配库位并下发任务。
- 出库不是“海康自己找货”,而是WMS 先选库存与源库位,再把搬运任务发给海康。
- 海康回调不是只配一个地址,而是至少区分 任务状态 与 资源申请/释放 两条链路。
总体业务链路
入库链路
本文建议把入库做成下面 6 步:
- 来料箱先到探测入库位。
- 在探测位扫描条码,读取箱号。
- WMS 校验条码与主数据,确认该箱可以入库。
- WMS 根据任务指引为该箱分配目标库位。
- WMS 调用海康调度,生成 CTU 搬运任务。
- 海康在执行过程中通过任务回调与资源回调把状态反馈给物流大师 WMS。
出库链路
出库则反过来做:
- 上层业务系统或人工在 WMS 中发起出库请求。
- WMS 根据物料、批次、库存状态、锁定状态和任务指引,先选出源库位。
- WMS 生成出库单与仓库任务。
- WMS 直接把目标搬运任务下发给海康调度系统。
- 海康 CTU 执行搬运,并持续回调任务状态。
- WMS 根据回调更新出库单、库存和任务完成状态。
WMS 侧建模与页面配置
结合物流大师 WMS 的设计,CTU 项目至少要把“仓库 -> 库区 -> 货架/巷道 -> 库位 -> 容器 -> 库存 -> 任务指引”这一条链路建完整。
1. CTU 仓库结构建模
从现场页面可以看到,这个项目已经把 CTU 库区配置成货架型结构,并在货架页按巷道逐行维护。

- 页面路径是 首页 / 库区(CTU库区) / 货架。
- 列表中的货架名称使用
CTU库区-23R、CTU库区-22R一直到CTU库区-14R这种规则。 - 每个货架的结构参数一致:巷道/货架 16、层数 12、深度 1。
- 编码模板使用
{zoneCode}-A{aisle:00}-{bay:00}-{level:00}。
这类结构对 CTU 很重要,因为后续库位编码、库位可视化与任务指引都会依赖这套坐标体系。
2. 库位可视化与库存明细
仓库结构建完后,WMS 需要能够直接看到每个库位上放了什么容器、容器里是什么库存。

这张图反映的信息比较完整:
- 左侧菜单位于 库存 -> 库位可视化。
- 顶部筛选条件依次选中了
CTU、CTU库区(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 之所以能先分配再下发,靠的不是人工硬编码,而是任务指引与策略。

从截图可识别出,这里配置的是 起点策略,策略类型为 动态查询策略,筛选与排序规则包括:
- 字段
物料编码,操作符等于,值使用变量@MaterialCode。 - 字段
库存是否被锁定,操作符等于,值为否。 - 排序规则按
入库时间排序,聚合函数为最小值,排序方向为降序。
不管现场最终用 FIFO、近效期优先还是其他排序逻辑,本质都是同一件事:先在 WMS 中定义好“哪些库存可以被选、选中的优先级是什么”,然后再让 CTU 去执行。
入库与出库单据页面
1. 入库单页面
入库业务在 WMS 中要有单据化承载,这样后续才能追溯每一箱是从哪里来、去了哪里。

这张图展示了典型入库单页面:
- 左侧菜单定位到 任务 -> 入库单。
- 顶部有搜索框,可按任务号、配盘单号、托盘号检索。
- 右上有状态筛选:
待处理、处理中、已完成、已取消。 - 页面支持 手动创建入库单。
- 展开明细后可以看到字段:
箱号、物料编码、起点、终点、物料描述、数量、批次号。
在 CTU 方案里,探测位扫码 最终就要落到这类单据数据中。也就是说,扫码不是孤立动作,而是入库单生成与库存建立的前置条件。
2. 出库单页面
出库单同样由 WMS 管理,并且在这里完成库存分配结果的承载。

- 左侧菜单定位到 任务 -> 出库单。
- 顶部搜索支持按
托盘号、点位编码查询。 - 页面支持 手动创建出库单。
- 主列表字段包括
托盘号、点位编码、状态、拼单完成。 - 展开后的明细字段包括
任务号、物料编码、箱号、源库位、库位、物料描述、数量。
这也对应了本文的核心原则:出库单先在 WMS 里明确“从哪个源库位取哪一箱,送到哪个点位”,再把任务发给海康执行。
海康 RCS-2000 侧配置要点
海康侧这次不是只接一个通用回调,而是要把“任务状态回调”和“资源申请回调”拆开配置。
1. 资源回调:api/rcs2000/v4/robot/reporter/resource
资源相关事件,建议配置在 申请外部资源 节点中。

- 页面位于 RCS-2000 -> 任务编排。
- 当前流程图里包含
脚本逻辑、搬运任务、申请外部资源、申请站点、通知RCS等节点。 - 右侧当前选中的是 申请外部资源 节点,参数页签为 业务参数。
- 目标应用选择的是
logimaster。 - 申请路径需要配置到物流大师的资源回调地址。
- 请求编号与任务编号都绑定到流程变量。
- 请求类型显示为 申请仓位。
- 资源编号使用变量
${carrierCode}。
这个节点建议填写的物流大师回调路径是:
api/rcs2000/v4/robot/reporter/resource
它的职责不是报告“任务完成了没”,而是把资源申请、占用、释放这类事件回传给 WMS,让 WMS 和海康在资源状态上保持一致。
2. 任务回调:api/rcs2000/v4/robot/reporter/task
任务生命周期通知则放到搬运任务的通知配置里。

- 页面弹窗标题为 通知信息配置。
取到载具通知已启用。- 列表中的应用选择为
logimaster。 - 通知路径填写的是
api/rcs2000/v4/robot/report...这一类路径。 任务开始通知、离开起点通知、提前完成通知在截图里没有启用。- 页面下部还能看到
任务完成通知开关。
在这个项目里,建议统一落到物流大师的任务回调地址:
api/rcs2000/v4/robot/reporter/task
这样 WMS 可以接收到诸如任务开始、取到载具、任务完成等节点状态,并及时更新入库单、出库单和仓库任务状态。
现场监控与运行效果
除了业务页面与编排页面,现场还做了一个 CTU 大屏,用于把机器人运行、库位、任务和告警状态集中展示。

现场问题:CTU 不进行料箱码校验
预期行为
海康通用模板即可支持料箱码校验,流程编号 PF-CTU-COMMON。执行任务时:
- 执行机构抬升到料箱码高度,识别并校验料箱码;
- 码值一致:下降到仓位码高度,识别仓位码后继续执行任务;
- 码值不一致:报“料箱 ID 错误”。
现象
任务下发的料箱是 666003,现场实际摆放的是料箱 666020,CTU 没有报错,入库也执行成功了。
原因
CTU 仓位的“仓位二次定位类型”配置成了 容器码及仓位码校验纠偏。在这种模式下,机器人会分别识别仓位码和料箱码,但只用来纠正位置,偏差超过阈值才报错;料箱码与任务不一致时,并不会作为识别异常上报。
仓位二次定位类型:用于选择二次定位取货时的校准方式。
解决方法
将 CTU 仓位的“仓位二次定位类型”改为 仓位码定位,即机器人仅使用仓位码进行定位和纠偏。修改后,料箱码校验由 PF-CTU-COMMON 流程完成,料箱码不一致时会正常报“料箱 ID 错误”。