Python OPC-UA 终极指南:快速构建工业通信应用

【免费下载链接】python-opcua LGPL Pure Python OPC-UA Client and Server 【免费下载链接】python-opcua 项目地址: https://gitcode.com/gh_mirrors/py/python-opcua

Python OPC-UA 是一个LGPL许可的纯Python OPC UA客户端和服务器实现,支持Python 2、3和pypy环境。它提供了完整的OPC UA二进制协议实现,已通过多种不同OPC UA栈的测试。该项目的API既提供了发送和接收所有UA定义结构的低级接口,也提供了允许在几行代码中编写服务器或客户端的高级类,轻松在一个应用程序中混合高级对象和低级UA调用。

为什么选择Python OPC-UA?

OPC UA(开放平台通信统一架构)是工业自动化领域的关键通信标准,而Python OPC-UA则是实现这一标准的优秀工具。它具有以下优势:

  • 纯Python实现:无需依赖复杂的C库,易于安装和部署
  • 完整的协议支持:OPC UA二进制协议实现近乎完整
  • 灵活的API:同时提供低级接口和高级类,满足不同需求
  • 丰富的示例:提供多种客户端和服务器示例,快速上手
  • 跨平台:可在多种操作系统上运行,包括嵌入式设备如树莓派

快速安装步骤

安装Python OPC-UA非常简单,根据您的系统选择以下命令:

Debian/Ubuntu系统

apt install python-opcua        # 安装库
apt install python-opcua-tools  # 安装命令行工具

使用pip安装

pip install opcua

入门示例:构建您的第一个OPC UA应用

极简服务器示例

以下是一个简单的OPC UA服务器示例,只需几行代码即可创建一个功能完备的服务器:

from opcua import Server

server = Server()
server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")

# 设置服务器名称
server.set_server_name("FreeOpcUa Example Server")

# 导入一些节点类型
uri = "http://examples.freeopcua.github.io"
idx = server.register_namespace(uri)

# 获取对象节点,我们将在其中添加我们的自定义节点
objects = server.get_objects_node()

# 添加一个新的对象节点
myobj = objects.add_object(idx, "MyObject")

# 添加一个变量节点
myvar = myobj.add_variable(idx, "MyVariable", 6.7)

# 设置变量为可写
myvar.set_writable()

# 启动服务器
server.start()
print("Server started at {}".format(server.endpoint))

# 运行服务器直到用户按下Enter
try:
    while True:
        time.sleep(1)
finally:
    # 停止服务器
    server.stop()

完整代码可查看:examples/server-minimal.py

极简客户端示例

以下是连接到上述服务器并读取变量的客户端示例:

from opcua import Client

client = Client("opc.tcp://localhost:4840/freeopcua/server/")
try:
    # 连接到服务器
    client.connect()

    # 获取根节点
    root = client.get_root_node()
    print("Root node is: ", root)

    # 获取对象节点
    objects = client.get_objects_node()
    print("Objects node is: ", objects)

    # 遍历对象节点的子节点
    print("Children of root are: ", root.get_children())

    # 读取我们在服务器中创建的变量
    myvar = client.get_node("ns=2;i=2")
    print("My variable value is: ", myvar.get_value())

finally:
    # 断开连接
    client.disconnect()

完整代码可查看:examples/client-minimal.py

核心功能模块解析

Python OPC-UA的代码结构清晰,主要包含以下核心模块:

  • opcua/common:包含服务器和客户端都使用的高级对象和方法
  • opcua/client:包含客户端特定代码
  • opcua/server:包含服务器特定代码
  • opcua/crypto:包含加密相关功能
  • opcua/ua:包含OPC UA协议相关的底层实现

实用命令行工具

Python OPC-UA提供了一系列实用的命令行工具,位于tools/目录下,包括:

  • uadiscover:查找服务器、获取端点和网络上的服务器
  • uaclient:连接到服务器并启动Python shell
  • uaserver:启动演示OPC UA服务器
  • uaread:读取服务器上的数据
  • uawrite:写入数据到服务器
  • uals:列出服务器上的节点

例如,启动一个带证书的演示服务器:

tools/uaserver --populate --certificate cert.pem --private_key pk.pem

在树莓派上运行服务器

Python OPC-UA可以在树莓派等嵌入式设备上运行。为了减少启动时间,可以通过向服务器构造函数传递缓存文件路径来加速:

server = Server(cache_file="my_cache.pickle")

文档与资源

  • 官方文档:docs/目录下包含详细的文档
  • 更多示例:examples/目录提供了各种使用场景的示例代码
  • 测试过的服务器:freeopcua C++、freeopcua Python、prosys、kepware、beckhoff、winCC、B&R等
  • 测试过的客户端:freeopcua C++、freeopcua Python、uaexpert、prosys、quickopc

总结

Python OPC-UA是一个功能强大且易于使用的工业通信库,它让开发者能够快速构建OPC UA客户端和服务器应用。无论是简单的数据采集还是复杂的工业自动化系统,Python OPC-UA都能提供可靠的支持。通过其简洁的API和丰富的示例,即使是OPC UA新手也能迅速上手,将工业通信功能集成到自己的应用中。

要开始使用Python OPC-UA,只需克隆仓库并按照示例开始探索:

git clone https://gitcode.com/gh_mirrors/py/python-opcua

立即开始您的工业通信应用开发之旅吧!

【免费下载链接】python-opcua LGPL Pure Python OPC-UA Client and Server 【免费下载链接】python-opcua 项目地址: https://gitcode.com/gh_mirrors/py/python-opcua

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