WellKnownNodes
darra::opcua::WellKnownNodes 是命名空间下一组 inline constexpr const char* 常量, 预定义 OPC Foundation 标准节点的 NodeId 字符串. 用它代替手写 "i=2258" 提升代码可读性 + 避免拼错.
配套
- 命名空间反查见 Namespaces.
- 通过 NodeId 读取数据见 Read / Write.
头文件
#include <darra/opcua/well_known_nodes.hpp>
using namespace darra::opcua;
常用根节点
| 常量 | 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" |
用法
// 不推荐: 硬编码
auto dv = s.Read("i=2258");
// 推荐: 用常量
auto dv = s.Read(WellKnownNodes::Server_ServerStatus_CurrentTime);
通过 s.Nodes() 索引器:
auto t = s.Nodes()[WellKnownNodes::Server_ServerStatus_CurrentTime].Value();
// 或
auto t = s.Nodes().Server().Value();
ServerStatus 完整读取
std::vector<std::string> ids = {
WellKnownNodes::Server_ServerStatus_State,
WellKnownNodes::Server_ServerStatus_CurrentTime,
WellKnownNodes::Server_ServerStatus_StartTime,
WellKnownNodes::Server_NamespaceArray,
};
auto dvs = s.ReadMany(ids);
for (size_t i = 0; i < ids.size(); ++i) {
std::cout << ids[i] << " = " << dvs[i].Value().AsString() << "\n";
}
完整列表
代码里查 darra/opcua/well_known_nodes.hpp 头文件有 30+ 常量, OPC Foundation 标准命名空间下的节点都在.