数据采集基础:常见传感器与协议(Modbus、OPC UA、MQTT),数据清洗与归一化处理
说到数据采集,很多新手第一反应就是“接上线,读数据就行”。其实没那么简单。我搞工业物联网这些年,见过太多因为协议不通、数据格式混乱导致的翻车现场。这一章咱们就聊聊传感器、协议和数据清洗,把基础打牢。
一、传感器:工业血脉的“末梢神经”
传感器种类太多,但巡检场景下常用的就那几类。我个人习惯把它们按信号类型分:
| 传感器类型 | 输出信号 | 典型应用 |
|---|---|---|
| 温度(热电偶/热电阻) | 4-20mA / 热电偶电压 | 电机轴承、锅炉炉膛 |
| 压力(压阻式/电容式) | 4-20mA / 0-10V | 液压系统、管道压力 |
| 振动(加速度/速度) | 4-20mA / IEPE | 旋转机械、风机 |
| 流量(电磁/超声波) | 脉冲 / 4-20mA | 冷却水、气体输送 |
| 液位(雷达/超声波) | 4-20mA / Modbus RTU | 储罐、水池 |
二、三大工业通信协议:Modbus、OPC UA、MQTT
协议这东西,说白了就是约好的“说话方式”。设备厂家各说各话,你得当个翻译官。我按应用层级讲:
2.1 Modbus:工业届的“普通话”
Modbus分RTU(串口)和TCP(以太网)。RTU用RS485总线,一根线上挂几十个设备。TCP直接用网线,封包格式几乎一样。
举个读取温度寄存器的例子:
// Modbus RTU 读取保持寄存器(功能码03)
// 请求:从站地址 0x01,功能码 0x03,起始地址 0x0064,寄存器数量 0x0002
// 报文:01 03 00 64 00 02 85 F8
// 响应:01 03 04 01 2C 01 40 xx xx
// 温度 = (0x012C + 0x0140/100) = 300 + 3.2 = 303.2°C
2.2 OPC UA:面向未来的统一架构
OPC UA比Modbus高级很多。它不光传数据,还自带数据模型、安全认证、历史记录。说白了,Modbus只告诉你“值是多少”,OPC UA还能告诉你“这个值代表什么、单位是什么、量程是多少”。
重要概念:
- 地址空间: 每个变量是一个节点,有唯一NodeId
- 订阅机制: 客户端订阅变量,变化时服务器推送,不用轮询
- 安全: 支持证书加密,适合跨企业网
OPC UA的痛点?嗯,协议栈复杂,嵌入式设备资源紧张时跑不动。而且早期版本不同厂商兼容性差。我建议:新项目能用OPC UA就用,但一定要先做互操作性测试。
2.3 MQTT:物联网时代的轻量级消息
MQTT是发布/订阅模式。设备发消息到主题(Topic),后端订阅。最常用的是QoS 1(至少一次)和QoS 2(恰好一次)。
典型主题设计:
factory/zone1/pump02/temperature → payload: 85.2
factory/zone1/pump02/pressure → payload: 2.3
factory/zone1/pump02/status → payload: running
MQTT适合无线、低带宽、不稳定的场景。注意:千万别把敏感数据明文发!我见过工厂Wi-Fi弱密码,被隔壁车间搞了个恶作剧,把风机转速改到0。之后所有MQTT都强制TLS加密。
三、协议选型对比
| 特性 | Modbus | OPC UA | MQTT |
|---|---|---|---|
| 传输模式 | 请求/响应 | 客户端/服务器或发布/订阅 | 发布/订阅 |
| 数据模型 | 无(纯数值) | 丰富(对象、方法、类型) | 简单(字符串/二进制) |
| 安全性 | 无(或简单校验) | 强(证书加密) | TLS + 用户名密码 |
| 实时性 | 高(轮询周期可控) | 中(订阅推送,延迟可接受) | 中(依赖Broker) |
| 适用场景 | PLC、仪表、DCS | MES、SCADA、ERP集成 | 远程监测、边缘网关 |
你想想看,现场设备如果全是新采购,统一OPC UA最省心。但如果有一堆老旧温控表,老老实实走Modbus转网关吧。
四、数据清洗与归一化处理
数据采集回来,你以为就能直接用了?太天真了。原始数据里常夹杂着:超量程、通讯毛刺、丢包、重复值、单位不一致。我称之为“数据的三道关”:
4.1 第一关:数据清洗
- 去冗余: 相同时间戳的重复值只留一个(比如MQTT QoS 1可能重复投递)
- 异常值过滤: 使用帕累托准则(3σ)或IQR方法剔除飞点。我习惯保留原始值的同时标记异常,而不是直接删除——万一后面分析需要呢?
- 填补空值: 短时间缺失用线性插值,长时间缺失标记为“不可用”。千万别用均值填充,会掩盖故障。
4.2 第二关:归一化
归一化就是把不同量纲的数据压到同一尺度,比如0~1或-1~1。常用两种:
// Min-Max 归一化
x_norm = (x - x_min) / (x_max - x_min)
// Z-Score 标准化
x_norm = (x - μ) / σ
Min-Max适合有明确上下限的传感器(如温度0-200℃),Z-Score适合分布未知的情况。我在做振动分析时坚决用Z-Score,因为加速度幅值变化大,Min-Max会被偶尔的尖峰压平移。
4.3 第三关:时间戳对齐
不同协议的采样时间戳不同——Modbus轮询有延迟,MQTT有网络抖动。我建议在采集层统一用网关的系统时间打戳,然后按固定周期(比如1秒)重采样。重采样方法:
- 最近邻: 取最接近时刻的值,简单快速
- 线性插值: 适合连续变量,但丢点超过一个周期就别用了
五、数据采集整体流程
下面这张图把传感器、协议、清洗到归一化的链条串起来,你看一遍就明白了:
好了,这一章的重点就是这些。传感器选型要匹配信号类型和量程,协议选择要看现场设备能力和集成需求,数据清洗和归一化不能偷懒。基础打牢了,后面的阈值设计与实时巡检才能稳。你想想看,如果连数据都是错的,阈值调得再精细有什么用?