当前位置:文档之家› LabVIEW初级入门教程

LabVIEW初级入门教程

LabVIEW初级入门教程
LabVIEW初级入门教程

概述

本次介绍使用LabVIEW来进行仪器控制的各种方法。要求学生学会串行I/O、GPIB I/O 和VISA I/O的使用方法,同时也可以验证LabVIEW本身提供的仪器驱动程序。本次的实验设备要求一块已安装的GPIB卡,一台GPIB仪器以及LabVIEW开发系统。

串行通讯

串行通讯是一种常用的数据传输方法,它用于计算机与外设,例如一台可编程仪器,或者与另外一台计算机之间的通讯。串行通讯中发送方通过一条通讯线,一次一个字节,把数据传送到接收方。

由于

大多数电脑都有一至两个串行通讯接口,因此,串行通讯非常流行。许多GPIB仪器也都有串行接口。然而,串行通讯的缺陷是一个串行接口只能与一个设备进行通讯。一些外设需要用特定字符来结束传送给它们的数据串。常用的结束字符是回车符、换行符或者分号。具体可以查阅设备使用手册以决定是否需要一个结束符。在LabVIEW功能模板的Instrument

I/O>Serial程序库中包含进行串行通讯操作的一些功能模块:1. Serial Port Init VI模块用于初始化所选择的串行口。Flow control设置握手方式的参数。Buffer size设置程序分配的输入/输出缓冲区的大小。Port number决定通讯接口地址。Baud rate, data bits,stop bits和parity等设置通讯参数。2.Serial port write VI模块把String to write中的数据写到port number指定的串行接口中。3.Serial port read VI模块从Port number 指定的串行接口中读取requested byte count指定的字符个数。4.Bytes at serial port VI模块计算由Port number指定的串行接口的输入缓冲区中存放的字节个数,并将该数值存放于Byte count中。在下面的实例中,实现从一台串行仪器中读取测量值。首先,用Serial Port Init模块初始化串行接口,然后,用Serial Port Write模块把命令参数发送给仪器,接着用Bytes at Serial Port模块查明在串行输入缓冲区中已经读入的字节个数,最后用Serial Port Read模块读取仪器数据。

第三课仪器控制(2)之GPIB仪器

GPIB程序库中包括IEEE 488.2应用程序和传统的GPIB应用程序。GPIB 488.2应用程序中增加了IEEE 488.2兼容性,具有IEEE 488.2的功能。然而,在本课程中,我们只讨论传统的GPIB应用程序。惠普公司在60年代末和70年代初开发了GPIB通用仪器控制接口总线标准。IEEE国际组织在1975年对GPIB进行了标准化,由此GPIB 变成了IEEE 488标准。术语GPIB,HP-IB和IEEE 488都是同义词。GPIB的原始目的是对测试仪器进行计算机控制。然而,GPIB的用途十分广泛,现在已广泛用于计算机与计算机之间的通讯,以及对扫描仪和图像记录仪的控制。GPIB是一个数字化

的24线并行总线。它包括8条数据线,5条控制线(ATN、EOI、IFC、REN和SRQ),3条握手线和8条地线。GPIB使用8位并行、字节串行的异步通讯方式。也就是说,所有字节都是通过总线顺序传送,传送速度由最慢部分决定。由于GPIB的数据单位是字节(8位),数据一般以ASCII码字符串方式传送。有三种方式来标明传送数据结束。通常,GPIB包括一根连接线(EOI),用来传送数据完毕信号。或者,也可以在数据串结束处放入一个特定结束符(EOS)。有些仪器用EOS方法代替EOI信号线方法,或者两种方法一起使用。还有一种方法,听者(数据接收方)可以计数已传送的数据字节,当达到限定的字节数时停止读取数据。只要EOI,EOS和限定字节数的逻辑“或”值为真,数据传送就停止。一般字节计数法作为缺省的传送结束方法,典型的字节数限定值等于或大于需要读取的数据值。每个设备,包括计算机接口卡,必须有一个0到30之间的GPIB地址。一般GPIB接口板设置为地址0,仪器的GPIB地址从1到30。GPIB有一个控者(你的电脑)来控制总线。在总线上传送仪器命令和数据,控者寻址一个讲者,一个或者多个听者。数据串在总线上从讲者向听者传送。LabVIEW 的GPIB程序包自动处理寻址和大多数其他的总线管理功能。

GPIB软件包:LabVIEW在Instrument I/O功能模板的GPIB和GPIB 488.2子模板下有许多GPIB通讯功能子程序模块,这些模块在工作平台上可以调用低层的488.2驱动软件。大多数的GPIB应用程序只需要从仪器读写数据串。下面讨论传统的GPIB Write/Read 子程序模块。GPIB Write模块把data string中的数据写入address string 指定的设备中。Mode指定如何结束GPIB写入过程,如果在timeout ms指定的时间内操作未能完成,则放弃此次操作。Error In和Error Out字符串与出错处理程序配合使用,检测可能的出错情况。Status是16位的布尔逻辑数组,每个元素代表GPIB控者的一种状态,详见本课程的稍后部分。

在上图程序中,GPIB WRITE模块把“VDC;MEAS1?;”字符串写入地址=2的GPIB设备中,本实例采用缺省值MODE=0,timeout ms=25000。GPIB READ模块从address string指定地址的GPIB设备中读取由byte count指定的字节数,用户可以使用Mode参数指定结束读取的条件,与byte count一起使用。读取的数据由data string返回。用户必须把读取的字符串转换成数值数据,才能进行数据处理,例如进行曲线显示。Error In和Error Out 是出错指示数簇。GPIB READ模块遇到下列情况之一则中止读取数据:(1)程序已经读取了所要求的字节数。(2)程序检测到一个错误。(3)程序操作超出时限。(4)程序检测到结束信息(由EOI发出)。(5)程序检测到结束字符EOS。

