java opc

使用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);
    }
}

猜你喜欢

转载自blog.csdn.net/lsw1124/article/details/82623237