开篇:为什么 20GWh 电芯工厂必须上 MES

第 1 / 14 章
开篇:为什么 20GWh 电芯工厂必须上 MES

事故现场:三起 0.8 亿级的停产事故

2025 年 11 月,南方某 20GWh 锂电池电芯工厂(下称电芯厂 A)连续三周发生三件让厂长连夜召开停产复盘会的事故。

事故 1:客户退货一整柜化成容量不够的电芯。 一家车厂在产线装配后做 Pack EOL 测试,发现某批次的 280Ah 半固态电芯 1C 容量仅有 265Ah,比规格下限 275Ah 还少 10Ah。整柜 672 颗电芯退货,直接损失 86 万元,外加一次严重的客户投诉。事后复盘发现:化成工序当周换了一台新的化成柜,工程师误将充电截止电流从 0.05C 改为 0.07C,导致化成不充分。问题不在于化成柜没数据——化成柜每小时往 SCADA 推一次电流电压——而在于没人把这数据与容量规格做闭环比对,更没人知道这柜电芯流向了哪条 Pack 产线。

事故 2:OEE 88% 但产能少交付了 12 万颗。 月度运营会上,OEE 报表显示涂布机 OEE 月均 88%(业界标杆水平),但下工序辊压线当月却因"涂布极片缺料"等料 437 小时,相当于辊压线 18 天没生产。深挖发现:OEE 算法把"待料停机"归到了"计划停机",与"换卷""保养"合并,可用率被高估了 11 个百分点。所谓 88% OEE 实际是 77%,按 60PPM(每分钟 60 颗)节拍,辊压一个月少出 12 万颗极片,整厂产能少交了 12 万颗电芯。

事故 3:召回 36 颗电芯查了 11 天。 客户报一颗化成后 14 天的内短路,要求工厂按"同一物料批次"召回。工厂从成品 SN 反查化成批次、注液批次、卷绕工序、涂布极片、正极粉料批次,用了 11 天、5 个跨工序会议、12 张 Excel 才圈定 36 颗可能受影响的电芯。期间客户每天一个电话问"查到哪了",工厂回复"还在查"——这次召回的公关成本比 36 颗电芯本身贵 5 倍。

三起事故的共同根因:电芯厂的产线设备是数字化的,数据也都被 SCADA 采上来了,但数据之间不串、与业务不连、与质量不闭环。厂长开停产复盘会时问了一句话:「我们花了两千万搞的数字化,怎么连化成柜参数改了都没人知道?」。

排查:为什么 ERP 看不见产线,SCADA 又缺业务上下文

电芯厂 A 已有 SAP ERP(管订单、采购、财务)+ Ignition SCADA(管设备实时状态),两套系统都"在线",为什么仍然挡不住这三起事故?我们做了一次系统化梳理:

维度 SAP ERP Ignition SCADA 缺口
**数据颗粒度** 工单、BOM、销售订单 设备秒级点位 工单与设备的对应关系缺失
**时间颗粒度** 日/班次 1 秒 中间没有 1 分钟级的工序节拍
**业务上下文** 财务成本、销售订单 设备状态机 "设备在跑哪个工单的哪个工序的哪个料号"无定义
**追溯方向** 物料批次→工单 设备→点位 没有正反向双向追溯
**质量判定** 不做 不做 没有工序级 in-process 质量判定
**设备协议** 不接 OPC DA/Modbus 缺 OPC UA 的信息模型与 SECS/GEM 的半导体级模型

根因归纳:ERP 是财务-订单视角,看不见工序与设备;SCADA 是设备-实时视角,看不见订单与物料;中间缺一个承上启下的执行层——ISA-95 把它定义为 Level 3 的 Manufacturing Execution System / Manufacturing Operations Management,简称 MES / MOM。

更糟的是,电芯厂 A 的 SCADA 是按车间独立部署的,涂布、辊压、卷绕、化成四个车间四套 SCADA,数据格式不统一(同一"设备状态"字段,涂布是 RUN/STOP/IDLE,化成是 1/2/3),跨工序追溯必须靠人肉 ETL。