如上图所示的程序中,GPIB Read从地址=2的设备中读取20个字节的数据。该程序使用了缺省值MODE=0,TIMEOUT MS=25000。在本例中,如果读够了20个字节,或者检测到EOI,或者超出25000ms时间,读取过程将结束。应用练习目的:使用GPIB子程序模块与GPIB设备通讯。建立一个与任何GPIB仪器通讯的程序。本例采用传统的GPIB子程序与指定仪器进行GPIB 读写操作。命令行参数“*idn?”适用于大多数IEEE 488.2兼容仪器,它要求仪器返回其标识符。前面板:1、从FILE菜单中选择NEW打开一个新面板。2、建立上图所示的控制和显示(请记住,从程序框图中,选择相应的功能模块,再选择Create Control 或者Create Indicator,可以产生所有的控制和显示)。3、从“写入数据”控制栏中输入“*idn?”,在“字节计数”中输入数值100。

程序框图:

1、打开框图编程窗口。

2、创建如上图所示的框图子程序模块。GPIB Write功能模块(在Instrument I/O::GPIB子模板)。该模块把字符串写入GPIB仪器。GPIB Read功能模块(在Instrument I/O::GPIB子模板)。该模块从GPIB仪器中读取数据字符串。General Error Handler功能模块(在TIME & DIALOG子模板)。该模块检查出错报告字符串,如果发现错误,则显示一个对话框。

3、返回到前面板,并运行该程序。在“读出数据”显示栏中将显示仪器的标识字符串,如果无数据返回,而接收到一个GPIB出错信息,EABO,或者error=6,这就表示你的仪器不能读命令参数“*idn?”.请查阅仪器的使用手册以找出合适的相应命令。

4、把上述程序以GPIB.vi的名字保存,然后关闭。

第三课仪器控制(3)之VISA编程

VISA是虚拟仪器软件结构体系(Virtual Instrument Software Architecture)的简称。VISA是在所有LabVIEW工作平台上控制VXI、GPIB、RS-232以及其他种类仪器的单接口程序库。VISA是由组成VXI plug&play系统联盟的35家最大的仪器仪表公司所统一采用的标准。采用了VISA标准,就可以不考虑时间及仪器I/O选择项,驱动软件可以相互相容使用。VISA包含的功能模块在Instrument I/O>VISA 子模板中。大多数的VISA功能模块使用了VISA session参数,该参数在Control模

板的Path and Refnum子模板中。

VISA session是每次程序操作过程的唯一逻辑标识符。它标识了与之通讯的设备名称以及进行I/O操作必需的配置信息。它由VISA Open功能模块产生,提供给VISA 主功能模块使用。VISA Open功能模块产生标识信息,然后把它传送给下一个VISA功能模块。这样简化了数据流编程。它相似于文件I/O模块的参考名功能。VISA session的缺省值是Instr。如果需要,可以打开VISA session选择如下值:Instr、GPIB Instr、Serial Instr和VISA/GPIB-VXI RBD Instr。下面介绍常用的VISA功能模块:VISA Open、VISA Write、VISA Read和VISA Close。VISA Open根据Resource Name和VISA session与指定的设备建立通讯。模块返回VISA session标识值,使用该标识值就可以调用此设备的任何其他的操作功能。Error in和Error out 字符串包含出错信息。Resource Name包含I/O接口类型以及设备地址等信息。其编程语法如下表所示:接口程序语句SERIALASRL[board][::INSTR]GPIBGPIB[board]::primary address [::secondary address][::INSTR]VXIVXI [board]::VXI logical address [::INSTR]GPIB-VXIGPIB-VXI [board][::GPIB-VXI primary address]::VXI logical address [::INSTR]关键词GPIB用于同GPIB设备建立通讯,关健词VXI通过嵌入式或MXI总线控制器同VXI仪器建立通讯,关键词GPIB-VXI用于GPIB-VXI控制器,关键词SERIAL用于异步串行设备通讯。

在上例中,VISA open 模块通过仪器描述字符串“GPIB::2::0::INSTR”与主地址=2的GPIB设备建立通讯。VISA Write模块把write buffer中的字符串写入VISA session指定的设备。dup VISA session向下传送相同的session值。在UNIX工作平台上,数据同步写入;在其他工作平台上,数据异步写入。return count返回实际传送的字节数。error in和error out字串包含出错状况。VISA Read读取由VISA session指定设备中的数据。byte count指明读入read buffer中的字节数。磅VISA session向下传送相同的session值。在UNIX工作平台上,数据同步读入;在其他工作平台上的数据异步读入。return count返回实际传送的字节数。error in和error out字串包含出

错状况。VISA Close关闭由VISA session指定设备的通讯过程,释放系统资源,error in和error out字串包含出错状况。

应用练习

目的:用VISA模块与GPIB设备或者串行设备通讯。本练习使用VISA功能模块向指定设备(GPIB或者串行设备)读写数据。命令参数“*idn?”适用于大多数仪器,无论是GPIB通讯或者串行通讯。它返回仪器的标识字串。本课中所有VISA练习都是根据Fluke 45万用表编程。前面板:

1.打开一个新的前面板,并且照上图建立控制和指示件。VISA session控制件可以在CONTROLS模板中的

Path&Refnum子模板中找到。也可以通过VISA Open功能模块创建。 2.Resource Name 控制件应包含下列值:*对于地址=2的GPIB仪器:“GPIB::2::0::INSTR”*对于COM1

上的串行仪器:“ASRL 1::INSTR”3.在Write Buffer字串控制栏中输入“*idn?”,在Byte Count控制栏中输入100。程序框图:1.打开框图窗口。

2.按照上图选

择创建框图对象并连接线。调用了下面的模块:VISA Open功能模块(在Instrument I/O::VISA子模板)。此模块打开通讯过程,并产生VISA session参数。VISA Write

功能模块(在Instrument I/O::VISA子模板)。此模块把数据串写入指定设备。VISA

Read功能模块(在Instrument I/O::VISA子模板)。此模块从指定设备中读入数

