3. 数据采集与边缘预处理

在制造时序数据生命周期中,采集层决定了后续所有分析的上限。车间现场的设备往往来自不同年代、不同厂商:PLC 可能只支持 Modbus RTU,数控机床可能提供 OPC UA 服务端,而新增的传感器网关则倾向用 MQTT 上报。边缘节点的职责不是简单“转发”,而是在数据离开产线之前完成协议归一、质量修复、体积压缩和断网保护。本节围绕一条真实可落地的采集链路展开。

一、三种协议的接入定位

OPC UA、Modbus、MQTT 并不是互相替代的关系,它们在采集链路中承担不同角色。Modbus(RTU/TCP)是面向寄存器的轮询协议,适合读取 PLC、变频器、电表等设备的保持寄存器与输入寄存器,典型参数是站号、功能码、起始地址、寄存器数量和轮询周期。OPC UA 是带信息模型的订阅协议,适合从数控系统、机器人控制器获取带语义的节点数据,支持订阅与数据变更通知,能显著降低无效轮询。MQTT 则是轻量发布/订阅传输协议,适合边缘节点向上层平台汇聚数据,主题层级通常按“厂区/车间/产线/设备/测点”组织。

一个常见的组合是:边缘网关用 Modbus 轮询底层设备,用 OPC UA 订阅关键机床,再把归一化后的数据以 MQTT 发布到平台。这样既覆盖了存量设备,又保留了新设备的语义信息。

# 示例:Modbus 轮询参数(假设值)
站号: 1
功能码: 03(读保持寄存器)
起始地址: 40001
寄存器数量: 10
轮询周期: 1000 ms
超时: 300 ms
重试: 2 次

# 示例:MQTT 上报主题
factory/A1/line2/cnc01/spindle_speed
factory/A1/line2/cnc01/temperature

二、边缘清洗:把“脏数据”挡在入库之前

现场数据常见的问题包括:传感器断线导致读数为 0 或极值、通信抖动造成重复帧、时间戳缺失或漂移、量纲不统一。边缘清洗要按顺序处理,否则会互相干扰。推荐的处理顺序是:时间戳对齐 → 去重 → 异常值判定 → 缺失值处理 → 单位归一。

异常值判定不能只靠固定阈值。以主轴温度为例,正常范围可能是 35~75 ℃,但设备刚启动时温度会从室温爬升。若简单用 75 ℃ 上限,会把启动阶段误判为异常。更稳妥的做法是“物理量程 + 变化率”双重判断:量程设为 -20~150 ℃,变化率限制为每秒不超过 5 ℃,超过则标记为可疑并暂存,等待下一帧确认。缺失值处理也要区分场景:短时丢包可用线性插值,长时间断线应写入质量码而非伪造数值。

清洗阶段必须保留“原始值 + 质量码 + 处理标记”,否则后续无法追溯数据是被修正过还是真实采集的。

三、降采样与压缩:在保真与体积之间取舍

高频采集(如 1 kHz 振动)直接上传会迅速耗尽带宽和存储。降采样不是简单抽点,而要根据信号特征选择策略。对于温度、压力这类缓变量,可采用“时间窗口 + 均值/中位数”;对于振动、电流这类快变量,应保留峰值、均方根和波形特征,而不是只取平均。常用做法是:边缘保留原始高频数据 1~5 分钟用于故障回溯,同时向上层发送 1 秒粒度的聚合值。

压缩方面,工业时序数据适合“有损 + 无损”组合。无损压缩可用 Delta 编码加 LZ4,适合保留原始波形;有损压缩可用旋转门(Swinging Door)或死区压缩,只记录变化超过阈值的点。例如温度死区设为 0.2 ℃,则 0.2 ℃ 以内的波动不产生新点,数据量可下降一个数量级,而趋势仍然可辨。

四、缓存与断点续传:断网不等于丢数

车间网络并不稳定,边缘节点必须具备本地缓存能力。缓存设计的关键是“有界队列 + 持久化 + 确认删除”。数据先写入本地环形缓冲区或嵌入式数据库,再按 MQTT QoS 1 发布;只有收到平台确认后才删除本地副本。断网期间数据持续堆积,恢复后按时间顺序补传,并携带原始时间戳,避免平台按接收时间错误排序。

断点续传需要两个游标:本地写入位置和已确认位置。重连后从已确认位置之后开始补传,补传速率要限流,避免瞬间冲垮平台。若缓存达到上限,应优先丢弃低价值数据(如已聚合的均值),保留原始异常段。

边缘采集与预处理链路 现场设备 PLC / 变频器(Modbus) 数控机床(OPC UA) 传感器网关(MQTT) 协议接入层 Modbus 轮询 OPC UA 订阅 MQTT 发布/订阅 统一时间戳与量纲 边缘清洗 时间戳对齐 / 去重 量程 + 变化率判异 缺失插值 / 质量码 原始值 + 标记保留 降采样与压缩 缓变量:窗口均值 快变量:峰值/RMS Delta + LZ4 死区压缩阈值 0.2℃ 本地缓存与断点续传 有界环形缓冲区 写入位置 / 已确认位置 MQTT QoS 1 发布 收到 ACK 才删除 重连后限流补传 保留原始时间戳 上层平台(时序数据库 / 分析服务) 按原始时间戳入库 · 质量码随行 · 支持异常段回溯 断网场景 数据持续写入本地 恢复后按序补传

五、一个可复现的采集参数示例

假设某产线有 1 台 PLC、1 台数控机床和 1 个温度传感器网关,边缘节点按以下策略运行:Modbus 每 1 秒轮询 10 个寄存器;OPC UA 订阅主轴转速与进给率,采样间隔 200 ms;温度网关以 MQTT 上报,周期 5 秒。清洗阶段对温度做量程 -20~150 ℃ 与变化率 5 ℃/s 双重判断;降采样阶段对温度按 10 秒窗口取均值,对主轴转速保留 1 秒峰值;压缩阶段温度死区 0.2 ℃,转速死区 5 rpm。缓存容量设为 2 GB,断网后按 200 条/秒限流补传。

判断链路是否正常,可以观察三个指标:一是平台侧数据时间戳是否连续、是否存在大段空洞;二是质量码中“可疑/插值”比例是否异常升高;三是断网恢复后补传速率是否稳定、是否出现重复数据。若质量码异常比例持续超过 5%,应优先检查传感器接线与轮询超时,而不是直接调整压缩阈值。

降采样和压缩一旦在边缘执行,原始细节就无法在平台侧恢复。因此必须明确哪些测点允许有损、哪些必须保留原始流,并在配置中显式标注。