跳到主要内容

well_known_nodes

well_known_nodes 模块预定义 OPC Foundation 标准节点的 NodeId 字符串常量. 用它代替手写 i=2258 提升代码可读性.

from darra_opcua import well_known_nodes as wkn   # 短别名
# 或
from darra_opcua import wkn # 已经预定义的别名
配套

常用根节点

常量NodeId含义
wkn.ROOT_FOLDERi=84Address Space 根
wkn.OBJECTS_FOLDERi=85业务数据根
wkn.TYPES_FOLDERi=86类型定义根
wkn.VIEWS_FOLDERi=87视图根
wkn.SERVERi=2253Server 自身对象

Server 状态

常量NodeId含义
wkn.SERVER_SERVER_STATUSi=2256Server 状态结构
wkn.SERVER_SERVER_STATUS_STATEi=2259状态 (Running / Failed / ...)
wkn.SERVER_SERVER_STATUS_CURRENT_TIMEi=2258服务端当前时间
wkn.SERVER_SERVER_STATUS_START_TIMEi=2257服务端启动时间
wkn.SERVER_SERVER_STATUS_BUILD_INFOi=2260BuildInfo (产品 / 厂商 / 版本)
wkn.SERVER_SERVER_ARRAYi=2254ServerArray 字符串数组
wkn.SERVER_NAMESPACE_ARRAYi=2255NamespaceArray 字符串数组

标准 ReferenceType

常量NodeId
wkn.HAS_COMPONENTi=47
wkn.HAS_PROPERTYi=46
wkn.ORGANIZESi=35
wkn.HAS_TYPE_DEFINITIONi=40
wkn.REFERENCESi=31
wkn.HIERARCHICAL_REFERENCESi=33

常见 DataType

常量NodeId
wkn.BOOLEANi=1
wkn.INT32i=6
wkn.UINT32i=7
wkn.INT64i=8
wkn.FLOATi=10
wkn.DOUBLEi=11
wkn.STRINGi=12
wkn.DATE_TIMEi=13
wkn.BYTE_STRINGi=15

WellKnownNamespaces

from darra_opcua import WellKnownNamespaces

WellKnownNamespaces.OPC_FOUNDATION # "http://opcfoundation.org/UA/"
WellKnownNamespaces.DI # "http://opcfoundation.org/UA/DI/"

用法

from darra_opcua import wkn

# 不推荐: 硬编码
with ua.read("i=2258") as dv:
print(dv.value)

# 推荐: 用常量
with ua.read(wkn.SERVER_SERVER_STATUS_CURRENT_TIME) as dv:
print(dv.value)

ServerStatus 完整读取 (批量)

from darra_opcua import wkn, AttributeId

nodes = [
wkn.SERVER_SERVER_STATUS_STATE,
wkn.SERVER_SERVER_STATUS_CURRENT_TIME,
wkn.SERVER_SERVER_STATUS_START_TIME,
wkn.SERVER_NAMESPACE_ARRAY,
]
results = ua.read_many(nodes)

names = ["State", "CurrentTime", "StartTime", "Namespaces"]
for name, dv in zip(names, results):
if dv:
with dv:
print(f"{name:13s} = {dv.value}")

完整列表

源码里查 darra_opcua/well_known_nodes.py 有 30+ 常量, OPC Foundation 标准命名空间下的节点都在.

下一步