gpt4 book ai didi

java - 具有历史数据访问功能的 Milo OPC UA 服务器

转载 作者:行者123 更新时间:2023-11-30 02:21:08 24 4
gpt4 key购买 nike

嘿,

我是 milo 的新手(和 OPC-UA)并尝试实现具有历史数据访问功能的 OPC-UA 服务器。我重用了当前的 milo 服务器示例并创建了一个历史节点。在此节点上,我可以查询(使用 Prosys OPC UA 客户端)空历史记录。我知道我必须自己实现历史节点的持久化。到目前为止一切顺利 - 但我找不到任何有关处理历史读取请求以及如何返回响应的信息。更准确地说,如何将 HistoryData 添加到 HistoryReadResult

@Override
public void historyRead(HistoryReadContext context, HistoryReadDetails readDetails, TimestampsToReturn timestamps,
List<HistoryReadValueId> readValueIds)
{
List<HistoryReadResult> results = Lists.newArrayListWithCapacity(readValueIds.size());
for (HistoryReadValueId readValueId : readValueIds){
//return 3 historical entries
DataValue v1 = new DataValue(new Variant(new Double(1)), StatusCode.GOOD, new DateTime(Date.from(Instant.now().minus(1, ChronoUnit.MINUTES))));
DataValue v2 = new DataValue(new Variant(new Double(2)), StatusCode.GOOD, new DateTime(Date.from(Instant.now().minus(2, ChronoUnit.MINUTES))));
DataValue v3 = new DataValue(new Variant(new Double(3)), StatusCode.GOOD, new DateTime(Date.from(Instant.now().minus(3, ChronoUnit.MINUTES))));
HistoryData data = new HistoryData(new DataValue[] {v1,v2,v3});
//???
HistoryReadResult result = new HistoryReadResult(StatusCode.GOOD, ByteString.NULL_VALUE, ??? );
results.add(result);
}
context.complete(results);
}

最佳答案

您将需要访问规范才能成功实现历史访问服务。第 4 部分和第 11 部分。

HistoryReadResult 构造函数中的最后一个参数应该是 HistoryData 结构。 ExtensionObject 基本上是结构编码和传输的容器。

要创建该ExtensionObject,您首先需要创建一个HistoryData(或HistoryModifiedData,具体取决于...请参阅规范),然后执行某些操作例如 ExtensionObject.encode(historyData) 来获取完成构建 HistoryReadResult 所需的对象。

关于java - 具有历史数据访问功能的 Milo OPC UA 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46811305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com