《虚拟仪器与智能测量》实验指导书修订汇总.docx
- 文档编号:18592698
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:80
- 大小:2MB
《虚拟仪器与智能测量》实验指导书修订汇总.docx
《《虚拟仪器与智能测量》实验指导书修订汇总.docx》由会员分享,可在线阅读,更多相关《《虚拟仪器与智能测量》实验指导书修订汇总.docx(80页珍藏版)》请在冰点文库上搜索。
《虚拟仪器与智能测量》实验指导书修订汇总
虚拟仪器与智能测量
实验指导书
董介春
青岛大学电子信息学院
2016.9
说明
1、注意:
在实验之前,首先在计算机的F盘下面创建一个以班级+姓名+实验几命名的目录,如电子1班张三实验一,所有的实验程序都保存到该目录中。
2、实验箱底板功能说明
(1)本系统所用NIPCI-6221数据采集卡,含有24路双向数字I/O,16路模拟输入、2路模拟输出,2路定时计数器,底板上68针插座接口为采集卡68-pinVHDCI母头接口。
采集卡用法详见NI-DAQmx帮助。
(2)《压力测量》与《步进电机控制与霍尔元件位置检测》两个实验模块集成在实验箱板底上。
使用NIPCI-6221数据采集卡实验时,需拔下XT1全部跳线帽,然后通过IO1和IO2将采集卡相应端子与XT2连接起来。
目录
第一篇LabVIEW基础单元1
实验一LabVIEW编程环境与基本操作1
实验二LabVIEW程序结构——循环结构7
实验三LabVIEW程序结构——顺序结构与条件结构11
实验四LabVIEW程序结构——事件结构与状态机14
实验五LabVIEW编程的数组与簇18
实验六LabVIEW编程的图形显示21
实验七LabVIEW字符串和文件I/O编程24
实验八LabVIEW信号分析与处理26
第二篇LabVIEW数据采集单元28
实验九模拟信号的采集与输出28
实验十温度采集与控制系统设计31
实验十一红外数据传输系统设计33
实验十二湿度测量计设计35
实验十三电子秤设计37
实验十四光强检测与控制系统设计39
实验十五自动控制窗帘系统设计40
实验十六模拟电梯超重报警系统设计43
实验十七遥控电风扇系统设计45
第三篇LabVIEW信号处理单元46
实验十八典型信号频谱分析46
实验十九数字FIR滤波器48
实验二十数字IIR滤波器49
第四篇LabVIEW虚拟仪器单元50
实验二十一虚拟信号发生器50
第一篇LabVIEW基础单元
实验一LabVIEW编程环境与基本操作
一、实验目的
1.了解LabVIEW的编程与运行环境。
2.掌握LabVIEW的基本操作方法,并编制简单的程序。
3.掌握使用调试工具调试VI程序。
4.掌握VI子程序的建立和调用过程。
二、实验原理
虚拟仪器系统的概念不仅推进了以仪器为基础的测控系统的改造,同时也影响了以数据采集为主的测控系统的传统构造方法。
过去独立分散、互不相干的许多传统仪器,在虚拟仪器系统的概念之下,正在逐渐靠拢、相互影响,并形成新的技术方法和技术规范。
虚拟仪器系统的概念是测控系统的抽象。
不管是传统的还是虚拟的仪器,它们的功能都是相同的:
采集数据,对采集来的数据进行分析处理,然后显示处理的结果。
它们之间的不同主要体现在灵活性方面。
虚拟仪器由用户自己定义,这意味着用户可以自由地组合计算机平台、硬件、软件以及各种完成应用系统所需要的附件。
而这种灵活性在由制造商定义、功能固定、独立的传统仪器上是达不到的。
常用的数字万用表、示波器、信号发生器、数据记录仪以及温度和压力监控器就是传统仪器的代表。
基于计算机的虚拟仪器得益于PC技术的发展。
由于直接将仪器模块插入到计算机中,我们就可以直接享用到台式或便携式计算机上出众的处理能力、显示、数据存储以及连接性能等方面的优势,使测量以最有效的方式从使用传统的仪器过渡到使用通用计算机。
基于计算机的仪器不仅继承了传统仪器的标准测量能力,更增加了扩展仪器概念的灵活性,使我们能够更加直接、更加有效地面对当今测量应用的挑战。
更有意义的是,利用诸如LabVIEW、LabWindows/CVI等应用开发环境,可以方便地使多台仪器的测量能力结合并同步工作,以建立功能强大的仪器系统。
更进一步,我们也可以开发自己的分析程序,实现那些有别于其它仪器或系统的功能。
虚拟仪器系统技术的基础是计算机系统,核心是软件技术。
因此,美国国家仪器公司(NI)提出其著名的口号:
TheSoftwareistheInstrument。
为了使“软件就是仪器”这句口号成为现实,NI公司在软件体系结构的各个层次上,形成了完整的设备驱动程序、系统开发平台、实用支持软件、应用软件包相互支撑的格局,使虚拟仪器系统的概念不再“虚拟”。
其中,LabVIEW就是美国NI公司推出的一套著名的虚拟仪器开发软件平台。
1.LabVIEW与虚拟仪器(VI)程序
LabVIEW(LaboratoryVirtualInstrumentEngineeringWorkbench,实验室虚拟仪器集成环境)是一个高效的图形化程序设计环境,也是一个功能强大的仪器和分析软件应用开发工具。
它结合了简单易用的图形式开发环境与灵活强大的G语言,提供了一个直觉式的环境,与测量紧密结合,能迅速开发出有关数据采集、测量控制、数据分析、存储及显示的解决方案。
像C一样,LabVIEW也是通用的编程系统,有一个庞大的函数库,包括数据采集、GPIB、串口控制、数据分析、数据显示及数据存储等。
LabVIEW也有传统的程序调试工具,如设置断点、以动画方式显示数据及其通过程序(子VI)的结果、单步执行等,便于程序的调试。
使用LabVIEW开发平台编制的程序称为虚拟仪器程序,简称为VI。
VI包括三个部分:
程序前面板、框图程序和图标/连接器。
如图1-1和图1-2所示。
图1-1LabVIEW程序前面板图1-2与前面板对应的框图程序
程序前面板用于设置输入数值和观察输出量,用于模拟真实仪表的前面板,其大小、外观、功能布局均可以由用户根据自己的需要进行定制。
在程序前面板上,输入量被称为控制(Controls),输出量被称为显示(Indicators)。
控制和显示是以各种图标形式出现在前面板上,如旋钮、开关、按钮、图表等,这使得前面板直观易懂。
2.LabVIEW的操作模板
LabVIEW具有多个图形化的操作模板,用于创建和运行程序。
该模板可以随意在屏幕上移动,并可以放置在屏幕的任意位置。
操纵模板有三类:
工具(Tools)模板、控制(Controls)模板和功能(Functions)模板。
1)工具模板(ToolsPalette)
工具模板提供了用于创建、修改和调试VI程序的工具。
如果该模板没有出现,则可在Windows菜单下选择ShowToolsPalette命令以显示。
操作工具:
使用该工具来操作前面板的控制和显示。
选择工具:
用于选择、移动或改变对象的大小。
标签工具:
用于输入标签文本或创建自由标签。
创建自由标签时它会变成相应形状。
连线工具:
用于在框图程序上连接对象。
对象弹出菜单工具:
用左鼠标键可以弹出对象的弹出式菜单。
漫游工具:
可以不需要使用滚动条而在窗口中漫游。
断点工具:
使用该工具在VI的框图对象上设置断点。
探针工具:
在框图程序内的数据流线上设置探针,来观察该线上的数据变化状况。
颜色提取工具:
用来提取颜色用于编辑其他的对象。
颜色工具:
用来给对象定义颜色。
显示前景色和背景色。
2)控制模板(ControlsPalette)
用控制模板可以给前面板添加输入控制和输出显示。
每个图标代表一个子模板。
如果控制模板不显示,可以用Windows菜单的ShowControlsPalette功能打开它,也可以在前面板的空白处,点击鼠标右键,以弹出控制模板,如图1-4所示。
注:
只有当打开前面板窗口时才能调用控制模板。
3)函数模板(FunctionsPalette,又称功能模板)
功能模板是创建框图程序的工具,其每一个顶层图标都表示一个子模板。
若功能模板不出现,则可用ShowFunctionsPalette打开。
如图1-5所示。
注:
只有激活了框图程序窗口,才能出现功能模板。
3.虚拟仪器程序的创建
VI程序具有三个要素:
前面板、框图程序和图标/连接器。
1)前面板
使用输入控制和输出显示来构建前面板。
控制是用户输入数据到程序的接口,显示是输出程序产生的数据接口。
两种最常用的前面板对象是数字控制和数字显示。
若想在数字控制中输入或修改数值,可使用操作工具点击控制部件和增减按钮,或用操作工具或标签工具双击数值栏进行数值修改。
2)框图程序
框图程序是由节点、端点、图框和连线四种元素构成的。
节点类似于文本语言的语句、函数或子程序。
LabVIEW有两种节点:
函数和子VI节点。
区别:
函数节点是LabVIEW以编译好的机器代码供用户使用的,而子VI节点是以图形语言形式提供给用户的。
用户可访问和修改任一子VI节点的代码,但无法对函数节点进行修改。
端点是只有一路输入/输出,且方向固定的节点。
LabVIEW有三类端点:
前面板对象端点、全局与局部变量端点和常量端点。
对象端点是数据在框图程序部分和前面板之间传输的接口。
一般来说,一个VI前面板上的对象都在框图中有一个对象端点与之一一对应。
控制对象对应的端点在框图中是用粗框框住的,如图1-6中的A和B端点,它们只能作为数据流源点。
显示对象对应的端点是用细框框住的。
如A+B和A-B端点。
它们只能作为数据流终点。
常量端点永远只能作为数据流源点。
图框是LabVIEW实现程序结构控制命令的图形表示。
如循环控制、条件分支控制和顺序控制等,编程人员可以使用它们控制VI程序的执行方式。
代码接口节点(CIN)是框图程序与用户提供的C语言文本程序的接口。
图1-6简单的程序框图和前面板
连线是端口间的数据通道。
类似于普通程序中的变量。
数据是单向流动的,从源端口向一个或多个目的端口流动。
不同的线型代表不同的数据类型,并以不同的颜色予以强调。
整型蓝色
浮点数橙色
逻辑量绿色
字符串粉色
文件路径青色
当需要连接两个端点时,在第一个端点上点击连线工具,再点击第二个端点。
当把连线工具放在端点上时,该端点将会闪烁,表示连线将会接通。
当连线工具从一个端口接到另一个端口时,不需要按鼠标键。
当连线转弯时,按空格键可以改变转角的方向。
3)从框图程序窗口创建前面板对象
用选择和连线工具,可以用鼠标右键点击任一节点和端点,然后从弹出菜单中选择“创建常数”,“创建控制”,或“创建显示”等命令。
4)数据流编程
控制VI程序的运行方式叫做“数据流”。
对一个节点而言,只有当它的所有输入端口上的数据都成为有效数据时,它才能被执行。
当节点程序运行完毕后,它把结果数据送给所有的输出端口,使之成为有效数据。
并且数据很快从源送到目的端口。
如图1-7所示,这个VI程序把两个输入相乘,再减去50.0。
这个程序中,框图程序从左往右执行,这个执行次序不是由于对象的摆放位置,而是由于相减运算函数的一个输入量是相乘函数的运算结果,它只有当相乘运算完成并把结果送到减运算的输入口后才能继续下去。
图1-7数据流举例图1-8数据流举例
如图1-8所示,你认为哪一个节点函数将先执行?
是乘法还是除法?
在这个例子中,我们无法知道哪一个节点函数首先执行,因为所有输入量几乎同时到达。
4.程序调试技术
程序调试是进行任何程序设计过程中所必须的过程。
在程序设计中不可避免地会有各种逻辑上和语法上的错误,这些都需要通过程序调试找出来加以改正。
1)找出语法错误
如果一个VI程序存在语法错误,则运行按钮将会变成一个折断的箭头,表示程序不能被执行。
这个按钮被称作错误列表。
点击,则LabVIEW弹出错误清单窗口,点击其中任何一个所列出的错误,选用Find功能,则出错的对象或端口就会变成高亮。
2)设置执行程序高亮
点击“高亮执行”按钮使其变成高亮形式,再点击运行按钮,VI程序就以较慢的速度运行,没有被执行的代码灰色显示,执行后的代码高亮显示,并显示数据流线上的数据值。
这样,我们就可以在根据数据的流动状态跟踪程序的执行。
3)断点与单步执行
使用断点工具可以在程序的某一地点中止执行,用探针或者单步方式查看数据。
使用断点工具时,点击设置或者清除断点的地方。
断点的显示对于节点或者图框表示为红框,对于连线表示为红点。
当VI程序运行到断点被设置处,程序被暂停在将要执行的节点,以闪烁表示。
按下单步执行按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行。
4)探针
可以用探针工具来查看当框图程序流经某一根连接线时的数据值。
探针显示窗口总是被显示在前面板窗口或框图窗口的上面。
三、实验内容
1.创建我的第一个VI。
编写程序,实现将一华氏温度(F)转换成摄氏温度(C)的功能。
已知摄氏温度与华氏温度的关系C=5(F-32)/9。
(1)前面板设计
如图1-9,华氏温度为数值输入控件,摄氏温度作为显示控件,按要求设置标签和显示范围,同时配数字显示。
图1-9Temp前面板图1-10Temp程序框图
(2)程序框图
如图1-10所示设计程序框图,建议数值常数使用在连接端子处点击右键创建(Create)常量(Constant)的方法更好些。
(3)把该VI命名为Temp.vi,保存为F:
\Yourname\的文件夹中。
2.自己创建一个VI,完成以下功能:
将两个输入的数字相加并显示结果;将同样两个输入数字相乘并显示结果;比较两个输入数字,如果数字相等,则LED指示灯亮。
最后,保存为SimpleMath.vi文件。
如图1-11:
A和B为数字控件输入,两个数字指示器分别显示输出结果A+B和A×B,当输入数字A和B相同时,将点亮LED。
图1-11实验2的前面板
3.子VI的创建与调用
1)打开练习1中Temp.vi。
2)设计图标编辑器,如图1-12所示,绘制一个温度计,创建一个TEMP的文本。
注意只能在前面板中编辑图标和联接器。
图1-12 编辑后的图标编辑器窗口
3)设置联接器端子。
4)调用创建的子Temp,使其实现实验1的功能。
4.设计一个VI程序,计算一元二次方程的两根。
四、思考题
1.写一个VI比较两个数的大小,如图所示:
当A>B时,指示灯亮。
2.写一个温度监测器,如图所示,当温度超过报警上限,而且开启报警时,报警灯点亮。
温度值可以由随机数发生器产生。
五、实验报告要求
1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。
2.理解基于数据流编程的基本编程思路。
3.总结VI基本编程的快捷操作。
4.简述VI程序有什么构成,其各部分的功能是什么。
5.思考:
在前面板和框图程序中,如何区分控制器和指示器。
6.心得体会及其它。
实验二LabVIEW程序结构——循环结构
一、实验目的
1.学习并掌握For循环和While循环以及它们的不同点。
2.学习使用移位寄存器(ShiftRegister)和反馈节点(FeedbackNode)。
二、实验原理
While循环和For循环在函数的结构(Structures)选项板中可以找到。
创建循环的具体方法是,选择该循环后,先在欲放入循环内执行的对象左上方单击,然后按下鼠标,拖曳出一个矩形框包围执行对象。
释放鼠标时就创建了一个指定大小和位置的循环。
While循环可以反复执行循环体的程序,直至到达某个边界条件。
它类似于普通编程语言中的Do循环和Repeat-Until循环。
While循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为FALSE。
1.For循环和While循环
当程序有确定的循环次数时,使用For循环。
在程序框图中添加For循环,如图2-1所示。
(循环次数输入端):
For循环必须给定循环次数N(N>0,否则循环不执行),此项一般都要有输入。
当For循环的输入数据是一个数组时,如果不给定循环次数,则数组的大小将决定For循环的循环次数。
如果同时输入两个数组,循环次数以数组个数最少的决定。
(循环计数):
计数范围0~N-1。
当具体的循环次数不可知时,我们使用While循环,如图2-2所示。
While循环也有一个循环计数
,第一次循环时
的值为0。
另外,While循环有一个循环条件判断端子
。
请特别注意,无论如何,都要给While循环结构一个有效的停止条件,否则可能就会使循环陷入死循环的状态。
While循环还提供了一个快捷方式:
Functions-Express-执行过程控制-WhileLoop,程序框图如图2-3所示,与图2-2不同的时自动加了一个停止按钮。
图2-1For循环图2-2While循环图2-3快捷While
2.移位寄存器和反馈节点
使用循环结构时,经常会遇到下一次循环要用到上一次循环运行结果的情况,这时就需要不断的将每次循环的结果存储下来,以传递给下一次循环。
移位寄存器和反馈节点就是用来实现这样的操作的。
在For循环和While循环中都可以添加移位寄存器和反馈节点,添加方法如下:
1)移位寄存器(ShiftRegister)
移位寄存器可以将数据从一个循环周期传递到另外一个周期。
创建移位寄存器的方法是,用鼠标右键单击循环的左边或者右边,在快捷菜单中选择AddShiftRegister,如图2-4所示。
移位寄存器在流程图上用在循环边框上相应的一对端子来表示。
右边的端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将被转移到左边的端子,赋给下一个周期。
移位寄存器可以转移各种类型的数据――数值、布尔数、数组、字符串等等。
它会自动适应与它连接的第一个对象的数据类型。
(a)为For循环设置移位寄存器(b)为While循环设置移位寄存器
图2-4设置移位寄存器
2)反馈节点(FeedbackNode)
反馈节点完成的功能同移位寄存器类似。
在For循环或者While循环中,只要将其中的子VI、函数的输入/输出相连接,就会自动出现反馈节点。
当然,也可以通过Functions-Execution-Control-FeedbackNode来添加。
在反馈节点上单击鼠标右键,从弹出的快捷菜单中选择ReplacewithShiftRegister,反馈节点将变成移位寄存器,如图2-5所示。
下面通过一个例子来看一下移位寄存器和反馈节点是如何工作的。
如图2-6所示。
图2-5将反馈节点变为移位寄存器图2-6反馈节点和移位寄存器
在此如果不给移位寄存器和反馈节点赋初值(本例中For循环框左边的两个常数0),下次程序运行时,移位寄存器和反馈节点中的值将以上次运行完的值开始。
三、实验内容
1.While循环的基本结构
分别创建两个关于While循环的VI,如图2-7所示,其中一个带延时,一个不带延时,都在前面板显示循环计数和停止按钮,比较这两个循环的不同。
(注意:
是两个VI)
(a)不带延时(b)有延时
图2-7While循环前面板与程序框图
2.While循环中实现累加的两种方法
(1)利用移位寄存器实现累加1-100,并将结果显示在前面板上;
(2)利用反馈节点实现累加1-100,并将结果显示在前面板上。
3.For循环的基本结构
创建三个关于For循环的VI,分别设定For循环的循环次数为100、循环次数设定、输入数据为一个数组等,并在前面板上设定第二个循环的次数及显示For循环的实时次数,观察显示结果。
*4.统计满足条件随机数的个数
统计100个随机数中大于0.5的个数,要求在前面板显示统计结果。
*5.设计一个VI,实现使用循环和移位寄存器计算随机数序列的移动平均值。
要求该VI产生一个随机序列
,序列长度N由前面板滑动条控件输入,该随机数序列的移动平均值
由下列公式可计算:
这里
,
表示在第i次计算的平均值,
是来自随机数函数的当前随机数。
前面板要求显示当前用于计算移动平均值的随机数个数i+1,当前的移动平均值,前面板设计如图2.10所示,最后将该VI保存为RandomNumberAverage.vi文件。
在HighlightExecution加亮执行的状态下观察数据流。
图2.10 RandomNumberAverage
四、实验报告要求
1.调试编辑以上VI,按顺序打印以上VI的前面板与程序框图后,贴在实验报告上;实验报告中要求详细说明设计步骤要点。
2.说明For循环与While循环的区别。
3.理解移位寄存器的作用以及它的初始化。
4.分析一下,当VI执行结束,结果显示控件的值是多少?
如果将内循环隧道替换为移位寄存器呢?
实验三LabVIEW程序结构——顺序结构与条件结构
一、实验目的
1.掌握顺序结构(SequenceStructure)、条件结构(CaseStructure)编程。
2.了解时间估计和控制函数。
3.了解公式节点(FormulaNode)的使用。
二、实验原理
1.顺序结构(SequenceStructure)
VI程序的运行是“数据流”驱动的,有时我们必须对这种数据流进行控制,这样就用到了顺序结构。
在LabVIEW中有两种循序结构:
平铺式和层叠式顺序结构。
使用平铺式顺序结构可以看到整个程序框图,当程序框图所占空间的大小允许时,可以使用这种顺序结构。
在程序框上单击鼠标右键,在弹出的快捷菜单中选择AddFrameafter或AddFrameBefore,就可以在本帧后或者前添加一帧,如图3-1所示。
使用层叠式顺序结构比较省空间,但是数据在各帧中的传递必须通过SequenceLocal来实现,并且每次只能显示一帧。
可以用类似的方法来添加前一帧或者后一帧,在弹出的快捷菜单中选择AddSequenceLocal,则在顺序结构中添加SequenceLocal,如图3-2所示。
图3-1添加帧图图3-2添加SequenceLocal
顺序结构顺序地执行子框图,它看上去像是电影胶片。
它可以按一定顺序执行多个子程序。
首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。
2.时间估计和控制函数
“等待”:
控制VI定时执行,每次执行单元(比如循环)内部,在执行代码运行结束后,开始计时。
保持此状态直到毫秒计数器的值等于预先设定的值。
“等待下一个整数倍毫秒”:
每次执行单元内部,在执行代码开始运行时,就开始计时,保持此状态直到毫秒计数器的值等于预先设定数的整数倍。
用于同步各单元操作。
“TickCount(ms)函数”:
用与ExpressVI完成定时任务。
3.条件结构(CaseStructure)
条件结构的输入端可以连接布尔型和数字型变量。
当连接的是布尔型变量时,只有True和False两种。
当连接的是数字型变量时,Case框上的标识将变为0,1,…根据输入量的不同,Case结构选择运行不同的程序。
程序框图如图3-3所示。
在默认状态下,Case结构只有0和1两项,用右键单击Case结构的边框,从弹出的快捷菜单中选择AddCaseAfter来添加一个Case。
图3-3Case结构举例框图程序
前面板如图3-4所示。
是用来选择操作是加法、减法还是乘法。
选择MemuRing,然后通过工具模板改变
大小,鼠标右键选择Properties,在弹出的对话框中改变其属性,同时添加如图3-5所示的内容。
图3-4Case结构举例前面板
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 虚拟仪器与智能测量 虚拟仪器 智能 测量 实验 指导书 修订 汇总