OPC UA 定义了一组标准服务, 客户端通过 RPC 形式调用. 服务按用途分组, 本 SDK 实现状态如下.
- 信息模型 — 节点 / NodeId / Attribute
- 安全模型 — Sign / Encrypt / 证书
- 订阅模型 — Subscription + MonitoredItem
Discovery 服务集
| 服务 | 本 SDK API | 说明 |
|---|
| FindServers | Discovery.FindServers(url) | 通过 LDS 列出域内全部 Server |
| GetEndpoints | Discovery.GetEndpoints(url) | 列出某 Server 的全部 Endpoint (URL+Mode+Policy+Token) |
| RegisterServer / RegisterServer2 | × (Server 用) | 客户端不需要 |
SecureChannel 服务集
| 服务 | 本 SDK | 说明 |
|---|
| OpenSecureChannel | (Connect 内部) | 协商加密通道 |
| CloseSecureChannel | (Disconnect 内部) | 关闭通道 |
Session 服务集
| 服务 | 本 SDK API |
|---|
| CreateSession | (Connect 内部) |
| ActivateSession | (Connect 内部) |
| CloseSession | Disconnect() |
| Cancel | ua.Cancel(requestHandle) |
NodeManagement 服务集
| 服务 | 本 SDK | 说明 |
|---|
| AddNodes / AddReferences / DeleteNodes / DeleteReferences | × | 客户端通常不动 Server 拓扑 |
View 服务集
| 服务 | 本 SDK API |
|---|
| Browse | ua.Browse(nodeId) |
| BrowseNext | ua.BrowseNext(continuationPoint) |
| TranslateBrowsePathsToNodeIds | ua.TranslateBrowsePaths(paths) |
| RegisterNodes | ua.RegisterNodes(nodeIds) |
| UnregisterNodes | ua.UnregisterNodes(registeredIds) |
Query 服务集
| 服务 | 本 SDK | 说明 |
|---|
| QueryFirst / QueryNext | × | 复杂查询, 极少 Server 实现 |
Attribute 服务集
| 服务 | 本 SDK API |
|---|
| Read | ua.Read(nodeId, attribute) / ReadMany(nodeIds) |
| Write | ua.Write(nodeId, variant, attribute) |
| HistoryRead | ua.ReadHistory(...) 5 模式 |
| HistoryUpdate | ua.History.UpdateData(...) / DeleteRange(...) |
Method 服务集
| 服务 | 本 SDK API |
|---|
| Call | ua.Call(objectId, methodId, ...inputs) |
MonitoredItem 服务集
| 服务 | 本 SDK API |
|---|
| CreateMonitoredItems | sub.Add(nodeId) / sub.AddMany(nodeIds) |
| ModifyMonitoredItems | sub.ModifyMonitoredItems(requests) |
| SetMonitoringMode | sub.SetMonitoringMode(mode, miHandles) |
| SetTriggering | × (本 SDK 暂不暴露) |
| DeleteMonitoredItems | sub.Remove(handle) |
Subscription 服务集
| 服务 | 本 SDK API |
|---|
| CreateSubscription | ua.CreateSubscription(intervalMs) |
| ModifySubscription | sub.Modify(...) |
| SetPublishingMode | sub.PublishingEnabled |
| Publish | (内部 AutoPublish 自动循环) |
| Republish | sub.Republish(seqNo) |
| TransferSubscriptions | ua.TransferSubscriptions(ids, sendInitial) |
| DeleteSubscriptions | sub.Dispose() |
总结覆盖率
本 SDK 实现了 OPC UA 标准服务集中:
- Discovery: 2/2 客户端服务 (FindServers, GetEndpoints)
- SecureChannel: 2/2 (Open/Close 内部封装)
- Session: 4/4 (Create/Activate/Close/Cancel)
- View: 5/5 (Browse/BrowseNext/Translate/Register/Unregister)
- Attribute: 4/4 (Read/Write/HistoryRead/HistoryUpdate)
- Method: 1/1 (Call)
- MonitoredItem: 4/5 (除 SetTriggering)
- Subscription: 7/7
不实现的服务:
- NodeManagement (服务端拓扑变更, 客户端罕用)
- Query (复杂场景, 极少 Server 实现)
- SetTriggering (高级触发, 极少应用需要)
相关链接