JAVA使用JeasyOPC读取OPC 服务器数据

本文详细介绍了如何利用JCustomOpc库建立Opc客户端连接,配置服务端地址,创建组和项目,同步读取Opc数据,并处理可能遇到的异常情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

demo 下载链接https://download.youkuaiyun.com/download/wangzhi291/10242404

首先在src下新建包javafish.clients.opc 将JCustomOpc.properties 拷贝到包中, 然后导入三个jar包

jeasyopc.jar commons-logging-1.1.jar和log4j-1.2.13.jar 

在项目下新建一个lib目录,也可以自定义名字和路径,但是在JCustomOpc.properties 配置中能指定这个目录。

将JCustomOpc.dll拷贝到 你定义好的目录下。

 

写一个测试类,添加以下代码。

 

  public static void main(String[] args) throws InterruptedException {
		  Opc test = new Opc();
		    
		    JOpc.coInitialize();
		    
		    JOpc jopc = new JOpc("localhost", "Matrikon.OPC.Simulation", "JOPC1");

//		    JOpc jopc = new JOpc("192.168.10.68", "Matrikon.OPC.Simulation.1", "JOPC1");
		    OpcItem item1 = new OpcItem("Random.ArrayOfReal8", true, "");
//		    OpcItem item1 = new OpcItem("Random.Int2", true, "");
		    OpcGroup group = new OpcGroup("group1", true, 1000, 0.0f);
		    
		    group.addItem(item1);
		    jopc.addGroup(group);
		    
		    try {
		      jopc.connect();
		      System.out.println("JOPC client is connected...");
		    }
		    catch (ConnectivityException e2) {
		      e2.printStackTrace();
		    }
		    
		    try {
		      jopc.registerGroups();
		      System.out.println("OPCGroup are registered...");
		    }
		    catch (UnableAddGroupException e2) {
		      e2.printStackTrace();
		    }
		    catch (UnableAddItemException e2) {
		      e2.printStackTrace();
		    }
		    
		    synchronized(test) {
		      test.wait(50);
		    }
		    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");
		    // Synchronous reading of item
		    int cycles = 100;
		    int acycle = 0;
		    while (acycle++ < cycles) {
		      synchronized(test) {
		        test.wait(1000);
		      }
		      try {
		        OpcItem responseItem = jopc.synchReadItem(group, item1);
		        System.out.println(responseItem);
		        System.out.println(sdf.format(responseItem.getTimeStamp().getTime())+":"+ Variant.getVariantName(responseItem.getDataType()) + ": " + responseItem.getValue());
		      }
		      catch (ComponentNotFoundException e1) {
		        e1.printStackTrace();
		      }
		      catch (SynchReadException e) {
		        e.printStackTrace();
		      }
		    }
		    
		    JOpc.coUninitialize();
		  }

 

 

确保自己机器已经运行了服务端。

如图:

 

 

JCustomOpc.properties 和JCustomOpc.dll 目录要准确,不然就容易报错找不到配置文件。

 

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值