客户端服务器通信选项

时间:2018-12-27 01:03:29

标签: python client-server opc-ua

我是opcua的新手,我一直在尝试通过以下方式进行交流:

服务器导入xml->客户端读取一个值(使用get_node)->基于该值,客户端向服务器发送请求->服务器对请求进行响应->客户端收到响应。

在客户端读取该值之前,我已经完成了该部分。我现在正在尝试向服务器发送请求。 但是我不知道该使用哪种方法?

我已经看到源代码,并且可以看到send_request()方法。但是我不知道如何发送请求。

一旦我发送了请求,服务器将如何响应?请引导我完成此过程,或为我提供示例。

我的客户端和服务器如下:

server.py

from opcua import Server
from opcua.ua.uatypes import NodeId, NumericNodeId
from opcua import ua

server = Server()
server.import_xml("Opc.Ua.Di.NodeSet2.xml");
server.import_xml("final.xml");
server.set_endpoint("opc.tcp://localhost:4840/MyServer");
server.set_server_name("MyServer");

MyServerNameSpace = server.get_namespace_index("urn:freeopcua:python:server");
server.start();

client.py

from opcua import Client
from opcua import ua
from opcua.ua import StringNodeId

client = Client("opc.tcp://localhost:4840");

client.connect_socket();
client.create_session();
client.activate_session(username=None, password=None, certificate=None);


objects = client.get_objects_node();
xx = client.get_node(StringNodeId("i40.io/PrmInst/Temp_1",3));
tempval = xx.get_value();

if tempval < 20 :
#here i want to write the request code

1 个答案:

答案 0 :(得分:0)

您能否更精确地请求代码。如果您使用的是状态码,则 使用

tempval = xx.get_data_value()
if tempval.Value.Value < 20:
   status = tempval.StatusCode.name # eg: Good/Bad etc..
   message= tempval.StatusCode.doc

尝试使用get_data_value()为您提供更多信息。从那里您可以提取出您所需要的详细信息。