下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.1虚拟仪器概述1.2LabVIEW是什么?LabVIEW的运行机制1.3.1LabVIEW应用程序的构成1.3.2LabVIEW的操作模板1.4LabVIEW的初步操作1.4.1创建VI和调用子VI1.4.2程序调试技术1.4.3子VI的建立1.5图表(Chart)第二章程序结构2.1循环结构2.1.1While循环2.1.2移位寄存器2.1.3For循环2.2分支结构:Case2.3.1顺序结构2.3.2公式节点3.1数组和簇3.2.1创建数组3.2.3自动索引3.3数组功能函数3.5簇3.5.1创建簇控制和显示VI传递数据3.5.3用名称与分解簇3.5.4数组和簇的互换3.6波形(Waveform)第四章图形显示4.1概述4.2Graph控件4.3Chart4.4XY图形控件(XYGraph)各 提供淘宝店: 各类 免费邮件订阅系统点我订4.73D图形显示控件(3DGraph)5.1字符串5.2文件的输入/输出(I/O)5.2.1文件I/O功能函数5.2.2将数据写入电子表格文件5.3数据记录文件(datalogfile)第六章6.1概述6.1.2系统的构成6.1.4信号调理6.1.5问题的复杂程度评估6.2缓冲与触发6.2.1缓冲(Buffers)6.2.2触发(Triggering)6.3模拟I/O(ogI/O)6.3.1基本概念6.3.2简单ogI/O6.3.3中级ogI/OI/O(DigitalI/O)6.5采样注意事项6.5.1采样频率的选择6.5.3多任务环境6.6附:PCI-MIO-16E-4卡简7.1概述7.2信号的产生7.3标准频率7.4数字信号处理7.4.1FFT变换7.4.2窗函数7.4.3频谱分析7.4.4数字滤波7.4.5曲线拟合第八章LabVIEW程序设计技巧 VI选项设置9.1概述9.1.2信号调理9.2电压测量9.3频率测量9.4相位测量9.5功率测量9.6阻抗测量9.7示波器9.8波形记录与回放9.10扫频仪9.11函数发生器9.12实验数据处理9.13频域分析9.14时域分析第十一 仪器控LabVIEW1.1虚拟仪器(virtualinstrumention)是基于计算机的仪器。计算机和仪器的密切结合是目语言是NI公司的LabVIEW。已经有了相当的发展。PC机出现以后,仪器级的计算机化成为可能,甚至在公司Windows诞生之前,NIMacintoshLabVIEW2.0以前的版本。对虚拟仪器和LabVIEW长期、系统、有效的研究开发使得该公司成为业界公认的。太高VXI标准,这是一种插卡式的为便宜的PXI标准仪器。IEEE488GPIB协议。未来的仪器也应当是网络化的。1.2LabVIEW泛地被工业界、学术界和研 所接受,视为一个标准 LabVIEW集成了与满足GPIB、VXI、RS-232和RS-485协议的硬件及卡通讯的全部功能。它还内置了便于应用TCP/IP、ActiveX等标准的库函数。这是一个功能强大且图标和概念,因此,LabVIEW是一个面向最终用户的工具。它可以增强你构建自己的科学和 LabVIEW,可产生独立运行的可执行文件,它是一个真正的32位编译器。像许多重要的一样,LabVIEW提供了Windows、UNIX、Linux、Macintosh的多种版本 LabVIEW的运行机制1.3.1LabVIEW应用程序的构成panel(blockdiagram)以及图标/连结器(icon/connector)前面板是图形用户界面,也就是VI的虚拟仪器面板,这一界面上有用户输入和显示输(indicator图1所示是一个随机信号发生和显示的简单VI是它的前面板,上面有一个显示对象,以曲 图1-1随机信号发生器的前流程图提供VI的图形化源程序。在流程图中对VI编程,以控制和 使它持续工作下去,设置了一个WhileLoop循环,由开关控制这一循环的结束。图1-2随机信号发生器的流VI与标准仪器相比较,那么前面板上的东西就是仪器面板上的东西,而流程图VI可以仿真标准仪器,不仅在屏幕VIVI
VI(subVI1.2.2LabVIEWLabVIEW的用户界面上,应特别注意它提供的操作模板,包括工具(Tools)模板、控制(Controls)模板和函数(Functions)模板。这些模板集中反映了该的功能与特征。工具模板(ToolsWindowsShowToolsPaletteWindowsShowHelpWindow功能1 (操作值2ct(选择)3EditText(编辑标45Object6Scroll789控制模板(ControlWindowsShowControlsPalette模板中包括的对象,在功能中用文字简要介绍。 1234Array&567Ring&Enum(环89DigilogClassic 功能模板(Functions层图标都表示一个子模板。若功能模板不出现,则可以用WindowsShowFunctionsPalette 1234567Comparison(89据)Instrument(和函数,以及VISA的操作功能函数。Motion&学(通讯Graphics&CIN生成SelectaVI(选VI)户子VI库)1.4LabVIEW的初步操作VIVI1.选择File»New,打开一个新的前面板窗口。2.从Controls»Numeric中选择 4.把容器显示对象的显示范围设置为0.0到1000.0。击一下。这时0.01000.0之间的增量将被自动显示。将鼠标移到容在出现的快速菜单中选Iterms»DigitalDisplay即可6.从Controls»Numeric中选择一个温度计,将它放到前Windows»ShowDiagram打开流程图窗口。从功能模板乘法器和随机数发生器由Functions»Numeric中拖出,尽管数值常数也可以这c存放在LabVIEW\Activity 中,调用它的方法是在Functions»SelectaVI下打开ProcessMonitor,然后在流程图上点击一下,就可以出现它的图标。注意 一般在ProgramFiles\National 下8.用连线工具将各对象按规定连接。a中的遗留问题创建数值常数对象的另一CreateConstant,就可以创建一录中的Temp&Vol.vi。File»CloseVI练习1- 结Help菜单中选择ShowHelp标置于这个功能函数或者VI上。例如进程监视器VI的Help窗口显示如下:2.显示对象(Indicator、控制对象(Control)和数值常数 符号表示16位整型数;ABC符号表示对象数据类型ChangtoControl,说明这是一个显示对象,你可以根据需要,ChangtoIndicator使用定位工具点击坏线再按下<Delete>来删除Edit»RemoveBadWires或者按下<Ctrl-B>VISignal1.4.2程序调试技术LabVIEW点击这个按钮使它变成高亮形式,再点击运行按钮,VI程序就以较慢的速度运行,没有被ToolsVI将任何一个定义了图标和联接器的VI作为另一个VI的子程序。在流程图中打开Functions»SelectaVI….,就可以选择要调用VI。构造VI主要的工作就是定每个VI面板和流程图窗口的右上角都显示了一个默认的图标。启动图标编辑器的方法是,用鼠标右键单击面板窗口的右上角的默认图标,在弹出菜单中选择EditIcon。联接器是VI数据的输入输出接口。如果用面板控制对象或者显示对象从子VI中输出或者输入数据,那么这些对象都需要在联接器面板中有线端子。您可以通过选择VI的端子数并为每个端子指定对应的前面板对象以定义联接器。ShowConnector联接器图标会取代面板窗口右上角的图标。LabVIEW联接器中的各个矩形表示各个端子所在的区域,可以用它们从VI中输入或者输出数菜单,选择ShowConnector,再次弹出快捷菜单,选择Patterns。下面通过一个练习练习1- 为VI创建图标和联接1.打开LabVIEW\Activity 中的Temp&Vol.vi,这是练习1-1做的程序。3.删除默认图标。使用 Tool(矩形框,单击并拖动想要删除的部分,按<Delete>。也可以通过双击工具框中的阴4.用PencilTool(铅笔工具)绘制一个温度计 5.用5.用TextTool(文本工具)创建文本。得到图标将如下7.用鼠标右键单击前面板中的图标窗口,在快捷菜单中选择ShowConnector,设置联接器端子连接模式。在默认情况下,LabVIEW会所示。用鼠标右键单击联接器窗口,在快捷菜单中选择 Degrees(旋转90度,注意联接器窗口的变化,如左图所 重复步骤ab用鼠标右键单击联接器,在快捷菜单中选择ShowVIVIVIVIVI练习1- 结1.5图表(chart)期性更新数据的数字式图形显示对象。可以在Controls»Graph模板中找到两种图表:波形图和强度图显示需要或者让它显示右图显示了快速菜单中Advanced»UpdateMode子菜单中提供的三种图表显示类Scopechart(示波器图)Sweepchart(扫描图)。默认模 VI该程序中利用一个循环产生连续的sin(i)函数值,并及时地在chart图表上显示出来,现面板上的chart是一个strip,这是一个坐标式显示器,与纸带式图表记录器相似。用鼠标选中chart,点击右键,可在快速菜单中选择Advanced»UpdateMode子菜单。新数据绘制在原有数据的右侧。当数据曲线到达显示区的右边缘时,VI LabVIEW可以用同一个垂直坐标在一个图表中显示多个图这种图形被称为堆栈式图Graphs\charts.llbcharts.vi 面板上替换不同的Indicator的方法。第二 程序结2.1循环结构2.1.1While循环
DoRepeat-Until程序,直到条件端子接收到的布尔值为FALSE。i+1,如果循环只执行一次,那么循环输出值i=0。图2-1While练习2-1使用While一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关每次运行VI时都要打开开关。操作步骤如下: 选择File»New选择 面板中放置一个开关选中Controls»Graph,面板中放置一个波形图(是chart,而不是graph)。设置它的为随机信号。这个图表把图表的纵坐标改为0.0到1.0。方法是用工具把最大值从10.0改为1.0。选择Controls»Numeric,面板中放置一个旋钮。设置旋钮的为循环延时。这个旋钮用于控制While循环的Functions»StructuresWhileum在循环中设置WaitUntilNextmsMultiple(Functions»Time&Dialog),该函数的时间单位是毫秒,按010号图表输入端子连接起来,并把启动开关和WhileVILabVIEW\ActivityRandom执行该VI。While循环的执行次数是不确定的,VI。关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环。Operations»ClearChart,清除显示缓存,重新设置图 选择MechanicalAction就可以看到这些可选的动作。LabVIEW还提供了一个范例示范这些动作,它是位于Examples\General\Controls\booleans.llb的MechanicalActionof(Shift或者右边,在快捷菜单中选择AddShiftRegister。如图2-3ShiftRegister的工 菜单中选择AddElement。例如,如果某个移位寄存器左边的端练习 2.把波形图表的坐标范围改为0.0到2.0。3.在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择随机0LatchWhen随机5.在流程图中添加While循环(Functions»Structures),创建移用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择AddShiftRegister用鼠标右键单击寄存器的左端子,在快捷菜单中选择AddElement,添加一个寄存器。6.RandomNumber(0–1)函数(Funcions»Numeric)——产生0到1之间的某个随机数。7.CompoundArithmetic函数(Funcions»Numeric)——在本练习中,它将返回两个周期产AddInput9.数值常数(Functions»Numeric)——在While循环的每个周期,RandomNumber函数将产生一个随机数。VI就将把这个数加入到在寄存器中的最近三个数值中。RandomNumber(0–1)4,就能得到这些数的平均值(当前数加上以前的WaitUntilNextmsMultiple(Functions»Time&Dialog)WaitUntilNextmsMultiple功能函数的输入端子,在快捷菜单中选择CreateConstant。出现一个数值常数,并自动与功能函数连接。因此循环每半秒执行一次。注意,VI13.VI14.把该VI保存为 练习 结束2.1.3For时就创建了一个指定大小和位置的For循环。图N:计数端子(输入端子)——用于指定循环执行的次数。I:周期端子(输出端子)——含有循环已经执行的次数。上图显示了一可以产生100个随机数并将数据显示在一个练习2- 使用For循数”。将图表的纵坐标范围改为0.0到1.0。在图表的快捷菜单中选择Visible00图2-5练习2-33.在流程图中放置一 循(Functions»Structures)AddShiftRegisterRandomNumber(0–1)函数数值常数(Funcions»Numeic)——在这个练习中需。Max&Min函数( 数值常数(Functions»Numeric)——For循环需要1007.运行该VI。8.将该VI保存为LabVIEW\Activity 下的Calculate练习2- 结束2.2分支结构:
Case结构含有两个或者的子程序(Case),执行那一个 练习2- 使用Case结
-Functions»StructuresCase放置在在流程图中。Case结构是一个可以改变大小的方框。先来做Ture的情况,照流程图上半部分构造。 SquareRoot函数(Functions»Numeric)——返回输OneButtonDialog函数(Functions»Time&Dialog)——在这里它用于显示一个框,内容是字符串常数(Functions»StringEditTools 框中输入字符串该VI在TRUE或者FALSE情况下都会执行。数值大于等于0,VI会执行TRUECase,返回该数的平方根,否则将会输出-999.00,并显示一个框,内容为Error...。返回前面板,运行该VI。修改为Number的数字式控制对象的值改为负数时,LabVIEWCaseFALSE保存该VI到LabVIEW\Activity 中的SquareVI的算法
if(Number>=0)SquareRootValue=
SquareRootValue=-999.00DisplayMessage"Error.."end练习2- 结束2.3.1顺序结构(SequenceLabVIEWA、B、C、D4CBCBDA的输入数据有效时才会执行,所以图中,当且仅当A、B、C3个节点执行完,使得D节点的3个输入数据都到达D节点后,D节点才执行。但是你要注意,这里并没有规定A、B、C3个节点的执行顺序。在LabVIEW中这种情况下,A、B、C的执行顺序是不确定的,如果你需多个子程序。首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。与Case结练习2-5使用顺序结构600初始时11当前执行给定匹配2计算延时时间(秒匹配时间(秒图2-8练习2-5的流程图(共3帧 在流程图中放置顺序结2.用鼠标右键单击帧的边框,在快捷菜单中选择Add3.选中第0桢,设置初始时间(子)程4.第之间传递数据。用鼠标右键单击第0帧的底部边框,选择AddSequenceLocal,创建顺序局部变量。顺序局部变量显示为TickCount(ms)函数(Fnsme&Dialog)——返回启动到现在的时间(以毫秒为单位)。6.按图连好线。转入第1帧。该帧是匹配计算,内含RoundtoNearest函数(Functions»Numeric)0100NotEqual?函数(Functions»Comparison)——在该例返回TRUE值,否则返回FALSE。Increment函数(Functions»Numeric)——在该例中,它将While循环的计数器加1。7.按图连好线。转入第2帧0TickCount(ms)功能函数将以毫秒为单位功能函数以毫秒为单位返回新的时间。VI从中减去原来的时间8.返回前面板,在NumbertoMatch9.把该VILabVIEW\ActivityTimeto
练习2-5结束。快捷键选择DataRange…选项,将会出现如下 图2-9设置数据范围2.3.2公式节点(Formula个功能就非常有用。例如等式:yx2x1建公式节点的输入和输出端子的方法是,用鼠标右键单击第0帧的底部边框,选择AddInputAddOutput)。再在节点框中if(x>=0)theny=sqrt(x)
方根并把该值赋给Y,如果X为负数,程序就给Y赋值-99。y=-end
XY的函数sqrt(X)中函数名称是小写。练习2-6使用公式节点y1=x3–x2+5y2=m*x+bm
Waveform 9
AddInput,可以创建三个输入端子。在快捷菜单中选择AddBuildArray(Functions»Array)在这个把该VI保存为 下练习2-63.1概述0n1n0,1,依此类推。数组的元素可图3-1数组示意图型的数据。它类似于C语言中的stuct。使用簇可以把分布在流程度。减少子VI的连接端子的数量。3.2数组的创建及自动索引3.2.1创建数组如果需要用一个数组作为程序的数据源,可以选择Functions»Array»ArrayConstant,将它放置在流程图中。然Array0Array0Array0Array0图3-1数组的创建Controls查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。3.2.3自动索引ForWhile循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能Indexing选择Controls»Numeric,选择Controls»Graph,面板中放置一个波形图。设置它的为WaveformGraph。用鼠标右键单击图形,并在快捷菜单中取消选中Scale»AutoscaleY,自动坐标功能
WaveformWaveformDelta图3-2练习3-1的流程图由Functions»Select aVI…寻找 VI,它的作用是返回波形中的某一点。这个VI需要输入一个索引,循环周期连接到这个GenerateWaveformVIFor索引。在这个例子中,连接到循环计数输入的数值常数令For循环创建了一个由100个元素组成的数组。数值常数(Functions»Numeric)——三个数值常数用ForN=100X=0deltaX=1。从前面板执行该VI。该VI将把自动索引后的波形图数把X的delta值改为0.5,X的初始值改为20。再次执VI10020,Xdelta0.5(X)。面的流程图中,您为波形图指定了初始的X值和deltaXX0,deltaX1。这样,也可以把波形数组直接连接到波形图端子,而无需指定初始的X值和deltaX值,如图3-4所示。XDeltaX
WaveformBuild (Functions»Numeric»Trigonometric)在Pi常数(NumericBuildArray(Functions»Array)——在VI。注意同一个波形中的两个图区。默认情况下,它们的X初始值都是0,deltaX初始值都是VILabVIEW\ActivityGraphWaveformArrays.vi。WaveformGraphWaveformGraph-0102030405060708090Plot--0练习 更详细的例子建议调阅Examples》Fundamentals》GraphsandCharts》GraphExamples》WaveformGraph例子。练习 选择File»Open…,打Examples\General\arrays.llb中的SeparateArrayVIzz0.00.00BuildNegativePositiveInput0.00BuildNegativePositiveInput表示这是一个数组,而循环的细线则表示这是一个数组元素。数组元素在每个循环期间将自动。注意,计数器端子还没有连线。当您对某个进入For5ForVI。可以看到尽管输入数组仍然有八个值),B(正数)、C(负数)。Sbr、Scr分别是与B数组、CFori=0tok- p>=0InsInsendNextPrintPrint练习3-2结束。3.3数组功能函数LabVIEW提供了很多用于操作数组的功能函数,位于Array、Sort1DArray、Reverse1DArray和MultiplyArrayElements等等。创建数组——BuildArray函数(FunctionsArray,用于根据标量值或开始时,BuildArray函数具有一个标量输入端子。您可以根据需要向该功能函数中加入侧,在弹出菜单中选择AddElementInput或者AddArrayInput。还可以用变形工具来增标或者选择RemoveInput来删除输入。347;–162;528.。初始化数组(InitializeArray)——用于创建所有元素值都相等的数组。下图5100100个始个组法鼠键单右,菜择AddDimension。还可以使用变形光标来增大初始化数组节点的面积,为每个增加的维添emoveDimension,或者使用变形光标。下面的示意图显示了怎样初始化一个三维数组。数组大小——ArraySize函数,返回输入数组中的元素个数。子集的例子,注意,数组索引从0开始。元素的索引为0,所以第三个元素的索引是2。IndexArray函数相连,IndexArray2个索引端子。将一个三IndexArray函数相连,IndexArray3个索引端子。余类推。可以使用的索引端的符号是一个黑方快,被使用的索引端(DisableIndexing)是一个空心的小方框。当给一个被使用的索引端连接上一个Constant或Control是它会自动变为黑方快,即ConstantControl被删去时, 第0个元素是与原有元素最近的元素。练习 从Controls»Numeric模板中选择一个数字控制对象放置面板中,设置它的为scalar1。设置它们的为scalar2和scalar3。array1、scalar1scalar2、scalar3、array2中输入数值1到9。一个BuildArray功能函数。用定位工具增大函数额面积,以容纳5个输入。把数组和标量与BuildArray连接起来。创建输出的一维数组,它由array1、scalar1、scalar2、array2、scalar3中的元素所组成,。VI。可以看到array1、scalar1scalar2、scalar3、array2中的数值出现在同一个一维数组中。保存该VI为LabVIEW\Activity下的Build练习 结束3.4多态化图3-9给出了Add函数的一些多态化组合。可以把这些准则应用到其他的G语言函数或者数据类型。G语了 关于多态化的知识,请参阅Reference»FunctionandVIReference3.5(Cltrs创了个簇。trlCtrlInitrCtrl与InitrCtrl或IitrCtrl簇的序如果想改变簇速菜单中选ClasterOrder,这时会出现一个窗口,VIVI2828个端子传递数据,这 LabVIEW还提供一种可以根据元素的名字来或分解簇的练习 InputInputOutputBoolean1BooleanBoolean1BooleanOutputInput1.打开前面板,创建一个簇壳(Array&Clusterpalette,改为InputOutputInput2.在这个簇壳中放置一个数字Control,两个布尔开关,和一个串Control。OutputClusterControlindicator。5.面板上设置一个[STOP]按钮。注意其缺省值为FALSE,不要改变它的状态。FALSENOT函数后变为TRUE,这就意味着当按钮状态不8.关闭并保存程序。ClusterExercise.vi练习 结3.5.3用名称与分解 名称来与分解簇。在Cluster工具模板中除了Bundle及Unbundle功能外,还提供有BundleByNameUnbundleByName(而不是其位置)来BundleByName一个输入以申明要替换其元素的簇。Unbundle可返回指定名称的簇元素,不必考虑簇的序Boolean2BundleByName ClusterCluster StringStringCluster在上面的例子中,ClusterControl中有两个元素,一个是数据类型(Numeric,tring,有时你会发现,将数组变为簇(或者相反)很方便。尤其是因为LabVIEW包括的关于好了,Reverse1DArray功能正好可用,但是它仅可用于数组。这没关系,你可以使用功能ClustertoArray将簇转换为数组Reverse1DArray切换开关的值后再利用ArraytoClaster变换回簇。3.6Waveform在和信号分析中经常要遇到波形数据,在LabVIEW6i中增加了Waveform数和步长ΔXWaveformBuildWaveform函数可以建立一个波形。许多用于数据和波形分析的VI和函数的缺省状态都接受或返回Waveform数据类型。当你将一个WaveformWaveformGraphChart时,会自动画出相应的曲线。Waveform负作用,有时还需要对Waveform数据类型“解包”。有关这一数据类型的函数或VI在Functions»Waveform yze之中Waveform图3-12是一个使用Waveform函数产生正弦波的例子。其中仅仅调用了SineWaveform一个函数,只要将有关参数指定,就可产生正弦波。SineWaveform实际上是一个第四章图形显示4.1概述图形显示对于虚拟仪器面板设计是一个重要的内容。LabVIEW为此提供了丰富的功能。不从图形的实现方法上去问题,那是计算机图形学的课题。但需要从用户问题。LabVIEW在这方面所做的工作是非常值得借鉴的。LabVIEWGraphChartChart是示波器也可以具备类似Graph的显示功能。******3DSurface(三维曲面*3DParametric(三维参变量*3DCurve(三维曲线*LabVIEW6i版本中还包含有极(Plot,4.2Graph些控件都包含在图形快速菜单的VisibleItems选项下。(Cursor(Scale(Graph Graph的图形控4.3ChartChart控件含有一个显示缓冲器,其中保留了一些历史数据。这个缓冲器按照先进先出的原则管理,其最大容量是1024个数据点。滚动条数据显示(Digital刷新模式(UpdateSweepChartMode(扫描模式:与示波器模式的不同在于当新的数据点到达右部堆叠式图区(Stack打开\LabVIEW\Examples\Graphs\chart.libCharts.viChart的各练习 Chart和Graph的比WaveformWaveformWaveform图4-2ChartGraph显示的运行结果是一样的。但实现方法和过程不同。在流程图中可以看出,Chart产生Graph在循环之外,40个数都产生之For循环的边界上(使用自动索引功能For循环结束之后,该数组就将被传送到练习 结4.4XY图形控件(XY波形图(WaveformGraph)X是测量点序号、时间间隔等,Y是测量YXXYGraph。通过一个构成利萨育图形的例子来看一下它的使用。知道如果控制XY方利萨育图形是一条45度的斜线,当它们之间相位差90度时为圆,其他相位差是椭圆。练习 利用XYGraph构成利萨育图形图4-3XYGraphXYGraph在框图中使用了两个SineWaveform.vi,第一个所有输入参数(包括频率、幅值、相位等)t0、dtYXYGraphY数组,因此使用波形函数中的GetWaveformComponents函数分别提取出各自的Y数组然后再将他们在练习4-24.5强度图形控件(Intensity4.6数字波形图控件(DigitalWaveformGraph)二进制显示对象,显示了这些十进制数对应的二进制数,最右边是一个DigitalWaveform上向下读是00000001,而第二个数(序号1)00000010。DigitalDigitalWaveformNumberof1DigitalWaveformGraph,不必事先转化为二进制数。在送给DigitalWaveformGraph之前,需要经过一个(bundle函数。x0、deltxNumberofPortsNumberof4.73D图形显示控件(3D第四章字符串和文件4.1字符串字符串是ASCII字符的集合。如同其他语言一样,LabVIEW也提供了各种处理字符串的功Examples\General\strings.llb。下面扼要介绍一Controls»String&Table中看到右边练习4-1 SET5.5000本练习中输出字符串是一个GPIB(IEEE488)(RS-232或者RS-422)输输出字符%s%.4fFormatIntoString函数(Functions»String)——在本练习中,它StringLength函数(Functions»String)——在本练习中,它用于返回一VI。注意,FormatIntoString功能函数将两个字符串控制对象和数值控制对象组一个输出字符串。VIBuildString.viVIFormatIntoStringEditFormatString,可分别对个输入的各部分格式做设定。练习4-1结束。打开Examples\General\strings.llbParseString.viVI。注意,DC的字符串子集被用于输入字符串。还要注意,字符串的数值部分被提取出来,并转换为数值。您可以尝试使用不同的控制数值(记住数组式的字符串是从0开始进行或者StringSubst函数(Functions»String)——在本练习中,它用于返回偏移地址开始0。ScanFromString函数(Functions»String)——在这个例子中,它用于扫描字该函数从偏移地址的string处开始扫描。第一个字符的偏移地址是0。这个函数在已知头长度(本例中是VOLTSDC)时或者字符串只含有有效字符时很有用。练习4-2结束。4.2文件的输入/输出以移动、重命名文件与ASCIIASCII字节流——如果希望让其他的(譬如字处理程序或者电子表格程序)也可以数据,就需要将数据为ASCII格式。为此,您需要把所有数据都转换为ASCIIG语言可以的二进制格式。数据记录文件类似于数据库文件,因为它可以把不同的数据类型到同一个文件记录中。想获得关于文件I/O的例子,请参考Examples\File。4.2.1文件I/O大多数的文件I/O操作都包括三个基本的步骤:打开一个已有的文件或者新建一个文件;对文件进行读写;关闭文件。LabVIEWFunctions»FileIO中提供了很多有用的工文件I/O功能函数结合起来。WriteToSpreadsheetFileVI——用于将由单精度数值组成的一维或者二维数组ReadFromSpreadsheetFileVI——用于从某个文件的特定位置开始指定个WriteCharactersToFileVI——用于将一个字符串写入一个新建文件或者已有文件。该VI打开这个文件、写入数据,再关闭文件。ReadCharactersFromFileVI——用于从某个文件的特定位置开始指定个数的字符。该VI先打开文件,之后再关闭文件。ReadLinesFromFileVI——用于从某个文件的特定位置开始指定个数的行内容。该VI先打开文件,之后再关闭文件。I/OFunction»FileI/O»BinaryFileVIs或Function»FileI/O»AdvancedFileFunctions。将数据到文件的最常见应用之一是设置文本文件的格式以便在电子表格文件中打开它。大多数电子表格文件用Tab键分割各列,而用EOL(段尾如PlotPlotPlotPlottranspose?-0102030405060708090-0don'tWriteToSpreadsheetFileVI(Functions»FileI/O)用于将二维数组transpose?WaveformBuild返回前面板,执行该VI。数据数组产生以后,会出现一个文件框提示输入新建文件的文件名。输入文件名,并单击OK。VI为WaveformArraystoFile.viVI。现在可以用电子表格或者文本编辑器打开或者编辑刚才创建的文件。可以看到两列表格,每列含有100个元素。I/OVI。练习4-3练习4-4向文件添加数据温度appendtonewnew70.090.0,X020。appendtoForVIEmptyPath(Functions»FileI\O»FileConstants)——用于初始化移位DigitalThermometerVI(Functions»SelectaVI…)——返回一个模拟温WriteCharactersToFileVI((Functions»FileIO)——用于向文件写入Boolean常数(Functions»Boolean)用于将WriteCharactersToFileVI的appendtofile?输入为TRUE,工具单击这个常数可以将它设置为TRUE。返回前面板,把“数据点个数”设置为20,执行该VI。这时会出现一个文件框,提示输入文件名。输入文件名以后,VI就会在每个温度数据产生时,将它写入到该文VILabVIEW\ActivityWriteTemperaturetoFile.vi使用任意一个字处理,例如WriteforWindows,TeachTextforMacintosh,或容是20个用逗号分隔开的数值(准确到小数点后三位。练习4-4结束。练习4-5从文 数 9温温度ReadCharactersFromReadCharactersFromFileVI(Functions»FileO)—用于从文件中文件框提示您输入文件名。在这个例子中,无需判断需要的字符储方式。如果知道了文件的长度,就可以使用ReadCharactersFromFileVI指ExtractNumbersVI(Examples\General\strings.llb)——用于提取由逗ASCII返回前面板,执行该VI。将出现一个文件框,在其中选择刚才保存的数据文件,WriteTemperaturetoFileVIVI为TemperaturefromFile.vi,并关闭它。练习4-5结束。4.3数据记录文件(datalog 如果要用VI获得数据,您可能不想把数据写入到ASCII文件中,因为把数据和字符串WriteDatalogFile示例(位于Examples\File\datalog.llb)创建了一个新的数据记录文第六6.1概述6.1.1采样定理与抗混叠滤波器6.1.2系统的构成6.1.4信号调理AC:AlternatingCurrent,交流电流,泛指交DC:DirectCurrent,直流电流,泛指直流信号 og-to-DigitalConversion,模数变换,有时也表示为A/DDAQ:DataAcquisition,DMA:DirectMemoryAccess,直接内存 。它允许将的数据直接送给计算机的VISA:VirtualInstrumentStandardArchitecture,虚拟仪器 制GPIB、VXI、RS-232和其他类型仪器的接口库。5.2结存中的Buffer是 的中间环节。需要注意的两个问题是:是否使用Buffer?是5.2.1缓冲这里的缓冲指的是PC内存的一个区域(不是DAQ卡上的FIFO缓冲),它用来临时存放数据。例如,你需要每秒几千个数据,在一秒内显示或图形化所有数据是的。但是将卡的数据先送到Buffer,你就可以先将它们快速起来,稍后再重新找回它们显示或分析。需要注意的是Buffer与DAQ操作的速度及容量有关。如果你的卡有DMA性下列情况可以不使用Buffer5.2.2触发动/停止。硬件触发让板卡上的电路管理触发器,控制了DAQ事件的时间分配,有很高的精确度。硬件触发可进一步分为外部触发和触发。当某一模入通道发生一个指定“triggerout)用于触发特定的装置或仪器,在这里,就是DAQ5.3模拟I/O(ogI/O)5.3.1基本概念DAQVI自身独立于卡的类型,也就是说,如果你稍后使用了另一种卡,并且赋予它同样的设备号,你的VI程序可正常工作而无须修改。samples——表示一个A/D转换:它是一个点、一个与测量发生时的实际模拟量对应的通 通道通道 通道0到 waveform——是由一个通道得到的一组样本,若干周期或一定时间。通常,但不是必须,数据点之间的时间对给定的waveform是一个常数。一个通道的一个瞬时得到一个样本,waveform(由一个通道得highlimit和lowlimit——你期望的对信号的限制。输入信号变化的缺省值是10V到-10V,可以设置DAQ系统的增益,例如,对大多数卡,如果你将其设为5到-5V,则增益为2。如果你将其设为1到-1V,则增益为10。所以如果你知道你的输入信号与缺省值增益=卡输入范围/(|HighLimit|-|Low的,LabVIEW会自动将其调整到最近的预置值。典型卡所支持的增益值有taskID——一个32位的整数(I32DAQVII/O操作DAQVI需要接受一taskIDin并且返回一taskIDout给下一VI。你VI可以把这些信息传给taskIDout,它可以信息告诉别的需要设置的VI。后面将有例子说明5.3.2简单ogogVI返回到一个wareform数组。og的。更新速率(Updaterate)规定了两个点之间的时间。0.20.40.20.40.6 10练习5-1结束1通道1每通道样本
--PlotPlot00 Waveform实际scan3.面板上的graph上用快捷菜单选择TransposeArray。因为 Sample4.在框图上将起始时刻、实际采样周期和采样数据使用Bundle AcquireMultipleChannels.vi。练习 多通道I/O的一个重要限制必须说明。如果对它设置一个高scan速率,并且从每个通道 ch1scan5.3.3中级ogAISampleChannel,都必须为特定类型的测量设置硬件,告诉它采样率等。显然,如果你制采样率,使用外部触发,执行连续外部触发等。下面仔细描述它的各种VI,VI只需要关注你需要的端子。在大多数情况下,你不需要为在help中解释的端子的选项烦恼。ogAIConfigbufferAIStart启动带缓冲的模入操作。它控制速率,点的数目,及使用任何NumberofscanstoacquireVIAIConfigAIStartAIRead。当你设置一个模入应用时,首先使用的VI总是AIConfigAIConfig通道,并且在操作完成后输出一个taskID。因为taskID是一个输入并向另一个模入VI输出,所以该参数形成了DAQVI之间的一个关联数据。AOConfig对指定的通道设置模出操作,包括硬件、计算机内buffer的分配。常用的 AOWrite以电压数据的方式写数据到模出数据缓冲区。它是一个2维数组,其中每一NumberofbufferiteerationsAOClear功能。AOWait在返回之前一直等待直到波形发生任务完成。它的电压数据输出是由通道列表AOReadAOClear——清除模出操作、计算机中分配的缓冲、所有DAQ卡的资源,例如计当你设置一个模出应用时,首先使用的VI总是AOConfigAOConfig通道,并且在操作完成后输出一个taskID。因为taskID是一个输出并向另一个模出VI输出,所以该参数形成了DAQVI之间的一个关联数据。5.4采样注意事项5.4.1采样频率的选择(alias频偏差(aliasfrequency)是输入信号的频率和最靠近的采样率整数倍的差的绝对值。下图显示了这种现象。假设采样频率fs是100HZ,,再假设输入信号还含有频率为25Hz,70信号可以被正确采样。而频率高于奈奎斯特的信号采样时会发生畸变。例如,F1(25Hz)显示正确,而在分30Hz、40Hz10Hz的F2、F3F4发生了频率畸变。计算混频偏差F2=|100–70|=30HzF3|2*100160|40F4|5*100510|10b7/4f2f,那么转换后的波形具有正确的频率提高采样率以接近于原始信号。通过把采样率提高到足够大,例如fs=10f,或者每周期采样10次,就可以正确地复原波形,如例d所示。它通过了所有需要的输入频率(f1),并过滤了所有不需要的频率(f1。但所有低于f1的频率,并过滤所有高于f2的频率。f1和f2之间的区域被称为过渡带第六章信号处理与分析6.1概述绍数字信号处理的基本知识,并介绍由上百个数字信号处理和分析的VI构成的LabVIEW库LabVIEW程序语言在台式机上进行。这些用于测量的虚拟仪器是建立在计算出来的频谱是单边的(single_sided,Nyquist频率(二又可以连接到绘图VI以得到可视的显示。路的传递函数等等。另一些测量VI可以刻度时域窗和对功率和频率进行估算。LabVIEW的流程图编程方法和分析VI库的扩展工具箱使得的开发变得更加简单。LabVIEWVIVI,提供了最先进的数据分析技术。你子模板和Methematics子模板。这里主要涉及前者。进入Functions模板 yze》SignalProcessing子模板。:③.Frequency(频域分析⑤.DigitalFilters(数字滤波器IIR、FIR在后面几节中,你将学习如何使用分析库中的VI创建函数发生器和简单实用的频谱分线拟合功能,以及其他一些内容。可以在labview\examples\ysis 6.2LabVIEW6i中提供了波形函数,为制作函数发生器提供了方便。以VI会offset:波形的直流偏移量,缺省值为0.0。数据类型resetsignal:将波形相位重置为相位控制值且将时间标志置为0。缺省值为signaltype:产生的波形的类型,缺省值为正弦波。frequency:波形频率(Hz)10。amplitude:波形幅值,也称为峰值电压,缺省值为1.0。phase:波形的初始相位(单位度)缺省值为0.0..status:缺省值为FALSE,发生错误时变为TRUEcode:错误代码,缺省值为0 :在大多数情况下是产生错误的VI或函数的名称,缺省值samplinginfo:一个包括采样信息的簇。共有Fs和#s两个参dutycycle(%):占空比,对方波信号是反映一个周期内高低电平所占的比例,缺省值为50%signalout:信phaseout:波形的相位,单errorouterrorin指示一个错误,errorout包含同样的错误信息。否则,它描述该VI引起的错误状态。VIf,它的单位和标准频率的单位相同:周期数/每(fs/2就表示每半个周期采样一次(也就是每个周期采样两次1/2周期数/采样点,也就是0.5周期数/采样点。标准频率的倒数1/f表示一个周期内采样的次数。6.4数字信号处理6.4.1FFT2的幂时,就可以采用这种方法。FFTFFT输出采样点转换成单边FFT。FFT的采样点之间的频率间隔是,这里fs是采样频率。yze库中有两个可以进行FFTVI,分别是RealFFTVI和ComplexFFTVI。VIFFT,而后者用于计算复数信号大多数实际的信号都是实数,因此对于多数应用都使用RealFFTVI。当然也可以通过设置信号的虚部为0,使用ComplexFFTVI。使用ComplexFFTVI的一个实例是信FFT显示的频率分量的能量的方法是对频率分量的幅值平方。高级分析库中PowerSpectrumVI可以自动计算能量频谱。PowerSpectrumVIVrms2。但FFT和能量频谱可以用于测量或者动态信号的频率信息。FFT提供了信号在整个采0频率Y 4.选择频率(Hz)=10,采样率=100,样本数=100。执行该VI。注意这时的时域图10个周期。(55个周期)双边10Hz,90Hz,90Hz20(Hz,观察频率等于10和20时的时域波形。注意哪种情况下的波形显示更好,并解释原因。fs100Hz50Hz的信号(奈奎斯特频率=fs2。把48Hz,可以看到频谱图的波峰位于±48Hz。奈奎斯特频率,所以混频偏差等于|100–52|=48Hz。单边0频率Y2FFT0频率Y211.设置频率(Hz)=30,采样率=100,样本数100VI保存该VI为 练习6- 6.4.2窗函数x(t)T(采样时间或采样长度)截断,即有为有限化带来的问题。使得原来集中在f0上的能量分散到全部频率轴上。带没。③f0附近曲线过于平缓,无法准确确定f0的值。窗定Kaiser-Bessel下面的例子(LabVIEW6iSearchExamples>Fundamentals>ysisExamples>SignalProcessing>WindowsExamples>WindowComparison)是1000FFT之前不加窗,则频域特性中幅值较小正弦波形正弦波形频率40.0正弦波形WindowWindow频率40.0 频域特正弦波形1+正弦波形Tim--d0-------0102030405060708090 不同类型窗口函数在频域的效果。不使用窗口函数时,幅值较小的正弦波1被淹没。使用Hanning窗口函数后(Window2),幅值较小的正弦波1被发现。Hanni6.4.3谐波失真与频谱分析当一个含有单一频率(f1)x(t)通过一个非线性系统时,系统的输出不仅包含输入信号的频率(f1)分量(f2=2f1,f3=3f1,f4=4f1等等,谐波的数量以及它们
x3 0.5cos(wt 0.25[cos(wt cos(3wt幅值的关系。谐波失真是谐波分量的幅值和基波幅值的相对量。假如基波的幅值是A1,而二次谐波的幅值是A2,三次谐波的幅值是A3,四次谐波的幅值是A4。N次谐波的幅值是AN,总的谐波失真(THD)为:A A ...AA A2100 A A ...2%
AVI对输入信号进行完整的谐波分析,包括测定基波和谐波,返回基波频率和所有的谐波幅度电平,以及总的谐波失真度(THD。其部分参数含义如下:stopsearchatNyquist:如果TRUE(缺省T),则只包含低于Nyquist频率(采样频率的一半)的谐波。如果设置为FALSE,VINyquist范围之外的频率。signalin:输入信号。exportsignals:选择输出到信号指示器的信号。有如下几none——对快inputsignal——定时将输入信号反映到输出端;fundamentalsignal——在输出端反映基波;residualsignal——在输出端反映除基波之外的剩余信号;harmonicsonly——在输出端反映谐波时域信号及其频谱。highestharmonic:控制最高谐波成分,包括用于谐波分析的基波。例如,对于3次谐波分析,该控制将设置测量基波、2次谐波和3次谐波。.errorinVInoerror.status:缺省值为FALSE,发生错误时变为TRUEcode:错误代码,缺省值为0 :在大多数情况下是产生错误的VI或函数的名称,缺省值advancedsearch:控制频域搜索区域,中心频率及频带宽度。该功能用来确定信号的基波。approx.fund.freq.(optional)——用来搜索基波的中心频率的估算值。如果设置缺省值search(+/-%ofFsampl.)——用来搜索基波频率频带宽度,是采样率的百分比。exportedsignals:包含输出的时域信号及其频谱供选detectedfundamentalfrequency:探测在频域搜索得到的基波。用advancedsearch设置频THDRMS之和与基波幅值之比。为了折算为百分数,需要乘以100。componentslevel:测量谐波幅值的电平(单位伏组。该数组索引包括0(DC),1(基波),2(2次谐波),...n(n次谐波),直到最高谐波成分。measurementinfocluster:任何处理期间遭遇的预告uncer
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园演讲稿4篇范文
- 学生的实习报告范文集锦7篇
- 2024年个人住房抵押借款合同3篇
- 2024年二手名车赠予合同范本3篇
- 2024年环保设备生产与安装调试合同
- 2024年度商业房产买卖及增值服务合同3篇
- 2024版厂房拆迁补偿与城市可持续发展合作协议范本3篇
- 2024年水利水电工程施工协议
- 2024年度企业财务数字化转型咨询服务合同4篇
- 《TB8高强钛合金的强化机理及模型研究》
- 锤式破碎机使用说明书
- 2019.05.02缺表法测电阻练习
- 人教版小学数学六年级上册第一单元测验双向细目表
- 读《让儿童在问题中学数学》有感范文三篇
- 陈述句改成双重否定句(课堂PPT)
- 人教版六年级数学上册总复习教案
- 劳动合同法测试题含答案
- 自闭症儿童行为检核表学前版
- 五年级上册数学专项练习高的画法 全国通用
- 民警个人季度小结范文(3篇)
- 商场商户装修入驻工作流程
评论
0/150
提交评论