测试的节点为长度20的BOOL数组, 如下:
将改数组的值改为[True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False]
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()
# test_node节点是PLC里的一个bool数组,长度为20
test_node = client.get_node('ns=4;s=CIP数据BOOL')
# 设置节点的Value, 首先要创建uatypes.Variant()和uatypes.DataValue()类
# 1. 创建uatypes.Variant(),并设置相关参数
var = uatypes.Variant()
var.Value = [True, True, True, True, True, True, 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(test_node.get_value())
client.disconnect()
[True, True, True, True, True, True, False, False, False, False, False, False, False, False, False, False, False, False, False, False]