WellKnownNodes
WellKnownNodes 是静态类, 预定义 OPC Foundation 标准节点的 NodeId 字符串常量. 用它代替手写 i=2258 提升代码可读性.
配套
- 命名空间反查见 Namespaces.
- 通过 NodeId 读取数据见 Read / Write.
常用根节点
| 常量 | NodeId | 含义 |
|---|---|---|
WellKnownNodes.RootFolder | i=84 | Address Space 根 |
WellKnownNodes.ObjectsFolder | i=85 | 业务数据根 |
WellKnownNodes.TypesFolder | i=86 | 类型定义根 |
WellKnownNodes.ViewsFolder | i=87 | 视图根 |
WellKnownNodes.Server | i=2253 | Server 自身对象 |
Server 状态
| 常量 | NodeId | 含义 |
|---|---|---|
Server_ServerStatus | i=2256 | Server 状态结构 |
Server_ServerStatus_State | i=2259 | 状态 (Running / Failed / ...) |
Server_ServerStatus_CurrentTime | i=2258 | 服务端当前时间 |
Server_ServerStatus_StartTime | i=2257 | 服务端启动时间 |
Server_ServerStatus_BuildInfo | i=2260 | BuildInfo (产品 / 厂商 / 版本) |
Server_ServerArray | i=2254 | ServerArray 字符串数组 |
Server_NamespaceArray | i=2255 | NamespaceArray 字符串数组 |
标准 ReferenceType
| 常量 | NodeId |
|---|---|
HasComponent | i=47 |
HasProperty | i=46 |
Organizes | i=35 |
HasTypeDefinition | i=40 |
HasSubtype | i=45 |
用法
// 不推荐: 硬编码
using var dv = ua.Read("i=2258");
// 推荐: 用常量
using var dv = ua.Read(WellKnownNodes.Server_ServerStatus_CurrentTime);
ServerStatus 完整读取
var items = new[]
{
(WellKnownNodes.Server_ServerStatus_State, AttributeId.Value),
(WellKnownNodes.Server_ServerStatus_CurrentTime, AttributeId.Value),
(WellKnownNodes.Server_ServerStatus_StartTime, AttributeId.Value),
(WellKnownNodes.Server_NamespaceArray, AttributeId.Value),
};
var values = ua.ReadMany(items);
Console.WriteLine($"State = {values[0].Value}");
Console.WriteLine($"CurrentTime = {values[1].Value.AsDateTime}");
Console.WriteLine($"StartTime = {values[2].Value.AsDateTime}");
Console.WriteLine($"Namespaces = {string.Join(",", values[3].Value.AsStringArray)}");
完整列表
代码里查 WellKnownNodes.cs 源文件有 30+ 常量, OPC Foundation 标准命名空间下的节点都在.