现在柔性生产,超级工厂的MES常规,常用的系统架构❤️

结论:现在超级工厂的 MES 架构分两派 —— 传统工业派和互联网新派,差别很大

传统大厂(西门子、SAP、富士康老系统)偏稳,不用 Redis/MQ 也能跑;

新一代灯塔工厂 / 工业互联网派,喜欢微服务、云边协同、消息队列全套。


一、当前超级工厂 MES 的主流架构(五层标准架构)

不管是哪一派,基本都遵循 ISA-95 标准 的分层思路,从上到下大概 5 层:

plaintext

┌─────────────────────────────────────┐
│  应用层(L5):MES功能模块          │
│  工单、报工、质量、追溯、OEE、看板   │
├─────────────────────────────────────┤
│  业务平台层(L4):微服务/业务中台   │
│  服务编排、流程引擎、规则引擎       │
├─────────────────────────────────────┤
│  数据层(L3):数据存储与处理       │
│  关系库、时序库、数据湖、消息队列   │
├─────────────────────────────────────┤
│  采集/边缘层(L2):设备接入        │
│  工业网关、OPC UA、边缘计算         │
├─────────────────────────────────────┤
│  设备层(L1):生产设备             │
│  PLC、SMT、机器人、传感器、AGV      │
└─────────────────────────────────────┘

二、两派架构对比

派 1:传统工业派(西门子、SAP、罗克韦尔、国内老牌 MES)

代表: 西门子 Opcenter、SAP ME、宝信、石化盈科、富士康老系统

架构特点:

  • 单体或简单分层,不是微服务
  • 核心数据存在关系型数据库(Oracle/SQL Server 为主)
  • 设备采集走专用协议(OPC、Modbus、专用网关)
  • 重业务流程,轻大数据

用不用 Redis 和 MQ?

  • 大多不用 Redis:缓存直接用应用内存或数据库
  • 消息队列用得少:系统间集成用 ESB / 中间件,不是互联网那种 Kafka
  • 不是不会,是不需要:并发不高、业务稳定、追求稳不追新

优点:

  • 稳,跑了十几年的都有
  • 工业 know-how 深,行业适配好
  • 运维简单,DBA 就能搞定

缺点:

  • 扩展性差,加功能慢
  • 海量设备采集有点吃力
  • 界面丑,体验差

派 2:互联网新派(灯塔工厂、工业互联网平台、创业公司)

代表: 富士康新灯塔工厂、阿里犀牛智造、树根互联、海尔卡奥斯、创业公司 MES

架构特点:

  • 微服务架构,按功能拆成独立服务
  • 云边协同:边缘端采集 + 实时处理,云端存大数据 + 全局优化
  • 消息队列是标配(Kafka/RabbitMQ),数据从设备到应用全链路异步
  • 多数据库混搭:关系库 + 时序库 + 文档库 + 数据湖
  • Redis 用来做缓存、实时计算、分布式锁

典型技术栈:

plaintext

设备接入:OPC UA、MQTT、工业网关
边缘层:边缘网关 + 流处理(Flink/Spark)
消息队列:Kafka / RabbitMQ
数据存储:
  - 业务数据:MySQL/PostgreSQL/OceanBase
  - 时序数据:InfluxDB/TDengine/时序库
  - 缓存:Redis
  - 大数据:Hadoop/ClickHouse
应用层:微服务(Spring Cloud) + 前端(Vue/React)

优点:

  • 扩展性强,加设备加功能快
  • 海量数据处理能力强
  • 界面好看,体验好
  • 适合柔性生产、多品种小批量

缺点:

  • 复杂,运维重
  • 出问题排查难
  • 工业 know-how 不如传统派
  • 有些是 "为了技术而技术",实际价值存疑

三、柔性生产对 MES 架构的特殊要求

柔性生产(多品种、小批量、快速换型)对架构的要求:

1. 配置化、低代码

  • 产品工艺、流程经常变
  • 不能每次都改代码
  • 所以新一代 MES 都搞低代码、可配置

