3、数据采集基础:传感器类型与通信协议

大家好,我是老张。今天咱们聊聊数据采集这块。

说实话,风机数字孪生能不能玩得转,数据采集是地基。地基不牢,后面全白搭。我在项目里见过太多因为传感器选型不对、协议没搞明白,最后数据乱七八糟的案例。嗯,今天就把这些坑给大家捋一遍。

3.1 传感器类型:风机上的“五官”

风机本身是个大家伙,但它的“感觉器官”其实就那几样。我个人习惯把传感器分成四大类:振动、温度、转速、风速。你想想看,风机运行状态好不好,无非就是看这几个指标。

3.1.1 振动传感器

振动是风机的“心电图”。齿轮箱、轴承、发电机,哪个坏了都会先抖起来。

  • 加速度传感器:最常用。我一般选 IEPE 类型的,信号稳定,抗干扰强。
  • 速度传感器:适合低频振动,比如塔筒晃动。
  • 位移传感器:主轴、齿轮箱大轴用得多。
我的经验: 振动传感器安装位置比型号更重要。我曾经在同一个轴承座上,水平方向和垂直方向测出来的频谱完全不一样。记住,安装面要平整,螺栓扭矩要一致。

3.1.2 温度传感器

温度高了,说明摩擦大了,或者散热不行了。

  • PT100 铂电阻:齿轮箱油温、轴承温度,精度高,线性好。
  • 热电偶:发电机绕组温度,量程大,响应快。
  • 红外测温:非接触式,适合测塔筒表面温度,但精度一般。
注意: PT100 接线要用三线制或四线制,两线制会引入导线电阻误差。我见过有人图省事用两线制,结果温度偏差了 5 度,这数据你敢用?

3.1.3 转速传感器

转速是风机的“脉搏”。

  • 磁电式:靠齿轮盘感应,简单可靠,但低速时信号弱。
  • 霍尔式:需要供电,但低速性能好,适合变桨系统。
  • 编码器:精度最高,能测角度和方向,但贵,娇气。

我个人习惯在主轴和发电机端各装一个转速传感器。为什么?因为可以算传动比,判断齿轮箱有没有打滑。这个细节,很多新手会忽略。

3.1.4 风速传感器

风速决定了风机能发多少电,也决定了载荷有多大。

  • 超声波风速仪:无机械部件,免维护,但贵。我推荐用这个。
  • 机械式风速杯:便宜,但容易结冰、磨损。北方项目慎用。
  • 激光雷达:能测前方 200 米的风,用于前馈控制。但成本高,目前只有大机组在用。
避坑指南: 我曾经在项目里发现风速数据和功率曲线对不上。查了半天,原来是风速仪安装在机舱后面,被塔筒挡住了。记住,风速仪要装在机舱顶部前方,避开湍流区。

3.2 数据采集系统架构

传感器选好了,怎么把数据收回来?这就涉及到系统架构了。说白了,就是一条数据从传感器到数字孪生平台的“高速公路”。

我画了一张图,大家可以看看典型的架构长什么样。

传感器层 振动传感器 温度传感器 转速传感器 风速传感器 数据采集层 PLC / 数据采集卡 / 边缘网关 通信层 Modbus TCP / OPC UA / MQTT 数字孪生平台

这张图很直观。从传感器到平台,一共四层。每一层都有讲究。

3.2.1 传感器层

就是咱们刚才说的那些传感器。注意,传感器出来的信号有两种:模拟量(4-20mA、0-10V)和数字量(脉冲、RS485)。模拟量需要 AD 转换,数字量可以直接读。

3.2.2 数据采集层

这一层负责把传感器的信号变成数字。常见设备有:

  • PLC:工业现场最稳,但编程麻烦。
  • 数据采集卡:适合实验室,现场用容易坏。
  • 边缘网关:现在流行,能直接上云,还能做简单处理。
我的建议: 风机现场环境恶劣,温度高、振动大、电磁干扰强。我个人强烈推荐用工业级 PLC 做采集,别图便宜用采集卡。我曾经在一个项目里用采集卡,三个月坏了五块,后来全换成 PLC 了。

3.2.3 通信层

数据采集上来,怎么传到平台?这就靠通信协议了。下面重点讲。

