4. 任务执行工程基础
在 AMR 调度系统中,任务不是一条简单的“下发—执行—完成”指令,而是一个被持续跟踪、可中断、可恢复、可回滚的受控对象。任务执行工程的核心,就是把物理世界的不确定性收敛为调度系统可管理、可观测、可干预的状态流转过程。理解任务生命周期、任务类型、执行流程、状态机模型与异常处理机制,是后续实现任务编排、资源分配与故障恢复的基础。
一、任务生命周期:从创建到归档的五个阶段
一个 AMR 任务从产生到结束,通常经历创建、排队、分配、执行、终结五个阶段。每个阶段都有明确的进入条件、持有资源和退出条件,调度系统必须在每个阶段维护任务上下文,包括任务 ID、起点、终点、优先级、载具要求、超时阈值、依赖任务等。
- 创建:由 WMS、MES、人工终端或调度策略生成任务,写入任务表并生成全局唯一 task_id。
- 排队:任务进入待分配队列,按优先级、截止时间、区域约束排序,等待可用 AMR 与路径资源。
- 分配:调度器选定 AMR,锁定目标点位与路径段,任务状态变为 ASSIGNED,并下发执行指令。
- 执行:AMR 按路径行驶、举升/放下货架、等待电梯或通过闸机,期间持续上报位置与子状态。
- 终结:任务完成、取消或失败后,释放 AMR、点位、路径与电梯资源,写入执行日志并归档。
二、任务类型:不同业务语义决定不同执行约束
AMR 调度系统中的任务类型直接决定执行流程的分支。常见类型包括搬运任务、充电任务、回库任务、盘点任务、清洁任务和人工干预任务。搬运任务通常有起点和终点,充电任务有目标充电桩,回库任务有固定库位,盘点任务可能要求 AMR 在指定区域低速巡航并采集数据。
| 任务类型 | 典型参数 | 执行约束 | 异常重点 |
|---|---|---|---|
| 搬运任务 | 起点、终点、载具、优先级 | 路径可达、点位空闲、载具匹配 | 目标点被占用、货架丢失 |
| 充电任务 | 目标充电桩、电量阈值 | 充电桩可用、AMR 可自主对接 | 充电桩故障、对接失败 |
| 回库任务 | 目标库位、AMR 编号 | 库位空闲、路径不冲突 | 库位被占、路径封锁 |
| 盘点任务 | 区域、速度、采集周期 | 区域清场、低速巡航 | 区域有人、采集超时 |
三、执行流程与状态机模型
任务执行流程可以用有限状态机建模。状态集合通常包括 CREATED、QUEUED、ASSIGNED、MOVING、WAITING、EXECUTING、COMPLETED、FAILED、CANCELLED。事件包括分配成功、到达起点、到达终点、等待超时、人工取消、设备故障等。状态迁移必须满足守卫条件,例如只有 ASSIGNED 状态才能进入 MOVING,只有 MOVING 到达终点后才能进入 EXECUTING。
状态机实现时,建议把状态迁移写成表驱动或事件驱动,而不是散落在业务代码中的 if-else。每次迁移记录 from_state、to_state、event、timestamp、operator 和 reason,便于复盘与审计。
task_state_transition:
task_id: T20240518001
from: MOVING
to: FAILED
event: PATH_BLOCKED_TIMEOUT
reason: "前方通道被临时占用超过 30s"
timestamp: 2024-05-18T10:23:41+08:00
resource_release:
amr: AMR-017
point: P-1024
path_segment: SEG-88
elevator: null
四、异常处理机制:分类、检测、恢复与升级
异常处理不是简单的“报错重试”,而是按异常类型采取不同策略。常见异常可分为资源类、路径类、设备类、业务类和人工类。资源类包括目标点被占用、充电桩不可用;路径类包括路径封锁、交通死锁;设备类包括 AMR 失联、举升失败、电量过低;业务类包括货架不存在、任务被取消;人工类包括现场人员拦截、急停触发。
- 检测:通过心跳超时、状态上报缺失、传感器告警、调度器超时计时器发现异常。
- 隔离:立即冻结任务状态,禁止继续下发新动作,防止异常扩散到其他任务。
- 恢复:按策略选择重试、换车、换点、降级执行或人工介入。
- 升级:超过重试次数或影响范围扩大时,升级为告警工单并通知运维。
五、案例与复盘:目标点被占用导致的连锁阻塞
某仓库搬运任务 T-8801 从 A 区到 B 区,AMR-017 到达目标点 P-1024 后发现该点位被一台故障 AMR 占用。若系统只做简单重试,AMR-017 会持续等待,导致后方路径段 SEG-88 拥堵,进而影响另外三个任务。正确做法是:检测到目标点占用后,任务进入 WAITING,触发点位占用异常;调度器在 10 秒内尝试重新分配备用点位 P-1025;若备用点位也不可用,则释放 AMR-017 并让其返回最近等待点,同时将任务升级为人工处理。
任务执行工程的落地要点可以归纳为:生命周期定义清楚,任务类型区分明确,状态机迁移可审计,异常策略可配置,资源释放可验证。只有把任务当作有状态、有资源、有异常路径的受控对象,AMR 调度系统才能在真实仓库环境中稳定运行。