
上周去一家连接器工厂协助排查 MES 排产不生效的问题车间主任拿着对讲机在产线边上急得团团转计划员在办公室盯着 ERP 订单干瞪眼——订单明明下了产线却不知道先做哪个。这个场面我见过太多次了。问题不在于企业有没有系统而在于计划层和执行层之间隔了一层“黑匣子”MES制造执行系统就是用来填平这层鸿沟的。这篇内容写给三类人刚接手 MES 项目的制造业 IT 运维人员、想搞清楚车间到底需要什么的车间主管、还有准备转行做 MES 开发或实施的软件工程师。我会从概念讲起再延伸到选型落地、技术实现、监控运维和上线后最常见的那些坑尽量用“车间里能听懂的话”把整条链路说清楚。1. MES 到底是什么制造现场的操作系统很多人第一次接触 MES 的时候会被厂商的 PPT 绕晕。什么精益制造、数字孪生、全流程追溯一堆概念砸下来最后也没搞明白它和 ERP 有什么区别。换个角度理解就简单了ERP 管的是“该做什么、花了多少钱”MES 管的是“现场到底在做什么、做到哪一步了、做得怎么样”。它是连接 ERP 计划层和车间设备控制层之间的那个中间调度层。1.1 从一张生产工单说起你去车间里随便找一个工位问操作工今天干什么活。没有 MES 的时候他可能翻出一张纸质派工单或者看一眼墙上白板有了 MES他的工位屏上会自动跳出当前要做的任务扫码枪扫一下物料条码系统就能告诉他这道工序的工艺参数、图纸编号、检验要求。这个过程背后其实是一条清晰的数据流ERP 接到客户订单后生成生产订单MES 把生产订单拆成多个生产工单按照设备负荷排产再把工单下派到具体工位。操作工点“开始生产”算开工做完扫描报工系统记录下用了多少时间、消耗了多少物料、谁做的、用的是哪台设备。质检员在旁边录入首检和巡检结果最后产品装箱扫描序列号绑定客户订单。这样一圈走下来MES 实际上把车间里原本靠口头传达和纸质单据流转的信息变成了可查询、可统计、可追溯的电子数据。老板想知道这批订单做到哪了不用再打一圈电话打开看板一看就知道哪个工单还在排队、哪个已经在返工、哪个已经入库了。1.2 MES 的五大核心能力市面上的 MES 产品模块很多功能树拉出来能写两页纸但真正在车间里产生价值的是下面五个核心能力。第一生产排程与派工。它解决“先做哪个、用哪台设备做”的问题。不需要做到 APS高级排程系统那么复杂但至少要把插单、急单、设备故障导致的任务调整在线完成。现实情况是很多工厂还在靠 Excel 排产排程员的个人经验成了瓶颈MES 至少能把规则沉淀下来。第二工单执行与报工。这是 MES 运转的底座。每个工单从哪里开始、经过了哪些工序、每一步是谁做的系统都要如实记录。扫码报工是最常见的方式简单说就是“干完活扫一下”但为了防止串工序、漏报工又要在软件层面做防错校验。第三质量追溯。这个能力在汽车零部件、电子、医疗器械行业是刚需。客户要求批量追溯甚至单件追溯一旦出问题要能查到那个批次用了哪批原材料、哪些设备加工过。没有 MES 的时候追溯一场客诉要翻三天纸档记录有 MES 后一条 SQL 就能查出来。第四设备监控与点检。采集设备状态、计算开机率、统计故障停机时间顺便把每天/每周的设备点检电子化。很多工厂的设备数据其实非常丰富但散落在 PLC可编程逻辑控制器里没人去看MES 的价值是把这些数据转成 OEE设备综合效率这类管理层看得懂的指标。第五绩效与统计分析。产量、直通率、不良率、工时达成率这些数据如果能实时来自报工记录车间管理者和老板就可以在每天班前会上看到真实数字而不是月底从 Excel 里再统计一遍。提示入门阶段别被 MES 的功能清单吓到先跑通报工、追溯、看板这三条主线就够了其他功能都是在这三条线上长出来的枝叶。2. 选型和落地从业务梳理到系统上线选型之前先梳理业务这是 MES 项目跟普通 IT 项目最大的区别之一。一个标准的进销存软件买回来按培训操作就行但 MES 必须面向你车间里的实际工位、设备、工艺和人员来配置。同一家软件公司做出来的 MES在五金厂和电子厂的用法完全不一样。2.1 先梳理车间业务再谈软件我在项目里经常先给客户做一次“车间体检”流程大概是这样的画出从原材料入库到成品出库的业务流程图标出每个工序节点的输入输出确定唯一数据源比如工单号、批次号、序列号到底以谁为准明确数据采集点哪些位置必须扫码哪些位置要自动采集定义追溯粒度是批次追溯还是单件序列号追溯最后把流程表单发给车间主管确认避免实施后返工。这个阶段最容易被忽略的是“追溯粒度”。很多工厂嘴上说要做单件追溯但产线上根本没有打序列号的能力标签打印又频繁出错最后只能退回批次追溯。与其这样不如前期就定清楚普通物料批次追溯关键安全件单件追溯这样既控制了成本又满足了客户要求。业务梳理的产出应该是一份包含了工序字典、物料编码规则、设备台账、班次模型的《业务流程说明书》。别小看这份文档后续 MES 的数据库表结构设计、界面字段设计全都基于它来落定。没有这份东西直接开建系统多半会在上线前一个月推翻重来。2.2 数据采集与设备对接怎么做车间数据的采集方式决定了 MES 的实施难度和体验好坏。我把常见的方式列个表你可以对着自己车间的情况勾选采集方式适用场景特点与注意事项扫码枪 / 手持 PDA工序流转、上料确认、成品入库成本最低、易上手注意扫码枪编码格式要统一否则中文乱码很头痛工位触摸屏 人工录入检验数据、不良原因、返工记录灵活但依赖操作工配合界面必须傻瓜化PLC / 传感器采集自动化设备状态、产量计数、故障告警数据准确但开发量大需要设备端支持通讯协议RFID料箱追踪、工装夹具管理、AGV 调度抗污染能力强适合周转频繁的容器单价略高于条码OPC UA / Modbus 通讯数控机床、注塑机、贴片机等智能设备能拿到主轴转速、功率等工艺数据但老设备常缺通讯端口我建议中小工厂从扫码枪和工位屏起步先让数据“转起来”再逐步打通 PLC 和 OPC UA。一上来就想把所有设备都自动采集项目周期会无限拉长极易烂尾。2.3 与 ERP、WMS 的数据边界MES 不是一个孤立系统它至少要跟 ERP 和 WMS仓储管理系统打交道。很多项目出问题不是 MES 本身不行而是系统之间的数据边界没划清楚。通常的边界是这样的ERP 负责物料主数据、BOM物料清单、工艺路线、生产订单和生产成本MES 负责工单执行、质量数据、在制品状态、设备数据和人工工时WMS 负责成品入库和原材料出库。MES 做完工单后要把物料消耗、人工工时、完工数量回传给 ERPERP 才能算成本、做结算。别让 MES 直接改财务数据也别让 ERP 去管工位级别的报工。落地时我一般推荐用“接口表”的模式ERP 把要下发的数据写到中间表MES 定时拉取MES 要回传的数据也写到中间表ERP 定时读取。这个模式虽然土但排查问题特别方便数据对不上时打开数据库看一眼就知道是哪一步断了。3. 技术视角拆解如何搭一套轻量级 MES我注意到最近很多人搜索“基于若依框架的 MES”。若依是国内很流行的 Java 快速开发平台底层是 Spring Boot 加 Vue自带用户权限、菜单管理和代码生成器。用它来做 MES 的底座确实是一条性价比很高的路子。3.1 为什么很多人选若依框架做底座如果你找个成熟的商用 MES 厂商来报价动辄几十万起步而且要按工位、按模块额外收费。对于预算有限、又希望系统贴合自己车间流程的中小工厂找一个开源框架做二次开发是现实的选择。若依能火起来一是因为 Spring Boot Vue 的生态成熟招人容易二是它已经帮你把登录、用户管理、部门管理、操作日志、定时任务这些东西做好了MES 项目组可以把精力集中在车间业务逻辑上。单从 MES 的角度看若依还有几个很受用的能力代码生成器能快速生成单表的增删改查页面物料台账、客户信息、设备台账这类基础资料模块可以直接生成后改一改支持多数据源可以连 MySQL 以外的实时数据库自带部门数据权限天然适合“车间主任只能看本车间数据”的管控要求。任何一个框架都有学习成本选若依的前提是你手里有 Java 团队能看懂这个框架的代码并做二次开发。如果没有开发团队还是回过去选成熟的商用产品更稳妥。3.2 核心模块设计与权限模型结合我自己做过的项目用若依做 MES核心模块一般可以拆成这六块基础资料物料、工序、工艺路线、设备、工装、员工。计划管理生产订单导入、工单拆分、排程派工。执行管理开工、报工、转序、不良、返工、拆批合并。质量管理检验计划、首件检验、巡检记录、不合格品处理。设备管理点检保养、故障报修、运行记录。看板报表工位任务推送、车间大屏、日产量报表。权限模型上我建议在若依默认的角色权限之上增加一层“班组-设备组”的数据范围。具体说就是每个用户挂在一个班组下工单派工只能看到本班组范围内的设备质检员能看到全车间但不允许修改别人报工记录。这样既能防止车间之间互相看到数据又避免了权责不清导致的质量数据篡改问题。3.3 工位终端和车间大屏的实现思路轻量级 MES 的工位终端一般就是一个装浏览器触屏模式或者安卓 App 的平板。报工请求通过 HTTP 接口发给后端核心接口像这样RestController RequestMapping(/api/shopfloor) public class ShopFloorController { PostMapping(/report) public Result report(RequestBody ReportVO report) { // 核心业务校验工单状态、记录报工明细、计算完工数量 reportService.saveReport(report); // 通知大屏和相关工位刷新数据 wsService.pushStatistic(workshop:update, report.getWorkshopId()); return Result.success(); } }这里有几个容易忽略的点报工接口必须是幂等的否则操作工双击“保存”就会产生两条报工记录记录生产时间时不要用操作工本地时间要用服务器时间防止设备时钟不准导致数据错乱。车间大屏的数据不建议让前端每秒轮询查数据库更好的做法是把日报、OEE、在制量这类统计结果存在 Redis 缓存里每 30 秒左右重算一次大屏通过 WebSocket 接收变更通知。4. 监控与运维SkyWalking 能部署到 MES 制造系统吗回答一下大家搜到的问题SkyWalking 能部署到 MES 制造系统上面吗能而且很适合。MES 本质是一套 Java Web 应用SkyWalking 是开源的应用性能监控APM系统它跟车间里的机械设备完全不冲突部署在应用服务器侧用来盯 MES 服务自身的健康状态。4.1 APM 在 MES 里看什么先要明白 MES 系统出问题时的典型表现车间那台工位屏转圈圈转很久、扫码上传半天没反应、大屏数据不刷新了、夜班的时候某个功能的接口突然变慢。如果没有监控工具运维只能靠用户反馈和事后翻日志非常被动。SkyWalking 这类 APM 能帮你直观看到某个工单查询接口平均耗时是多少、最慢的时候出现在哪个时间段、瓶颈是在数据库还是在远程调用、有没有线程池阻塞。我比较关注 MES 里的这几项指标服务拓扑图里各模块之间的调用关系是否出现大量超时P99 延迟是否突破 3 秒红线工位终端超过 3 秒用户就会开始暴躁慢 SQL 有没有集中在某张业务大表上JVM 内存曲线是否在涨有没有频繁 Full GC消息队列相关的异步任务积压情况。MES 的并发量虽然不像互联网电商那么夸张但它的特点是强交互、低容错。生产报工这个动作如果卡住整条产线都要停下来等影响远比一个网页慢要严重所以 APM 监控对 MES 运维来说不是锦上添花而是刚需。4.2 部署 SkyWalking 的组件和资源SkyWalking 本身由三个部分组成Java Agent 探针用来收集服务端应用的数据OAP 服务端用来接收、聚合和存储这些数据UI 界面用来展示链路和指标。小规模 MES比如一两百个工位、应用服务器两台部署建议如下应用服务器上装 Java AgentOAP 单独一个节点2 核 4G 起步存储默认最简单的是 H2但生产环境不要用常见用法是 Elasticsearch或者 MySQL 存储模式小规模使用。用 MySQL 做存储时需要把对应版本的 mysql-connector-j 驱动放到 OAP 的 libs 目录下并在 application.yml 里把 storage.selector 改为 mysql然后初始化数据库脚本。如果你们公司不允许引入额外的存储组件MySQL 模式是更轻的选择。但要注意 SkyWalking 的 OAP 查询能力在 MySQL 模式下会弱一些日志保留周期也建议调短避免磁盘空间涨太快。索引和清理策略要在运维手册里提前写清楚否则上线半年后磁盘被监控数据塞满那就很尴尬了。4.3 Spring Boot 服务接入 Agent 的实操假设你的 MES 服务就是标准的 Spring Boot 应用接入方式非常简单一行启动参数搞定。下面是以若依框架为基础的 MES 服务启动命令示例java -javaagent:/opt/skywalking/agent/skywalking-agent.jar \ -Dskywalking.agent.service_namemes-server \ -Dskywalking.collector.backend_service10.10.20.5:11800 \ -Xms2g -Xmx2g \ -jar mes-server.jar几个注意点Agent 版本和 OAP 服务端版本的大版本要一致否则探针上报的数据可能解析异常MES 和 OAP 之间的 11800gRPC端口和 12800HTTP端口要在防火墙里放行如果 MES 和 SkyWalking 分别在车间内网和办公网要评估网络策略是否允许上报数据穿透。监控部署完成后别着急去看那些花花绿绿的拓扑图先自己打几个典型场景来验证登录一次、做一个报工、查一次工单列表确认 SkyWalking 里能对应看到这些链路和耗时再交接给运维。5. 上线后的常见问题与排查实录MES 上线只是开始真正考验人的是在车间里跑起来的头三个月。我把自己踩过的坑和一些高频问题整理成一份速查表基本覆盖了大多数 MES 项目的上线初期阵痛。5.1 我的排查顺序车间报障“MES 卡顿”或者“报工不上”我一般会按固定顺序排查先看服务日志和 SkyWalking 错误链路确认是不是接口报错然后看数据库慢查询日志重点查工单、报工、追溯这几张大表再看 Redis 缓存是否失效导致缓存击穿比如大屏查询直接打到数据库接着看网络层车间里的无线 AP 是否老化、扫码枪连接的 WiFi 是否丢包最后看前端终端环境浏览器版本太老或者工位屏内存不够也可能造成卡顿假象。这个顺序的核心原则是“先服务端后终端”。车间报障的时候操作工往往会一口咬定是“系统坏了”但很多时候问题出在无线网络覆盖盲区或者工位平板硬件老化上。作为实施方你能做的就是提供一套可排查的证据链而不是跟现场人员争辩。5.2 高频坑汇总下面这些坑我基本都亲历过写出来供你提前防范现象根因解决建议工单无法下派到工位ERP 里的物料编码和 MES 基础资料不同步上线前做一次物料主数据全量同步并建立增量同步任务扫码枪扫出来是乱码扫码枪的编码格式与系统不一致统一设置扫码枪为 UTF-8输入法切到英文模式操作工双击报工产生重复数据报工接口没有做幂等处理加唯一索引前端置灰按钮后端加防重校验大屏数据不刷新WebSocket 连接被负载均衡断开添加心跳重连机制或改成前端定时拉取缓存工位屏提示登录过期触屏设备不便输入密码为工位终端配置免登录的 Token 模式绑定设备编号标签打印位置错位浏览器预览缩放导致模板偏移用固定尺寸模板禁止页面缩放最好走专用打印组件报表统计数据和现场对不上报工时间和班次切换时间不一致明确班次归属规则按“工序完工时间”归属班次数据库频繁锁表报工事务里插入了过多历史数据拆分事务先更新工单状态再异步写入明细表5.3 一个可复制的 MES 上线案例如果你依然觉得抽象我分享一个比较典型的电子组装厂案例200 个工位主要做 PCBA 代工客户要求批次追溯。项目用的是轻量级 MES一期三个月上线。第一个月主要做基础资料导入、网络改造和工位终端部署扫码枪全部换成支持 UTF-8 编码的型号第二个月先只跑首件检验和关键工位报工其余工序仍然沿用纸质流转单保证产线不停第三个月把质量追溯和返工流程跑通同时上了车间大屏。这个项目的关键点在于把握好节奏。第一、二个月虽然系统只有部分工序在用但数据链已经真实跑通管理者能通过看板看到效果操作工也逐渐适应扫码报工的操作习惯。到了第三个月质量追溯数据已经积累起来了再做追溯查询演示老板自然愿意继续投入做二期设备联网。反过来我见过很多项目一上来就是“全工序强制卡控”结果某个工位扫码设备不好用整条产线就停在那里等 IT 处理车间主任第二天就把系统停了。对于没上过 MES 的工厂一定记住四个字先松后紧。结尾一点踩坑后的心里话搞了这么多年的 MES我最大的体会是这个系统的技术难点远没有业务习惯的转变难。很多项目最终没跑起来不是因为 SQL 写得不够优化也不是因为框架选得不好而是没能让现场操作工和管理者真正信任这套数据。操作工不想每做一次工序就多点两次屏幕班组长觉得系统里的报表和自己手头的 Excel 对不上于是系统慢慢就被晾在一边了。想让 MES 真正落地除了把系统功能做好更重要的是走到车间里去听操作工抱怨看他们手上的动作把界面做得足够“不添麻烦”。系统上线以后也一定要有人长期在车间巡回收集反馈每周迭代一次界面和流程。技术只是起点让现场的人愿意用它才是 MES 项目真正结束的那一天。