问题标签 [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.
javascript - 运行并将单元测试添加到 nodejs 项目
我想在 github 上运行与该项目相关的测试,请参阅https://github.com/node-opcua/node-opcua上的文件夹测试。不幸的是,我不知道使用了哪个测试框架以及如何运行所有测试?
node.js - 如何从 Windows 计算机测试在 Raspberry Pi 上运行的 OPC-UA 服务器?
作为我要在 Raspberry Pi 上实现和测试 OPC 服务器的工作分配的一部分,我在这个 Github 存储库(sample_server.js) 中找到并实现了一个node.js服务器。
现在,作为 OPC 新手,我尝试下载MatrikonOPC Explorer以连接到服务器,但它拒绝找到服务器。起初我以为我只是没有在连接提示符中放入正确的东西(端点 URL 到某个地方?),但是阅读了更多内容,(我认为)我现在明白资源管理器使用常规 OPC 规范,而我的服务器是一个 OPC-UA 服务器。如果我在这里错了,请纠正我。
无论如何,我想看看这个服务器是否真的工作并且可以访问。什么是测试这个的好方法?如果可能的话,我想通过网络从我的 Windows PC 上对其进行测试(它们都在同一个网络上,并且我确保它们可以相互 ping 通)。
javascript - node.js opc ua很多监控项
我使用node-opcua module
并且我想opc ua nodes
通过订阅监视许多我看到的结果如下:html UI 中的用户选择要监视的节点,然后单击将这些nodeIds
作为参数发送的监视按钮,然后为每个nodeid
设置订阅和 .on("changed" ) 适用于这些项目中的每一个,就像并行一样。现在代码看起来像:
现在,如果我想设置新项目来监控它,只需添加许多变量 MonitorItem1 、 ..2 、 ..3 等。
如何以更多agile/dynamic
方式做到这一点?如果我有数组(字符串)nodeIds
并且我希望在订阅中监控其中的每一个。代码是async.series
([ 代码 ])的一部分
opc - OPC UA 唯一 ID
我正在尝试构建一个 OPC UA 客户端应用程序。
我希望能够在 OPC 树中唯一标识一个 UA 节点。
我知道在 OPC DA 中,标准节点 ID 是带有“。”的字符串。作为我可以用来识别节点的分隔符。
在 OPC UA 中,节点 ID 不必是字符串,但我仍然希望能够构建一个映射到特定节点的唯一字符串。
我正在考虑基于节点名称。例如:Demo.MyNode.MyValue。
但我担心节点名称可以包含诸如“。”之类的字符。这将使我的 ID 不唯一。
有没有可以用作分隔符的字符?
有没有更好的方法将节点 ID 表示为字符串(包括其路径)?
node.js - node opc-ua - 我如何在服务器中发现变量?
我正在学习节点 opc-ua,并遵循了 GitHub 页面中为 sample_server.js 和 simple_client.js 提供的示例。
在 sample_server 中,我在构造服务器的地址空间时添加了一个变量,例如:
这是整个服务器代码供参考:
现在,在客户端中,我想通过名称或完整的 nodeId 来发现这个变量。我正在使用提供的示例来浏览与服务器的会话,但在返回时我只看到 FolderType、Objects、Types 和 Views,并且无法在任何地方找到此变量。
这是客户端代码:
提前致谢
node.js - 使用 node-opcua 在 Kepserver 中创建变量
我有一个西门子 1200 PLC。使用node-opcua
客户端和 Kepserver,我能够读取变量并更改值。现在我想从 KepServer 中的 node-opcua 在 PLC 中创建一个新变量。
我尝试使用 node-opcua 服务器,因为在示例中我已经看到了如何创建变量,但是我得到一个错误,因为我试图连接到 KepServer 所做的同一个端口。
我该如何处理创建一个新变量?并从 node-opcua 创建一个组标签?
是否可以在 Kepserver 中有一个 opcua 服务器并创建直接连接到该服务器的变量?我的 Kepserver 位于: opc.tcp://localhost:49320 要连接到这个 Kepserver,我使用 nodeopcua 客户端:
我想从我的 Kepserver 中的代码创建新变量。我已经看到使用 nodeopcua 服务器代码有一种创建变量的方法: Creating a Simple Server
我想在 KepServer 中使用一些东西:
我能做些什么来解决我的问题?
javascript - js 在 node-opcua 中设置动态变量
node-opcua @ https://github.com/node-opcua/node-opcua上的示例说我需要为添加到 OPC 服务器的每个变量重写代码,这是通过调用 'addressSpace.addVariable()' 来实现的。 . 但是,如果我有 1000 个变量,这可能是一项艰巨的任务......最终每个自定义用户都想要重写代码,这可能很乏味......所以我试图动态地做到这一点。
opc 从另一个自定义服务器(不是 OPC)读取“标签”。
有了这个“标签”,opc 服务器需要将它们添加到节点“设备”。
当 OPC 服务器 node-opcua 找到来自网络的变量的 get 或 set 时,它会调用正确变量的 get 或 set:
正如我所说,我尝试在 get 和 set 函数中使用“this”,但运气不佳,get 有一个“this.browseName”(标签名称)属性,可用于动态读取我的变量,并且它目前可以工作。
问题出在集合中,集合中的“this.browseName”和“this.nodeId”不存在!所以它给出了“未定义”的错误。它也不存在于变量变量中。
您知道在上述代码中使用动态变量的解决方法吗?我需要一个 for 循环,其中一个 get 和一个 set 定义用于所有变量(标签),它们读取和写入一个多属性对象或一个对象数组,例如 1 个 get 和 1 个 set 定义,它们在一个中写入正确的变量记录数组。
PS:我在堆栈溢出时发现了这个:
var foo = {
a: 5,
b: 6,
init: function() {
this.c = this.a + this.b;
return this;
}
}
但在我的情况下,node-opcua 变量没有像示例那样工作的“this”。在'set'(如init)中:this.browseName(如a)和this.nodeId(如b)不可访问。
node.js - 如何使用 node-opcua 订阅优先级?
node-opcua 中的客户端订阅有一个名为priority
. 它是一个数值字段。我无法理解订阅是否Priotity=1
会获得更高Priority=10
或更低的优先级。
源代码中的默认优先级是1
. 那么它是最低的,还是最高的?哪一个会获得偏好,1 或 10 或 100?
node.js - 如何使用 node-opcua 从 OPC DA Server 读取数据?
的存储库页面node-opcua
说它支持DataAccess
. 但我找不到任何连接到 OPC DA 服务器并读取数据的示例。
到目前为止,我已经尝试了server_with_da_variables示例。我已经能够使用sample_client读取它的数据。
方法和连接 OPC UA Server 的方法一样吗?我们是使用端点 URL 并创建会话并使用 NodeId 读取,还是过程不同?
opc - OPC UA 客户端 - 标记组不为空时显示为空
我正在编写一个 UA 客户端 DLL 以允许查询和读取 OPC 标签。我以前写过 DA 版本,但现在是时候与时俱进,不要管 DCOM 地狱了。
一切顺利,但我注意到我无法浏览到某些我知道有效且在 OPC 项目中的标签。我对这些标签之一的容器节点的浏览器搜索报告它不包含节点并引发异常,但它包含的组和标签可以由 DA 进程浏览。即使是 OPC 基金会提供的 Sample UA Client 应用程序,也没有列出这些标签。例如见下图:
有问题的标签组是“TKPlant.CL535E.Global.iaHomg_Press”。
在 Kepware 中,组有以下 6 个标签:
在 OPC 快速客户端中,标签的状态和值是....(一切正常)
但在 UA Client Sample App 中,浏览显示如下:
您可以看到该组中不存在任何节点。节点属性是:
将此与类似的组进行比较:
该组的属性:
我看不出任何差异,但似乎 UA 示例客户端的结果与我的浏览功能相同 - 在组中看不到任何标签。
我认为 UA 客户端认为这本身就是一个标签,而不是一个组。但这个项目实际上是在现场并且正在工作。奇怪的是,在查看 Quick Client 屏幕截图时,该组本身出现并被赋予了一个值????-
我知道这可能是一个很长的镜头,但有没有人知道为什么这个组 - 确实有标签 - 在使用 UA 访问时显示为空?
谢谢
史蒂夫