opcua python库call_method正确使用

问题描述 投票:0回答:2

我需要编写Python代码来调用服务器上可用的方法ReadProgram从opcua服务器检索文件。该方法具有输入和输出参数 (method attributesinput attributesoutput attributessuccessful call with ua expert)。

我编写了以下代码来检索程序:

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 完全陌生。我已经读过很多关于这个主题的文章,但没有一篇文章完全描述了正确的工作方式。有人可以帮忙吗?预先感谢。

python opc-ua
2个回答
0
投票

需要通过父对象调用方法。

obj = client.get_node("ns=2; i=?")
input_arg = ua.Variant([0], ua.VariantType.UInt16)
result = method.call_method("2:ReadProgramm", input_arg)

0
投票

这段代码运行良好:

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()

非常感谢您的帮助

© www.soinside.com 2019 - 2024. All rights reserved.