opc ua客户端到服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opc ua客户端到服务器相关的知识,希望对你有一定的参考价值。
我想知道是否可以将数据从OPC UA客户端发送到服务器。我有一台装有OPC UA服务器的Windows 10 PC和一些Raspberry Pi作为客户端。
我已经编写了Python代码来将数据从服务器发送到客户端。现在,我想将数据从Raspberry Pis上的客户端发送到Windows 10 PC上的服务器。可以这样做吗?或者我是否必须在Raspberry Pis和Windows 10 PC上的客户端上设置服务器?
这server.py
:
from opcua import Server
from random import randint
import datetime
import time
server = Server()
url = "opc.tcp://131.246.76.240:4840"
server.set_endpoint(url)
name = "OPCUA_SIMULATION_SERVER"
addspace = server.register_namespace(name)
node = server.get_objects_node()
Param = node.add_object(addspace, "Parameters")
Temp=Param.add_variable(addspace, "Temperature", 0)
Press=Param.add_variable(addspace, "Pressure", 0)
Time=Param.add_variable(addspace, "Time", 0)
Temp.set_writable()
Press.set_writable()
Time.set_writable()
server.start()
print("Server started at {}".format(url))
while True:
Temperature = randint(10, 50)
Pressure = randint(200, 999)
TIME = datetime.datetime.now()
print(Temperature, Pressure, TIME)
Temp.set_value(Temperature)
Press.set_value(Pressure)
Time.set_value(TIME)
time.sleep(1)
这是client.py
:
import time
from opcua import Client
url = "opc.tcp://131.246.76.240:4840"
client= Client(url)
client.connect()
print("Client Connected")
while True:
Temp = client.get_node("ns=2;i=2")
Temperature = Temp.get_value()
print(Temperature)
Press = client.get_node("ns=2;i=3")
Pressure = Press.get_value()
print(Pressure)
TIME = client.get_node("ns=2;i=4")
Time = TIME.get_value()
print(Time)
time.sleep(1)
答案
简短的回答是肯定的!您可以从OPC UA客户端编写,读取和订阅OPC UA服务器上可用的标签。实际上,这就是我们需要客户的原因。
我认为你的困惑始于对OPC UA服务器/客户端架构如何工作的误解。考虑到上面共享的代码,您的OPC UA服务器不会向您的客户端发送任何数据。您的客户端请求并从服务器读取它。同样,您只需要从同一客户端向服务器发送另一个请求来写入/设置值。例如;
# set/write node value (e.g. 26) by using implicit data type
Temp = client.get_node("ns=2;i=2")
Temp.set_value(26)
总而言之,无需部署和设置更多服务器或客户端。只需更新客户端代码即可支持编写代码。希望这可以帮助!
以上是关于opc ua客户端到服务器的主要内容,如果未能解决你的问题,请参考以下文章
Springboot 实现操作OPC ua Server 的数据读写 | 代码教程