我想知道是否可以将数据从 OPC UA 客户端发送到服务器。
我有一台设置了 OPC UA 服务器的 Windows 10 PC 和一些 Raspberry Pi 作为客户端。
我已经编写了 Python 代码来将数据从服务器发送到客户端。现在,我想将数据从 Raspberry Pi 上的客户端发送到 Windows 10 PC 上的服务器。
这可以做到吗?或者我是否必须在 Raspberry Pi 上设置服务器,并在 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)
This is 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)
总而言之,无需部署和设置更多服务器或客户端。只需更新您的客户端代码以支持编写标签即可。希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)