一、今天的课程安排
今天按照以下顺序学习:
业务课 -> 建模课 -> 技术课 -> 实战场景 -> 验收复盘 -> 明日衔接
学习过程中,我围绕订单、工单、工序、设备采集、排班和系统架构提出了一些问题。本文不只复述课程笔记,也把这些问题和思考一起整理进来。
二、MES 到底解决什么问题
MES 是 Manufacturing Execution System 的缩写,中文叫制造执行系统。它位于 ERP(Enterprise Resource Planning,企业资源计划)和车间现场之间,重点负责生产执行过程。
ERP 更关注企业层面的计划和资源,例如销售订单、采购、库存、财务和总体生产计划。MES 更关注车间现场:任务有没有下发、工序有没有执行、做了多少、质量是否合格、设备是否正常以及产品能否追溯。
一个 MES 系统需要回答:
- 今天要生产什么?
- 由哪个工单执行?
- 要经过哪些工序?
- 每道工序在哪个工位完成?
- 做了多少、合格多少、不良多少?
- 使用了哪台设备、由谁操作?
- 出现问题时能否追溯到工单、批次、工序、人员、工位和设备?
因此,MES 的核心不是简单维护几张生产资料表,而是围绕工单和工序形成一条连续的生产执行、质量管理和过程追溯链路。
三、LiteMES 第一版的业务范围
本次学习设计的 LiteMES 面向小型离散制造企业,第一版覆盖以下模块:
| 模块 | 主要职责 |
|---|---|
| 基础资料 | 产品、物料、工序、工艺路线、产线、工位、设备 |
| 生产计划 | 生产订单、工单生成、工单下发 |
| 现场执行 | 扫码开工、暂停、报工、完工 |
| 质量管理 | 质检、不良登记、不良处理 |
| 设备采集 | 接收 TCP Socket(传输控制协议套接字)模拟设备信号 |
| 追溯查询 | 按批次、工单或条码查看生产履历 |
| 看板统计 | 工单进度、设备状态、质量统计 |
| 系统集成 | 模拟 ERP 订单下发和完工回传 |
当前版本暂时不做复杂 APS(Advanced Planning and Scheduling,高级计划与排程)、完整 WMS(Warehouse Management System,仓储管理系统)、PLC 梯形图、机器视觉和运动控制。
四、建模:产品、工序和工艺路线
1. 产品:生产什么
产品是生产目标,例如:
产品编码:P-CTRL-001
产品名称:控制盒组件
产品类型:装配类产品
生产单位:件
追溯方式:批次追溯
产品会被生产订单引用,订单可以表达“生产控制盒组件 20 件”。
2. 工序:做什么
工序是一个可以复用的标准生产动作,例如备料、装配、测试和包装。
工序通常不是某个产品专属。同一个“测试”工序可能被多个产品使用,但不同产品在测试参数、标准工时、质检要求和设备资源上可能不同。
3. 工艺路线:按什么顺序做
工艺路线是针对某个产品定义的标准生产方法,它把多个工序按照要求的顺序组合起来:
控制盒组件标准路线
10 备料
20 装配
30 测试
40 包装
因此可以这样理解:
产品:生产什么
工序:做什么
工艺路线:按什么顺序做
工序是可复用的基础定义,工艺路线则绑定具体产品。
五、最小生产场景:控制盒组件的四道工序
为了把概念串起来,今天建立了一个控制盒组件的最小场景:
| 顺序 | 工序 | 主要输入 | 主要输出 | 质量关注 |
|---|---|---|---|---|
| 10 | 备料 | 工单、物料清单、待领物料 | 备料完成记录、物料批次绑定 | 确认物料齐套 |
| 20 | 装配 | 已备料物料批次 | 装配记录、报工数量 | 确认装配完成 |
| 30 | 测试 | 已装配半成品、测试设备 | 测试结果、质检记录、不良记录 | 关键质量检查点 |
| 40 | 包装 | 测试合格批次、包装材料 | 包装记录、成品状态 | 确认成品可交付 |
这四道工序不是四张孤立的菜单,而是一条生产过程:上一道工序的输出成为下一道工序的输入。
六、生产订单和工单有什么区别
这是今天重点讨论的问题之一。
生产订单属于计划层,表示企业计划生产什么、多少以及什么时候交付。例如:
生产订单 PO-001:控制盒组件 100 件,交期为 9 月 10 日
工单属于执行层,表示现场具体要执行哪一批生产任务。一个生产订单可以拆成多个工单:
工单 WO-001:产线 1,40 件
工单 WO-002:产线 2,30 件
工单 WO-003:晚班,30 件
拆分原因可能包括:
- 多条产线同时生产;
- 不同班次生产;
- 不同生产批次;
- 不同交期;
- 不同设备或现场资源;
- 需要分别进行批次追溯。
所以,“工单是产品要生产多少个”这个理解还不完整。工单除了数量,还要描述生产批次、计划时间、执行产线、工位、工艺路线快照和执行状态。
七、订单审核和工单生成
订单进入 MES 后,通常要经过审核。当前 LiteMES 第一版中的订单审核,主要确认:
- 产品是否存在并处于启用状态;
- 计划数量是否大于零;
- 交期等基础信息是否完整;
- 产品是否有启用的工艺路线;
- 当前订单是否具备进入生产计划的基本条件。
审核不通过时可以退回,并记录退回原因。例如:
退回原因:产品没有启用的工艺路线
退回和取消不是一回事:
- 退回:订单需要修改后重新审核;
- 取消:订单已经不再生产,业务生命周期终止。
当前版本建议审核通过后,由计划员手动点击生成工单。因为审核通过只表示订单具备生产条件,不一定表示现在就要立刻投产,计划员还可能需要确认批次、产线、班次和生产时间。
基本流程是:
创建订单 -> 审核订单 -> 生成工单 -> 下发工单 -> 现场执行
未审核订单不能生成工单,已取消订单也不能生成工单。
八、为什么要区分路线步骤和工单工序
工艺路线中的步骤是标准生产方法,工单工序是某张具体工单实际要执行的步骤。
Product 产品
-> Route 工艺路线
-> RouteStep 路线步骤
-> Process 工序
ProductionOrder 生产订单
-> WorkOrder 工单
-> WorkOrderStep 工单工序快照
工单生成时,系统根据当前启用的工艺路线复制出工单工序快照。
例如,一月份的工单采用:
备料 -> 装配 -> 测试 -> 包装
二月份标准路线增加了“老化”工序。这个变化不应该让一月份已经完成的历史工单突然多出一道工序。因此,工单必须保存当时实际采用的路线快照。
这也是历史生产数据能够稳定追溯的关键。
九、设备和操作台在工序中的作用
工序、工位和设备不是同一个对象:
工序:要做什么动作
工位:在哪里执行
设备:使用什么生产或采集设备
操作员:由谁实际执行
例如测试工序可能在测试工位完成,并使用测试设备;备料和包装可能主要依靠操作台和人工操作。
并不是所有设备都是联网设备,所以设备管理中还要区分:
- 是否属于某条产线或某个工位;
- 是否启用在线采集;
- 使用什么通信协议;
- 连接地址和端口是什么;
- 当前设备是否运行、故障、检修或离线。
设备连接正常不代表设备一定可以生产。例如:
连接状态:已连接
设备状态:故障
生产可用性:不可用
不同设备采集的数据也不一样。测试设备可能采集电压、电流、温度和测试结果,装配设备可能采集扭矩、角度和循环次数,普通操作台可能没有自动采集点。
因此,设备基础资料、设备连接配置和采集点配置应该分开管理,不能把所有采集字段写死在设备主表中。
十、设备信息采集为什么重要
设备采集的核心目的不是单纯“把设备数据存起来”,而是让 MES 感知和验证现场真实发生了什么。
如果只靠人工填写,系统可能只能看到:
测试 20 件,合格 19 件,不良 1 件
接入测试设备后,还可以记录:
- 使用了哪台设备;
- 测试发生的时间;
- 测试电压、电流、温度等参数;
- 设备当时是否报警;
- 哪个工单和批次使用了这台设备;
- 哪位操作员执行了测试。
设备采集主要有四个价值:
- 判断设备当前是否允许开始相关工序;
- 自动记录生产过程和关键参数;
- 根据测量值辅助质量判断;
- 将设备、工位、工单、工序和批次连接到追溯链路。
当前 LiteMES 第一阶段使用 TCP Socket 模拟器接收设备状态和测试数据。采集服务接收数据后,将设备信号关联到当前工位、工单、工序和批次。
十一、生产过程中设备故障怎么处理
设备临时检修或故障,不应该直接等同于取消工单。更合理的处理过程是:
设备运行
-> 设备故障
-> 当前工序暂停
-> 维修等待、切换备用设备或调整任务
-> 恢复生产或进入质量处理
设备状态可以影响不同层次的业务:
- 新工序开工前:禁止在不可用设备上开始生产;
- 当前工序执行中:暂停受影响的工序,保留已完成数量;
- 故障可能影响质量时:隔离相关产品或批次,安排复检;
- 有备用设备时:由生产主管决定切换,并保留切换记录。
设备故障通常不直接取消工单,因为设备可能在维修后恢复,或者工单可以转移到备用设备。工单取消应该表示生产任务本身不再执行。
十二、APS、人员技能和排班的边界
APS 适合多订单、多设备、有限产能、频繁插单和复杂换型的企业。它负责在资源受限的情况下安排生产顺序。
可以把 ERP、APS 和 MES 简单区分为:
ERP:生产什么、生产多少、什么时候交付
APS:有限资源下具体怎么排
MES:现场实际执行了什么
当前 LiteMES 不实现复杂 APS,只做基本的工单生成和现场执行。
企业级 MES 通常需要知道实际操作员、工位和岗位资格,但完整的班次安排、技能匹配和人员调度不一定由 MES 自己负责,也可能由 WFM(Workforce Management,人员或劳动力管理系统)、ERP 或 APS 提供。
当前版本可以在工单或执行记录中保留:
- 计划开始和结束时间;
- 产线和工位;
- 班次信息;
- 实际操作员;
- 实际开工和完工时间。
暂不实现自动排班、技能档案和人员与设备的联合优化。
十三、B/S 和 C/S 如何配合
C/S 是 Client/Server,即客户端/服务器结构。实际企业 MES 通常采用 B/S 为主、局部 C/S 或本地采集服务配合的混合架构。
订单、工单、质量、追溯和看板
-> B/S 浏览器系统
设备、串口、扫码枪、测试仪和打印机
-> 本地采集服务或专用客户端
采集服务
-> 与 MES 服务端通信
B/S 的优势是部署集中、升级方便,适合计划员、生产主管、质量人员和管理人员使用。缺点是浏览器直接访问本地设备和工业硬件不方便,并且比较依赖网络。
C/S 或本地采集服务更适合设备通信、串口、扫码枪、打印机和专用工位交互,也可以设计本地缓存和断线重连。但它需要维护客户端版本和运行环境。
当前 LiteMES 的技术边界是:
LiteMES.Web
-> Web API 和页面入口
LiteMES.Application
-> 用例编排、DTO(Data Transfer Object,数据传输对象)和事务边界
LiteMES.Domain
-> 实体、枚举、状态机和核心业务规则
LiteMES.Infrastructure
-> EF Core、数据库访问和外部接口实现
LiteMES.Collector
-> 设备采集服务和 TCP Socket 模拟接收
十四、从订单到追溯的完整链路
今天最终建立的最小业务流程是:
创建产品和物料
-> 配置工序和工艺路线
-> 创建生产订单
-> 审核订单
-> 生成工单和工单工序快照
-> 下发工单
-> 生成或绑定批次
-> 备料
-> 装配扫码开工和报工
-> 测试与设备数据采集
-> 质检
-> 不良处理
-> 包装
-> 工单完工
-> 工单关闭
-> 查询批次追溯
假设测试 20 件产品,得到 19 件合格、1 件不良:
测试 20 件
-> 19 件合格 -> 进入包装
-> 1 件不良 -> 返修、报废或让步接收
如果返修后重新测试合格,也要保留原始测试结果、不良原因、返修记录和重新测试结果。
还要区分工单“完工”和“关闭”:
- 完工:生产数量和必要质量条件已经满足;
- 关闭:生产和质量数据已经确认结束,工单正式归档。
十五、今天的学习总结
今天最重要的收获,是把 MES 从一组模块名称理解成一条业务主线:
订单 -> 工单 -> 工序 -> 报工 -> 质检 -> 追溯
同时明确了以下设计原则:
- 工序是可复用的标准生产动作;
- 工艺路线绑定产品并定义工序顺序;
- 生产订单属于计划层,工单属于执行层;
- 工单生成时保存工艺路线快照;
- 设备采集要关联工位、工单、工序和批次;
- 设备故障优先暂停受影响工序,不直接取消工单;
- 第一版先做批次追溯,不急于实现单件追溯;
- 第一版不做复杂 APS、技能管理和自动排班;
- B/S 负责业务管理,本地采集服务负责设备通信。
十六、明天继续学习什么
第 2 天将进入产品、物料、工序基础资料建模,重点回答:
产品和物料为什么要分开?
BOM(Bill of Materials,物料清单)解决什么问题?
BOM 和工艺路线为什么不能混在一起?
产品、物料和工序分别如何设计实体表?
如何完成文档、数据表、实体、接口、页面五项对齐?
今天的结论可以浓缩成一句话:
MES 不是简单记录“生产完成了没有”,而是把订单、工单、工序、人员、设备、质量和批次串成一条可执行、可验证、可追溯的生产闭环。


被折叠的 条评论
为什么被折叠?



