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功能可以总结为如下表:

三种方式的性能总结:

OPC Utgard的数据访问方式的更多相关文章

  1. ADO.NET编程之美----数据访问方式(面向连接与面向无连接)

    最近,在学习ADO.NET时,其中提到了数据访问方式:面向连接与面向无连接.于是,百度了一下,发现并没有很好的资料,然而,在学校图书馆中发现一本好书(<ASP.NET MVC5 网站开发之美&g ...

  2. 关系型数据库工作原理-查询优化器之数据访问方式(翻译自Coding-Geek文章)

    本文翻译自Coding-Geek文章:< How does a relational database work>.原文链接:http://coding-geek.com/how-data ...

  3. (转载)西门子PLC学习笔记十五-(数据块及数据访问方式)

    一.数据块 数据块是在S7 CPU的存储器中定义的,用户可以定义多了数据块,但是CPU对数据块数量及数据总量是有限制的. 数据块与临时数据不同,当逻辑块执行结束或数据块关闭,数据块中的数据是会保留住的 ...

  4. ClownFish:比手写代码还快的通用数据访问层

    http://www.cnblogs.com/fish-li/archive/2012/07/17/ClownFish.html 阅读目录 开始 ClownFish是什么? 比手写代码还快的执行速度 ...

  5. 在WCF数据访问中使用缓存提高Winform字段中文显示速度

    在我们开发基于WCF访问方式的Winform程序的时候,一般情况下需要对界面显示的字段进行中文显示的解析.如果是硬编码进行中文显示,那么除了不方便调整及代码臃肿外,性能上没有什么问题,但是不建议这样处 ...

  6. 三、Spring——数据访问

    1.Spring 对 DAO的支持 Spring支持目前大多数常用的数据持久化技术,Spring定义了一套面向DAO层的异常体系,并未各种支持的持久化技术提供了异常转换器.这样,我们在设计DAO接口时 ...

  7. Android中的5种数据存储方式

    本文转自  http://hi.baidu.com/maguowei/blog/item/7aca46c25574a33ae5dd3ba4.htmlAndroid数据存储Android提供了5种方式存 ...

  8. [翻译]比较ADO.NET中的不同数据访问技术(Performance Comparison:Data Access Techniques)

    Performance Comparison: Data Access Techniques Priya DhawanMicrosoft Developer Network January 2002 ...

  9. XAF-列表视图数据访问模式

    本主题介绍有关列表视图如何提供数据访问的几种方式.请注意,选择正确的方式对于实现XAF应用程序的最佳性能至关重要.    数据访问模式概述   在模型编辑器中,通过 视图-> <ListV ...

随机推荐

  1. js代码加这个<!--代码//-->

    避免因为浏览器不支持js代码,而直接显示出来,以html注释的形式隐藏

  2. 2019牛客多校第四场A meeting——树的直径

    题意: 一颗 $n$ 个节点的树上标有 $k$ 个点,找一点使得到 $k$ 个关键结点的最大距离最小. 分析: 问题等价于求树的直径,最小距离即为直径除2向上取整. 有两种求法,一是动态规划,对于每个 ...

  3. C# 任务、线程、同步(五)

    1.数据流使用  TPL Data Flow 类库 class Program { static void Main(string[] args) { // ActionBlock(); // Sou ...

  4. zabbix通过钉钉报警

    1.创建报警脚本  vim /usr/local/share/zabbix/alertscripts/dingalert.py #!/usr/bin/env python import json im ...

  5. mousemove([[data],fn])

    mousemove([[data],fn]) 概述 当鼠标指针在指定的元素中移动时,就会发生 mousemove 事件.大理石构件来图加工 mousemove事件处理函数会被传递一个变量——事件对象, ...

  6. learning express step(十二)

    learning express view engine function const express = require('express'); const app = express(); app ...

  7. [BJOI2019]排兵布阵 DP

    [BJOI2019]排兵布阵 DP 比较好想的DP,设\(dp[i][j]\)表示第\(i\)个城堡时,已派出\(j\)个士兵.决策时,贪心派出恰好严格大于某一玩家派出的数量的两倍(不然浪费).我们发 ...

  8. DEVICE_ATTR设置设备属性

    DEVICE_ATTR设置设备属性 为了在sysfs下生成可控节点,方便上层调用. sysfs是一个基于RAM的文件系统,它和Kobject一起,可以将Kernel的数据结构导出到用户空间,以文件目录 ...

  9. min_25筛学习笔记【待填坑】

    看见ntf和pb两位大佬都来学了,然后就不自觉的来学了. 我们考虑这样一个问题. $$ans=\sum_{i=1}^nf(i)$$其中$1\leq n\leq 10^{10}$ 其中$f(i)$是一个 ...

  10. CF1208B

    CF1208B 题意: 给出n个数字,找出最小的一端连续区间进行删除操作,使其剩余元素不含重复元素,求要删除的最小区间长度 解法: 删除子段后,前缀和后缀保持不变,可能长度为0.让我们修复不包含任何重 ...