“你们的集成架构图怎么画出来全是直线?中间既不进总线,也不走平台?”这句话,我在MES项目汇报会上被甲方信息化负责人问过不止一次。每次被问,我都得在现场从头解释一遍。解释得多了,我慢慢发现,这个问题背后藏着的,其实是MES项目里最难讲清楚、也最容易被误解的一个事实:点对点不是技术上的退步,而是车间现场环境下被反复验证过的理性选择。
这篇内容不聊抽象概念,只讲我这些年做MES实施、做工厂集成看到和经历过的真实情况。相信能给正在规划MES集成的制造企业IT、MES实施顾问,以及那些在“集成架构评审”上纠结要不要上总线的朋友一些参考。
1. 先聊清楚:MES里的“点对点”到底连了什么
1.1 一个典型MES项目里,纵向和横向各连了谁
讨论“点对点为什么普遍”之前,得先搞清楚MES在企业系统版图里处于什么位置。MES也就是制造执行系统,向上接着ERP这类经营计划类系统,向下接着PLC、SCADA、各类传感器和自动化设备,中间还横向连接WMS、QMS质量系统、APS排产系统、实验室LIMS、EAM设备管理系统,甚至还有车间的人工报工终端、条码打印机、电子看板。
一个典型的MES集成接口矩阵,往往长这样:
| 集成方向 | 对端系统 | 典型接口内容 | 常见技术路线 |
|---|---|---|---|
| 纵向-上游 | ERP | 工单下发、物料主数据、BOM同步、领料单 | REST API、SOAP、中间表 |
| 纵向-下游 | PLC/SCADA/设备 | 配方参数下传、采集产量、状态信号、报警信息 | OPC UA、Modbus TCP、串口 |
| 横向 | WMS | 物料出入库、批次流转、成品入库 | REST API、MQ消息 |
| 横向 | APS | 排产结果回写、工单实时进度 | REST API、数据库视图 |
| 横向 | QMS/LIMS | 质量检验任务、检验结果回传 | REST API、WebService |
| 横向 | 电子看板/报表 | 生产实绩、OEE、异常事件 | 数据库直连、WebSocket |
这里有个很容易被忽略的细节:MES和ERP之间的接口,和MES与设备之间的接口,性质完全不同。ERP向下传的是“单据和计划”,MES向上回的是“完工数量、工时、不良品数、批次号”;设备传给MES的是“有没有在转、转了多少、有没有报警”,MES给设备下的是“用哪套配方、温度设多少”。前者是业务语义的翻译,后者是物理信号的采集与控制。这两种东西放进同一个“集成平台”里去统一治理,本身就是一个成本极高的工程。
1.2 “点对点”和“总线式”的本质区别
很多讨论把“点对点”等同于“乱”,把“总线式”等同于“规范”,这个判断过于粗略。点对点说的是系统之间直接建立连接、直接约定消息格式;总线式说的是所有系统都挂到一条公共的消息总线上,由总线负责路由、转换、分发。
点对点的本质是“谁和谁直接商量”。MES要ERP的工单,两边的开发直接对需求、对字段、对异常处理方式,然后各自实现。总线式的本质是“谁都可以和谁说话,但不直接说话”。所有系统只和总线打交道,消息能不能发、发给谁、什么格式,都由总线统一管起来。
从软件架构演进的角度看,总线式当然更先进。但先进的东西往往有前提条件:它要求所有系统愿意遵守同一个通信协议,要求有一个团队长期维护总线本身,要求出问题时有人能把总线的日志和业务日志对得上。这些条件在写字楼里的业务系统之间可能成立,但在冲到车间里面对设备、面对夜班倒班、面对交期压力的MES项目里,往往迅速失效。
1.3 为什么架构评审里的总线,到了现场总是变成直连
我在不止一个项目里见过同样的流程:启动会上,IT架构师画了一张很漂亮的集