3.3 Modbus 协议简介

Modbus 是工业界的“普通话”。老设备基本都支持。说白了,它就是一个主从协议,一个主站问,多个从站答。

3.3.1 Modbus 的两种形式

类型 物理层 速度 距离 典型场景
Modbus RTU RS485 9.6kbps - 115.2kbps 1200米 机舱内传感器
Modbus TCP 以太网 100Mbps 100米(交换机可扩展) 塔基到中控室

嗯,这里要注意。Modbus RTU 是串口通信,抗干扰强,但速度慢。Modbus TCP 速度快,但布线要求高。我一般机舱内用 RTU,塔基到中控用 TCP。

3.3.2 数据模型

Modbus 把数据分成四张表:

  • 线圈(Coil):1 位,可读写。比如启动、停止信号。
  • 离散输入(Discrete Input):1 位,只读。比如急停状态。
  • 输入寄存器(Input Register):16 位,只读。比如风速、温度。
  • 保持寄存器(Holding Register):16 位,可读写。比如设定功率、PID 参数。
避坑指南: 我曾经在调试时发现读回来的风速值不对。查了半天,原来是寄存器地址搞错了。Modbus 的地址有 0 基址和 1 基址之分,不同厂家不一样。记住,一定要看设备手册,别想当然。

3.3.3 代码示例:读取风速

下面是一个用 Python 读取 Modbus TCP 风速数据的例子。很简单,但很实用。

from pymodbus.client import ModbusTcpClient

# 连接风机 PLC
client = ModbusTcpClient('192.168.1.100', port=502)
client.connect()

# 读取输入寄存器,地址 0,长度 2(32 位浮点数)
result = client.read_input_registers(0, 2)
if result.isError():
    print("读取失败")
else:
    # 将两个 16 位寄存器合并为 32 位浮点数
    import struct
    raw = struct.pack('>HH', result.registers[0], result.registers[1])
    wind_speed = struct.unpack('>f', raw)[0]
    print(f"当前风速:{wind_speed:.2f} m/s")

client.close()

这个代码我用了很多年。注意,风速数据通常是 32 位浮点数,占用两个寄存器。顺序是高位在前(大端模式),别搞反了。

3.4 OPC UA 协议简介

Modbus 虽然好用,但有个问题:它只传数值,不传语义。比如寄存器 0 是风速还是温度?你得查手册。OPC UA 就不一样了,它自带信息模型,数据是什么、单位是什么、量程是多少,都写在里面。

说白了,OPC UA 是工业界的“高级语言”,而 Modbus 是“汇编语言”。

3.4.1 OPC UA 的核心概念

  • 节点(Node):每个数据点都是一个节点,有唯一的 NodeId。
  • 对象(Object):节点可以组织成对象,比如“齿轮箱”对象下面有“温度”、“转速”等子节点。
  • 变量(Variable):具体的数据值,比如温度 65.3°C。
  • 方法(Method):可以远程调用的函数,比如“复位报警”。

3.4.2 为什么用 OPC UA?

我举个例子。你用 Modbus 读到寄存器 0 的值是 65.3,你得自己知道这是齿轮箱油温。但用 OPC UA,节点路径是 ns=2;s=Gearbox.OilTemperature,一看就明白。而且它还自带时间戳、质量戳,数据好不好用一目了然。

我的经验: 新项目我强烈推荐 OPC UA。虽然配置比 Modbus 复杂一点,但后期维护省心太多。我曾经把一个老风场从 Modbus 升级到 OPC UA,数据质量提升了一个档次,排查问题快多了。

3.4.3 OPC UA 与 Modbus 对比

特性 Modbus OPC UA
语义信息 有(信息模型)
安全性 加密、认证
跨平台
配置复杂度
实时性
典型应用 老设备、简单采集 新系统、数字孪生

3.5 本章小结

数据采集是数字孪生的第一步,也是最重要的一步。传感器选型要准,安装要稳,协议要通。我个人觉得,新手最容易犯的错就是:传感器装好了,数据也采上来了,但没验证数据对不对。记住,数据质量比数据量更重要。

嗯,今天就聊到这儿。下一章咱们讲讲数据清洗和预处理,那又是另一番天地了。


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