3. APS系统功能架构与数据模型

APS(Advanced Planning and Scheduling,高级计划与排程)不是“把ERP的工单拿来排个序”那么简单。它要在一个可计算的数据模型上,同时回答三个问题:做什么(订单与需求)、怎么做(工艺路线与BOM)、用什么做、什么时候能做(资源、日历、物料与工序约束)。这三类信息在APS中不是并列堆放的表格,而是被组织成一张“对象—关系—约束”的网络。理解这张网络,是判断一个APS项目能否落地、排程结果是否可信的前提。

一、APS功能架构:从主数据到排程引擎再到执行反馈

从功能架构看,APS通常分为四层。最底层是主数据层,承载物料、BOM、工艺路线、资源、日历、工厂模型等相对稳定的对象;其上是需求与订单层,包括销售订单、预测、计划订单、生产订单及其交期、优先级、数量;再上是排程引擎层,负责把订单按工艺路线展开为工序网络,在资源与日历约束下求解开始/结束时间;最上层是协同与执行层,向MES下发工序派工、接收报工与异常,并把实际进度回写到APS形成滚动重排。四层之间靠“对象标识”和“时间/数量”两类数据贯通,而不是靠人工导表。

二、核心主数据对象及其在APS中的组织方式

物料与BOM是需求展开的基础。物料主数据在APS中至少需要物料编码、计量单位、提前期、最小/最大批量、是否关键料等字段。BOM则定义“父件—子件—用量—损耗率—生效/失效日期”的层级关系。APS用BOM做MRP式的毛需求展开,但与传统MRP不同的是,APS会把子件需求挂到具体工序的投入时点上,而不是只挂在订单上。例如某装配件A由B、C各1件组成,B需在装配工序开始前2小时到位,C需在开始前0.5小时到位,这个“时点差”就是BOM与工艺路线耦合后产生的约束。

工艺路线是APS排程的骨架。一条工艺路线由若干工序组成,每个工序包含:工序号、工序名称、工作中心/设备组、标准工时(准备时间+单件时间)、排队时间、传送时间、可选替代资源、以及前后置工序关系。APS把工艺路线展开成一张工序网络图,节点是工序,边是“完成—开始”或“开始—开始”的时序约束。这里有一个容易出错的点:工艺路线中的“工序号顺序”不等于排程顺序,真正决定顺序的是工序间的约束类型。例如热处理与机加工之间可能是“开始—开始+滞后”,而装配与测试之间是严格的“完成—开始”。

资源是产能的载体。APS中的资源通常分为单机、并行机、人员、模具、工装、运输工具等。每个资源需要定义产能(如每小时可加工件数)、可用数量、效率系数、以及可加工的工序集合。资源与工序之间是多对多关系:一个工序可在多台设备上加工,一台设备可加工多道工序。APS在排程时会在“可选资源集合”中做选择,选择依据通常是换型时间、设备优先级、负荷均衡策略。

日历决定“时间轴上的可用窗口”。APS至少需要三类日历:工厂日历(工作日/节假日)、资源日历(班次、检修、停机)、以及物料日历(供应商到货窗口)。日历不是简单的“几点到几点上班”,而是以可用时间区间的形式参与计算。例如某设备周一至周五8:00–20:00可用,其中12:00–13:00午休,则排程引擎会把工序时长映射到这些区间上,跨午休自动顺延。日历的粒度直接影响排程精度:粗到“天”只能做日计划,细到“分钟”才能做工序级排程。

工序约束是APS区别于普通排产工具的关键。除前后置关系外,还包括:同一资源同一时刻只能加工一个工序(资源独占)、同一订单的工序必须按顺序、物料齐套才能开工、模具数量限制、人员技能匹配、以及“最小间隔/最大等待”等工艺约束。这些约束在数据模型中表现为硬约束(不可违反)和软约束(尽量满足,如交期优先、换型最少)。排程引擎的本质,就是在硬约束边界内优化软约束目标。

