虚拟仪器实验指导书.docx
- 文档编号:19220760
- 上传时间:2023-04-24
- 格式:DOCX
- 页数:40
- 大小:262.15KB
虚拟仪器实验指导书.docx
《虚拟仪器实验指导书.docx》由会员分享,可在线阅读,更多相关《虚拟仪器实验指导书.docx(40页珍藏版)》请在冰豆网上搜索。
虚拟仪器实验指导书
虚拟仪器
课程实验指导书
信息与控制工程学院
2006.03
目录
第1章课程简介、实验项目及学时安排
1.1课程简介
1.2实验项目及学时安排
第2章实验设备简介
第3章Labview课程实验
实验一、LabVIEW开发环境及基本操作
实验二、数组、簇
实验三、程序结构实验
实验四、文件的I/O管理
实验五、数据采集基础
实验六、DAQ程序设计初步
实验七、图形显示
实验八、设计练习
(1)示波器设计
设计练习
(2)信号发生器设计
第一章课程简介、实验项目及学时安排
1.1课程简介
虚拟仪器(virtualinstrumention)是基于计算机的仪器。
计算机和仪器的密切结合是目前仪器发展的一个重要方向。
粗略地说这种结合有两种方式,一种是将计算机装入仪器,其典型的例子就是所谓智能化的仪器。
随着计算机功能的日益强大以及其体积的日趋缩小,这类仪器功能也越来越强大,目前已经出现含嵌入式系统的仪器。
另一种方式是将仪器装入计算机。
以通用的计算机硬件及操作系统为依托,实现各种仪器功能。
虚拟仪器主要是指这种方式。
下面的框图反映了常见的虚拟仪器方案。
虚拟仪器的主要特点有:
⏹尽可能采用了通用的硬件,各种仪器的差异主要是软件。
⏹可充分发挥计算机的能力,有强大的数据处理功能,可以创造出功能更强的仪器。
⏹用户可以根据自己的需要定义和制造各种仪器。
虚拟仪器实际上是一个按照仪器需求组织的数据采集系统。
虚拟仪器的研究中涉及的基础理论主要有计算机数据采集和数字信号处理。
目前在这一领域内,使用较为广泛的计算机语言是美国NI公司的LabVIEW。
虚拟仪器的起源可以追朔到20世纪70年代,那时计算机测控系统在国防、航天等领域已经有了相当的发展。
PC机出现以后,仪器级的计算机化成为可能,甚至在Microsoft公司的Windows诞生之前,NI公司已经在Macintosh计算机上推出了LabVIEW2.0以前的版本。
对虚拟仪器和LabVIEW长期、系统、有效的研究开发使得该公司成为业界公认的权威。
普通的PC有一些不可避免的弱点。
用它构建的虚拟仪器或计算机测试系统性能不可能太高。
目前作为计算机化仪器的一个重要发展方向是制定了VXI标准,这是一种插卡式的仪器。
每一种仪器是一个插卡,为了保证仪器的性能,又采用了较多的硬件,但这些卡式仪器本身都没有面板,其面板仍然用虚拟的方式在计算机屏幕上出现。
这些卡插入标准的VXI机箱,再与计算机相连,就组成了一个测试系统。
VXI仪器价格昂贵,目前又推出了一种较为便宜的PXI标准仪器。
虚拟仪器研究的另一个问题是各种标准仪器的互连及与计算机的连接。
目前使用较多的是IEEE488或GPIB协议。
未来的仪器也应当是网络化的。
现在多用LabVIEW8.0因为它是一种基于G语言的虚拟仪器软件开发工具,是目前国际上应用最广的虚拟仪器开发环境之一,主要应用于仪器控制、数据采集、数据分析、数据显示等领域,并应用于Windows、Macintosh、Unix等多种操作系统平台。
与传统程序语言不同,LabVIEW8.0采用强大的图形化语言编程,面向测试工程师而非专业程序员,编程方便,人机交互界面直观、友好。
1.2实验项目及学时安排
LabVIEW虚拟仪器设计实验课是以认识和熟悉LabVIEW8.0编程环境的构成和验证所学理论为基础,在此基础上开展自行设计LabVIEW系统设计平台、确定实验方案,学习虚拟仪器开发环境在仪器控制、数据采集等方面的操作,培养虚拟仪器在测量和控制系统中的应用能力。
所安排了验证性、设计性和综合性不同属性的实验项目。
序
号
实验项目
学
时
实验性质
验证
综合
设计
1
LabVIEW开发环境及基本操作
4
√
2
数组、簇
2
√
3
程序结构实验
2
√
4
文件的I/O管理
2
√
5
数据采集基础
2
√
6
DAQ程序设计初步
2
√
7
图形显示
2
√
8
设计练习
(1)示波器设计
设计练习
(2)信号发生器设计
8
√
实验一LabVIEW开发环境及基本操作
一、实验目的
1.了解Labview8.0Express的编程环境.
2.掌握的基本操作方法,并编制简单的程序.
3.学习建立子程序的过程.
二、实验原理、内容及步骤
实验原理:
LabVIEW作为一种图形化的设计语言,主要提供3种图像化的模板来帮助创建:
工具模板,控制模板和功能模板。
前面板窗口和框图程序窗口都提供工具模板,而控制模板只出现在前面板窗口中,功能模板指出现在框图程序窗口中。
前面板所需的各种“控件”均有控制模板提供。
前面模板的设计过程就是利用工具模板中的相应的工具,从控制模板中取出所需的“控件”并摆放在前面板窗口中的适当位置。
框图程序设计时所需的各种“功能函数”均由控制模板提供,利用工具模板中的工具,从功能模板中选出相应的“图标”放置在程序窗口中。
二.实验步骤和内容:
例1.建立一个测量温度和容积的VI,其中须调用一个仿真测量温度和容积的传感器子VI。
步骤如下:
1.选择File»New,打开一个新的前面板窗口。
2.从Controls»Numeric中选择Tank放到前面板中。
3.在标签文本框中输入“容积”,然后在前面板中的其他任何位置单击一下。
4.把容器显示对象的显示范围设置为0.0到1000.0。
a.使用文本编辑工具(TextEditTool),双击容器坐标的10.0标度,使它高亮显示。
b.在坐标中输入1000,再在前面板中的其他任何地方单击一下。
这时0.0到1000.0之间的增量将被自动显示。
5.在容器旁配数据显示。
将鼠标移到容器上,点右键,在出现的快速菜单中选VisibleIterms»DigitalDisplay即可。
6.从Controls»Numeric中选择一个温度计,将它放到前面板中。
设置其标签为“温度”,显示范围为0到100,同时配数字显示。
可得到如下的前面板图。
图1-3 练习1-1的前面板图
7.Windows»ShowDiagram打开流程图窗口。
从功能模板中选择对象,将它们放到流程图上组成下图(其中的标注是后加的)。
图1-4 练习1-1的流程图
该流程图中新增的对象有两个乘法器、两个数值常数、一个随机数发生器、一个进程监视器,温度和容积对象是由前棉板的设置自动带出来的。
a.乘法器和随机数发生器由Functions»Numeric中拖出,尽管数值常数也可以这样得到,但是建议使用c中的方法更好些。
b.进程监视器(ProcessMonitor)不是一个函数,而是以子VI的方式提供的,它存放在LabVIEW\Activity目录中,调用它的方法是在Functions»SelectaVI下打开ProcessMonitor,然后在流程图上点击一下,就可以出现它的图标。
注意:
LabVIEW目录一般在ProgramFiles\NationalInstruments\目录下。
8.用连线工具
将各对象按规定连接。
a中的遗留问题创建数值常数对象的另一种方法是在连线时一起完成。
具体方法是:
用连线工具在某个功能函数或VI的连线端子上单击鼠标右键,再从弹出的菜单中选择CreateConstant,就可以创建一个具有正确的数据格式的数值常数对象。
9.选择File»Save,把该VI保存为LabVIEW\Activity目录中的Temp&Vol.vi。
在前面板中,单击Run(运行)按钮,运行该VI。
注意电压和温度的数值都显示在前面板中。
10.选择File»Close,关闭该VI。
例2.为VI创建图标和联接器
1.打开LabVIEW\Activity目录中的Temp&Vol.vi,这是例1做的程序。
2.在前面板中,用鼠标右键单击窗口右上角的图标,在快捷菜单中选择EditIcon….,也可以双击图标激活图标编辑器。
注意只能在前面板中编辑图标和联接器。
3.删除默认图标。
使用SelectTool(矩形框),单击并拖动想要删除的部分,按下
也可以通过双击工具框中的阴影矩形删除图标。
4.用PencilTool(铅笔工具)绘制一个温度计。
5.用TextTool(文本工具)创建文本。
得到图标将如下图所示。
图1-6 编辑后的图标编辑器窗口
6.单击OK,关闭编辑器。
新创建的图标就显示在屏幕右上角的图标窗口中。
7.用鼠标右键单击前面板中的图标窗口,在快捷菜单中选择ShowConnector,设置联接器端子连接模式。
在默认情况下,LabVIEW会根据前面板中的控制对象和显示对象的数目确定联接器的端子连接模式。
因为前面板中有两个对象,所以联接器有两个端子,如左图所示。
用鼠标右键单击联接器窗口,在快捷菜单中选择Rotate90Degrees(旋转90度),注意联接器窗口的变化,如左图所示。
9.将端子连接到温度计和电压计:
a.点击联接器上部端子。
光标自动变成连线工具,同时端子变成黑色。
b.单击温度显示对象。
一个移动的虚线框把它包围起来,选中的端子的颜色变为与控制/显示对象的数据类型一致的颜色。
如果单击前面板中的任何空白区域以后,虚线消失,选中的端子变暗,这表示您已经成功地把显示对象和上部端子连接起来。
如果端子是白色,则表示没有连接成功。
c.重复步骤a和b,把底部的端子和容积计连接起来。
d.用鼠标右键单击联接器,在快捷菜单中选择ShowIcon….
10.选择File»Save,保存该VI。
这样这个VI就完成了,并也可以作为子VI被其他的VI调用。
子VI的图标在主VI的流程图中代表它。
VI的联接器(含有两个端子)输出温度和电压。
三.实验设备及实验注意事项
1.实验前必须做好预习,并做出必要的计算和记录用的表格;
2.实验开始前先检查仪器设备是否完好,并仔细观察熟悉实验箱面板布置;
3.接好线后首先组内相互检查无误后,再经指导教师确认无误后方可合闸送电进行实验;
4.实验中如发现异常(如冒烟、异味、冒火等非正常现象),应立即切断电源,并报告指导教师,仔细查找原因,问题解决后,方可继续进行实验;
5.实验完毕应先关掉电源,将所用仪器设备恢复原貌,并清理卫生后方可离开。
四.实验报告要求
五,预习要求及思考题
1.熟悉的LabVIEW8.0编程环境。
2.VI中的三个模块是什么?
简述其各自功能。
3.在前面板和框图程序中,如何区分控制器和指示器?
4.设计一个VI程序根据所给的x1,y1,x2,y2值求出直线的斜率。
把此程序作为子程序,自己设计一个简单的VI程序调用子程序。
5.通过下面的要求练习LabVIEW的操作。
画出如右下所示的流程图,配以适当的前面板。
注意连线时快捷菜单和Create功能的使用,和在前面板上替换不同的Indicator的方法。
图1-8 补充练习的面板及框图
实验二数组、簇
一.实验目的
1.学习如何创建数组和簇,掌握它们的区别一级形影的操作。
2.学习并掌握Chart和Graph的使用了解它们的区别。
二.实验原理、内容及步骤
实验原理:
数组是同类型元素的集合。
一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。
可以通过数组索引访问其中的每个元素。
索引的范围是0到n–1,其中n是数组中元素的个数。
图3-1所显示的是由数值构成的一维数组。
注意第一个元素的索引号为0,第二个是1,依此类推。
数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。
图3-1 数组示意图
簇(Cluster)是另一种数据类型,它的元素可以是不同类型的数据。
它类似于C语言中的stuct。
使用簇可以把分布在流程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤程度。
减少子VI的连接端子的数量。
波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。
数组和簇的互换
将数组变为簇(或者相反)很方便。
尤其是因为LabVIEW包括的关于数组的操作功能多于簇。
例如,前面板上有一个多按钮的簇,你希望颠倒这些按钮值的序。
好了,Reverse1DArray功能正好可用,但是它仅可用于数组。
这没关系,你可以使用功能ClustertoArray将簇转换为数组,使用Reverse1DArray切换开关的值,最后再利用ArraytoClaster变换回簇。
实验步骤和内容:
例1.初始化一个35的二位数组,其元素的初始值全部为1;计算数组的大小;有一位数组常量(5,4,3,2,1)在替代二位数组的第0行;以第0行第一列元素为起点,提取2行3列的一个二维矩阵。
例2.将一位数组(100,10,1)、常量0和Element20.1组成一个新的数组,求出该数组的最大最小值和对应的索引位置;将数组的元素前后对调,即0号元素与N—1号(4号)元素对调,1号元素与N—2(3号)元素对调;将后2个数据移至数组的最前端,其它元素顺序后移;对数组的元素进行升序排序。
例3.将一个一维数组(0,1,2,3,4,5)对一位数组进行插值(Interpolate1DArray)和门限制(Threshold1DArray);将其分解为两个一维数组,分别包含前3个元素(0,1,2)和后3个元素(3,4,5);并将这两个一维数组进行插接,形成新的数组(0,3,1,4,2,5);将插接后的数组分为三个数组(0,4)(3,2)(1,5);将拆分后的数组分为一个二维数组,并求其转置。
例4.个人资料簇(含有姓名、年龄、性别三个元素)的打包(用良种方式,按元素和按名称)与解包(用良种方式,按元素和按名称)。
例5.把3个不同类型的数组:
数值型(1,2,3)、字符串型(a,b,c)、布尔型(False,True,False)用Index&BundleClusterArray函数组成簇的数组;把3个相同类型的数组(11,12,13)、(21,22,23)、(31,32,33)用BuildClusterArray函数生成一个簇的数组;并将数组(1,2,3)转化为簇,在转化为数组。
三.实验设备及实验注意事项
1.实验前必须做好预习,并做出必要的计算和记录用的表格;
2.实验开始前先检查仪器设备是否完好,并仔细观察熟悉实验箱面板布置;
3.接好线后首先组内相互检查无误后,再经指导教师确认无误后方可合闸送电进行实验;
4.实验中如发现异常(如冒烟、异味、冒火等非正常现象),应立即切断电源,并报告指导教师,仔细查找原因,问题解决后,方可继续进行实验;
5.实验完毕应先关掉电源,将所用仪器设备恢复原貌,并清理卫生后方可离开。
四,预习要求及思考题
1.简述Chart和Graph的区别。
2.Chart的三种工作模式是什么?
简单介绍各自的工作方式。
3.对于下面的二位数组,回答如下的问题
2
4
7
5
1
6
9
3
4
5
2
5
8
4
9
a.[1,3]中的元素值是什么?
b.在对此二位数组使用Arraysubset函数时,如果输入为:
index=2
length=3,
index=3,
length=2,
输出是什么?
4.簇和数组的区别是什么?
5.Bundle和BundlebyName函数有何不同?
Unbundle和UnbundlebyName的区别是什么?
实验三LabVIEW8.0编程结构实验
.实验目的
1.学习并掌握For循环和While循环以及它们的不同点
2.学习使用移位寄存器和反馈节点
3.学习顺序结构、Case结构和公式节点的使用。
.实验原理、内容及步骤
1.While循环
While循环可以反复执行循环体的程序,直至到达某个边界条件。
它类似于普通编程语言中的Do循环和Repeat-Until循环。
While循环的框图是一个大小可变的方框,用于执行框中的程序,直到条件端子接收到的布尔值为FALSE。
该循环有如下特点:
1)计数从0开始(i=0)。
2)先执行循环体,而后i+1,如果循环只执行一次,那么循环输出值i=0。
3)循环至少要运行一次。
图2-1 While循环示意图
2.For循环
For循环用于将某段程序执行指定次数。
和While循环一样,它不会立刻出现在流程图中,而是出现一个小的图标,而后您可以修改它的大小和位置。
具体的方法是,先单击所有端子的左上方,然后按下鼠标,拖曳出一个包含所有端子的矩形。
释放鼠标时就创建了一个指定大小和位置的For循环。
For循环将把它的框图中的程序执行指定的次数,For循环具有下面这两个端子:
N:
计数端子(输入端子)——用于指定循环执行的次数。
I:
周期端子(输出端子)——含有循环已经执行的次数。
上图显示了一可以产生100个随机数并将数据显示在一个图表上的For循环。
在该例中,i的初值是0,终值是99。
3.移位寄存器(ShiftRegister)
移位寄存器可以将数据从一个循环周期传递到另外一个周期。
在程序设计中,经常要用到它.创建一个移位寄存器的方法是,用鼠标右键单击循环的左边或者右边,在快捷菜单中选择AddShiftRegister。
移位寄存器在流程图上用在循环边框上相应的一对端子来表示。
右边的端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将被转移到左边的端子,赋给下一个周期。
移位寄存器可以转移各种类型的数据--数值、布尔数、数组、字符串等等。
它会自动适应与它连接的第一个对象的数据类型。
下图表示了它的工作过程.
图2-3 ShiftRegister的工作过程
可以令移位寄存器记忆前面的多个周期的数值。
这个功能对于计算数据均值非常有用。
还可以创建其他的端子访问先前的周期的数据,方法是用鼠标右键单击左边或者右边的端子,在快捷菜单中选择AddElement。
例如,如果某个移位寄存器左边的端口含有三个元素,那么就可以访问前三个周期的数据。
4.分支结构:
Case
Case结构含有两个或者更多的子程序(Case),执行那一个取决于与选择端子或者选择对象的外部接口相连接的某个整数、布尔数、字符串或者标识的值。
必须选择一个默认的Case以处理超出范围的数值,或者直接列出所有可能的输入数值。
Case结构见下图,各个子程序占有各自的流程框,在其上沿中央有相应的子程序标识:
Ture、False或1、2、3…。
按钮用来改变当前显示的子程序(各子程序是重叠放在屏幕同一位置上的)。
5.顺序结构(SequenceStructure)
在代码式的传统编程语言中,默认的情况是,程序语句按照排列顺序执行,但LabVIEW中不同,它是一种图形化的数据流式编程语言。
在图2-7左图中,假设有A、B、C、D4个节点,其数据流向如右图所示。
按照数据流式语言的约定,任何一个节点只有在所有
图2-7 顺序结构的说明
的输入数据有效时才会执行,所以图中,当且仅当A、B、C3个节点执行完,使得D节点的3个输入数据都到达D节点后,D节点才执行。
但是你要注意,这里并没有规定A、B、C3个节点的执行顺序。
在LabVIEW中这种情况下,A、B、C的执行顺序是不确定的,如果你需要对它们规定一个确定的顺序,那就需要使用本节介绍的“顺序结构”。
图2-7中的右边是顺序结构的图标,它看上去像是电影胶片。
它可以按一定顺序执行多个子程序。
首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。
与Case结构类似,这多帧程序在流程图中占有同一个位置。
二.实验步骤和内容:
例1.用While循环和图表获得数据,并实时显示。
创建一个可以产生并在图表中显示随机数的VI。
前面板有一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关可以中止VI的运行。
学习怎样改变开关的动作属性,以便不用每次运行VI时都要打开开关。
操作步骤如下:
图2-2 练习2-1的前面板
1.选择File»New,打开一个新的前面板。
2.选择Controls»Boolean,在前面板中放置一个开关。
设置开关的标签为控制开关。
3.使用标签工具创建ON和OFF的标签,放置于开关旁。
4.选中Controls»Graph,在前面板中放置一个波形图(是chart,而不是graph)。
设置它的标签为随机信号。
这个图表用于实时显示随机数。
5.把图表的纵坐标改为0.0到1.0。
方法是用标签工具把最大值从10.0改为1.0。
6.选择Controls»Numeric,在前面板中放置一个旋钮。
设置旋钮的标签为循环延时。
这个旋钮用于控制While循环的循环时间。
流程图
7.开流程图,按照下图创建流程图。
图2-2 练习2-1的流程图
a.从Functions»Structures中选择While循环,把它放置在流程图中。
将其拖至适当大小,将相关对象移到循环圈内。
b.从Functions»Numeric中选择随机数(0-1)功能函数放到循环内。
c.在循环中设置WaitUntilNextmsMultiple函数(Functions»Time&Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到10毫秒。
d.照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连接起来,并把启动开关和While循环的条件端子连接。
8.返回前面板,调用操作工具后单击垂直开关将它打开。
9.把该VI保存为LabVIEW\Activity目录中的RandomSignal.vi。
10.执行该VI。
While循环的执行次数是不确定的,只要设置的条件为真,循环程序就会持续运行。
在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。
11.单击垂直开关,中止该VI。
关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环。
12.用鼠标右键单击图表,选择DataOperations»ClearChart,清除显示缓存,重新设置图表。
例2.创建一个可以在图表中显示运行平均数的VI。
前面板
1.打开一个新的前面板,按照下图所示创建对象。
2.把波形图表的坐标范围改为0.0到2.0。
3.在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择MechanicalAction»LatchWhenPressed,再选择Operate»MakeCurrentValuesDefault,把ON状态设置为默认状态。
图2-4 练习2-2的前面板
流程图
4.按下图创建流程图。
图2-4 练习2-2的流程图
5.在流程图中添加While循环(Functions»Structures),创建移位寄存器。
a.用鼠标右键单击While循环的左边或者右边,在快捷菜单中选择AddShiftRegister。
b.用鼠标右键单击寄存器的左端子,在快捷菜单中选择AddElement,添加一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 虚拟仪器 实验 指导书