3. MES工单核心对象建模
在多工厂协同场景下,MES 工单不是一张孤立的“生产任务单”,而是一组相互引用的核心对象构成的图。工单是执行主体,工艺路线定义“怎么做”,BOM 定义“用什么”,工序是路线与工单结合后的执行节点,物料是投入与产出,资源是承载工序的产能单元。理解它们的数据结构与关系,是后续跨厂派工、齐套校验、进度回传的基础。
一、六个核心对象的数据结构
工单(WorkOrder)通常包含:工单号、物料编码、计划数量、已完工数量、计划开工/完工时间、状态(创建/下达/开工/完工/关闭)、来源(ERP 计划、返工、试制)、目标工厂与产线。工单号是全局唯一键,跨厂协同时建议采用“工厂码+日期+序列”的编码规则,例如 SH01-20250612-0007。
工艺路线(Routing)描述制造某物料的标准加工顺序,包含:路线版本、适用工厂、工序清单。每个工序记录工序号(如 10、20、30)、工序名称、标准工时、可选工作中心类型、是否关键工序、检验要求。路线是“模板”,不绑定具体工单。
工序(Operation)是工单与路线结合后的实例,包含:工单号、工序号、计划数量、报工数量、合格/不合格数量、状态、实际开始/结束时间、执行工厂与工作中心。工序是 MES 中最小可报工、可派工、可追溯的执行单元。
物料(Material)包含:物料编码、名称、规格、单位、物料类型(原材料/半成品/成品)、批次管理标识、是否关键件。物料编码是 BOM、工单、库存之间的共同语言。
BOM(Bill of Materials)描述父件与子件的用量关系,包含:父件编码、子件编码、单位用量、损耗率、生效版本、适用工厂。BOM 是齐套校验和领料计算的依据。
资源(Resource)包含:资源编码、类型(设备/工装/人员/工作中心)、所属工厂、可用日历、额定产能。资源是工序排产与产能约束的落点。
二、对象之间的关系
工单引用一个物料作为产出,引用一条工艺路线作为加工路径,引用一份 BOM 作为用料清单。工单按路线展开为多条工序,每条工序占用一个或多个资源。BOM 的父件对应工单产出物料,子件对应需要领用的物料。因此,工单是“物料 + 路线 + BOM + 资源”的汇聚点。
三、关键外键与版本控制
对象之间靠外键连接,跨厂协同时必须明确外键的“工厂归属”。例如工单表字段 material_code 指向物料主数据,routing_version 指向路线版本,bom_version 指向 BOM 版本。工序表通过 work_order_no + operation_no 唯一确定一条工序记录。
版本控制是易错点。工单下达时应“快照”路线与 BOM 版本,而不是运行时动态取最新版本。否则当工艺工程师修改路线后,已下达工单的工序结构会漂移,导致报工数据对不上。建议在工单表冗余存储 routing_snapshot 与 bom_snapshot,或建立工单-路线版本关联表。
四、一个可落地的建模示例
假设上海工厂接到工单 SH01-20250612-0007,产出物料 FG-A100(成品 A),计划数量 500 件。其工艺路线版本 RT-A100-V3 包含三道工序:10 下料、20 装配、30 测试。BOM 版本 BM-A100-V2 包含子件 RM-STEEL-01(用量 2.5 kg/件,损耗 3%)和 RM-BOLT-02(用量 8 颗/件,损耗 1%)。
据此可计算领料需求:钢材 = 500 × 2.5 × (1+3%) = 1287.5 kg;螺栓 = 500 × 8 × (1+1%) = 4040 颗。工序 20 装配占用工作中心 WC-ASM-01,标准工时 12 分钟/件,则理论产能占用为 500 × 12 / 60 = 100 小时。这些数值是示例假设,用于说明对象之间的计算关系。
五、建模检查清单
| 检查项 | 判断标准 | 常见问题 |
|---|---|---|
| 工单-物料外键 | 工单产出物料存在于物料主数据 | 物料编码大小写不一致 |
| 路线版本快照 | 工单下达后工序结构不随路线修改而变 | 运行时取最新版本导致漂移 |
| BOM 版本快照 | 领料计算基于下达时版本 | 版本切换后用量对不上 |
| 工序唯一性 | 工单号+工序号唯一 | 重复工序号导致报工覆盖 |
| 资源归属 | 工作中心属于执行工厂 | 跨厂引用导致排产失败 |
| 数量口径 | 计划、报工、合格、不合格口径一致 | 单位不统一(件/箱) |
掌握这六个对象的结构与关系后,后续的跨厂派工、齐套校验、进度汇总才有统一的数据基础。工单是协同的锚点,工序是执行的粒度,物料与 BOM 决定齐套,资源决定产能,路线决定顺序——五者缺一不可。