据。VISA Close功能模块(在Instrument I/O::VISA子模板)。此模块关闭VISA Session。 3.返回前面板并运行该程序。VISA session控制件保持为设置值INSTR。

如果要修改此参数,可以打开VISA session控制件,选择VISA Class值。根据Resource

name的设置值,可以选择与GPIB或者串行设备进行通讯。 4.以VISA.vi文件名保存

该程序,并关闭程序

第四课分析处理(3)之数字滤波器

数字滤波器用于改变或消除不需要的波形。它是应用最广泛的信号处理工具之一。两种数字滤波器分别是:FIR(有限脉冲响应)和IIR(无限脉冲响应)滤波器。FIR滤波器可以看成一般移动平均值,它也可以被设计成线性相位滤波器。IIR滤波器有很好的幅值响应,但是无线性相位响应。带通、带阻与过渡带宽带通指的是滤波器的某一设定的频率范围,在这个频率范围的波形可以以最小的失真通过滤波器。通常,这个带通范围内的波形幅度既不增大也不缩小,我们称它为单位增益(0dB)。带阻指的是滤波器使某一频率范围的波形不能通过。理想情况下,数字滤波器有单位增益的带通,完全不能通过的带阻,并且从带通到带阻的过滤带宽为零。在实际情况下,则不能满足上述条件。特别是从带通到带阻总有一个过渡过程,在一些情况下,使用者应精确说明过渡带宽。带通纹波和带阻衰减在有些应用场合,在带通范围内放大系数不等于单位增益是允许的。这种带通范围内的增益变化叫作带通纹波。另一方面,带阻衰减也不可能是无穷大,我们必须定义一个满意值。带通纹波和带阻衰减都是以分贝(dB)为单位,定义如下:dB=20×log(A o(f)/A i(f))其中,A o(f)和A i(f)是某个频率等于f的信号进出滤波器的幅度值。例如,假设带通纹波为-0.02dB,则有:-0.02=20×log(A o(f)/A i(f))A o(f)/A i(f)=10∧(-0.001)=0.9977可以看到,输入/输出波形幅度是几乎相同的。假设带阻衰减等于-60dB,则有:-60=20×log(A o(f)/A i(f))A o(f)/A i(f)=10∧(-3)=0.001输出幅值仅是输入幅值的千分之一。衰减值用分贝表示时经常不加负号,我们已经设定它为负值。

应用练习

目的:用数字滤波器消除不需要的频率分量前面板:

1. 打开Low Pass Filter.vi程序。这个程序设计了一个低通巴特沃斯滤波器,从输入信号中滤除10Hz分量。

2.转换到框图程序。框图程序:

1. 验证主框图程序,它使用了下面的子程序:Butterworth Filter VI子程序(在Analysis>Filters子目录)。在本例中,采用巴特沃斯滤波器,指定滤波器阶数与截止频率,滤除输入正弦波中的高频分量,把输出波形在屏幕上显示。

2.运行该程序,改变滤波器阶数,观察滤波器的效果。虽然在LabVIEW中使用数字滤波器很简便,但还是需要你对数字信号处理的理论有一个基本了解。为此,VI公司提供了一个附加的工具软件,叫作数字滤波器设计工具箱(Digital Filter Design Toolkit)。该软件用LabVIEW开发,有很好的交互式图形用户界面。可以把所设计的滤波器集成到LabVIEW、LabWindows/CVI或者其他的编程环境。

第四课分析处理(4)之曲线拟合

作者:佚名教程来源:不详点击数:1653更新时间:2007-8-15

曲线拟合的目的是找出一系列的参数a0, a1, ……,通过这些参数最好地模拟实验结果。下列是LabVIEW的各种曲线拟合类型:* 线性拟合–把实验数据拟合为一条直线y[i]=a0+a1*X[i]* 指数拟合–把数据拟合为指数曲线y[i]=a0*exp(al*X[i])* 多项式拟合–把数据拟合为多项式函数:y[i]=a0+a1*X[i]+a2*X[i]^2…*通用多项式拟合–与多项式拟合相同,但可以选择不同的算法,以获得更好的精度和准确性。

*通用线性拟合–公式为y[i]=a0+a1*f1(X[i])+a2*f2(X[i])…,这里y[i]是参数a0,

a1, a2…等的线性组合。通用线性拟合也可以选择不同的算法来提高精度和准确度。

例如:y=a0+a1*sin(X)是一个线性拟合。因为y与参数a0, a1有着线性关系。同样道理,多项式拟合也总是属于线性拟合,但是它可以采用一些特殊算法以提高拟合处理的速度和精度。*General Levenberg-Marquardt拟合–把数据拟合为公式y[i]=f(X

[i], a0, a1, a2…)。其中a0, a1, a2…是参数。这种方法是最通用的方法,它不需

要y与a0, a1, a2…有线性关系。它可用于线性或非线性拟合,但一般用于非线性拟合,因为对于线性曲线的处理采用通用线性拟合方法更加快捷。这种方法不能保证结果一定正确,所以,有必要验证拟合结果。

应用练习

目的:对指数关系数据进行线性拟合前面板:

1. 打开Linear Curve Fit.vi程序。这个例子假设我们收集了10对实验数据t 和y,我们有理由相信它们之间有线性关系。

2.切换到框图程序。框图程序:

1.验证框图程序,它使用了如下的子程序:Linear Fit子程序(在Analysis>Curve Fitting子模板)。在本例中,它把实验数据拟合为一条直线,求出系数a和b,以满足y[i]=a+b*t[i];以及实验结果和拟合结果之间的误差的均方根值。

2.输入数据是一个两维数组,是采用DAQ 卡采集数据时的通用格式。我们用Index Array子程序可以分解得到两个一维数组y[i]与t[i]。

3.“MSE”表示误差均方根值,误差越小,拟合结果越好。

4.运行该程序。曲线将显示实验数据和拟合结果。===========================================

应用练习2

目的:对指数数据执行多项式拟合前面板: 1.打开Polynomial Fit.vi程序。这个

