如何解决从 OPC UA 服务器读取整个树
OPC UA 新手在这里!
我想以编程方式读取 OPC 服务器上可用的节点树,以将树呈现给用户。然后,用户将选择他们感兴趣的节点,应用程序将获取该节点的值。
我要使用的客户端是 node-opcua。
我最初的想法是使用 session.browse() 方法递归读取所有节点,从根开始:
...
const connectionStrategy = {
initialDelay: 1000,maxRetry: 1,}
const client = OPCUAClient.create({
applicationName: "MyClient",connectionStrategy: connectionStrategy,securityMode: MessageSecurityMode.None,securityPolicy: SecurityPolicy.None,endpoint_must_exist: false,})
const endpointUrl = "opc.tcp://opcuaserver.com:48010"
async function main() {
await client.connect(endpointUrl)
const session = await client.createSession()
const browseResult = await session.browse("RootFolder") // start with root
for (const reference of browseResult.references) {
// recursively session.browse() nodeId of reference
}
await session.close();
await client.disconnect();
}
递归获取树的方法听起来可行吗?我想树木可以变大。有没有更好的办法?
解决方法
您的建议是,当您打开 Windows 资源管理器时,您必须等待几分钟才能加载完整的目录和文件树。
一个 OPC UA 服务器的节点树可以有几千个节点,其中大多数对于那些正在寻找要监控的变量或特定变量组的人来说没有兴趣。
整个树可能需要几分钟的时间来加载,并且这将导致您的程序用户的意见不会很好。
子节点应该只在用户点击它们时才被获取和显示,就像 Windows 资源管理器一样。
也许你应该先从设计图形界面开始
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。