用python opcua写出客户端和服务端互相通信的代码
时间: 2023-09-04 16:03:56 浏览: 133
一个基于Python写的OPC UA客户端例子
5星 · 资源好评率100%
### 回答1:
首先,您需要安装 python-opcua 库,可以使用以下命令完成安装:
```
pip install opcua
```
然后,以下是简单的客户端和服务端代码:
客户端代码:
```
from opcua import Client
# 建立客户端连接
client = Client("opc.tcp://localhost:4840/")
client.connect()
# 获取服务端节点
root = client.get_root_node()
print("Root node is: ", root)
# 关闭客户端连接
client.disconnect()
```
服务端代码:
```
from opcua import Server
# 建立服务端对象
server = Server()
# 启动服务端
url = "opc.tcp://0.0.0.0:4840/"
server.set_endpoint(url)
# 设置服务端名称空间
name = "MyServer"
addspace = server.register_namespace(name)
# 启动服务端事件循环
server.start()
# 停止服务端
server.stop()
```
客户端代码将连接到服务端,然后获取服务端根节点。服务端代码将启动一个OPC-UA服务器并设置名称空间。希望这些代码能帮助您解决您的问题。
### 回答2:
使用Python编写OPC UA客户端和服务器代码可以实现互相通信。下面是一个简单的示例代码:
服务器端代码(server.py):
```
from opcua import Server
# 创建服务器
server = Server()
# 添加命名空间
uri = "opcua.example"
ns = server.register_namespace(uri)
# 定义对象和变量类型
obj = server.get_objects_node().add_object(ns, "Object")
var = obj.add_variable(ns, "Variable", 0)
# 设置对象和变量值
var.set_writable()
# 启动服务器
server.start()
print("Server started!")
while True:
value = input("输入要设置的变量值:")
var.set_value(int(value))
```
客户端代码(client.py):
```python
from opcua import Client
# 连接服务器
url = "opc.tcp://localhost:4840"
client = Client(url)
client.connect()
# 获取对象和变量节点
obj = client.get_objects_node().get_child("2:Object")
var = obj.get_child("2:Variable")
# 读取变量值
value = var.get_value()
print("变量值:", value)
# 设置变量值
new_value = int(input("输入要设置的变量值:"))
var.set_value(new_value)
# 断开连接
client.disconnect()
```
以上是一个简单的OPC UA客户端和服务器互相通信的示例代码。通过服务器端定义对象和变量,客户端可以连接服务器并访问对象和变量节点。客户端可以读取和设置服务器端的变量值,实现双方的通信。
### 回答3:
下面是一个使用Python OPC UA库编写的客户端和服务端互相通信的基本代码示例:
服务端代码:
```python
from opcua import Server, ua
# 初始化服务器
server = Server()
url = "opc.tcp://localhost:4840"
server.set_endpoint(url)
# 创建名称空间
uri = "urn:myserver"
idx = server.register_namespace(uri)
node = server.get_objects_node()
# 创建对象
obj = node.add_object(idx, "MyObject")
var = obj.add_variable(idx, "MyVariable", 0)
var.set_writable()
# 启动服务器
server.start()
print("Server started at {}".format(url))
try:
while True:
value = float(input("Enter a value to update the variable: "))
var.set_value(value)
except KeyboardInterrupt:
server.stop()
print("Server stopped.")
```
客户端代码:
```python
from opcua import Client
# 连接到服务器
client = Client("opc.tcp://localhost:4840")
client.connect()
# 读取变量的值
var_node = client.get_node("ns=2;i=2")
value = var_node.get_value()
print("Current value of the variable: {}".format(value))
# 更新变量的值
new_value = float(input("Enter a new value to update the variable: "))
var_node.set_value(new_value)
print("Variable updated successfully.")
# 断开连接
client.disconnect()
```
要使这两个代码能够正常工作,请确保已通过pip安装了`opcua`库,将服务端代码保存为`server.py`并运行,在另一个终端中运行客户端代码。
阅读全文