问题标签 [node-opcua]

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 投票
1 回答
329 浏览

node.js - 从 node-opcua 服务器动态删除变量

我正在尝试在 node-opcua 服务器中动态添加和删除变量。

使用sample_server.js,我能够在末尾使用以下代码模拟动态添加变量的过程post_initialize()

我的问题是,如何删除变量?

命名空间文档中,我没有看到任何删除变量的方法。

更新以前的代码,我想要这样的东西:

提前致谢。

0 投票
1 回答
137 浏览

javascript - 如何将 node-opcua 导入项目?

我只想将“node-opcua”导入我的项目,但它给了我如下错误:

0 投票
0 回答
269 浏览

javascript - node-opcua, nodejs, express: 运行 OPCUAserver 后动态添加变量节点

阅读 OPC-UA 基础的文档和示例,变量节点总是添加在开始运行服务器的语句之前。是否可以在服务器启动后添加它们?如果我更改不起作用的语句的顺序。

想想以下情况:一旦我们开始异步运行应用程序/软件(而不是服务器),我需要做一些 HTTP 请求。然后服务器启动,在我的 HTTP 请求完成后,我根据网络返回的信息添加了变量节点。

变量由文件 .json 添加,“https”将以 HTML 形式发送数据。我的服务器将分析它们并将它们添加到 .json 文件中。然后我需要服务器来添加它。

OPCUA_SERVER.js

应用程序.js

appconfig.json

});

0 投票
1 回答
200 浏览

javascript - 尽管值没有改变,是否有一个内置的机制来忽略通知?

为了确定我使用 freeopcua (Python) 实现的 OPC-UA 可能存在的问题,我同时使用 node-opcua 和 freeopcua 创建了一个相同的最小示例。问题是我收到了订阅通知,尽管值没有改变,例如:值更改为 10、10、10、10、1、1、1 等。

最后我发现这其实是PLC软件的问题。在我的本地测试 PLC 上,我无法重现此问题。通过将 PLC 更新到生产环境中使用的固件,我也遇到了这种错误行为。降级后行为消失了。

我不明白的是 node-opcua 从未表现出这种行为。并排运行 node-opcua 正常工作,而 freeopcua 示例没有。

问题是:node-opcua 是否有任何内部机制不会将所有通知传递给我的客户端,尽管它是从服务器接收到它们的。但是因为价值实际上并没有改变它忽略它们?

这是我在示例中使用的代码,是我从 Github 页面上的客户端示例修改的。

0 投票
1 回答
378 浏览

node.js - 爬取地址空间中的所有对象

我正在尝试抓取地址空间中的对象。目的是存储它,然后创建一个包含对象的 XML 文件。有谁知道该怎么做?

0 投票
1 回答
696 浏览

node.js - OPC UA 服务器上的用户名/密码身份?

在客户端:

在服务器中

当客户端与 OPCUA 服务器创建会话时,它会将用户名/密码身份发送到服务器上的 activeSession。当客户端连接到我服务器上的服务器时,我如何知道该用户名?

0 投票
1 回答
263 浏览

node.js - node-opcua-samples - simple_client.js 不连接到 simple_server.js

我正在尝试更深入地了解使用 opc。所以我安装了 node js,然后通过 npm安装了node-opcua-samples 。

之后我去了powershell,将cwd更改为node-opcua-samples的bin目录并启动simple_server.js

node simple_server.js

服务器正在启动并打印

server now waiting for connections. CTRL+C to stop

到控制台。然后它打印

contacting discovery server backoff opc.tcp://localhost:4840 attempt # 0 retrying in 2 seconds server registration is still pending (is Local Discovery Server up and running ?)

从输出我希望能够连接到正在运行的服务器,即使它显示有关发现服务器的警告。我对吗?

下一步是在第二个 powershell 中启动simple_client.js ,方法是将 cwd 更改为node-opcua-samples的 bin 目录,然后使用

node simple_client.js >endpointUrl printed by server<

此时我希望客户端连接到启动的服务器并完成内置的测试用例。但客户端似乎无法连接到服务器并打印

backoff attempt # 0 retrying in 2 seconds

遵循simple_client.js内部给出的提示并使用 ts-node 运行simple_client_ts.ts会导致相同的行为。

那么我的错误在哪里?

任何提示或问题将不胜感激。

问候格雷戈尔

复制系统详细信息:

Windows 10 Node Version 12.13.0 node-opcua-samples Version 2.5.7

0 投票
1 回答
782 浏览

node-opcua - 使用 node-opcua 调用带有结构输入参数的 OPCUA 方法

我正在尝试与根据此规范实现 OPC-UA 服务器的 RFID 阅读器进行交互。

我正在尝试调用 ScanStart 方法,该方法将ScanSettings 结构作为输入参数(AutoID 数据类型),但尽管阅读了示例和文档,但我无法找到执行此操作的方法。

使用UAExpert,我可以调用该方法并使用GUI输入结构的值,这会在wireshark中产生以下转储:

有没有人成功注册一个 ExtensionObject 以使用 node-opcua 传递给方法调用?在这一点上,我很高兴只发送上面的 ByteString 而无需对结构进行编码/解码,因为它始终是静态的。

显然有一个constructExtensionObject 方法。我为此拥有的客户端代码是:

产生错误“当 pendingTransactions 不为空时处理”,它被 extObj.catch() 捕获

我究竟做错了什么?我相当确定这是我的承诺处理问题......

任何帮助表示赞赏!

0 投票
1 回答
101 浏览

opc - 如何为 c++ sdk 更改 opc ua 中的 nodeid

我已经搜索了几个小时关于如何在 c++ OPC UA 中更改我的对象/变量的 nodeID,但不幸的是无法弄清楚。

现在,例如,nodeID if ns=0;s=Demo.Dynamic.Scalar.Int32

我需要更改为 ns=0;i=2558

请有更多经验的人在这里帮助我吗?

我正在使用这个 SDK

0 投票
1 回答
346 浏览

java - OPC UA 调用确认方法并在 java 中获取 Bad_EventIdUnkown

目前我正在使用 Eclipse Milo 开发 OPCUA 客户端。我能够从 OPC UA cpp 服务器读取数据并将设定点数据写入服务器。

我无法确认 OPCUA 警报和事件。

我尝试使用 node-red opcua 服务器并收到警报,现在我想确认相同,所以我尝试了调用 opcua 确认方法的代码。这里是:

此字节数组字符串由节点红色 opcua 服务器使用事件订阅示例的 eclipse milo 代码给出。

所以我们得到以下给定状态: CallMethodResult{StatusCode=StatusCode{name= Bad_EventIdUnknown , value=0x809A0000, quality=bad}, InputArgumentResults=[StatusCode{name=Good, value=0x00000000, quality=good}, StatusCode{name=好,值=0x00000000,质量=好}],InputArgumentDiagnosticInfos=[],OutputArguments=[]}

请给我一些解决此问题的建议。