第1篇 LabVIEW基本使用
项目1 认识LabVIEW
1.1 任务1 认识虚拟仪器
1.1.1 虚拟仪器简介
在了解什么是虚拟仪器(Virtual Instrumentation,VI)之前,这里先简单回顾一下仪器技术的演进历程。在测试、测量领域,仪器经历了与电话类似的发展过程。它们或者被植入CPU、内存中,安装上软件,具备了计算机的基本功能;或者被拆解开来,取其核心部件插入到计算机中去,使计算机具备测试功能。这两种发展方向都使得仪器的功能更强大,速度更快,而其区别之处在于,把仪器移植到计算机中,更多考虑的是降低成本;而把计算机移植到仪器中,则更多的是为了满足仪器小型化的需要。
在计算机运算能力强大到一定程度之后,以“虚拟”为前缀的各项技术开始纷纷出现,比如虚拟现实、虚拟机和虚拟仪器等。虚拟现实是指用计算机表现真实世界;虚拟机是指在一台计算机上模拟多台计算机;虚拟仪器是指在计算机上完成仪器的功能。虚拟仪器的概念最早由美国国家仪器公司(National Instrument,NI)提出,虚拟仪器是相对于传统仪器来说的。在传统的实验室里做各种物理/电子学实验时,常常用到万用表、示波器等仪器,它们每台仪器就是一个固定的方盒子,它们所有的测量功能都在这个盒子内完成,这就是所谓的传统仪器。而进入到虚拟仪器时代,这种单一功能的方盒子开始逐渐被计算机所取代。
用户看不到传统仪器的方盒子的内部,更无法改变其结构。因此,一台传统仪器一旦离开生产线后,其功能和外观就固定下来了。用户只能利用一台传统仪器完成某个功能固定的测试任务,一旦测试需求改变,就必须再次购买满足新需求的仪器。而虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化应用的。灵活高效的软件能帮助用户创建完全自定义的用户界面(传统仪器的软件通常被称为固件,无法由用户改变),模块化的硬件能方便地提供全方位的系统集成(传统仪器就是一个个单独的盒子),标准的软硬件平台能满足用户对同步和定时应用的需求(传统仪器的平台各个厂商各不相同)。
虚拟仪器技术除了基础的信号采集部分,其他软硬件全部采用通用的计算机软硬件设备。这些通用的软、硬件设备可以低廉的价格进行升级,或者被使用者按自己意愿进行配置。比如,在虚拟仪器上,用户可以通过升级CPU来加快仪器的处理速度,可以自己编写程序来改变仪器的测试功能和交互界面。图1-1给出了传统仪器与虚拟仪器之间的结构对比。我们很容易在图1-1b中找到虚拟仪器所独有的灵活高效的软件、模块化的硬件以及标准的与通用PC相兼容的软硬件平台。
图1-1 传统仪器与虚拟仪器的结构对比
a)传统仪器 b)虚拟仪器
在后面的项目中将介绍如何构建一个典型的虚拟仪器测控系统,这里首先来认识一个常常与“虚拟仪器”成对出现的名称——LabVIEW。在很多情况下,LabVIEW容易和虚拟仪器混为一谈,这里有必要着重指出,虚拟仪器技术依赖于灵活高效的软件+模块化的硬件+标准的软硬件平台,而LabVIEW是灵活高效软件的最重要代表之一。
1.1.2 LabVIEW简介
实验室虚拟仪器工程平台(Laboratory Virtual Instrumentation Engineering Workbench,LabVIEW)是NI创立的一种功能强大而又灵活的仪器和分析软件应用开发工具,它是一种编程语言,与其他常见的编程语言相比,其最大的特点就是图形化的编程环境。
常见的编程语言(如C语言等)都是文本式的编程语言。文本语言是抽象的,但是效率高,能用简短的语言表达丰富的含义。而对于使用者而言,无疑需要花费较长的时间和较多的精力去熟悉精通这些语言。
对于大多数的工程师,尤其是非精通软件的工程师,他们的精力更多的是投入在所希望实现的功能上,而非编程语言的掌握上。NI提供的这样一款图形化的编程软件,恰恰符合了这样的需求。对于软件初学者,LabVIEW只需要两、三天便可以入门,工程师就可以运用LabVIEW来实现很多简单的功能。
LabVIEW不但在设计程序前界面部分使用了图形化的方式,在程序代码的编写和功能实现上也使用了图形化的方式。由于LabVIEW采用的是图形化开发环境,所以也经常会被称为G语言(Graphical Programming Language)。LabVIEW不仅可以应用于测控行业,而且被广泛地用于仿真、教育、快速开发、多硬件平台的整合使用等方面。同时LabVIEW还支持实时操作系统和嵌入式系统(如FPGA等)。
1.2 任务2 认识VI
1.2.1 VI简介
VI有两个含义,其一是虚拟仪器(Virtual Instrument)的缩写(虚拟仪器是一门技术,是基于计算机技术,包含硬件和软件两大组成部分),另一个含义是LabVIEW程序。以往称文本式编程语言所编写的代码为源代码,称使用LabVIEW编写的代码为VI,LabVIEW程序的扩展名为.vi。简单地讲,“一个VI就是一个LabVIEW程序”。
与文本编程语言中所说的主函数、子函数类似,VI也有主VI和子VI,它们在编写过程中没有什么本质差别,只是称被调用的VI为子VI,而调用者即为主VI。
1.2.2 VI的组成
打开LabVIEW2011有两种方式,可以通过用鼠标双击桌面快捷方式,或者在开始菜单中运行“National Instruments LabVIEW 2011 SP1”。LabVIEW 2011的启动窗口如图1-2所示。启动界面的右边是LabVIEW给用户提供的丰富资源,下方有一个范例查找器,提供了丰富的例子,使用者可以查找其中的范例进行相关的学习。也可以在菜单栏的“帮助”中打开范例查找器。启动界面的左边是用来创建、打开程序和项目的选项。
图1-2 LabVIEW 2011的启动窗口
1.新建VI
在LabVIEW中新建一个VI有多种方法。
1)在启动窗口的左侧选择“新建”下的“VI”,就可以创建一个空白VI;选择“基于模版的VI”,可用来创建一个基于模版的VI;选择“更多”可以选择其中更多的模版来创建基于模版的VI或者项目。
2)选择“项目”就可以新建一个项目,弹出图1-3所示的“项目浏览器”窗口。在图中的“我的电脑”上用鼠标右键单击,从弹出的快捷菜单中选择“新建”→“VI”,即可创建新的VI。
图1-3 “项目浏览器”窗口
3)在前面板或者程序框图的“文件”菜单中选择“新建VI”。
新创建的VI窗口如图1-4所示。从图中看到,一个完整的VI包含3大组成部分,即前面板、程序框图、图标/连线板。
图1-4 新创建的VI窗口
LabVIEW的前面板和程序框图的窗口与Windows下的其他软件(比如Office)类似,最上面是标题栏,标题栏下面是菜单栏,接着是工具栏。工具栏下面是工作区域,用户可以在这里编辑用户界面或程序框图。与其他软件不同的是,在前面板和程序框图窗口的右上角都有一个图标/连线板。前面板是图形化用户界面,相当于实际仪器仪表的面板,而程序框图用来定义该仪器仪表的功能,相当于仪器仪表内部的功能部件。
2.LabVIEW菜单栏
LabVIEW的菜单栏有两种,一种是下拉菜单,另一种是快捷菜单。下拉菜单与其他软件类似,不进行详细介绍。快捷菜单在控件、函数和连线等处单击鼠标右键时就会出现。LabVIEW有着丰富的右键功能,在后面的相关章节会详细介绍。
(1)工具栏
1)前面板工具栏。
程序运行键。若程序运行键变为,则说明此时程序框图中有错误。比如有断线、对必需的端口未连接连线端子和子VI不能运行等。
连续运行键。连续运行当前程序。
中止执行键。强制停止所运行的程序,一般不推荐使用该按键停止运行的程序,强制停止可能导致已占用的资源未完全释放。
暂停键。在连续运行时,用来暂停程序,如需继续运行,再单击该按键即可。
文本设置键。修改当前选中的文本的字体、大小和颜色等。
分别是对齐对象、分布对象和调整对象大小,用来排布当前选中的控件的排列方式以及大小,如中心对齐、左对齐和右对齐等距排布控件,依据某控件大小修改所有选中控件的大小。
重新排序键。可用于锁定控件或背景图片以及置前或置后。
搜索键。用来查找需要帮助的内容。
即时帮助键。用来打开和关闭即时帮助窗口。
2)程序框图工具栏。程序框图工具栏中相同图标与前面板功能相同,其中:
亮显示键。调试程序单击该按钮,放慢程序运行速度,查看经过每个节点的数据是否正常。
保留连线值。单击该按钮,可以保留上一次运行时每个数据线上的数据,若使用探针(probe)查看,则可以看到之前一次的数据。
单步调试程序按键。
整理程序框图连线。
以上所有的描述都可以在LabVIEW的帮助文档中找到相关的说明。
(2)“工具”选板
“工具”选板是经常使用的一个工具,如图1-5所示,在前面板和程序框图中都可以使用。如果该选板没有出现,则可以在菜单栏下选择“查看”→“工具选板”命令来显示,或者在空白处按<Shift>键+鼠标右键。工具选板的默认状态是选择上方的“自动工具选择工具”和“选择”,此时,“自动工具选择工具”的指示灯亮,而箭头形状的“选择工具”处于选中状态。在这种状态下,当光标移动到某个对象上时,会根据这个对象与其他对象当前的关系,自动选择一种合适的工具。当自动选择工具不适合时,可以手动选择需要的工具。在选择了任一种工具后,鼠标箭头就会变成该工具相应的形状。“工具”选板中各工具的具体功能含义见表1-1。
图1-5 “工具”选板
表1-1 “工具”选板中各工具的具体功能含义
当需要对程序的前面板、控件、程序框图和各种结构修改颜色的时候,用户可以选择“工具”选板下方的“设置颜色”选项,选择自己所需颜色即可。需要注意的是选项,是一个透明色的填充(Transparent)。
1.2.3 VI的前面板
前面板是图形化的人机界面,用于设置输入量和观察输出量,它模拟真实仪器的前面板。如同真实的仪器仪表一样,要对它输入参数并观察测量结果。虚拟仪器在前面板也提供了实现这样功能的控件。其中,输入量被称为Controller(输入控件),用户可以通过控件向VI中设置输入参数,如旋钮、开关和按钮等;输出量被称为Indicator(指示控件),如图形、图表和指示灯等,VI通过指示器向用户提示状态或输出数据等信息。这些控件可以从“控件选板”中选择。
打开控件选板有两种方法,一是在菜单栏里选择“查看”下的“控件选板”,或者用鼠标右键单击前面板空白处,都会出现图1-6所示的“控件选板”对话框。
图1-6 “控件选板”对话框
1.控件选板
控件选板默认类别为“Express”面板。在选板的上端有“搜索”和“查看”两个键,单击“搜索”按钮可以查找需要的控件。单击“自定义”按钮会出现下拉菜单,如图1-7a所示。在菜单中可选择查看“控件选板”的方式。
图1-7 更改可见类别窗口
a)单击“自定义”出现下拉菜单 b)“更改可见类别”对话框
选择其中的“更改可见类别”,弹出图1-7b所示“更改可见类别”的对话框,勾选里面的复选项,单击“确定”按钮,回到控件选板,就会看到所有选中的类别。也可以单击控件选板下端展开,看到所有类别选项。注意,控件选板可以通过拖动标题栏移动到任意位置,控件选板的大小也可以通过拖动边框和四角任意拉伸。
控件选板里的许多控件外观都很形象,尤其“新式”子选板里面的控件,也比较美观,这里重点介绍。在图1-7中,单击“自定义”按钮,打开“更改可见类别”对话框,勾选“新式”选项,单击“确定”按钮,回到控件选板。在控件选板中单击“新式”按钮,打开“新式控件”子选板,如图1-8所示。新式控件子选板包含以下几类控件。
图1-8 “新式控件”子选板
1)数值:数值的输入和显示。包括数值控件、滑动杆、滚动条、旋钮、仪表、温度计和颜色盒等。
2)布尔:逻辑数值的控制和显示。包含布尔开关、按钮和指示灯等。
3)字符串与路径:包含字符串、路径的输入和显示控件。
4)数组、矩阵与簇:包含数组、矩阵与簇的输入控件和显示控件。
5)下拉列表与枚举:包含下拉列表和枚举两类控件。
6)图形:包含二维和三维图形图表以及图片控件等,用于显示数据结果的趋势图和曲线图。
7)列表、表格:包含列表框、表格、树形和Ex-press表格等控件。
8)容器:包含分隔栏、选项卡、子面板和容器等,用于组合控件,或在当前VI的前面板上显示另一个VI的前面板。
9)I/O:包含将所配置的DAQ通道名称、VISA资源名称和IVI逻辑名称传递至I/OVI等的控件,与仪器或DAQ设备进行通信。
10)引用句柄:包含用于对文件、目录、设备和网络连接等进行的操作。
11)变体与类:包含变体和LabVIEW类,用来与变体和类数据进行交互。
12)修饰:包含各种图框、三角形、圆形等图形以及线段等,用于修饰和定制前面板的图形对象。
2.前面板的编辑
(1)放置对象
在前面板编辑人机交互界面,需要用到各种控件,比如输入数据、数值显示、波形显示以及开关按钮等。用鼠标在控件选板上选择需要的控件,将其拖放到前面板上,就可以设计前面板。
先在前面板上放置一些数值控件,即打开控件选板的“数值”子选板,选中“数值输入”控件,将其拖放到前面板上,面板上会出现“数值”控件。把该控件的标签“数值”改为“数值输入”。用同样方法放置一个数值输出控件,改名为数值输出。拖动控件选板右侧滚动条,找到旋钮、温度计、垂直刻度条和仪表等,拖放到前面板上。然后放布尔量,即打开控件选板的“布尔”子选板,选择“垂直摇杆开关”和“方形指示灯”,将其拖放到前面板上。放置对象的界面如图1-9所示。在菜单栏下打开“文件”下拉菜单,选择“保存”,VI名称为“前面板程序框图编辑”,窗口的标题栏内容由“未命名.vi”变为“前面板程序框图编辑.vi”。
图1-9 放置对象的界面
(2)调整对象
可以对图1-9中对象的位置、大小和颜色等进行修改。先把输入控件拖放到左侧、显示控件拖放到右侧。方法是将鼠标移动到对象上,当鼠标图标变成箭头时,按下左键,移动鼠标到合适位置,然后释放鼠标。如果不整齐,就可以使用工具栏上的对齐对象和分布对象键来调整。调整对象的窗口如图1-10所示,选中要对齐的对象,然后单击“对齐”按钮选择里面的对齐方式即可。在将对象移动对齐后的图1-10中,分隔线左侧为输入控件,右侧为显示控件。
图1-10 调整对象的窗口
改变对象的大小方法是,把鼠标移动到对象上,对象的边缘就会出现拖动句柄,将鼠标移动到句柄上,单击鼠标就可以任意拖动到合适的大小。例如,把指示灯和旋钮适当拉大。
改变对象以及背景的颜色要用到工具选板。打开工具选板,单击最下边的“设置颜色”,可以进行前景和背景颜色的修改,如图1-11所示。然后选择一个颜色,鼠标变成毛笔形状,单击要修改对象即完成颜色修改,例如将旋钮的颜色改为蓝色。如果对颜色的修改不满意,就可以在菜单栏打开“编辑”下拉菜单,取消该修改,其他修改也可以用同样方法取消。
图1-11 修改颜色
改变文字的颜色、大小字体和样式要用到工具栏里面的“文本设置”键。修改文本如图1-12所示。
图1-12 修改文本
LabVIEW支持剪切板,可以对面板上的对象进行复制粘贴,也可以把其他的图片文本等复制粘贴到前面板上,还可以使用<Ctrl>+<C>(复制)、<Ctrl>+<V>(粘贴)组合键来完成。例如将“数值输入”复制,粘贴后,出现新的数值输入控件“数值输入2”。要删除对象,只需选中对象,然后按键盘上的<Delete>键即可。
(3)控件的快捷菜单和属性修改
每个控件都有自己的属性,在控件上单击鼠标右键就会出现快捷菜单。不同类型的控件快捷菜单不尽相同,如图1-13所示,左侧为“数值输入”控件的快捷菜单,右侧显示控件为“仪表”的快捷菜单。在数值输入控件的快捷菜单中,有一个“转换为显示控件”选项;显示控件的快捷菜单里有一个“转换为输入控件”选项,可见输入控件和显示控件可以互相转换。
图1-13 不同类型的控件快捷菜单
在控件的快捷菜单中都有“属性”选项,在这个选项里面,可以进行一些属性设置。选中“属性”选项会打开“属性设置”对话框,进行外观、操作、数据绑定和快捷键等的设置。
对控件有些属性的设置,也可以不打开属性对话框,比如刻度范围的修改。以水平指针滑杆为例,滑杆默认刻度范围为0~10,要修改成-20~100,只需单击最小值处,输入“-20”,单击最大值处,输入“100”即可。刻度范围设置如图1-14所示。旋钮、仪表和温度计等也可以依样修改量程。
图1-14 刻度范围设置
1.2.4 VI的程序框图
程序框图是用来编写VI逻辑功能的图形化源代码的。在前面板上放置的控件是程序的数据接口称为Terminal(接线端子),而控件在程序框图中会以Icon(图标)的形式显示。在图1-15a所示Convert C to F.VI的前面板中,前面板有3个控件,分别是摄氏温度℃的数值、华氏温度F的数值以及温度计,在图1-15b所示的程序框图中有对应这3个控件同名的端子。在程序框图中看到控件图示就是前面板上控件本身的样子,这个是所谓的View As I-con(显示为图标)。在程序框图中用鼠标右键单击任意一个接线端子,将弹出的快捷菜单中的“显示为图标”勾选去掉,就可以将Terminal变为缩小版本。
图1-15 Convert C to F.VI的前面板和程序框图
a)Convert C to F.VI的前面板 b)程序框图
1.函数选板
除了与前面板控件对应的接线端子外,程序框图中还有函数(Function)、子VI(Sub VI)、常量(Constant)、结构(Structure)和连线(Line)等。在图1-15中有3个接线端子、两个函数和两个常量。
在LabVIEW的函数选板中包含了大量的结构、数据类型、定时函数、数学算法、各个硬件驱动和已安装的工具包等。在编程时可以选择所需函数,放置在窗口内,并用连线连接起来,以实现所需的功能。
打开函数选板有两种方式,一是在程序框图的菜单栏中单击“查看”按钮,在下拉菜单中选择“函数选板”;另一种方式是在程序框图的窗口内空白处用鼠标右键单击。打开的“函数选板”对话框,如图1-16所示。
图1-16 “函数选板”对话框
函数选板也可以像控件选板一样改变大小、位置和展开等。界面默认为“编程”子选板。下面简单介绍该选板,其他选板的内容在相关章节中介绍。
1)结构。包含程序控制结构命令,提供循环、条件、顺序结构、公式节点、全局变量和结构变量等编程要素。
2)数组。包含数组运算函数、数组转换函数和常数数组等。
3)簇、类与变体。包含簇的处理函数等。提供各种捆绑、解除捆绑、创建簇数组、索引与捆绑簇数组、簇和数组之间的转换以及变体属性设置等功能。
4)数值。数学运算、标准数学函数、各种常量和数据类型变换以及各种数值常数等。
5)文件I/O。包含处理文件输入/输出的程序和函数。
6)布尔。包含各种布尔运算函数、布尔常量等。
7)字符串。包含各种字符串操作函数、数值与字符串之间的转换函数以及字符(串)常量数等。
8)比较。包含数字量、布尔量和字符串变量之间比较运算功能的函数等。
9)定时。包含时间计数器、时间延迟、获取时间日期和设置时间标识常量等。
10)对话框与用户界面。包含各种按钮对话框、简单错误处理、颜色盒常量、菜单、游标和简单的帮助信息等。
11)波形。包含创建波形、提取波形,数-模转换和模-数转换等处理工具。
12)应用程序控制。包括动态调用VI、标准可执行程序等功能的函数。
13)同步。包含提供通知器操作、队列操作、信号量和首次调用等功能的工具。
14)图形与声音。包含声音、图形和图片等功能模块。
15)报表生成。包含提供生成各种报表和简易打印VI前面板或说明信息等功能模块。
2.程序框图的编辑
1)在前面板切换到“程序框图”的方法主要有:
①通过菜单栏的“窗口”下拉菜单选择“显示程序框图”。
②使用<Ctrl>+<E>组合键,实现前面板与程序框图之间的切换。
③选中前面板上的任意控件,双击鼠标左键。
打开“前面板程序框图编辑.vi”,切换到“程序框图”窗口,如图1-17所示。图1-16中包含与前面板上控件一一对应的端子,同样使用<对齐><分布>键,把所有对象排列整齐,并且将输入端子放在左侧,显示端子放在右侧。观察发现,输入端子的右侧和显示端子的左侧都有一个“△”符号,当将鼠标移动到该位置时,会出现一个接线端子,同时鼠标变成线轴形状的连线工具。
图1-17 “程序框图”窗口
在程序框图中要实现一定功能,光有接线端子是不够的,还需要放置相关的函数。比如在本例子中,放一个加法运算函数。加法运算函数的位置在函数选板→编程→数值里面。打开数值子选板,把“加法”函数拖放到程序框图面板上。加法函数有两个输入和一个输出端子,使用时,这三个端子必须都连接使用。
对该函数的使用如有疑问,可以查看它的帮助信息。
2)查看帮助信息的方法主要有:
①在前面板和程序框图窗口的右上角,即工具栏的右侧有个问号,是即时帮助开关,单击这个按键,可以通过该键打开或关闭“即时帮助”对话框,如图1-18所示。
图1-18 “即时帮助”对话框
②也可以使用使用<Ctrl>+<H>组合键打开或关闭。“即时帮助”对话框。
要想详细了解该节点,可单击窗口内的“详细帮助信息”,打开“LabVIEW帮助”窗口,如图1-19所示;还可以单击在“即时帮助”对话框左下角的3个按键:该按键可以隐藏或显示可选连线端口的解释;该按键可以锁定当前即时帮助窗口所显示的内容,使其不会因为鼠标的移动而改变其显示的内容;该按键用于打开LabVIEW的帮助文档,查看当前显示内容的详细帮助文档。
图1-19 “LabVIEW帮助”窗口
在一个接线端子的连接点单击鼠标左键移动鼠标,会出现一条虚线。将鼠标移动到下一个连接点,再单击鼠标,虚线就会变成实线,这样就完成了一个连接。如果需要转弯,那么只需要在转弯处单击一下鼠标即可,如图1-20所示。以此方法连接所有连接,把输入控件与显示控件直接或者通过运算函数相连,完成的程序框图如图1-21所示。
图1-20 编辑连线
图1-21 完成的程序框图
完成所有连接后切换至前面板,保存文件后,单击工具条上的连续运行键。鼠标操作输入控件,改变输入控件的数据,观察显示控件,会看到与它连接的显示控件数据跟随输入的变化而变化。VI运行时的前面板如图1-22所示。
图1-22 VI运行时的前面板
1.2.5 VI的图标和连线板
图标/连线板是VI的第3个组成部分。在前面板和程序框图的右上角都有“图标/连线板”的显示,用鼠标双击右上角的“图标”就可以打开图1-23所示的“图标编辑器”对话框,可以对其修改、涂色、写字等。这是图标修改的一种方式。若有自己喜欢的图片,则可以通过直接拖拉图片至前面板右上方图标的位置,替换掉VI的已有图标,这是图标修改的另一种形式。
图1-23 “图标编辑器”对话框
连线板是LabVIEW的一个编程接口,为子VI定义输入、输出端口和这些端口的连接线端类型。当调用子VI节点时,子VI输入端子接收从外部控件或其他对象传输到各端子的数据,经子VI内部处理后又从子VI输出端子输出结果,传送给子VI外部显示控件,或作为输入数据传送给后面的程序。
用鼠标右键单击前面板“连线板”的位置(连线板定义如图1-24所示),可以打开快捷菜单,对该连线板进行模式选择、添加/删除端子等操作。端口的模式里面提供了多种端子数量和排列方式,如果模式中没有需要的类型,就可以通过添加/删除端子来修改。
图1-24 连线板定义
若要定义某个连线端口与某个前面板的控件相关联,可用鼠标单击连线板上的某个端口,再单击待选的控件即可。
一般情况下,VI只有设置了连接器端口才能作为子VI使用,如果不对其进行设置,调用的只是一个独立的VI程序,而不能改变其输入参数,也不能显示或传输其运行结果。
如希望编写的VI有如图所示的端口形式,则修改某端口的定义,就可以将当前VI的接口定义变为必需的(粗体),或推荐的(普通字体),或可选的(灰色字体)。
1.3 任务3 创建VI
1.3.1 创建一个简单的VI
下面,以一个简单的温度转换VI为例来介绍创建VI的步骤。
【例1-1】要求:实现将摄氏温度转换为华氏温度的功能,并在前面板显示摄氏温度和华氏温度。
操作步骤如下。
1)用鼠标双击计算机桌面上的LabVIEW图标,打开LabVIEW。
2)在启动界面里面选择选择左侧“新建”下的“VI”,新建一个VI。
3)在前面板上放置数值输入控件,用来输入待转换的摄氏温度;放置数值显示控件,用来显示转换结果。
①展开“新式”面板,选择其中的“数值控件”,展开数值控件面板。分别选择数值输入控件和数值输出控件,放在前面板上,为了形象起见,再放一个“温度计”,用来指示华氏温度。
②用鼠标双击数值输入控件上面的文本“数值1”,将其修改为“摄氏温度C”,用同样方法把数值输出控件文本修改为“华氏温度F”,把温度计的量程更改为“-50~200”。
③打开菜单栏中的“文件”,在下拉菜单中选择“保存”,选择一个合适的位置,将程序命名为“Convert C to F”,此时在标题栏中就会显示“Convert C to F.vi前面板”。
4)在程序框图中实现转换功能,即华氏温度=摄氏温度×1.8+32。
①从前面板切换至程序框图,然后打开函数选板,选择“编程”→“数值”,展开“数值面板”,选择其中的“乘”、“加”两个函数,放置在程序框图窗口内。
②把所有元件连接起来。
③在乘法和加法的输入端各有一个空闲的连接点,需加一个常数。把鼠标移动到空闲的连接点上,单击鼠标右键,出现一个快捷菜单,选择“创建→常量”(如图1-25所示),然后输入数值即可。
图1-25 创建→常量
5)编辑图标/连线板。
①在图标/连线板上用鼠标右键单击,在弹出菜单中选择“编辑图标”,在图标上绘“CtoF”文字。
②在前面板图标/连线板处用鼠标右键单击,打开连线板,在连线板上用鼠标右键单击选择端口模式。由于该VI中有一个输入变量和一个输出变量,所以选择端口的数目为两个的模式即可。用鼠标单击连线板左侧矩形框,然后再单击“摄氏温度℃”控件,就完成了输入端的链接。用同样方法,把输出端子与“华氏温度F”连接起来。编辑好的连接器如图1-26所示。
图1-26 编辑好的连接器
6)完成程序框图编写后,保存程序为“Convert C to F.vi”,然后切换到前面板。在数值输入控件中输入待转换的摄氏温度数值,比如30℃,然后,单击工具栏中的“运行”键,观察输出数值控件的变化和温度计控件的变化。运行结果如图1-26所示。
7)输入不同的温度值,并验算计算结果。
1.3.2 子VI的创建和调用
与文本编程语言中所说的主程序、子程序类似,VI也有主VI和子VI,在编写它们过程中没有什么本质差别,只是被调用的VI称为子VI,而调用者称为主VI。
上例中创建的温度转换VI,就可以作为子VI被其他VI调用。一般情况下,子VI要进行图标/连线板的编辑,尤其是连线板。这样才能实现主VI与子VI之间的数据传递。如果没有数据传递,只是调用子VI执行,就可以不进行连接器编辑。图标编辑是为了在程序框图中能够明显区分各个子VI。
创建子VI的另一个方法是,在现有的VI中选定程序框图中的一部分内容作为子VI,如图1-27中的虚线部分所示。在“编辑”的下拉菜单中选择“创建子VI”,虚线部分就变成了一个图标。用鼠标双击该图标,打开子VI,可对其进行编辑和重命名等操作。
图1-27 创建子VI的另一个方法
1.4 任务4 数据流和运行及调试VI
1.4.1 数据流
LabVIEW作为一种通用的编程语言,与其他文本编程语言一样,它的数据操作是最基本的操作。LabVIEW是用“数据流”的运行方式来控制VI程序,数据流是LabVIEW的生命,运行程序就是将所有输入端口上的数据通过一系列节点送到目的端口。
下面通过一个例子来介绍数据流思想。打开前面创建的VI“Convert C to F.vi”,单击程序框图中高亮按键,然后单击运行按键,在程序框图中可以看到“小气泡”向后移动,这就是数据一步步地向后传递。
在LabVIEW的程序框图中,任意一个函数和子VI等都可称为一个节点,每个节点都有自己的输入端和输出端。所谓的数据流思想的重点在于,对于一个节点,只有当它所有的输入端口的数据都准备好以后,程序才会进入它内部执行其功能,然后将结果送至输出端口。如果有某个输入端口的数据因为一些算法,数据准备上有延时,那么该节点就会处于等待状态,直到数据送来以后,才进入其内部执行相关的算法。
在图1-28所示的Convert C to F.vi框图中,乘法和加法分别为一个节点,在乘法完成之前,它无法将乘法的结果传递给加法的输入端口,所以加法必然是在乘法完成之后才进行的。
图1-28 Convert C to F.vi框图
LabVIEW中的函数、子VI的输入端口都在左边,输出端口都在右边,编程的整个的方向也是从左至右的,所以好像数据流就是从左至右执行程序。这样的想法不完全正确,正确理解和使用数据流,可以更好地编写出用户所需功能的程序,不需要添加一些结构,就可以控制各个程序功能之前的执行顺序。
1.4.2 运行及调试VI
首先按照图1-29所示创建一个VI,命名为“调试练习.vi”,功能是实现两个数据x、y的加法、减法和乘法运算。
图1-29 调试练习.vi
1.找出语法错误
在编写VI的过程中,工具栏中的运行按钮有时为完整的箭头,有时箭头断开,如图1-29所示,即为断开状态。此时VI程序存在语法错误,程序不能被执行。单击这个断开的键就会弹出“错误列表”对话框,如图1-30所示。该对话框提示错误原因和警告信息。单击其中任何一个所列出的错误,选择对话框下方的“显示错误”,就会回到程序框图,且错误的对象上或端口就会变成高亮,此处“减法运算”变成高亮,错误原因是一个输入端子没有连接。把它连接到数据y,工具栏中的运行按钮就变为完整的箭头。
图1-30 “错误列表”对话框
2.高亮执行程序
在LabVIEW的工具条上有“高亮执行程序”键,单击这个键使它变成高亮形式,再单击“运行”按钮,VI程序就以较慢的速度运行,没有被执行的代码显示灰色,执行后的代码显示高亮,并显示数据流线上的数据值,如图1-31所示,可以根据数据的流动状态跟踪程序的执行。
图1-31 放置探针和探针监视窗口
a)放置探针 b)探针监视窗口
3.断点与单步执行
为了查找程序中的逻辑错误,有时希望流程图程序一个节点接一个节点地被执行。使用断点工具可以在程序的某一地点中止程序执行,用探针或者单步方式查看数据。当使用断点工具时,单击希望设置或者清除断点的地方。断点的显示是,对于节点或者图框表示为红框,对于连线表示为红点。当VI程序运行到断点被设置处时,程序被暂停在将要执行的节点上,以闪烁表示。按下“单步执行”按钮,闪烁的节点被执行,下一个将要执行的节点变为闪烁,指示它将被执行。也可以单击“暂停”按钮,这样程序将连续执行,直到下一个断点为止。
4.探针
可用探针工具来查看当流程图程序流经某一根连接线时的数据值。放置探针可从工具选板选择探针工具,再用鼠标左键单击希望放置探针的连接线;在流程图中使用选择工具或连线工具,在连线上单击鼠标右键,在连线的弹出式菜单中选择“探针”命令,同样可以为该连线加上一个探针。
在图1-31a中数据y的连线上,放置探针1,弹出图1-31b所示的探针监视窗口。在窗口中显示该探针位置、值和更新时间等信息。
1.5 思考题
1.参考例1-1创建一个VI,实现将华氏温度转换为摄氏温度的功能,并在前面板显示摄氏温度和华氏温度。
2.创建一个VI实现两个输入数据的加、减、乘运算,并显示数据的和、差与乘积。