OPC UA设置事件节点

发布时间:2026/10/21 10:19:14

OPC UA设置事件节点 参考链接Question about Python OPCUA session timeout and client.import asyncio, json from asyncua import Client, ua, Node from asyncua.common.events import Event from datetime import datetime #################################################################################### # Globals: #################################################################################### # OPC UA Client server_url opc.tcp://192.168.10.1:4840 nodes_to_subscribe [ #node-id ns4;i1000, ns0;i2267, ns0;i2259, ] events_to_subscribe [ #(eventtype-node-id, event-node-id) ] #################################################################################### # OpcUaClient: #################################################################################### class SubscriptionHandler: The SubscriptionHandler is used to handle the data that is received for the subscription. def datachange_notification(self, node: Node, val, data): Callback for asyncua Subscription. This method will be called when the Client received a data change message from the Server. print(node, val, data) def event_notification(self, event: Event): called for every event notification from server print(event) def status_change_notification(self, status): called for every status change notification from server print(status) async def opcua_client(): -handles connect/disconnect/reconnect/subscribe/unsubscribe -connection-monitoring with cyclic read of the service-level client Client(urlserver_url) handler SubscriptionHandler() subscription None case 0 subscription_handle_list [] while 1: if case 1: #connect print(connecting...) try: await client.connect() await client.load_type_definitions() print(connected!) case 2 except: print(connection error!) case 1 await asyncio.sleep(5) elif case 2: #subscribe all nodes and events print(subscribing nodes and events...) try: subscription await client.create_subscription(50, handler) subscription_handle_list [] if nodes_to_subscribe: for node in nodes_to_subscribe: handle await subscription.subscribe_data_change(client.get_node(node)) subscription_handle_list.append(handle) if events_to_subscribe: for event in events_to_subscribe: handle await subscription.subscribe_events(event[0], event[1]) subscription_handle_list.append(handle) print(subscribed!) case 3 except: print(subscription error) case 4 await asyncio.sleep(0) elif case 3: #running read cyclic the service level if it fails disconnect and unsubscribe wait 5s connect try: service_level await client.get_node(ns0;i2267).get_value() if service_level 200: case 3 else: case 4 await asyncio.sleep(5) except: case 4 elif case 4: #disconnect clean unsubscribe, delete subscription then disconnect print(unsubscribing...) try: if subscription_handle_list: for handle in subscription_handle_list: await subscription.unsubscribe(handle) await subscription.delete() print(unsubscribed!) except: print(unsubscribing error!) subscription None subscription_handle_list [] await asyncio.sleep(0) print(disconnecting...) try: await client.disconnect() except: print(disconnection error!) case 0 else: #wait case 1 await asyncio.sleep(5) #################################################################################### # Run: #################################################################################### if __name__ __main__: asyncio.ensure_future(opcua_client()) asyncio.get_event_loop().run_forever()
延伸阅读

更多相关文章

2026/10/21 10:18:25

篮球 ·篮球 篮球 篮球 篮球 篮球 篮球

//-----TYPE 41 降肘顶肘 定手式---- *手肘自然压缩,手肘降低为顶肘腾出上顶空间。 - [定型] : 左右垂直瞄准, 但是眼睛注意力始终在篮筐。降肘: 目的不是为了降肘而降肘,而是为了给顶肘向上发力的空间,手肘放低(大多时候手肘平于或低于肩)…

2026/10/6 19:06:04

Qt QStackedWidget详解:抽屉式界面管理器的原理、实战与优化

1. 项目概述:为什么你需要一个“抽屉式”的界面管理器? 在桌面应用开发中,尤其是使用Qt框架时,我们经常会遇到一个经典场景:一个主窗口里,需要根据用户的不同操作(比如点击侧边栏的不同按钮、选…

2026/10/21 0:55:21

GPGPU编程模型与架构原理:从浮点运算到矩阵乘法优化

1. 项目概述:从“一句话”到“一整套”的GPGPU认知跃迁 最近在网上看到不少朋友在讨论“一句话告诉我浮点运算的机理”,这让我想起了十多年前刚接触通用图形处理器(GPGPU)编程时的自己。那时候,面对CUDA或者OpenCL的官…

2026/10/21 10:18:55

Vue 3 + TypeScript项目ESLint与Prettier完整配置指南

前阵子接手一个Vue 3 TypeScript项目的代码审查,功能全是好的,就是代码风格没法看:有人用单引号有人用双引号,缩进从上到下能跳出三四种花样,组件名有的PascalCase有的kebab-case,还有几处没删干净的conso…

2026/10/21 10:18:55

Auto Playwright 实践:用大模型自动生成与修复测试用例

干自动化测试这行时间长了,最让人崩溃的不是写脚本,而是改脚本。前端同事只要把按钮的 class 从 submit-btn 改成 submit-button,你精心维护的几十条用例就能红成一片,而且这种“工伤”还只能自己消化。后来我开始尝试让大模型直接…

2026/10/21 10:18:55

技术博客创作素材的四大核心要素:标题、正文、关键词与摘要

我这边没有收到具体的项目标题内容,请重新发送时带上以下信息,我好基于它展开完整创作: 项目标题: [标题] 项目正文: [通常比较零散、不完整的原始描述,可是任意领域内容] 关键词: [关键词1, 关键词2, ...] 摘要描述: [对项目/内…

2026/10/21 10:13:52

知识图谱设计全流程复盘:从本体建模到实体对齐与性能优化

做知识图谱设计这几年,我操作过的项目从企业知识库到风控模型都有涉及,最大的体会是:大部分项目失败都不是因为技术选型不对,而是在动手之前,没有把“图谱要回答什么问题”想清楚。知识图谱本质上是一张用实体和关系编…

2026/10/21 4:53:08

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/21 0:00:35

交通流仿真实战:IDM跟驰与MOBIL换道模型参数调优与避坑指南

简介:这份资源是面向交通工程学习者与Python开发者的微观交通流仿真项目,核心实现智能驾驶模型(IDM)下的车辆跟驰与换道行为,可用于理解速度、密度与流量之间的动态关系,适合具备Python基础、希望深入交通模…

2026/10/21 0:00:35

揭穿智能体表面顺从:用追踪代码重建任务执行确定性

1. 表面顺从不是智能体的“礼貌”,而是任务执行链路上的隐性断点最近在调试一个跨平台长周期任务调度系统时,我反复遇到一种令人困惑的现象:智能体在用户指令发出后,几乎秒级响应“已收到”“正在处理”“请稍候”,UI上…

2026/10/21 0:00:35

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事:AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里,按宣传口径,本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”,而是这话背后的含金量——它把过去只能…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