Darra OPC UA Client — C# SDK
Darra OPC UA Client C# 绑定. 跨语言对齐的高级 API, 你在这里学到的概念可以直接迁移到 Java / Python / C++ / Rust / C.
章节导航
- 入门 → Session 会话 (构造 / 连接 / Read / Write / KeepAlive)
- 浏览 → Nodes 节点 (Browse / 路径解析 / RegisterNodes)
- 实时 → Subscription 订阅 (CreateSubscription / MonitoredItem / DataChanged)
- 历史 → History 历史 (Raw / Modified / AtTime / Processed / Events / Update / Delete)
- 调用 → Method 方法 (Call)
- 发现 → Discovery 发现 (GetEndpoints / FindServers)
- 数据 → Data Types (Variant / DataValue / WellKnownNodes)
- 安全 → Security (证书 / 加密)
安装
- NuGet (推荐)
- Package Manager
- csproj
dotnet add package Darra.OpcUa
Install-Package Darra.OpcUa
<PackageReference Include="Darra.OpcUa" Version="*" />
系统要求
| 项 | 要求 |
|---|---|
| .NET | 6.0+ / 8.0+ (推荐), .NET Framework 4.6.1+ |
| OS | Windows 10/11, Windows Server 2019+, Linux (Ubuntu 20.04+) |
| 平台 | x64 |
| 协议 | OPC UA TCP (opc.tcp://) |
命名空间
using DarraOpcUa_Client;
主要类型:
| 类型 | 用途 |
|---|---|
DarraOpcUa | Client 主类 (Session) |
OpcUaSubscription | 数据订阅容器 |
OpcUaEventSubscription | 事件订阅 (Alarms & Conditions) |
NodeCollection / OpcUaNode | Lazy Load 节点访问 |
Variant / DataValue | 数据封装 |
Discovery (静态) | GetEndpoints / FindServers |
WellKnownNodes (静态) | OPC Foundation 标准节点常量 |
CertificateManager (静态) | 证书生成 / 校验工具 |
OpcUaException | 携带 StatusCode 的异常 |
一分钟快速开始
using DarraOpcUa_Client;
using var ua = new DarraOpcUa("opc.tcp://localhost:4840");
ua.Connect();
// 读
using var dv = ua.Read("ns=2;s=Temperature");
Console.WriteLine($"Temperature = {dv.Value.AsDouble} °C");
// 写
ua.Write("ns=2;s=Setpoint", new Variant(42.0));
// 订阅
using var sub = ua.CreateSubscription(500);
sub.DataChanged += (s, e) => Console.WriteLine($"{e.NodeId} = {e.ValueString}");
sub.Add("ns=2;s=Counter");
高级 API 概览
| 功能 | 入口 API | 说明 |
|---|---|---|
| 连接 / 加密 | new DarraOpcUa(...) + Connect() | None / Sign / SignAndEncrypt + Username / Anonymous / Certificate |
| 单点读写 | ua.Read / Write | 单节点单 Attribute |
| 批量读 | ua.ReadMany(nodes[, attr]) | 一次 RPC, N 节点 |
| 浏览树 | ua.Browse / BrowseMany / BrowseWithPaging / BrowseNext | 完整分页支持 |
| 路径解析 | ua.Resolve / TranslateBrowsePaths | 浏览路径 → NodeId |
| 注册节点 | ua.RegisterNodes / UnregisterNodes | 高频访问加速 30-50% |
| 数据订阅 | ua.CreateSubscription + sub.Add / AddMany | publishing / sampling 双层 |
| 事件订阅 | ua.SubscribeEvents | 报警 & 条件 |
| 调方法 | ua.Call(objId, mtdId, ...) | OPC UA Method 节点 |
| 历史读 | ua.ReadHistory / ua.History.* | Raw / Modified / AtTime / Processed / Events |
| 历史写 | ua.History.UpdateData / Delete* | Insert / Replace / Update / Delete |
| 心跳 | ua.KeepAliveIntervalMs | 后台周期探测 |
| 自动重连 | (内置) | 检测断线 → Republish 订阅 |
| 统一事件 | ua.Events.* | 会话 / 订阅 / 数据 / 通讯异常 |
| 服务发现 | Discovery.GetEndpoints / FindServers | 不需要 Session |
| 证书工具 | CertificateManager.GenerateSelfSigned / Inspect | PFX 生成与校验 |
跨语言对齐
C# SDK 的 API 命名 / 行为是其他语言绑定的参考实现. Java / Python / C++ / Rust / C 绑定的命名遵循各自语言惯例, 但语义一致 (例如 C# ua.Read ↔ Python ua.read ↔ Rust ua.read(...)). 选 C# 作为入门, 后续切其他语言时只需查 跨语言映射.
按左侧侧边栏顺序读完即可掌握全部 SDK API.