4. 数据采集与传感器技术
异常告警系统的第一道门槛不是算法,而是数据。没有稳定、实时、语义清晰的数据源接入,再灵敏的告警规则也只能在空数据上打转。智慧工厂的数据源天然是异构的:底层有PLC的毫秒级过程量,中间层有SCADA的集中监控与历史归档,现场还散布着温振、电流、气体等IoT传感器,而上层MES、能源管理系统又需要统一语义的数据接口。本节围绕这四类数据源,讲清它们的接入方式、协议选择与工程落地要点。
一、核心原理:四类数据源的分层与语义差异
从数据产生的物理位置看,PLC位于控制层,直接连接执行器与传感器,数据以寄存器、线圈、数据块的形式存在,刷新周期常在10~100ms;SCADA位于监控层,通过轮询PLC获得数据,并附加报警、趋势、操作记录等上下文;IoT传感器通常独立组网,通过MQTT、LoRa、Modbus RTU等方式上报,采样频率从秒级到分钟级不等;OPC UA则是一种跨层的信息建模与通信标准,它不产生数据,而是把上述数据统一成带类型、带语义的地址空间。
理解这一分层,才能回答“告警系统该从哪一层取数”。高频振动、急停信号应从PLC直取;设备综合效率、批次状态可从SCADA或MES获取;环境温湿度、电机表面温度等辅助量适合走IoT网关;而需要跨系统关联的告警,则优先通过OPC UA统一建模后订阅。
二、方法流程:从协议选型到告警可用数据
接入工作可以按五步推进。第一步是盘点数据源,明确每个测点的物理含义、量程、单位、采样周期和告警等级。第二步是选择协议:PLC侧优先使用原生协议或Modbus TCP;跨厂商、跨层级则用OPC UA;无线传感器用MQTT。第三步是部署采集服务或边缘网关,完成协议转换、时间戳对齐和本地缓存。第四步是建立统一命名空间,例如“车间/产线/设备/测点”的层级路径。第五步是接入告警引擎,配置阈值、持续时间和去抖窗口。
以Modbus TCP读取PLC寄存器为例,采集配置通常包含从站地址、功能码、起始地址和寄存器数量:
# Modbus TCP 采集点配置示例
device: PLC-Line3
protocol: modbus-tcp
host: 192.168.10.21
port: 502
unit_id: 1
points:
- name: motor_temp
function: 3 # 保持寄存器
address: 40001
data_type: int16
scale: 0.1 # 原始值 × 0.1 = ℃
unit: "℃"
poll_interval_ms: 500
- name: run_state
function: 1 # 线圈
address: 00001
data_type: bool
poll_interval_ms: 200
若使用OPC UA订阅,则更关注节点ID、采样间隔和死区:
# OPC UA 订阅参数示例
endpoint: opc.tcp://192.168.10.30:4840
security: Basic256Sha256
subscription:
publishing_interval_ms: 1000
monitored_items:
- node_id: "ns=2;s=Line3.Motor1.Temperature"
sampling_interval_ms: 500
deadband: 0.5
三、案例场景:一条产线的多源接入
某汽车零部件车间有3条冲压线。PLC负责压力、行程、急停信号,采样200ms;SCADA汇总设备运行状态与班次产量;每台电机加装振动与温度IoT传感器,通过MQTT网关每5秒上报一次。告警系统需要同时判断“压力超限”“电机温升异常”“连续3个班次OEE下降”。
落地时,PLC数据经Modbus TCP进入边缘网关,SCADA通过OPC UA暴露设备状态节点,IoT数据经MQTT Broker进入消息队列。三类数据在告警引擎中按设备ID和时间窗口对齐。压力超限走毫秒级规则,温升异常走分钟级滑动平均,OEE下降则走批次聚合规则。这样既保证了实时性,又避免了把所有数据都塞进同一条高频通道。
四、常见误区与复盘要点
误区一:所有数据都从SCADA取。SCADA轮询周期通常为1~5秒,急停、超压等安全相关信号会明显滞后,应从PLC直取。
误区二:忽略时间戳来源。PLC、网关、MQTT Broker各自打时间戳,若不对齐,多源告警关联会出现“因果倒置”。
误区三:Modbus地址偏移未核对。不同厂商对40001与0基地址的解释不同,配置错误会导致读到相邻寄存器,产生看似随机实则错位的告警。
误区四:OPC UA只当通道用。若不在地址空间中建立类型和语义,告警规则仍要硬编码节点ID,后期维护成本极高。
| 数据源 | 典型协议 | 采样/刷新周期 | 适用告警类型 | 接入注意点 |
|---|---|---|---|---|
| PLC | Modbus TCP、S7、EtherNet/IP | 10~200 ms | 急停、超压、超行程 | 地址偏移、字节序、轮询负载 |
| SCADA | OPC DA/UA、历史数据库 | 1~5 s | 设备停机、批次异常 | 接口授权、历史库查询压力 |
| IoT传感器 | MQTT、LoRa、Modbus RTU | 5 s~5 min | 温升、振动、气体泄漏 | 电池寿命、丢包、网关覆盖 |
| OPC UA | OPC UA TCP/HTTPS | 订阅发布,可配置 | 跨系统关联告警 | 证书管理、命名空间规划 |
复盘时建议检查三项指标:数据到达延迟P95、单点采集失败率、告警触发到推送的端到端耗时。若延迟主要来自轮询周期,应把该测点迁移到更高频通道;若失败率集中在某个网关,优先排查网络与电源,而不是先改告警规则。
数据采集不是一次性接线,而是持续治理。把协议选型、时间对齐、语义建模和采集健康度监控纳入日常运维,异常告警系统才能建立在可信的数据地基之上。