3、数据采集架构:从PLC到数据库的链路

在厂务数据清洗工作中,理解数据从产生到存储的完整链路是进行异常值过滤的前提。PLC(可编程逻辑控制器)采集的原始信号需要经过多层中间件的转发、协议转换与预处理,最终落入中心数据库。每一层都可能引入或消除数据异常,因此掌握链路结构是制定清洗策略的基础。

PLC → 网关 → 边缘服务器 → 中心数据库 四层链路架构 PLC 控制器 采集层 原始信号 / 寄存器值 工业网关 协议转换层 Modbus / Profinet → MQTT 边缘服务器 预处理层 缓存 / 初步过滤 / 压缩 中心数据库 存储层 时序库 / 关系库 链路说明: • PLC:直接连接传感器/执行器,采集原始模拟量或数字量信号,数据格式为寄存器地址+值。 • 工业网关:负责将PLC私有协议(如Modbus RTU、Profinet)转换为标准IP网络协议(如MQTT、OPC UA)。 • 边缘服务器:在靠近设备侧进行数据缓存、初步异常过滤、时间戳对齐与压缩,降低中心库写入压力。 • 中心数据库:持久化存储清洗后的高质量时序数据,供上层应用(报表、AI分析、可视化)调用。

3.1 各层级功能与数据特征

数据在链路中每经过一层,其格式、粒度与质量都会发生变化。下表总结了各层级的关键特征与常见异常来源:

层级 主要功能 数据格式 典型异常来源 数据量级
PLC 信号采集、逻辑控制 寄存器值(INT/FLOAT/BOOL) 传感器漂移、电磁干扰、接线松动 毫秒级原始点
工业网关 协议转换、数据映射 JSON / MQTT Payload 丢包、重传、时间戳错乱、值截断 秒级聚合包
边缘服务器 缓存、初步清洗、压缩 Parquet / CSV / 内存表 缓存溢出、过滤规则误判、时钟偏差 分钟级批次
中心数据库 持久化存储、查询服务 时序表(Tag + Value + Timestamp) 写入冲突、索引碎片、重复数据 小时/天级分区

关键认知: 异常值并非只在PLC端产生。网关的协议转换、边缘服务器的缓存策略、数据库的写入机制都可能引入或放大数据异常。清洗策略必须覆盖全链路,而非仅关注PLC原始点。

3.2 链路中的数据流与协议栈

从PLC到数据库的数据流涉及多层协议栈。理解协议栈有助于定位数据异常发生的具体环节。以下是一个典型的协议栈映射:

  • 物理层与数据链路层: RS-485 / Ethernet,负责PLC与网关之间的物理连接。此层异常表现为通信超时、CRC校验错误。
  • 应用层(PLC侧): Modbus RTU / Profinet / EtherNet/IP,定义寄存器读写规则。异常表现为地址越界、值域溢出。
  • 传输层(网关侧): TCP / UDP,保证数据包有序到达。异常表现为丢包重传导致的时间戳乱序。
  • 消息层(网关→边缘): MQTT / OPC UA,定义主题与数据模型。异常表现为主题丢失、QoS降级导致数据缺失。
  • 存储层(边缘→中心): JDBC / ODBC / InfluxDB Line Protocol,负责批量写入。异常表现为写入延迟、重复主键。
协议栈分层与常见异常映射 存储层(JDBC / Line Protocol) 消息层(MQTT / OPC UA) 传输层(TCP / UDP) 应用层(Modbus / Profinet) 物理层(RS-485 / Ethernet) 各层典型异常与清洗关注点 • 存储层:重复数据、时间戳跳变、写入延迟导致的数据空洞 • 消息层:主题丢失、QoS降级、Payload格式错误、字段缺失 • 传输层:丢包重传导致乱序、TCP窗口阻塞引发数据积压 • 应用层:寄存器地址偏移、值域溢出、字节序错误(大端/小端) • 物理层:通信超时、CRC校验失败、信号衰减导致数值跳变 • 跨层问题:时钟不同步导致全链路时间戳不一致

