第二章:数据采集与传感技术

各位同学,今天我们来聊聊数据采集与传感技术。说实话,这部分是整个数字化管理工具的「眼睛」和「耳朵」。你系统做得再漂亮,数据不准,一切都是白搭。

我在做第一个光伏电站项目时,就吃过这个亏。传感器选型没经验,结果采集回来的数据跟实际偏差了15%。嗯,那会儿被运维老大骂得狗血淋头。所以这一章,我把这些年踩过的坑、总结的经验,都给你掰开揉碎了讲。

2.1 IoT传感器选型:别只看参数表

传感器选型,说白了就是三个字:准、稳、省

准,是精度要够。稳,是长期运行不漂移。省,是功耗和成本可控。

我个人习惯,先看应用场景再选型。比如光伏电站,你需要采集的物理量无非这几类:

  • 电气参数:电压、电流、功率、频率
  • 环境参数:温度、湿度、辐照度、风速
  • 状态参数:开关状态、故障告警、位置信息

这里我列个常用传感器选型表,你直接拿去用:

测量参数 推荐传感器类型 精度要求 输出接口 我踩过的坑
温度 PT100 / DS18B20 ±0.5°C 4-20mA / 1-Wire PT100接线长了会有压降,记得做补偿
辐照度 硅光电池式辐照计 ±5% RS485 / 0-10V 别买便宜的,半年就漂移
电流 霍尔电流传感器 ±1% RS485 / 4-20mA 直流分量会干扰,选闭环型
风速 超声波风速仪 ±0.3m/s RS485 / 脉冲 机械式的冬天会冻住

小提示:选型时别只看精度,还要看响应时间。光伏逆变器的电流变化很快,响应时间超过100ms的传感器,采集到的数据基本是「历史数据」。

2.2 数据采集协议:Modbus vs MQTT

协议这块,我见过太多人纠结了。其实没那么复杂,记住一句话:现场总线用Modbus,远程传输用MQTT

2.2.1 Modbus:工业界的「普通话」

Modbus协议,说白了就是主从问答模式。主机问,从机答。简单、可靠、延迟低。

我在项目中用得最多的是Modbus RTU,走RS485总线。为什么?因为抗干扰能力强,传输距离能到1200米。

给你看个实际配置的例子:

// Modbus RTU 读取逆变器数据示例
// 设备地址:0x01
// 功能码:0x03(读取保持寄存器)
// 起始地址:0x0000(直流电压)
// 读取数量:0x0002(2个寄存器)

请求帧:01 03 00 00 00 02 C4 0B
响应帧:01 03 04 0B B8 0D AC 8E 4F
// 解析:直流电压 = 0x0BB8 = 3000(实际值30.00V)
//       直流电流 = 0x0DAC = 3500(实际值35.00A)

注意:Modbus地址映射表一定要跟设备厂商确认清楚。我曾经遇到过,同一个型号的逆变器,不同批次寄存器地址不一样。嗯,那次排查了整整两天。

2.2.2 MQTT:云端的「快递员」

MQTT是发布/订阅模式,适合数据量不大、但需要实时推送的场景。你想想看,几百个光伏板的数据,如果都用轮询,网络带宽根本扛不住。

MQTT的核心概念就三个:

  • Broker:消息中转站,类似快递集散中心
  • Topic:消息主题,类似快递单上的地址
  • QoS:服务质量等级,0最多发一次,1至少发一次,2确保只发一次

我个人建议,告警数据用QoS 2,普通遥测数据用QoS 1,日志类数据用QoS 0。这样既保证可靠性,又不浪费带宽。

// MQTT 主题设计示例
// 光伏电站数据主题结构
solar/{station_id}/{device_type}/{device_id}/{param}

// 实际例子
solar/SZ001/inverter/INV-001/temperature
solar/SZ001/meter/MTR-001/power
solar/SZ001/env/sensor-001/irradiance

// 发布数据格式(JSON)
{
  "timestamp": "2024-01-15T10:30:00Z",
  "value": 25.3,
  "unit": "°C",
  "quality": 1
}

2.3 边缘计算网关配置

网关这东西,很多人以为就是个协议转换器。其实不然,它承担着三个关键角色:数据采集、边缘计算、断点续传

我习惯把网关配置分成三步走:

  1. 硬件选型:CPU主频、内存大小、网口数量、串口数量
  2. 协议适配:配置Modbus从站列表、MQTT Broker地址
  3. 边缘规则:数据清洗、异常检测、本地存储

给你看个实际项目的网关配置逻辑:

# 边缘网关配置示例(伪代码)
# 1. 定义采集任务
采集任务:
  - 名称: "逆变器数据采集"
    协议: Modbus RTU
    串口: /dev/ttyS0
    波特率: 9600
    数据位: 8
    停止位: 1
    校验: 无
    设备列表:
      - 地址: 0x01
        寄存器: [0x0000, 0x0001, 0x0002]  # 电压、电流、功率
        采集间隔: 5秒

# 2. 边缘计算规则
规则:
  - 名称: "异常检测"
    条件: "功率 < 0.1 * 额定功率 && 辐照度 > 200"
    动作: "生成告警,QoS 2发布到告警主题"

# 3. 数据上传策略
上传:
  协议: MQTT
  Broker: "mqtt://cloud.energy.com:1883"
  主题前缀: "solar/SZ001/"
  压缩: true
  断点续传: true
  本地缓存: 7天

核心要点:边缘计算不是把云端的活搬到本地,而是做减法。只做三件事:数据清洗(去噪、补零)、异常检测(阈值判断)、本地缓存(断网不丢数据)。

说到断点续传,我特别想强调一下。曾经有个项目,网络不太稳定,每天断个三五次。一开始没做本地缓存,结果每次断网就丢数据。后来加了SQLite本地存储,配合MQTT的保留消息机制,数据完整率从82%提升到了99.7%。

2.4 本章知识体系总览

下面这张图,是我梳理的整个数据采集链路的核心逻辑。你把它存下来,做项目时对照着看:

数据采集与传感技术 - 核心架构图 物理感知层 温度传感器 辐照度传感器 电流传感器 风速传感器 协议传输层 Modbus RTU / TCP MQTT (QoS 0/1/2) 边缘计算层 数据清洗 异常检测 本地缓存 断点续传 云端应用层(监控、分析、告警) 传感器 协议 网关 云端

从这张图你能看到,数据从传感器到云端,经历了四个层次。每一层都有它的职责,也都有坑。我的建议是:不要试图跳过任何一层。曾经有个团队想省掉边缘计算层,直接把传感器数据往云端推,结果网络一波动,数据全乱套了。

实战建议:刚开始做项目时,先拿一个逆变器、一个网关、一个MQTT Broker搭最小系统。跑通了再扩展。我每次带新人都是这么教的,效果很好。

好了,这一章的内容就到这里。数据采集是数字化管理的基础,基础不牢,地动山摇。你把这些知识点吃透了,后面的章节学起来会轻松很多。


公众号:蓝海资料掘金营,微信deep3321