从采集到显示的端到端流程
本文将一次性概述传感器数值如何从 PLC 到达画面。每个步骤的«具体操作方法»请参阅相关链接文档,本页旨在解释 为什么要这样分层。
PLC · 센서
│ ① 읽는다 — 프로토콜 40여 종
▼
PlantPulse Edge (현장 게이트웨이)
│ ② 올린다 — 플랫폼 API (server.host / server.api_key)
▼
PlantPulse Platform (수집 · 모델 · 규칙)
│ ③ 저장한다
▼
DataLake (Aster TSDB · PostgreSQL · Kafka · RustFS)
│ ④ 읽는다
▼
화면 · 알람 · 분석 · AI
① 读取 — Edge 与 PLC 通信
不同 PLC 使用的语言各异,例如 Modbus · S7 · MELSEC · EtherNet/IP · OPC-UA … Edge 负责学习这些语言 — 这里提供了 40 多种协议的驱动。
Edge 采用 周期性读取(轮询)模式。定义「读取哪个地址、周期是多少」的配置即为 标签。
现场网络通常是隔离网络,且 PLC 支持的并发连接数有限。由网关部署在现场,仅对 PLC 询问一次并将数据汇总上传,比服务器直接连接每个 PLC 更安全、更轻量。
→ 各 PLC 类型指南 · 添加新 PLC 连接
② 上传 — Edge 将数据发送至 Platform
Edge 将读取的数值通过 Platform API 上传。关于地址和认证请参阅 app.properties 中的 server.host · server.port · server.api_key。
若通信中断,Edge 会将数据 缓存在本地,并在恢复后统一上传。因此,即使现场线路短暂中断,数值也不会丢失 — 但此时会出现 延迟数据 集中上传的情况。这就是存储层对其进行单独处理的原因(④)。
对于需要基于标准 MQTT IIoT 协议的现场,请开启 sparkplug.enable。该功能默认关闭,默认使用 Platform API 路径。
→ 端到端连接一台 PLC · app.properties 参考
③ 存储 — Platform 确定位置
上传的数值绑定到 标签,标签绑定到 设备,设备则进一步绑定到 生产线 · 区域 · 站点 · 企业。这个树形结构就是«工厂模型»。
기업 ─ 사이트 ─ 구역 ─ 라인 ─ 설비 ─ 태그 ─ 값
🔴 模型优先。 无论数值如何输入,如果没有可绑定的位置,就无法在画面上显示。由于报警 · 指标 · 画布全部挂载在这棵树上,因此必须首先建立此模型。
④ 堆叠 — Data Lake 分类处理
不同性质的数据由 不同的存储介质 承担。如果全部混在一起,必然会导致某一方面性能下降。
| 存储内容 | 存储位置 | 原因 |
|---|---|---|
| 标签值(时序) | Aster TSDB | 无限累积,仅按「单个标签的特定时间段»读取 |
| 设备 · 用户 · 配置 | PostgreSQL | 需要关系维护和约束 |
| 现场实时流 | Kafka · MQTT | 应对瞬间高峰,需保证实时流转 |
| 文件 · 图像 · 归档 | RustFS | 体积大,读取频率低 |
时序数据会 随时间增加而压缩,超过保留周期后将整体删除。在保持查询能力不变的同时,降低存储占用。
→ Data Lake 概述 · 时序数据库
⑤ 使用 — 画面 · 报警 · 分析
同一数值会以多种形式呈现。
| 应用场景 | 查看位置 |
|---|---|
| 查看当前值 | 仪表盘 · 数据点 |
| 异常时接收通知 | 报警 · CEP |
| 自定义绘制 | 画布 |
| 大规模分析 | Spark SQL |
| 智能问答 | PlantPulse AI |
故障排查建议
沿着此流程 逆向 追溯通常能快速定位问题。
| 症状 | 首选检查项 |
|---|---|
| 画面无数值 | ③ 标签是否绑定至设备 → 数据点 |
| Platform 中看不到标签 | ② Edge 是否正在上传 → 连接列表 |
| Edge 中也无数值 | ① 是否在读取 PLC → 实时值监控 |
| 仅历史数据缺失 | ④ 是否超过保留周期 → pd retention |
相关阅读
- 整体菜单结构与运行流程图 — 画面级流程
- 将首台设备数据呈现在画面上 — 实操此流程