第三章lAB VIEW 数组、簇和图形1
- 格式:doc
- 大小:466.00 KB
- 文档页数:15
实验2 LabVIEW图形、数组、簇编程实验(设计型)1.实验目的(1)学习如何创建数组和簇,掌握它们的区别以及相应的操作。
(2)学习并掌握波形图和波形图表的使用,了解它们的区别。
2.实验设备安装有LabVIEW8.2的计算机3.实验内容(1)利用For循环建立一个一维数组并给出数组中的元素个数;建立一个二维数组给出数组中元素个数,并求出二维数组中元素的最大值、最小值。
(2)产生两个一维数组,分别组成一个二维数组和一个簇,然后用波形图显示二维数组,用XY图显示簇。
(3)设计一个VI来测量温度,每隔0.25秒测一次,共测定10秒,温度范围为0~100度。
在数据采集过程中,VI将在波形图表上实时地显示测量结果。
在采集过程结束后,在波形图上画出数据波形曲线,并算出温度的最大值,最小值和平均值。
4.实验原理(1)数组数组是一些具有相同类型的元素组成的集合。
数组包含两方面的内容:元素和维数。
数组中的元素可以是数字、布尔、字符、路径、波形和簇等数据类型。
(2)簇簇相当于一个容器,容器中的元素可以是各种不同的数据类型。
也就是说,可以在一个簇中放置控制选板上的各种控件,如数字控件、布尔控件、数组控件等,但是不能将输入控件和输出控件同时放入其中。
(3)图形子选板LabVIEW8.2的图形子选板提供了完成各种图形显示功能的控件。
按照处理测量数据的方式和显示过程的不同,图形显示控件主要分成两大类,一类为图形,另一类称为图表。
这两类控件都是用于图形化显示采集或生成的数据。
图形和图表的区别在于各自不同的数据显示和更新方式。
含有图形的VI通常先将数据采集到数组中,再将数据绘制到图形中。
该过程类似于电子表格,即先存储数据再生成数据的曲线。
数据绘制到图形上时,图形不显示之前绘制的数据而只显示当前的新数据。
图形一般用于连续采集数据的快速过程。
与图形相反,图表将新的数据点追加到已显示的数据点上以形成历史记录。
在图表中,可结合先前采集到的数据查看当前读数或测量值。
《 LabVIEW及仿真》课程实验指导书段金英编西京学院机电工程系2014 年 2 月前言 (1)实验一Labview的认识性实验(2学时) (2)实验二Labview的基本操作(2学时) (4)实验三数据操作实验(2学时) (7)实验四labview结构在编程中的应用(6学时) (11)实验五labview中字符串、数组、簇的实验(4学时) (18)实验六图表和图形实验(4学时) (26)实验七专业测试系统的搭建实验(2学时) (31)实验八创建子VI(2学时) (36)实验九人机界面交互设计实验(2学时) (39)实验十波形编辑及频谱分析实验(4学时) (43)实验十一基于声卡的数据采集系统(2学时) (45)主要参考文献 (52)虚拟仪器设计是计算机科学与技术的一个前沿学科,它也是一个综合性的学科。
《LabVIEW及仿真》为测控技术与仪器专业的一门选修课,其目的是使学生初步了解虚拟仪器设计的基本原理,初步学习和掌握虚拟仪器的基本技术,以便拓宽知识面,并为进一步学习和应用奠定基础。
本书包括11个实验项目,共32学时。
适合自动化与测控技术与仪器专业的学生使用。
实验一 Labview的认识性实验(2学时)一、实验目的1、熟悉Labview的基本组件2、熟悉Labview的前面板、程序框图、快捷和下拉菜单3、掌握Labview的选项板及在线帮助二、仪器、设备1、WINDOWS2000仪器、设备(将显示属性中的分辨率设置为1024*768)2、Labview8.2软件三、内容与步骤:[练习1] 启动Labview,查找Labview示例步骤:1.打开文件VibrationAnalysis.vi(c:/ProgramFiles/National Instruments/LabVIEW 8.2/examples/apps/demos.llb)2.单击按钮Run运行该程序3.改变采样速率4.改变采样速度,验证希望速度与实际速度是否一致[练习2] 熟悉前面板与程序框图的切换及观察程序流的执行过程1.在练习1的基础上,利用快捷方式将前面板切换到程序框图。
labwiew课程设计一、课程目标知识目标:1. 让学生掌握LabVIEW编程基础,包括数据类型、结构、控件的使用和编程逻辑。
2. 使学生了解LabVIEW在科学数据采集与处理中的应用。
3. 帮助学生理解虚拟仪器概念,掌握通过LabVIEW创建虚拟仪器的方法。
技能目标:1. 培养学生运用LabVIEW进行数据采集、分析、处理的能力。
2. 培养学生通过LabVIEW解决实际问题的编程能力。
3. 提高学生团队协作、沟通表达的能力,能够共同完成一个简单的虚拟仪器项目。
情感态度价值观目标:1. 培养学生对LabVIEW编程的兴趣,激发学习热情。
2. 培养学生具有创新意识和实践精神,敢于尝试新方法解决问题。
3. 培养学生严谨的科学态度,注重实验数据的真实性和准确性。
课程性质:本课程为实践性较强的学科,结合实际操作,使学生掌握LabVIEW 编程技能。
学生特点:学生具备一定的计算机操作基础,对编程有一定了解,但LabVIEW 编程技能尚需培养。
教学要求:结合LabVIEW教材,以实践操作为主,注重培养学生的实际编程能力,将理论知识与实际应用相结合。
在教学过程中,关注学生的个体差异,提供个性化的指导。
通过课程学习,使学生能够达到上述课程目标,为后续相关课程和实际应用打下坚实基础。
二、教学内容本课程教学内容围绕以下几方面展开:1. LabVIEW基本概念与操作环境:介绍LabVIEW的基本组成、操作界面及常用工具,使学生熟悉LabVIEW编程环境。
教材章节:第一章 LabVIEW概述2. 数据类型与控件:讲解LabVIEW中的基本数据类型、控件使用方法,以及数据类型的转换。
教材章节:第二章 数据类型与控件3. 程序框图设计:教授程序框图的基本构成、节点、连线等概念,培养学生设计程序框图的能力。
教材章节:第三章 程序框图设计4. 数据采集与处理:介绍数据采集卡的使用、数据采集与处理的基本方法,以及相关函数和子VI。
实验1 LabVIEW编程环境与基本操作实验一、实验目的●了解LabVIEW8的编程环境;●掌握LabVIEW的基本操作方法,并编制简单的程序;●学习建立子程序的过程。
二、实验设备安装有LabVIEW8的计算机。
三、LabVIEW介绍LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工作平台)是美国NI(National Instrument)公司推出的一种基于G语言(Graphics Language,图形化编程语言)的虚拟仪器软件开发工具,是目前国际上应用最广的虚拟仪器开发环境之一,主要应用于仪器控制、数据采集、数据分析、数据显示等领域,并适用于Windows、Macintosh、UNIX等多种操作系统平台。
与传统程序语言不同,LabVIEW采用强大的图形化语言(G语言)编程,面向测试工程师而非专业程序员,编程方便,人机交互界面直观、友好。
设计者可以象搭积木一样,轻松组建一个测量系统和构造自己的仪器面板,而无需进行任何繁琐的计算机代码的编写。
LabV1EW软件工具的特点可归纳为:●图形化的编程方式,设计者无须写任何文本格式的代码,是真正的工程师的语言。
●提供了丰富的数据采集、分析及存储的库函数。
●提供了传统的程序调试手段,如设置断点、单步运行,同时提供了独到的高亮执行工具,使程序动画式运行,利于设计者观察程序运行的细节,使程序的调试和开发更为便捷。
●32位的编译器编译生成32位的编译程序,保证用户数据采集、测试和测量方案的高速执行。
●囊括了DAQ、GPIB、PXI、VXI、RS-232/485在内的各种仪器通信总线标准的所有功能函数,让不懂总线标准的开发者也能够驱动不同总线标准接口设备与仪器。
●提供大量与外部代码或软件进行连接的机制,如DLL(动态链接库)、DDE、ActiveX等。
●强大的Internet功能,支持常用网络协议,方便网络、远程测控仪器的开发。
数据类型:数组、簇和波形.1概述数组是同类型元素的集合。
一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。
可以通过数组索引访问其中的每个元素。
索引的范围是0到n – 1,其中n是数组中元素的个数。
图3-1所显示的是由数值构成的一维数组。
注意第一个元素的索引号为0,第二个是1,依此类推。
数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。
图3-1数组示意图簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。
它类似于C语言中的stuct。
使用簇可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度。
减少子VI的连接端子的数量。
波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。
3.2数组的创建及自动索引3.2.1创建数组一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(如果需要用一个数组作为程序的数据源,可以选择Functions»Array»Array Constant,将它放置在流程图中。
然后再在数组框中放置数值常量、布尔数还是字符串常量。
下图显示了在数组框放入字符串常量数组的例子。
左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。
图3-1数组的创建在前面板中创建数组的方法是,从Controls模板中选择Array & Cluster,把数组放置在前面板中,然后选择一个对象(例如数值常量)插入到数组框中。
这样就创建了一个数值数组。
也可以直接在前面板中创建数组和相应的控制对象,然它们复制或者拖曳到流程图中,创建对应的常数。
还有很多在流程图中创建和初始化数组的方法,有些功能函数也可以生成数组。
3.2.2数组控制对象、常数对象和显示对象通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。
【LabVIEW】数组与簇的使⽤
获取未知⼆维数组的⾏数:
⼆、簇
簇控件在LabVIEW 中的作⽤就类似于C语⾔中的结构体变量。
它能包含任意数⽬任意类型的元素,甚⾄包括数组和簇。
簇可以同时包含多种不同类型的元素,⽽且簇中的元素控件的位置可以随意独⽴地通过拖动改变。
1、按名称解除绑定函数
功能:返回指定名称的簇元素。
连线簇⾄该函数后,可在函数中选择单独的元素。
该函数可以根据名称有选择地输出簇内部元素。
其中元素名称就是指元素的标签。
注意:如果有事件结构,解绑簇时簇的局部变量要放在事件结构⾥才有效。
2、按名称捆绑函数
功能:该函数通过簇内部元素名称来给簇内部元素陚值,因此参考族(输⼊簇)是必须的。
该函数通过参考簇来获得元素名称。
参考簇必须与输出的簇完全相同,可以直接右击需要陚值的簇,选择 “创建”——>“常量” 选项来创建⼀个与输出簇完全相同的常量簇作为参考簇。
3、获取簇中的控件引⽤
编程--应⽤程序控制--Vi服务器引⽤--到-程序框图;
右击本VI——链接⾄——窗格——簇——选要添加引⽤的控件
4、按名称捆绑时,连接到显⽰簇后提⽰错误:已连接两个包含不同内容的簇
1、右击显⽰簇——创建——常量,创建参考簇;
2、把⾃动产⽣的显⽰簇到参考簇的连接线删掉;
3、拖⼊捆绑函数;
4、从参考簇引出接线到捆绑函数(如果是从捆绑函数引出接线到参考簇就报错!⽆语⼦)
5、从捆绑函数引出接线到显⽰簇上。
此时接线正确,可以看到函数⾥正确显⽰出元素名称。
第三章数据类型:数组、簇和波形3.1概述数组是同类型元素的集合。
一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。
可以通过数组索引访问其中的每个元素。
索引的范围是0到n – 1,其中n是数组中元素的个数。
图3-1所显示的是由数值构成的一维数组。
注意第一个元素的索引号为0,第二个是1,依此类推。
数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。
图3-1数组示意图簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。
它类似于C语言中的stuct。
使用簇可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度。
减少子VI的连接端子的数量。
波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。
3.2数组的创建及自动索引3.2.1创建数组一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。
如果需要用一个数组作为程序的数据源,可以选择Functions»Array»Array Constant,将它放置在流程图中。
然后再在数组框中放置数值常量、布尔数还是字符串常量。
下图显示了在数组框放入字符串常量数组的例子。
左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。
图3-1数组的创建在前面板中创建数组的方法是,从Controls模板中选择Array & Cluster,把数组放置在前面板中,然后选择一个对象(例如数值常量)插入到数组框中。
这样就创建了一个数值数组。
也可以直接在前面板中创建数组和相应的控制对象,然后将它们复制或者拖曳到流程图中,创建对应的常数。
还有很多在流程图中创建和初始化数组的方法,有些功能函数也可以生成数组。
3.2.2数组控制对象、常数对象和显示对象通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。
数组元素不能是数组、图表或者图形。
如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。
3.2.3自动索引For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。
这些功能称为自动索引。
在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。
循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。
在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。
在默认情况下,对于每个连接到For循环的数组都会执行自动索引功能。
可以禁止这个功能的执行,方法是用鼠标右键单击通道(输入数组进入循环的位置),在快捷菜单中选择DisableIndexing。
练习3-1创建一个自动索引的数组目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。
前面板图3-2练习3-1的面板1.打开一个新的前面板。
2.选择Controls»Array & Cluster,在前面板中放置一个数组。
设置它的标签为Waveform Array。
3.选择Controls»Numeric,在数组框中插入一个数字式显示对象。
如右图所示。
它用于显示数组的内容。
4.选择Controls»Graph,在前面板中放置一个波形图。
设置它的标签为Waveform Graph。
5.隐藏图例和模板。
6.用鼠标右键单击图形,并在快捷菜单中取消选中YScale»Autoscale Y,禁止自动坐标功能。
7.使用文本工具,把Y轴的范围改为-0.5到1.5。
流程图8.按照下图创建流程图。
图3-2练习3-1的流程图●由Functions»Select a VI…寻找LabVIEW\activity目录下的Generate WaveformVI,它的作用是返回波形中的某一点。
这个VI需要输入一个索引,我们将循环周期连接到这个输入。
●注意Generate Waveform VI连出来的连线在循环边界变成一个数组时会变粗,正是在这个边界处形成了一维数组。
●For循环会自动累计边界内的数组。
这种功能叫做自动索引。
在这个例子中,连接到循环计数输入的数值常数令For循环创建了一个由100个元素组成的数组。
●Bundle函数(Functions» Cluster)——将图块中的各个组件组合成一个簇,在正确连接以前需要改变该函数的图标的大小。
将移位工具放在图标的左下角。
变形工具会变成如左图所示,拖曳鼠标直到出现第三个输入端子。
●数值常数(Functions»Numeric)——三个数值常数用于设置For循环执行的周期数N=100,初始X=0和delta X=1。
9.从前面板执行该VI。
该VI将把自动索引后的波形图数组显示在波形图中。
10.把 X的delta值改为0.5,X的初始值改为20。
再次执行该VI。
注意,波形图现在同样显示100个点,而每个点的初始值为20,X的delta值为0.5(见X轴)。
11.只需在显示器中输入元素的索引号就可以查看波形数组中的任何元素。
如果输入的数比数组的元素个数大,那么显示器将变暗,表示您没有为该元素设置索引。
如果需要一次查看多个元素,可以通过改变数组显示对象的大小来实现。
把定位工具放置在数组框的右下角。
工具将变成右图所示的变形工具。
当工具变形时,用鼠标拖曳数组的右边或者下边。
数组现在就可以按照元素索引的上升顺序显示多个素,以某个与指定索引对应的元素开始,如下图所示。
图3-3练习3-1中多个数组元素的同时观察在前面的流程图中,您为波形图指定了初始的X值和deltaX值。
默认的X初始值是0,delta X 值是1。
这样,也可以把波形数组直接连接到波形图端子,而无需指定初始的X值和delta X值,如图3-4所示。
图3-4练习3-1使用默认X及Delta X时简化后的流程图12.按上图删除 Bundle功能函数和它所连接的常数对象。
方法是用移位工具选择该功能函数和连接的常数对象,按下<Delete>。
再选择Edit»Remove Bad Wire s。
按照上图完成流程图的连线。
13.执行该VI。
注意初始的X值是0,delta X值是1。
多图区图形可以创建含有多条曲线的图形,方法是创建一个数组,用它来汇集传给单图区图形的类型的数据元素。
图3-5 练习3-1多图区图形的流程图14. 按照上图创建流程图。
● 正弦函数(Functions»Numeric»Trig onometric )——在这里,它用于在For 循环中创建一个由数据点组成的数组,表示一个正弦波周期。
● Pi 常数(Functions»Numeric»AdditionalNumeric Constants )● Build Array (Functions»Arra y )——在这里,它用于创建合适的数据结构(一个二维数组),在波形图中绘制两条曲线。
用移位工具拖曳边角可以增大该函数的面积,创建两个输入端子。
15. 返回前面板,执行该 VI 。
注意同一个波形中的两个图区。
默认情况下,它们的X 初始值都是0,delta X 初始值都是1。
下图是该程序的运行结果(前面板未改动)。
16. 把该VI 保存为LabVIEW\Activity 目录中的GraphWaveform Arrays.vi 。
17. 可以修改图形中的某个图区的外观。
方法是,用鼠标右键单击这个图形,再从弹出菜单选择对应的图例。
Array图3-6 练习3-1多图区图形的面板显示练习 3-1 结束。
在上面这个例子中,由于计算端子连接了一个值为100的常数对象,所以 For 循环将执行100次。
下面这个例子显示了另外一种控制循环执行次数的方法。
更详细的例子建议调阅Examples》Fundamentals 》Graphsand Charts》Graph Examples》Waveform Graph例子。
练习3-2对输入数组使用自动索引功能目的:打开并执行一个VI,它将在一个For循环中使用自动索引功能处理一个数组。
1.选择File»Open…,打开Examples\General\arrays.llb中的Separate Array ValuesVI 。
2.打开流程图。
下面的示意图显示的是在TRUE和FALSE时的情况。
图3-7练习3-2的流程图注意,Input Array引出的连线与For循环外的粗线不同,表示这是一个数组,而循环内部的细线则表示这是一个数组元素。
数组元素在每个循环期间将自动编号。
用自动索引功能设置 For 循环的计数器注意,计数器端子还没有连线。
当您对某个进入For循环的数组使用自动索引功能时,循环就将根据数组的大小执行相应的次数,这样就无需连接某个值到计数器的端口。
如果对一个以上的数组使用自动索引功能,或者在使用自动索引功能之外还需要设置计数器时,实际的循环次数将是其中最小的数。
3.执行该VI。
在输入的八个数中,可以看到4个属于正数数组,另外4个属于负数数组。
4.从流程图中将一个值为5的常数对象连接到For 循环的计数器端子。
执行该 VI。
可以看到尽管输入数组仍然有八个元素,但是3个位于正数数组,另外2个位于负数数组。
这说明,如果设置了N并开启了自动索引功能,那么实际循环的次数将取较小的数。
5.关闭该VI,不要保存任何修改。
注:练习3-2的算法说明下面是一段伪代码,解释上面的算法,假定输入数组为A(已赋值),B(正数)、C(负数)。
Sbr 、Scr分别是与B数组、C数组对应的右寄存器数组,Sbl 、Scl分别是与B数组、C数组对应的左寄存器数组,size运算为测数组实际大小,ins运算为将一个数插入数组中最左边的空位。
练习3-2结束。
3.3数组功能函数LabVIEW提供了很多用于操作数组的功能函数,位于Functions»Array中。
其中包括Replace Array Element,、Search 1DArray、Sort 1D Array、Reverse 1D Array和Multiply ArrayElements等等。
创建数组——Build Array函数(Functions»Array),用于根据标量值或者其他的数组创建一个数组。
开始时,Build Array函数具有一个标量输入端子。