问题标签 [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.
node.js - 从 node-opcua 服务器动态删除变量
我正在尝试在 node-opcua 服务器中动态添加和删除变量。
使用sample_server.js,我能够在末尾使用以下代码模拟动态添加变量的过程post_initialize()
:
我的问题是,如何删除变量?
在命名空间文档中,我没有看到任何删除变量的方法。
更新以前的代码,我想要这样的东西:
提前致谢。
javascript - 如何将 node-opcua 导入项目?
我只想将“node-opcua”导入我的项目,但它给了我如下错误:
javascript - node-opcua, nodejs, express: 运行 OPCUAserver 后动态添加变量节点
阅读 OPC-UA 基础的文档和示例,变量节点总是添加在开始运行服务器的语句之前。是否可以在服务器启动后添加它们?如果我更改不起作用的语句的顺序。
想想以下情况:一旦我们开始异步运行应用程序/软件(而不是服务器),我需要做一些 HTTP 请求。然后服务器启动,在我的 HTTP 请求完成后,我根据网络返回的信息添加了变量节点。
变量由文件 .json 添加,“https”将以 HTML 形式发送数据。我的服务器将分析它们并将它们添加到 .json 文件中。然后我需要服务器来添加它。
});
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 页面上的客户端示例修改的。
node.js - 爬取地址空间中的所有对象
我正在尝试抓取地址空间中的对象。目的是存储它,然后创建一个包含对象的 XML 文件。有谁知道该怎么做?
node.js - OPC UA 服务器上的用户名/密码身份?
在客户端:
在服务器中
当客户端与 OPCUA 服务器创建会话时,它会将用户名/密码身份发送到服务器上的 activeSession。当客户端连接到我服务器上的服务器时,我如何知道该用户名?
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
node-opcua - 使用 node-opcua 调用带有结构输入参数的 OPCUA 方法
我正在尝试与根据此规范实现 OPC-UA 服务器的 RFID 阅读器进行交互。
我正在尝试调用 ScanStart 方法,该方法将ScanSettings 结构作为输入参数(AutoID 数据类型),但尽管阅读了示例和文档,但我无法找到执行此操作的方法。
使用UAExpert,我可以调用该方法并使用GUI输入结构的值,这会在wireshark中产生以下转储:
有没有人成功注册一个 ExtensionObject 以使用 node-opcua 传递给方法调用?在这一点上,我很高兴只发送上面的 ByteString 而无需对结构进行编码/解码,因为它始终是静态的。
显然有一个constructExtensionObject 方法。我为此拥有的客户端代码是:
产生错误“当 pendingTransactions 不为空时处理”,它被 extObj.catch() 捕获
我究竟做错了什么?我相当确定这是我的承诺处理问题......
任何帮助表示赞赏!
opc - 如何为 c++ sdk 更改 opc ua 中的 nodeid
我已经搜索了几个小时关于如何在 c++ OPC UA 中更改我的对象/变量的 nodeID,但不幸的是无法弄清楚。
现在,例如,nodeID if ns=0;s=Demo.Dynamic.Scalar.Int32
我需要更改为 ns=0;i=2558
请有更多经验的人在这里帮助我吗?
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=[]}
请给我一些解决此问题的建议。