2. 数据实时性要求高

  • 换型快,设备状态变化快
  • 需要实时监控、实时调整
  • 所以边缘计算、流处理用得多

3. 系统集成要求高

  • 要和 ERP、WMS、APS、PLC、AGV、机器人对接
  • 接口多,数据流转复杂
  • 所以消息队列、服务总线用得多

4. 数据量大

  • 柔性生产设备多、品种多、数据维度多
  • 采集频率高
  • 所以时序库、大数据平台用得多

四、超级工厂的典型部署模式

模式 1:单工厂集中式

  • 所有系统都部署在工厂本地
  • 数据不出去,安全
  • 适合单一大厂

模式 2:云边协同(集团多工厂)

  • 总部云端:全局优化、大数据分析、模型训练
  • 工厂边缘:实时采集、实时控制、本地 MES
  • 数据双向同步:核心数据上云,边缘指令下发
  • 适合集团型、多工厂企业

模式 3:全云化

  • MES 直接跑在云上
  • 工厂通过专线 / 5G 连云端
  • 适合中小企业,或者对实时性要求不高的场景

五、给你的建议(结合你的情况)

你的情况:

  • 4000 设备 / 采集点
  • 自己开发,C# 技术栈
  • 运维能力一般
  • 做 MES + OEE + 追溯

推荐架构:"传统派为主,新派为辅",别上来就搞微服务全套

初期架构(简单、稳、好维护):

plaintext

设备层 → 采集网关/OPC → C#采集服务 → 数据库
                                       ↓
                                  MES业务系统(单体或简单分层)
                                       ↓
                                  前端(Web/移动端)

数据库组合:

  • OceanBase:业务数据(工单、报工、质量、追溯)
  • TDengine:时序采集数据(设备参数、状态)
  • 不用 Redis:应用内存缓存热点数据
  • 不用消息队列:应用层批量写入 + 本地文件兜底

理由:

  1. 4000 设备,数据量真不大,直接写库没问题
  2. 简单架构,出问题好排查
  3. 你运维能力一般,少组件少操心
  4. 先跑起来验证业务,比什么都重要

后期演进(数据量大了、系统复杂了再加):

plaintext

设备 → 边缘网关 → 消息队列(Kafka) → 流处理 → 时序库
                                      ↓
                                   业务数据 → OceanBase
                                      ↓
                                微服务MES应用 → Redis缓存
                                      ↓
                                   前端/看板/APP

什么时候加?

  • 设备翻几倍,每秒上万条写入
  • 系统模块多了,单体维护不动了
  • 实时性要求更高,毫秒级响应
  • 多工厂、集团化了

六、一句话总结

超级工厂 MES 没有 "标准答案",传统派稳,新派炫,适合自己的才是最好的。

你的阶段,先搞个简单可靠的架构跑起来,比追什么 "微服务、云原生、工业互联网" 概念靠谱得多。

工厂里,能稳定跑三年不出事的系统,就是好系统。


🎯要做就要押注未来,不要改过去改过来。

实在不行,就分多条MES产品路线,多个团队开发多个产品。

重点:骨架要做好,骨架一定要靠谱。

MES 这种生产系统,架构骨架一开始没搭好,后期改起来就是伤筋动骨,成本极高

但要区分:架构骨架要一步到位,功能模块可以逐步加。不是说一开始就要把所有东西都做完,而是把扩展的位置留好、边界划清,以后加东西不用动骨架。

给你一套 "面向未来 10 年、一步到位但不过度设计" 的 MES 架构方案。


一、核心设计原则(重压未来趋势)

1. 解耦原则:层与层之间通过标准接口,不直接依赖

  • 设备换了,采集层改,业务层不动
  • 数据库换了,数据层改,业务层不动
  • 前端换了,应用层改,后端不动

2. 可扩展原则:每个层面都能横向扩展

  • 设备从 4000 台涨到 4 万台,加采集节点就行
  • 用户从 100 人涨到 1000 人,加应用服务器就行
  • 数据从 1TB 涨到 100TB,加数据库节点就行

