首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >好复杂的 IoT 世界:工业数据采集技术栈全景解析

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

原创
作者头像
Yeats_Liao
修改2026-05-29 10:13:26
修改2026-05-29 10:13:26
450
举报

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

工业自动化产线上的蓝色机械臂正在执行装配任务
工业自动化产线上的蓝色机械臂正在执行装配任务

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


引言

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

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

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

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


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

代码语言:javascript
复制
┌─────────────────────────────────────────────────────────────┐
│                      应用层(可视化/分析)                    │
│              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

机器人

ABB

OPC UA

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

2.3 核心能力

代码语言:javascript
复制
┌─────────────┐     ┌─────────────────┐     ┌─────────────┐
│  西门子 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 核心定位

代码语言:javascript
复制
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  数据源     │ ──▶ │  Telegraf   │ ──▶ │  InfluxDB   │
│ (各种来源)  │     │  (采集+处理) │     │  (时序存储)  │
└─────────────┘     └─────────────┘     └─────────────┘

Telegraf 的核心工作流程:

  1. 1. 输入插件:从各种来源采集数据
  2. 2. 处理器:清洗、转换、过滤数据
  3. 3. 聚合器:按时间窗口计算统计值
  4. 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 数据模型

代码语言:javascript
复制
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 设备的核心
工业级电路板上的微处理器与电子元器件,IoT 设备的核心

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

5.1 典型架构

代码语言:javascript
复制
┌─────────┐    ┌─────────────┐    ┌──────────┐    ┌─────────┐    ┌─────────┐
│ 西门子   │───▶│ 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 数据):

代码语言:javascript
复制
[[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

直观的数据洞察

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


参考资料

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 一、工业数据采集的三层架构
  • 二、KEPServerEX:工业通信的"万能翻译官"
    • 2.1 什么是 KEPServerEX?
    • 2.2 为什么需要它?
    • 2.3 核心能力
    • 2.4 典型应用场景
  • 三、Telegraf:数据采集的"勤劳搬运工"
    • 3.1 什么是 Telegraf?
    • 3.2 核心定位
    • 3.3 主要优势
    • 3.4 常见数据源
  • 四、InfluxDB:时序数据的"专业仓库"
    • 4.1 什么是 InfluxDB?
    • 4.2 版本演进
    • 4.3 核心优势
    • 4.4 数据模型
  • 五、完整链路实战:从 PLC 到可视化
    • 5.1 典型架构
    • 5.2 各组件职责
    • 5.3 配置示例
  • 六、选型建议
    • 6.1 什么时候用 KEPServerEX?
    • 6.2 什么时候用 Telegraf?
    • 6.3 版本选择建议
  • 七、总结
  • 参考资料
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档