4. 排程数据模型与信息准备

紧急插单能否被快速、准确地重排,取决于系统在插单发生的那一刻,能否立即拿到一组完整、可信、时效足够的数据。很多工厂的重排程失败,并不是算法不行,而是数据模型没有建好:订单和工序混在一张表里,设备能力只写了额定产能,物料齐套状态靠人工口头确认,日历里没有换型时间。结果是排程引擎算出一个“数学上最优、现场无法执行”的计划。本节要解决的核心问题是:为动态重排程建立一套主数据模型,并明确数据采集频率、质量与实时性要求,最终收敛到“重排程最小数据集”。

一、重排程需要的主数据模型

排程的本质是在“资源约束”下对“任务”进行时间分配。因此主数据模型可以围绕六个核心对象展开,它们之间通过明确的引用关系连接,而不是各自孤立。

订单(Order)是需求来源,关键字段包括订单号、客户、需求数量、交期、优先级、订单状态(已确认/已下达/已完工)、是否允许拆分。紧急插单通常表现为一条新订单,或对已有订单交期的强制提前。

工序(Operation)是订单的展开结果,一个订单对应一条工艺路线上的多道工序。关键字段包括工序号、工序名称、所属订单、前后置工序、标准工时、准备时间、可替代设备组、是否关键工序。工序是排程的最小任务单元,重排程时被移动的正是工序。

设备(Machine/Work Center)是资源。关键字段包括设备编号、所属工作中心、额定产能、可用日历、当前状态(运行/停机/维修)、当前在制工序、换型矩阵。设备不能只写“产能=100件/小时”,还要能表达“A产品换B产品需要40分钟”这类换型约束。

物料(Material)决定工序能否开工。关键字段包括物料号、需求量、已到货量、预计到货时间、齐套状态、替代料关系。物料不齐套时,工序即使排上设备也无法执行,因此物料可用时间必须作为工序最早开工时间的约束之一。

人员(Labor)在劳动密集型或需要资质认证的工序中是硬约束。关键字段包括人员/班组编号、技能等级、可操作设备、班次日历、当前任务。若某工序需要持证人员,则人员可用性会直接改变排程结果。

日历(Calendar)是时间的“合法区间”。包括工厂日历、设备日历、班组日历、节假日、计划停机、临时加班。日历决定了每天可排产的时间窗口,是排程时间轴的基础。

工艺路线(Routing)把订单、工序、设备、人员、物料串起来。关键字段包括路线版本、工序顺序、每道工序的设备组、标准工时、准备时间、物料清单(BOM)引用。工艺路线是排程的“模板”,订单下达后按路线展开为具体工序。

这些对象之间的关系可以用下面的结构图表示:订单展开为工序,工序引用工艺路线、设备、人员、物料,设备与人员受日历约束,物料有到货时间约束。

排程主数据模型与重排程约束关系 订单 Order 交期 / 优先级 / 数量 状态 / 是否可拆分 工艺路线 Routing 版本 / 工序顺序 工时 / 准备时间 / BOM 工序 Operation 前后置 / 标准工时 可替代设备组 设备 Machine 产能 / 状态 / 换型矩阵 当前在制工序 人员 Labor 技能 / 资质 / 班次 可操作设备 物料 Material 需求量 / 已到货 预计到货 / 齐套状态 日历 Calendar 工厂 / 设备 / 班组 节假日 / 停机 / 加班 按路线展开 生成工序 占用设备 需要人员 物料齐套约束 可用时间窗口 交期约束 班次约束 重排程时,工序是移动对象;设备、人员、物料、日历共同构成工序的最早可开工时间与最晚可完工时间约束

二、数据采集频率与实时性要求

不同数据的变化速度差异很大,如果全部按“实时”要求采集,成本高且不必要;如果全部按“日结”处理,插单时又会拿到过期数据。合理的做法是按变化频率和影响程度分层。

数据对象典型变化频率建议采集方式重排程实时性要求
订单随时(插单/改期)ERP 事件推送秒级~分钟级
工序进度每完成/开工一次MES 报工分钟级
设备状态停机/维修时变化设备信号或人工报障分钟级
物料到货每日或每批次WMS/收货单小时级
人员班次每日/每周排班系统小时级
日历低频(节假日/停机计划)计划维护天级
工艺路线低频(版本变更)工艺系统天级

