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. JDK源码那些事儿之红黑树基础下篇

    说到HashMap,就一定要说到红黑树,红黑树作为一种自平衡二叉查找树,是一种用途较广的数据结构,在jdk1.8中使用红黑树提升HashMap的性能,今天就来说一说红黑树,上一讲已经给出插入平衡的调整 ...

  2. windows游戏编程X86 32位保护模式下的内存管理概述(二)

    本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22448323 作者:jadeshu   邮箱: jades ...

  3. P1968 美元汇率 怀疑智商超过海平面

    https://www.luogu.org/problemnew/show/P1968 也是一道贪心题,一些计算: 然而我却弄得很复杂: 既然我们要的是最后的最大值,那我们为什么要注意中间的细节呢: ...

  4. 软件构造实验二-拷贝一个c文件 将其中的关键字int替换成float

    1,新建 Parser Generator 点击project --> new 2,填写工程名字 随意取一个名字 点击OK 3,点击Project选项下的 parserwizard 分析器向导选 ...

  5. JAVA基础知识|抽象类与接口类

    一.抽象类 抽象类:拥有抽象方法的类就是抽象类,抽象类要使用abstract声明 抽象方法:没有方法体的方法,必须要使用abstract修饰 为什么要使用抽象类,抽象方法? 举例来说,如果你定义了一个 ...

  6. Ubuntu下Nginx的安装和卸载

    环境是Ubuntu 16.04 安装: sudo apt-get update sudo apt-get install nginx 卸载: sudo apt-get --purge remove n ...

  7. 从源码看Java集合之ArrayList

    Java集合之ArrayList - 吃透增删查改 从源码看初始化以及增删查改,学习ArrayList. 先来看下ArrayList定义的几个属性: private static final int ...

  8. 2018-2019-2 20165210《网络对抗技术》Exp7 网络欺诈防范

    2018-2019-2 20165210<网络对抗技术>Exp7 网络欺诈防范 一.实验目标:本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法. 二.实验内容: ...

  9. ubuntu hadoop安装

    参考: https://wangchangchung.github.io/2017/09/28/Ubuntu-16-04%E4%B8%8A%E5%AE%89%E8%A3%85Hadoop%E5%B9% ...

  10. python 数字转字符保留几位小数 by gisoracle

    #数字转字符保留几位小数 by gisoracle #数字转字符保留几位小数 by gisoracle def floattostr(num,xsnum): if xsnum==0: return s ...