使用utgard ,网址:http://openscada.org/projects/utgard/,
utgard 下载地址:http://download.openscada.org/utgard/I/1.2.0/
需要依赖包:j-Interop, 地址: http://j-interop.sourceforge.net/
下载地址:https://jaist.dl.sourceforge.net/project/j-interop/j-interop/j-Interop%203.0/j-Interop_3_0_0.tar.gz
依赖包slf4j:slf4j-api-1.7.7.jar log4j-1.2.17.jar
运行需要7个jar ,分别是:j-Interop三个, slf4j两个,utgrad两个。
import java.net.UnknownHostException;
import java.util.concurrent.Executors;
import org.jinterop.dcom.common.JIException;
import org.jinterop.dcom.common.JISystem;
import org.openscada.opc.lib.common.ConnectionInformation;
import org.openscada.opc.lib.common.NotConnectedException;
import org.openscada.opc.lib.da.AddFailedException;
import org.openscada.opc.lib.da.AutoReconnectController;
import org.openscada.opc.lib.da.DuplicateGroupException;
import org.openscada.opc.lib.da.Group;
import org.openscada.opc.lib.da.Item;
import org.openscada.opc.lib.da.ItemState;
import org.openscada.opc.lib.da.Server;
/**
* utgard 连接opc
*/
public class OpcClient3 {
public OpcClient3() {
}
private static String host = "192.168.0.42";
private static String domain = "";
private static String progId = "Knight.OPC.Server.Demo";
private static String user = "Administrator";
private static String password = "admin.123";
public void read(String itemName) {
AutoReconnectController autos = null;
try {
JISystem.setAutoRegisteration(true);
ConnectionInformation ci = new ConnectionInformation();
ci.setHost(host); // vpn Ip
ci.setProgId(progId);
//ci.setClsid(clsId);
ci.setUser(user);
ci.setPassword(password);
final Server s = new Server(ci, Executors.newSingleThreadScheduledExecutor());
autos = new AutoReconnectController(s);
autos.connect();
Thread.sleep(100);
Group group = s.addGroup("test");
group.setActive(true);
final Item item = group.addItem(itemName);
ItemState itemState = item.read(true);
System.out.println(item.getId() + " : " + itemState.getValue().getType() + " : " + itemState.getValue());
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (JIException e) {
e.printStackTrace();
} catch (NotConnectedException e) {
e.printStackTrace();
} catch (DuplicateGroupException e) {
e.printStackTrace();
} catch (AddFailedException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
autos.disconnect();
}
}
public static void main(String[] args) {
String itemName = "a.a.b";
OpcClient3 client = new OpcClient3();
client.read(itemName);
}
}