Связь с клиентским сервером - PullRequest
0 голосов
/ 27 декабря 2018

Я новичок в opcua и пытаюсь установить связь следующим образом:

Сервер импортирует xml -> клиент читает значение (используя get_node) -> в зависимости от значения, clientотправляет запрос на сервер -> сервер отвечает на запрос -> клиент получает ответ.

Я выполняю часть до тех пор, пока клиент не прочитает значение.Я сейчас пытаюсь отправить запрос на сервер.Но я не могу понять, какой метод использовать?

Я видел исходный код и вижу метод 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 голосов
/ 30 мая 2019

Вы можете немного точнее указать код запроса.Если вам нужен код состояния, то используйте

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 (), которая дает вам гораздо больше информации. Отсюда вы можете извлечь информацию, которую вы ищете.

...