例子假设实验数据之间为多项式关系:y[i]=a0+a1*t[i]+a2*t[i]^2…2.当多项式为一阶时,有两个参数,结果是一个线性拟合,与前一个例子相同。当阶数为二阶时,结果是一个二阶多项式带三个参数,多项式参数存放于数组a[i]。

3.切转到框图程序。框图程序:

1.验证框图程序,它使用了如下的子程序:General Polynomial Fit.vi子程序(在Analysis>Curve Fitting子目录)在本例中,把实验数据拟合为二阶多项式曲线,返回结果为拟合数据,多项式系数以及拟合误差的均方根值。

2.本例使用多项式拟合,求出了多项式系数a0,a1,a2等。一般情况下,我们总是尽可能使用最低阶的多项式。

3.运行程序。将显示实验数据和拟合结果的数据。

串口通信协议示例与分析

作者:佚名教程来源:不详点击数:3115更新时间:2007-8-15

align="left" cellpadding="10" cellspacing="0"> 变频器与个人电脑使用RS-232/RS-485串行总线连接,如下所示:

在通讯操作中,通过个人电脑以命令方式控制仪器。

通讯数据格式:

l起始位: 1 位

l数据位:8 位

l奇偶位:无

l停止位: 1 位

应答及命令格式:

l命令模式

::-数据头,只有以::开头的数据包才认为有效。

AD-设备号,当前通讯的设备ID。

?-指明该数据是PC发出的指令。

RI-响应时间,从PC发出命令到仪器应答的时间。

SC-和检验码,等于图中“和校验范围”所示各位相加。

l应答模式

#-指明该数据是仪器发回的应答数据。

其它同上。

l故障模式

%-指明该数据是仪器发回的故障数据。

其它同上。

协议说明:

无论是控制仪器还是查看仪器数据都需要PC发出相应的命令;只要PC发出命令(前提是与仪器正常通讯),仪器都会返回数据(应答或故障)。

使用LabVIEW编写通信模块:

1. 主要节点:Functions->Instrument I/O->VISA Resource Name Constant, Function s->Instrument I/O->Serial->VISA Config Serail Port, VISA Read, VISA Write, VISA Close

2. 串口设置:根据仪器说明设置如波特率等等串口参数。超时设置根据上述RI。

3. 写串口指令:根据上述“命令模式”的格式包装命令数据,和校验由“和校验范围”中数位相加而得,所以之前应该写一子VI用来计算和校验。建议使用以下变量来包装数据:

l prefix:前缀,这里是::

l devID:设备号

l type:通讯类型(这里是?),可以与RI合并

l cmdNum:命令号

l cmdValue:命令号对应的命令值

l sumVerify:和校验码

l end:结束字符

注意:一般协议要求“命令内容”满足一定的位数,所以应该做一个子VI,专门在那些数位不够的命令前补足空格或0。

4. 读串口数据:系统为串口开辟了一定大小的缓冲队列空间,仪器应答数据首先发送到这个缓冲空间(空间数据堆满时自动移除最早的数据),然后程序从中一次读取指定的数位并将其从中移除。

建议读取方式:

(1) 读1 byte,判断是否:(3A),是则继续;否则返回步骤(1),重新开始。

(2) 再次读1 byte,判断是否:(3A),是则继续;否则返回步骤(1),重新开始。

(3)读应答模式中除去::剩余的字节,循环读取,每次读一个字节,当读到的字节数达到数量,继续;若读取超时,返回步骤(1),重新开始。

(4)分析读到的bytes,判断和校验码是否正确。若正确,继续;否则,返回步骤(1),重新开始。

(5) 取第三个byte,如果是#,说明“应答模式”;如果是%,说明“故障模式”。

(6)按照应答或者故障模式,分离出相应的命令号和命令值。

(7)一些类型转换。至此,一次读取过程结束。

5. 由于一次通讯包含一次写命令和一次读数据,所以最好把写和读模块封装成一个子VI。

如何使用树控件

作者:佚名教程来源:不详点击数:732更新时间:2007-8-15

align="left" cellpadding="10" cellspacing="0">

1.插入树控件

在前面板放置Controls Palette->ActiveX->Container,在其鼠标右键菜单上选择“In

sert ActiveX Object”,然后选择“Microsoft TreeView Control 6.0版”。

2.树控制节点的位置

在\National Instruments\LabVIEW 6.1\examples\comm目录下有一个TreeControl.l lb文件,包含了若干个使用的数控制节点。

注:以下使用的树控件节点,在TreeControl.llb都可以找到。

3.插入ImageList

在前面板放置Controls Palette->ActiveX->Container,在其鼠标右键菜单上选择“In sert ActiveX Object”,然后选择“Microsoft ImageList Control 6.0版”。在生成的ImageList控件的鼠标右键菜单上选择“ImageList->properties”,在“Image”窗口中逐个插入图形文件,其Index为从1开始以1递增。使用时在树控制节点的Image和Sel ected Image输入端分别输入Index,即可插入对应的图标。

4.插入一个树节点

要插入树节点,首先应该打开树节点的控制,使用节点“Open Tree Control”。

一个树节点的插入可以通过以下几种方式:

1)Add Item by Path to Tree,通过输入树节点的路径来生成节点,路径一般由节点的text与\组成。例如a\b\c,代表c是b的child,b是a的child。

2)Add Item by Relative Key to Tree,如果一个树节点设置了key属性的值,那么可以通过key来生成父亲、兄弟或者子女节点。使用时在节点的Relative输入端输入key,在Relationship输入端输入整数值,代表生成节点与key表示的节点之间的关系。

3)Add Item by Relative Index to Tree,通过引用树节点的Index值来生成父亲、兄弟或者子女节点。使用时在节点的Relative输入端输入Index值,在Relati onship输入端输入整数值,代表生成节点与key表示的节点之间的关系。

其它树节点的使用类似,在此不加说明。如果想进行更多的对树的控制,可以通过Unbundle 节点“Open Tree Control”的输出端“tree info out”,得到“Tree Refnu

