2024 年夏天,一家加州的 3PL 仓上演了一次教科书级的 WCS 断网降级失败:凌晨一点四十分,WCS 和上游 WMS 之间的网络断了。监控屏上任务队列停在那儿不动,输送线却还在转——传送带上几百个箱子像没头苍蝇一样在环线上打转,分拣格口一个都没开。那天晚上他们停了三个半小时,第二天算了一下账:直接损失大几万美金,还不算客户的索赔邮件。

这事之后我跟他们老板说了一句话:你们不是缺设备,是缺一份 WCS 断网降级预案。今天把这事掰开讲透。

先搞清楚:断的是哪一段

很多人一张嘴就是"WCS 挂了",但挂和挂完全不一样。先看 WCS 在软件栈里的位置:ERP 管账,WMS 管库存和订单,WCS 管设备执行,PLC 管电机气缸。你可以理解为:WMS 是大脑,WCS 是小脑加脊髓,PLC 和设备是肌肉。大脑负责想,小脑负责协调动作,肌肉负责动。

所以"断"有两种,处理方式天差地别:

第一种,WCS 和上游(WMS/WES)断连。WCS 本体活着,设备也活着,只是收不到新任务。这就像大脑失联了,但小脑和肌肉都还在——人不会立刻倒下,还能凭本能把手头的事做完。这种场景下,正确的做法是让 WCS 靠本地缓存的任务队列继续执行,把已经下发的波次跑完。

第二种,WCS 本机故障或者和下游 PLC 断连。这相当于脊髓断了,肌肉收不到指令。这时候设备必须靠 PLC 本地的保护逻辑进入安全状态:输送线按段停机、分拣机回零、提升机锁在当前位置。注意,是"安全状态",不是"直接断电"——直接断电会让在途的箱子卡在提升机中间,那才叫真灾难。

分不清这两种断,预案就是废纸。我见过有仓把两种场景写成同一套 SOP,结果真断网那天,操作员对着还能动的设备不知道该干啥,对着动不了的设备瞎重启,把 PLC 程序都搞乱了。

WCS 断网降级的三档:L1、L2、L3 怎么分

降级不是"要么全自动、要么全人工"这种二极管思维。我习惯分成三档,每一档有明确的触发条件和动作。这张表建议直接打印贴在控制室墙上:

降级等级 触发条件 系统动作 人工动作
L1 本地续跑 WCS 与上游断连<30 分钟,本地任务队列非空 WCS 用缓存任务继续执行,新任务暂停下发 监控员盯屏,准备切换
L2 人工接管 断连超 30 分钟,或本地队列跑空 WCS 保持设备待机,开放人工操作界面 操作员按纸质波次单人工投线、人工分拣
L3 安全停机 WCS 本机故障或与 PLC 断连 PLC 本地逻辑接管,设备进入安全状态 全员停线,排查硬件,禁止瞎重启

为什么分界线卡在 30 分钟?这是经验数,不是标准。我的逻辑是:一个波次的任务量,正常仓的 WCS 本地缓存一般能撑 20~40 分钟。超过这个时间,缓存跑空,设备空转就是在烧电费和磨损,这时候果断转人工,效率反而更高。你们仓的具体分界线,看自己波次大小定,但一定要有个明确的数,不能靠"感觉差不多了"。

这里有个反常识的判断,很多人不爱听:断网降级这件事,瓶颈从来不在软件,在人。 我做过三个仓的降级演练,系统侧 L1 切换基本都能在几分钟内完成,卡住的全是人——操作员没见过人工操作界面,纸质波次单的打印机没纸了,夜班主管不知道降级权限在谁手里。软件能自动化的部分早就自动化了,降级预案拼的是组织 readiness。

还有一个 trade-off 必须讲清楚:L1 本地续跑做得越深(缓存越多逻辑),WCS 就越复杂,日常维护成本越高。有些集成商为了卖方案,把"断网 72 小时自治运行"吹上天。这就是伪需求,直接开炮:你的上游 WMS 一年才断几次?每次几分钟还是几小时?为了一个几年一遇的场景,把 WCS 做成第二个 WMS,这钱花得冤。我的分界线是:本地续跑覆盖"常见断连时长"的两倍,剩下的交给人工。 常见断连是 10 分钟,你做到 20~30 分钟自治就够了,再多就是过度设计。

断网时的人工接管操作

WCS 断网降级复网之后:最要命的活是对账

断网不可怕,复网才可怕。我讲两个真事。

第一个,2023 年,某电商仓(美东,具体名字不提了),WCS 和 WMS 断连 40 分钟,L1 本地续跑把缓存的 1200 多个订单跑完了。网络一恢复,WMS 把这 40 分钟的任务又下发了一遍——因为 WMS 以为这些任务没执行。结果 1200 多单重复出库,退货和客服电话处理了整整两周。根因:WCS 的任务状态回传机制没有做"幂等",WMS 侧也没有断连期间的任务去重。

第二个,2022 年,一个做服装的 3PL 仓,WCS 本机宕机转 L3,PLC 安全停机。恢复后,WCS 从上次持久化的快照恢复任务状态,但快照是 15 分钟前的——这 15 分钟里已经分拣完的 300 多箱,在系统里还是"待分拣"。现场只能人工拿着清单一箱一箱对,折腾到天亮。

所以复网对账是降级预案里最容易被漏掉的一环。标准动作三件套:第一,WCS 所有任务状态变更必须带全局唯一的任务 ID 和时间戳,WMS 侧按 ID 去重,重复下发直接丢弃;第二,WCS 状态快照的持久化间隔不能大于 5 分钟,存在独立于 WCS 主机的存储上(主机都挂了快照还在主机硬盘里,等于没存);第三,复网后先跑一轮"差异报告"——系统里"已完成"和设备实际执行对不上的一律标红,人工确认后再继续,不要自动续跑。

维护的坑:预案从来没演练过

最后讲维护的坑,也是我最想开炮的地方。

我问过不下十个仓的运维负责人:"你们的断网降级预案,多久演练一次?"得到的回答高度一致:上线的时候测过一次,后来再也没测过。WCS 升级了三个版本,降级脚本还是三年前的;PLC 程序改过,安全停机的互锁逻辑没人复核;新来的夜班主管连 L2 人工操作界面都没见过。

这就像买了灭火器,十年不检查,着火那天发现压力表归零。降级预案的有效期,我的建议是:每季度一次桌面推演,每半年一次真实断网演练(挑业务低峰,比如周日凌晨,拔网线 20 分钟)。演练不追求一次完美,追求的是把"人"的那一环练熟——谁有权宣布进入 L2,纸质单从哪儿打,人工分拣的格口图贴在哪儿。

还有一个坑:很多人把冗余预算全砸在 WCS 双机热备上。我直说,WCS 本机故障的概率,远低于网络链路故障的概率。交换机单点、光纤被叉车铲断、机房空调故障导致交换机过热宕机——我见过的断连,七八成是网络的事。真要花钱,优先级应该是:网络冗余(双上行、环网)> 本地降级逻辑 > WCS 双机。把钱花在刀刃上,别被集成商牵着鼻子走。

这钱花得值不值,看这一个数:算一下你们仓停线一小时的损失,再乘以过去三年断连的总小时数。 如果这个数大于一套降级预案的实施成本(含演练的人力),那这事今天就该立项。如果算出来很小,说明你们运气好——但运气不是预案。

作者:大刘|自动化设备工程师