我需要编写Python代码来调用服务器上可用的方法ReadProgram从opcua服务器检索文件。该方法具有输入和输出参数 (、、、)。
我编写了以下代码来检索程序:
from opcua import Client, ua
client = Client("opc.tcp://10.254.92.26:4880", timeout=5000)
client.connect()
method = client.get_node("ns=2; i=399800")
input = method.get_child(["0:InputArguments"])
input_arg = ua.Variant([0], ua.VariantType.UInt16)
result = method.call_method(input, input_arg)
client.disconnect()
但是我在第 9 行收到以下错误(结果 = ....):“方法 id 没有引用指定对象的方法。”(BadMethodInvalid)。
我对 opcua 完全陌生。我已经读过很多关于这个主题的文章,但没有一篇文章完全描述了正确的工作方式。有人可以帮忙吗?预先感谢。
需要通过父对象调用方法。
obj = client.get_node("ns=2; i=?")
input_arg = ua.Variant([0], ua.VariantType.UInt16)
result = method.call_method("2:ReadProgramm", input_arg)
这段代码运行良好:
from opcua import Client, ua
client = Client("opc.tcp://10.254.92.26:4880")
client.connect()
obj=client.get_node("ns=2; i=399860") #this is the parent of the method
method=obj.get_child("2:ReadProgram")
input_arg = ua.Variant([0], ua.VariantType.UInt16)
result = obj.call_method(method, input_arg)
client.disconnect()
非常感谢您的帮助