OPC UA
文章平均质量分 68
草莓仙生
努力提高python编程技术
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
asyncua模块实现OPC UA通讯
asyncua是OPCUA的python实现,使用起来非常方便。UaExpert是OPC UA Client的GUI工具,当编写好server代码后并运行,我们可以使用UaExpert去和server进行通信。原创 2024-08-20 17:08:48 · 1865 阅读 · 0 评论 -
asyncua监控节点数据变化的原理是什么?发现节点write_value()但是节点前后数值一样情况下,还是会产生data_change事件,这是为什么
这个订阅用于接收服务器上的节点数据变化通知。这样,当服务器上的节点数据发生变化时,OPC UA服务器就会发送一个数据变化通知给客户端,客户端的订阅就会调用注册的数据变化处理函数来处理这个通知。时间戳或质量戳的变化:即使节点的值没有改变,但与其关联的时间戳或质量戳可能发生了变化。实现额外的逻辑来过滤不必要的通知:在客户端实现额外的逻辑来检查接收到的数据变化通知是否真正表示了值的改变,并忽略不必要的通知。网络或传输层问题:有时,网络或传输层的问题可能导致数据包被重传或错误地解释为新的数据变化。原创 2024-07-04 09:45:55 · 607 阅读 · 0 评论 -
opcua报错:asyncua.ua.uaerrors._auto.BadNoMatch: The requested operation has no match to return.
Client端的call_method方法的输入参数methodid有三种样式:ua.NodeId(‘func_name’, 2)或者’2:func_name’表示节点、ua.QualifiedName(‘func_name’, 2)、str(‘func_name’)如原创 2024-06-28 17:39:11 · 933 阅读 · 0 评论 -
asyncua.client.ua_client.UaClient:opening connection OPCUA为什么Client端连接Server端报错超时
测试发现是由于Server端在执行创建节点任务,创建节点任务花费的时间比较长,此时Client端尝试连接Server,Server会不响应Client的连接通讯请求,在Server开始执行Read request操作时,Client端连接能执行成功。网络延迟是连接速度慢的一个常见原因。如果Client和Server之间的网络质量不佳,或者有较高的延迟,那么连接过程可能会受到影响。调整Client配置:根据网络环境和实际需求,调整asyncua Client的配置参数,如连接超时、重试策略等。原创 2024-06-21 16:30:05 · 811 阅读 · 0 评论 -
使用asyncua模块的subscribe_data_change监控opcua的Server节点数据变化
上述报错原因在于创建监控句柄SubscriptionHandler类时,节点数据变化的函数名称有问题,不是默认的datachange_notification,我写的是data_change_notification。原创 2024-06-21 12:43:48 · 667 阅读 · 0 评论 -
asyncua模块中OPC UA的ua.Variant如何表示字典?
然而,OPC UA 标准本身并不直接支持字典作为一种数据类型。但是,你可以通过将字典序列化为一个字符串(如 JSON 格式),然后使用 ua.Variant 来表示这个字符串,从而间接地在 OPC UA 中表示字典。这种方法允许你在 OPC UA 中存储和传输字典数据,但需要注意的是,这种方法依赖于 JSON 序列化和反序列化,因此可能不适合处理非常大的字典或需要高性能的场景。此外,这种方法还假设客户端和服务器都支持 JSON 格式的字符串,并且都使用了相同的编码和解码逻辑。原创 2024-06-19 21:13:13 · 502 阅读 · 0 评论 -
使用asyncua模块如何在opcua框架的Server端添加方法及在Client端调用方法
使用call_method()函数调用节点的方法input_Arg,input_Arg有两个输入参数,都是ua.VariantType.UInt32数据类型。原创 2024-06-14 17:00:04 · 725 阅读 · 0 评论 -
如何使用asyncua模块在opcua的Server端添加值为列表的变量?
同理,考虑将OPCUA不支持的数据类型转成支持的数据类型,Server添加方法,输入数据类型为列表时,可以使用ua.VariantType.Variant数据类型,在Client加载该方法时,使用ua.Variant([1, 2, 16, 19, 216])将列表转换成ua.VariantType.Variant数据类型,实测发现该种方式得到的输入参数数据类型为list,不影响方法的执行。在添加变量时,你提供的初始值(在本例中是空数组[])将作为变量的初始状态。你可以根据需要将其替换为实际的数组值。原创 2024-06-14 17:37:06 · 789 阅读 · 0 评论 -
使用asyncua模块的call_method方法调用OPC UA的Server端方法报错:asyncio.exceptions.TimeoutError
这篇文章中说明了报错:asyncio.exceptions.TimeoutError的原因,是由于call_method调用的方法执行时间太长了,但是Client端同步执行的检查服务是否处于在线状态的背景任务执行超时了,最终导致抛出报错:asyncio.exceptions.TimeoutError,拿不到Server执行调用方法后的结果。原创 2024-06-19 20:44:34 · 1316 阅读 · 0 评论
分享