使用 eclipse milo 构建用于历史数据访问的 OPC UA 服务器

2023-12-31

我是 OPC-UA 的新手,遇到了 eclipse milo 项目。项目看起来很有趣,但开发人员的帮助很少。我正在尝试浏览代码以找出如何使用历史数据实现 Node。项目有其他示例可供参考,但缺少历史服务示例。我尝试修改ExampleNameSpace.java中提供的示例以启用UaVariableNode上的历史记录,但在Prosys OPC UA客户端中,它没有为节点启用“显示历史记录”菜单。这是我尝试过的

UaVariableNode node = new UaVariableNode.UaVariableNodeBuilder(server.getNodeMap())
            .setNodeId(new NodeId(namespaceIndex, "HelloWorld/Dynamic/" + name))
            .setAccessLevel(ubyte(AccessLevel.getMask(AccessLevel.READ_WRITE)))
            .setBrowseName(new QualifiedName(namespaceIndex, name))
            .setDisplayName(LocalizedText.english(name))
            .setDataType(typeId)
            .setTypeDefinition(Identifiers.BaseDataVariableType)
            **.setHistorizing(true)**
            .build();

如果使用 milo 实现历史服务的人可以分享示例,那将会非常有帮助。

更新:抱歉,我应该包括我实现的其他部分。读完其他内容后堆栈溢出帖子 https://stackoverflow.com/questions/46811305/milo-opc-ua-server-with-historical-data-access?rq=1,我在命名空间中实现了historyRead函数,它将负责从数据存储中提取历史读取。我现在的麻烦是向 OPC 客户端指示 Node 具有历史记录功能。测试是让prosys OPC客户端为Node启用“History”菜单。我可能在这里遗漏了一些东西。


Milo Server SDK 不为您实现历史服务。

设置Historizing属性只是冰山一角。你的Namespace还必须覆盖historyRead (and historyUpdate如果你想支持它)中定义的方法AttributeHistoryManager并提供实施方案。如果您不熟悉 UA 历史记录的工作原理,这是不可能的,这在规范的第 11 部分中都有定义。

您还必须承担实际责任storing任何节点的历史记录Historizing属性集,以便您实现的服务实际上有一些数据可供查询。

FWIW,开发人员文档正在开发中,应该会在接下来的几个版本中得到大幅改进。

历史不太可能作为 SDK 的一部分实现,只需轻按一下开关,它就会开始工作。它相当复杂,并且服务的有效实现可能会与您正在使用的任何后备存储相耦合。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 eclipse milo 构建用于历史数据访问的 OPC UA 服务器 的相关文章

随机推荐