《虚拟仪器.ppt》由会员分享,可在线阅读,更多相关《虚拟仪器.ppt(88页珍藏版)》请在三一文库上搜索。
1、虚拟仪器,电子科技大学自动化学院 虚拟仪器课程组 02888013287 ,2.5 图形化数据显示,定义:由时间起始值X0、X值(两个点的刻度间隔)以及一维数组Y组合成的一个簇。 物理意义: (1)对被测的模拟信号,进行采样,A/D变换,采样率为fs,由时间起始值X0,采样时间间隔X=1/fs,数组Y为各个时刻的采样值。 (2)输出信号的波形数据:对一个要输出信号的波形理论值,以采样率为fs进行采样,得到时间起始值X0,采样时间间隔X=1/fs,数组Y为各个时刻的采样数据,送给D/A转换器转换成符合波形要求的信号输出。,波形数据,建立一个新波形和修改一个也存在波形。Builds a wavef
2、orm or modifies an existing waveform.,当输入波形端口不连线时,建立新波形。,波形数据函数,1 Get Waveform Components 2.Build Waveform 3.Get Waveform Attribute 4 Set Waveform Attribute 5 Waveform Operations 6 Waveform File I/O 7 Waveform Measurements 8 Waveform Generation,图形是以曲线来显示数据 常用的二维图形控件有波形Chart和波形Graph和XY Graph 可显示单条曲线和
3、显示多条曲线。 图形控件有很多特性,可以设置和修改,改变曲线显示的格式。,Chart,XY Graph,Graph,Digital Waveform Graph,2.5.1 Waveform Chart,1Waveform Chart的使用 实时趋势图控件 逐点(或者一次多个点)显示 有一个缓冲区 ,长度可设置 三种更新模式: Strip Chart Scope Chart Sweep Chart,绘制单曲线时 ,可接受两种数据格式:分别是标量数据和数组。 当输入标量,每次推进一个点; 当输入数组,每次推进的点数等于数组长度。 当绘制多曲线时,也可接受两种数据格式: 第一种:将每条曲线的一个新
4、数据点(数值类型)打包成簇,然后输入到波形Chart中,这时波形Chart将所有曲线同时推进一个点; 第二种: 将每条曲线的一个数据点打包成簇,若干个这样的簇作为元素构建数组,再把数组传送到波形Chart中。数组中的元素个数决定了绘制Chart每次数据的长度。在这种数据格式下,波形Chart将所有曲线推进多个点。,2Waveform Chart所包含的组件及其功能,Waveform Chart包含的组件和功能 (1) 标签(Label) 对象的标识,在程序中通过对象的标签实现对对象的访问。 (2) 标题(Caption) 对象的名称,默认情况下和对象的标签相同。 (3) 纵坐标(Y Scale
5、) 默认标签是Amplitude,可用标签工具修改。刻度同样可用标签工具进行修改。,右击Waveform Chart,选择Y Scale Formatting,可设置数据的格式和精度。例如设置是以浮点数还是以科学计数法显示数据,小数点位数是几位等。,选择Y Scale Style,可设置刻度数据的显示格式,style子菜单给出了9 种刻度风格,可以选择是否显示主刻度和副刻度数字及刻度线。 Mapping子菜单设定刻度的映射方式:线性(linear)关系,对数(logarithmic)关系。 AutoScaleY :自动缩放,(4) 横坐标X Scale 默认标签是Time,设置方法和纵坐标类似
6、。 (5) 刻度图例Scale Legend,刻度回到固定值状态,锁定了自动比例状态,单击 ,弹出快捷菜单,可对刻度显示格式、数据精度、显示方式、刻度及其标签是否可见等进行设置或修改,(6) 横坐标滚动条X Scrollbar (7) 图形操作面板Graph Palette 3个按钮,切换两种观察模式,单击中间按钮,出现,将一个矩形区域放大,将两条纵线间的区域放大,将两条横线间的区域放大,恢复图形原有比例,以一个点为中心放大,以一个点为中心缩小,(8)数字显示Digital Display 显示波形数据最新的一个数据点的幅值 (9)绘图图例Plot Legend 显示绘图区中每条曲线的样式 ,
7、单击 出现快捷菜单,可设置、修改曲线的线形、线宽、颜色、显示方式。,(10)绘图区 绘图区是显示波形的区域。可以通过Waveform Chart的属性对话框对其属性进行详细的设置。,2.5.2 Waveform Graph,1Waveform Graph的使用 事后处理 一次性显示以前的所有数据 等时间间隔地显示数据点 每一时刻只有一个数据值,类似单值函数 可绘制一条或多条曲线,数据组织格式不同,绘制单曲线时,可接受两种数据格式: (1)连接一维数组 (2)连接簇数据类型 当绘制多条曲线时,可接受如下数据格式: (1)连接二维数组 (2)连接一个簇 (3)把数组打包成簇,然后以簇作为元素组成簇
8、数组 (4)在由数值类型元素Xo,dX以及以簇为元素的数组这3 个元素组成的簇中,数组元素的每一个簇元素都由一个数组打包而成,每个数组都是一条曲线 (5)连接由簇作为元素的二维簇数组,2Waveform Graph包含的组件及其功能,Graph的大部分功能和Chart是相似的 不同之处在于Graph没有提供数值显示工具,却提供了游标图例(Cursor Legend)工具 利用游标图例工具可以用来读取Waveform Graph上某一点的确切坐标值。 游标图例元素介绍如下: 游标名称 、 游标横坐标、游标纵坐标 、移动控制按钮、显示控制按钮、锁定控制按钮、游标移动器,2.5.3 XY Graph
9、和Express XY Graph,不要求横坐标等间隔分布,而且允许绘制一对多的映射关系 输入数据需要包含两个一维数组,包括数据点的横坐标和纵坐标值,例如:分别用XY Graph和Express XY Graph输出一个圆 。,前面板,2.5.4 Digital Waveform Graph,显示数字信号 每路信号只有0和1两个取值,其余元素的设置方法和Waveform Chart以及Waveform Graph相似。,例:8路数字信号,每路信号经历7个时钟周期,2.5.5三维图形示波,除了二维图形示波的函数和VI,LabVIEW也提供了用于三维图形的控件,如强度图函数Intensity Ch
10、art 和Intensity Graph 、三维表面函数 3D Surface Graph 、三维参数函数 3D Surface Graph 。下面分别详细介绍这几种函数。 (1)Iintensity Chart 一个二维数组来存储Z坐标数据,X坐标和Y坐标分别为每个数据点的索引值。,在默认的情况下,二维数组的每一行对应强度图的每一列。 如果想要改变这种关系,可以在控件上面单击鼠标右键,选择Transpose Array。 每个数据点的颜色是可以任意改变的,方法是在控件的z坐标颜色梯度线上单击鼠标右键,在弹出的快捷菜单中选择 Marker SpacingArbitrary。 然后再次在颜色梯度
11、线上单击鼠标右键,在弹出的快捷菜单中选择“Add Marker”选项。 在出现的刻度上单击鼠标右键,选择“Marker Color”选项,然后在弹出的颜色对话框中选择颜色即可。,Intensity Chart 的用法,(2)Intensity Graph Intensity Chart逐点显示数据,每当新的数据到来时,自动将旧数据向前移动; 而Intensity Graph则显示一段数据,当一段新的数据到达时自动刷新原有的旧数据。 (3)3D Surface Graph 2个对象3DSurfaceGraph和3D SurfaceVi 3个关键输入数据端口x vector、y ve ctor和2
12、 matrix,(4)3D Parametric Graph 3D Parametric Graph用来绘制一些比较复杂的空间图形。 下图是用3D Parametric Graph绘制的空间图形。在使用3D Parametric Surfacevi时,需要将生成空间图形的3个二维数组分别和3D Parametric Surfacevi的x matrix、ymatrix及z matrix连接。,(5)3D Curve Graph 绘制空间曲线。 当将3DCurveGraph放置在前面板时,在后面板自动出现2个对象,即3D Curve Graph和3D Surfacevi。 这个VI的3个关键参数
13、,即x vector、y vector和z vector,分别代表空间曲线在X、Y、Z平面的投影。,2.5.6 其它图形的表达与显示,LabVIEW还提供了对极坐标图、雷达图以及图片等多种图形表达和显示方式的支持。 在这个模板中最常用的一个函数是对图片进行显示的函数Picture,它的图标是,用于其他图形显示的子模板,LabVIEW提供了强大的基于像素级别的图像处理功能,可以用于对图像的读取、处理和显示,也可以按照用户的需求用简单的点、线、面等元素绘图。 LabVIEW提供了强大的基于像素级别的图像处理功能,可以用于对图像的读取、处理和显示,也可以按照用户的需求用简单的点、线、面等元素绘图。,
14、习题:2.5,1.创建一个程序,分别用Chart和Graph来表示随机数产生的曲线。 2. 绘制:一个由恒星、行星、以及行星围绕恒星运行的轨道系统。 3. 创建一个程序,此程序可以获得波形数据中的最后一个数据的时刻,获得波形数据中波形延续的时间,改变波形数据的时间间隔。,参考答案,第1题,第2题,第3题,2.6 文件操作,2.6.1基本文件类型 支持3种格式用于文件的输入和输出,即文本文件、二进制文件和数据记录文件。 其中,电子表格文件是一种特殊类型的文本文件;数据记录文件中又包含一种被称为波形文件的文件格式。下面分别简要介绍这几种文件格式。,(1)文本文件 优点 :通用性强,即文件的内容可以
15、被Microsoft Word、Microsoft Excel甚至Windows自带的记事本等应用程序直接读取 。 缺点: 第一,用这种格式存储的文件占用空间比较大,存取的速度相对比较慢; 第二,用这种格式保存和读取文件的时候需要进行文件格式转换,因而需要花费额外的时间; 第三,不能随机地访问其中的某个数据,,(2)电子表格文件 仍然以ASCII码格式来存储数据,使Microsoft Excel等电子表格处理软件能直接读取这类数据文件 (3)二进制文件 存取速度最快、格式最为紧凑、冗余数据少 占用的空间要比文本文件小得多 不需要进行格式转换 无法被一般的字处理软件如Word读取,通用性较差。,
16、(4)数据记录文件 一种二进制文件 它把数据组织为具有相同结构的记录,每一行为一个记录,每个记录都具有相同的数据结构。LabVIEW把每一个记录作为一个簇写入文件 。 (5)波形文件 波形文件是一种特殊的数据记录文件,它记录了波形数据特有的一些信息,如波形的起始时间、采样的间隔时间等。,2.6.2文件I/O函数 LabVIEW的文件输入输出操作包括三个基本步骤: 打开一个已存在的文件或创建一个新文件; 对文件的读或写操作; 关闭打开的文件。 LabVIEW的文件操作还包括文件或路径的改名与移动、改变文件特征、创建、修改和读取系统设置文件、记录前面板对象数据。,LabVIEW提供的文件输入输出函
17、数位于函数模板的File I/0子模板和Waveform Waveform File I/O子模板中,分别被用于数据文件和波形文件存取,,文件I/O函数子模板,波形文件I/O子模块,高层文件函数位于File I/O子模板的第一行,其中包括一个Binary File VIs的子模板,共有九个高层文件函数。 高层文件函数实际上是用低层文件函数构成的VI程序 波形文件函数也类似高层文件函数。 低层文件函数位于File I/O子模板的第二行。每个低层函数只负责完成文件操作中的一个步骤。低层函数可以控制文件I/O的每一步操作。 高级文件函数位于File I/O子模板的第三行中的Advanced File
18、 Functions子模板中,是文件I/O的底层函数。,高层文件函数,高层文件函数,波形文件函数,低层文件函数,其它文件函数,1高层文件函数说明 (1)Write To Spreadsheet File VI 该函数可以把二维或一维数值型数组转换成文本字符串,并将此字符串写入一个新文件或添加到一个已存在的文件中。,Write To Spreadsheet File VI,其输入输出参数的说明如下: format:指明由数值到字符串的转换格式。 file path:指明写入文件的路径。 1D/2Ddata:一维或二维数组的输入数据。 append to file?:是否在原文件数据后追加写入数据
19、。如果为TRUE,且原文件已经存在,则在原文件的数据之后追加数据。如果为FALSE (缺省),则覆盖原文件数据。 new file path:返回文件的路径,即file path指明写入文件的路径。,(2)Read From Spreadsheet File VI 该函数可以打开一个电子表格文件,从指定位置开始,读出指定数目的行或列,并将此字符数据转换成一个二维的单精度数字数组,读完后关闭文件。 其参数说明如下:,Read From Spreadsheet File VI,输入参数: format:指明由数值到字符串的转换格式,默认格式为“.3f“ file path:指明读取文件的路径。 n
20、umber of rows:指定VI读取文件的行数。 start of read offset:读取数据的初始位置。 transpose:为TRUE时,读取返回的二维数组转置。,输出参数: new file path:返回已经读取数据的文件路径。 all rows:从文件里读取的数据,返回的是一个二维数组类型。 first row:输出返回二维数组的第一行的一维数组。 mark after read:返回读取完毕后文件标志所在的位置。它指向最后一个读出字符紧邻的下一个字节处。,(3)Write Characters To File VI 该函数可以把一个字符串写入一个新文件或添加到一个已存在的
21、文本文件中。在写入文件之前,打开或创建文件;写入之后,关闭该文件。,Write Characters To File VI,(4)Read Characters From File VI 该函数可以打开一个文件,并从指定位置开始读取指定数目的字符,读完后输出字符串并关闭文件。如果 number of characters为一1就读取整个文件的数据。,Read Characters From File VI,(5)Read Lines From File VI 该函数可以打开一个文本文件,从指定的位置开始,读取指定数目的行,并转换成一个字符串输出。读完后关闭文件。 如果 number of ch
22、aracters为一1就读取整个文件的数据。输出参数中的line string为读取的字符串。,Read Lines From File VI,2低层文件函数 (1)Open/Create/Replace File VI,该函数可以用来打开或替换一个已存在的文件,也可创建一个新文件。error in和error out端口用于传递错误信息簇。,输入参数: prompt:用于输入在打开的文件对话框标题栏中显示标题名称。 file path:用于指定被操作文件的路径和文件名。 function:用于选择该函数的操作类型。 取值为0(默认值):打开一个已经存在的文件; 取值为1:文件存在,则打开;不
23、存在,则创建; 取值为2:文件存在则覆盖;不存在,则创建; 取值为3:创建一个新文件。 default name:初始目录或文件的名称。 advisory dialog?:如果为TRUE,则当出现操作错误或在文件被覆盖前,都会出现提示对话框警告。,输出参数: refnum:传递被操作文件的标识号,告诉后面的函数要对哪个文件进行操作。 new file path:输出操作文件的路径。 file size:己经打开的文件的大小,单位为字节。,(2)Read File VI,该函数可以从refnum端口指定的文件中读取数据: pos mode和pos offset端口指定读取字符的起始位置。 dat
24、a端口把读取的数据输出。,count和line mode端口决定了读取的数据量。 读取文本数据时,当count参数值大于0时,读取数据量与参数line mode无关。 count没连线或其值为零时,如line mode为TURE,读取数据量为直到遇到一个行结束符或文件结束符,如line mode为FALSE,不读数或读取数据量为0。 pos mode和pos offset端口指定读取字符的起始位置。 如果用户连接了pos offset参数,而pos mode为默认值0,此时pos offset是相对于文件开始处的偏移量,pos offset应为正数。 如果用户连接了pos offset,而po
25、s mode值为1,此时pos offset是相对于文件结束处的偏移量,pos offset应为负数。,Write File VI,该函数可以向refnum端口指定的文件中写入数据,从pos mode和pos offset端口指定的位置开始写入,data端口连接将要写入的数据。,(3)Write File VI,(4)Close File VI,Close File VI,该函数关闭refnum端口指定的文件。,2.6.3文本文件的输入输出,1.文本文件的输入 在保存文本文件前,首先要将数据转换为字符串,然后再用相关的函数将字符串写入到文件中。,文件存放在D盘,如果没有名为filel.dat的
26、文件,就新建一个文件,若文件已存在,则在原文件数据后追加新的数据。,数值转化为字符串,(1)用高层函数将数据保存成文本文件,运行这个程序后,会发现在D盘的根目录下已经生成了名为testl.txt的文件。 由于Write Characters To File在每次循环都要打开一次文件、写入数据、关闭文件,使得程序运行效率降低,当需要写入文件的数据量很大时,这种方法效率低。 下面介绍的用低层函数存储文本数据的方法则可以提高程序运行效率。,读取For循环中用随机数函数产生的数值,新建一个文件,(2)用低层函数保存文本文件,2. 文本文件的输出 (1)用高层函数读取文本文件 Read Characte
27、rs From File VI有3个关键的数据输入、 输出端口: file path用于指定读取文件的路径 number of characters读取数据的点数 start of read offset开始读取文件的位置。,(2)用低层函数读取文本文件 OpenCreateReplace File VI打开文件后,返回的文件大小参数file size连接到Read File的count参数端口,完成了读取文件全部内容的操作。最后用Close File函数关闭文件。,2.6.4 电子表格文件的输入输出 1电子表格文件的输入 (1)用高层函数写电子表格文件 将循环的序号和产生的随机数数据组成一个
28、数组,并将其存储为文件名为“d:test1.xls”一个电子表格文件。运行程序后可以在D盘的根目录下找到文件 test1.xls,可以直接用Excel打开,可以发现有两列数据,分别是序号和随机数数据。,框图程序创建的文本文件如下所示: 0 0.706493 3 0.709277 1 0.826553 4 0.200348 2 0.832821,(2)用低层函数写电子表格文件,使用电子表格软件(如Excel)打开上例生成的文本文件。,2.电子表格文件的输出 使用Read From Spreadsheet File函数读取电子表格文件,在指定了读取文件的路径和读取数据的列数后,VI可以读取电子表格
29、文件中的数据。 参数端口number of rows连接-1,表明读取文件中的全部数据。,2.6.5二进制文件的输入和输出,在LabVIEW函数模板中的文件IO子模板中单独设有一个二进制文件输入输出子模 板,里面有4个用于二进制文件输入输出的函数,分别用于16位整型数据和单精度浮点数的读写。 低层函数中的Write File和Read File的输入数据可以是多种类型,因此既可以用这些函数进行文本文件的读写,又可以进行二进制文件的输入和输出。,1二进制文件的输入 (1)用Write To SGL File VI写二进制文件 Sine Wave 函数产生128点正弦波数据,以一维数组的形式输出到
30、Write To SGL File VI的1D array数据端口,保存为二进制文件。 1D array数据端口的数据类型为SGL,Sine Wave函数输出为DBL数据类型,连接时LabVIEW自动完成数据类型的强制转换。,用Write To SGL File VI写二进制文件,(2)用低层函数实现二进制文件的输入 这个示例中存入文件的数据没有转化为字符串,而是直接以数值格式存入了文件,因而保存为二进制文件类型。,2. 二进制文件的输出 (1)用Read From SGL File VI读二进制文件 下图用Read From SGL File VI读取文件单精度浮点数的一维数组方法。当读取二
31、维数组时应该连接二维数组行数端口2D number ofrows。读取数据的点数端口为1表示读取整个文件数据。,用Read From SGL File VI读二进制文件,(2)用低层函数实现二进制文件的输出 OpenCreateReplace File VI打开指定文件并返回一个用字节表示文件大小的参数file size。 文件d:test1.dat的数据类型是单精度,由于LabVIEW用4个字节存储一个单精度数据,因而,用文件大小除以4得到的整数部分是文件中包含单精度数据的个数,这个数据送给Read File函数的count端口。 Read File函数的byte stream type参数
32、端口指定函数读取数据的类型,该端口连接了一个单精度的数值,表示函数按照单精度的数据类型读取数据。,2.6.6 数据记录文件的输入输出,LabVIEW提供了一种被称为数据记录(datalog)类型的文件格式来解决存储不同类型数据的问题。数据记录文件中的每个记录实际是一个簇,或者说是以簇为单位来存储数据的。下图所示的簇就是一个数据记录。,保存为一个数据录文件。程序调用了高级文件操作函数New File来创建一个新文件。 当这个函数的数据记录类型datalog type参数端口连接一个值的时候,它就产生一个数据记录文件。,数据记录文件的输入,高级文件操作函数Open File用来打开一个文件。 当这
33、个函数的数据记录类型参数datalog type连接一个值的时候,它就打开一个数据记录文件。 如果datalog type参数的数据类型与数据记录文件中的数据类型不匹配时,程序运行时不能读出数据,并返回一个数据类型冲突的出错信息。,数据记录文件的输出,习题:2.6,1.打开一个文件,读取数据,然后关闭文件。 2.在一个新文件或已存在的文件中存储数据。打开一个文件,在文件中写入数据,关闭文件。,3.设计一个VI来测量温度(保留2位小数),每隔0.25秒测一次,共测定10秒。在数据采集过程中,VI将在波形Chart上实时地显示测量结果。采集过程结束后,在Graph上画出温度数据曲线,并且把测量的温度值以文件的形式存盘, 使用记事本打开文件检查结果是否正确。 存盘格式为: 点数 时间(S) 温度值(度) 1 0.25 78.56 2 0.50 85.32,参考答案,第1题,第2题,第3题,
链接地址:https://www.31doc.com/p-3306538.html