• OPC Utgard的数据访问方式


    1.同步读取某个点位的值

    • Item项的read()方法
    Server server = new Server(BaseConfiguration.getCLSIDConnectionInfomation(), Executors.newSingleThreadScheduledExecutor()); 
    server.connect(); 
    Group group = server.addGroup(); 
    Item item = group.addItem(“Random.Real5”); 
    System.out.println(“ItemName:[” + item.getId()+ “],value:” + item.read(false).getValue());

    2.基于AccessBase的Utgard的使用

    2.1 循环同步读取

    使用SyncAccess类隔时间段地进行同步读取数据 ,它实现了Runnable接口,实际上通过另一个线程进行同步读,具体代码如下:

    public static void syncRead(Server server) throws Exception {
        final String itemId = “Random.Int2”;
        // 每隔1秒同步读 
        AccessBase access = new SyncAccess(server, 1000);
        access.addItem(itemId, new DataCallback() {@
            Override
            public void changed(Item item, ItemState itemState) {
                System.out.println(itemState);
            }
        });
        // start reading 
        access.bind();
        // wait a little bit 
        Thread.sleep(5 * 1000);
        // stop reading 
        access.unbind();
    }

    2.2 循环异步读取

    使用Async20Access类隔时间段地进行异步读取数据,它实现了IOPCDataCallback接口,基于事件回调的实现,具体代码如下:

    public static void asyncRead(Server server) throws Exception {
        final String itemId = “Random.Int2”;
        // 第三个参数用于设置初始化时是否执行访问 
        AccessBase access = new Async20Access(server, 1000, false);
        access.addItem(itemId, new DataCallback() {
        @Override public void changed(Item item, ItemState itemState) {
           System.out.println(“ >>> Asynchronized read: value = ”+itemState.getValue());
          }
        });
       access.bind();
       Thread.sleep(5 * 1000);
       access.unbind();
    }

    数据读取方式

    来源:OPC-(三)-OPC主要功能

    同步访问

    OPC服务器把按照OPC应用程序的要求得到的数据访问结果作为方法的参数返回给OPC应用程序,OPC应用程序在结果被返回为止一直必须处于等待状态。

    异步访问

    OPC服务器接到OPC应用程序的要求后,几乎立即将方法返回。OPC应用程序随后可以进行其他处理。当OPC服务器完成数据访问时,触发OPC应用程序的异步访问完成事件,将数据访问结果传送给OPC应用程序。OPC应用程序在VB的事件处理程序中接受从OPC服务器传送来的数据。

    订阅方式数据采集

    并不需要OPC应用程序向OPC服务器要求,就可以自动接到从OPC服务器送来的变化通知的订阅方式数据采集(Subscription)。服务器按一定的更新周期(UpdateRate)更新OPC服务器的数据缓冲器的数值时,如果发现数值有变化时,就会以数据变化事件(DataChange)通知OPC应用程序。如果OPC服务器支持不敏感带(DeadBand),而且OPC标签的数据类型是模拟量的情况,只有现在值与前次值的差的绝对值超过一定限度时,才更新缓冲器数据并通知OPC应用程序。由此可以无视模拟值的微小变化,从而减轻OPC服务器和OPC应用程序的负荷。

    上述的OPC功能可以总结为如下表:

    三种方式的性能总结:

  • 相关阅读:
    域名证书文件包含两段证书
    关于docker的scratch镜像与helloworld
    JS实现网站内容的禁止复制和粘贴、另存为
    使用chromedriver实现豆瓣网页的全网页截图
    Python Tornado初学笔记之数据库(二)
    Python Tornado初学笔记之表单与模板(一)
    Redis中sds 模块的 API
    原码、补码、反码、移码之间的换算
    Python中的位运算
    Python中进制的转换
  • 原文地址:https://www.cnblogs.com/myboat/p/11739329.html
Copyright © 2020-2023  润新知