APS 主数据对象组织关系与排程数据流 需求与订单层 销售订单 预测/计划订单 生产订单 交期/优先级 数量/工艺版本 订单是排程的输入对象,携带“做什么、做多少、何时要” 排程引擎层 工序网络展开 资源选择与分配 日历映射与顺延 约束求解与优化 引擎在硬约束边界内,输出每道工序的开始/结束时间与资源占用 执行协同层 工序派工下发 MES报工回传 异常与停机反馈 滚动重排触发 实际进度回写后,APS重新计算受影响工序,形成闭环 主数据层(被上层共享引用) 物料 / BOM 编码·用量·损耗·生效期 工艺路线 工序·工时·前后置约束 资源 设备·人员·模具·产能 日历 班次·检修·可用区间 工序约束 资源独占·物料齐套·最小间隔·技能匹配 虚线=引用 实线=数据流

三、对象之间的关键关系:不是表,而是图

把上述对象放在一起,会形成几组必须显式建模的关系。第一组是订单—工艺路线—工序:一个订单引用一条工艺路线,工艺路线展开为多道工序,每道工序有唯一标识(订单号+工序号)。第二组是工序—资源:多对多,且带“优先级”和“换型时间矩阵”。第三组是工序—物料:通过BOM和工序投入时点关联,形成“齐套约束”。第四组是资源—日历:资源可用性由日历裁剪,日历变更会直接改变排程结果。第五组是工序—工序:前后置、重叠、并行等时序约束。这五组关系共同构成APS的“可计算模型”。如果其中任何一组只用Excel维护、没有唯一标识和版本管理,排程结果就会在重排时漂移。

四、一个可运行的数据组织示例

假设某机械加工车间接到订单SO-2024-001,产品为“减速箱壳体”,数量20件,交期第5天18:00。其工艺路线为:OP10下料(锯床,准备15min,单件3min)、OP20粗铣(CNC-01,准备20min,单件8min)、OP30精铣(CNC-02,准备25min,单件10min)、OP40钻孔(钻床,准备10min,单件5min)、OP50清洗(清洗机,准备5min,单件2min)。BOM显示每件壳体需毛坯1.05件(含5%损耗),毛坯由下料工序产出。资源日历为两班制8:00–20:00,CNC-02在第3天上午有4小时预防性检修。APS排程时,会先把20件按批量拆成“下料20件→粗铣20件→精铣20件→钻孔20件→清洗20件”的工序链,再把每道工序的工时按资源日历映射到具体时间窗。若CNC-02检修落在精铣工序的计划区间内,引擎会自动把精铣顺延到检修结束后,并检查是否影响交期。这个过程中,订单、工艺路线、资源、日历、BOM、工序约束六个对象全部参与计算,缺一不可。

判断一个APS数据模型是否合格,可以用一个简单问题检验:给定一张新订单,系统能否在不人工补录任何“排程专用字段”的情况下,自动展开工序、匹配资源、避开停机、检查物料齐套并给出可执行的开始/结束时间?如果能,说明主数据对象及其关系已经组织到位;如果不能,缺的往往不是算法,而是对象之间的关联字段和版本约束。

五、数据模型落地时的常见陷阱

第一,工艺路线版本混乱。同一物料存在多个工艺版本时,订单必须绑定“生效版本”,否则重排时可能引用到已失效路线。第二,资源产能用“天”而不是“分钟”。日产能无法支撑工序级排程,会导致同一台设备在一天内被排入超过实际可用分钟数的任务。第三,日历只维护了工厂日历,没有维护资源日历。设备检修、模具保养、人员请假如果不进入资源日历,排程结果就是“纸面可行”。第四,BOM与工序投入时点脱节。子件需求如果只挂在订单上,APS就无法判断“某工序开工前物料是否齐套”,齐套约束形同虚设。第五,工序约束只建了前后置,没建资源独占和最小间隔。这会让排程结果出现同一时刻同一设备加工两个工序的荒谬情况。

因此,APS实施中真正耗时的工作,往往不是调算法参数,而是把上述主数据对象梳理干净、建立唯一标识、明确版本规则、补齐对象之间的关联字段。数据模型是排程引擎的“地基”,地基不稳,再好的求解器也只能输出看似精确却无法执行的计划。