3.3 边缘服务器在链路中的关键作用

边缘服务器是数据清洗的第一道防线。与中心数据库相比,边缘侧清洗具有低延迟、高吞吐、可离线运行的优势。以下是边缘服务器在链路中承担的核心任务:

  1. 数据缓存与断点续传: 当中心数据库不可用时,边缘服务器将数据暂存于本地磁盘或内存队列,待连接恢复后批量回传,避免数据丢失。
  2. 初步异常过滤: 基于固定阈值(如温度 > 100°C)、变化率(如压力突变 > 10%/s)或设备状态(如停机期间的数据置为无效)进行第一轮清洗。
  3. 时间戳对齐与插值: 将来自不同PLC、不同采样周期的数据统一到同一时间基准上,生成等间隔时序数据。
  4. 数据压缩与聚合: 将毫秒级原始数据聚合成秒级或分钟级均值/极值,减少中心库的存储压力。
  5. 协议转换与标准化: 将不同厂商PLC的私有数据模型映射为统一的厂务数据模型(如Tag命名规范、单位统一)。

实践建议: 在边缘服务器上部署轻量级规则引擎(如Node-RED、eKuiper),通过可视化流编排实现异常过滤逻辑,降低开发成本。同时保留原始数据缓存至少72小时,以便回溯分析清洗效果。

3.4 链路延迟与数据新鲜度

数据从PLC采集到最终落入中心数据库,会经历一定的传输与处理延迟。延迟大小直接影响异常检测的实时性。下表给出了典型场景下的延迟参考:

链路阶段 典型延迟 影响因素 对清洗的影响
PLC → 网关 10 ~ 100 ms 物理介质、PLC扫描周期 延迟稳定,异常多为瞬时跳变
网关 → 边缘服务器 100 ms ~ 2 s 网络带宽、MQTT QoS等级 可能出现乱序,需按时间戳重排
边缘服务器处理 500 ms ~ 5 s 过滤规则复杂度、缓存大小 过滤延迟可能导致数据堆积
边缘 → 中心数据库 1 s ~ 30 s 批量写入策略、网络抖动 批量写入期间数据不可见
全链路端到端 2 ~ 40 s 综合以上因素 实时清洗需考虑延迟窗口

注意: 如果厂务系统要求秒级实时告警(如气体泄漏检测),则边缘服务器必须采用流式处理架构,避免批量写入带来的延迟。此时中心数据库仅作为归档存储,实时清洗逻辑全部下沉到边缘侧。

3.5 链路冗余与高可用设计

工业场景对数据完整性要求极高,单点故障可能导致数据断流。以下是在链路设计中常用的冗余策略:

  • PLC双网口冗余: 主备网口同时连接两台网关,当主网关故障时自动切换。
  • 网关主备切换: 两台网关以Active-Standby模式运行,通过心跳检测实现故障转移。
  • 边缘服务器集群: 多台边缘节点组成集群,数据分片存储,单节点故障不影响整体采集。
  • 数据库读写分离: 写入主库的同时同步到从库,查询请求路由到从库,降低写入压力。
  • 数据回填机制: 当链路恢复后,边缘服务器自动将缓存数据按时间顺序回填到中心数据库,保证数据连续性。
冗余链路架构示意(主备切换) PLC 双网口 网关(主) 网关(备) 边缘(主) 边缘(备) 中心数据库 实线:主链路 虚线:备用链路

3.6 链路中的数据质量监控点

为了及时发现链路中的异常,需要在关键节点设置数据质量监控指标。以下是在每个层级推荐监控的指标:

监控位置 监控指标 告警阈值示例 异常含义
PLC 扫描周期抖动 > 20% 标称周期 PLC负载过高或网络阻塞
网关 协议转换错误率 > 1% 寄存器映射配置错误
边缘服务器 缓存队列深度 > 80% 容量 下游写入速度跟不上采集速度
中心数据库 写入TPS(每秒事务数) 低于基线 50% 数据库性能瓶颈或连接池耗尽
全链路 端到端延迟P99 > 60 s 链路中存在严重阻塞或故障