You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过OPC UA实现两台Raspberry Pi的服务器与客户端连接

树莓派间OPC UA通信实现方案

基础准备

  • 确认两台树莓派处于同一局域网,通过hostname -I命令获取各自IP地址
  • 两台设备均安装Python3及pip,缺失时执行sudo apt install python3 python3-pip完成安装

Server端配置

  1. 安装OPC UA Python库:
    pip install opcua
    
  2. 编写Server代码(示例):
    from opcua import Server
    import time
    
    # 初始化Server
    server = Server()
    # 替换<Server_IP>为当前树莓派的IP地址
    server.set_endpoint("opc.tcp://<Server_IP>:4840/freeopcua/server/")
    
    # 注册自定义命名空间
    uri = "http://raspberrypi.opcua.local"
    idx = server.register_namespace(uri)
    
    # 创建对象与变量节点
    objects_node = server.get_objects_node()
    pi_object = objects_node.add_object(idx, "RaspberryPiServer")
    sensor_data = pi_object.add_variable(idx, "SensorReading", 0)
    # 设置变量可被Client写入
    sensor_data.set_writable()
    
    # 启动Server
    server.start()
    try:
        while True:
            time.sleep(1)
            # 模拟数据更新,这里可替换为实际传感器采集逻辑
            current_val = sensor_data.get_value() + 1
            sensor_data.set_value(current_val)
            print(f"Updated value: {current_val}")
    finally:
        # 确保程序退出时停止Server
        server.stop()
    
  3. 运行Server代码:python3 opcua_server.py,保持终端处于运行状态

Client端配置

  1. 同样安装OPC UA库:
    pip install opcua
    
  2. 编写Client代码(示例):
    from opcua import Client
    
    # 替换<Server_IP>为Server树莓派的IP地址
    client = Client("opc.tcp://<Server_IP>:4840/freeopcua/server/")
    try:
        client.connect()
        print("Connected to OPC UA Server")
        
        # 获取目标变量节点,路径对应Server的命名空间与变量名
        sensor_node = client.get_node("ns=2;i=2")
        # 读取变量值
        current_reading = sensor_node.get_value()
        print(f"Received sensor data: {current_reading}")
        
        # 可选:向Server写入数据(需Server端变量设置为可写)
        # sensor_node.set_value(50)
        # print("Wrote new value to Server")
    finally:
        client.disconnect()
        print("Disconnected from Server")
    
  3. 运行Client代码:python3 opcua_client.py,验证是否能正常读取Server端数据

核心知识点学习方向

  • 掌握OPC UA的核心概念:Endpoint(通信端点)、命名空间(节点分类管理)、节点类型(对象、变量、方法)、订阅机制(实时数据推送)
  • 熟悉python-opcua库的API逻辑,重点理解Server的节点创建、Client的节点访问与数据读写流程
  • 了解树莓派网络端口规则,确保4840端口(OPC UA默认端口)未被防火墙拦截,可通过sudo ufw allow 4840开放端口

内容的提问来源于stack exchange,提问作者Ankit Mavani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:50:53