3. 物联网设备接入与数据采集
数字孪生平台的价值,取决于它能否持续、稳定、准确地获得物理设备的状态。设备接入与数据采集就是这条链路的起点:传感器把物理量变成电信号,通信协议把数据从设备搬到边缘网关,边缘网关再完成协议转换、缓存与上云。本节围绕传感器类型、MQTT/CoAP/Modbus 三类协议、边缘网关配置以及采集频率与精度四个要点展开,并给出可直接参考的配置与判断方法。
一、传感器类型:先分清“量”与“信号”
接入前必须先明确传感器输出的是模拟量还是数字量,这决定了后续的接线、采集模块和协议选择。常见类型可按被测物理量划分:温度(PT100、热电偶、DS18B20)、湿度(电容式)、压力(压阻式)、振动(MEMS 加速度计)、位置(限位开关、编码器)、电流/电压(霍尔、分流器)等。按输出形式则分为三类:
- 模拟量传感器:输出 4–20 mA、0–10 V 或电阻/电压变化,需要经 ADC 或模拟量采集模块转换为数字值。例如 4–20 mA 压力变送器,量程 0–1.6 MPa,对应 4 mA=0 MPa、20 mA=1.6 MPa。
- 数字量传感器:输出开关量或脉冲,如限位开关、光电计数、霍尔脉冲。
- 智能传感器/总线型:自带 MCU 和通信接口,直接输出工程量,如 RS-485 Modbus 温湿度变送器、I²C 数字传感器。
以 4–20 mA 压力变送器为例,若采集模块为 12 位 ADC、量程 0–1.6 MPa,则理论分辨率为 1.6 MPa / 4096 ≈ 0.39 kPa。这个数字说明:精度不仅取决于传感器本身,还受采集模块位数和量程设置影响。选型时应先确定量程,再让采集通道量程尽量贴近实际工作范围,避免“大炮打蚊子”导致分辨率浪费。
二、通信协议:MQTT、CoAP、Modbus 的定位差异
三类协议在物联网接入中承担不同角色,不能简单互相替代。
Modbus 是工业现场最常见的串行/总线协议,典型为 Modbus RTU over RS-485,采用主从轮询。主站发请求,从站应答,从站不会主动上报。它适合连接 PLC、电表、温控器、变频器等设备。数据模型是“寄存器”:线圈(0x)、离散输入(1x)、保持寄存器(4x)、输入寄存器(3x)。例如读取从站地址 1 的保持寄存器 0x0000 起 2 个寄存器,功能码 03,请求帧为 01 03 00 00 00 02 C4 0B,响应帧为 01 03 04 XX XX XX XX CRC,其中 4 字节即两个 16 位寄存器值。
MQTT 是面向云端的发布/订阅协议,基于 TCP,采用 Broker 中转,支持 QoS 0/1/2、遗嘱消息和保留消息。它适合设备到平台的上行数据、平台到设备的指令下发。主题设计通常按层级组织,例如 factory/line1/machine3/temperature。QoS 1 保证至少一次,可能重复;QoS 2 保证恰好一次,但开销更大。对于温度这类周期数据,QoS 0 或 1 通常足够;对于控制指令,建议 QoS 1 并配合应用层确认。
CoAP 基于 UDP,采用请求/响应模型,支持 Confirmable/Non-confirmable 消息和 Observe 订阅。它适合低功耗、受限网络(NB-IoT、LoRa)场景,报文小、开销低。与 MQTT 相比,CoAP 更接近 HTTP 语义,适合资源受限设备直接与平台交互。
实际项目中常见组合是:现场设备走 Modbus RTU 到边缘网关,网关转换为 MQTT 上云;低功耗传感器走 CoAP 或 MQTT-SN 接入。协议选择的核心判断是:现场总线用 Modbus,云端上行用 MQTT,受限网络用 CoAP。
三、边缘网关配置:协议转换与数据预处理
边缘网关是接入层的核心,典型配置包括串口参数、采集点表、协议映射和上云参数。以一台支持 Modbus 转 MQTT 的网关为例,配置过程如下:
# 串口配置(Modbus RTU)
serial.port = /dev/ttyS0
serial.baudrate = 9600
serial.databits = 8
serial.parity = none
serial.stopbits = 1
# 采集点表:从站1,功能码03,起始地址0,数量2,周期1000ms
point.name = pressure
point.slave = 1
point.func = 03
point.addr = 0
point.count = 2
point.interval = 1000
point.scale = 0.1 # 原始值×0.1得到工程量
# MQTT上云
mqtt.broker = tcp://192.168.1.100:1883
mqtt.clientid = gateway-01
mqtt.topic = factory/line1/machine3/pressure
mqtt.qos = 1
mqtt.keepalive = 60
配置时要注意三点:一是串口参数必须与从站一致,波特率、校验位不匹配会导致无响应;二是点表地址要区分“协议地址”和“PLC 地址”,Modbus 保持寄存器 40001 通常对应协议地址 0x0000;三是缩放系数要按传感器量程计算,避免上云数据单位错误。网关还应配置断网缓存,例如本地缓存 10000 条,网络恢复后按时间顺序补传,防止数据丢失。
四、采集频率与精度:在实时性与成本之间取平衡
采集频率不是越高越好。频率越高,数据量、功耗、网络带宽和存储成本越大;频率过低,则可能漏掉关键变化。工程上通常按“被测量的变化速度”和“业务需要”确定:
- 温度、湿度等慢变量:1–10 秒/次即可,例如 5 秒。
- 压力、流量等过程量:100 ms–1 s/次,例如 500 ms。
- 振动、电流波形等快变量:需要 kHz 级采样,通常在边缘做 FFT 或特征提取后再上云,而不是原始波形全传。
精度方面要区分三个概念:传感器精度(如 ±0.5% FS)、采集分辨率(ADC 位数决定)、系统精度(含线路误差、温漂、校准)。例如 4–20 mA 变送器精度 ±0.5% FS,量程 1.6 MPa,则最大误差约 ±8 kPa;若 ADC 分辨率 0.39 kPa,则分辨率不是瓶颈,传感器精度才是主导。若发现数据跳变,应先检查接线屏蔽、共地、滤波,再考虑提高分辨率。
判断采集是否达标,可以看三个指标:数据到达间隔是否稳定(抖动小)、数值是否在合理量程内、断线重连后是否补传。若 MQTT 上行周期设为 5 秒,但平台收到的时间戳间隔在 4.5–5.5 秒之间,说明网关调度正常;若出现 30 秒空洞,则要检查网络或网关缓存。
综上,设备接入与数据采集的关键在于:先按物理量和输出形式选对传感器,再按现场与云端的不同定位选择 Modbus、MQTT 或 CoAP,然后在边缘网关完成串口参数、点表、缩放和缓存配置,最后根据被测量变化速度确定采集频率,并用传感器精度、ADC 分辨率和系统误差共同判断数据是否可信。把这四步做扎实,数字孪生平台才有稳定、可用的数据底座。