跳到主要内容

Darra OPC UA Client — C# SDK

Darra OPC UA Client C# 绑定. 跨语言对齐的高级 API, 你在这里学到的概念可以直接迁移到 Java / Python / C++ / Rust / C.

章节导航

安装

dotnet add package Darra.OpcUa

系统要求

要求
.NET6.0+ / 8.0+ (推荐), .NET Framework 4.6.1+
OSWindows 10/11, Windows Server 2019+, Linux (Ubuntu 20.04+)
平台x64
协议OPC UA TCP (opc.tcp://)

命名空间

using DarraOpcUa_Client;

主要类型:

类型用途
DarraOpcUaClient 主类 (Session)
OpcUaSubscription数据订阅容器
OpcUaEventSubscription事件订阅 (Alarms & Conditions)
NodeCollection / OpcUaNodeLazy 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 / AddManypublishing / 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 / InspectPFX 生成与校验

跨语言对齐

C# SDK 的 API 命名 / 行为是其他语言绑定的参考实现. Java / Python / C++ / Rust / C 绑定的命名遵循各自语言惯例, 但语义一致 (例如 C# ua.Read ↔ Python ua.read ↔ Rust ua.read(...)). 选 C# 作为入门, 后续切其他语言时只需查 跨语言映射.

按左侧侧边栏顺序读完即可掌握全部 SDK API.