如何使用 hurence 读取 java 中的 opc-ua 变量
How to read opc-ua variable in java with hurence
我正在尝试从 OPC-UA 服务器读取变量。我正在使用 com.hurence.opc 库。我的密码是
OpcUaConnectionProfile connectionProfile = new OpcUaConnectionProfile()
.withConnectionUri(URI.create("opc.tcp://localhost:62541/Quickstarts/ReferenceServer"))
.withClientIdUri("imp:ladisa").withClientName("GestionaleLadisa")
.withSocketTimeout(Duration.ofSeconds(15));
// Create an instance of a ua operations
OpcUaOperations opcUaOperations = new OpcUaTemplate();
// connect using our profile
opcUaOperations.connect(connectionProfile).doOnError(throwable -> System.out.println(throwable.getMessage()))
.ignoreElement().blockingAwait();
OpcUaSessionProfile sessionProfile = new OpcUaSessionProfile()
//the publication window
.withPublicationInterval(Duration.ofMillis(100));
try (OpcSession session = opcUaOperations.createSession(sessionProfile).blockingGet()) {
List<OpcData> result = session.read("Objects.CTT.Scalar.Scalar_Instructions").blockingGet();
for(var dt:result) {
System.out.println( dt.getValue());
}
}
我正在使用 opc 服务器参考实现进行测试。但是我无法引用该变量,我得到了一个异常
java.util.NoSuchElementException: No value present
at java.base/java.util.Optional.get(Optional.java:141)
at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:195)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
指向 OPC-UA 树中节点的正确方法是什么?
我找到的方法是:
List<OpcData> result = session.read("ns=2;s=Scalar_Instructions").blockingGet();
使用 nodeId。
我希望这可以帮助某人。
我正在尝试从 OPC-UA 服务器读取变量。我正在使用 com.hurence.opc 库。我的密码是
OpcUaConnectionProfile connectionProfile = new OpcUaConnectionProfile()
.withConnectionUri(URI.create("opc.tcp://localhost:62541/Quickstarts/ReferenceServer"))
.withClientIdUri("imp:ladisa").withClientName("GestionaleLadisa")
.withSocketTimeout(Duration.ofSeconds(15));
// Create an instance of a ua operations
OpcUaOperations opcUaOperations = new OpcUaTemplate();
// connect using our profile
opcUaOperations.connect(connectionProfile).doOnError(throwable -> System.out.println(throwable.getMessage()))
.ignoreElement().blockingAwait();
OpcUaSessionProfile sessionProfile = new OpcUaSessionProfile()
//the publication window
.withPublicationInterval(Duration.ofMillis(100));
try (OpcSession session = opcUaOperations.createSession(sessionProfile).blockingGet()) {
List<OpcData> result = session.read("Objects.CTT.Scalar.Scalar_Instructions").blockingGet();
for(var dt:result) {
System.out.println( dt.getValue());
}
}
我正在使用 opc 服务器参考实现进行测试。但是我无法引用该变量,我得到了一个异常
java.util.NoSuchElementException: No value present
at java.base/java.util.Optional.get(Optional.java:141)
at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:195)
at java.base/java.util.stream.ReferencePipeline.accept(ReferencePipeline.java:195)
at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:948)
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
指向 OPC-UA 树中节点的正确方法是什么?
我找到的方法是:
List<OpcData> result = session.read("ns=2;s=Scalar_Instructions").blockingGet();
使用 nodeId。 我希望这可以帮助某人。