跳到主要内容

WellKnownNodes

WellKnownNodes 是 final 类, 只暴露 public static final String 常量, 预定义 OPC Foundation 标准节点的 NodeId 字符串. 用它代替手写 i=2258 提升代码可读性.

配套

常用根节点 (Folder)

常量NodeId含义
WellKnownNodes.ROOT_FOLDERi=84Address Space 根
WellKnownNodes.OBJECTS_FOLDERi=85业务数据根
WellKnownNodes.TYPES_FOLDERi=86类型定义根
WellKnownNodes.VIEWS_FOLDERi=87视图根
WellKnownNodes.OBJECT_TYPES_FOLDERi=88ObjectType 集合
WellKnownNodes.VARIABLE_TYPES_FOLDERi=89VariableType 集合
WellKnownNodes.DATA_TYPES_FOLDERi=90DataType 集合
WellKnownNodes.REFERENCE_TYPES_FOLDERi=91ReferenceType 集合

Server 状态

常量NodeId含义
WellKnownNodes.SERVERi=2253Server 自身对象
WellKnownNodes.SERVER_SERVER_ARRAYi=2254ServerArray 字符串数组
WellKnownNodes.SERVER_NAMESPACE_ARRAYi=2255NamespaceArray 字符串数组
WellKnownNodes.SERVER_SERVER_STATUSi=2256Server 状态结构
WellKnownNodes.SERVER_SERVER_STATUS_START_TIMEi=2257服务端启动时间
WellKnownNodes.SERVER_SERVER_STATUS_CURRENT_TIMEi=2258服务端当前时间
WellKnownNodes.SERVER_SERVER_STATUS_STATEi=2259状态 (Running / Failed / ...)
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFOi=2260BuildInfo
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_PRODUCT_NAMEi=2261产品名
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_PRODUCT_URIi=2262产品 URI
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_MANUFACTURER_NAMEi=2263厂商
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_SOFTWARE_VERSIONi=2264版本
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_BUILD_NUMBERi=2265Build number
WellKnownNodes.SERVER_SERVER_STATUS_BUILD_INFO_BUILD_DATEi=2266Build date

标准 ReferenceType

常量NodeId
WellKnownNodes.REFERENCESi=31
WellKnownNodes.HIERARCHICAL_REFERENCESi=33
WellKnownNodes.NON_HIERARCHICAL_REFERENCESi=32
WellKnownNodes.ORGANIZESi=35
WellKnownNodes.HAS_TYPE_DEFINITIONi=40
WellKnownNodes.HAS_COMPONENTi=47
WellKnownNodes.HAS_PROPERTYi=46
WellKnownNodes.HAS_CHILDi=34

常见 DataType

常量NodeId
WellKnownNodes.BASE_DATA_TYPEi=24
WellKnownNodes.BOOLEANi=1
WellKnownNodes.INT32i=6
WellKnownNodes.UINT32i=7
WellKnownNodes.INT64i=8
WellKnownNodes.FLOATi=10
WellKnownNodes.DOUBLEi=11
WellKnownNodes.STRINGi=12
WellKnownNodes.DATE_TIMEi=13
WellKnownNodes.NODE_ID_TYPEi=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 标准命名空间下的节点都在.

下一步