好复杂的 IoT 世界:工业数据采集技术栈全景解析

0 阅读6分钟

好复杂的 IoT 世界:工业数据采集技术栈全景解析

从 PLC 到可视化,一条完整的数据链路是如何运转的?

工业自动化产线上的蓝色机械臂正在执行装配任务 图片来源:Unsplash(免费授权)


引言

在工业物联网(IIoT)的世界里,数据采集是一切智能决策的基础。但当你真正开始搭建一个数据采集系统时,会发现这个领域远比想象中复杂:

  • 工厂里有西门子、三菱、欧姆龙等各种品牌的 PLC
  • 每种设备说着不同的"通信方言"(Modbus、OPC UA、Profinet...)
  • 数据最终要送到数据库、SCADA 系统或云平台

如何让这些"鸡同鸭讲"的设备统一协作?

本文将带你梳理一条完整的工业数据采集链路,介绍其中的核心工具:KEPServerEXTelegrafInfluxDB


一、工业数据采集的三层架构

┌─────────────────────────────────────────────────────────────┐
│                      应用层(可视化/分析)                    │
│              Grafana / SCADA / MES / ERP                     │
└─────────────────────────────────────────────────────────────┘
                              ▲
                              │
┌─────────────────────────────────────────────────────────────┐
│                      存储层(时序数据库)                      │
│                    InfluxDB / TimescaleDB                    │
└─────────────────────────────────────────────────────────────┘
                              ▲
                              │
┌─────────────────────────────────────────────────────────────┐
│                      采集层(数据代理)                        │
│              Telegraf / KEPServerEX / 自定义采集              │
└─────────────────────────────────────────────────────────────┘
                              ▲
                              │
┌─────────────────────────────────────────────────────────────┐
│                      设备层(现场设备)                        │
│        PLC / CNC / 传感器 / 机器人 / 智能仪表                  │
└─────────────────────────────────────────────────────────────┘

二、KEPServerEX:工业通信的"万能翻译官"

工程师在智能制造产线上使用笔记本电脑调试设备 图片来源:Unsplash(免费授权)

2.1 什么是 KEPServerEX?

KEPServerEX 是由美国 Kepware 公司(现隶属于 PTC)开发的工业级 OPC 服务器软件,被誉为工业数据采集领域的"瑞士军刀"。

它的核心使命很简单:让不同品牌、不同协议的工业设备能够"说同一种语言"

2.2 为什么需要它?

想象一个典型的工厂场景:

设备类型品牌通信协议
生产线 PLC西门子S7 协议
数控机床发那科FOCAS 协议
温度传感器第三方Modbus RTU
机器人ABBOPC UA

如果没有统一的通信中间件,你需要为每种协议写不同的采集程序。而 KEPServerEX 提供了 150+ 种设备驱动,可以一站式解决这个难题。

2.3 核心能力

┌─────────────┐     ┌─────────────────┐     ┌─────────────┐
│  西门子 PLC  │ ──▶ │                 │     │  OPC UA     │
│  三菱 PLC   │ ──▶ │   KEPServerEX   │ ──▶ │  MQTT       │
│  Modbus设备 │ ──▶ │   (协议转换)     │     │  REST API   │
│  OPC UA设备 │ ──▶ │                 │     │  ODBC       │
└─────────────┘     └─────────────────┘     └─────────────┘
   多种输入协议              统一平台              标准输出协议

主要特性:

  • 驱动丰富:支持 150+ 工业协议,覆盖主流 PLC、CNC、机器人品牌
  • 多协议输出:OPC UA、OPC DA、MQTT、REST API 等
  • 高可靠性:工业级稳定性,支持冗余部署
  • 模块化设计:按需购买驱动插件

2.4 典型应用场景

  • SCADA 集成:将现场设备数据接入组态软件
  • MES/ERP 对接:打通 IT 与 OT 的数据壁垒
  • 云平台接入:通过 MQTT 将数据上云
  • 时序数据存储:配合 InfluxDB 实现数据持久化

三、Telegraf:数据采集的"勤劳搬运工"

数据中心服务器机房,整齐排列的服务器机架与彩色线缆 图片来源:Unsplash(免费授权)

3.1 什么是 Telegraf?

Telegraf 是 InfluxData 公司开发的开源数据采集代理,用 Go 语言编写,专为时序数据设计。

如果说 KEPServerEX 解决了"设备通信协议"的问题,那么 Telegraf 则解决了"数据如何进入存储系统"的问题。

3.2 核心定位

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  数据源     │ ──▶ │  Telegraf   │ ──▶ │  InfluxDB   │
│ (各种来源)  │     │  (采集+处理) │     │  (时序存储)  │
└─────────────┘     └─────────────┘     └─────────────┘

Telegraf 的核心工作流程:

  1. 输入插件:从各种来源采集数据
  2. 处理器:清洗、转换、过滤数据
  3. 聚合器:按时间窗口计算统计值
  4. 输出插件:将数据发送到目标存储

