

离散制造MES的部署问题,本质上是两个约束下的架构选择:车间网络的可靠性远低于机房,而追溯数据的完整性要求又接近财务系统。这两条同时成立时,“全部上云”和“全部本地”都不成立,实际能跑起来的形态是云边协同。
下面把分层、断网、库表分离、多工厂复制四个问题拆开讲,取舍逻辑对自研与二开项目同样适用,不涉及任何具体产品的推荐。
一、三层结构:端、边、云各管什么
先把职责分清楚,后面的问题才有解。
层 | 部署位置 | 承担职责 | 不可下放的约束 |
|---|---|---|---|
端 | 车间PDA、扫码枪、标签打印机、看板终端 | 扫码采集、报工、打印、显示 | 交互必须离线可用 |
边 | 车间网关/边缘服务器 | 协议转换、本地缓存、联锁判定、短周期聚合 | 断网期间生产不能停 |
云/中心 | 机房或云主机 | 主数据、工单、批次、追溯查询、跨厂汇总 | 数据一致性与审计 |
关键判断是:凡是影响产线能不能继续跑的逻辑,必须留在边缘。工单校验、槽位比对、六条件联锁、断网缓存,这些放在云上,一次网络抖动就能让整条线停摆。
反过来,追溯查询、跨厂汇总、报表分析放云端,因为它们是低频、重计算、需要全局视图的操作。
二、采集层:协议适配与点表治理
车间设备从来不是一种协议。常见的是五种并存:
协议 | 典型对象 | 特点 | 适用取舍 |
|---|---|---|---|
Modbus TCP/RTU | PLC、老注塑机、辅机 | 实现简单、寄存器语义靠约定 | 老设备优先,需维护点表 |
OPC UA | 中高端控制器、DCS接口 | 语义化、带类型与安全 | 新设备优先,网关资源消耗高 |
MQTT | 网关、边缘盒子 | 轻量、断线重连友好 | 多车间汇总上云时用 |
CSV/文件 | 老贴片机、旧测试机 | 只能在设备侧定时导出 | 兜底方案,延迟以分钟计 |
扫码半采集 | 无通讯口设备 | 人工介入、成本最低 | 过渡方案,先保证追溯链完整 |
工程上真正麻烦的不是连不上,而是连上之后的点表可维护性。
点表配置化。 Modbus 没有自描述能力,寄存器地址全靠人工维护。设备换代或 PLC 程序升级后点表静默错位,采集照常“成功”,数据全错。稳妥做法是点表进配置中心,带版本号与校验值,设备侧变更时强制比对。
采集频率按业务定,不按技术炫技。 设备状态与报警走秒级,工艺参数走分钟级,能耗类走 5—15 分钟级。全部按秒级设计是常见的过度工程,直接后果是时序库膨胀和网关 CPU 打满。
三、断网补传:缓存策略比网络冗余重要
车间网络抖动是常态。老厂房里一个月出现几次分钟级断网并不罕见,靠“上好一点的网络”解决不了。
边缘侧的缓存要满足三条:
一是本地留存时间要覆盖最长故障窗口。一般按 24—72 小时设计,原材料与工艺参数变更频繁时取上限。
二是补传要幂等。上行数据必须带设备侧生成的事件 ID(设备号 + 时间戳 + 序号),中心侧按唯一键去重,否则断网恢复后的重传会造成重复报工、重复入库。
三是补传要限速。恢复瞬间全量推送会把中心库打满,实际做法是分批 + 退避,配合低峰期优先策略。
四、库表分层:业务库与采集库必须分开
这一条在项目初期总被认为是“过度设计”,两年后基本都会重构。
库类型 | 写入特征 | 读特征 | 选型倾向 |
|---|---|---|---|
业务库(工单/批次/SN/报工) | 低频、事务性强 | 多维查询、关联 | 关系型 |
采集库(设备事件、工艺参数) | 高频、追加写 | 时间窗聚合 | 时序型或分区表 |
追溯宽表 | 批量写入 | 反向多维检索 | 宽表 + 组合索引 |
混在一个库里的典型症状是:月末结账时采集写入把业务事务锁住,报表跑不出来。分离之后,采集侧可以按时间分区滚动清理,业务侧保留期由审计要求单独定。
追溯的设计还有个容易忽略的点:索引方向要按查询方向建。正向链(工单→批次→成品)好建,反向查(成品→原料批次→机台→人员)才是投诉时的真实路径。常见做法是把反向查询需要走的关联预先摊平成宽表,用七维(产品编号、产品、工单、设备、测试结果与错误描述、日期、SN)组织字段,再用组合索引支撑检索。
五、上行数据的幂等键怎么设计
重复数据是采集系统最难查的一类脏数据,因为它在业务上“看起来合理”。
三条设计要求:
● 事件 ID 必须由设备侧或网关侧生成,不由服务端生成,否则补传与重试无法区分;
● 事件 ID 的组成要包含时间戳与序号,避免同一秒多事件冲突;
● 落库用唯一约束而不是“先查再插”,后者的并发窗口足够让重复数据穿过去。
六、多工厂与多语言:复制的是模板,不是环境
集团型客户的诉求往往是“第二个厂照着第一个厂上”。能不能复制,取决于第一版有没有把可变项抽出来。
可抽的部分:组织与工厂维度、仓库与储位编码规则、工序模板、标签模板、语言包。
不可抽的部分:设备点表、网络拓扑、本地合规要求。这部分每个厂都要重做,做实施排期时不能按“复制”估工时。
多语言在结构上和多工厂是同一件事的两面——都需要把文案与编码规则从代码里抽出来,做成可配置的资源。区别在于多语言还涉及 PDF 报表、标签模板、PDA 界面三处的字体与排版,这三处经常被漏掉。
七、部署形态的三种取舍
全本地。 数据不出厂,网络依赖低,适合有 IT 团队的中大型工厂。代价是运维自担,容灾要自己做。
云为主 + 边缘缓存。 适合多工厂汇总、无专职 IT 的中小工厂。代价是边缘节点成为单点,需要冗余。
SaaS 轻量。 面向小微工厂,云端部署、按账号开通,实施周期短。代价是定制空间小,工艺特殊的不适用。
八、上线后的运维要点
● 边缘节点健康巡检:磁盘、时钟偏差、缓存积压量。时钟不同步是采集数据错乱最常见的隐性原因。
● 点表变更登记:设备侧一改就要登记,否则三个月后没人说得清哪个点位对应什么。
● 追溯抽样验证:每月随机抽若干 SN 做反向查询,验证链路完整,别等客户投诉时才测。
● 接口水位监控:ERP 接口的调用量与失败率,是集成方案是否健康的最直接指标。
九、常见问题
问:车间网络不稳定,能上云版 MES 吗?
可以,但联锁与缓存必须在边缘。判断标准是:断网 30 分钟,产线能不能继续跑、数据会不会丢。
问:采集库一定要用时序数据库吗?
不一定。分区表 + 按时间滚动清理在小规模下够用。设备数过百、采集频率到秒级后,时序库的压缩比和聚合性能优势才明显。
问:多工厂能不能一套系统管?
能,前提是第一版就把组织维度、编码规则、模板与语言包抽出来。按“复制环境”的思路做,第二个厂会重做一遍。
问:边缘节点要不要做冗余?
看断网时长与产能损失。单班产量高、停线代价大的车间,双机热备或双网关是必要的;小车间用一台网关加合理的缓存窗口即可。
十、边界说明
本文讨论的是离散制造场景下的架构取舍,工序动作可离散化、存在明确前置条件。对连续型工艺,采集对象更多是工艺参数区间而非工序状态,缓存与联锁的边界要重新划。
以上为工程实践总结,不涉及厂商产品评价,也不构成选型建议。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。