中小厂云MES落地:一套能跑通的 PLC / ERP 集成架构

简介: 本文基于中小制造企业数字化实践,剖析MES项目失败主因——边界不清,并提出以ISA-95为纲的分层架构:边缘网关终结工业协议、云MES专注业务逻辑、ERP与MES通过3个核心接口解耦。强调“设备数据→业务语言”的翻译本质,给出可落地的数据模型、断网缓存方案及实施路径。

做过几套中小制造数字化项目,踩过坑,也跑通过云MES + 边缘网关 + 金蝶/用友 + OPC UA/Modbus 的集成。

一、为什么很多中小厂MES项目做着做着就黄了?

不是MES功能不够强,而是边界没划清:

• ERP想让MES去管设备控制

• MES想让PLC去管业务状态流转

• 实施方把工单、工序、报工、设备点检全塞进一张大宽表

• 接口一改,ERP/MES/SCADA全线报错

其实ISA-95标准早就说清楚了,各层各管一摊:

6913348d-0b6f-4863-975e-a4df4ccf1762.png

MES不该替代PLC做PID调节,也不该替代ERP做MRP运算。
它的核心价值就一件事:把设备数据翻译成业务语言,把业务指令翻译成设备动作。

二、整体架构长什么样?

[PLC / CNC / DCS]
↑ Modbus / OPC UA / MQTT
[边缘网关 / 采集服务] ← 车间本地,断网也能缓存
↑ JSON over MQTT / HTTPS
[云MES]
↑ REST API / 中间表
[ERP:金蝶云星空 / 用友U8]

三个关键设计原则:

  1. 工业协议在车间本地终结——不让OPC UA直接穿透公网,安全且稳定
  2. 边缘侧做协议解析 + 断网缓存——车间网络没你想的那么可靠
  3. 云MES只处理业务对象——工单、工序、报工、检验、设备状态,不碰底层控制

三、向下接PLC:核心是把"地址"变成"业务"

1. 协议怎么选?
2873e013-03a8-42a7-b6fe-ce7f85f91fe4.png

2. 地址到业务字段的映射

PLC里看到的是 DB100.DBW2 = 3050,但MES需要的是:
{
"workOrderNo": "WO-20260928-001",
"operationNo": "OP10",
"deviceCode": "CNC-03",
"status": "RUNNING",
"spindleLoad": 62.5,
"ts": "2026-09-28T17:55:00+08:00"
}

边缘网关实际干三件事:

16dafae1-9b74-4d15-865a-89ff9684cea3.png

3. 断网了怎么办?

车间网络不稳定是常态,所以边缘侧必须有本地缓存:
def on_plc_event(payload):
payload["ts"] = device_clock() # 用设备时间,别用云端时间
if cloud_reachable():
mqtt_publish("mes/event", payload)
else:
local_sqlite.insert("offline_queue", payload)

def flush_offline():

# 网络恢复后,按时间顺序补传
for row in local_sqlite.query("offline_queue ORDER BY ts"):
    if mqtt_publish("mes/event", row):
        local_sqlite.delete("offline_queue", row.id)

踩坑经验:时间戳一定用设备端时间,别用云端接收时间。否则追溯时事件顺序会乱。

四、向上接ERP:别一上来做200个接口

很多项目死在"接口太多、全量同步、双向耦合"。其实先跑通三个核心接口就够了:

ERP → MES(下发)

• 生产工单

• BOM / 工艺路线

• 物料主数据

MES → ERP(回写)

• 报工结果

• 完工入库单

• 物料消耗 / 不良数量

状态回写

• 工单状态:已下发 → 开工 → 完工 → 入库

金蝶/用友的对接方式:

ERP类型 对接方式

6c63abc5-9d87-44b8-9d13-5684ff2b2c6e.png

报工回写示例:
@PostMapping("/api/erp/work-report")
public ResponseEntity<?> reportToErp(@RequestBody WorkReport report) {
// 1. 校验ERP工单是否存在
ErpWorkOrder order = erpClient.getOrder(report.getErpOrderNo());
if (order == null) return BAD_REQUEST;

// 2. 构造报工数据并回写ERP
erpClient.postProductionFeedback(ProductionFeedback.builder()
    .workOrderNo(report.getErpOrderNo())
    .operationNo(report.getOperationNo())
    .qtyGood(report.getQtyGood())
    .qtyScrap(report.getQtyScrap())
    .reportTime(report.getTs())
    .build());

// 3. 标记MES侧已回写
mesService.markReported(report.getId());
return OK;

}

五、数据模型别偷懒(这是最容易翻车的地方)

中小厂MES最常见的错误:把"工单号+工序+报工+设备"写成一张大宽表。
后面做OEE、追溯、返工全废。

最小可用模型就三张表:
-- 生产工单
production_order(
order_no PK,
erp_order_no, -- ERP来的单号
product_code,
plan_qty,
status
);

-- 工序
operation(
op_id PK,
order_no FK, -- 关联工单
op_no, -- 工序号
device_code,
plan_start,
plan_end
);

-- 报工记录
work_report(
report_id PK,
op_id FK, -- 关联工序
worker_code,
qty_good,
qty_scrap,
report_ts
);

关系很清楚:工单 → 工序(一对多)→ 报工(一对多)。
别偷懒合并,后面你会感谢自己的。

六、云和本地,怎么选?
392315b3-923d-4610-ba10-1790b16dbafa.png

正确路径是:先云后本地。

云版把执行层流程跑通、数据模型验证OK之后,如果有合规要求再迁本地。底层模型一致,不用推倒重来。

这也是万界星空这类厂商在做的事:云版跑执行层闭环,行业模板(机加工/漆包线/化工/锂电)解决行业模型问题,本地部署解决数据主权问题。

七、给开发/集成商的6条建议

  1. 先画数据流,再拖页面——很多人一上来就画UI,后面接口全返工
  2. 接口先跑3个:工单下发、报工回写、物料消耗,其他后面再加
  3. PLC采集先跑1台设备,别一上来接整条线
  4. MES里别写PID控制逻辑,那是PLC的事
  5. ERP里别存工序级报工明细,那是MES的事
  6. 边缘侧必须能断网缓存,车间网络永远没你想的稳

八、一句话总结

云MES的价值不是"上云",而是:

用一套业务模型,把PLC的工业数据和ERP的计划数据接起来。

中小制造数字化,别先谈数字孪生,别先谈AI排产。先把这四件事做扎实:
• 工单下得来

• 报工报得准

• 设备状态看得见

• ERP账能对上

有了这个底座,后面接AI-APS、预测性维护、质量分析,才有数据可喂。

相关文章
|
2月前
|
存储 运维 搜索推荐
装备制造企业上云MES,本地部署和云端部署怎么选?
装备制造企业做数字化转型,MES 该选云端 SaaS 还是本地私有化部署?本文对比两种方案优缺点,给出选型评估维度,帮助制造企业科学决策 MES 部署架构。
|
2月前
|
人工智能 架构师 安全
Salesforce 2026云栖大会活动回顾 | 从“会用 AI”到“把工作交给 AI”
云栖大会期间,Salesforce、阿里云以及蔡司光学、施乐辉、建霖家居等企业嘉宾齐聚现场,从 AI 发展趋势、人机协作方式,到销售、服务、生命科学、汽车和企业全球化,共同探讨 AI 如何真正走进业务。
|
2月前
|
人工智能 Linux 开发者
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
Codex是OpenAI推出的AI编程智能体,可读取本地项目、理解需求并自动修改代码。支持桌面GUI、命令行(CLI)及VS Code/Cursor插件三种形态,覆盖可视化操作、终端高效开发与编辑器无缝集成场景,助开发者用自然语言驱动编码全流程。(239字)
2454 2
【2026国内使用】Codex安装过程一篇讲透(Win/Mac/Linux全支持)
|
2月前
|
运维 安全 BI
中小团队终端安全与运维一体化建设:从资产盘点到边界管控的实施路径
本文针对中小团队IT人少、预算有限的现实,提出终端安全与运维一体化建设路径:分五步推进——先看清资产、再规范基线、后管控外设网络、继而远程提效、最终持续运营。强调用一套系统覆盖全场景,避免多工具叠加负担,每阶段独立见效,务实可行。
中小团队终端安全与运维一体化建设:从资产盘点到边界管控的实施路径
|
2月前
|
人工智能 JSON 编解码
【2026最新版】ComfyUI本地部署教程,新手也能看懂!
ComfyUI是本地运行的AI绘画工具,采用节点式工作流设计:通过拖拽连接“加载模型”“提示词编码”“采样”“解码”等模块,实现高度可控的文生图。新手推荐使用秋叶整合包,一键启动、内置模型管理与插件安装器,轻松上手。(239字)
|
2月前
|
缓存 JSON 安全
最新版通义千问Qwen3.8-Max保姆级手册:多模态能力、长周期Agent任务与代码调用全流程
Qwen3.8-Max作为旗舰级多模态MoE大模型,依托2.4万亿总参数、动态激活950亿专家参数、百万Token超长上下文、混合注意力架构,在复杂专业推理、长周期Agent任务、大型代码工程、多模态深度理解等场景实现能力突破。模型内置联网检索、代码沙盒、网页提取等全套工具能力,兼容主流API协议,支持上下文缓存、结构化输出等企业级能力,开发者既可以快速调用云端API,也可以私有化本地部署。
319 0
|
2月前
|
存储 人工智能 安全
千问办公收费吗?个人版和企业版有什么区别?支持免费使用吗?
阿里云千问办公(QwenWork)提供个人版(含免费版)与企业版:免费版赠2000积分+每日登录送100分;个人标准/高级版折后78/158元/月;企业版198/298元/席/月,支持VPC部署与统一管控。阿里千问办公QwenWork官网:https://t.aliyun.com/U/0VCTGt 阿里AI工作平台,一句话完成数据分析、PPT 生成、视频剪辑、网页搭建等复杂任务
282 0
|
2月前
|
前端开发 JavaScript 定位技术
支持省市区县乡镇村GeoJSON 在线预览编辑下载器开源:一个纯前端实现的拆解
这是一个纯前端、零依赖的GeoJSON轻量预览编辑器,支持本地打开、WGS84坐标渲染、要素查看/编辑,并可导出为GeoJSON/KML/SVG/CSV/PNG。数据不上传,双击index.html即用,开箱即用,适合快速验图、格式转换与二次集成。
|
2月前
|
人工智能 缓存 监控
QoderWake联合云电脑:让数字员工随时待命工作
QoderWake联合无影云电脑上线,为数字员工Waker提供持久化云端运行环境:关机不中断任务、远程实时查看与接管操作、环境状态自动保留。支持浏览器/终端/桌面全场景自动化,适用于竞品监控、夜间构建、定时报表等长时任务。
335 0
|
2月前
|
数据可视化 安全 数据挖掘
从入门到精通:零基础也能上手的数据可视化软件推荐
阿里云瓴羊Quick BI是一款零代码、拖拽式数据可视化工具,支持Excel上传、多源连接与50+图表类型。内置智能小Q可自然语言交互分析,提供个人版至专业版多档选择,30天免费试用。企业级安全与十亿级数据秒级响应,助力业务人员快速构建数据看板。