ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

从MES到若依与SkyWalking:工业互联网落地实战指南

从MES到若依与SkyWalking:工业互联网落地实战指南 做制造业信息化十年MES系统是我日常打交道最多的东西。提到工业互联网很多人第一反应是云平台、大数据、数字孪生但在我的实际工作里最接地气的一件事反而是给车间装一套MES系统。MES这个缩写全称是制造执行系统它处在ERP和车间设备之间是整个工业互联网里承上启下的关键一环。这篇内容我想换个角度不聊那些虚的概念就把MES当做一个真正在用、会出问题、需要持续维护的软件系统来拆讲讲它在工业互联网里到底扮演什么角色怎么用若依这类框架最快搭出一套可用系统以及很多人私下问过的“SkyWalking能不能部署到MES制造系统上面”这类监控问题。如果你正在做制造业信息化或者打算从零搞一套MES这篇文章会比较适用。即使你没有Java后端背景也能从中理解MES落地时最容易被忽略的那些细节。1. 工业互联网语境下的MES它不是ERP的替代品也不是设备监控软件1.1 计划层和执行层之间的“夹心层”很多刚接触MES的人喜欢问MES是不是就是给车间看板用的或者MES能不能直接替代ERP我的回答一般是一句话ERP管的是“该生产什么”MES管的是“实际生产了什么、现在生产到哪一步”。这句话听起来简单但对应到系统架构上MES正好卡在计划层ERP、APS排产和执行层PLC、SCADA、DCS、传感器之间。它要把ERP下达的生产订单拆解成可执行的工单再下发给对应的产线、工序、工位。同时它又要从执行层采集数据把“正在加工”“已完工”“检验合格”“已入库”这些状态实时回传到计划层。这套夹心结构决定了MES系统的核心难题不是功能多而是数据要准、要快、要对得上号。工业互联网平台做数据中台、做数字孪生的时候最底层的可信数据来源往往就是MES。没有MES平台上的设备数据只是一堆参数缺少“生产了什么”的语义。1.2 为什么工业互联网平台离不开MES我做过一个项目客户已经上了工业互联网平台设备联网率也不低但老板要看“今天A车间产出了多少合格品”时居然还要靠Excel统计。原因是平台上的设备数据只有转速、温度、开机时长这类参数没有工单、批次、工序、操作工、检验结果这些制造执行信息。而这些信息恰恰只有MES才有。从另一个方向看工业互联网平台想往下发指令比如根据订单变化自动调整生产节奏命令也得先到MES由MES判断物料够不够、设备是否空闲、人员是否到位然后再驱动现场执行。平台和MES的关系有点像手机上的地图App和车辆导航控制器之间的关系。平台负责全局规划MES负责几十米内的路口级调度。因此谈到工业互联网应用MES是绕不开的底座系统。我个人做系统选型时还有一个体会很多工厂上了MES之后才第一次真正建立起“产品谱系、工艺版本、岗位人员、设备台账”四者之间的映射关系。没有这种映射后面做质量分析和设备预测性维护都缺少基础。2. 把MES拆开看核心功能模块与业务边界2.1 生产工单管理与报工MES最核心的功能一定是从“下达工单”到“完工报工”这条主链路。一般情况下ERP把生产订单传入MES后MES要按工艺路线拆分生成工序级工单分配到车间、班组和具体工位。操作工或者班组长在电脑、PDA或者车间触摸屏上执行“派工、开始、完工、质检、入库”等操作。报工环节非常讲究很多MES项目失败就是失败在报工数据不可信。工人赶产能的时候很容易出现提前报工、批量报工、忘记报工的情况。我在实施过程中通常会在MES里把“报工”和“过站”分开设计。报工代表这个批次在这道工序已经实际完成过站代表这个批次正在向下一个工序流转。如果现场节奏快可以让报工更轻量比如扫描一次SN就自动带出工单号、设备和操作工如果产品涉及多工序协作就需要加“首件检验”和“末件检验”作为强制卡点。这样虽然操作上多了一个步骤但最终数据质量会好很多。2.2 质量管理与正向追溯很多制造业客户上MES的真正驱动力不只是为了效率更是为了满足客户审核和产品追溯要求。MES里的质量管理通常包括来料检验、过程检验首检、巡检、完工检、不合格品处理和追溯。追溯是MES最能体现价值的场景。一盒药、一个汽车零部件、一块锂电池出问题后能快速锁定是哪个批次、哪个环节、哪台设备、哪个操作工避免大规模召回。做追溯设计时我建议把“追溯批次”作为最核心的维度。可以给每批产品定义一个唯一的批次号或者按SN一物一码。每道工序的投入、产出、报废都要绑定到这个批次上同时记录设备号、人员号、物料批次、工艺参数实测值。真正到追溯时就是按组装关系向上找物料批次、向下找出货去向顺着时间轴把工序记录串起来。这里容易踩一个坑物料批次号在ERP、MES和现场标签上不一致。很多工厂现场贴的二维码扫出来是ERP库存批次MES里记录的是内部流转批次两个对不上追到一半就断了。所以我在设计MES时会在主数据层强制做“物料批次映射表”所有扫码枪解析出来的码第一时间通过接口查到这个对账关系再落库。2.3 设备管理与OEEMES里的设备模块通常会和设备数据采集配合。功能层面至少包括设备台账、故障报修、点检保养、停机记录。OEE设备综合效率是工厂管理者非常关注的一个指标但很多MES系统的OEE算得并不严谨。OEE等于可用率时间开动率、表现性性能开动率和质量合格率三者相乘。可实际生产里计划停机和非计划停机会影响可用率节拍时间的变化会影响表现性而质量合格率在统计窗口内如何取数也有争议。我的建议是在MES实施之初就和客户确认设备的“理论节拍”和“时间基准”。否则系统上线后OEE数值会忽高忽低很难被现场接受。还有一点很重要设备状态要尽可能通过PLC或者传感器自动采集尽量不要靠人工录入“开机、停机、待机”因为人工记录往往滞后且不准确。2.4 物料齐套与防错MES如果只是管工序报工其实价值有限。真正让车间觉得“这系统有用”的往往是物料防错和齐套校验。举个实际例子一个装配工位有十几种物料操作工凭经验拿错了一个到后面测试才会发现。MES在这里可以做一个“条码防错”流程扫描工单号系统列出所需物料清单然后逐个扫描物料标签与实时库存和BOM校验全部通过后才允许开工。这样看起来增加了几秒钟的扫码动作但显著降低了错装漏装概率。物料模块还要考虑批次先进先出。ERP只关心库存数量MES要能按批次时间给出“先入库先先用”的提示。有些精细场景还需要锁库一旦某个物料批次在某个工位被扫码使用同一批次其他库存就不能再分配到其他工单避免追溯混乱。3. 从零搭一套MES基于若依框架的技术选型复盘3.1 为什么我会选若依框架来搭MES现在市面上有不少现成的MES产品但如果你有定制化需求或者公司想打造自己的数字化底座从开源框架起步是一个常见路径。我做过几个MES项目都是基于若依RuoYi框架开发的原因主要有三点。第一若依基于Spring Boot Vue技术栈非常主流招人容易二次开发资料多。第二若依自带用户、角色、菜单权限、数据权限、操作日志、定时任务这些基础能力省去了最烦的后台管理功能开发时间。第三若依的前后端分离架构让我能灵活调整部署方式既可以传统部署到车间服务器也可以容器化发到K8s集群方便往工业互联网平台靠。不过我要提醒一句若依框架本身不提供任何MES业务能力。它给你的是一套“毛坯房”MES的工序、工单、库存批次、质检方案这些模块都得自己设计和二次开发。选择若依来做MES看中的是脚手架效率而不是开箱即用。3.2 基于若依的MES模块划分我的做法是把MES拆成几个独立的业务模块在若依菜单和代码结构上尽量保持边界清晰一般至少包括mes_plan工单与排产接收ERP生产订单生成工单维护工序计划。mes_execute执行与报工工位操作、开工完工、过站记录。mes_quality质量与检验质检方案、检验单、不合格品处理。mes_material物料与批次批次管理、齐套校验、防错。mes_equipment设备管理设备台账、点检、维修、OEE计算。mes_trace追溯查询批次追溯、SN追溯、反向追溯。mes_base主数据物料、工艺路线、工序、工位、人员技能、设备、班次。模块之间通过服务调用或者消息事件解耦。前期项目规模不大直接用SpringBoot的feign或者RestTemplate调用也可以。但如果后续要接更多产线、更多工厂我比较推荐引入消息队列来发“工单状态变化”和“质检结果”这类事件避免模块之间强绑定。3.3 数据模型设计的几个关键点基于若依搭MES时数据库设计决定了系统能不能撑住车间高频访问。以下几个关键点值得认真对待。工单号建议用“日期工厂车间编码流水号”的格式不要直接用ERP订单号因为一个ERP订单可能拆成多个MES工单。工单表要有状态机字段至少包括“待下达、已下达、生产中、已完工、已关闭”。每个状态变化都要记录操作人和时间方便后续排查。行业里最常用的两个核心表是“工序流转卡表”和“工序回报卡表”。工序流转卡记录一个批次在当前工艺路线上经过的所有工序每道工序一个节点工序回报卡则记录每个节点上的实际开始时间、结束时间、设备号、人员、数量、合格数、不合格数。这两个表结构稳定而且很容易扩展出追溯和OEE统计。千万不要在生产执行表上做太多事。有些同事喜欢把所有数据都塞到一张大表里以为查询方便结果车间日志一多索引膨胀性能明显下降。我的做法是按时分表或者按生产批次归档历史数据定期迁移到统计库保证实时表的轻量化。3.4 与ERP和设备系统的集成方式MES不是孤岛它要和上游ERP、下游设备数据采集系统对接。和ERP的接口最常见的是生产订单下发、物料库存同步、完工回报回传、成品入库过账。接口方式可以用WebService也可以走REST接口。比较稳妥的做法是增加“接口日志表”每次交互都记录请求报文、响应报文和状态。有人觉得记录报文浪费存储但真正出问题排查时这些日志能帮你节省大量时间。和设备系统的对接根据车间条件差异很大。有的车间已经有SCADA系统可以直接通过数据库视图或API读设备状态有的车间只有独立PLC需要用OPC UA或者Modbus TCP采集。MES在这里的重点不是直接采集所有设备点位而是接入能够反映“设备是否正在生产对应工单”的信号。否则MES里的设备状态和真实生产节拍对不上OEE就是摆设。4. SkyWalking部署到MES系统这个问题的答案比想象中复杂4.1 先回答那个热搜问题SkyWalking能不能部署到MES制造系统上面网络上有不少人在搜“SkyWalking能部署到MES制造系统上面吗”。我的回答是能而且强烈建议做。但要明确一件事——SkyWalking部署的是APM应用性能监控系统收集的是Java应用、微服务、HTTP请求、JVM的性能数据不是MES里的工单数据或者设备数据。它是来监控MES系统本身是否健康的不是用来监控生产设备运行情况的。很多客户一开始分不清这个区别。他们以为上了SkyWalking就能看到产线上的实时状态实际上MES里的“车间实时状态”主要靠MES自身的业务报表和看板来实现。SkyWalking更关注的是你访问“报工接口”时响应时间为什么变慢了数据库连接池是否存在阻塞某个节点是否出现了大量超时。4.2 部署SkyWalking的几种方式与取舍SkyWalking本身是Java写的部署会包含一个OAP ServerObservability Analysis Platform和一个Web UI。最简单的方式是用官方Docker镜像起一套OAP和UI然后在你各个MES服务的启动参数里加上javaagent。模式上可以选择虚拟机部署也可以用Kubernetes Helm方式部署。有一点很重要SkyWalking的Agent对JVM性能有少量开销一般几个百分点以内在生产环境是可以接受的。但不要贪多求全把所有MES微服务都一股脑埋点。我觉得最值得监控的链路有三块ERP接口、MES核心报工接口、设备采集集成服务。先把这三块监控起来绝大多数性能问题都能定位到。还要考虑版本匹配问题。SkyWalking的Agent版本和OAP Server版本最好保持一致否则会出现Agent上报的请求被OAP端丢弃UI上看不到数据的情况。我踩过这个坑升级后端时忘了同步升级Agent结果误以为系统没有流量。4.3 在MES链路里看哪些指标最有价值用SkyWalking监控MES不要只盯着系统平均响应时间一定要学会看“拓扑”和“实例”两个视图。拓扑图能告诉你一次报工请求经过了哪些服务和中间件当响应时间变慢时一眼就能判断瓶颈在应用层、数据库还是外部接口。对MES来说我通常重点关注四类指标接口响应时间尤其是P95和P99而不是平均值。平均值会被大量小请求拉低掩盖慢SQL。数据库连接池活跃数报工高峰期往往从这里开始出问题。JVM堆内存和GC次数特别是老年代GC频繁时整个MES服务都会明显卡顿。消息队列的消费延迟如果MES内部用了MQ解耦消费延迟就等于生产状态更新延迟。关于告警SkyWalking配套的告警规则可以自己调但不要设得太多太敏感。我当时在MES项目里设了一堆规则结果每天告警上百条现场根本没时间处理。后来收敛成三条报工接口P95响应时间超过3秒持续5分钟、数据库实例存活状态异常、消息积压超过500条持续10分钟。告警数量降下来处理效率反而提高了。4.4 如果怕SkyWalking太重可以怎么替代有些中小车间连服务器资源都紧张不想为了监控再起一套OAP实例。这种情况下可以先轻量化起步直接用若依框架自带的Druid监控界面来观察慢SQL配一个Spring Boot Actuator暴露健康检查和指标再结合Linux的top和dmesg排查大多数问题。但当MES服务拆分到多个节点、参与人员有好几套环境协作时我还是建议认真上SkyWalking。它确实能减少排查链路问题的带宽。你可以从单机部署开始OAP和UI各给1个CPU和1GB内存对MES集群的请求量来说通常不会成为瓶颈。5. 真实MES项目踩坑实录与排查技巧5.1 扫描枪数据采集中最常见的坑扫码枪在MES里几乎是标配但它带来的坑比想象中多。最常见的现象是扫码太快系统还没处理完上一单下一单又扫进来导致漏单或重复提交。后来我找到比较稳的做法前端扫码输入框做防重复提交同一SN在2秒内重复扫码直接忽略同时后端接口要加一个基于Redis的分布式锁以SN工单号为key。这样既能防止一个人手抖连续扫两次又能防止多台扫码枪同时提交同一个序列号。条码打印也很讲究。不要只打印文本要把条码的“可读区域”留足边距避免边缘起毛导致识读率低。另外车间环境有油污灰尘普通标签纸很容易磨损导致扫不出来强烈建议使用经过防油处理的热转印标签。这批硬件细节如果不在项目初期定下来上线后会被一线人员骂到怀疑人生。5.2 报工数据与ERP同步重复的问题MES和ERP对接最经典的问题是重复同步。我遇到过这样一个情况MES的报工接口超时了工单状态其实已经写入数据库但接口没有给ERP正常返回。ERP重试机制触发后再调一次系统就重复过账库存和完工数翻了一倍。这个问题的根因是“接口没有做幂等”。解决方式是在MES接口层统一处理幂等前端生成一个唯一请求流水号后端根据“ERP订单号工序编号报工批次”生成hash去重如果发现重复请求直接返回上一次的结果而不是重新执行。做接口对接的人看到这里可能觉得是基本要求但很多MES项目在赶工期时确实会忽略等上线一个月对不上账才回头补。5.3 追溯链条断掉的原因追溯是MES的硬指标最怕中间某一步没有数据查询时形成断链。我见过一个项目用了半年追溯链一直很完整但一次客户投诉后质量部门发现有个半成品批次在某个依赖倒角工序没有记录设备号。原因是当时改装线新增了一台倒角机MES主数据里没有维护这台设备操作工没有对应菜单录入工序。从表面看是录入遗漏本质上是“新设备入网”和“工艺路线变更”缺少一套变更流程。所以做追溯系统光有软件功能不够还要配套管理制度。我通常会在上线时给客户制定一套规则新设备未在MES中创建台账并关联到工艺路线不允许投入生产。哪怕生产再急也要先走主数据审批否则后面追溯查出问题责任说不清。5.4 车间网络不稳定导致系统不可用车间现场网络环境往往比办公室复杂电磁干扰、金属货架屏蔽、AP漫游切换等问题都会导致PDA、扫码枪掉线。有人觉得问题出在MES服务器宕机其实是无线网络性能差请求超时。这种情况不能用传统机房思路去解决而是要在部署阶段做好无线覆盖测试。我一般会在车间里沿着货架和工位走一遍信号强度测试重点覆盖扫码密集区域。同时MES客户端要支持离线缓存。比如平板端的报工页面网络断开时先把数据存在本地队列网络恢复后自动上传。没有这个机制断网十分钟现场可能就乱成一锅粥。还要注意带宽占用。车间看板大屏如果持续从MES拉取实时数据会和扫码抢带宽。我的做法是给看板订阅一个单独的数据服务推送频率控制在1秒一次不要用前端的setInterval去频繁调数据库接口。6. 从MES到智能制造下一步我们该做什么6.1 边缘侧数据采集与轻量化MES很多工厂现在的MES还是人录入为主设备采集只覆盖了部分工位。下一步往智能制造走瓶颈不在软件功能而在数据采集的可靠性和实时性。理想的状态是在车间机台旁边部署一台边缘网关连接设备的PLC或传感器数据先在边缘侧解析、缓存、断点续传再通过MQTT或者OPC UA送入MES。这样一来即使车间到机房的网络抖动边缘网关也能把数据缓存几分钟不会丢失关键的生产节拍数据。轻量化的思路也值得关注。现在有一些想法是让MES“下沉”把一部分低频应用放边缘比如把标准的报工逻辑做成容器镜像边缘节点提供轻量的运行时环境工厂离线也能正常运行。工业互联网平台则负责汇总多工厂数据做跨地域的绩效对比和远程分析。两者结合既保留了车间的高可用性也能向上汇聚数据。6.2 打通MES到工业互联网平台的数据链路MES里积累的数据如果只停留在车间报表里其实有点可惜。真正有价值的数据链路是MES中的工单、物料批次、质检结果加上设备采集的工艺参数一起汇入工业互联网平台再叠加算法模型做质量的闭环优化。我做过一个案例客户把MES里的焊接参数和质检结果合并分析发现某个工艺区间内虚焊率明显偏高。原来MES一直保存着这些数据但没有跨工序分析直到平台侧做了关联才发现。这种场景以后会越来越多。所以你在规划MES时最好提前预留标准API和数据导出能力。哪怕暂时不做大数据平台也要让MES能按时间维度导出工序记录、设备参数和质检结果至少用数据仓库工具跑一跑分析。否则到真想分析的时候历史数据不全再好的算法也白搭。6.3 给初入行做MES的朋友几句实在话如果你刚接触MES或者准备从后端开发转做制造系统有三点建议值得参考。第一先下车间不要只坐在办公室画原型。哪怕只是跟线走一下午你就能理解为什么“扫码位置不合理是系统上线最大的阻力”。操作工的手势习惯远比系统设计文档里的漂亮流程图重要。第二重视主数据层面的一致性。物料编码、批次规则、设备编号、人员工号所有多系统的公共字段都要在项目初期定一套对账机制。这类基础数据一旦乱掉后面质量追溯和报表统计都会失之毫厘差以千里。第三不要迷信一套MES包打天下。不同车间的自动化程度、人员计算机水平完全不一样。能落地的MES往往是用一个简洁核心主线保证了生产主数据的准确再根据车间特点做简单明快的现场交互。让一线员工觉着“扫码是真的有用而不是多了一道麻烦”系统才能活得久。我个人这两年越来越觉得MES本身的软件研发难度不算高真正考验人的是对生产业务的理解。用一个流程导图或低代码平台也能做出一套像模像样的看板但要让报工数据长期保持真实可靠必须靠业务规则、数据约束和现场习惯一起起作用。如果你也在折腾MES希望这些经验能帮你少踩几个坑。最后再分享一个小技巧每次上线新车间之前我习惯让实施人员在车间现场用真实扫码枪完整走一遍“来料-上线-首检-报工-入库”全流程记录每一步的实际耗时。只要这个记录中出现超过10秒的卡顿优化界面优先级要排到新功能之前。一个响应慢半拍的系统在数字化推进中留下的损伤往往要到很久之后才显现出来。
返回列表