新浪博客

LabVIEW中的移位寄存器

2014-04-06 11:18阅读:
移位寄存器是LabVIEW编程语言中特有的数据传递和存储机制,它依赖于循环结构而存在。移位寄存器存储循环结构一个循环周期到下一个循环周期的数据变动,实现数据从一次循环到下一次循环的传递。LabVIEW中的移位寄存器是多态的,可以适应任何数据类型。一个循环结构可以同时使用多个不同数据类型的移位寄存器存储数据,且数目不受限制。
只要是LabVIEW的循环结构,就可以在循环结构框体的左右两侧创建移位寄存器,LabVIEW的移位寄存器总是成对出现并且成对才能使用。在循环结构边框的左侧或右侧点击鼠标右键,在弹出的快捷菜单中选择“添加移位寄存器”选项,就可以为循环结构创建移位寄存器了。
从计算机物理内存角度分析,移位寄存器左右端子指向同一块计算机物理内存,LabVIEW移位寄存器的左右端子实现了对这块物理内存的读写操作。数据从移位寄存器右端子的左侧端口进入这块物理内存,在需要的时候从移位寄存器左端子的右侧端口将数据取出。注意:移位寄存器所对应的物理内存空间没有设置读写操作的权限,只要有连线连接到移位寄存器左端子的右侧端口,就可以从这块物理内存中读出数据。只要有连线连接到移位寄存器右端子的左侧端口,就可以向这块物理内存中写入数据。如果右端子的左侧端口没有连线,LabVIEW将向这块物理内存中写入默认数据。在编程中要注意保护好移位寄存器的写入端口(右端子的左侧端口),避免移位寄存器误操作(忘记连线)而导致的数据丢失。在编程中对移位寄存器的有效保护措施是:当移位寄存器不需要写入新数据时,将移位寄存器左端子的右侧端口与右端子的左侧端口用连线连接,这样数据又被重新写入了同一块物理内存中,确保了移位寄存器中数据的安全。
移位寄存器所指向的物理内存是什么时候建立的呢?这就涉及到了LabVIEW的编译机制,LabVIEW采用即时编译程序的机制。当程序员在程序框图中构建程序代码时,LabVIEW同步编译程序代码。当在循环结构框体上创建移位寄存器时,LabVIEW并没有为其创建内存空间,因为编译器不知道移位寄存器所要保存的数据类型和数据大小。当为移位寄存器初始化数据类型后,编译器就可以根据不同的数据类型在计算机物理内存中为其开辟相应的内存空间,此时移位寄存器左右端子变成与数据类型相同的颜色,移位寄存器所指向的物理内存正是在此时建立的。
LabVIEW中的移位寄存器
图中,当输入控件连线到移位寄存器时,移位寄存器就获取了要存储数据的数据类型,此时LabVIEW的编译器将同步为其在内存中创建存储空间。移位寄存器的数据类型为双精度浮点数,所以LabVIEW在内存中为其开辟8个字节64位的存储空间。这块内存单元的地址是操作系统为LabVIEW动态分配的,用户无法指定内存地址也无法获取操作系统为LabVIEW动态分配的内存地址号。假设这个移位寄存器所指向的内存单元为A,程序启动后,首先在While循环外部通过数值输入控件为移位寄存器(内存单元A)赋初始化值“ 0。第一次循环时,LabVIEW通过移位寄存器左端子的右侧端口从内存单元A中读出初始化数据“0,经过“加1函数运算后得到数据“1。数据“1经过数据流连线流动到移位寄存器右端子的左侧端口,LabVIEW通过移位寄存器右端子的左侧端口将数据“1写入内存单元A中,内存单元A中的数据变成“1。下一次循环开始,LabVIEW通过移位寄存器左端子的右侧端口从内存单元A中读出数据“1,经过“加1函数运算后得到数据“2LabVIEW通过移位寄存器右端子的左侧端口将数据“2写入到内存单元A中,这样内存单元A中的数据变成“2While循环结构通过移位寄存器左端子的右侧端口不断从内存单元A中读取数据,经过“加1函数运算后通过移位寄存器右端子的左侧端口将计算值重新写入内存单元A中,实现内存单元A中数据的累加。当达到For循环退出条件时,For循环正常退出,移位寄存器(内存单元A)中的累加值输出到For循环外部的数值显示控件中,这就是移位寄存器的工作原理。

LabVIEW中的移位寄存器
上图中,For循环的循环次数为0次,For循环框体内部的程序代码是不执行的。但是该情况下还是可以进行移位寄存器的读写操作,初始化值可以通过移位寄存器左端子的左侧端口写入内存,并由移位寄存器右端子的右侧端口将其读出,这也证明了移位寄存器的左右端子指向同一块物理内存空间。
移位寄存器之所以有很高的数据读写效率并能成为LabVIEW数据流的核心存储机制,就是因为移位寄存器关于数据的读写使用的是同一块内存地址空间。在大多数情况下(使用某些函数可以造成内存的重新分配,例如“创建数组”函数),移位寄存器的读写只有数据的变化而没有内存的注销和重新分配。Windows操作系统是动态分配内存的,内存的注销和重新分配将耗费大量的计算机资源,反复地注销和重新分配内存将大大降低程序的运行效率。

我的更多文章

下载客户端阅读体验更佳

APP专享