m”,并分别连接到“property node”和“invoke node”节点,将分别获得树的所有属性和方法调用。

一个例子:

找到程序运行速度的瓶颈

作者:佚名教程来源:不详点击数:453更新时间:2007-8-15

align="left" cellpadding="10" cellspacing="0">

一、找到程序运行速度的瓶颈

想要提高程序的运行效率,首先要找到程序运行的瓶颈在哪里。LabVIEW 程序的运行也符合80/20 定理:20%的程序代码占用了80%的运行时间。如果能找到这20%的代码,加以优化,就可以花较小的力气,显著提高程序的整体效率。

对于已经编写好的程序,可以通过内存和信息工具来查看程序中每个VI 运行的多长时间。对程序的效率进行优化,就要从最耗时的VI 开始下手。

内存和信息工具可以从LabVIEW 的菜单项Tools->Profile->Performance and

Memory 中启动。图1 是这个工具的界面。

图1:内存和信息(Profile Performance and Memory)工具

在内存和信息工具中会列出一个程序中的全部子VI。在运行这个程序之前,先按下工具上的Start 按钮,这个工具就开始为所有的子VI 进行计时了。你的程序运行结束,点击工具上的Snapshot 就显示出每个子VI 在刚刚的运行中占用了多少C PU 时间。按照VI Time 排序,排在最前面的几个VI 就是程序的瓶颈,是需要重点优化的对象。

一个子VI 占用了大量CPU 时间,有可能是因为它内部的运算较为复杂,这时你需要打开它,对它的算法进行优化。但更有可能的是因为这个VI 被程序执行的次数太多。这时,你就要考虑的程序结构,是否可以减少这个VI 的运行次数,比如把它从某些不必要的循环中挪出去,或者拆分这个VI 的代码,把没有必要循环执行的部分分离出去,挪到循环体外面。

并不是所有的运行效率问题都可以在内存和信息工具中体现出来。

VI Time 列出的只是子VI 的CPU 占用时间,如果你的程序里存在大量无用的延时,或者程序一直被某些慢速工作,如读写外部仪器,通过网络传输数据等,所阻塞。这样的程序效率也是很低de,但在内存和信息工具上却体现不出来。

有些非常耗用CPU 的操作也无法体现在内存和信息工具上。比如我将会在《LabV IEW 的线程》第四章提到一个使用OpenGL 的例子,由于程序线程设计不当,CPU 被大量消耗在线程切换上。从系统资源管理器看,CPU 被LabVIEW 占满,在内存和信息工具却看不到任何一个VI 占用了如此多的CPU 时间。

在多核CPU 的计算机上,由于可以多个线程同时执行,某些子VI 虽然占用的大

量的CPU 时间,如果程序线程设置合理,是可以让这些VI 不影响到程序的整体效率的。

LabVIEW程序慢在哪里

作者:佚名教程来源:不详点击数:724更新时间:2007-8-15

align="left" cellpadding="10" cellspacing="0">

二、程序慢在哪里?

使用内存和信息工具是不能发现所有程序效率问题的。并且一旦程序的主体实现以完成,在对其进行修改,成本还是比较高的,尤其是涉及到结构性的改动时:以前做过的测试需要重新做,构建在这个模块之上的代码需要作相应更新。如果时间紧迫,考虑到这这种改动所带来的风险,很可能在程序完成后就无法在对其性能进行优化了。

所以最有效的编写高效率程序的方法,不是在程序完成后,再回头查找程序瓶颈。而是在设计程序结构的时候,就把会影响程序效率的因素考虑进去。直接设计出高效率的程序。

下面讨论一些常见的运行比较慢的程序部分。一个程序运行效率的瓶颈通常就出现在这些部分。所以在设计程序时,对这些部分要格外注意。

a) 读写外设、文件

相对于计算机的中央处理器、内存读写的速度,计算机的外围设备的处理和传输数据的速度是非常慢的。比如,GPIB 的传输速率最高也只有1Mbps,比内存的传输速率低了两个数量级以上。在一个测试应用软件中,造成整个系统效率低下的瓶颈很可能就在于这类数据传输当中,程序的大部分时间都消耗在等待外部数据上了。

b) 界面

界面刷新和等待事件也是比较耗费时间的工作。这是由于人的反应速度远不如计算机引起的。你如你可以设置屏幕上的数据指示控件的中数值以每秒一千次的速度刷新,但是这对于用户来说毫无意义,因为人眼和大脑根本处理不了这样快的变化。同

样,在显示给用户一条信息后,等待用户的后续指令也需要一段时间。

c) 循环内的运算

设计循环的时候总是要格外小心些,因为就算一段代码运行的再快,循环个几千,甚至几百万次,耗费是时间也不得了了。所以越是执行次数多的循环,他内部代码的效率对整体影响越大。

d) Global Variable

全局变量不但会破坏LabVIEW的代码风格,并且它的代码读写速度也是特别的慢。

e) 子VI

使用子VI是会有一定开销的,但是我们在其它文章里曾经讨论过,使用子VI利大于弊。子VI使用的越多越好。不过需要注意的是,动态调用子VI的速度是非常慢的。因为他需要先把被调用的VI从磁盘装入到内存中,然后才能运行。而且,装载

VI 的工作一定会在界面线程执行。如果被动态调用的VI 太大,还会迟滞界面刷新,影响用户的感觉。

f) 调试信息

这一条对于对于已经做成可执行文件的程序没有意义,因为LabVIEW 在把VI

做成可执行文件的时候,一定会去除调试信息的。但是还有相当一部分程序是直接在LabVIEW 的编译环境下运行的,去掉调试信息可以让程序降低约50% 的CPU 占用时间。

g) 多线程和内存使用不当

LabVIEW 是自动多线程运行,和自动开辟回收内存空间的,这意味着对于LabVIE W 初级用户可以毫不关心有关线程和内存的问题。但是对于高级用户,需要追求更高的效率,就需要考虑多线程和内存对程序的影响了。

LabView教程2——实验教程[中文版]