为什么 ERP 厂商不直接把 MES 加进去?因为 MES 是强工业属性的——它要懂 ISA-88 配方、懂 SECS/GEM 设备协议、懂工序节拍、懂批次三链、懂 SPC Cpk、懂 OEE 三因子——这些都不是财务软件该背的。所以业内有句话:ERP 想做 MES 是"财务想做工业",做不深;SCADA 想做 MES 是"自动化想做管理",做不全。 这就是 MES 在 L3 独立存在的商业理由。

底层原理:ISA-95 五层金字塔与 MES 的"三明治"位置

ISA-95 模型 ISA-95(IEC 62264)是国际自动化学会给制造系统集成画的金字塔:

Level 4  ERP / 业务计划      订单、采购、财务、销售       天/周
Level 3  MES / MOM 执行     工单、工序、批次、OEE、追溯   小时/分钟/秒
Level 2  SCADA / 监控       设备状态、PID、报警          毫秒/秒
Level 1  PLC / 控制器       DCS、PLC、伺服               毫秒
Level 0  设备 / 物理资产    涂布机、辊压机、化成柜        实时

MES 在 L3,向上对接 ERP 的销售订单与生产订单(BOM、工艺路线、计划完工时间),向下对接 SCADA 的设备状态与点位。它不取代 ERP 也不取代 SCADA,而是把它们的数据"翻译"成可执行的业务动作:

  • ERP 的"工单 1000 颗型号 X 电芯" → MES 把工单展开成 7 段工艺的派工单(涂布 1000 片、辊压 1000 片、化成 1000 柜…),把派工单下到具体设备具体班次。
  • SCADA 的"涂布机速度 60 m/min、张力 20 N" → MES 把这秒级点位卷成"工单 WO-20251109-001 在涂布工序、班次 A、设备 BC-001 上的实时产出节拍 = 0.95 片/min、累计下料 480 片"。

ISA-95 还定义了 MES 的九大功能模块(不一定要全做,但该做全做):

  1. 生产调度(Production Scheduling)——把 ERP 工单拆成工序级派工单
  2. 生产派工(Production Dispatching)——把派工单下到设备/班组
  3. 生产执行管理(Production Execution Management)——工序起止、暂停、改派
  4. 数据采集(Data Collection)——从 SCADA/设备采集点位与事件
  5. 质量管控(Quality Management)——工序级 SPC、Cpk、不合格处置
  6. 物料管理(Material Management)——批次收发、库存、过期预警
  7. 维护管理(Maintenance Management)——设备保养计划、停机编码
  8. 绩效分析(Performance Analysis)——OEE、Cpk、批次合格率
  9. 人员管理(Personnel Management)——班组、技能、操作授权

电芯厂 A 的事故 1 缺的就是 #5 质量管控(化成截止电流变更未触发 SPC 异常),事故 2 缺的是 #8 绩效分析(OEE 三因子口径错),事故 3 缺的是 #6 物料管理 + #4 数据采集(批次三链没有打通)。

正确姿势:MES 的边界——做什么、不做什么

MES 项目最容易翻车的地方不是技术不够,而是边界没划清:要么把 SCADA 的事揽进来做(点位全往 MES 推,把时序库当 SCADA 历史库用),要么把 ERP 的事揽进来做(在 MES 里跑 MRP 排产、跑成本核算)。我把这条线明确划出来:

MES 该做的:

  • 工单到工序的展开(不接 ERP 工单计划本身)
  • 派工单到设备/班组的下发(不取代 SCADA 设备控制)
  • 工序起止事件登记(设备状态由 SCADA 推,MES 只叠加业务上下文)
  • 批次三链追溯:料-工序-成品的双向追溯(核心!)
  • 工序级 SPC、Cpk 计算(不做整批合格率,那是 QMS 的事)
  • OEE 三因子(可用率/表现率/质量率)+ 停机编码
  • Andon 呼叫与闭环(不做设备保养计划,那是 EAM 的事)
  • 时序数据分级存储:秒级点位 / 分钟级 KPI / 小时级 SPC

