问题标签 [open62541]

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 投票
0 回答
180 浏览

linux - 无法将发布的消息发送给 open62541 中的订阅者

我正在尝试构建学习 open62541,我在这里使用示例示例。

我将示例保存为 publish.c 并使用 cmake 选项编译,cmake -DUA_ENABLE_SUBSCRIPTIONS=ON -DUA_ARCHITECTURE=freertosLWIP -DUA_ENABLE_AMALGAMATION=ON -DUA_ENABLE_PUBSUB=ON -DUA_ENABLE_PUBSUB_ETH_UADP=ON ../ 编译示例后出现以下错误:

我将发布间隔更改为 1 秒。因此,每 1 秒后,发布者会发出消息,但不知何故我收到了这个错误:

连续直到按下 ctrl-c。

谁能帮我在我的电脑上运行这个

代码看起来像这样

0 投票
0 回答
83 浏览

open62541 - 如何从结果结构中获取方法调用的NodeId

我正在通过 Open62541 库了解 OPC UA。

在我下面的示例中: client_method_async.c,客户端调用(异步)服务器端的方法,该方法驻留在节点 62541 中。

服务器响应,然后调用客户端的回调函数(名为 methodCalled)。

methodCalled 中的客户端是否有办法确定响应来自与节点 62541 关联的方法,如果是,那么序列号是多少(如请求 ID)?

这个问题的原因:

我希望我可以在客户端编写一个回调(例如'methodCalled'),它可以处理对不同节点的多次调用的结果。但是在处理结果时,我需要知道顺序来处理它们。

假设我有一个与服务器节点 62541 关联的方法,以及一个与服务器节点 62542 关联的方法。因为调用是异步的。我可能会收到乱序的响应,以及来自不同方法节点的响应。

我需要知道响应来自哪个方法节点,以及它们被调用的顺序。

0 投票
0 回答
67 浏览

c - OPC UA 中的 FindServers

我正在尝试获取服务器的服务器功能信息,而不使用多播扩展(无 MDNS)。作为 FindServers 方法,适用于applicationDescriptionUA_registeredServer结构,我通过添加容纳能力信息所需的两个字段来修改结构。

LDS 的初始配置如下所示:

在 register_server_with_discoveryServer 中,我添加了功能

现在,当我运行 findServers.c 代码时,我希望在进入 applicationDescription 详细信息时显示 serverCapabilities 的值。但我没有得到结果。在 FindServers.c 代码中,我打印了功能的大小。它显示为 0,但是在服务器注册时它是 2。

o/p 是:

serverCapabililty Identifier 是否仅与 mDNS 一起使用,不能修改为在没有 mDNS 的情况下使用?

[x] open62541 版本(发布号或 git 标签):v1.2-119-g7bde5f2b

0 投票
2 回答
185 浏览

c - 客户端和服务器之间的双工通信 open62541(OPC-UA)

我想在客户端和服务器之间建立双向数据通信。以下示例解释了我想要实现的目标。

例如:客户端每秒发送一个请求以读取两个节点 ID(这些节点 ID 是数字)的值。然后在客户端程序中添加这些数字并将其提供给用户。然后在 60 秒后,服务器告诉客户端乘以这个数字。所以现在客户端每秒都在乘以节点 ID 的值。然后在 60 秒后,它再次切换回加法。我可以通过客户端从服务器请求数据,但我想弄清楚如何从客户端向服务器请求数据?

编辑:我想在我原来的问题中添加一些新信息。原因是为了让帖子更清晰。下图描述了我想要实现的目标。 在此处输入图像描述 在上图中,提供者可以可视化为服务器方法,消费者可以可视化为客户端方法。现在如果安全消费者2(客户端2)连接到安全提供者2(服务器2),如何将从安全提供者2接收到的数据传递给安全提供者1。(因为客户端只能连接到单个服务器)。open62541的功能是否允许以下数据流:安全提供者2-->安全消费者2-->安全提供者1?如果是,你能举个例子吗?谢谢

0 投票
1 回答
164 浏览

c - 使用 CMake 编译项目

我的项目结构是这样的。

主 CMakeLists.txt 有以下代码

