OPC UA客户端到服务器

3

我想知道是否可以从OPC UA客户端向服务器发送数据。我有一台安装了OPC UA服务器的Windows 10 PC和一些用作客户端的树莓派。

我已经编写了Python代码将数据从服务器发送到客户端。现在,我想将来自树莓派客户端的数据发送到Windows 10 PC上的服务器。 这能做到吗?还是我必须在树莓派上设置服务器,在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)
1个回答

2
短答案是肯定的!您可以从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)

总之,无需部署和设置更多的服务器或客户端。只需更新您的客户端代码以支持编写标记即可。希望这可以帮到您!"最初的回答"。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接