简介:这份PPT资料聚焦智能工厂的顶层设计,面向制造业信息化规划人员、数字化转型负责人及智能制造方向的学习者,帮助系统理解从业务调研到落地实施的完整架构方法论。内容围绕总体设计方法、业务调研与分析、智能工厂总体规划、建设路线规划及系统初步设计展开,涵盖业务架构、应用架构、系统架构、数据架构、技术架构与智能场景设计,并以流程制造为例,梳理计划经营、原料采购、生产运行、储运、质量、能源、计量、HSE及设备管理九大业务域,配套业务框架、生产运营流程与项目卡片等图示。资源包共1个pptx文件,约1.2MB,以幻灯片形式呈现架构蓝图与设计要点,便于直接引用或二次编辑。目前已有210人学习下载,适合需要搭建智能工厂规划框架、梳理业务与系统映射关系的读者参考借鉴。
1. 智能工厂四层架构到底在解决什么问题:从一张 PPT 的目录说起
如果你手上正躺着一份叫「智能工厂技术架构、系统架构、数据架构、应用架构及场景应用方案」的 PPT,大概率你面对的不是「要不要做」,而是「从哪一页开始落地」。我见过太多团队把这份 PPT 做成了汇报道具:技术架构画满中台和微服务,系统架构堆上 MES、WMS、SCADA、ERP,数据架构标着数据湖和数据仓库,应用架构列了二十个场景,结果评审一过,没人知道第一行代码该写在哪。问题不在 PPT,在于四个架构被当成了四张并列的图,而它们其实是同一栋楼的地基、承重墙、管线和房间。技术架构决定你能盖多高,系统架构决定房间怎么分,数据架构决定水电怎么走,应用架构决定人住进去舒不舒服。这篇笔记就按这个顺序,把一份智能工厂方案 PPT 从目录拆到可执行的最小落地路径,适合正在做工厂数字化规划、被要求「先出个架构方案」的一线工程师和项目负责人。
2. 技术架构:先定边界再选型,别让中台变成空中楼阁
技术架构是整份 PPT 的第一块,也是最容易被写虚的一块。很多方案一上来就是「云原生 + 微服务 + 中台」,但工厂现场的真实约束是:OT 侧设备协议五花八门,IT 侧网络分区严格,边缘侧算力有限。技术架构要回答的不是「用什么时髦技术」,而是「数据从设备到云端,每一跳用什么承载、边界在哪、故障时怎么降级」。
2.1 先画数据流,再决定云边端怎么分
我一般会先让团队把一条产线的数据流画出来:PLC 采集 → 边缘网关协议转换 → 边缘计算节点做实时判断 → 上传到中心侧做聚合分析。这条链路画完,技术架构的骨架就出来了。常见的分层是三层:设备层、边缘层、中心层。设备层负责产生数据,边缘层负责实时性和协议适配,中心层负责存储、训练和全局调度。
选型上,边缘层我倾向用轻量容器化方案,比如在工控机上跑 Docker,把协议解析、数据清洗、本地缓存各做成一个容器。中心层如果已有虚拟化平台,优先复用,不要为了「云原生」三个字重新搭一套 K8s,除非你的应用确实需要弹性伸缩。下面是一个边缘节点上用 Python 做协议转换和本地缓存的最小示例,思路比代码本身更重要:
# edge_gateway.py # 边缘网关:Modbus 采集 -> 清洗 -> 本地 SQLite 缓存 -> 批量上传 import sqlite3 import time from pymodbus.client import ModbusTcpClient # 参数说明: # host/port:PLC 的 Modbus TCP 地址,现场常见 502 端口 # batch_size:攒够多少条再上传,太小网络压力大,太大实时性差 # cache_db:本地缓存库,断网时数据不丢,这是边缘层最关键的后悔药 def collect_and_cache(host, port, batch_size=50, cache_db="edge_cache.db"): client = ModbusTcpClient(host, port=port) conn = sqlite3.connect(cache_db) conn.execute("CREATE TABLE IF NOT EXISTS raw_data(ts REAL, addr INT, val REAL)") buffer = [] while True: # 读取保持寄存器,地址和数量按现场点表改 resp = client.read_holding_registers(address=0, count=10, slave=1) if not resp.isError(): ts = time.time() for i, val in enumerate(resp.registers): buffer.append((ts, i, val)) if len(buffer) >= batch_size: conn.executemany("INSERT INTO raw_data VALUES (?,?,?)", buffer) conn.commit() buffer.clear() time.sleep(1) # 采集周期,按工艺要求调整,1 秒是常见起点这段代码的逻辑是:采集不直接上传,先落本地库,上传模块独立从库里读并标记已同步。参数里batch_size和采集周期是最需要现场调的,周期太快会把 PLC 打爆,太慢会丢工艺细节。断网续传是边缘层必须有的能力,否则一次网络抖动就丢一批数据,后面所有分析都不可信。
2.2 网络分区和协议适配是技术架构的隐形地基
工厂网络通常分办公网、生产网、DMZ,技术架构图里如果不体现分区,实施时一定翻车。常见做法是边缘层放在生产网,通过单向网关或防火墙把数据推到 DMZ,再由 DMZ 推到中心。协议适配方面,OPC UA 是趋势,但现场大量存量设备还是 Modbus、Profinet、CAN,边缘网关要能同时吃多种协议。
选型时我会列一张对照表,把每个协议的数据量、实时性要求、是否支持订阅写清楚,再决定哪些走边缘实时处理,哪些可以批量上传。技术架构的成熟度不体现在用了多少组件,而体现在断网、断电、设备重启后数据能不能自愈。
3. 系统架构:MES、WMS、SCADA 怎么摆才不打架
系统架构是 PPT 里最容易画成「一堆方框加箭头」的部分。方框谁都会画,难的是说清楚每个系统的职责边界和数据归属。我见过最典型的翻车是:MES 和 WMS 都维护了一份物料库存,两边对不上,最后靠人工对账。系统架构的核心不是列系统,而是定「谁是主数据源、谁只读、谁写回」。
3.1 按「计划-执行-控制」三层切分系统职责
制造业系统架构有个经典切法:上层计划(ERP/APS),中层执行(MES/WMS/QMS),下层控制(SCADA/PLC)。这个切法的价值在于数据流向清晰:计划往下发工单,执行往上汇报进度,控制层只负责设备动作和实时数据采集。
具体到边界,我一般这样定:ERP 管订单和财务,工单下到 MES;MES 管工序、报工、追溯,把物料需求给 WMS;WMS 管库位和出入库,库存变动回写 MES;SCADA 只管设备状态和工艺参数,通过边缘层给 MES 提供实时数据,不直接和 ERP 对话。下面是一个用 SQL 表达这种数据归属的简化模型,重点是看字段归属而不是建表语法:
-- 工单主表:归属 MES,ERP 只读同步 CREATE TABLE work_order ( wo_id VARCHAR(32) PRIMARY KEY, product_code VARCHAR(64) NOT NULL, qty INT NOT NULL, status VARCHAR(16) DEFAULT 'CREATED', -- CREATED/RUNNING/DONE erp_order_id VARCHAR(32) -- 关联 ERP 订单,只做引用不做修改 ); -- 库存表:归属 WMS,MES 只读查询可用量 CREATE TABLE inventory ( material_code VARCHAR(64), location VARCHAR(32), qty_available DECIMAL(12,3), PRIMARY KEY (material_code, location) ); -- 设备实时状态:归属 SCADA/边缘层,MES 只订阅 CREATE TABLE device_status ( device_id VARCHAR(32), ts TIMESTAMP, state VARCHAR(16), param_json TEXT );逻辑说明:每张表只有一个写入方,其他系统通过接口或消息订阅。参数上,status的状态机要和现场实际工序对齐,不要自己发明状态。库存的qty_available要区分锁定和可用,否则并发领料一定超发。
3.2 接口和消息是系统架构的血管
系统之间怎么通信,决定了架构是松耦合还是一团乱麻。我的经验是:实时性要求高的走消息队列,比如设备状态变化;业务事务走 API,比如工单创建;大批量数据走文件或批量接口,比如日结库存。不要所有东西都走 API 同步调用,一个系统卡住会拖垮整条链。
消息主题的命名要有规范,比如mes.workorder.created、wms.inventory.changed,消费方按需订阅。接口要有幂等设计,因为工厂网络抖动导致的重发太常见了。系统架构评审时,我会专门问一句:这个接口如果被重复调用三次,会发生什么?答不上来的,回去补幂等。
4. 数据架构:从数据湖到指标口径,别让报表打架
数据架构是四个架构里最容易被低估的。很多 PPT 把数据架构画成「数据采集 → 数据湖 → 数据仓库 → 报表」,但真正决定成败的是指标口径和主数据。同一个「设备综合效率 OEE」,生产部门算出来 85%,设备部门算出来 72%,这种打架在智能工厂里太常见了。
4.1 分层建模:贴源、清洗、主题、指标
我一般把数据架构分成四层:贴源层(ODS)保持原始数据不动,清洗层(DWD)做去重和标准化,主题层(DWS)按业务过程聚合,指标层(ADS)对外提供统一指标。分层的意义是:任何一层出问题,可以单独重跑,不用从头再来。
下面是一个用 SQL 做 OEE 指标计算的简化示例,重点看口径怎么固化:
-- 指标层:OEE = 可用率 × 性能率 × 良品率 -- 口径固化在 SQL 里,所有人查同一个视图,避免各算各的 CREATE VIEW ads_oee_daily AS SELECT device_id, stat_date, -- 可用率:实际运行时间 / 计划运行时间 actual_run_min / NULLIF(plan_run_min, 0) AS availability, -- 性能率:理论节拍 × 产量 / 实际运行时间 (theory_cycle_sec * output_qty / 60.0) / NULLIF(actual_run_min, 0) AS performance, -- 良品率:良品数 / 总产量 good_qty / NULLIF(output_qty, 0) AS quality, -- 综合 OEE (actual_run_min / NULLIF(plan_run_min, 0)) * ((theory_cycle_sec * output_qty / 60.0) / NULLIF(actual_run_min, 0)) * (good_qty / NULLIF(output_qty, 0)) AS oee FROM dws_device_production WHERE stat_date = CURRENT_DATE - INTERVAL '1 day';参数说明:plan_run_min来自排班计划,actual_run_min来自设备状态时长统计,theory_cycle_sec来自工艺标准。这三个参数任何一个口径变了,OEE 就变了,所以必须由工艺和设备部门共同确认后写进数据字典。NULLIF是防止除零,工厂数据里停机时间为零的情况很常见。
4.2 主数据和数据质量是数据架构的命门
主数据(物料、设备、人员、组织)不统一,后面所有分析都是沙上建塔。常见做法是建一个主数据管理模块,或者至少在数据架构里明确「物料主数据以 ERP 为准,设备主数据以 EAM 为准」。数据质量要有监控,比如采集点掉线率、数据延迟、空值率,这些指标要像设备状态一样被实时监控。
数据架构 PPT 里如果只画了数据流没有画数据质量监控,基本可以判断这份方案还没落地过。我一般会在数据架构里加一个「数据健康度」看板,把每个数据源的及时性、完整性、一致性打分,低于阈值的自动告警。
5. 应用架构:场景应用怎么排优先级才不烂尾
应用架构是给业务看的,也是最容易贪多的。一份 PPT 列二十个场景,最后能上线三个就不错。我的原则是:按「痛点强度 × 数据就绪度 × 实施周期」排优先级,先做数据已经有的、痛点最痛的、两周能出效果的。
5.1 场景优先级评估表
下面这张表是我常用的评估模板,每个场景打分后排序,避免拍脑袋:
| 场景 | 痛点强度(1-5) | 数据就绪度(1-5) | 实施周期(周) | 综合分 |
|---|---|---|---|---|
| 设备实时监控 | 5 | 5 | 2 | 12.5 |
| 质量追溯 | 4 | 4 | 4 | 4.0 |
| 预测性维护 | 5 | 2 | 12 | 0.8 |
| 能耗优化 | 3 | 3 | 8 | 1.1 |
综合分算法可以自己定,我一般用「痛点 × 就绪度 / 周期」。设备实时监控通常排第一,因为数据现成、效果立竿见影。预测性维护虽然痛点强,但需要历史故障数据和特征工程,周期长,适合二期。
5.2 从监控到闭环:应用架构的演进路径
应用架构不要一上来就做 AI 闭环控制,先做「看得见」,再做「说得清」,最后做「管得住」。看得见是实时监控和报警,说得清是报表和追溯,管得住才是参数优化和闭环。每一步都要有业务方验收,否则做了一堆功能没人用。
下面是一个用 Python 做设备异常报警的最小逻辑,重点是阈值要可配置、报警要防抖:
# alarm_engine.py # 设备异常报警:滑动窗口防抖 + 阈值可配置 from collections import deque # 参数说明: # window_size:滑动窗口大小,太小会误报,太大会漏报,一般 5-10 # threshold:报警阈值,从配置中心读取,不要硬编码 # cooldown:报警冷却时间,防止同一异常刷屏 class AlarmEngine: def __init__(self, window_size=5, threshold=80.0, cooldown=300): self.window = deque(maxlen=window_size) self.threshold = threshold self.cooldown = cooldown self.last_alarm_ts = 0 def push(self, ts, value): self.window.append(value) if len(self.window) < self.window.maxlen: return None avg = sum(self.window) / len(self.window) if avg > self.threshold and ts - self.last_alarm_ts > self.cooldown: self.last_alarm_ts = ts return {"ts": ts, "avg": avg, "level": "WARN"} return None逻辑说明:用滑动窗口平均值而不是单点值,避免传感器毛刺导致误报。cooldown是血泪经验,没有它报警会刷爆消息队列。阈值从配置中心读,不同设备不同工艺段阈值不同,硬编码等于给自己挖坑。
6. 避坑与排查:智能工厂架构落地最常见的五个翻车点
6.1 边缘网关时间不同步,数据对不上
现象:MES 里的报工时间和 SCADA 的设备时间差几分钟,追溯时对不上。原因:边缘网关和 PLC 各自用本地时钟,没有统一 NTP。解决:所有边缘节点和 PLC 强制 NTP 对时,数据带上时间戳来源标记,中心侧做时间校正。
6.2 消息队列积压,实时数据变历史数据
现象:设备状态看板延迟越来越大,最后卡死。原因:消费方处理慢,或者某个消费者挂了没重启,消息堆积。解决:消息队列设 TTL 和死信队列,消费方做限流和监控,积压超过阈值自动告警。我一般会加一个「消息年龄」指标,超过 30 秒就查。
6.3 指标口径没固化,报表天天打架
现象:同一张 OEE 报表,生产部和设备部数字不一样。原因:各自用 Excel 算,停机时间定义不同。解决:指标口径写进数据字典,用统一视图对外提供,任何口径变更走变更流程。这件事没有技术难度,纯粹是管理问题,但技术团队要主动推。
6.4 主数据没统一,追溯链断裂
现象:质量追溯时,同一个物料在 ERP 和 MES 里编码不同,追不下去。原因:主数据没有统一管理,各系统自建。解决:建主数据映射表,至少保证物料和设备有全局唯一编码,新系统接入必须走主数据校验。
6.5 网络分区没做,安全审计过不了
现象:方案评审时被安全部门打回,要求重新设计网络。原因:技术架构图里生产网和办公网直连,没有 DMZ 和单向隔离。解决:提前和安全部门对齐分区要求,边缘层到中心层走单向网关,所有跨区流量有日志。这件事一定要在方案阶段做,实施阶段改网络成本极高。
7. 把 PPT 变成可执行方案:一个架构评审清单和我的习惯
最后一章说点实在的。一份智能工厂架构 PPT 做完,怎么判断它能不能落地?我一般用下面这张清单过一遍,每项都要有明确答案,答不上来的就是风险点:
| 检查项 | 合格标准 | 常见不合格表现 |
|---|---|---|
| 数据流闭环 | 每条数据有来源、有去向、有归属 | 只画了采集没画消费 |
| 系统边界 | 每个系统有唯一写入方 | 两个系统都写同一张表 |
| 指标口径 | 核心指标有唯一定义和负责人 | 各部门自己算 |
| 断网降级 | 边缘层有本地缓存和续传 | 断网就丢数据 |
| 网络分区 | 生产网/办公网/DMZ 清晰 | 一张网画到底 |
| 场景优先级 | 有量化排序和验收标准 | 列了二十个场景没排序 |
我自己的习惯是:任何架构方案,先不看图,先问三个问题——数据从哪来、到哪去、断了怎么办。这三个问题答清楚了,图怎么画都不会太离谱。另外,PPT 里的每一个方框,都要能对应到一个具体的负责人和上线时间,否则就是装饰。智能工厂这件事,技术架构是骨架,系统架构是器官,数据架构是血液,应用架构是动作,缺一个都跑不起来。但最关键的还是先跑通一条产线、一个场景,拿到真实数据再谈扩展。希望帮到你。
本文还有配套的精品资源,点击获取