Java語言開發OPC之Utgard的數據訪問方式


原文鏈接:https://blog.csdn.net/yingzai1010/article/details/76154856/
基於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功能可以總結為如下表:

三種方式的性能總結:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM