600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > java通过opc协议获取ifix实时数据

java通过opc协议获取ifix实时数据

时间:2020-05-27 03:37:32

相关推荐

java通过opc协议获取ifix实时数据

背景:小编是个ifix盲,在拿到需求之前是一脸懵逼,在恶补了两周ifix基础知识后对ifix有一定的了解。其实我们写java的只是取ifix的数据,对于ifix的一些配置可以不用去管,但为了自己做测试不得不自己搭建ifix。还有就是客户使用的ifix是MBE,不是像kepware或者IGS那种直接就能作为opc服务器的应用,相较于使用kepware或IGS作为opc服务器稍微麻烦了点,其实就是换了一个opc服务器而已。

推荐看看这些博客

Java实现OPC通信,看这一篇就够了

OPC和DCOM配置

云逸大佬的其他博客也可以看看:

云逸大佬的其它关于opc的文章,还有kepware的文章

使用kepware作为opc服务器的文章:

OPCServer:使用KEPServer

步骤跟上面博客一样,先配置DCOM和OPC,使用MBE先将模拟器的数据读上来。然后就是使用java读ifix opc。

跟使用kepware/IGS作为服务器不一样的是,ifix opc应该读取的是iFIX OPC Client Data Access Server,所以在配置DCOM时要配置iFIX OPC Client Data Access Server的DCOM。然后就是拿到iFIX OPC Client Data Access Server的应用程序ID,也就是下图所示。

然后就是代码,配置itemid这块,我是这么配的:

public static void syncOpcRead(ConnectionInformation ci){Server server = new Server(ci, Executors.newSingleThreadScheduledExecutor());try {server.connect();for (int i = 0; i < 10; i++) {Group group = server.addGroup();Item item = group.addItem("Server2;Group3;d1:400011");Item item2 = group.addItem("Server2;Group3;d1:400013");log.info("ItemName:[" + item.getId()+ "],value:”" + item.read(false).getValue());log.info("ItemName:[" + item.getId()+ "],value:”" + item2.read(false).getValue());Thread.sleep(1000);}} catch (UnknownHostException e) {e.printStackTrace();} catch (JIException e) {e.printStackTrace();} catch (org.openscada.mon.AlreadyConnectedException e) {e.printStackTrace();} catch (AddFailedException e) {e.printStackTrace();} catch (NotConnectedException e) {e.printStackTrace();} catch (DuplicateGroupException e) {e.printStackTrace();} catch (InterruptedException e) {e.printStackTrace();}}

写的不好,相互交流。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。