3.3 主要优势

特性说明
插件丰富200+ 插件,覆盖系统指标、数据库、消息队列等 17 类数据源
轻量级单二进制文件,内存占用 < 100MB
跨平台Linux、Windows、macOS、Docker、Kubernetes
多输出可同时发送到多个目标(InfluxDB、Kafka、MySQL 等)
易配置TOML 格式配置文件,简单直观

3.4 常见数据源

系统层面:

  • CPU、内存、磁盘 I/O、网络流量
  • Docker 容器指标
  • 进程监控

数据库层面:

  • MySQL、PostgreSQL、Redis、MongoDB 性能指标

消息队列:

  • Kafka、MQTT、RabbitMQ

工业协议:

  • OPC UA(可与 KEPServerEX 对接)
  • Modbus

四、InfluxDB:时序数据的"专业仓库"

数据分析仪表盘展示实时性能指标与趋势图表 图片来源:Unsplash(免费授权)

4.1 什么是 InfluxDB?

InfluxDB 是专为时序数据设计的数据库,在 DB-Engines 时序数据库排名中常年位居前列。

4.2 版本演进

版本状态特点
InfluxDB 1.x维护中传统版本,稳定成熟
InfluxDB 2.x稳定版内置 UI 和任务引擎
InfluxDB 3.x最新版(2025.4 GA)全新架构,性能大幅提升

4.3 核心优势

  • 高性能写入:专为高频时序数据优化
  • 高效存储:列式存储 + 压缩算法
  • 强大查询:支持类 SQL 的 InfluxQL 和 Flux 查询语言
  • 保留策略:自动过期旧数据
  • 生态完善:与 Grafana、Telegraf 无缝集成

4.4 数据模型

Measurement: cpu_usage
Tags: host=server01, region=beijing
Fields: value=75.5, user=45.2, system=30.3
Timestamp: 2025-01-15T08:30:00Z

五、完整链路实战:从 PLC 到可视化

工业级电路板上的微处理器与电子元器件,IoT 设备的核心 图片来源:Unsplash(免费授权)

5.1 典型架构

┌─────────┐    ┌─────────────┐    ┌──────────┐    ┌─────────┐    ┌─────────┐
│ 西门子   │───▶│ KEPServerEX │───▶│ Telegraf │───▶│InfluxDB │───▶│ Grafana │
│  PLC    │    │ (OPC UA输出) │    │(数据采集) │    │(时序存储)│    │(可视化) │
└─────────┘    └─────────────┘    └──────────┘    └─────────┘    └─────────┘

协议转换层          通信中间件          采集代理          数据存储          可视化

5.2 各组件职责

组件职责解决的问题
KEPServerEX协议转换西门子 S7 → OPC UA
Telegraf数据采集从 OPC UA 读取 → 写入 InfluxDB
InfluxDB数据存储高效存储时序数据
Grafana可视化仪表盘展示

5.3 配置示例

Telegraf 配置(从 KEPServerEX 采集 OPC UA 数据):

[[inputs.opcua]]
  ## KEPServerEX 的 OPC UA 服务器地址
  endpoint = "opc.tcp://localhost:49320"
  
  ## 认证信息
  username = ""
  password = ""
  
  ## 要采集的节点
  nodes = [
    {name="temperature", namespace="2", identifier_type="s", identifier="Channel1.Device1.Tag1"},
    {name="pressure", namespace="2", identifier_type="s", identifier="Channel1.Device1.Tag2"},
  ]

[[outputs.influxdb]]
  urls = ["http://localhost:8086"]
  database = "factory_data"

六、选型建议

6.1 什么时候用 KEPServerEX?

推荐使用:

  • 工厂有多品牌 PLC 需要统一接入
  • 需要与 SCADA 系统对接
  • 需要 OPC UA/DA 标准接口

可能不需要:

  • 只有单一品牌设备且原生支持 MQTT
  • 预算有限(商业软件,需要授权)

6.2 什么时候用 Telegraf?

推荐使用:

  • 需要采集服务器/容器指标
  • 需要将数据从 KEPServerEX 导入 InfluxDB
  • 需要多目标输出(同时发送到多个数据库)

6.3 版本选择建议

场景推荐版本
新部署InfluxDB 3.x(2025.4 GA)
已有 1.x/2.x可继续使用,或评估迁移到 3.x
Windows 免安装1.x 或 2.x(3.x Windows 原生支持待完善)

七、总结

工业数据采集是一个分层协作的过程:

层级工具核心价值
协议转换层KEPServerEX打通设备通信壁垒
数据采集层Telegraf灵活、轻量的数据搬运
数据存储层InfluxDB专业时序数据管理
可视化层Grafana直观的数据洞察

理解每个工具的定位和边界,才能搭建出高效、稳定、可扩展的工业数据采集系统。


参考资料