问题标签 [qtopcua]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
578 浏览

android - 对 QT mobile 的 OPC UA 支持

我正在研究适用于 ios 和 Android 的 OPC UA 客户端选项。我发现在 android 和 iOS 中有一些本地可用的解决方案

有没有人在这方面对“QT mobile”有想法?QT 是否对 "OPC UA" 有任何内置支持。由于有关 QT mobile 的信息有限,我无法找到有关此主题的更多详细信息。

0 投票
2 回答
666 浏览

qt - Qt OPC-UA - 访问趋势/历史数据

我正在使用带有 Qt OPC Ua 和 Open62541 后端的 Qt 5.11.1 来创建 OPC 客户端应用程序。

是否可以使用 Qt OPC UA 模块请求历史数据?例如,在这两次之间获取此变量(节点)的值。

我的服务器应用程序具有此功能 (FreeOpcUa),因为我可以将变量设置为“历史记录”并查看以前存储的值。但是我看不到在客户端轻松访问这些数据的明显解决方案。

目前我正在考虑在我的服务器上为每个变量公开一个函数,该函数将接受开始和结束时间戳,并手动收集值并将它们格式化为字符串或某个对象以供客户端使用。

有人对更好的方法有任何想法或想法吗?我对 OPC-UA 或 Qt 并不太熟悉,所以可能只是缺少一些明显的东西。

0 投票
0 回答
636 浏览

opc-ua - 节点 Opcua / QtOpcUa - 方法调用

我有一个节点 OPC 服务器,我使用 QtOpcUa 客户端库与 Qt 应用程序连接。

在我的服务器上,我定义了一个基本上是粗略的历史访问请求的方法,因为 HDA 支持尚不可用,它接受 start_date 和 end_date 然后查询数据库以获取它在数组中返回的相关值。

它看起来有点像这样:

我可以在 Prosys 等客户端中看到这一点,并调用可以正常工作的方法:

Prosys 屏幕抓取

但是我似乎无法从 Qt 调用此方法,我已经删除了参数的打包和结果处理程序(它只是列出了接收到的参数):

痕迹:

我似乎也无法在其他客户端上找到该方法,这是来自我手机上的 OPC UA 客户端应用程序,它在 Trends 对象下没有显示任何内容:

OPC UA 客户端应用程序

其他一切似乎都可以访问,我可以请求变量,设置监控一切都很好。

有什么我只是在这里遗漏的东西,还是 QtOpcUa 和其他客户的问题?

我可以通过创建变量而不是捕获输入和输出参数以及表示方法调用的布尔值来解决此问题,但是将所有内容绑定在一个方法中要简洁得多。

谢谢

0 投票
0 回答
116 浏览

qt - Qt QOpcUaNode writeAttribute:订阅的错误/客户端不活动

我有 Qt 的问题,我使用带有 open 6254 的 QOpcUa 在 PLC 上读取和写入标签,但有时会出现以下错误:“错误/客户端不活动订阅”并且我的程序崩溃。我已经确定了问题,这是因为 PLC 同时在此标签中写入。我想知道是否有办法在编写之前检查标签的可用性?

我已经了解了该主题,并且有 StatusCode 或 monitoringStatus 之类的功能,但我无法正确使用它们。

如果在撰写本文时该标签不可用,则会发生以下错误:[2019-08-30 09:07:07.019 (UTC+0100)] error/client Inactivity for Subscription 36。

  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 35 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 36 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 35 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 34 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 33 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 32 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 31 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 30 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 29 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 28 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 27 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 26 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 25 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 24 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 23 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 22 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 21 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 20 的错误/客户端不活动。
  • [2019-08-30 09:07:07.019 (UTC+0100)] 订阅 19 的错误/客户端不活动。
  • 09:07:07:程序意外结束。
  • 09:07:07:进程被强行结束。
0 投票
0 回答
53 浏览

qt - AttributeRead 从未由 QOpcUaNode 发送,无法读取节点但能够写入

我正在用 Qt 编写一个程序,我使用 QOpcUaNode 类。至此,我只需要使用 writeAttribute 在 OPC 上进行写入,并且工作正常(这意味着据我所知,我的节点设置正确)。现在,我还需要读取存储在节点中的信息,但我无法让它工作,当我尝试使用 qDebug() 显示属性时总是收到 QVariant(Invalid)

根据我在文档中阅读的内容,必须先发出信号 attributeRead,然后才能读取节点。我尝试了两种不同的方法来发出这个信号:readAttributes(QOpcUa::NodeAttribute::Value) 和 readValueAttribute() 这是我的代码,Flow 是我的 QOpcUaNode*,m_custom 是我的类的 bool 成员,最初设置为 false:

custom 是一个简单的插槽 m_custom = true; 当我编译并启动程序时,一旦到达这些行, i 的值就会上升并且永远不会停止,这意味着我认为信号永远不会发出。我第一次尝试不使用 while 循环,只读取值而不等待并收到 QVariant(Invalid)...

我使用 Flow ->writeAttribute(QOpcUa::NodeAttribute::Value, true ,QOpcUa::Types::Boolean); 一切正常。

有人可以帮我吗?

0 投票
1 回答
136 浏览

qt - 如何正确调用没有输入参数的方法

Qt 文档提供了方法

用于调用 Opc Ua 服务器上的方法。关于这种方法,我有 2 个问题:

  1. methodNodeId 到底是什么?我想这是我要调用的节点的 ID,但如果是这种情况,为什么函数不是静态的呢?

  2. 如何调用具有 0 个输入参数的方法?尝试在myNode->callMethod(methodNodeId)不指定进一步参数的情况下调用仍然返回BadTooManyArguments,但我真的没有其他方法可以看到它被使用。

0 投票
0 回答
44 浏览

qt - 使用 MBEDTLS 构建 qtopcua

我将qtopcua 5.14.0使用, 构建mbedtlsVS2015 X64 Native Tools但每次我在 qtopcua src 上运行 qmake 时,我都会得到

信息。

我已经下载mbedtls-2.26.0并链接open62541.primbedtls,但它也不起作用。我将以下行添加到open62541.pri