MES 不该做的:

  • 不做财务成本核算(ERP 的事)
  • 不做销售订单管理(ERP 的事)
  • 不做 MRP 物料需求计划(ERP 的事,APS 是另一回事)
  • 不做设备级 PID/PLC 控制逻辑(L1-L2 的事)
  • 不做 EAM 设备预防性保养(专业 EAM 的事)
  • 不做 QMS 全质量文件管理(DHR、批记录、CAPA——专业 QMS 的事)
  • 不做 WMS 立体库货位管理(专业 WMS 的事,MES 只接 WMS 出入库事件)

这套边界做完,电芯厂 A 的三起事故都能闭环:

  • 事故 1:化成截止电流参数变更触发工艺参数变更审批,未经审批的参数不让下发设备;SCADA 采到电流值与下发参数对比,超出 SPC 控制线触发自动 hold,不让这柜料流向下工序。
  • 事故 2:OEE 三因子按 ISA-95 TR88.03 标准口径——计划停机只算"计划内+已批准"的,待料属于"未计划停机"扣可用率,OEE 数字回归真实。
  • 事故 3:批次三链在物料收发时强制扫 SN/批次号,工序产出也强制登记 SN,反向追溯一次 SQL 0.5 秒圈出 36 颗受影响电芯。

数据说话:电芯厂 A 的数字化成熟度评分

为了把"该上什么"说清楚,我们给电芯厂 A 的 7 段工艺做了 ISA-95 L3 成熟度评分(5 分制):

工艺段 派工下发 批次追溯 SPC/Cpk OEE 口径 Andon 闭环 综合
涂布 2 1.5 1 2 0 **1.3**
辊压 2 1 1 2 0 **1.2**
分切 2 1 0 2 0 **1.0**
卷绕 2 1.5 1.5 2 1 **1.6**
注液 2 1 0.5 2 0 **1.1**
化成 1 2 2 1.5 1 **1.5**
分容 1 2 2.5 1.5 1 **1.6**
全厂 1.7 1.4 1.2 1.8 0.4 **1.3**

全厂综合 1.3/5——典型的"有 SCADA 没 MES"状态:派工靠纸质流转单(2 分是因为有人在敲键盘下发,但没工单-设备对应关系),追溯靠 Excel(1.4 分),SPC 只在化成分容两段做(1.2 分),OEE 口径不统一(1.8 分看似最高但口径错),Andon 几乎为零(0.4 分)。

对标业内:成熟度 4 分以上的标杆工厂(如宁德溧阳工厂、亿纬锂能荆门工厂)事故 1 当场就拦下、事故 2 OEE 口径合规、事故 3 召回追溯 < 30 分钟。所以 1.3 → 3.5 是这一期 MES 项目要拉到的目标线。

面试怎么答:MES 是什么、为什么不是 ERP、国内 MES 失败率高的根因

问:MES 是什么?跟 ERP、SCADA 什么关系?

答:MES 是 ISA-95 L3 的制造执行系统,向上接 ERP L4 把生产订单展开成工序级派工单,向下接 SCADA L2 把设备秒级点位叠加业务上下文变成工单-工序-料号-班次四元组的实时产出节拍。它做 ERP 不该做(工序节拍、批次三链、SPC)和 SCADA 做不全(工单展开、追溯、OEE 口径统一)的事,是"承上启下"的执行层,不是财务层也不是控制层。

问:为什么 ERP 不直接把 MES 加进去?

答:三个原因:① 业务上下文错位——ERP 是财务视角,关心成本、订单,看不到工序节拍和设备状态机;② 协议栈差距——MES 要懂 OPC UA 信息模型、SECS/GEM 半导体级设备协议、Modbus TCP、PLC 寄存器映射,ERP 厂商不背这些;③ 时间颗粒度错位——ERP 是天/班次级,MES 是秒/分钟级,时序数据量差三个数量级,强行合并会拖垮 ERP 主库。

问:国内 MES 失败率高的根因是什么?

