Python opcua.common.node.Node类

opcua.common.node.Node

classopcua.common.node.Node(server, nodeid

参数:

  • server: 添加到的服务器
  • nodeid: 比如用ua.NodeId.from_string(‘ns=10;s=asd’)创建NodeId

方法:

  • get_browse_name(): 返回QualifiedName对象, 该对象是由NameSpace Index和name组成
  • get_display_name(): 返回LocalizedText对象, 该对象为节点的描述属性
  • get_data_type(): 返回节点的value值的数据类型对应的NodeId对象. 在Types下可以查看所有的数据类型的NodeId.Python opcua.common.node.Node类_第1张图片
  • get_data_type_as_variant_type(): 获取节点值对应的数据类型, 返回VariantType
  • get_access_level(): 获取节点的访问权限, 返回权限组成的集合(set)
  • get_user_access_level: 获取节点的用户访问权限, 返回权限组成的集合(set)
  • get_event_notifier()
  • set_event_notifier(values)
  • get_node_class(): 获取节点类属性
  • get_description(): 获取描述, 返回LocalizedText对象
  • get_value(): 获取节点value属性的值, 返回值的数据类型取决于值, 比如值为bool, 则返回True/False.
  • get_data_value(): 获取节点value属性的值, 返回DataValue对象
  • set_array_dimensions(value): 设置节点的属性 ArrayDimensions 确保它具有正确的数据类型。比如排列的长度。
  • get_array_dimensions(): 读取并返回节点的 ArrayDimensions 属性组成的列表
  • set_value_rank(value): 设置节点的ArrayDimensions属性
  • get_value_rank(): 读取并返回节点的 ArrayDimensions 属性
  • set_value(opcua.ua.uatypes.DataValue, varianttype=None): 设置节点的Value值
  • set_data_value(opcua.ua.uatypes.DataValue, varianttype=None): 同上
  • set_writable(writable=True): 通过client将节点设置为可写
  • set_read_only(): 将节点设置为只读
  • set_attr_bit(attr, bit):
  • set_attribute(attributeid, datavalue): 设置节点的属性值
  • get_attribute(AttributeId): 获取指定AttributeId的属性值,返回opcua.ua.uatypes.DataValue
  • get_attributes(AttributeId组成的列表): 获取指定多个AttributeId的属性值,返回多个opcua.ua.uatypes.DataValue组成的列表
  • get_children(): 获取节点所有的子节点,返回opcua.common.node.Node类组成的列表
  • get_properties():
  • get_variables():
  • get_methods():
  • get_children_descriptions():
  • get_encoding_refs():
  • get_description_refs():
  • get_references():
  • get_referenced_nodes():
  • get_path(max_length=20, as_string=False): 获取节点的路径,max_length表示路径的最大长度,假如max_length=2,则返回当前节点的父节点和当前节点。as_string=False时,返回opcua.common.node.Node组成的列表。as_string=True时,返回路径节点的QualifiedName.to_string组成的列表(BrowseName转换为String)在这里插入图片描述
  • get_parent(): 返回当前节点父节点,返回opcua.common.node.Node
  • get_child(path): 根据指定的path获取节点,path为路径节点的BrowseName

示例

import opcua
from opcua import ua
from opcua.ua import uatypes

url = 'opc.tcp://192.168.1.39:4840'
client = opcua.Client(url)
client.connect()

# 获取根节点
root = client.get_root_node()

# 获取GlobalVars节点
GlobalVars_node = client.get_node('ns=4;s=NxController.GlobalVars')

# test_node节点是PLC里的一个bool数组,长度为20
test_node = client.get_node('ns=4;s=CIP数据BOOL')

# 获取browse_name
test_node_browse_name = test_node.get_browse_name()
print(1, test_node_browse_name)

# 获取display_name
test_node_display_name = test_node.get_display_name()
print(2, test_node_display_name, test_node_display_name.Text)

# 获取data_type
test_node_data_type = test_node.get_data_type()
print(3, test_node_data_type)

# 获取data_type_as_variant_type, 变量值的数据类型!!!
test_node_value_variant_type = test_node.get_data_type_as_variant_type()
print(4, test_node_value_variant_type, type(test_node_value_variant_type))

# 获取access_level访问权限
test_node_access_level = test_node.get_access_level()
print(5, test_node_access_level, type(test_node_access_level.pop()))

# 获取user__access_level, 用户访问权限
test_node_user_access_level = test_node.get_user_access_level()
print(6, test_node_user_access_level, type(test_node_user_access_level.pop()))

# 获取description
test_node_description = test_node.get_description()
print(7, test_node_description, type(test_node_description))

# 获取具有变量属性节点的value值, 获取的就是具体数值!!!
test_node_value = test_node.get_value()
print(8, test_node_value, type(test_node_value))

# 获取value, 返回opcua.ua.uatypes.DataValue!!!
test_node_data_value = test_node.get_data_value()
print(9, test_node_data_value, type(test_node_data_value))

# 获取array_dimensions
test_node_array_dimensions = test_node.get_array_dimensions()
print(10, test_node_array_dimensions, type(test_node_array_dimensions))


# 设置节点的Value, 首先要创建uatypes.Variant()和uatypes.DataValue()类
# 1. 创建uatypes.Variant(),并设置相关参数
var = uatypes.Variant()
var.Value = [True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
var.VariantType = uatypes.VariantType.Boolean
var.is_array = True
# 2. 创建uatypes.DataValue()类,并将uatypes.DataValue().Value设置为uatypes.Variant()
dv = uatypes.DataValue()
dv.Value = var
# 3. 设置节点的Value
# test_node.set_value(dv)
test_node.set_data_value(value=dv)
print(11, test_node.get_value())

# 获取指定AttributeId的属性值,返回opcua.ua.uatypes.DataValue
test_node_attr = test_node.get_attribute(1)
print(12, test_node_attr)

# 获取指定多个AttributeId的属性值,返回多个opcua.ua.uatypes.DataValue组成的列表
test_node_attrs = test_node.get_attributes([1, 13])
print(13, test_node_attrs)

# 通过set_attribute方法设置节点的value
test_node.set_attribute(13, dv)

# 获取节点所有的子节点,返回opcua.common.node.Node类组成的列表
root_children = root.get_children()
print(14, root_children)

test_node_properties = test_node.get_properties()
print(15, test_node_properties)

test_node_variables = test_node.get_variables()
print(16, test_node_variables)

test_node_method = test_node.get_methods()
print(17, test_node_method)

root_children_descriptions = root.get_children_descriptions()
print(18, root_children_descriptions)

test_node_encoding_ref = test_node.get_encoding_refs()
print(19, test_node_encoding_ref)

test_node_description_refs = test_node.get_description_refs()
print(20, test_node_description_refs)

test_node_references = test_node.get_references()
print(21, test_node_references)

test_node_referenced_nodes = test_node.get_referenced_nodes()
print(22, test_node_referenced_nodes)

test_node_type_definition = test_node.get_type_definition()
print(23, test_node_type_definition)

# 获取节点的路径,max_length表示路径的最大长度,假如max_length=2,则返回当前节点的父节点和当前节点
# as_string=False时,返回opcua.common.node.Node组成的列表
# as_string=True时,返回路径节点的QualifiedName.to_string组成的列表(BrowseName转换为String)
test_node_path = test_node.get_path(max_length=20, as_string=False)
test_node_path_string = test_node.get_path(max_length=20, as_string=True)
print(24, test_node_path, type(test_node_path[1]))
print(25, test_node_path_string)

# 返回当前节点父节点,返回opcua.common.node.Node
test_node_parent = test_node.get_parent()
print(26, test_node_parent, type(test_node_parent))

# 根据指定的path获取节点,path为路径节点的BrowseName
root_child = root.get_child(['0:Objects', '4:new_Controller_0', '3:GlobalVars'])
print(27, root_child)

client.disconnect()

输出:

1 QualifiedName(4:CIP数据BOOL)
2 LocalizedText(Encoding:3, Locale:, Text:CIP数据BOOL) CIP数据BOOL
3 TwoByteNodeId(i=1)
4 VariantType.Boolean <enum 'VariantType'>
5 {<AccessLevel.CurrentWrite: 1>} <enum 'AccessLevel'>
6 {<AccessLevel.CurrentWrite: 1>} <enum 'AccessLevel'>
7 LocalizedText(Encoding:0, Locale:None, Text:None) <class 'opcua.ua.uatypes.LocalizedText'>
8 [True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False] <class 'list'>
9 DataValue(Value:Variant(val:[True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False],type:VariantType.Boolean), StatusCode:StatusCode(Good), SourceTimestamp:2023-03-23 07:40:43.044000) <class 'opcua.ua.uatypes.DataValue'>
10 [20] <class 'list'>
11 [True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
12 DataValue(Value:Variant(val:StringNodeId(ns=4;s=CIP数据BOOL),type:VariantType.NodeId), StatusCode:StatusCode(Good))
13 [DataValue(Value:Variant(val:StringNodeId(ns=4;s=CIP数据BOOL),type:VariantType.NodeId), StatusCode:StatusCode(Good)), DataValue(Value:Variant(val:[True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False],type:VariantType.Boolean), StatusCode:StatusCode(Good), SourceTimestamp:2023-03-23 07:40:43.094000)]
14 [Node(TwoByteNodeId(i=87)), Node(TwoByteNodeId(i=85)), Node(TwoByteNodeId(i=86))]
15 []
16 []
17 []
18 [ReferenceDescription(ReferenceTypeId:{self.ReferenceTypeId}, IsForward:{self.IsForward}, NodeId:{self.NodeId}, BrowseName:{self.BrowseName}, DisplayName:{self.DisplayName}, NodeClass:{self.NodeClass}, TypeDefinition:{self.TypeDefinition}), ReferenceDescription(ReferenceTypeId:{self.ReferenceTypeId}, IsForward:{self.IsForward}, NodeId:{self.NodeId}, BrowseName:{self.BrowseName}, DisplayName:{self.DisplayName}, NodeClass:{self.NodeClass}, TypeDefinition:{self.TypeDefinition}), ReferenceDescription(ReferenceTypeId:{self.ReferenceTypeId}, IsForward:{self.IsForward}, NodeId:{self.NodeId}, BrowseName:{self.BrowseName}, DisplayName:{self.DisplayName}, NodeClass:{self.NodeClass}, TypeDefinition:{self.TypeDefinition})]
19 []
20 []
21 [ReferenceDescription(ReferenceTypeId:{self.ReferenceTypeId}, IsForward:{self.IsForward}, NodeId:{self.NodeId}, BrowseName:{self.BrowseName}, DisplayName:{self.DisplayName}, NodeClass:{self.NodeClass}, TypeDefinition:{self.TypeDefinition}), ReferenceDescription(ReferenceTypeId:{self.ReferenceTypeId}, IsForward:{self.IsForward}, NodeId:{self.NodeId}, BrowseName:{self.BrowseName}, DisplayName:{self.DisplayName}, NodeClass:{self.NodeClass}, TypeDefinition:{self.TypeDefinition})]
22 [Node(TwoByteNodeId(i=63)), Node(StringNodeId(ns=4;s=NxController.GlobalVars))]
23 TwoByteNodeId(i=63)
24 [Node(TwoByteNodeId(i=84)), Node(TwoByteNodeId(i=85)), Node(StringNodeId(ns=4;s=NxController)), Node(StringNodeId(ns=4;s=NxController.GlobalVars)), Node(StringNodeId(ns=4;s=CIP数据BOOL))] <class 'opcua.common.node.Node'>
25 ['0:Root', '0:Objects', '4:new_Controller_0', '3:GlobalVars', '4:CIP数据BOOL']
26 ns=4;s=NxController.GlobalVars <class 'opcua.common.node.Node'>
27 ns=4;s=NxController.GlobalVars

你可能感兴趣的:(python,服务器,java)