Shift Register 与 Function Global

2015-08-24 09:25:10来源: eefocus 关键字:Shift  Register  Function  Global
先看一段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
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:Function Global 与Action Engine
下一篇:labview的软件计数器和FIFO BUFFER

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
Shift
Register
Function
Global

小广播

独家专题更多

迎接创新的黄金时代 无创想,不奇迹
迎接创新的黄金时代 无创想,不奇迹
​TE工程师帮助将不可能变成可能,通过技术突破,使世界更加清洁、安全和美好。
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
TTI携TE传感器样片与你相见,一起传感未来
富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved