0

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();
}

递归获取树的方法听起来可行吗?我想树木可以变大。有没有更好的方法?

4

1 回答 1

1

您的建议是,当您打开 Windows 资源管理器时,您必须等待几分钟才能加载完整的目录和文件树。

OPC UA 服务器的节点树可以有数千个节点,其中大多数节点对于那些正在寻找一个变量或一组特定变量进行监控的人来说并不感兴趣。

整个树可能需要几分钟才能加载,并且这将在您的程序用户中引起的意见不会很好。

仅当用户单击子节点时才应获取并显示子节点,例如 Windows 资源管理器。

也许你应该先从设计图形界面开始

于 2021-04-24T11:24:34.157 回答