判断实时性要求的一个实用原则是:该数据变化后,是否会导致当前排程结果不可执行?如果会,就必须在重排程触发前拿到最新值。例如设备突然停机,若不更新设备状态,排程仍把工序排在该设备上,计划立即失效,因此设备状态必须分钟级。而工艺路线版本变更通常只影响未来新订单,天级同步即可。

三、数据质量要求

重排程对数据质量的敏感度远高于静态排程,因为插单会放大误差。需要重点控制四类质量问题。

  • 完整性:工序缺少标准工时、设备缺少换型时间、物料缺少预计到货时间,都会让排程引擎使用默认值或直接跳过约束。建议在数据进入排程前做必填校验。
  • 一致性:同一设备在 ERP 和 MES 中的编号必须一致;同一物料在 BOM 和库存中的单位必须统一。否则关联查询会漏数据。
  • 准确性:标准工时若长期未更新,排程结果会系统性偏乐观。建议按实际报工数据定期回算,例如每季度用最近三个月实际工时修正标准工时。
  • 时效性:数据有值但已过期,比没有值更危险。例如物料“预计到货”仍是上周的日期,排程会误判齐套。

一个常见陷阱是:为了追求“实时”,把大量高频信号直接接入排程引擎,导致数据抖动。例如设备状态在“运行/待机”之间频繁跳变,若每次跳变都触发重排程,会造成计划频繁变动、现场无所适从。正确做法是设置状态稳定窗口,例如连续 3 分钟保持停机才判定为“停机”,再触发重排程。

四、重排程最小数据集

插单发生时,系统不需要全量数据,但必须拿到一组“最小可用数据集”。这组数据决定了重排程能否在秒级到分钟级内完成。最小数据集可以按“任务、资源、约束、状态”四类组织。

任务类:待排工序列表(工序号、所属订单、前后置关系、标准工时、准备时间)、订单交期与优先级、已开工未完工工序的剩余工时。

资源类:可用设备列表(设备号、所属工作中心、当前状态、当前在制工序及预计完工时间)、可用人员/班组(技能、班次、当前任务)。

约束类:设备日历与班次日历(未来 7~14 天的可用时间窗口)、换型矩阵、物料齐套状态与预计到货时间、工艺路线版本。

状态类:当前排程快照(每道工序的计划开始/结束时间、占用设备)、设备实时状态、工序实际进度。

可以用一个具体的教学示例来理解最小数据集的作用。假设某注塑车间在 14:00 接到紧急插单:订单 X,数量 2000 件,交期次日 18:00,产品需要两道工序——注塑(设备组 M1/M2,标准工时 0.5 分钟/件,换型 40 分钟)和包装(设备组 P1,标准工时 0.2 分钟/件)。系统需要立即拿到:M1、M2 当前在制工序及预计完工时间;M1/M2 的换型矩阵(当前产品换 X 产品需要多久);包装工序的可用人员班次;物料是否齐套。若 M1 当前在制工序预计 16:00 完工,换型 40 分钟,则注塑最早 16:40 开工;2000 件 × 0.5 分钟 = 1000 分钟 ≈ 16.7 小时,跨班次后需按日历扣除休息时间。这些计算全部依赖最小数据集中的字段,缺一项就会导致结果不可信。

落地建议:把最小数据集固化为一个“重排程输入视图”或接口契约,每次插单触发时由系统自动组装,而不是让计划员手工从多个系统导出。视图字段应稳定、可校验,并记录数据时间戳,便于事后复盘“当时用的是哪一版数据”。

总结来说,排程数据模型不是把 ERP 表原样搬过来,而是围绕“工序可执行”重新组织:订单展开为工序,工序绑定设备、人员、物料和日历,工艺路线提供模板。数据采集按变化频率和影响程度分层,质量上重点保证完整、一致、准确、时效。最终收敛到重排程最小数据集,让紧急插单发生时,系统能在分钟级内给出一个现场可执行的新计划。