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.opc.lib.common.AlreadyConnectedException e) {
            e.printStackTrace();
        } catch (AddFailedException e) {
            e.printStackTrace();
        } catch (NotConnectedException e) {
            e.printStackTrace();
        } catch (DuplicateGroupException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

写的不好,相互交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值