答:① 边界没划清——把 SCADA 历史库或 ERP MRP 揽进来做,结果两边都做不好;② 设备协议不上心——很多 MES 项目 80% 经费花在前端看板、20% 花在采集,最后数据采不上来或采错;③ 批次三链不打通——只做正向追溯(料→成品),不做反向追溯(成品→料),召回时秒级响应变 11 天人工查;④ OEE 口径随意——计划停机/非计划停机不分,1C 容量等规格上下限不进 SPC;⑤ 不上时序库——把秒级点位写 PostgreSQL,3 个月就锁表;⑥ 忽视 ISA-88 工艺路线——把工艺路线当 BOM 平铺,不建模工序间的"前置-后置-替代料",订单改派时全链断。这六条是我们这次 MES 项目要正面回答的。

落地清单:项目立项、团队、技术选型、连载路线图

立项决策:

  • 项目代号 cell-mes(cell-mes-practice 仓库)
  • 工厂规模 20 GWh/年,电芯型号 280Ah 半固态 + 314Ah 高镍
  • 工艺段 7 段:涂布-辊压-分切-卷绕-注液-化成-分容
  • 上线目标:6 个月内全厂 7 段工艺 L3 成熟度从 1.3 → 3.5
  • 商务边界:MES 不取代 SAP 也不取代 Ignition,做 L3 的执行、追溯、质量、OEE、Andon

技术选型(经过 2 周选型对比的结论):

层 选型 理由
后端 Spring Boot 3 + MyBatis-Plus + Java 21 团队栈延续,Java 21 虚拟线程适合 OPC UA 长连接
关系库 PostgreSQL 16 工单、BOM、批次三链、SPC 控制图主键库
时序库 Apache IoTDB 1.3 国产时序库,对工业点位 native 支持,可与 gansu-ems 同栈
缓存 Redis 7 Andon 状态机 + 限流 + 派工单草稿
设备协议 OPC UA + Modbus TCP + SECS/GEM 涂布/辊压走 OPC UA,化成柜走 Modbus,少数进口设备走 SECS
前端 Vue3 + Vite + Element Plus + ECharts 看板与表单
部署 Docker Compose + Nginx 单工厂部署,不上 K8s(运维成本)
租户隔离 行级(tenant_id)+ schema(高敏感) 多工厂租户

14 章连载路线图:

章 标题 核心问题
ch00 开篇:为什么 20GWh 电芯工厂必须上 MES 业务背景、ISA-95、MES 边界
ch01 业务建模:7 段工艺 + ISA-95 设备层级 + 工单/BOM/工艺路线三件套 工艺路线树、BOM 替代料
ch02 架构解剖:分层架构 + 时序/关系双库 + 多租户 采集-执行-业务-看板四层
ch03 工程化:Spring Boot 3 + MyBatis-Plus + Flyway 多租户骨架 项目结构、租户上下文
ch04 OPC UA + Modbus 采集层 涂布 OPC UA、化成 Modbus、卷绕 SECS
ch05 工艺路线与 BOM 展开 派工单级联、替代料选择
ch06 批次追溯三链 正反向追溯、召回边界
ch07 OEE 与停机分析 三因子口径、停机编码
ch08 SPC 与 Cpk 化成容量控制图、西电规则
ch09 Andon 与质量闭环 呼叫分级、8D 闭环
ch10 化成柜容量预测 Early Warning、拦截策略
ch11 IoTDB 分级存储 秒级/分钟级/小时级归档
ch12 Vue3 看板与简易排产 Andon 看板、APS 优先级
ch13 面试总纲 30 题 九大模块答题框架

专栏定位:这套连载不是"开源 MES 改造"(如 gansu-ems 改 OpenEMS),而是自研商用 MES 项目骨架 + ISA-95/IEC 62264 工业标准事实——每章会给出真实的 Controller/Service/Repository 代码骨架、真实的 SQL 表结构与查询、真实的 SPC/OEE 算法实现。源代码会随章节发布到 cell-mes-practice 仓库,关键算法在测试里有黄金数据兜底。

电芯厂 A 的三起事故不是孤例,是过去十年中国新能源制造狂奔的缩影。这一期 MES 项目要做的不是给设备接根线,而是给厂长一双能看清全厂的眼睛——产线在跑什么工单的什么工序的什么料号、哪柜料被自动 hold、哪台设备的 Cpk 在漂移、哪个班次的 Andon 还没人接。这本连载是我作为该项目的架构师兼实施负责人,记录下来的 13 章实战。