Skip to the content.

OPC UA 客户端驱动设计方案

1. 概述

本方案旨在为工业边缘网关(Industrial Edge Gateway)增加 OPC UA 客户端支持,基于开源库 github.com/gopcua/opcua 实现。该驱动将遵循项目现有的统一驱动接口(Driver Interface),支持设备接入、安全认证、地址空间浏览(点位扫描)、数据采集(轮询与订阅)、异常恢复及数据持久化。

2. 架构设计

2.1 驱动集成

OPC UA 驱动将位于 internal/driver/opcua 包中,并实现 internal/driver/interface.go 中定义的以下接口:

2.2 依赖库

3. 功能实现细节

3.1 配置结构 (channels.yaml)

channels.yaml 中,OPC UA 通道配置将扩展以支持以下字段:

channels:
  - id: "opcua-line-1"
    name: "OPC UA 产线1"
    protocol: "opc-ua"
    enable: true
    polling_interval: 1000 # 默认轮询周期 (ms)
    devices:
      - id: "plc-01"
        name: "西门子 PLC"
        config:
          endpoint: "opc.tcp://192.168.1.10:4840"
          security_policy: "Basic256Sha256" # None, Basic128Rsa15, Basic256, Basic256Sha256
          security_mode: "SignAndEncrypt" # None, Sign, SignAndEncrypt
          auth_method: "UserName" # Anonymous, UserName, Certificate
          username: "admin"
          password: "password123"
          certificate_file: "/path/to/cert.pem" # 仅当 auth_method 为 Certificate 时需要
          private_key_file: "/path/to/key.pem"

3.2 连接与安全认证

驱动将根据配置构建 opcua.Client

3.3 地址空间浏览(点位扫描)

实现 ObjectScanner 接口的 ScanObjects 方法:

3.4 数据采集

3.4.1 周期轮询 (Polling)

3.4.2 实时订阅 (Subscription) - 推荐模式

3.5 异常恢复与会话重建

3.6 分钟级结果存储 (BBLOT)

复用并扩展现有的存储机制:

4. 前端 UI 详细设计 (基于现有优化)

本章节基于现有的 UI 框架进行扩展,仅针对 OPC UA 协议特性进行增强,保持整体风格一致。

4.1 设备管理 UI(OPC UA 专区)

页面路径: 设备管理 → 添加设备 → 协议类型 = OPC UA

4.1.1 表单字段(分组展示)

4.1.2 设备列表展示字段增强

在设备列表中新增 OPC UA 专属状态列:

字段 说明
连接状态 Connected / Disconnected / Reconnecting
安全模式 Sign / SignAndEncrypt
会话状态 Active / Expired
Subscription 状态 Active / Dropped
最近心跳 时间戳
最近错误 简要错误信息

支持操作

4.2 点位扫描与同步 UI(重点模块)

页面路径: 采集通道 → 设备详情列表 → 点位管理 → 扫描点位

4.2.1 扫描对话框结构

4.2.2 点位导入配置弹窗

4.3 实时采集状态 UI

页面路径: 设备详情 → 实时数据

4.4 历史趋势 UI(基于 bblot)

页面路径: 设备详情 → 历史趋势 → OPC UA

4.5 运维诊断 UI(工程级增强)

页面路径: 设备详情 → 运维诊断 → OPC UA

5. 开发计划

  1. 基础驱动框架: 实现 Connect/Disconnect 及基础配置解析。
  2. 点位扫描: 实现 Browse 功能,能够列出服务端节点。
  3. 读写功能: 实现 Read/Write 接口。
  4. 订阅功能: 实现 Subscription 模式以优化性能。
  5. 异常处理: 完善断线重连机制。
  6. 存储集成: 对接 bbolt 进行历史数据存储。
  7. UI 开发:
    • 设备管理: 实现 OPC UA 专用配置表单及状态列增强。
    • 点位扫描: 开发树状/列表扫描结果页及导入逻辑。
    • 实时数据: 适配订阅/轮询模式展示及写入操作。
    • 历史趋势: 集成 bblot 查询 API 进行趋势渲染。
    • 运维诊断: 开发连接状态与统计指标看板。

6. 验证方案