WellKnownNodes
WellKnownNodes 是 final 类, 只暴露 public static final String 常量, 预定义 OPC Foundation 标准节点的 NodeId 字符串. 用它代替手写 i=2258 提升代码可读性.
配套
- 命名空间反查见 Namespaces.
- 通过 NodeId 读取数据见 Read / Write.
常用根节点 (Folder)
| 常量 | NodeId | 含义 |
|---|---|---|
WellKnownNodes.ROOT_FOLDER | i=84 | Address Space 根 |
WellKnownNodes.OBJECTS_FOLDER | i=85 | 业务数据根 |
WellKnownNodes.TYPES_FOLDER | i=86 | 类型定义根 |
WellKnownNodes.VIEWS_FOLDER | i=87 | 视图根 |
WellKnownNodes.OBJECT_TYPES_FOLDER | i=88 | ObjectType 集合 |
WellKnownNodes.VARIABLE_TYPES_FOLDER | i=89 | VariableType 集合 |
WellKnownNodes.DATA_TYPES_FOLDER | i=90 | DataType 集合 |
WellKnownNodes.REFERENCE_TYPES_FOLDER | i=91 | ReferenceType 集合 |
Server 状态
| 常量 | NodeId | 含义 |
|---|---|---|
WellKnownNodes.SERVER | i=2253 | Server 自身对象 |
WellKnownNodes.SERVER_SERVER_ARRAY | i=2254 | ServerArray 字符串数组 |
WellKnownNodes.SERVER_NAMESPACE_ARRAY | i=2255 | NamespaceArray 字符串数组 |
WellKnownNodes.SERVER_SERVER_STATUS | i=2256 | Server 状态结构 |
WellKnownNodes.SERVER_SERVER_STATUS_START_TIME | i=2257 | 服务端启动时间 |
WellKnownNodes.SERVER_SERVER_STATUS_CURRENT_TIME | i=2258 | 服务端当前时间 |
WellKnownNodes.SERVER_SERVER_STATUS_STATE | i=2259 | 状态 (Running / Failed / ...) |
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO | i=2260 | BuildInfo |
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_PRODUCT_NAME | i=2261 | 产品名 |
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_PRODUCT_URI | i=2262 | 产品 URI |
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_MANUFACTURER_NAME | i=2263 | 厂商 |
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_SOFTWARE_VERSION | i=2264 | 版本 |
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_BUILD_NUMBER | i=2265 | Build number |
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_BUILD_DATE | i=2266 | Build date |
标准 ReferenceType
| 常量 | NodeId |
|---|---|
WellKnownNodes.REFERENCES | i=31 |
WellKnownNodes.HIERARCHICAL_REFERENCES | i=33 |
WellKnownNodes.NON_HIERARCHICAL_REFERENCES | i=32 |
WellKnownNodes.ORGANIZES | i=35 |
WellKnownNodes.HAS_TYPE_DEFINITION | i=40 |
WellKnownNodes.HAS_COMPONENT | i=47 |
WellKnownNodes.HAS_PROPERTY | i=46 |
WellKnownNodes.HAS_CHILD | i=34 |
常见 DataType
| 常量 | NodeId |
|---|---|
WellKnownNodes.BASE_DATA_TYPE | i=24 |
WellKnownNodes.BOOLEAN | i=1 |
WellKnownNodes.INT32 | i=6 |
WellKnownNodes.UINT32 | i=7 |
WellKnownNodes.INT64 | i=8 |
WellKnownNodes.FLOAT | i=10 |
WellKnownNodes.DOUBLE | i=11 |
WellKnownNodes.STRING | i=12 |
WellKnownNodes.DATE_TIME | i=13 |
WellKnownNodes.NODE_ID_TYPE | i=17 |
用法
// 不推荐: 硬编码
try (OpcUaDataValue dv = ua.read("i=2258")) { /* ... */ }
// 推荐: 用常量
try (OpcUaDataValue dv = ua.read(WellKnownNodes.SERVER_SERVER_STATUS_CURRENT_TIME)) {
long ft = dv.variant().asFileTime();
// ...
}
ServerStatus 完整读取
import java.util.Arrays;
import java.util.List;
List<String> nodes = Arrays.asList(
WellKnownNodes.SERVER_SERVER_STATUS_STATE,
WellKnownNodes.SERVER_SERVER_STATUS_CURRENT_TIME,
WellKnownNodes.SERVER_SERVER_STATUS_START_TIME,
WellKnownNodes.SERVER_NAMESPACE_ARRAY);
List<OpcUaDataValue> values = ua.readMany(nodes, Enums.AttributeId.Value);
try {
System.out.println("State = " + values.get(0).variant());
System.out.println("CurrentTime = ft=" + values.get(1).variant().asFileTime());
System.out.println("StartTime = ft=" + values.get(2).variant().asFileTime());
System.out.println("Namespaces = " + values.get(3).variant());
} finally {
for (OpcUaDataValue dv : values) if (dv != null) dv.close();
}
完整列表
代码里查 WellKnownNodes.java 源文件有 30+ 常量, OPC Foundation 标准命名空间下的节点都在.