实验一虚拟仪器及LabVIEW入门 实验一要求: 运行National Instruments LabVIEW 6.1,完成下列实验讲义中的所给出的练习题1-1和1-2。并完成实验报告。 1.1虚拟仪器概述 虚拟仪器(virtual instrumention)是基于计算机的仪器。计算机和仪器的密切结合是目前仪器发展的一个重要方向。粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。另一种方式是将仪器装入计算机。以通用的计算机硬件及操作系统为依托,实现各种仪器功能。虚拟仪器主要是指这种方式。下面的框图反映了常见的虚拟仪器方案。 虚拟仪器的主要特点有: ?尽可能采用了通用的硬件,各种仪器的差异主要是软件。 ?可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪 器。 ?用户可以根据自己的需要定义和制造各种仪器。 虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。 虚拟仪器的起源可以追朔到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。PC机出现以后,仪器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0以前的版本。对虚拟仪器和LabVIEW长期、系统、有效的研究开发使得该公司成为业界公认的权威。 普通的PC有一些不可避免的弱点。用它构建的虚拟仪器或计算机测试系统性能不可能太高。目前作为计算机化仪器的一个重要发展方向是制定了VXI标准,这是一种插卡式的仪器。每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。这些卡插入标准的VXI 机箱,再与计算机相连,就组成了一个测试系统。VXI仪器价格昂贵,目前又推出了一种较为便宜的PXI标准仪器。 虚拟仪器研究的另一个问题是各种标准仪器的互连及与计算机的连接。目前使用较多的是IEEE 488或GPIB协议。未来的仪器也应当是网络化的。

LabVIEW入门教程

LabVIEW入门教程

1.1 LabVIEW 是什么 第一章:概述 LabVIEW (Laboratory Virtual Instrument Engineering Workbench )是一种图形化的 编程语言,它广泛地被工业界、学术界和研究实验室所接受,视为一个标准的数据采集和仪 器控制软件。LabVIEW 集成了与满足 GPIB 、VXI 、RS-232 和 RS-485 协议的硬件及数据 采集卡通讯的全部功能。它还内置了便于应用 TCP/IP 、ActiveX 等软件标准的库函数。这 是一个功能强大且灵活的软件。利用它可以方便地建立自己的虚拟仪器,其图形化的界面使 得编程及使用过程都生动有趣。 图形化的程序语言,又称为“G”语言。使用这种语言编程时,基本上不写程序代码,取 而代之的是流程图。它尽可能利用了技术人员、科学家、工程师所熟悉的术语、图标和概念, 因此,LabVIEW 是一个面向最终用户的工具。它可以增强你构建自己的科学和工程系统的 能力,提供了实现仪器编程和数据采集系统的便捷途径。使用它进行原理研究、设计、测试 并实现仪器系统时,可以大大提高工作效率。 利用 LabVIEW ,可产生独立运行的可执行文件,它是一个真正的 32 位编译器。像许 多重要的软件一样,LabVIEW 提供了 Windows 、UNIX 、Linux 、Macintosh 的多种版本。 1.2 LabVIEW 应用程序的构成 所有的 LabVIEW 应用程序,即虚拟仪器(VI ),它包括前面板(front panel )、流程图 (block diagram )以及图标/连结器(icon/connector)三部分。 前面板 前面板是图形用户界面,也就是 VI 的虚拟仪器面板,这一界面上有用户输入和显示输 出两类对象,具体表现有开关、旋钮、图形以及其他控制(control )和显示对象(indicator )。 控制对象 显示对象 (输入) (输出) 图1-1 随机信号发生器的前面板

labview实例教程入门到精通快速上手基本

基本操作 1.创建调用子程序 我们通过例子来说明如何创建一个VI。 练习1-1: 建立一个测量温度和容积的VI,其中须调用一个仿真测量温度和容积的传感器子VI。步骤如下: 1.选择File?New,打开一个新的前面板窗口。 2.从Controls?Numeric中选择Tank放到前面板中。 3.在标签文本框中输入“容积”,然后在前面板中的其他任何位置单击一下。 4.把容器显示对象的显示围设置为0.0到1000.0。 a. 使用文本编辑工具(Text Edit Tool),双击容器坐 标的10.0 标度,使它高亮显示。 b.在坐标中输入 1000,再在前面板中的其他任何地方单 击一下。这时0.0到1000.0之间的增量将被自动显示。 5.在容器旁配数据显示。 将鼠标移到容器上,点右键,在出现的快速菜单中选Visible Iterms?Digital Display即可。 6.从Controls?Numeric中选择一个温度计,将它放到前 面板中。设置其标签为“温度”,显示围为0到100,同时配数字 显示。可得到如下的前面板图。 图1-3练习1-1的前面板图 7.Windows?Show Diagram打开流程图窗口。从功能 模板中选择对象,将它们放到流程图上组成下图(其中的标注是 后加的)。 乘法函数 进程监视器随机数发 生器 数值常数

