我找不到使用BrowseName给变量赋值的正确语法。我正在使用'flag1'布尔变量进行测试,因为它更容易调试。但我的目标是能够写入所有变量,包括数组。
如果我尝试使用索引号,它可以正常工作。
import pyOPCClient as opc
client = opc.opcConnect('192.168.5.10')
opc.write_value_bool(client, 'ns=4;s="opcData"."flag1"', True)
client.disconnect()
这是我的写布尔值的函数
##### Function to WRITE a Boolean into Bool Object Variable - Requires Object Name #####
def write_value_bool(client, node_id, value):
client_node = client.get_node(node_id) # get node
client_node_value = value
client_node_dv = ua.DataValue(ua.Variant(client_node_value, ua.VariantType.Boolean))
client_node.set_value(client_node_dv)
print("Value of : " + str(client_node) + ' : ' + str(client_node_value))
我正在遇到这个错误:
PS C:\Users\ALEMAC\Documents\Python Scripts> & C:/ProgramData/Anaconda3/python.exe "c:/Users/ALEMAC/Documents/Python Scripts/opctest.py"
Requested session timeout to be 3600000ms, got 30000ms instead
Traceback (most recent call last):
File "c:\Users\ALEMAC\Documents\Python Scripts\opctest.py", line 5, in <module>
opc.write_value_bool(client, 'ns=4;s="opcData"."flag1"', True)
File "c:\Users\ALEMAC\Documents\Python Scripts\pyOPCClient.py", line 49, in write_value_bool
client_node.set_value(client_node_dv)
File "c:\Users\ALEMAC\Documents\Python Scripts\opcua\common\node.py", line 217, in set_value
self.set_attribute(ua.AttributeIds.Value, datavalue)
File "c:\Users\ALEMAC\Documents\Python Scripts\opcua\common\node.py", line 263, in set_attribute
result[0].check()
File "c:\Users\ALEMAC\Documents\Python Scripts\opcua\ua\uatypes.py", line 218, in check
raise UaStatusCodeError(self.value)
opcua.ua.uaerrors._auto.BadNodeIdUnknown: "The node id refers to a node that does not exist in the server address space."(BadNodeIdUnknown)