自动测试技术实验报告.docx
《自动测试技术实验报告.docx》由会员分享,可在线阅读,更多相关《自动测试技术实验报告.docx(31页珍藏版)》请在冰点文库上搜索。
自动测试技术实验报告
西安邮电学院
自动测试技术
实验报告
学院:
班级:
姓名:
实验2Labview编程结构实验
一、实验目的
●学习并掌握For循环和While循环以及它们的不同点。
●学习移位寄存器(ShiftRegister)和反馈节点(FeedbackNode)
●学习顺序结构(SequenceStructure),Case结构和公式节点(FormulaNode)的使用。
二、实验设备
安装有Labview7Express的计算机
三、实验内容
1.For循环和While循环
当程序有循环次数时,我们使用For循环。
在程序框图中添加For循环(Function—AllFunction---Structures—ForLoop)
图2---1For循环示意图
当具体的循环次数不可知时,我们使用While循环(Function—AllFunction---Structures—WhileLoop)
图2---2 While循环示意图
Labview7Express对While循环还提供了一个快捷方式:
(Function—Execution---Control—WhileLoop),与上面不同是自动加了一个停止按纽。
2.移位寄存器和反馈节点
2.1移位寄存器(ShiftRegister)
移位寄存器可以将数据从一个循环周期传递到另外一个周期。
在程序设计中,经常要用到它.创建一个移位寄存器的方法是,用鼠标右键单击循环的左边或者右边,在快捷菜单中选择AddShiftRegister。
如右图所示。
移位寄存器在流程图上用在循环边框上相应的一对端子来表示。
右边的端子中存储了一个周期完成后的数据,这些数据在这个周期完成之后将被转移到左边的端子,赋给下一个周期。
移位寄存器可以转移各种类型的数据--数值、布尔数、数组、字符串等等。
它会自动适应与它连接的第一个对象的数据类型。
下图表示了它的工作过程.
图2-3 ShiftRegister的工作过程
2.2反馈节点(FeedbackNode)
反馈节点是Labview7Express新增的功能,完成的功能同移位寄存器类似,在循环While或For循环中,只要将其中的子VI,函数的输入/输出相连接,就会自动出现反馈节点。
当然也可以通过(Function—ExecutionControl—FeedbackNode)来添加。
在反馈节点上单击右键,从中选择ReplaceWithShiftRegister,反馈节点变成移位寄存器如下图所示:
图2-4为While循环设置移位寄存器
图2-5为For循环设置移位寄存器
3.分支结构:
Case
3.1Case结构含有两个或者更多的子程序(Case),执行那一个取决于与选择端子或者选择对象的外部接口相连接的某个整数、布尔数、字符串或者标识的值。
必须选择一个默认的Case以处理超出范围的数值,或者直接列出所有可能的输入数值。
Case结构见下图,各个子程序占有各自的流程框,在其上沿中央有相应的子程序标识:
Ture、False或1、2、3…。
按钮用来改变当前显示的子程序(各子程序是重叠放在屏幕同一位置上的)。
2-6使用Case结构
目的:
创建一个VI以检查一个数值是否为正数。
如果它是正的,VI就计算它的平方根,反之则显示出错。
打开一个新的前面板,并按照下图所示创建对象。
控制对象用于输入数值,显示对象用于显示该数值的平方根。
流程图
3.2.照下图创建流程图。
图2-7 练习2-4的面板和流程图
1.从Functions»Structures中选择一个Case结构,并放置在在流程图中。
Case结构是一个可以改变大小的方框。
先来做Ture的情况,照流程图上半部分构造。
(Functions»Comparison)——如果输入数值大于或者等于0就会返回一个TRUE值。
SquareRoot函数(Functions»Numeric)——返回输入数值的平方根。
连好线
2.点击Case框的选择按钮,转入False情况编程
数值常数(Functions»Numeric)——这里用于显示错误的代数值-999.00。
OneButtonDialog函数(Functions»Time&Dialog)——在这里它用于显示一个对话框,内容是Error...。
3.字符串常数(Functions»String)——用EditTextTools在对话框中输入字符串。
4.该VI在TRUE或者FALSE情况下都会执行。
如果输入的数值大于等于0,VI会执行TRUECase,返回该数的平方根,否则将会输出-999.00,并显示一个对话框,内容为Error...。
5.返回前面板,运行该VI。
修改标签为Number的数字式控制对象的数值,分别尝试一个正数和负数。
注意,当把数字式控制对象的值改为负数时,LabVIEW会显示Case结构的FALSECase中设置的出错信息。
保存该VI到LabVIEW\Activity目录中的SquareRoot.vi。
4.顺序结构(SequenceStructure)
4.1在代码式的传统编程语言中,默认的情况是,程序语句按照排列顺序执行,但LabVIEW中不同,它是一种图形化的数据流式编程语言。
在图2-7左图中,假设有A、B、C、D4个节点,其数据流向如右图所示。
按照数据流式语言的约
图2-8 顺序结构的说明
定,任何一个节点只有在所有的输入数据有效时才会执行,所以图中,当且仅当A、B、C3个节点执行完,使得D节点的3个输入数据都到达D节点后,D节点才执行。
但是你要注意,这里并没有规定A、B、C3个节点的执行顺序。
在LabVIEW中这种情况下,A、B、C的执行顺序是不确定的,如果你需要对它们规定一个确定的顺序,那就需要使用。
图2-8中的右边是顺序结构的图标,它看上去像是电影胶片。
它可以按一定顺序执行多个子程序。
首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。
与Case结构类似,这多帧程序在流程图中占有同一个位置。
4.2使用顺序结构
目的:
创建一个VI,计算生成等于某个给定值的随机数所需要的时间。
打开一个新的前面板,并按照下图所示创建对象。
图2-9 前面板
我们约定数据是0到100范围的整数。
当前值用于显示当前产生的随机数。
“执行次数”用于显示达到指定值循环执行的次数。
匹配时间用来显示达到指定值所用的时间。
流程图:
图2-10 流程图(共3帧)
4.2.1.在流程图中放置顺序结构(Functions»Structures)。
4.2.2.用鼠标右键单击帧的边框,在快捷菜单中选择AddFrameAfter,创建一个新帧。
重复这个步骤,再创建一个帧。
共3桢。
4.2.3.选中第0桢,设置读取初始时间(子)程序
4.2.4.第0帧的下边框上含有一个小方框,其中有一个箭头。
这个方框叫做顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。
用鼠标右键单击第0帧的底部边框,选择AddSequenceLocal,创建顺序局部变量。
顺序局部变量显示为一个空的方块。
当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。
4.2.5.TickCount(ms)函数(Functions»Time&Dialog)——返回启动到现在的时间(以毫秒为单位)。
在这里例子里需要使用两个这个函数。
另一个在第2帧中。
4.2.6.按图连好线。
转入第1帧。
该帧是匹配计算,内含一个循环结构。
该图中使用的新函数有:
RoundtoNearest函数(Functions»Numeric)——在该例中,它用于取0到100之间的随机数到距离最近的整数。
NotEqual?
函数(Functions»Comparison)——在该例中,它将随机数和前面板中设置的数相比较,如果两者不相等会返回TRUE值,否则返回FALSE。
Increment函数(Functions»Numeric)——在该例中,它将While循环的计数器加1。
4.2.7.按图连好线。
转入第2帧在第0帧中,TickCount(ms)功能函数将以毫秒为单位表示当前时间。
这个数值被连到顺序局部变量,这样它就可以被后续的帧使用。
在第1帧中,只要函数返回的值与指定值不等,VI就会持续执行While循环。
在第2帧中,TickCount(ms)功能函数以毫秒为单位返回新的时间。
VI从中减去原来的时间(由第0帧通过顺序局部变量提供)就可以计算出花费的时间。
4.2.8.返回前面板,在NumbertoMatch控制对象中输入一个数值,执行该VI。
4.2.9.把该VI保存为LabVIEW\Activity目录下TimetoMatch.vi。
5.公式节点(FormulaNode)
公式节点是一个大小可变的方框,可以利用它直接在流程图中输入公式。
从Functions»Structures中选择公式节点就可以把它放到流程图中。
当某个等式有很多变量或者非常复杂时,这个功能就非常有用。
例如等式:
y=x2+x+1使用公式节点可以表示为:
图2-10 公式节点示意图
利用公式节点可以直接输入一个或者多个复杂的公式,而不用创建流程图的很多子程序。
使用文本编辑工具来输入公式。
创建公式节点的输入和输出端子的方法是,用鼠标右键单击第0帧的底部边框,选择AddInput(AddOutput)。
再在节点框中输入变量名称。
变量名对大小写敏感。
然后就可以在框中输入公式。
每个公式语句都必须以分号(;)结尾。
公式节点的帮助窗口中列出了可供公式节点使用的操作符、函数和语法规定。
一般说来,它与C语言非常相似,大体上一个用C写的独立的程序块都可能用到公式节点中。
但是仍然建议不要在一个公式节点中写过于复杂的代码程序。
下面这个例子显示了如何在一个公式节点中执行不同条件时的数据发送。
请阅读下面这段程序代码,如果X为正数,它将算出X的平方根并把该值赋给Y,如果X为负数,程序就给Y赋值-99。
if(x>=0)then
y=sqrt(x)
else
y=-99
endif
可以用公式节点取代上面这段代码,如下图所示:
注意:
公式节点中变量字母X,Y大、小写是有区别的,开方的函数sqrt(X)中函数名称是小写。
目的:
创建一个VI,它用公式节点计算下列等式:
y1=x3–x2+5
y2=m*x+b
x的范围是从0到10。
可以对这两个公式使用同一个公式节点,并在同一个图表中显示结果。
前面板:
图2-11 练习2-6的面板
1.打开一个新的前面板,按照上图(该图中包含运行结果)创建前面板中的对象。
波形图显示对象用于显示等式的图形。
该VI使用两个数字式控制对象来输入m和b的值。
2.按照下图创建流程图。
图2-12 练习2-6的流程图
在创建某个输入或者输出端子时,必须给它指定一个变量名。
这个变量名必须与公式节点中使用的变量名完全相符。
公式节点中,在边框上单击鼠标右键,在快捷菜单中选择AddInput,可以创建三个输入端子。
在快捷菜单中选择AddOutput,创建输出端子。
1.x的范围是从0到10(包括10),就必须连接11到计数端子。
2.BuildArray(Functions»Array)——在这个例子中,它用于将两个数据构成数组形式提供给一个多曲线的图形中。
通过用变形工具拖拉边角就可以创建两个输入端子。
3.返回前面板,尝试给m和b赋以不同的值再执行该VI。
4.把该VI保存为LabVIEW/Activity目录下的Equations.vi。
四、作业
1.说明循环和循环的区别
答:
For循环的结构由循环框、循环次数、计数端口组成。
要执行预先指定的循环次数,循环次数<1时都不执行;
While循环的结构由循环框、条件端口、计数端口组成。
只在条件端口接收到的值为False时才停止循环。
While循环不必知道循环次数。
不满足条件也要执行一次。
2.用结构编写一个小程序
3.用顺序结构编写一个小程序
4.使用公式节点时,如果输入变量的名称同输出变量的名称相同会怎么样?
前面板
后面板
实验3LabVIEW图形、数组、簇编程实验
一、实验目的
1.学习如何创建数组和簇,掌握它们的区别以及相应的操作。
2.学习并掌握Chart和Graph的使用,了解他们的区别。
3.Chart的三种显示模式。
二、实验设备
安装有LabVIEW7Express的计算机。
三、实验内容
1.数组
数组是一些具有相同类型的元素组成的集合。
数组包含两方面的内容:
元素和维数。
数组中的元素可以是数字、布尔、字符、路径、波形和簇等数据类型。
建立数组的步骤如下:
1)从数组和类子模板(Control→AllControls→Array&Cluster)上选中数组(Array),放置在前面板设计窗口中,此时为一个数组空壳,可以向里面添加(用拖拽的方法)数字、布尔、字符等数据类型的控制器或指示器,来建立相应的数组控制器和指示器。
此时可以看到数组上有如下两个显示窗:
●标号显示窗——标号从0开始,每单击一次“增加”键,标号显示值顺序递增。
这个标号就是数组元素的序号;对于一个含n个元素的数组,其标号为0~n-1。
●元素显示窗——用来显示元素的数值。
数组中的元素按序号排列。
数组元素的查找按行/列标号进行。
2)右键单击标号窗口,弹出一个快捷菜单(如图3-1所示),选择AddDimension来增加数组的维数。
每单击AddDimension选项一次,维数就增加一维。
图3-1增加数组维数
2.簇
簇相当于一个容器,容器中的元素可以是各种不同的数据类型。
也就是说,可以在一个簇中放置控制模板上的各种控件,如数字控件、布尔控件、数组控件等,但是不能将输入控件和输出控件同时放入其中。
因此,在编辑流程图时,可以减少连线数以及连线的节点数,最终简化流程图。
它有多个输入,一个输出。
要建立簇,可选择控制模板中数组和类子模板(Control→AllControl→Array&Cluster)上的Cluster,将其调入前面板。
向类控件中放入元素,即将控制模板中的相应控件放入其中,俗称把元素“捆绑”在一起。
右键单击簇控件的边框,弹出一个快捷菜单,如图3-2所示。
图3-2簇
快捷键菜单中前8项的功能与数字控件相同,后3项说明如下:
●
ReorderControlInCluster——用于设置类控件中各元素的排列顺序,这个排列顺序是输出信号的顺序,如图3-3所示。
图3-3ReorderControlInCluster举例图3-4AutoSizing设置
●AutoSizing——单击该选项后,出现如图3-4所示的快捷菜单,选择相应的选项,可自动调节类控件的边框大小以及排列方式。
●Properties——用来定义类控件的一些属性,如上述的“AutoSizing”,改变标签(Label)的名称等内容。
数组和簇的区别如下:
●簇可以包含不同的数据类型,而数组仅可以包含相同的数据类型。
●簇具有固定的大小。
3.图形子模板
LabVIEW的图形子模板(Control→AllControl→Graph)提供完成各种图形显示功能的控件。
这里主要介绍图形子模板中3种常用的控件:
WaveformChart,WaveformGraph和XYGraph。
1)WaveformChart控件
它完成信号的动态显示,即每接收到一个(或一组)数据,就立即显示一个(或一组)数据,但显示的所有数据的总个数或波形的长度是一定的。
有3种模式:
●StripChart——每接收一个新数据,该数据显示在前一个数据的右侧,当曲线到达显示区的右边缘时,原有数据曲线左移。
●ScopeChart——当数据曲线到达显示窗口的右边缘时,曲线被清除。
●SweepChart——在新数据开始的地方出现一条竖直线,随曲线右移。
右键单击WaveformChart,弹出一个快捷菜单,主要功能如下:
a)VisibleItems
当选择VisibleItems选项时,弹出子菜单如图3-7所示。
图3-7VisibleItems子菜单
b)Create
选中Create,弹出得快捷菜单如图3-8所示,可以用来创立局部变量和属性节点、设置WaveformChart的参数和调用节点。
图3-8Create子菜单
c)XScale
单击XScale,弹出的快捷菜单如图3-9所示。
图3-9XScale子菜单
d)Properties
单击该选项后,探出一个对话框,可从中设置Chart的一些参数性质,也可以看作是以上介绍的一些选项功能的集合。
2)WaveformGraph
它用于完成信号的静态显示,用于数据处理结果的显示。
它与WaveformChart菜单的主要区别为:
一是没有ChartHistoryLength选项;二是在VisibleItems选项中增加了CursorDisplay选项,用该选项可以跟踪特点的数据变化过程。
3)XYGraph
它用于显示数据坐标{X,Y}之间的函数关系,即控件的横轴为X,纵轴为Y。
它与WaveformGraph菜单相比,主要区别是没有TransposeArray选项。
●Chart和Graph的区别在于它们的数据显示和更新方式。
Chart用来实时显示数据,新得到的数据不断代替老数据;Graph用来将已获得的全部数据一起显示在图表中。
●WaveformGraph和XYGraph的区别为:
前者用来绘制均匀采样的波形,后者是通常意义上的笛卡尔图。
如果数据出现的间隔没有规律,或者想要绘制的两个变量之间相互依赖,则使用后者。
四、例子
利用For循环建立一个一维数组并给出数组中的元素个数;建立一个二维数组给出数组中元素个数,并计算出最大、最小值。
程序框图如图3-10所示。
●
RandomNumber(Functions→AllFunctions→Numeric→RandomNumber)——产生一个0~1之间的随机数。
●
ArraySize(Functions→AllFunctions→Array→ArraySize)——给出数组的大小。
输入为一维数组时,输出数组的个数;输入为二维数组时,输出值为一个一维数组。
●
ArrayMax&Min(Functions→AllFunctions→Array→ArrayMax&Min)——给出输入数组中元素的最大值、最小值。
前面板如图3-11所示。
图3-10框图程序
图3-11前面板
五、作业
1.简述Chart和Graph的区别。
答:
Chart和Graph是LabVIEW图形显示功能中的两个最基本的元素,从词义两者很难区分,但在LabVIEW使用中有着根本的区别:
Chart一般可称为“记录图”,他将数据在坐标系中实时逐点(或者一次多个点)的现实出来,可以反映被测物理量的变化趋势,与传统的模拟示波器、波形记录仪的显示方式相似。
Graph则是对已经采集的数据进行事后处理,他先得到所要的数据,然后根据实际要求将这些数据组织成所需的图形一次性显示出来。
简单地讲,Chart是一点一点地描绘数据,而Graph是一块一块地描绘数据。
两者所要求的数据类型有所不同。
2.Chart的三种工作模式是什么?
简单介绍各自的工作方式。
答:
StripChartMode这是默认模式。
在这种模式下,波形从左到右开始绘制,当新一点超出右边界时,整个波形顺序左移。
ScopeChartMode在这种模式下,波形同样从左到右开始绘制,
但当新一点超出右边界时,整个波形将被清屏刷新,波形显示从左界重新开始绘制一条新的图线。
示波器显示模式明显快于条幅式,因为它无需处理滚动过程所需的时间。
SweepChartMode选用这种模式时与示波器式类似,波形也由左至右开始回执,不同的数据到达右边界时,不见显示区清空,而是用一条垂直的红色线界定新数据电器店,磁县所新的数据的到达在显示区内横移。
3.对于下面的二维数组,回答如下问题:
2
4
7
5
1
6
9
3
4
5
2
5
8
4
9
1)[1,3]中的元素值是什么?
3
2)在对此二维数组使用ArraySubset函数时,如果输入为:
index=2,
length=3,
index=3,
length=2,
输出是什么?
答:
index=2,length=3,后面板:
图一;前面板:
图二。
图一
图二
index=3,length=2,后面板:
图三;前面板:
图四。
图三
图四
4.簇和数组的区别是什么?
数组是一些具有相同类型的元素组成的集合。
数组包含两方面的内容:
元素和维数。
数组中的元素可以是数字、布尔、字符、路径、波形和簇等数据类型;
簇相当于一个容器,容器中的元素可以是各种不同的数据类型。
也就是说,可以在一个簇中放置控制模板上的各种控件,如数字控件、布尔控件、数组控件等,但是不能将输入控件和输出控件同时放入其中。
实验4字符串、文件I/O和属性节点编程实验
一、实验目的
学习字符串方面的知识。
用LabVIEW编写一些简单的VI数据管理程序,以完成对文件的输入/输
出控制。
了解属性节点如何作为前面板转换的方法。
学习不同的字符排列方式
学习从一个用户接口访问文件。
学习特性节点的执行次序。
二、实验设备
安装有LabVIEW7Express的计算机。
三、实验原理
1、字符串
一个字符串是指一个可显示或不可显示的ASCⅡ字符序列,不可显示的字符如换行符、制表位等。
字符串为信息和数据提供了一个独立的平台格式。
如图所示为字符串函数面板。
以下各项列出了更多字符串的常用范围:
●创建简单的文本信息。
●以字符串的形式传输数值型数据到仪器,并重新把这些字符串转换为数字数据。
●存储数值型数据到磁盘。
要以ASCII文件的形式存储数值型数据,必须在数值型数据写入磁盘文件之前把数值型数据转换为字符串。
●以对话框形式对用户做出指示或提示。
在前面板中,字符串以表(table)、文档条目框以及标题的形式出现;在框图中,使用字符串函数对字符串进行编辑和操作。
在Functions→AllFuctions→String中找到字符串函数板,并可以以如下方式对字符串进行编辑:
●寻找、检索以及在一个字符串里更换字符或子串。
●在一个字符串里把所有的文本文档改为大写或小写。
●在一个字符串里寻找和检索匹配的模式。
●在一个字符串里检索一个队列。
●在一个字符串里旋转和反转一个文本文档。
●连接两个或更多的字符串。
●在一个字符串里删除字符。
要想在其他VI、函数