图1-4练习1-1的流程图 该流程图中新增的对象有两个乘法器、两个数值常数、一个随机数发生器、一个进程监视器,温度和容积对象是由前棉板的设置自动带出来的。 a.乘法器和随机数发生器由Functions?Numeric中拖出,尽管数值常数也可以这 样得到,但是建议使用c 中的方法更好些。 b.进程监视器(Process Monitor)不是一个函数,而是以子VI的方式提供的,它 存放在LabVIEW\Activity目录中,调用它的方法是在Functions?Select a VI 下打开Process Monitor,然后在流程图上点击一下,就可以出现它的图标。 注意:LabVIEW目录一般在Program Files\National Instruments\目录下。 8.用连线工具将各对象按规定连接。a中的遗留问题创建数值常数对象的另一种方法是在连线时一起完成。具体方法是:用连线工具在某个功能函 数或VI的连线端子上单击鼠标右键,再从弹出的菜单中选择Create Constant,就 可以创建一个具有正确的数据格式的数值常数对象。 9.选择File?Save, 把该VI 保存为 LabVIEW\Activity 目录中的 Temp & Vol.vi。 在前面板中,单击Run(运行)按钮,运行该 VI。注意电 压和温度的数值都显示在前面板中。 10.选择File?Close,关闭该 VI 。 练习1-1结束 附注与说明: 1.如果要查看某个功能函数或者 VI 的输入输出,需要从 Help菜单中选择Show Help,再把光标置于这个功能函数或者 VI 上。例如进程监视器 VI 的 Help 窗口显示如下: 2.显示对象(Indicator)、控制对象(Control)和数值常数对象 显示对象和控制对象都是前面板上的控件,前者有输入端子而无输出端子,后者正好相反,它们分别相当于普通编程语言中的输出参数和输入参数。数值常数对象可以看成是控制对象的一个特例。 在前面板中创建新的控制对象或显示对象时, LabVIEW 都会在流程图中创建对应的端子。端子的 符号反映该对象的数据类型。例如,DBL符号表示 对象数据类型是双精度数;TF符号表示布尔数;I16 符号表示16位整型数;ABC符号表示对象数据类型 是字符串。 一个对象应当是显 示对象还是控制对象必 须弄清楚,否则无确连

labview入门教程(初学者必看)

