3、数据采集架构:从PLC到数据库的链路
在厂务数据清洗工作中,理解数据从产生到存储的完整链路是进行异常值过滤的前提。PLC(可编程逻辑控制器)采集的原始信号需要经过多层中间件的转发、协议转换与预处理,最终落入中心数据库。每一层都可能引入或消除数据异常,因此掌握链路结构是制定清洗策略的基础。
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,负责批量写入。异常表现为写入延迟、重复主键。
3.3 边缘服务器在链路中的关键作用
边缘服务器是数据清洗的第一道防线。与中心数据库相比,边缘侧清洗具有低延迟、高吞吐、可离线运行的优势。以下是边缘服务器在链路中承担的核心任务:
- 数据缓存与断点续传: 当中心数据库不可用时,边缘服务器将数据暂存于本地磁盘或内存队列,待连接恢复后批量回传,避免数据丢失。
- 初步异常过滤: 基于固定阈值(如温度 > 100°C)、变化率(如压力突变 > 10%/s)或设备状态(如停机期间的数据置为无效)进行第一轮清洗。
- 时间戳对齐与插值: 将来自不同PLC、不同采样周期的数据统一到同一时间基准上,生成等间隔时序数据。
- 数据压缩与聚合: 将毫秒级原始数据聚合成秒级或分钟级均值/极值,减少中心库的存储压力。
- 协议转换与标准化: 将不同厂商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模式运行,通过心跳检测实现故障转移。
- 边缘服务器集群: 多台边缘节点组成集群,数据分片存储,单节点故障不影响整体采集。
- 数据库读写分离: 写入主库的同时同步到从库,查询请求路由到从库,降低写入压力。
- 数据回填机制: 当链路恢复后,边缘服务器自动将缓存数据按时间顺序回填到中心数据库,保证数据连续性。
3.6 链路中的数据质量监控点
为了及时发现链路中的异常,需要在关键节点设置数据质量监控指标。以下是在每个层级推荐监控的指标:
| 监控位置 | 监控指标 | 告警阈值示例 | 异常含义 |
|---|---|---|---|
| PLC | 扫描周期抖动 | > 20% 标称周期 | PLC负载过高或网络阻塞 |
| 网关 | 协议转换错误率 | > 1% | 寄存器映射配置错误 |
| 边缘服务器 | 缓存队列深度 | > 80% 容量 | 下游写入速度跟不上采集速度 |
| 中心数据库 | 写入TPS(每秒事务数) | 低于基线 50% | 数据库性能瓶颈或连接池耗尽 |
| 全链路 | 端到端延迟P99 | > 60 s | 链路中存在严重阻塞或故障 |