Shift Register 与 Function Global

2015-08-24 09:25:10来源: eefocus
先看一段C代码,该函数的目的是记录它本身被调用的次数,最好的方式当然是在该函数内部记录,这就要求在两次调用之间保持上次的记录,用static 变量最为合理,一是该变量的作用区域仅在函数内,外部无法直接修改,二是可以自动在首次调用时对变量进行初始化.

int Record(void)

{

static int counter=0; //首次调用初始化

counter++;

return(counter);

}

类似的功能在labview里是如何实现的那,我们当然可以用一个全局变量,在SUBVI中对全局变量执行+1的操作,但是这样做副作用是非常明显的.

一是因为没有封装数据,该全局变量可以在程序任何位置被修改.二是当几个地方同时操作该全局变量,因为没有保护机制,当前结果无法预料.

最好的办法是利用Function Global,也称做LV2型全局变量,可能是LABVIEW2以前没有内置的全局变量,这是唯一的方法.


Function Global核心是Shift Register (未初始化的),大多数书籍都强调Shift Register 初始化的重要性,实际上未初始化的Shift Register 更为重要.

Shift Register的一般用法就不解释了,比如在FOR循环中求平均值的问题.我们要考虑的是Shift Register 本质到底是什麽?实际上应该是开辟的一段共享内存空间,这段内存空间是可读写的,既然这样本质上和全局变量就没有区别,一个最基本的Function Global如下图所示:


更正:上图中控制循环的布尔常量应为TRUE,目的使循环只运行一次,目的是使用SHIFT REGISTER

下面演示一下它的使用方法:


这就实现了全局变量的数据交换功能.利用组件编程是LABVIEW的重要编程方法,Funtion Global是它的核心部分.


 这段程序存在一个问题,当程序启动,未进行写操作时,那Shift Register的值是什麽那?做为组件编程,应该在它的内部实现自我初始化. 这里引入一个重要的VI,FIRST CALL来解决这个问题.


关键字:Shift  Register  Function  Global

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2015/0824/article_12887.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
Shift
Register
Function
Global

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved