Java 使用 OPC UA
要在Java中使用OPC UA(Open Platform Communications Unified Architecture),你可以使用开源库UaExpert。以下是一个简单的例子,展示如何使用UaExpert在Java中连接到OPC UA服务器并读取节点值:
首先,确保你的项目中包含了UaExpert的依赖。如果你使用Maven,可以在pom.xml
中添加以下依赖:
<dependency>
<groupId>org.openscada.opc</groupId>
<artifactId>opc-ua-sdk</artifactId>
<version>2.3.0</version>
</dependency>
然后,你可以使用以下Java代码连接到OPC UA服务器并读取一个节点的值:
import org.openscada.opc.dcom.common.ConnectionInformation;
import org.openscada.opc.dcom.da.ServerInformation;
import org.openscada.opc.lib.da.DataAccess;
import org.openscada.opc.lib.da.Item;
import org.openscada.opc.lib.da.ItemState;
public class OpcUaExample {
public static void main(String[] args) {
// 创建连接信息
ConnectionInformation connectionInformation = new ConnectionInformation("opc.tcp://localhost:4840");
try (DataAccess dataAccess = new DataAccess()) {
// 连接到OPC UA服务器
dataAccess.connect(connectionInformation, new ServerInformation("MyOPCUAServer"));
// 添加要读取的节点
Item item = new Item("ns=2;s=MyVariable", "MyItem");
dataAccess.addItem(item);
// 同步读取节点值
dataAccess.syncRead();
// 获取节点的状态和值
ItemState itemState = dataAccess.getItemState("MyItem");
if (itemState.isGood()) {
Object value = itemState.getValue();
System.out.println("Value: " + value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
确保替换"opc.tcp://localhost:4840"
为你的OPC UA服务器地址,"MyOPCUAServer"
为服务器名称,以及"ns=2;s=MyVariable"
为你要访问的节点的命名空间和节点名称。
请注意,这个例子是同步读取的,实际应用中可能需要异步读取以避免阻塞。此外,UaExpert库可能需要JACOB的依赖,你需要确保相关的JACOB库也被添加到项目中。
评论已关闭