3. 数据驱动原则:数据是核心,业务围绕数据转

  • 所有数据统一采集、统一存储、统一标准
  • 上层应用只是数据的不同 "视图"
  • 以后加 AI、数字孪生、大数据分析,直接拿数据用

4. 云边协同原则:本地实时,云端全局

  • 工厂本地:实时采集、实时控制、核心 MES
  • 集团云端:全局分析、大数据、AI 模型、多工厂协同
  • 数据双向同步,断网也能正常生产

二、目标架构(未来 3~5 年的终态)

plaintext

┌─────────────────────────────────────────────────────────┐
│                    应用层(多端接入)                     │
│  Web端  │  移动端  │  看板大屏  │  第三方系统API         │
├─────────────────────────────────────────────────────────┤
│                    业务服务层(微服务)                   │
│  工单服务 │ 报工服务 │ 质量服务 │ 追溯服务 │ OEE服务      │
│  设备服务 │ 物料服务 │ 人员服务 │ 看板服务 │ 告警服务      │
│  统一API网关 │ 流程引擎 │ 规则引擎 │ 权限中心             │
├─────────────────────────────────────────────────────────┤
│                    数据服务层                            │
│  关系型数据(OceanBase) │ 时序数据(TDengine)          │
│  文档数据(MongoDB)    │ 缓存(Redis)                  │
│  消息队列(Kafka)      │ 数据湖/数仓(后期加)           │
├─────────────────────────────────────────────────────────┤
│                    边缘采集层                            │
│  工业网关 │ OPC UA服务 │ 协议转换 │ 边缘计算 │ 本地缓存   │
│  数据预处理 │ 断网续传 │ 本地告警                        │
├─────────────────────────────────────────────────────────┤
│                    设备层                               │
│  PLC │ SMT │ AOI │ SPI │ 机器人 │ AGV │ 传感器 │ 测试设备 │
└─────────────────────────────────────────────────────────┘

三、关键技术选型(一步到位,未来 5 年不用换)

1. 数据库层(最核心,不能轻易换)

表格

类型选型为什么选它
关系型数据库OceanBase 三节点分布式、强一致、在线 DDL、容量无上限,撑 10 年没问题
时序数据库TDengine工业采集专用,写入快、压缩高、查询快,天生适合设备数据
文档数据库MongoDB灵活存配置、日志、非结构化数据,Schema 不用提前定
缓存Redis工业标准,热点数据、实时统计、分布式锁都能用
消息队列Kafka高吞吐、持久化、多消费者,采集数据一条进多条出

2. 应用层

表格

类型选型为什么选它
后端语言C# / .NET 8你熟悉,性能好,工业界用得多
架构风格模块化单体(初期)→ 微服务(后期)先单体跑起来,边界划好,后期拆微服务不用重写
API 网关后期加初期不用,服务多了再加
前端Blazor / Vue你熟悉 Blazor,工业软件用着合适

3. 采集层

表格

类型选型为什么选它
工业协议OPC UA工业标准,未来主流,设备都支持
边缘网关自研 / 开源网关数据预处理、断网续传、本地缓存
采集服务C# 采集服务和你技术栈统一

四、一期做什么?(骨架搭好,功能做核心)

不是说一步到位就全做完,而是骨架搭好,核心功能先上,其他留好接口。

一期必须做的(6 个月内):

✅ 1. 数据层:三个数据库全部搭好

  • OceanBase 三节点:业务数据
  • TDengine 三节点:时序数据
  • MongoDB:配置、日志
  • 为什么一期就上? 数据库是骨架,后期换数据库成本最高,一开始就选对

✅ 2. 消息队列:Kafka 一期就上

  • 采集数据全部走 Kafka
  • 为什么一期就上? 这是数据总线,后期再加的话所有采集都要改
  • 而且 Kafka 也没那么复杂,三节点集群很稳

✅ 3. 采集层:OPC UA + 边缘网关

  • 统一接入标准,后期加设备不用改业务
  • 断网续传、本地缓存,保证数据不丢
  • 为什么一期就上? 设备接入是基础,协议不统一,后期越接越乱

