<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>OPC UA on 文艺技术笔记</title>
        <link>https://wenyiblog.top/tags/opc-ua/</link>
        <description>Recent content in OPC UA on 文艺技术笔记</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>文艺技术笔记 | 软件工程师文艺</copyright>
        <lastBuildDate>Mon, 27 Jul 2026 20:00:00 +0800</lastBuildDate><atom:link href="https://wenyiblog.top/tags/opc-ua/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>MES系统的工业物联网数据管道设计：从PLC/SCADA到实时OEE看板的全链路架构</title>
        <link>https://wenyiblog.top/2026/07/2026-07-27-mes-iiot-data-pipeline-oee/</link>
        <pubDate>Mon, 27 Jul 2026 20:00:00 +0800</pubDate>
        
        <guid>https://wenyiblog.top/2026/07/2026-07-27-mes-iiot-data-pipeline-oee/</guid>
        <description>&lt;p&gt;在制造业数字化转型的深水区，真正的瓶颈往往不是「有没有系统」，而是「数据能不能流起来」。&lt;/p&gt;
&lt;p&gt;一个典型的离散制造车间里，PLC 控制器每秒产生上千个数据点，SCADA 系统管理着数百条报警规则，而管理层渴望看到的是——一块实时跳动的 OEE（设备综合效率）看板，告诉他们哪条产线在浪费产能、哪台设备正在拖后腿。&lt;/p&gt;
&lt;p&gt;问题在于，&lt;strong&gt;从 PLC 寄存器里的一个布尔量，到看板上那个百分比数字，中间隔着协议转换、边缘聚合、消息队列、流式计算、时序存储等至少六七层技术栈&lt;/strong&gt;。每一层的设计选择都会影响数据的实时性、可靠性和系统的可维护性。&lt;/p&gt;
&lt;p&gt;本文尝试把这条数据管道从头到尾拆开，讲清楚每一层为什么这样设计、有哪些工程上的取舍。&lt;/p&gt;
&lt;h2 id=&#34;一问题的本质车间数据的三高一低&#34;&gt;&lt;a href=&#34;#%e4%b8%80%e9%97%ae%e9%a2%98%e7%9a%84%e6%9c%ac%e8%b4%a8%e8%bd%a6%e9%97%b4%e6%95%b0%e6%8d%ae%e7%9a%84%e4%b8%89%e9%ab%98%e4%b8%80%e4%bd%8e&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;一、问题的本质：车间数据的「三高一低」
&lt;/h2&gt;&lt;p&gt;制造车间的数据特征可以概括为「三高一低」：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;特征&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;表现&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;对系统的挑战&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;高频&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;PLC 以 100ms~1s 的周期上报数据&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;写入吞吐量要求高，存储成本需要控制&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;高噪&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;传感器漂移、信号抖动、通信中断&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;需要清洗、去噪、断点续传&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;高异构&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Modbus/Profinet/OPC UA/EtherCAT 混用&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;协议适配层必须足够灵活&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;低语义&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;原始数据是寄存器地址和数值&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;需要上下文注入（设备、工位、产品）才有业务含义&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;有句话说得好：制造业的数据工程师，一半时间在跟协议打交道，另一半时间在跟脏数据打交道。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;理解了这四个特征，后面的架构选型就不再是纸上谈兵——每一个技术决策都有它对应的现实约束。&lt;/p&gt;
&lt;h2 id=&#34;二全链路架构总览&#34;&gt;&lt;a href=&#34;#%e4%ba%8c%e5%85%a8%e9%93%be%e8%b7%af%e6%9e%b6%e6%9e%84%e6%80%bb%e8%a7%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;二、全链路架构总览
&lt;/h2&gt;&lt;p&gt;在展开每一层之前，先看全貌。一条完整的数据管道大致分为六层：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;┌─────────────────────────────────────────────────┐
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  第六层：可视化与决策（OEE看板 / 报警 / 报表）      │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  第五层：实时计算引擎（OEE计算 / 异常检测 / SPC）    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  第四层：时序数据存储（TDengine / InfluxDB / TSDB）  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  第三层：消息中间件（Kafka / EMQX / RabbitMQ）       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  第二层：边缘计算网关（协议转换 / 数据清洗 / 聚合）   │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;├─────────────────────────────────────────────────┤
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;│  第一层：设备层（PLC / SCADA / 传感器 / 仪表）       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;└─────────────────────────────────────────────────┘
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每一层都不是&amp;quot;有了就行&amp;quot;，而是需要回答三个问题：&lt;strong&gt;为什么需要它？它解决什么问题？它的边界在哪里？&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;三第一层设备层数据的源头&#34;&gt;&lt;a href=&#34;#%e4%b8%89%e7%ac%ac%e4%b8%80%e5%b1%82%e8%ae%be%e5%a4%87%e5%b1%82%e6%95%b0%e6%8d%ae%e7%9a%84%e6%ba%90%e5%a4%b4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;三、第一层：设备层——数据的源头
&lt;/h2&gt;&lt;h3 id=&#34;31-plc车间的神经末梢&#34;&gt;&lt;a href=&#34;#31-plc%e8%bd%a6%e9%97%b4%e7%9a%84%e7%a5%9e%e7%bb%8f%e6%9c%ab%e6%a2%a2&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3.1 PLC：车间的「神经末梢」
&lt;/h3&gt;&lt;p&gt;PLC（Programmable Logic Controller）是车间里最忠实的数据生产者。它不管你想不想听，都在忠实地按照扫描周期刷新自己的输入/输出映像区。&lt;/p&gt;
&lt;p&gt;主流 PLC 品牌的数据接口能力差异很大：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;品牌&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;典型系列&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;原生协议&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;OPC UA 支持&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;数据刷新周期&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Siemens&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;S7-1500&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Profinet / S7 协议&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;内置（固件v2.5+）&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1~100ms&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Allen-Bradley&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;ControlLogix&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;EtherNet/IP / CIP&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;需网关或固件升级&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;10~100ms&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Mitsubishi&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;iQ-R&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;MELSEC 协议 / CC-Link&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;需外部 OPC Server&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;10~500ms&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Omron&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;NX/NJ&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;EtherNet/IP / FINS&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;部分型号内置&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;1~10ms&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;汇川/信捷&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;H5U/XDH&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Modbus TCP/RTU&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;无原生支持&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;10~100ms&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;一个经常被低估的问题：&lt;strong&gt;同一车间往往混用3~5个品牌的PLC&lt;/strong&gt;。新建产线可能统一用 Siemens，但老产线上可能还跑着 Mitsubishi FX 系列甚至更老的型号。数据管道的第一道难题就是异构适配。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&#34;32-scada不只是上位机&#34;&gt;&lt;a href=&#34;#32-scada%e4%b8%8d%e5%8f%aa%e6%98%af%e4%b8%8a%e4%bd%8d%e6%9c%ba&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3.2 SCADA：不只是「上位机」
&lt;/h3&gt;&lt;p&gt;很多人把 SCADA（Supervisory Control and Data Acquisition）简单理解为&amp;quot;上位机监控软件&amp;quot;。实际上，在现代工厂里，SCADA 扮演的角色远比这复杂：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;实时数据库角色&lt;/strong&gt;：SCADA 内部的 Tag 数据库本身就是一个轻量级的时序数据缓存，WinCC、iFix、InTouch 的实时库可以支撑数万点位的秒级刷新&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;报警管理角色&lt;/strong&gt;：设备故障、工艺越限等事件，通常由 SCADA 的报警引擎产生和确认&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HMI 交互角色&lt;/strong&gt;：操作工在触摸屏上的操作（换型、确认、报工）也是重要的业务事件&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在数据管道设计中，SCADA 既可以是数据的「中转站」（从 SCADA 的 OPC Server 取数），也可以被绕过（直接从 PLC 取数），这取决于项目的具体情况。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;从 SCADA 取数的优势&lt;/strong&gt;：协议统一（OPC DA/UA），开发量小，报警事件现成可用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;绕过 SCADA 直接取数的场景&lt;/strong&gt;：SCADA 授权费用过高、SCADA 系统老旧不支持 OPC UA、需要更高采集频率（超过 SCADA 的扫描周期）。&lt;/p&gt;
&lt;h3 id=&#34;33-传感器与仪表被忽视的数据源&#34;&gt;&lt;a href=&#34;#33-%e4%bc%a0%e6%84%9f%e5%99%a8%e4%b8%8e%e4%bb%aa%e8%a1%a8%e8%a2%ab%e5%bf%bd%e8%a7%86%e7%9a%84%e6%95%b0%e6%8d%ae%e6%ba%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;3.3 传感器与仪表：被忽视的数据源
&lt;/h3&gt;&lt;p&gt;除了 PLC 控制的设备，车间里还有大量独立传感器和仪表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;温湿度传感器（Modbus RTU）&lt;/li&gt;
&lt;li&gt;电表/气表（Modbus/DL/T645）&lt;/li&gt;
&lt;li&gt;振动传感器（4-20mA 经采集模块转 Modbus）&lt;/li&gt;
&lt;li&gt;RFID 读写器（TCP/IP 或串口）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些设备通常不具备 OPC UA 能力，需要通过 Modbus 网关或专用采集模块接入。&lt;strong&gt;它们的数据频率低（秒级甚至分钟级），但对能耗管理、环境监控、物料追溯等场景至关重要。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;四第二层边缘计算网关协议统一与数据预处理&#34;&gt;&lt;a href=&#34;#%e5%9b%9b%e7%ac%ac%e4%ba%8c%e5%b1%82%e8%be%b9%e7%bc%98%e8%ae%a1%e7%ae%97%e7%bd%91%e5%85%b3%e5%8d%8f%e8%ae%ae%e7%bb%9f%e4%b8%80%e4%b8%8e%e6%95%b0%e6%8d%ae%e9%a2%84%e5%a4%84%e7%90%86&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;四、第二层：边缘计算网关——协议统一与数据预处理
&lt;/h2&gt;&lt;p&gt;这是整条管道里「脏活累活最多」的一层。&lt;/p&gt;
&lt;h3 id=&#34;41-为什么不能直接从-plc-读到云端&#34;&gt;&lt;a href=&#34;#41-%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e8%83%bd%e7%9b%b4%e6%8e%a5%e4%bb%8e-plc-%e8%af%bb%e5%88%b0%e4%ba%91%e7%ab%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4.1 为什么不能直接从 PLC 读到云端？
&lt;/h3&gt;&lt;p&gt;理论上可以，但工程上不建议，原因有四个：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;网络隔离&lt;/strong&gt;：车间 OT 网络通常与 IT 网络物理隔离或设置 DMZ，直接穿透违反安全策略&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;协议适配&lt;/strong&gt;：PLC 说 Modbus、Profinet、EtherNet/IP，云平台说 MQTT、HTTP——需要翻译&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;带宽控制&lt;/strong&gt;：如果每台 PLC 每秒上报 100 个点位、每个点位 4 字节，100 台 PLC 就是 40KB/s、约 3.3GB/天的纯数据量，还不算协议开销&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;断网容错&lt;/strong&gt;：工厂网络不可靠，需要边缘侧缓存和断点续传&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;42-协议转换opc-ua-与-mqtt-的分工&#34;&gt;&lt;a href=&#34;#42-%e5%8d%8f%e8%ae%ae%e8%bd%ac%e6%8d%a2opc-ua-%e4%b8%8e-mqtt-%e7%9a%84%e5%88%86%e5%b7%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4.2 协议转换：OPC UA 与 MQTT 的分工
&lt;/h3&gt;&lt;p&gt;在工业物联网领域，&lt;strong&gt;OPC UA 和 MQTT 不是竞争关系，而是互补关系&lt;/strong&gt;。一个常见的误解是&amp;quot;用了 MQTT 就不需要 OPC UA&amp;quot;。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;维度&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;OPC UA&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;MQTT&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;定位&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;设备到边缘（南向）&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;边缘到云端（北向）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;通信模型&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;客户端-服务器 + 发布-订阅&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;发布-订阅（轻量）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;信息模型&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;强类型、面向对象、自带语义&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;纯消息体，语义靠约定&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;安全&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;证书 + 加密 + 认证，内建&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TLS + Token，相对简单&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;适用场景&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;车间内部设备互联&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;跨网络、跨地域数据上报&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;OPC UA 解决的是&amp;quot;设备说的话能不能被标准化理解&amp;quot;的问题，MQTT 解决的是&amp;quot;数据能不能低成本、低带宽地传到云端&amp;quot;的问题。两者在架构中各守一段。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;推荐的协议流&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;PLC --[Modbus/Profinet]--&amp;gt; 边缘网关 --[OPC UA Client]--&amp;gt; 协议解析 --[MQTT Publish]--&amp;gt; 消息队列
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;43-边缘网关的选型考量&#34;&gt;&lt;a href=&#34;#43-%e8%be%b9%e7%bc%98%e7%bd%91%e5%85%b3%e7%9a%84%e9%80%89%e5%9e%8b%e8%80%83%e9%87%8f&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4.3 边缘网关的选型考量
&lt;/h3&gt;&lt;p&gt;市面上边缘网关的形态很多，按定位可以分为三类：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;工业级硬件网关&lt;/strong&gt;（如 IOT2050、Neousys、研华 ICR 系列）：适合恶劣环境，宽温宽压，但算力有限，主要做协议转换和简单过滤。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;边缘服务器方案&lt;/strong&gt;（如 Dell Edge Gateway、联想边缘计算盒子）：算力更强，可以跑轻量级流处理、本地 AI 推理，适合需要边缘计算的场景。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;软件定义网关&lt;/strong&gt;（在工控机/IPC 上部署 Node-RED、Kepware、Ignition Edge 等软件）：灵活度最高，但运维复杂度也最高。&lt;/p&gt;
&lt;p&gt;选型时的核心判断标准：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;点位数量&lt;/strong&gt;：1000 点以下用硬件网关，1 万点以上考虑边缘服务器&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;计算需求&lt;/strong&gt;：只做协议转换还是需要在边缘跑规则引擎、异常检测&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;运维能力&lt;/strong&gt;：工厂 IT 团队能否管理 Linux 服务器和容器&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;44-边缘侧的数据预处理&#34;&gt;&lt;a href=&#34;#44-%e8%be%b9%e7%bc%98%e4%be%a7%e7%9a%84%e6%95%b0%e6%8d%ae%e9%a2%84%e5%a4%84%e7%90%86&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;4.4 边缘侧的数据预处理
&lt;/h3&gt;&lt;p&gt;好的边缘网关不只是&amp;quot;传声筒&amp;quot;，它应该在数据上传前完成初步处理：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;死区过滤（Deadband Filtering）&lt;/strong&gt;：只上报变化超过阈值的点位，大幅减少无效传输。一个温度传感器在 25.0°C 和 25.1°C 之间跳动时，没有必要每秒都上报。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;时间戳对齐&lt;/strong&gt;：不同 PLC 的系统时钟可能有秒级偏差，边缘网关需要统一打上 NTP 同步后的时间戳。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;质量标记&lt;/strong&gt;：通信中断时，网关上报的数据应该携带质量标记（Good/Bad/Uncertain），而不是默默填充上一个值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;本地缓存与断点续传&lt;/strong&gt;：网络中断期间，数据缓存在边缘（SQLite/RocksDB/文件），恢复后按时间顺序补传，确保时序连续性。&lt;/p&gt;
&lt;h2 id=&#34;五第三层消息中间件数据的高速公路&#34;&gt;&lt;a href=&#34;#%e4%ba%94%e7%ac%ac%e4%b8%89%e5%b1%82%e6%b6%88%e6%81%af%e4%b8%ad%e9%97%b4%e4%bb%b6%e6%95%b0%e6%8d%ae%e7%9a%84%e9%ab%98%e9%80%9f%e5%85%ac%e8%b7%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;五、第三层：消息中间件——数据的「高速公路」
&lt;/h2&gt;&lt;h3 id=&#34;51-为什么需要消息中间件&#34;&gt;&lt;a href=&#34;#51-%e4%b8%ba%e4%bb%80%e4%b9%88%e9%9c%80%e8%a6%81%e6%b6%88%e6%81%af%e4%b8%ad%e9%97%b4%e4%bb%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5.1 为什么需要消息中间件？
&lt;/h3&gt;&lt;p&gt;边缘网关可以直接写入数据库，但当系统规模扩大后，直连模式会暴露三个致命问题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;耦合&lt;/strong&gt;：网关直接依赖数据库的可用性，数据库维护时整个采集中断&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;削峰&lt;/strong&gt;：设备重启、产线换型瞬间会产生数据洪峰，直接写入可能压垮数据库&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;多消费者&lt;/strong&gt;：OEE 计算、报警引擎、历史查询、AI 模型都需要消费同一份数据，直连模式下每个消费者都要独立接入&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;消息中间件解决的就是解耦、削峰和扇出。&lt;/p&gt;
&lt;h3 id=&#34;52-kafka-vs-emqx-vs-rabbitmq&#34;&gt;&lt;a href=&#34;#52-kafka-vs-emqx-vs-rabbitmq&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5.2 Kafka vs EMQX vs RabbitMQ
&lt;/h3&gt;&lt;p&gt;在工业物联网场景下，三个常见选项的定位不同：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;中间件&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;核心优势&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;适用场景&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;工业场景局限&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Apache Kafka&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;超高吞吐、持久化、回溯消费&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;数据湖入口、流处理管道&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;运维复杂、小消息开销大&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;EMQX&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;MQTT 原生、百万连接、规则引擎&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;设备接入层、轻量级消息路由&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;不具备 Kafka 的流处理能力&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;RabbitMQ&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;灵活路由、低延迟、成熟稳定&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;事件驱动、命令下发&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;吞吐量有限，不适合大数据量&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;实战中常见的组合模式&lt;/strong&gt;：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;边缘网关 --[MQTT]--&amp;gt; EMQX --[Rule Engine Bridge]--&amp;gt; Kafka --[消费]--&amp;gt; 各下游系统
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;EMQX 负责 MQTT 协议接入和设备管理（连接/断线感知、ACL 鉴权），然后通过其内置的 Bridge 或 Rule Engine 将消息转发到 Kafka。Kafka 作为统一的数据总线，对接流处理引擎、时序数据库、数据湖等下游。&lt;/p&gt;
&lt;h3 id=&#34;53-topic-设计工业数据的命名规范&#34;&gt;&lt;a href=&#34;#53-topic-%e8%ae%be%e8%ae%a1%e5%b7%a5%e4%b8%9a%e6%95%b0%e6%8d%ae%e7%9a%84%e5%91%bd%e5%90%8d%e8%a7%84%e8%8c%83&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5.3 Topic 设计：工业数据的命名规范
&lt;/h3&gt;&lt;p&gt;MQTT/Kafka 的 Topic 设计直接影响系统的可扩展性。推荐采用 &lt;strong&gt;ISA-95 层级模型&lt;/strong&gt; 来组织 Topic 命名空间：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;{企业}/{工厂}/{车间}/{产线}/{设备}/{数据类型}/{具体点位}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;acme/shanghai-stamp/body-shop/line-01/robot-07/status/joint_torque_j3
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;acme/shanghai-stamp/body-shop/line-01/robot-07/event/alarm
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;acme/shanghai-stamp/body-shop/line-01/robot-07/metric/cycle_time
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这种命名的好处：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;按层级订阅&lt;/strong&gt;：想看整条线的状态，订阅 &lt;code&gt;acme/shanghai-stamp/body-shop/line-01/#&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;权限隔离&lt;/strong&gt;：不同工厂只能发布自己工厂 Topic 前缀下的消息&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据路由&lt;/strong&gt;：Kafka Consumer Group 可以按 Topic 前缀分配不同消费逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;54-消息体格式avro-vs-json-vs-protobuf&#34;&gt;&lt;a href=&#34;#54-%e6%b6%88%e6%81%af%e4%bd%93%e6%a0%bc%e5%bc%8favro-vs-json-vs-protobuf&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;5.4 消息体格式：Avro vs JSON vs Protobuf
&lt;/h3&gt;&lt;p&gt;工业数据的消息体格式选型需要平衡可读性、紧凑性和 Schema 演进能力：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JSON&lt;/strong&gt;：人可读，调试方便，但体积大（约为二进制格式的 3~5 倍），无 Schema 约束&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Protobuf&lt;/strong&gt;：紧凑高效，有 Schema，但调试时需要反序列化工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Avro&lt;/strong&gt;：Schema 内建演进能力（前向/后向兼容），适合 Kafka + Schema Registry 的组合&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;实践建议&lt;/strong&gt;：开发调试阶段用 JSON，生产环境切换到 Protobuf 或 Avro。边缘网关的计算资源有限时，JSON 的序列化开销可能成为瓶颈。&lt;/p&gt;
&lt;h2 id=&#34;六第四层时序数据存储为工业数据量身定制&#34;&gt;&lt;a href=&#34;#%e5%85%ad%e7%ac%ac%e5%9b%9b%e5%b1%82%e6%97%b6%e5%ba%8f%e6%95%b0%e6%8d%ae%e5%ad%98%e5%82%a8%e4%b8%ba%e5%b7%a5%e4%b8%9a%e6%95%b0%e6%8d%ae%e9%87%8f%e8%ba%ab%e5%ae%9a%e5%88%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;六、第四层：时序数据存储——为工业数据量身定制
&lt;/h2&gt;&lt;h3 id=&#34;61-为什么不用-mysqlpostgresql&#34;&gt;&lt;a href=&#34;#61-%e4%b8%ba%e4%bb%80%e4%b9%88%e4%b8%8d%e7%94%a8-mysqlpostgresql&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;6.1 为什么不用 MySQL/PostgreSQL？
&lt;/h3&gt;&lt;p&gt;这是很多项目初期最容易犯的错误。关系型数据库不是不能存时序数据，而是&lt;strong&gt;存不好&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;写入瓶颈&lt;/strong&gt;：时序数据是 append-only 的追加快节奏写入，MySQL 的 B+ 树索引在高并发写入下性能急剧下降&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;压缩率低&lt;/strong&gt;：工业传感器数据（温度、压力、电流）相邻值高度相似，专用时序数据库的 Gorilla/Delta-of-Delta 编码可以将存储空间压缩到 MySQL 的 1/10~1/50&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;查询模式不匹配&lt;/strong&gt;：时序查询的核心是&amp;quot;某设备某段时间内的某指标&amp;quot;，这是按时间范围扫描，不是按条件过滤——LSM-Tree 比 B+ 树更适合&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;62-主流时序数据库对比&#34;&gt;&lt;a href=&#34;#62-%e4%b8%bb%e6%b5%81%e6%97%b6%e5%ba%8f%e6%95%b0%e6%8d%ae%e5%ba%93%e5%af%b9%e6%af%94&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;6.2 主流时序数据库对比
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;数据库&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;写入性能&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;压缩率&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;SQL 兼容性&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;集群能力&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;生态集成&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;适合场景&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;TDengine&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;极高（百万点/秒）&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;兼容 SQL&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;原生集群&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Grafana/DataX/Flink&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;大规模工业采集&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;InfluxDB&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;InfluxQL/Flux&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;企业版集群&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Grafana/Telegraf&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中小规模通用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;TimescaleDB&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;完全 SQL&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;依赖 PostgreSQL&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;PG 生态&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;已有 PG 基础设施&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;IoTDB&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;自有 SQL&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;原生集群&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Flink/Spark&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;开源+Apache 生态&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;QuestDB&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;极高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;SQL&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;企业版&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Grafana&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;低延迟分析&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;国内制造业项目中，TDengine 和 IoTDB 的采用率在快速上升&lt;/strong&gt;。TDengine 的超级表（Super Table）概念天然契合&amp;quot;同一型号设备共享 Schema、不同设备实例各有数据&amp;quot;的工业数据模型。&lt;/p&gt;
&lt;h3 id=&#34;63-数据分层存储策略&#34;&gt;&lt;a href=&#34;#63-%e6%95%b0%e6%8d%ae%e5%88%86%e5%b1%82%e5%ad%98%e5%82%a8%e7%ad%96%e7%95%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;6.3 数据分层存储策略
&lt;/h3&gt;&lt;p&gt;工业时序数据有一个显著特征：&lt;strong&gt;查询频率随时间急剧衰减&lt;/strong&gt;。最近 7 天的数据可能被频繁查询，30 天前的数据偶尔用于报表，一年前的数据几乎只用于审计。&lt;/p&gt;
&lt;p&gt;分层存储策略：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;热数据（0~7天）   →  SSD + 内存缓存    →  支持毫秒级查询
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;温数据（7~90天）  →  HDD              →  支持秒级查询
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;冷数据（90天+）   →  对象存储/压缩归档  →  按需加载
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;TDengine 和 InfluxDB 都支持数据保留策略（Retention Policy），可以自动执行数据过期删除。但归档到对象存储这一步通常需要自己写 ETL 任务。&lt;/p&gt;
&lt;h2 id=&#34;七第五层实时计算引擎oee-的计算心脏&#34;&gt;&lt;a href=&#34;#%e4%b8%83%e7%ac%ac%e4%ba%94%e5%b1%82%e5%ae%9e%e6%97%b6%e8%ae%a1%e7%ae%97%e5%bc%95%e6%93%8eoee-%e7%9a%84%e8%ae%a1%e7%ae%97%e5%bf%83%e8%84%8f&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;七、第五层：实时计算引擎——OEE 的计算心脏
&lt;/h2&gt;&lt;h3 id=&#34;71-oee-的三个因子&#34;&gt;&lt;a href=&#34;#71-oee-%e7%9a%84%e4%b8%89%e4%b8%aa%e5%9b%a0%e5%ad%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;7.1 OEE 的三个因子
&lt;/h3&gt;&lt;p&gt;OEE = 可用率 × 性能率 × 良品率&lt;/p&gt;
&lt;p&gt;看起来公式简单，但要实时计算这三个因子，需要解决的问题比想象中多得多：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;可用率&lt;/strong&gt; = 实际运行时间 / 计划运行时间&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;计划运行时间来自排产系统（MES/APS），需要与班次日历、换型计划联动&lt;/li&gt;
&lt;li&gt;实际运行时间的判定依赖设备状态机的实时切换（运行/待机/故障/换型/停机）&lt;/li&gt;
&lt;li&gt;短暂停机（&amp;lt;5分钟）的捕捉是个难题——如果 PLC 没有主动上报短暂停机事件，需要从&amp;quot;零产量持续 N 秒&amp;quot;来推断&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;性能率&lt;/strong&gt; = (实际产量 × 理想节拍时间) / 实际运行时间&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;理想节拍时间（Ideal Cycle Time）是工艺参数，来自工艺数据库或 MES 的工艺路线配置&lt;/li&gt;
&lt;li&gt;实时产量需要基于计数传感器或工位通过信号来计算&lt;/li&gt;
&lt;li&gt;小停机（Minor Stop）和速度损失（Reduced Speed）需要区分&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;良品率&lt;/strong&gt; = 合格品数量 / 总产量&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;质检结果往往有延迟——生产是实时的，但质检可能在数小时后才完成&lt;/li&gt;
&lt;li&gt;在线检测（视觉检测、称重分选）可以实时提供良品信号，离线检测只能事后修正&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;72-设备状态机oee-计算的基石&#34;&gt;&lt;a href=&#34;#72-%e8%ae%be%e5%a4%87%e7%8a%b6%e6%80%81%e6%9c%baoee-%e8%ae%a1%e7%ae%97%e7%9a%84%e5%9f%ba%e7%9f%b3&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;7.2 设备状态机：OEE 计算的基石
&lt;/h3&gt;&lt;p&gt;所有 OEE 计算的前提是&lt;strong&gt;准确的设备状态&lt;/strong&gt;。这需要在流处理引擎中维护一个设备状态机：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    ┌─── 计划停机（保养/换班）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;运行中 ──停机信号──→ 故障停机
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  │                  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  │                  ├─── 短暂停机（&amp;lt;5min）
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  │                  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ├──换型信号──→ 换型/调试
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  └──无订单──→ 待机/空闲
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;状态机的实现要点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;互斥性&lt;/strong&gt;：任何时刻设备只能处于一个状态，状态切换必须有明确的事件触发&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;优先级&lt;/strong&gt;：同时收到多个信号时（故障 + 换型），故障优先级最高&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;超时保护&lt;/strong&gt;：如果进入某状态后长时间没有收到状态切换信号，应有超时兜底逻辑&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;手动覆盖&lt;/strong&gt;：允许操作员通过 HMI 或 MES 手动修正设备状态（传感器无法区分的场景）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;73-流处理引擎选型flink-vs-自研-vs-规则引擎&#34;&gt;&lt;a href=&#34;#73-%e6%b5%81%e5%a4%84%e7%90%86%e5%bc%95%e6%93%8e%e9%80%89%e5%9e%8bflink-vs-%e8%87%aa%e7%a0%94-vs-%e8%a7%84%e5%88%99%e5%bc%95%e6%93%8e&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;7.3 流处理引擎选型：Flink vs 自研 vs 规则引擎
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;方案&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;优势&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;劣势&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;适用规模&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Apache Flink&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;精确一次语义、状态管理强、窗口计算灵活&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;学习曲线陡峭、运维复杂&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;大规模（百台设备+）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Kafka Streams&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;轻量、与 Kafka 天然集成&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;窗口和状态管理能力弱于 Flink&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中等规模&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;自研微服务&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;完全可控、业务定制灵活&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;一致性保障靠自己做、重复造轮子&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;小规模、快速验证&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;规则引擎（Drools/EMQX Rule）&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;配置化、业务人员可维护&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;复杂计算能力有限&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;简单规则场景&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;对于中大型制造业项目，Flink 是最稳妥的选择&lt;/strong&gt;。它的 Event Time 语义和 Watermark 机制，天然适合处理工业场景中&amp;quot;数据迟到&amp;quot;和&amp;quot;乱序到达&amp;quot;的问题——边缘网关断网重连后补传的数据，Flink 可以正确归入历史时间窗口重新计算。&lt;/p&gt;
&lt;h3 id=&#34;74-oee-计算的-flink-作业设计要点&#34;&gt;&lt;a href=&#34;#74-oee-%e8%ae%a1%e7%ae%97%e7%9a%84-flink-%e4%bd%9c%e4%b8%9a%e8%ae%be%e8%ae%a1%e8%a6%81%e7%82%b9&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;7.4 OEE 计算的 Flink 作业设计要点
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;MQTT/Kafka Source
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[设备状态事件流] ──→ [状态机 Processor] ──→ [状态时长聚合窗口] ──→ 可用率
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[产量计数事件流] ──→ [节拍匹配 Join] ──→ [产量效率窗口] ──→ 性能率
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[质检结果事件流] ──→ [延迟关联] ──→ [良品统计窗口] ──→ 良品率
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       │
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;       ▼
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;[OEE 合成算子] ──→ 写入时序库 / 推送看板
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;几个工程细节值得注意：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;状态持久化&lt;/strong&gt;：Flink 的 State Backend 选择 RocksDB（持久化到磁盘），防止 JobManager 故障重启后丢失设备当前状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;迟到数据处理&lt;/strong&gt;：质检结果可能延迟数小时，Flink 的 Allowed Lateness + Side Output 机制可以将迟到数据单独处理，不影响实时计算的主流程，但可以在事后修正 OEE 数值。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;多粒度聚合&lt;/strong&gt;：OEE 需要按设备、产线、车间、班次等多个维度同时计算。Flink 的 Keyed Window 可以按设备聚合，但跨设备汇总到产线级别需要额外的 Reduce 算子。&lt;/p&gt;
&lt;h2 id=&#34;八第六层可视化与决策让数据被看见&#34;&gt;&lt;a href=&#34;#%e5%85%ab%e7%ac%ac%e5%85%ad%e5%b1%82%e5%8f%af%e8%a7%86%e5%8c%96%e4%b8%8e%e5%86%b3%e7%ad%96%e8%ae%a9%e6%95%b0%e6%8d%ae%e8%a2%ab%e7%9c%8b%e8%a7%81&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;八、第六层：可视化与决策——让数据被看见
&lt;/h2&gt;&lt;h3 id=&#34;81-oee-看板的设计原则&#34;&gt;&lt;a href=&#34;#81-oee-%e7%9c%8b%e6%9d%bf%e7%9a%84%e8%ae%be%e8%ae%a1%e5%8e%9f%e5%88%99&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;8.1 OEE 看板的设计原则
&lt;/h3&gt;&lt;p&gt;看板不是&amp;quot;把所有数据堆上去&amp;quot;。好的 OEE 看板遵循&lt;strong&gt;三层递进原则&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一层：态势感知&lt;/strong&gt;（3 秒内获取全局信息）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;所有设备/产线的 OEE 数值和状态灯（绿/黄/红）&lt;/li&gt;
&lt;li&gt;当前班次目标 vs 实际产量的进度条&lt;/li&gt;
&lt;li&gt;最严重的 Top 3 异常&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;第二层：定位问题&lt;/strong&gt;（30 秒内找到根因方向）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;选定设备的 OEE 三因子拆解（可用率/性能率/良品率哪个在拖后腿）&lt;/li&gt;
&lt;li&gt;设备状态甘特图（过去 8 小时的状态分布）&lt;/li&gt;
&lt;li&gt;故障/停机事件时间线&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;第三层：追溯细节&lt;/strong&gt;（深入分析）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;具体时段的过程参数趋势曲线&lt;/li&gt;
&lt;li&gt;关联的工艺参数和质检结果&lt;/li&gt;
&lt;li&gt;历史对比（同设备上周同期、同产品其他产线）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;82-看板技术栈选型&#34;&gt;&lt;a href=&#34;#82-%e7%9c%8b%e6%9d%bf%e6%8a%80%e6%9c%af%e6%a0%88%e9%80%89%e5%9e%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;8.2 看板技术栈选型
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;方案&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;开发效率&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;定制能力&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;适合场景&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Grafana&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;极高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中（插件生态）&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;快速搭建、工程团队自用&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;Superset&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;中高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;数据分析导向、多数据源&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;自研前端（React/Vue + ECharts）&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;低&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;极高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;面向客户的商业产品&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;&lt;strong&gt;低代码平台（宜搭/明道云）&lt;/strong&gt;&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;高&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;低&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;简单场景、快速验证&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;实际项目中的常见组合&lt;/strong&gt;：工程团队内部用 Grafana 快速验证数据管道是否正常，面向管理层和操作工的大屏则用自研前端——因为管理层需要的不只是图表，还有排产信息、绩效指标、行动建议等业务上下文。&lt;/p&gt;
&lt;h3 id=&#34;83-实时性要求与推送机制&#34;&gt;&lt;a href=&#34;#83-%e5%ae%9e%e6%97%b6%e6%80%a7%e8%a6%81%e6%b1%82%e4%b8%8e%e6%8e%a8%e9%80%81%e6%9c%ba%e5%88%b6&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;8.3 实时性要求与推送机制
&lt;/h3&gt;&lt;p&gt;OEE 看板的刷新频率取决于谁在看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;车间大屏&lt;/strong&gt;：5~15 秒刷新一次（WebSocket 推送），展示整线状态&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;管理者手机/PC&lt;/strong&gt;：1~5 分钟轮询或推送即可，重点是趋势和异常通知&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工程师调试界面&lt;/strong&gt;：实时（100ms~1s），用于排查设备问题&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;推送机制推荐 &lt;strong&gt;WebSocket + SSE（Server-Sent Events）&lt;/strong&gt; 的组合。WebSocket 用于双向交互（工程师主动查询设备详情），SSE 用于单向推送（看板被动接收更新）。&lt;/p&gt;
&lt;h2 id=&#34;九数据治理管道里最容易欠的债&#34;&gt;&lt;a href=&#34;#%e4%b9%9d%e6%95%b0%e6%8d%ae%e6%b2%bb%e7%90%86%e7%ae%a1%e9%81%93%e9%87%8c%e6%9c%80%e5%ae%b9%e6%98%93%e6%ac%a0%e7%9a%84%e5%80%ba&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;九、数据治理：管道里最容易欠的债
&lt;/h2&gt;&lt;p&gt;技术架构搭好后，真正决定系统能不能长期健康运行的，是数据治理——而这是大多数项目最容易忽略的部分。&lt;/p&gt;
&lt;h3 id=&#34;91-点位管理tag-management&#34;&gt;&lt;a href=&#34;#91-%e7%82%b9%e4%bd%8d%e7%ae%a1%e7%90%86tag-management&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;9.1 点位管理（Tag Management）
&lt;/h3&gt;&lt;p&gt;一个中等规模的工厂可能有 5~10 万个数据点位。没有统一的点位管理规范，半年后就会陷入混乱：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同一个 PLC 地址在不同系统里叫不同的名字&lt;/li&gt;
&lt;li&gt;点位含义只有最初配置的工程师知道，人员变动后变成「孤儿点位」&lt;/li&gt;
&lt;li&gt;新增点位没有审批流程，随意添加导致命名冲突&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;建议建立点位注册表（Tag Registry）&lt;/strong&gt;：每个点位有唯一的 ID、标准化的命名、清晰的描述、所属设备/系统的映射关系、数据类型和单位、采集频率和质量要求。这个注册表应该版本化管理，与 MES 的设备主数据联动。&lt;/p&gt;
&lt;h3 id=&#34;92-数据质量监控&#34;&gt;&lt;a href=&#34;#92-%e6%95%b0%e6%8d%ae%e8%b4%a8%e9%87%8f%e7%9b%91%e6%8e%a7&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;9.2 数据质量监控
&lt;/h3&gt;&lt;p&gt;数据管道里最常见的问题不是&amp;quot;系统挂了&amp;quot;，而是&lt;strong&gt;数据悄悄变脏了&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;传感器老化导致读数漂移（温度持续偏高 2°C）&lt;/li&gt;
&lt;li&gt;PLC 程序更新后地址映射变了（原来读电流值的地址变成了读速度值）&lt;/li&gt;
&lt;li&gt;边缘网关重启后时间戳跳变（NTP 未同步）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;需要建立&lt;strong&gt;数据质量的自动化巡检&lt;/strong&gt;：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;新鲜度检查&lt;/strong&gt;：某点位超过预期频率未更新，触发告警&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;范围检查&lt;/strong&gt;：数值超出物理合理范围（温度 &amp;lt; -40°C 或 &amp;gt; 500°C）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;一致性检查&lt;/strong&gt;：设备状态为&amp;quot;运行中&amp;quot;但功率读数为零，明显矛盾&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;完整性检查&lt;/strong&gt;：预期有 N 个点位在上报，实际只收到 M 个（M &amp;lt; N）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;93-主数据同步&#34;&gt;&lt;a href=&#34;#93-%e4%b8%bb%e6%95%b0%e6%8d%ae%e5%90%8c%e6%ad%a5&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;9.3 主数据同步
&lt;/h3&gt;&lt;p&gt;OEE 计算依赖的主数据包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;设备主数据&lt;/strong&gt;：设备编号、型号、所属产线/工位、额定参数&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;产品主数据&lt;/strong&gt;：产品编号、理想节拍时间、质量标准&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;排产主数据&lt;/strong&gt;：班次日历、生产计划、换型计划&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些主数据通常散落在 ERP、MES、APS、PLM 等多个系统中。数据管道需要一个&lt;strong&gt;主数据同步层&lt;/strong&gt;，确保 OEE 计算引擎在计算时引用的是最新、一致的主数据。&lt;/p&gt;
&lt;h2 id=&#34;十安全与合规工业数据管道的底线&#34;&gt;&lt;a href=&#34;#%e5%8d%81%e5%ae%89%e5%85%a8%e4%b8%8e%e5%90%88%e8%a7%84%e5%b7%a5%e4%b8%9a%e6%95%b0%e6%8d%ae%e7%ae%a1%e9%81%93%e7%9a%84%e5%ba%95%e7%ba%bf&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;十、安全与合规：工业数据管道的底线
&lt;/h2&gt;&lt;h3 id=&#34;101-otit-网络隔离&#34;&gt;&lt;a href=&#34;#101-otit-%e7%bd%91%e7%bb%9c%e9%9a%94%e7%a6%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;10.1 OT/IT 网络隔离
&lt;/h3&gt;&lt;p&gt;IEC 62443 标准定义了工业网络安全的层级模型。数据管道跨越 OT 和 IT 网络时，必须遵守以下原则：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DMZ 架构&lt;/strong&gt;：在 OT 和 IT 网络之间设置 DMZ，边缘网关部署在 DMZ 中&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;单向数据流&lt;/strong&gt;：OT→IT 方向的数据流通过单向网关或严格白名单控制，IT→OT 方向的命令下发需要二次认证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;最小权限&lt;/strong&gt;：边缘网关对 PLC 只读（读寄存器），不写（不改参数），除非有明确的远程控制需求&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;102-数据加密与传输安全&#34;&gt;&lt;a href=&#34;#102-%e6%95%b0%e6%8d%ae%e5%8a%a0%e5%af%86%e4%b8%8e%e4%bc%a0%e8%be%93%e5%ae%89%e5%85%a8&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;10.2 数据加密与传输安全
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;OT 内部&lt;/strong&gt;：OPC UA 自带证书加密，Modbus 无加密（需要 VPN 或 VLAN 隔离补偿）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OT→IT 跨越&lt;/strong&gt;：MQTT over TLS 1.2+，设备证书 + 用户名密码双重认证&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;IT 内部&lt;/strong&gt;：Kafka 集群间通信启用 SSL，Schema Registry 启用 HTTPS&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;103-审计与追溯&#34;&gt;&lt;a href=&#34;#103-%e5%ae%a1%e8%ae%a1%e4%b8%8e%e8%bf%bd%e6%ba%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;10.3 审计与追溯
&lt;/h3&gt;&lt;p&gt;所有设备状态变更、手动覆盖操作、系统配置变更都应该记录审计日志。在医疗器械、汽车、航空航天等受监管行业，这些审计日志是合规审查的硬性要求。&lt;/p&gt;
&lt;h2 id=&#34;十一工程落地的典型陷阱&#34;&gt;&lt;a href=&#34;#%e5%8d%81%e4%b8%80%e5%b7%a5%e7%a8%8b%e8%90%bd%e5%9c%b0%e7%9a%84%e5%85%b8%e5%9e%8b%e9%99%b7%e9%98%b1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;十一、工程落地的典型陷阱
&lt;/h2&gt;&lt;h3 id=&#34;陷阱一过度采集&#34;&gt;&lt;a href=&#34;#%e9%99%b7%e9%98%b1%e4%b8%80%e8%bf%87%e5%ba%a6%e9%87%87%e9%9b%86&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;陷阱一：过度采集
&lt;/h3&gt;&lt;p&gt;&amp;ldquo;先把所有能采的数据都采上来，以后再说用不用&amp;rdquo;——这是最常见的错误。结果就是存储成本飙升、数据管道拥堵、真正需要的数据反而被淹没在噪声里。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正确做法&lt;/strong&gt;：从业务场景倒推采集需求。OEE 需要哪些数据？能耗分析需要哪些？质量追溯需要哪些？每个场景明确后，再汇总去重，形成最终的采集点位清单。&lt;/p&gt;
&lt;h3 id=&#34;陷阱二忽视边缘侧的运维&#34;&gt;&lt;a href=&#34;#%e9%99%b7%e9%98%b1%e4%ba%8c%e5%bf%bd%e8%a7%86%e8%be%b9%e7%bc%98%e4%be%a7%e7%9a%84%e8%bf%90%e7%bb%b4&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;陷阱二：忽视边缘侧的运维
&lt;/h3&gt;&lt;p&gt;边缘网关分布在车间各个角落，不像服务器可以集中管理。如果运维工具不到位，一个网关故障可能需要工程师跑到现场插 U 盘重启。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正确做法&lt;/strong&gt;：选型时优先考虑支持远程 OTA 升级、远程日志采集、远程配置下发的网关方案。K3s（轻量 K8s）+ GitOps 是目前比较成熟的边缘运维模式。&lt;/p&gt;
&lt;h3 id=&#34;陷阱三实时性期望不切实际&#34;&gt;&lt;a href=&#34;#%e9%99%b7%e9%98%b1%e4%b8%89%e5%ae%9e%e6%97%b6%e6%80%a7%e6%9c%9f%e6%9c%9b%e4%b8%8d%e5%88%87%e5%ae%9e%e9%99%85&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;陷阱三：实时性期望不切实际
&lt;/h3&gt;&lt;p&gt;&amp;ldquo;我要毫秒级实时&amp;rdquo;——先问清楚：谁需要毫秒级？操作工在 HMI 上需要毫秒级响应，这个应该由 PLC + SCADA 本地闭环解决。OEE 看板需要毫秒级吗？15 秒刷新和 1 秒刷新对管理决策的影响微乎其微，但系统成本可能差 3 倍。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正确做法&lt;/strong&gt;：按消费者分层定义实时性 SLA，而不是全链路统一追求最高实时性。&lt;/p&gt;
&lt;h3 id=&#34;陷阱四oee-指标政治化&#34;&gt;&lt;a href=&#34;#%e9%99%b7%e9%98%b1%e5%9b%9boee-%e6%8c%87%e6%a0%87%e6%94%bf%e6%b2%bb%e5%8c%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;陷阱四：OEE 指标政治化
&lt;/h3&gt;&lt;p&gt;OEE 是一个诊断工具，不是绩效考核工具。一旦 OEE 数字与员工绩效挂钩，就会出现数据造假——手动修改设备状态、隐瞒短暂停机、虚报产量。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;正确做法&lt;/strong&gt;：OEE 看板定位给工程团队和管理层用于发现改进机会，而非惩罚操作工。自动采集的数据尽量不经人工干预，需要干预的地方留下审计痕迹。&lt;/p&gt;
&lt;h2 id=&#34;十二一条参考的技术栈组合&#34;&gt;&lt;a href=&#34;#%e5%8d%81%e4%ba%8c%e4%b8%80%e6%9d%a1%e5%8f%82%e8%80%83%e7%9a%84%e6%8a%80%e6%9c%af%e6%a0%88%e7%bb%84%e5%90%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;十二、一条参考的技术栈组合
&lt;/h2&gt;&lt;p&gt;最后给一个经过多个项目验证的参考技术栈，适合中等规模（50~200 台设备）的离散制造企业：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;层级&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;技术选型&lt;/th&gt;
					&lt;th style=&#34;text-align: left&#34;&gt;说明&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;设备接入&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Kepware / Ignition Edge&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;成熟的工业 OPC 网关，支持 150+ 驱动&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;边缘协议&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;OPC UA → MQTT (Sparkplug B)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Sparkplug B 定义了标准化的工业 MQTT Payload&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;MQTT Broker&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;EMQX Enterprise&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;百万级连接，内建规则引擎桥接 Kafka&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;消息总线&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Apache Kafka (3 Broker)&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;持久化、回溯消费、精确一次语义&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;流处理&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Apache Flink&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;设备状态机、OEE 实时计算、异常检测&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;时序存储&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;TDengine&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;超级表建模，高压缩比，SQL 兼容&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;关系存储&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;PostgreSQL&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;主数据、配置、审计日志&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;看板前端&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;React + ECharts / Grafana&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;大屏自研，工程看板用 Grafana&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;监控运维&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;Prometheus + Grafana&lt;/td&gt;
					&lt;td style=&#34;text-align: left&#34;&gt;管道本身的健康监控&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote&gt;
