先说结论:WES 出异常不可怕,可怕的是异常发生后执行层不知道该干嘛。这个坑我见过三次——三次都是同一个剧本:设备卡住了,WES 里的任务状态还显示"执行中",没人知道它已经死了。成熟的 WES 异常管理(warehouse execution system exception management),说白了就三件事:给每种异常定一个超时阈值,给每次超时定一个兜底动作,给每个兜底动作留一个人工接管口。这三件事写进上线前夜 checklist,卡单、断线、设备故障来了,系统先自己扛第一波,人才有时间赶到现场。

为什么异常兜底是 WES 的本职?分工要先捋清楚:WMS 决定"做什么"(波次、任务分配),WCS 指挥设备"怎么动"(电机转、机械臂抓),WES 夹在中间,管的是"做到哪一步了、卡在哪一步、卡住了怎么办"。很多项目把 WES 当成传话筒——WMS 的指令原样转发给 WCS,状态原样回传,中间没有任何异常判断。这等于执行层是个植物人,风平浪静时岁月静好,一出事全靠人工救火。我做过的 30 多个上线项目里,执行层翻车十有八九都是这个原因。

三类异常,先分清楚再动手

动手之前先分类,分类错了后面全错。执行层的异常就三类:

  1. 卡单:任务发出去了,设备没回执。可能是真卡(纸箱侧翻堵住格口),也可能是假卡(货已经送到了,回执在路上丢了)。
  2. 断线:WES 和 WCS/设备之间的通信断了。心跳没了,WES 两眼一抹黑。
  3. 设备故障:设备自己报 fault,比如电机过载、扫码枪读不到码、AMR 低电量趴窝。

三类异常的兜底逻辑完全不一样。卡单要"判真假",断线要"先对账再动",设备故障要"先摘除再恢复"。混在一起处理,就是灾难的开始。

2024 年 5 月,加州 Ontario 一家 3PL 仓,12 万平方英尺,日均 1.8 万单。交叉带分拣机上一个纸箱侧翻,卡住了一个格口。WES 里那个任务的状态一直是"执行中"——因为项目上线时根本没配任务超时阈值。整整 3 个小时,同一个波次的 400 多单全堵在后面,直到夜班主管巡场时亲眼看见才报修。客户自己的测算:那 3 小时,拣选和打包两条线基本停摆。我们连夜救回来,干的就是三件事:任务级超时 10 分钟、设备级状态超时 5 分钟、波次 SLA 超时告警。三天后同样位置又卡了一次,系统 8 分钟就自己把任务转人工、波次绕行了。同一个坑,3 小时变 8 分钟,差的就是这三行配置。

卡单:WES 异常管理里最常见的硬仗

卡单是执行层最常见的异常,处理分三步,一步都不能省:

**第一步,定位。**去 WES 的任务监控/异常看板,按"卡单时长"排序,红色置顶的就是它。记下三个值:任务 ID、卡在哪台设备、卡在哪一步。这一步的目标是 1 分钟内定位,定位不了说明你的看板不合格,打回去重做。

**第二步,判真假。**这是最关键的一步,也是最容易翻车的一步。真卡还是假卡,决定了后面走哪条路。去现场看一眼,或者查 WCS 的设备日志确认。千万别在没确认之前点"强制完成"——这个按钮我见过三个客户点过,两个点出了串货。假卡的典型长相:货到了,回执丢了。2023 年双十一之前,华东一家美妆电商仓,几十台 AMR 在充电区门口排队"假死",WES 里堆了 200 多个未完成任务。现场一看,货早就送到了,是仓库 WiFi 漫游丢包,回执没回来。最后是按 WCS 的实际位置对账,批量确认的,一单货都没丢,但那一晚整个团队没人睡觉。

**第三步,选兜底动作。**三选一,按顺序试:

兜底动作 适用场景 恢复时间 风险
重发任务 假卡、偶发抖动,设备本身是好的 分钟级 低,但必须限次数
换路重派 设备真卡但可绕行(换格口、换输送线分支) 5~15 分钟 中,要确认新路径可用
人工接管 设备故障、判不准、超重试上限 看人到场速度 低,但会拖慢波次

决策框架就一句话:**先判"设备还能不能动",能动走重发/换路,不能动直接转人工。**别反了。

这里有个反常识的判断:**异常兜底不是越自动越好。**我见过一个仓,WES 配了无限重试,输送线上一段电机其实已经过载报警了,系统还在那一次次重发,47 次之后电机烧了。小故障拖成大维修。就一条铁律:**自动重试上限 3 次,超限必须熔断转人工。**自动化的意义是争取时间,不是代替判断。设备真坏了,系统越"努力",死得越快。

WES异常任务处理

断线和设备故障:WES 异常管理的另外两条线

**断线了,先别动,等对账。**WES 和 WCS 之间的心跳断了(心跳超时阈值按设备厂商的最新规格来定,别拍脑袋),WES 要做三件事:第一,把断线期间的任务全部标成"待确认",不重发、不取消——这时候重发是最危险的,网络一恢复,重复指令能把设备搞懵;第二,等心跳恢复;第三,拿 WES 的任务状态和 WCS 的实际设备状态逐项对账,差异项人工逐条确认。对账不清就放行,等于闭眼开车。

**设备故障了,先摘除,再恢复。**设备报 fault 的那一刻,WES 应该自动把它从可用设备池里摘掉,在途任务走换路逻辑。等维修完了,必须人工确认"回池",不许系统自动把修好的设备加回去。为什么?因为"修好了"是人判断的,不是传感器判断的。自动回池的仓我见过,设备带病上岗,半小时后又趴一次,波次被同一台设备坑两次。

上线前夜 checklist:这七项没打勾别上线

  1. 三类异常的超时阈值写进配置表,每个值都有依据(设备厂商规格或实测),不许留空。
  2. 异常看板能用:卡单任务红色置顶,按卡单时长排序,1 分钟内能定位。
  3. 自动重试上限 3 次,超限熔断转人工,这条写进代码逻辑,不是口头约定。
  4. 断线对账流程有人认领,on-call 名单贴在墙上,半夜 3 点能找到人。
  5. 禁用"强制完成"按钮,或者至少加上二次确认+操作留痕。异常任务只许"人工接管"。
  6. 波次 SLA 告警:波次超时(按自家 SLA 定,比如 15 分钟)自动升级,别等客户电话。
  7. 上线前做一次断网演练:直接拔网线,看 WES 能不能自己扛住第一波。扛不住就别上线。

这七项,每一项背后都是一个真实的凌晨三点。checklist 不是形式主义,是拿别人的通宵换你的安心。

明天你就能干一件事:今晚去查你们 WES 的任务超时阈值配了没有。没有的话,先加一个,值保守一点没关系——有阈值总比没有强。顺便问自己一个问题:你们仓上一次卡单,系统花了多久才告诉你?如果答案是"靠人发现的",那这篇文章就是写给你的。

作者:林晓|WMS 实施顾问