open62541/CMakeLists.txt 有以下代码

和 server/CMakeLists.txt 看起来像这样

server.c 有以下代码。

server.c 需要在 open62541.c 和 open62541.h 中定义和声明的函数。(我现在还没有构建客户端项目)所以,我在 server.c 文件和 server/CMakeLists 中包含了 open62541.h。如您所见,我已经给出了 open62541 文件夹的链接。我在 Visual Studio 中收到以下链接器错误。这条消息是德语的,对此感到抱歉。

当我包含服务器时,项目构建良好。c,open62541.c,open62541.h 文件放在一个文件夹中,并像这样使用单个 CMakeLists.txt 文件。

但是,当我尝试在不同的文件夹中构建我的项目时出现错误。我该如何解决这些错误?

0 投票
0 回答
78 浏览

simulation - Openmodelica 模拟 OPC 客户端连接崩溃的大型模型

我在 Ubuntu 20.04.2 LTS 64 位上使用 OpenModelica 1.18.0~dev-259-g9ebba11,并开发了一个流体系统模型,在使用标志 -embeddedServer=opc-ua -rt=0.1 进行模拟时会引发错误。即使嵌入式 opc 服务器的启动、与 UA Expert 客户端的连接和初始化都成功了,只要我将“run”变量设置为 true,进程就会崩溃:

模型

UA 专家输出

模型输出

不幸的是,我无法理解错误输出。如果我从模型中删除几个组件(同时试图保持它尽可能相似),模拟会神奇地运行得很好。

模拟得很好的Modelica模型

任何想法为什么会发生这种情况,或者我可以在哪里寻找更多调试信息?

我很感激任何帮助。

0 投票
1 回答
182 浏览

opc-ua - OPC UA 全球发现服务器 (GDS)

实施 Global Discovery Server 和证书管理的最佳方式是什么?open62541 是否支持这些服务,或者是否有一些更好的库可以使用(不一定是开源的)?

0 投票
0 回答
32 浏览

opc-ua - 在我的对象服务器 OPC-UA 添加属性时出错

我正在使用 open62541 库 [1.1.2-216-g50933d8]。告诉我如何将工程单元添加到我的节点?Му 节点创建:

我试图这样做:

但我得到了错误代码 UA_STATUSCODE_BADNOMATCH

我试图这样做:

但我得到了错误代码 UA_STATUSCODE_BADTYPEMISMATCH

我还尝试了这些示例https://groups.google.com/g/open62541/c/90dpSO2Wu7E/m/mNUknnRSCAAJ。他们不工作。

通常,我尝试向我的对象添加任何属性,但也没有成功(UA_STATUSCODE_BADTYPEMISMATCH)。

我不明白为什么我做不到?

0 投票
0 回答
45 浏览

linux - 生成的文件在 YOCTO 的当前配方中不可用

我正在尝试在 yocto 中构建一个 opc-server 应用程序。为此,我首先构建了基本上可以工作的open62541库。
然后我想构建 opc-server 应用程序,但我无法成功构建它。问题是,在do_compile步骤中它引用了/usr/share/open62541/tools/...中的文件,但不幸的是找不到它。
然后我做了一些分析:我试图检查open62541ls -l /usr/share目录是否存在,但它也不可用。 然后我查看了我的食谱的 WORKDIR 以了解这些文件是否在recipe-sysroot中仍然可用,是的,它们在那里可用。

您知道在新创建的配方中找不到 /usr/share/open62541/xxx中的这些文件可能是什么问题吗?

配方:
这是 open62541 配方:这个配方基本上应该可以工作,因为我能够创建一个 rootfs 和一个包含所有构建文件的 SDK。

这是我个人食谱的一小部分。为了测试,我添加了 do_configure_prepend() 来列出 /usr/share 目录以检查是否包含 open62541 目录。DEPENDS += " open62541"我认为使用所有需要的文件就足够了。

0 投票
0 回答
18 浏览

open62541 - 使用 open62541 实现 OPC UA 查找别名方法

我需要使用 Open62541 C Stack 实现 OPC UA Part 17 Find Aliases 方法。谁能给我 C 中 Alias/Tag 变量的实现示例?