Labview入门教程 亚为电子科技 说明: 1、不同labview版本,内容大同小异,不要过于核对图标 2、必须先安装labview,亚为的资料,版本不低于2014,如果是串口通信,还要安装NIVISA520。 3、直接打开亚为用户资料的“labview例程/****例程”,看到的是前面板,也就是交互界面。界面可以自行修改,注意右键->数据操作->保存默认参数。 4、波形图上右键,可以导出或者另存数据。高速采集模式下,yav 例程不自动保存,需要手动导出。高速模式下,不要采集时间过长,否则系统崩溃,会内存溢出甚至蓝屏死机。 5、如果需要修改算法逻辑,按下Ctrl+E即可打开程序框图界面。里面的数学符号,仔细研究下,就应该能认识。看懂加减乘除即可。 6、这个文档认真看十遍,你就是Labview编程高手啦,亚为科技不负责labview编程指导哦。高手都是自学的。

第一讲:认识Labview 1.1 Labview 简介 在开始菜单里找Labview点击打开,会出现如下界面: 从File>>New VI 或者从右半部分中的New>>Blank VI 都可以打开如下界面: 上图中前图是虚拟仪器的前面板,是用户使用的人机界面,后面的是程序框图界面(即后面板)。 在LabVIEW的用户界面上,应特别注意它提供的操作模板,包括工具(Tools)模板、控制(Controls)模板和函数(Functions)模板。这些模板集中反映了该软件的功能与特征。下面我们来大致浏览一下。 工具模板(Tools Palette)

该模板提供了各种用于创建、修改和调试VI程序的工具。 如果该模板没有出现,则可以在Windows菜单下选择Show Tools Palette命令以显示该模板。当从模板内选择了任一种工具后, 鼠标箭头就会变成该工具相应的形状。当从Windows菜单下选择 了Show Help Window功能后,把工具模板内选定的任一种工具 光标放在流程图程序的子程序(Sub VI)或图标上,就会显示相 应的帮助信息。 图标名称功能 1Operate Value (操作值) 用于操作前面板的控制和显示。使用它向数字 或字符串控制中键入值时,工具会变成标签工 具 2Position/Size /Select (选 择) 用于选择、移动或改变对象的大小。当它用于 改变对象的连框大小时,会变成相应形状。 3Edit Text(编 辑文本) 用于输入标签文本或者创建自由标签。当创建 自由标签时它会变成相应形状。 4Connect Wire (连线) 用于在流程图程序上连接对象。如果联机帮助 的窗口被打开时,把该工具放在任一条连线上, 就会显示相应的数据类型。 5Object Shortcut Menu (对象菜单) 用鼠标左键可以弹出对象的弹出式菜单。 6Scroll Windows(窗口 漫游) 使用该工具就可以不需要使用滚动条而在窗口 中漫游。 7Set/Clear Breakpoint(断 点设置/清除) 使用该工具在VI的流程图对象上设置断点。 8Probe Data(数 据探针) 可在框图程序内的数据流线上设置探针。通过 控针窗口来观察该数据流线上的数据变化状 况。 9Get Color(颜 色提取) 使用该工具来提取颜色用于编辑其他的对象。 10Set Color(颜 色设置) 用来给对象定义颜色。它也显示出对象的前景 色和背景色。 下面的两个模板是多层的,其中每一个子模板下还包括多个对象。

LabVIEW初级入门教程

概述 本次介绍使用LabVIEW来进行仪器控制的各种方法。要求学生学会串行I/O、GPIB I/O 和VISA I/O的使用方法,同时也可以验证LabVIEW本身提供的仪器驱动程序。本次的实验设备要求一块已安装的GPIB卡,一台GPIB仪器以及LabVIEW开发系统。 串行通讯 串行通讯是一种常用的数据传输方法,它用于计算机与外设,例如一台可编程仪器,或者与另外一台计算机之间的通讯。串行通讯中发送方通过一条通讯线,一次一个字节,把数据传送到接收方。 由于 大多数电脑都有一至两个串行通讯接口,因此,串行通讯非常流行。许多GPIB仪器也都有串行接口。然而,串行通讯的缺陷是一个串行接口只能与一个设备进行通讯。一些外设需要用特定字符来结束传送给它们的数据串。常用的结束字符是回车符、换行符或者分号。具体可以查阅设备使用手册以决定是否需要一个结束符。在LabVIEW功能模板的Instrument I/O>Serial程序库中包含进行串行通讯操作的一些功能模块:1. Serial Port Init VI模块用于初始化所选择的串行口。Flow control设置握手方式的参数。Buffer size设置程序分配的输入/输出缓冲区的大小。Port number决定通讯接口地址。Baud rate, data bits,stop bits和parity等设置通讯参数。2.Serial port write VI模块把String to write中的数据写到port number指定的串行接口中。3.Serial port read VI模块从Port number 指定的串行接口中读取requested byte count指定的字符个数。4.Bytes at serial port VI模块计算由Port number指定的串行接口的输入缓冲区中存放的字节个数,并将该数值存放于Byte count中。在下面的实例中,实现从一台串行仪器中读取测量值。首先,用Serial Port Init模块初始化串行接口,然后,用Serial Port Write模块把命令参数发送给仪器,接着用Bytes at Serial Port模块查明在串行输入缓冲区中已经读入的字节个数,最后用Serial Port Read模块读取仪器数据。

labview入门教程

Labview 7.1 入门教程 第一讲:认识Labview 1.1 Labview 简介 在开始菜单里找见NI Labview7.1 点击打开,会出现如下界面: 从File>>New VI 或者从右半部分中的New>>Blank VI 都可以打开如下界面:

上图中前图是虚拟仪器的前面板,是用户使用的人机界面,后面的是程序框图界面(即后面板)。 在LabVIEW 的用户界面上,应特别注意它提供的操作模板,包括工具(Tools )模板、控制(Controls )模板和函数(Functions )模板。这些模板集中反映了该软件的功能与特征。下面我们来大致浏览一下。 工具模板(Tools Palette ) 该模板提供了各种用于创建、修改和调试VI 程序的工具。如果该模板没有出现,则可以在Windows 菜单下选择Show Tools Palette 命令以显示该模板。当从模板内选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。当从Windows 菜单下选择了Show Help Window 功能后,把工具模板内选定的任一种工具光标放在流程图程序的子程序(Sub VI )或图标上,就会显示相应的帮助信息。

下面的两个模板是多层的,其中每一个子模板下还包括多个对象。 控制模板(Control Palette)Array注意:只有打开前面板时才能调用该模板 该模板用来给前面板设置各种所需的输出显示对象 和输入控制对象。每个图标代表一类子模板。如果控制 模板不显示,可以用Windows菜单的Show Controls Palette功能打开它,也可以在前面板的空白处,点击 鼠标右键,以弹出控制模板。 控制模板如右图所示,它包括如下所示的一些子模 板。子模板中包括的对象,我们在功能中用文字简要介 绍。

labview2010经典基础教程完整

第一讲:认识Labview 1.1 Labview 简介 在开始菜单里找见NI Labview7.1 点击打开,会出现如下界面: 从File>>New VI 或者从右半部分中的New>>Blank VI 都可以打开如下界面: 上图中前图是虚拟仪器的前面板,是用户使用的人机界面,后面的是程序框图界面(即后面板)。

在LabVIEW的用户界面上,应特别注意它提供的操作模板,包括工具(Tools)模板、控制(Controls)模板和函数(Functions)模板。这些模板集中反映了该软件的功能与特征。下面我们来大致浏览一下。 工具模板(Tools Palette) 如果该模板没有出现,则可以在Windows菜单下选择Show Tools Palette命令以显示该模板。当从模板内选择了任一种工具后, 鼠标箭头就会变成该工具相应的形状。当从Windows菜单下选择 了Show Help Window功能后,把工具模板内选定的任一种工具 光标放在流程图程序的子程序(Sub VI)或图标上,就会显示相 应的帮助信息。

下面的两个模板是多层的,其中每一个子模板下还包括多个对象。 控制模板(Control Palette)Array注意:只有打开前面板时才能调用该模板 该模板用来给前面板设置各种所需的输出显示对象 和输入控制对象。每个图标代表一类子模板。如果控制 模板不显示,可以用Windows菜单的Show Controls Palette功能打开它,也可以在前面板的空白处,点击 鼠标右键,以弹出控制模板。 控制模板如右图所示,它包括如下所示的一些子模 板。子模板中包括的对象,我们在功能中用文字简要介 绍。 10 11

LabVIEW初级入门教程(精编文档).doc

【最新整理,下载后即可编辑】 概述 本次介绍使用LabVIEW来进行仪器控制的各种方法。要求学生学会串行I/O、GPIB I/O和VISA I/O的使用方法,同时也可以验证LabVIEW本身提供的仪器驱动程序。本次的实验设备要求一块已安装的GPIB卡,一台GPIB仪器以及LabVIEW开发系统。 串行通讯 串行通讯是一种常用的数据传输方法,它用于计算机与外设,例如一台可编程仪器,或者与另外一台计算机之间的通讯。串行通讯中发送方通过一条通讯线,一次一个字节,把数据传送到接收方。 由于大多数电脑都有一至两个串行通讯接口,因此,串行通讯非常流行。许多GPIB仪器也都有串行接口。然而,串行通讯的缺陷是一个串行接口只能与一个设备进行通讯。一些外设需要用特定字符来结束传送给它们的数据串。常用的结束字符是回车符、换行符或者分号。具体可以查阅设备使用手册以决定是否需要一个结束符。在LabVIEW功能模板的Instrument I/O>Serial程序库中包含进行串行通讯操作的一些功能模块:1. Serial Port Init VI模块用于初始化所选择的串行口。Flow control设置握手方式的参数。Buffer size设置程序分配的输入/输出缓冲区的大小。Port number决定通讯接口地址。Baud rate, data bits,stop bits和parity等设置通讯参数。2. Serial port write VI模块把String to write中的数据写到port number指定的串行

接口中。3. Serial port read VI模块从Port number指定的串行接口中读取requested byte count指定的字符个数。4. Bytes at serial port VI模块计算由Port number指定的串行接口的输入缓冲区中存放的字节个数,并将该数值存放于Byte count中。在下面的实例中,实现从一台串行仪器中读取测量值。首先,用Serial Port Init模块初始化串行接口,然后,用Serial Port Write模块把命令参数发送给仪器,接着用Bytes at Serial Port模块查明在串行输入缓冲区中已经读入的字节个数,最后用Serial Port Read模块读取仪器数据。 第三课仪器控制(2)之GPIB仪器

相关主题
文本预览
相关文档 最新文档