&lt;p&gt;没有银弹。每个工厂的 PLC 品牌组合、网络拓扑、团队能力都不一样。上面这张表是起点，不是终点。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;十三写在架构之外&#34;&gt;&lt;a href=&#34;#%e5%8d%81%e4%b8%89%e5%86%99%e5%9c%a8%e6%9e%b6%e6%9e%84%e4%b9%8b%e5%a4%96&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;十三、写在架构之外
&lt;/h2&gt;&lt;p&gt;技术架构解决的是&amp;quot;数据怎么流&amp;quot;的问题，但决定一个工业物联网项目成败的，往往是架构之外的因素：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;业务目标的清晰度&lt;/strong&gt;：是追求&amp;quot;看见&amp;quot;（数据采集 + 可视化），还是追求&amp;quot;优化&amp;quot;（数据驱动决策 + 闭环控制）？两者的投入和复杂度差一个数量级。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;组织的配合度&lt;/strong&gt;：IT 部门懂系统但不懂工艺，OT 部门懂设备但不懂软件。项目需要真正理解两端语言的&amp;quot;翻译者&amp;quot;——这个角色在国内制造业中极度稀缺。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;渐进式推进&lt;/strong&gt;：不要试图一步到位搭建完整的六层架构。从一条产线、几台关键设备开始，验证数据流通、OEE 计算、看板展示的最小闭环，再逐步扩展。先让数据流起来，再让数据产生价值。&lt;/p&gt;
&lt;p&gt;制造业的数字化不是一场技术秀，而是一场持久战。数据管道是这场战役的后勤线——它不需要最炫的技术，但需要最扎实的工程质量。当所有数据都能准确、及时、可靠地从车间流到决策者面前时，改善才有据可依，优化才有迹可循。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