✅ 4. 业务层:模块化单体,边界划清

  • 按模块划分:工单、报工、质量、追溯、设备、OEE
  • 模块之间通过内部 API 调用,不直接查对方的表
  • 为什么这么做? 后期拆微服务,直接把模块拆出去就行,不用重写

✅ 5. Redis:一期就上

  • 缓存热点数据(产品、工艺、设备信息)
  • 实时统计(当日产量、OEE)
  • 分布式锁
  • 为什么一期就上? 简单好用,后期加的话代码要改很多

一期不用做的(后期再加):

❌ 微服务拆分(先单体,边界划好就行)

❌ API 网关(服务少,用不着)

❌ 数据湖 / 数仓(数据量还小)

❌ AI、数字孪生(先有数据再说)

❌ 云边协同多工厂(先做好一个厂)


五、为什么这么设计?(重压未来趋势)

1. 应对柔性生产

  • 模块化设计,新工艺、新产品、新设备,加配置就行,不用改代码
  • 规则引擎、流程引擎,业务变化不用改代码
  • 多品种小批量,数据模型灵活,不用改表结构

2. 应对数据量爆炸

  • OceanBase 分布式,容量无限扩
  • TDengine 时序专用,海量采集也不怕
  • Kafka 消息队列,削峰填谷,再高并发也不怕

3. 应对智能化升级

  • 数据统一存储、统一标准,以后加 AI、大数据分析直接用
  • 不用重新做数据治理
  • 数字孪生也直接拿数据

4. 应对多工厂扩张

  • 云边协同架构预留好
  • 以后开新厂,直接复制一套边缘节点
  • 总部云端统一看数据

六、关键:边界划清,接口标准化(最重要!)

架构好不好,不在于用了多少技术,而在于边界清不清。

必须定义清楚的边界:

1. 采集层 → 数据层:统一走 Kafka

  • 所有采集数据都发到 Kafka 的固定 Topic
  • 格式统一(JSON,标准字段)
  • 后面谁想用数据,直接消费 Kafka 就行,不用改采集程序

2. 业务层 → 数据层:统一数据访问层

  • 业务代码不直接写 SQL
  • 通过 Repository/DAO 层访问数据
  • 以后换数据库,只改数据访问层,业务代码不动

3. 业务模块之间:通过 API 调用

  • 模块之间不直接查对方的表
  • 调用对方提供的 API
  • 以后拆微服务,直接把模块独立部署就行

4. 应用层 → 业务层:统一 REST API

  • 前端、移动端、第三方系统,都通过统一的 API 访问
  • 后端怎么变,前端不用改

七、给你的具体落地路线图

第 1~2 个月:搭骨架

  • ✅ 搭基础设施:服务器、网络、监控
  • ✅ 搭数据库:OceanBase、TDengine、MongoDB、Redis
  • ✅ 搭消息队列:Kafka
  • ✅ 搭开发框架:.NET 8 + 模块化架构
  • ✅ 定义数据标准、API 标准

第 3~4 个月:核心功能 + 采集

  • ✅ 设备数据采集:OPC UA → Kafka → TDengine
  • ✅ 基础数据:产品、工艺、设备、人员
  • ✅ 工单管理
  • ✅ 生产报工
  • ✅ 基础看板

第 5~6 个月:扩展功能

  • ✅ 质量检验
  • ✅ 产品追溯
  • ✅ OEE 统计
  • ✅ 设备管理
  • ✅ 告警通知

第 6~12 个月:优化 + 智能化

  • ✅ 性能优化
  • ✅ 报表完善
  • ✅ 高级分析
  • ✅ 预留 AI 接口

1 年后:按需要扩展

  • 微服务拆分
  • 多工厂云边协同
  • AI 应用
  • 数字孪生

八、一句话总结

架构骨架要一步到位(数据库、消息队列、分层边界),功能模块可以逐步加。

这样既保证了未来 5~10 年不用大改架构,又不会一开始就搞太复杂导致项目做不下去。

好的架构不是 "什么都有",而是 "想加什么都能加,不用动骨架"。

阅读剩余
THE END