




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、【最新整理,下载后即可编辑】概述本次介绍使用LabVIEW来进行仪器限制的各种方法.要求学生学会串行I/.、GPIBI/O和VISAI/O的使用方法,同时也可以验证LabVIEW本身提供的仪器驱动程序.本次的实验设备要求一块已安装的GPIB卡,一台GPIB仪器以及LabVIEW开发系统.串行通讯串行通讯是一种常用的数据传输方法,它用于计算机与外设,例如一台可编程仪器,或者与另外一台计算机之间的通讯.串行通讯中发送方通过一条通讯线,一次一个字节,把数据传送到接收方.于大多数电脑都有一至两个串行通讯接口,因此,串行通讯非常流行.许多GPIB仪器也都有串行接口.然而,串行通讯的缺陷是一个串行接口只能
2、与一个设备进行通讯.一些外设需要用特定字符来结束传送给它们的数据串.常用的结束字符是回车符、换行符或者分号.具体可以查阅设备使用手册以决定是否需要一个结束符.在LabVIEW功能模板的InstrumentI/O>Serial程序库中包含进行串行通讯操作的一些功能模块:1.SerialPertinitVI模块用于初始化所选择的串行口.Flowcontrol设置握手方式的参数.Buffersize设置程序分配的输入/输出缓冲区的大小.Portnumber决定通讯接口地址.Baudrate,databits,stopbits和parity等设置通讯参数.2.SerialportwriteVI模
3、块把Stringtowrite中的数据写到portnumber指定的串行接口中.3.SerialportreadVI模块从Portnumber指定的串行接口中读取requestedbytecount指定的字符个数.4.BytesatserialportVI模块计算由Portnumber指定的串行接口的输入缓冲区中存放的字节个数,并将该数值存放于Bytccoimt中.在下面的实例中,实现从一台串行仪器中读取测量值.首先,用SerialPertinit模块初始化串行接口,然后,用SerialPertWrite模块把命令参数发送给仪器,接着用BytesatSerialPort模块查明在串行输入缓冲区
4、中已经读入的字节个数,最后用SerialPortRead模块读取仪器数据.第20.2卜工SerialFartRead.viGetbftecBtveadfroiInstrumentResponseBytesAtSerialFort.vivihome1口口口口口口口口口口口口口口第三课仪器限制之GPIB仪器GPIB程序库中包括IEEE488.2应用程序和传统的GPIB应用程序.GPIB488.2应用程序中增加了IEEE488.2兼容性,具有IEEE488.2的功能.然而,在本课程中,我们只讨论传统的GPIB应用程序.惠普公司在60年代末和70年代初开发了GPIB通用仪器限制接口总线标准.IEEE国
5、际组织在1975年对GPIB进行了标准化,由此GP1B变成了IEEE488标准.术语GPIB,HP-IB和IEEE488都是同义词.GPIB的原始目的是对测试仪器进行计算机限制.然而,GPIB的用途十分广泛,现在已广泛用于计算机与计算机之间的通讯,以及对扫描仪和图像记录仪的限制.GPIB是一个数字化的24线并行总线.它包括8条数据线,5条限制线ATN、EQI、IFC、REN和SRQ,3条握手线和8条地线.GPIB使用8位并行、字节串行的异步通讯方式.也就是说,所有字节都是通过总线顺序传送,传送速度由最慢局部决定.由于GPIB的数据单位是字节8位,数据一般以ASCII码字符串方式传送.有三种方式
6、来标明传送数据结束.通常,GPIB包括一根连接线EQI,用来传送数据完毕信号.或者,也可以在数据串结束处放入一个特定结束符EQS.有些仪器用EQS方法代替EQ1信号线方法,或者两种方法一起使用.还有一种方法,听者数据接收方可以计数已传送的数据字节,当到达限定的字节数时停止读取数据.只要EI,EQS和限定字节数的逻辑“或值为真,数据传送就停止.一般字节计数法作为缺省的传送结束方法,典型的字节数限定值等于或大于需要读取的数据值.每个设备,包括计算机接口卡,必须有一个到3之间的GPIB地址.一般GPIB接口板设置为地址,仪器的GPIB地址从1到3oGPIB有一个控者你的电脑来限制总线.在总线上传送仪
7、器命令和数据,控者寻址一个讲者,一个或者多个听者.数据串在总线上从讲者向听者传送.LabVIEW的GPIB程序包自动处理寻址和大多数其他的总线治理功能.软件包:LabVIEW在InstrumentI/O功能模板的GPIB和GPIB488.2子模板下有许多GPIB通讯功能子程序模块,这些模块在工作平台上可以调用低层的488.2驱动软件.大多数的GPIB应用程序只需要从仪器读写数据串.下面讨论传统的GPIBWrite/Read子程序模块.GPIBWrite模块把datastring中的数据写入addressstring指定的设备中.Mode指定如何结束GPIB写入过程,如果在timeoutms指定
8、的时间内操作未能完成,那么放弃此次操作.ErrorIn和ErrorOut字符串与出错处理程序配合使用,检测可能的出错情况.Status是16位的布尔逻辑数组,每个元素代表GPIB控者的一种状态,详见本ms(438.2globalJI枚PHIAddressStringGPIBWrite|在上图程序中,字符串写入地址二2YihomeGPIBWRITE模块把“VDC;MEAS1?;的GPIB设备中,本实例采用缺省值MODE=(),timeoutms=25000oGPIBREAD模块从addressstring指定地址的GPIB设备中读取由bytecount指定的字节数,用户可以使用Mode参数指定结
9、束读取的条件,与bytecount一起使用.读取的数据由datastring返回.用户必须把读取的字符串转换成数值数据,才能进行数据处理,例如进行曲线显示.ErrorIn和ErrorOut是出错指示数簇.GP1BREAD模块遇到以下情况之一那么中止读取数据:1程序已经读取了所要求的字节数.2程序检测到一个错误.3程序操作超出时限.4程序检测到结束信息由EQI发出.5程序检测到结束字符EQS.|byteuourp0|-Vlhoilie如上图所示的程序中,GP1BRead从地址=2的设备中读取2个字节的数据.该程序使用了缺省值MODE=0,TIMEOUTMS=25000.在本例中,如果读够了20个
10、字节,或者检测到EOI,或者超出25000ms时间,读取过程将结束.应用练习目的:使用GPIB子程序模块与GPIB设备通讯.建立一个与任何GP1B仪器通讯的程序.本例采用传统的GPIB子程序与指定仪器进行GP1B读写操作.命令行参数“*idn?适用于大多数IEEE488.2兼容仪器,它要求仪器返回其标识符.前面板:1、从FILE菜单中选择NEW翻开一个新面板.2、建立上图所示的限制和显示请记住,从程序框图中,选择相应的功能模块,再选择CreateControl或者CreateIndicator,可以产生所有的限制和显示.3、从“写入数据限制栏中输入受包数“*idn?,在“字节计数中输诙出数据|
11、vihome程序框图:入数值100O回邙以itq|sriBBeadGeneralErrorHandler.vi模板的PathandRefnum子模板中.MM_Instr1、翻开框图编程窗口.2、创立如上图所示的框图子程序模块.GPIBWrite功能模块(在InstrumentI/O:GPIB子模板).该模块把字符串写入GP1B仪器.GPIBRead功能模块(在InstrumentI/():GPIB子模板).该模块从GPIB仪器中读取数据字符串.GeneralErrorHandler功能模块(在TIME&DIALOG子模板).该模块检查出错报告字符串,如果发现错误,那么显示一个对话框.3
12、、返回到前面板,并运行该程序.在“读出数据显示栏中将显示仪器的标识字符串,如果无数据返回,而接收到一个GPIB出错信息,EABO,或者crror=6,这就表示你的仪器不能读命令参数“*idn?.请查阅仪器的使用手册以找出合适的相应命令.4、把上述程序以GPIB.vi的名字保存,然后关闭.第三课仪器限制(3)之VISA编程VISA是虚拟仪器软件结构体系(VirtualInstrumentSoftwareArchitecture)的简称.VISA是在所有LabVIEVC工作平台上限制VX1、GPIB、RS-232以及其他种类仪器的单接口程序库.VISA是由组成VXIplug&play系统联
13、盟的35家最大的仪器仪表公司所统一采用的标准.采用了VISA标准,就可以不考虑时间及仪器I/O选择项,驱动软件可以相互相容使用.VISA包含的功能模块在InstrumentI/()>VISA子模板中.大多数的VISA功能模块使用了VISAsession参数,该参数在ControlVISASfissicbnVISAsession是每次程序操作过程的唯一逻辑标识符.它标识了与之通讯的设备名称以及进行I/O操作必需的配置信息.它由VISAOpen功能模块产生,提供应VISA主功能模块使用.VISAOpen功能模块产生标识信息,然后把它传送给下一个VISA功能模块.这样简化了数据流编程.它相似于
14、文件1/.模块的参考名功能.VISAsession的缺省值是Instr.如果需要,可以翻开VISAsession选择如下值:Instr、GPIBInstr、SerialInstr和VISA/GPIB-VXIRBDInstr.下面介绍常用的VISA功能模块:VISAOpensVISAWrite、VISARead和VISACloseoVISAOpen根据ResourceName和VISAsession与指定的设备建立通讯.模块返回VISAsession标识值,使用该标识值就可以调用此设备的任何其他的操作功能.Errorin和Errorout字符串包含出错信息.ResourceName包含1/()接
15、口类型以及设备地址等信息.其编程语法如下表所示:接口程序语句SERIALASRLboard:INSTRGPIBGPIBboard:primaryaddress:secondaryaddress:INSTRVXIVXIboard:VXIlogicaladdress:INSTRGPIB-VXIGPIB-VXIboard:GPIB-VXIprimaryaddress:VXIlogicaladdress:INSTR关键词GPIB用于同GPIB设备建立通讯,关健词VXI通过嵌入式或MXI总线限制器同VXI仪器建立通讯,关键词GPIB-VXI用于GPIB-VXI控制器,关键词SERIAL用于异步串行设备通
16、讯.在上例中,VISAopen模块通过仪器描述字符串“GPIB:2:():INSTR与主地址=2的GPIB设备建立通讯.VISAWrite模块把writebuffer中的字符串写入VISAsession指定的设备.dupVISAsession向下传送相同的session值.在UNIX工作平台上,数据同步写入;在其他工作平台上,数据异步写入.returncount返回实际传送的字节数.errorin和errorout字串包含出错状况.VISARead读取由VISAsession指定设备中的数据.bytecount指明读入readbuffer中的字节数.磅VISAsession向下传送相同的ses
17、sion值.在UNIX工作平台上,数据同步读入;在其他工作平台上的数据异步读入.returncount返回实际传送的字节数.errorin和errorout字串包含出错状况oVISAClose关闭由VISAsession指定设备的通讯过程,释放系统资源,errorin和errorout字串包含出错状况.应用练习目的:用VISA模块与GPIB设备或者串行设备通讯.本练习使用VISA功能模块向指定设备(GPIB或者串行设备)读写数据.命令参数“*idn?适用于大多数仪器,无论是GP1B通讯或者串行通讯.它返回仪器的标识字串.本课中所有VISA练习都是根据Fluke45万用表编程.前面板:1.翻开一
18、个新的前面板,并且照上图建立限制和指示件.VISAsession限制件可以在CONTROLS模板中的Path&Refnum子模板中找到.也可以通过VISAOpen功能模块创立.2.ResourceName限制件应包含以下值:*对于地址=2的GPIB仪器:aGPIB:2:0:INSTRw*对于COM1上的串行仪器:“ASRL1:INSTR"3.在WriteBuffer字串限制栏中输入“*idn?,在ByteCount限制栏中输入10().程序框图:1.翻开框图窗口.vritebufferI|b小-.血buffer7ISAsessionr5ilKe&eralError1孙
19、dlerri|HSAHri.tg|VISA.Etid|p/ISAClos目vihome|r色sourcenairiE2.根据上图选择创立框图对象并连接线.调用了下面的模块:VISAOpen功能模块在InstrumentI/:VISA子模板.此模块翻开通讯过程,并产生VISAsession参数.VISAWrite功能模块在InstrumentI/:VISA子模板.此模块把数据串写入指定设备.VISARead功能模块在Instrument1/:VISA子模板.此模块从指定设备中读入数据.VISAClose功能模块在InstrumentI/:VISA子模板.此模块关闭VISASession.3.返回
20、前面板并运行该程序.VISAsession限制件保持为设置值INSTRo如果要修改此参数,可以翻开VISAsession限制件,选择VISAClass值.根据Resourcename的设置值,可以选择与GPIB或者串行设备进行通讯.4.以VISA.vi文件名保存该程序,并关闭程序第四课分析处理3之数字滤波器数字滤波器用于改变或消除不需要的波形.它是应用最广泛的信号处理工具之一.两种数字滤波器分别是:FIR有限脉冲响应和HR无限脉冲响应滤波器.FIR滤波器可以看成一般移动平均值,它也可以被设计成线性相位滤波器.HR滤波器有很好的幅值响应,但是无线性相位响应.带通、带阻与过渡带宽带是指的是滤波器的
21、某一设定的频率范围,在这个频率范围的波形可以以最小的失真通过滤波器.通常,这个带通范围内的波形幅度既不增大也不缩小,我们称它为单位增益OdB.遨座指的是滤波器使某一频率范围的波形不能通过.理想情况下,数字滤波器有单位增益的带通,完全不能通过的带阻,并且从带通到带阻的重建逆堂为零.在实际情况下,那么不能满足上述条件.特别是从带通到带阻总有一个过渡过程,在一些情况下,使用者应精确说明过渡带宽.带通纹波和带阻衰减在有些应用场合,在带通范围内放大系数不等于单位增益是允许的.这种带通范围内的增益变化叫作带通纹波Q另一方面,带阻衰减也不飞能是无穷大,我们必须定义一个满意值.带通纹波和带阻衰减都是以分贝(d
22、B)为单位,定义如下:dB=20Xlog(f)/A(f)其中,4和4是某个频率等于f的信号进出滤波器的幅度值.例如,假设带通纹波为-0.02dB,那么有:-0.02=20Xlog(4/4)4/4(f)=10A(-0.001)=0.9977可以看到,输入/输出波形幅度是几乎相同的.假设带阻衰减等于-6()dB,那么有:-60=2()Xlog(4/4)4/4=10A(-3)=0.001输出幅值仅是输入幅值的千分之一.衰减值用分贝表示时经常不加负号,我们已经设定它为负值.应用练习旦的匚用数字滤波器消除不需要的频率分量前面板:Sine波形|幅度1Sixve波形2幅度2频率2|频率U初始相位1初始相位2
23、俄截频率:£1阶数采样采样频率i频谱I1.翻开LowPassFiltcr.vi程序.这个程序设计了一个低通巴特沃斯滤波器,从输入信号中滤除l()Hz分量.2.转换到框图程序.框图程1.验证主框图程序,它使用了下面的子程序:ButterworthFilterVI子程序(在Analysis>Filtcrs子目录).在本例中,采用巴特沃斯滤波器,指定滤波器阶数与截止频率,滤除输入正弦波中的高频分量,把输出波形在屏幕上显示.2.运行该程序,改变滤波器阶数,观察滤波器的效果.虽然在LabVIEW中使用数字滤波器很简便,但还是需要你对数字信号处理的理论有一个根本了解.为此,VI公司提供了一
24、个附加的工具软件,叫作数字滤波器设计工具箱(DigitalFilterDesignToolkit)o该软件用LabVIEW开发,有很好的交互式图形用户界面.可以把所设计的滤波器集成到LabVIEWsLabWindows/CVI或者其他的编程环境.第四课分析处理(4)之曲线拟合佚名教程来源:不详点击数:1653更新时间:2007-8-15曲线拟合的目的是找出一系列的参数a(),al,通过这些参数最好地模拟实验结果.以下是LabVIEW的各种曲线拟合类型:*线性拟合-把实验数据拟合为一条直线yi=a()+al*Xi*指数拟合-把数据拟合为指数曲线yi=a()*exp(al*Xi)*多项式拟合-把数
25、据拟合为多项式函数:yi尸a()+al*Xi+a2*Xfp2*通用多项式拟合-与多项式拟合相同,但可以选择不同的算法,以获得更好的精度和准确性.*通用线性拟合-公式为yi=a()+al*fl(Xi)+a2*f2(Xi),这里yi是参数aO,al,a2等的线性组合.通用线性拟合也可以选择不同的算法来提升精度和准确度.例如:y=a()+al*sin(X)是一个线性拟合.由于y与参数a(),al有着线性关系.同样道理,多项式拟合也总是属于线性拟合,但是它可以采用一些特殊算法以提升拟合处理的速度和精度."GeneralLevenberg-Marquardt拟合一把数据拟合为公式=aO,al,
26、a2).其中a(),al,a2是参数.这种方法是最通用的方法,它不需要y与a(),al,a2有线性关系.它可用于线性或非线性拟合,但一般用于非线性拟合,由于对于线性曲线的处理采用通用线性拟合方法更加快捷.这种方法不能保证结果一定正确,所以,有必要验证拟合结果.应用练习目的:对指数关系数据进行线性拟合前面板:FI1.翻开LinearCurveFit.vi程序.这个例子假设我们收集了1()对实验数据t和y,我们有理由相信它们之间有线性关系.2.切换到框图程序.框图程序:|口刈国第B二:1目1mL叵可1.验证框图程序,它使用了如下的子程序:LinearFit子程序(在Analysis>Curv
27、cFitting子模板).在本例中,它把实验数据拟合为一条直线,求出系数a和b,以满足yi=a+b*叫;以及实验结果和拟合结果之间的误差的均方根值.2.输入数据是一个两维数组,是采用DAQ卡采集数据时的通用格式.我们用IndexArray子程序可以分解得到两个一维数组yi与皿.3.“MSE表示误差均方根值,误差越小,拟合结果越好.4.运行该程序.曲线将显示实验数据和拟合结果.=应用练习2目的:对指数数据执行多项式拟合前面板:1.翻开PolynomialFit.vi程序.这个例子假设实验数据之间为多项式关系:yi=aO+al*ti+a2*tiA2-2.当多项式为一阶时,有两个参数,结果是一个线性
28、拟合,与前一个例子相同.当阶数为二阶时,结果是一个二阶多项式带三个参数,多项式参数存放于数组aio拟合后的数据y月|gFoo13001*lb00wir-w型14nrinr_l巴uu躯0.胴.E比随.加式siJJ实验数据九in:拟合后的曲线yTi/-、/,/-、|1.55fTTi3R1726I&.30|79多项式阶数1匚mse|1.呼-1|aiQ-3.切转到框图程序.框图程序:拟合后的数据y口艮12fFB1.验证框图程序,它使用了如下的子程序:GeneralPolynomialFit.vi子程序(在Analysis>CurvcFitting子目录)在本例中,把实验数据拟合为二阶多项
29、式曲线,返回结果为拟合数据,多项式系数以及拟合误差的均方根值.2.本例使用多项式拟合,求出了多项式系数a(),al,a2等.一般情况下,我们总是尽可能使用最低阶的多项式.3.运行程序.将显示实验数据和拟合结果的数据.串口通信协议例如与分析佚名教程来源:不详点击数:3115更新时间:2007-8-15align=HleftHcellpadding=n10ucellspacing=ftOH>变频器与个人电脑使用RS-232/RS-485串行总线连接,如下所示:个人电脑指令RS232/RS485串在线仪vihcma器应答在通讯操作中,通过个人电脑以命令方式限制仪器.通讯数据格式:1起始位:1位
30、1数据位:8位1奇偶位:无1停止位:1位应答及命令格式:1命令模式和校验范围.AD(H)AD(L)9*RI命令内容SC(H)SC(L)3A3A站别号01-333FXX和校验强me:-数据头,只有以:开头的数据包才认为有效.AD-设备号,当前通讯的设备ID.?-指明该数据是PC发出的指令.RI-响应时间,从PC发出命令到仪器应答的时间.SC-和检验码,等于图中“和校验范围所示各位相力口.1应答模式和校险范围fAD(H)AD(L)#RI命令内容SC(H)SC(L)3A3A站别号01-3323XX和校骁朝me#-指明该数据是仪器发回的应答数据.其它同上.1故障模式和校验范围AD(H)AD(L)%R1
31、命令内容SC(H)SC(D3A3.A站别号01-3325XXSL碗homeCHECK%-指明该数据是仪器发回的故障数据.其它同上.协议说明:无论是限制仪器还是查看仪器数据都需要PC发出相应的命令;只要PC发出命令前提是与仪器正常通讯,仪器都会返回数据应答或故障.使用LabVIEW编写通信模块:1 .主要节点:Functions->InstrumentI/O->VISAResourceNameConstant,Functions->InstrumcntI/->Scrial->VISAConfigSerailPort,VISARead,VISAWrite,VISACl
32、ose2 .串口设置:根据仪器说明设置如波特率等等串口参数.超时设置根据上述Rio3 .写串口指令:根据上述“命令模式的格式包装命令数据,和校验由和校验范围中数位相加而得,所以之前应该写一子VI用来计算和校验.建议使用以下变量来包装数据:1prefix:前缀,这里是:1devID:设备号1type:通讯类型(这里是?),可以与RI合并1cmdNum:命令号1cmdValuc:命令号对应的命令值1sumVerify:和校验码1end:结束字符注意:一般协议要求“命令内容满足一定的位数,所以应该做一个子VI,专门在那些数位不够的命令前补足空格或0.4.读串口数据:系统为串口开辟了一定大小的缓冲队列
33、空间,仪器应答数据首先发送到这个缓冲空间(空间数据堆满时自动移除最早的数据),然后程序从中一次读取指定的数位并将其从中移除.建议读取方式:(1)读1byte,判断是否:(3A),是那么继续;否那么返回步骤,重新开始.(2)再次读1byte,判断是否:(3A),是那么继续;否那么返回步骤(1),重新开始.(3)读应答模式中除去:剩余的字节,循环读取,每次读一个字节,当读到的字节数到达数量,继续;假设读取超时,返回步骤(1),重新开始.(4)分析读到的bytes,判断和校验码是否正确.假设正确,继续;否那么,返回步骤(1),重新开始.(5)取第三个byte,如果是#,说明“应答模式;如果是,说明“
34、故障模式.(6)根据应答或者故障模式,别离出相应的命令号和命令值.(7)一些类型转换.至此,一次读取过程结束.5.由于一次通讯包含一次写命令和一次读数据,所以最好把写和读模块封装成一个子VI.如何使用树控件佚名教程来源:不详点击数:732更新时间:2007-8-15align=,left"cellpadding=,10ncellspacing=,0'l>1 .插入树控件在前面板放置ControlsPalctte->ActivcX->Containcr,在其鼠标右键菜单上选择"insertActiveXObject,然后选择aMicrosoftTre
35、eViewControl6.0版“.2 .树限制节点的位置在'NationalInstrumentsLabVIEW6.1cxamplescomm目录下有一个TrceControLllb文件,包含了假设干个使用的数限制节点.注:以下使用的树控件节点,在TrceControLllb都可以找到.3 .插入ImageList在前面板放置ControlsPalctte->ActivcX->Containcr,在其鼠标右键菜单上选择"InsertActiveXObject",然后选择aMicrosoftImageListControl6.0版“.在生成的ImageL
36、ist控件的鼠标右键菜单上选择"ImageList->propertics",在“Image窗口中逐个插入图形文件,其Index为从1开始以1递增.使用时在树控制节点的Image和SelectedImage输入端分别输入Index,即可插入对应的图标.4 .插入一个树节点要插入树节点,首先应该翻开树节点的限制,使用节点“OpenTreeControlo一个树节点的插入可以通过以下几种方式:1) AddItembyPathtoTree,通过输入树节点的路径来生成节点,路径一般由节点的text与组成.例如abc,代表c是b的child,b是a的child©2)
37、AddItembyRelativeKeytoTree,如果一个树节点设置了key属性的值,那么可以通过key来生成父亲、兄弟或者子女节点.使用时在节点的Relative输入端输入key,在Relationship输入端输入整数值,代表生成节点与key表示的节点之间的关系.3) AddItembyRelativeIndextoTree,通过引用树节点的Index值来生成父亲、兄弟或者子女节点.使用时在节点的R9ativc输入端输入Index值,在Relationship输入端输入整数值,代表生成节点与key表示的节点之间的关系.其它树节点的使用类似,在此不加说明.如果想进行更多的对树的限制,可以
38、通过Unbundle节点“OpenTreeControl的输出端"treeinfoout,得到“TreeRefnum",并分别连接到apropertynode和ainvokenode节点,将分别获得树的所有属性和方法调用.一个例子:数据区后潮行一批这样的测状试祥批的树结构(0)(#)町船后nw02£Ls2sa3袅S2S3颊样样样钿样样样领样洋样试C归口试出e试灯拈需布好vihome法:藤色代会该名弗对应的叫试己经完成国批国找到程序运行速度的瓶颈佚名教程来源:不详点击数:453更新时间:2007-8-15align="left"ccllpaddi
39、ng=nl()ncellspacing二"()>一、找到程序运行速度的瓶颈想要提升程序的运行效率,首先要找到程序运行的瓶颈在哪里.LabVIEW程序的运行也符合80/20定理:20%的程序代码占用了80%的运行时间.如果能找到这20%的代码,加以优化,就可以花较小的力气,显著提升程序的整体效率.对于已经编写好的程序,可以通过内存和信息工具来查看程序中每个VI运行的多长时间.对程序的效率进行优化,就要从最耗时的VI开始下手.内存和信息工具可以从LabVIEW的菜单项Tools->Profile->PerformanceandMemory中启动.图1是这个工具的界面.图
40、1:内存和信息(ProfilePerformanceandMemory)工具在内存和信息工具中会列出一个程序中的全部子VIo在运行这个程序之前,先按下工具上的Start按钮,这个工具就开始为所有的子VI进行计时了.你的程序运行结束,点击工具上的Snapshot就显示出每个子VI在刚刚的运行中占用了多少CPU时间.根据VITime排序,排在最前面的几个VI就是程序的瓶颈,是需要重点优化的对象.一个子VI占用了大量CPU时间,有可能是由于它内部的运算较为复杂,这时你需要翻开它,对它的算法进行优化.但更有可能的是由于这个VI被程序执行的次数太多.这时,你就要考虑的程序结构,是否可以减少这个VI的运行
41、次数,比如把它从某些不必要的循环中挪出去,或者拆分这个VI的代码,把没有必要循环执行的局部别离出去,挪到循环体外面.并不是所有的运行效率问题都可以在内存和信息工具中体现出来.VITime列出的只是子VI的CPU占用时间,如果你的程序里存在大量无用的延时,或者程序一直被某些慢速工作,如读写外部仪器,通过网络传输数据等,所阻塞.这样的程序效率也是很低de,但在内存和信息工具上却表达不出来.有些非常耗用CPU的操作也无法表达在内存和信息工具±o比方我将会在?LabVIE*的线程?第四章提到一个使用OpenGL的例子,由于程序线程设计不当,CPU被大量消耗在线程切换上.从系统资源治理器看,C
42、PU被LabVIEW占满,在内存和信息工具却看不到任何一个VI占用了如此多的CPU时间.在多核CPU的计算机上,由于可以多个线程同时执行,某些子VI虽然占用的大量的CPU时间,如果程序线程设置合理,是可以让这些VI不影响到程序的整体效率的.LabVIEW程序慢在哪里佚名教程来源:不详点击数:724更新时间:2007-8-15align="leftcellpadding=nl()ncellspacing="()二、程序慢在哪里?使用内存和信息工具是不能发现所有程序效率问题的.并且一旦程序的主体实现以完成,在对其进行修改,本钱还是比拟高的,尤其是涉及到结构性的改动时:以前做过的
43、测试需要重新做,构建在这个模块之上的代码需要作相应更新.如果时间紧迫,考虑到这这种改动所带来的风险,很可能在程序完成后就无法在对其性能进行优化了.所以最有效的编写高效率程序的方法,不是在程序完成后,再回头查找程序瓶颈.而是在设计程序结构的时候,就把会影响程序效率的因素考虑进去.直接设计出高效率的程序.下面讨论一些常见的运行比拟慢的程序局部.一个程序运行效率的瓶颈通常就出现在这些局部.所以在设计程序时,对这些局部要格外注意.a)读写外设、文件相对于计算机的中央处理器、内存读写的速度,计算机的外围设备的处理和传输数据的速度是非常慢的.比方,GPIB的传输速率最高也只有1Mbps,比内存的传输速率低
44、了两个数量级以上.在一个测试应用软件中,造成整个系统效率低下的瓶颈很可能就在于这类数据传输当中,程序的大局部时间都消耗在等待外部数据上了.b界面界面刷新和等待事件也是比拟消耗时间的工作.这是由于人的反响速度远不如计算机引起的.你如你可以设置屏幕上的数据指示控件的中数值以每秒一千次的速度刷新,但是这对于用户来说毫无意义,由于人眼和大脑根本处理不了这样快的变化.同样,在显示给用户一条信息后,等待用户的后续指令也需要一段时间.c循环内的运算设计循环的时候总是要格外小心些,由于就算一段代码运行的再快,循环个几千,甚至几百万次,消耗是时间也不得了了.所以越是执行次数多的循环,他内部代码的效率对整体影响越
45、大.dGlobalVariable全局变量不但会破坏LabVIEW的代码风格,并且它的代码读写速度也是特别的慢.e子VI使用子VI是会有一定开销的,但是我们在其它文章里曾经讨论过,使用子VI利大于弊.子VI使用的越多越好.不过需要注意的是,动态调用子VI的速度是非常慢的.由于他需要先把被调用的VI从磁盘装入到内存中,然后才能运行.而且,装载VI的工作一定会在界面线程执行.如果被动态调用的VI太大,还会迟滞界面刷新,影响用户的感觉.f)调试信息这一条对于对于已经做成可执行文件的程序没有意义,由于LabVIEW在把VI做成可执行文件的时候,一定会去除调试信息的.但是还有相当一局部程序是直接在Lab
46、VIEW的编译环境下运行的,去掉调试信息可以让程序降低约50%的CPU占用时间.g)多线程和内存使用不当LabVIEW是自动多线程运行,和自动开辟回收内存空间的,这意味着对于LabVIEW初级用户可以毫不关心有关线程和内存的问题.但是对于高级用户,需要追求更高的效率,就需要考虑多线程和内存对程序的影响了.LabVIEW的执行系统佚名教程来源:不详点击数:214更新时间:2007-8-15align="left"cellpadding=nl()ncellspacing="()>二、LabVIEW的执行系统1 .什么是执行系统早期LabVIEW的VI都是单线程运行的,LabVIEW5.0后才引入了多线程运行.其实,对于并排摆放的LabVIEW函数模块而言,即使LabVIEW不为它们分配不同的线程,通常也是“并行执行的.LabVIEW会把它们拆成片断,轮流执行:这有一点像是LabVIEW为自己设计了一套多线程调度系统,在系统的单个线程内并行执行多个任务.LabVIEW中这样一套把VI代码调度、运行起来的机制叫做执行系统.现在的LablVEW有六个执行系统,分别是:用户界面执行系统、标准执行系统、仪器I/.执行系统、数据采集执行系统、以及其他1、其他2系统.一个应用程序中使用到的众多子VI可以是分别放在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 学习2025年创业扶持政策与市场趋势的结合试题及答案
- 教育精准扶贫项目实施与农村教育人才引进报告
- 水禽水神测试题及答案
- 航空货运企业市场营销策略创新与市场拓展实践:2025年市场格局与发展策略报告
- 管理通史测试题及答案
- 水文统计学试题及答案
- 商丘师范学院《专题设计》2023-2024学年第二学期期末试卷
- 安全文明 的试题及答案
- 宁夏银川市金凤区六盘山高级中学2025届高三第三次调研测试物理试题试卷含解析
- 葡萄酒行业产区特色品牌打造:2025年国际化发展路径报告
- 研发成果商业化转化(资料)
- 高速铁路关键技术
- 丁丽娟《数值计算方法》五章课后实验题答案(源程序很详细-且运行无误)
- 情境学习理论在教育中的应用
- 血糖监测操作流程及考核标准(100分)
- 部编版语文二年级下册第6单元奇妙的大自然大单元整体作业设计
- 2023年住院医师考试-康复医学住院医师考试题库(含答案)
- 高中音乐鉴赏 《黄河大合唱》
- 2022年贵州贵阳市中考英语真题
- FZ/T 32001-2018亚麻纱
- 《大数据环境下的网络安全问题探讨(论文)8000字》
评论
0/150
提交评论