MES系统架构这些年变了什么 从单体部署到微服务拆分的行业现状
做上位机开发的工程师,这两年大概率都碰到过MES系统的项目需求。以前MES给人的印象是"大而重"——动辄几百万的项目,部署周期半年起步,还得配一整个实施团队驻场。但这两年MES的技术架构发生了不小的变化,轻量化、微服务化、云端部署成了主流方向,对上位机开发的影响也实实在在。
从单体到微服务的架构演变早期的MES系统基本都是单体架构,所有功能模块打包在一个War包或EXE里,数据库共用一套,前端用WinForm或者ASP.NET WebForm。这种架构的问题很明显:改一个模块要重新部署整个系统,一个模块出Bug可能导致全系统不可用。对于产线不停机运行的制造企业来说,这种风险是不可接受的。
现在主流的MES厂商基本都转向了微服务架构。把生产排程、质量管理、设备管理、追溯管理、物料管理这些功能拆成独立的服务,每个服务有自己的数据库实例,通过消息队列和API网关通信。这样做的好处是单个模块可以独立升级和扩容,比如追溯模块查询量大,单独加服务器就行,不影响其他模块。
技术栈方面,Java系用Spring Cloud + Spring Boot的居多,.NET系用.NET Core + Docker + Kubernetes。前端从WebForm换到了Vue或React,部分场景还在用WPF做富客户端。对于做上位机的工程师来说,如果你之前是用C# WinForm做SCADA界面的,现在要对接MES,大概率是通过RESTful API或者gRPC来交互,而不是以前的直接读写共享数据库。
部署方式的分化 私有化还是公有云MES系统的部署方式这两年出现了明显的分化。大型制造企业——特别是军工、半导体、汽车这些对数据安全敏感的行业——依然坚持私有化部署,服务器放在自己的机房里,网络物理隔离。这类项目的MES系统实施成本高,但客户对价格的接受度也高。
另一方面,中小型制造企业开始接受公有云MES。按年付费的SaaS模式,不需要自己买服务器和配运维团队,上线快、成本低。鼎捷、用友、宝信等厂商都推出了云端MES产品,功能比私有化版本精简,但覆盖了工单管理、质量追溯、设备OEE等核心需求。对于上位机开发来说,云端MES的对接方式跟私有化不同——需要通过MQTT或者WebSocket把数据推到云端,而不是走局域网内的OPC DA。
还有一类是混合部署,核心数据和实时控制在本地,统计分析和报表在云端。这种模式在信创背景下也有发展空间——本地服务器跑国产麒麟操作系统和国产数据库,云端用公有云的资源做大数据分析。一些MES厂商已经开始提供兼容麒麟和达梦数据库的版本,满足政府和央企的国产化要求。
SCADA和MES的边界在模糊以前SCADA和MES的分工很清晰:SCADA管设备层的实时监控和数据采集,MES管生产管理层的工单、质量、追溯。但这两年两者的边界在模糊。一些SCADA软件开始内置MES的轻量功能,比如WinCC Unified和Ignition都加了工单管理和OEE统计模块。反过来,MES系统也在往下延伸,直接通过OPC UA从PLC读数据,不再依赖SCADA做中间层。
对上位机工程师来说,这意味着工作内容在扩展。以前你只需要做好HMI画面和PLC通讯就行了,现在客户可能要你在SCADA里直接实现工单下发、良品率统计、甚至简单的SPC控制图。如果你的上位机软件能直接跟MES的API对接,把PLC采集到的数据自动回填到MES工单里,这个方案对客户的吸引力就很大——省掉了一套独立的SCADA系统投资。
数字孪生和3D可视化是噱头还是真需求MES行业*近热炒的概念是数字孪生和3D可视化。不少厂商在MES里加入了产线的3D模型展示,用Unity或Three.js渲染产线布局,实时显示设备状态。看着确实炫酷,但从实际项目经验来看,大部分客户用了一段时间就不看了,还是回到2D列表和趋势图。
3D可视化真正有价值的应用场景是大型车间的设备分布展示和故障定位——几百台设备分布在几万平米的车间里,用3D模型快速定位报警设备的位置,比在2D画面里翻页找要直观。但如果只是几条产线的小车间,2D画面完全够用,没必要上3D。做方案的时候要根据客户的实际场景来判断,别被厂商的demo带着跑。
上位机工程师怎么应对MES架构的变化对上位机工程师提出了新的技能要求。**,得会API对接——RESTful API的调用、JSON数据解析、Token认证,这些是跟MES系统交互的基本功。第二,得了解消息队列——RabbitMQ或Kafka的基本概念,至少知道怎么订阅和消费消息。第三,数据库知识要补——不只是SQL查询,还得会写存储过程和理解ER图,因为跟MES联调的时候经常需要直接查对方的数据库确认数据。
*重要的其实是系统思维。以前做上位机,关注的是单机或者单产线的功能实现。现在MES把整个工厂的数据打通了,你做的上位机系统只是整个数据链中的一个环节。理解上下游的数据流和业务逻辑,才能做出跟MES无缝对接的上位机系统,而不是一个孤立的数据孤岛。