把 OPC UA 连接到 Grafana
| 产品 | Grafana |
|---|---|
| 类别 | 可视化 |
| OPC UA 角色 | 客户端 |
Grafana 没有官方的 OPC UA 数据源。受支持的架构是把 OPC UA 数据落入时序数据库,再让 Grafana 指向该数据库。社区和商业的 OPC UA 插件确实存在,但它们是第三方的、可能未签名,并且会把一个看板工具作为 OPC UA 客户端放到工厂网络上。
开始之前
- 在常规架构中,是一个已经存有数据的时序库。Grafana 是最后一跳,而决定看板能否正确的那些采集决策是在上游做出的。
- 如果你打算改用 OPC UA 插件,需要确认它当前的维护状态、许可,以及是否已签名。Grafana 默认限制未签名插件,允许它们是一次有安全后果的、刻意的配置变更。
- 明确说明已存数据携带的是哪个时间戳,是源时间还是采集时间,因为每一项看板计算都会继承它。
- 在任何人构建按天聚合的面板之前,先就仪表板时区和班次边界达成一致。
配置方法
- 确定 OPC UA 到哪里为止在几乎所有生产部署中,链路是 OPC UA 客户端到数据库再到 Grafana,中间有 Telegraf 之类的采集器或发布方。在构建面板之前先画出这条链路,并且要能说清哪个组件承担哪项职责。
- 让 Grafana 指向存储,而不是指向工厂用只读账户把时序数据库添加为数据源。这样 Grafana 完全不接触工业网络,这既是最简单的安全答案,也是这种架构成为常见做法的原因。
- 如果必须使用 OPC UA 插件,就把它当作 OPC UA 客户端对待它需要一份应用实例证书、一个存放 trusted 和 rejected 证书的位置,而且服务器必须信任它。它还会为每个 Grafana 实例打开一个会话并占用服务器容量,因此嵌入式 PLC 服务器可能会拒绝第二个仪表板用户。
- 为每种信号用正确的聚合方式构建面板状态信号需要最后值或状态时间线,计数器需要差值或增量函数而不是平均值,模拟量需要在面板时间区间上取平均。对单调递增的计数器取平均会画出一条看似合理却毫无意义的曲线,这是最常见的 OEE 仪表板错误。
- 让坏质量可见如果采集器在保存值的同时保存了 StatusCode,就用它来过滤或着色。一个在通信中断期间把最后已知值画成一条水平线的看板会被人相信,而它是错的。
- 固定时区并把时间窗对齐到班次显式设置仪表板时区,而不是交给浏览器决定,并把班次时间窗构建为明确的区间。按浏览器本地日历日计算的可用率会与生产部门自己的数字对不上,而分歧会被归咎于数据。
- 对采集健康状况告警,而不只是对过程值告警为每台机器加上数据陈旧告警。一个静默的采集器看起来与一台平稳运行的机器一模一样,仅这一条告警就能避免机器数据看板可能造成的大部分信任损害。
地址空间是什么样子
Grafana 看到的是数据行,不是地址空间。OPC UA 服务器原有的结构(浏览层次、类型定义、工程单位)要么被采集器压平进 measurement 和 tag 名称,要么直接丢失。这意味着语义工作必须在上游完成:如果采集器把每个节点写成一个不透明的 series 名称,任何 Grafana 配置都无法还原某个值属于哪台设备或代表什么。实用的原则是让采集器输出一小组稳定的维度(设备标识、信号名称、单位)并把 OPC UA 命名空间 URI 和标识符作为元数据一并存放,这样当有人对某个数字提出异议时,面板可以追溯回节点。
陷阱
- 指望有一个第一方 OPC UA 数据源是第一个错误。它并不存在,采用第三方插件意味着把它的维护状态、许可和安全状况都接受为你架构的一部分。
- 允许未签名插件是对 Grafana 实例的全局配置变更,而不是针对单个插件的。启用之前要弄清楚它还会放开什么。
- 对单调递增的计数器取均值或平均值,是 OEE 仪表板的经典缺陷。计数器序列需要差值或增量函数,并显式处理复位和翻转。
- Grafana 为显示而插值和降采样。在一小时时间窗上显示平滑曲线的面板,可能正掩盖着整个 OEE 分析所依赖的短停机,因此停机分析要建立在存储的事件上,而不是重采样后的趋势上。
- 浏览器本地时区会让仪表板彼此之间、以及与工厂自己的班次报表对不上。请在仪表板上固定时区。
- 在通信中断期间,绘制保持值或最后已知值而不带质量标识的仪表板会主动误导人,一旦有人察觉,其他所有面板的可信度也会随之瓦解。
- 如果由插件来建立 OPC UA 连接,那么每个 Grafana 实例或每次刷新都可能对一台会话上限很低的嵌入式服务器打开一个会话。
从中获取 OEE 数据
Grafana 可以展示可用率、性能和质量,也可以基于已存储的数据较为可靠地计算这些指标,前提是上游采集提供的是状态跳变而非采样快照、是计数器而非推断出的边沿、停机原因是带时间戳的记录。它做不到的是凭空制造未曾获得的分辨率:每分钟存一次的状态无论面板怎么写都无法支撑微停机分析。班次日历、计划生产时间和标准节拍不在设备里,除非有人专门写入,否则也不在时序库里,因此它们通常以静态表或第二数据源的形式进入,并且需要有人负责维护。把每一个 OEE 面板都当作一项必须与生产部门自身数据对账的主张,并预期第一次对账暴露出来的是采集问题而不是看板问题。
最后核对日期 2026 年 9 月 7 日,对照 OPC UA 1.05.07。OPC UA Connect 是教育资源,与 OPC Foundation 无隶属关系。