|
|
本帖最后由 治国安邦 于 2026-6-29 15:01 编辑
- from opcua import Client
- def read_opcua_value(server_url, node_id):
- """
- 从 OPC UA 服务器读取指定节点的值。
-
- 参数:
- server_url (str): OPC UA 服务器的端点地址,例如 "opc.tcp://localhost:4840"
- node_id (str): 要读取的节点ID,例如 "ns=2;i=3" 或 "ns=2;s=MyVariable"
-
- 返回:
- 读取到的节点值,如果发生异常则返回 None
- """
- client = None
- try:
- # 1. 创建客户端实例并连接
- client = Client(server_url)
- client.connect()
-
- # 2. 获取指定节点
- node = client.get_node(node_id)
-
- # 3. 读取节点的值
- value = node.get_value()
- return value
-
- except Exception as e:
- print(f"读取 OPC UA 数据时出错: {e}")
- return None
-
- finally:
- # 4. 确保无论是否发生异常,都能安全断开连接释放资源
- if client:
- client.disconnect()
- # --- 使用示例 ---
- if __name__ == "__main__":
- opc_server = "opc.tcp://DESKTOP-37UAL4U:53530/OPCUA/SimulationServer" # 替换为实际的服务器地址
- target_node = "ns=3;i=1001" # 替换为实际的节点 ID
-
- result = read_opcua_value(opc_server, target_node)
- if result is not None:
- print(f"成功读取节点 {target_node} 的值: {result}")
- else:
- print("读取数据失败")
复制代码
vs中执行python能够正常读取正常的值,整数,但是火山返回的是0,这定义的方法应该怎么写到火山里调用,乐易大佬能出个案例么,还有参数如何带入,总不能一直在编辑框直接执行所有的方法和修改参数吧?求大佬写个案例 |
|