LabVIEW全称Laboratory Virtual Instrument Engineering Workbench(实验室虚拟仪器工作台)。LabVIEW是美国国家仪器有限公司(National Instruments, NI)最核心的软件产品。LabVIEW是图形化编程语言,与C等文本编程语言相比,它在编程过程中有更详细的提示信息,如函数的功能、参数类型等等。
LabVIEW不但在程序界面设计时采用了与其它高级语言类似的图形化方式,更重要的是,它在编写程序代码、实现程序功能的时候,使用的也是图形化的操作方式。打开 LabVIEW的程序,看到的不是一行行的文本,而是由一条条彩色线段连接起来的、各式各样的小图形块。
G语言是图形化编程语言(Graphical Programming Language)的缩写。LabVIEW有时也被称为G语言。我们可以这样理解,LabVIEW是一种开发环境(类似的,Visual Studio也是一种开发环境),在这个环境下编写的代码就是G语言代码(类似于在Visual Studio下写出的C代码)。
LabVIEW具有良好的平台一致性。LabVIEW的代码不需任何修改就可以运行在常见的三大台式机操作系统上:Windows、macOS、Linux。除此之外,LabVIEW还支持各种实时操作系统和嵌入式设备。
1.LabVIEW的应用领域
(1).测试测量:大多数主流的测试仪器、数据采集设备都拥有专门的LabVIEW驱动程序,使用LabVIEW可以非常便捷地控制这些硬件设备。同时,用户也可以十分方便地找到各种适用于测试测量领域的LabVIEW工具包,这些工具包几乎覆盖了用户所需的所有功能。用户在这些工具包的基础上再开发程序就容易多了。有时甚至于只需简单地调用几个工具包中的函数,就可以组成一个完整的测试测量应用程序。
(2).控制:LabVIEW拥有专门用于控制领域的模块:LabVIEW DSC。除此之外,工业控制领域常用的设备,数据线等通常也都带有相应的LabVIEW驱动程序。使用LabVIEW可以非常方便地编调各种控制程序。
(3).仿真:LabVIEW包含了多种多样的数学运算函数,特别适合进行模拟、仿真、原型设计等工作。
2.Windows10上安装LabVIEW社区版
(1).从https://www.ni.com/zh-cn.html 官网注册一个账号
(2).从https://www.ni.com/zh-cn/shop/labview/select-edition/labview-community-edition.html 点击"立即下载"选择LabVIEW社区版:版本选择:2024 Q1;包含的版本选择:"社区";如下图所示:名字为:ni-labview-2024-community-x86_24.1.1_offline.iso,注:社区版只有32位,没有64位;
(3).下载的iso文件使用7-Zip进行提取
(4).双击提取后的目录中的Install.exe文件,安装过程中:
1).接受许可协议,其它使用默认
2).激活:登录,点击"激活"按钮,如下图所示:
3).重启电脑
3.第一个LabVIEW程序,打开LabVIEW:NI LabVIEW 2024 Q1(32-bit)
(1).启动界面如下图所示:
(2).点击"Create Project":选中"Blank VI",点击"Finish",结果如下图所示:
1).LabVIEW程序被保存在"VI"中,LabVIEW的源代码文件被叫做"虚拟仪器(Virtual Instrument)",文件的后缀名为".vi"(Virtual Instrument的首字母缩写)。可以把VI理解为实现了一定功能的一个LabVIEW代码模块,相当于其它编程语言中的函数。
2).一个VI由两个窗口组成:灰色背景的是"前面板(Front Panel)";白色背景的是"程序框图(Block Diagram)"。前面板是程序与用户交互使用的界面。用户可以在这里输入程序运行所需的参数,观察程序运行的结果;程序框图是用户编写程序代码的地方。程序运行时的逻辑是由代码决定的。
(3).编辑VI前面板:设计界面。当VI的前面板成为活动窗口时,我们同时可能会看到另一个浮动的窗口,这就是LabVIEW的控件选板。这个浮动窗口也可能是被关闭的,可能没有出现。这时,需要鼠标右键在VI前面板空白的地方点击一下,控件选板就会以弹出菜单的方式显示出来。
点击"控件选板":Modern的"String&Path",进一步查看其子选板;继续用鼠标点击"String Indicator",再在VI的前面板上点击鼠标,此控件就被放置在VI前面板上了。我们也可以用鼠标直接把选中的控件拖拽到前面板上的某个位置。可以通过鼠标拖动控件,也可以调整控件的尺寸。如下图所示:
(4).编写VI程序框图:程序的逻辑功能是在程序框图中实现的。当我们在VI前面板上放置一个控件后,VI的程序框图上会自动增加一个与其对应的接线端。如下图所示:
1).在程序框图中把数据传给该接线端,程序运行后,前面板上的控件就显示出传入的数据。我们把字符串"Hello World!"传递给这个名为"String"的接线端,运行程序,界面上的"String"控件就会显示出这几个文字。
2).VI的程序框图窗口为活动窗口时,会同时出现一个与控件选板相类似的浮动窗口(或者在程序框图空白处点击鼠标右键弹出的菜单),这就是函数选板。函数选板的使用方法与控件选板一致,只是它上面的图标代表了控制程序运行的函数、结构、常量和LabVIEW自带的VI等。
3).与控件选板的操作相同,点击函数选板上的图标,依次进入"Programming -> String"子选板,找到"String Constant",用来存放"Hello World!",把"String Constant"拖拽到VI的程序框图中。此时,即可在"String Constant"内输入相应的文字。如下图所示:
4).LabVIEW通过连线来传递数据。将鼠标移至"String Constant"的右侧中间位置,鼠标会变成一个绕线轴的模样。这时点击鼠标,就会从"String Constant"上引出一根线,再在接线端的左侧中间位置点击一下鼠标,这两个对象就被一根连线连接起来了。如下图所示:
(5).在VI的前面板上,点击工具条上左侧第一个箭头图案的按钮,运行VI。即可以在VI前面板上看到程序运行的结果了。如下图所示:
若程序中有错误,工具栏上的运行按钮的箭头会变成断裂状,程序不能运行。按钮的名称也从"Run"变成了"List Errors"。此时点击这个按钮,会弹出错误列表对话框。如下图所示:必须按照列表中的提示,改正错误,修改好程序代码。待运行按钮恢复箭头状,程序方可运行。
(6).保存VI:在菜单中依次选择"File -> Save",再选择合适的路径和文件名,如文件名为hello_world.vi,如下图所示:
4.LabVIEW程序的运行逻辑
(1).LabVIEW不仅具有图形化编辑程序界面的功能,更重要的是,程序逻辑部分也是通过"画图"的方式实现的。编写LabVIEW程序时考虑的核心问题是数据如何在代码间流动。
(2).VI前面板和程序框图上的各种图形元素都被称为对象。VI前面板上最常见的图形对象是控件,用于输入或显示数据。前面板上有时也会有其他一些对象,比如纯粹用来装饰的,不包含程序运行数据的各种线条、图片等。VI程序框图中所有的图形对象可分为两部份:节点和连线。连线也被称为数据线,在上一段所编写的简单程序中,连接两个对象接线端之间的就是连线。连线在程序框图中很容易辨别。除此之外,程序框图中的其它对象统统被称为节点。
(3).节点又可被细分为多个类型,常用的有:
1).接线端:它与VI前面板上的某个控件相对应,用于读出或写入控件数据。接线端的功能与文本编程语言中函数的参数相类似,程序通过接线端(或者说是控件)进行数据交换。
2).函数:是LabVIEW自带的实现了某些功能的节点。函数实现的功能是最为基础的,不能再进行拆分。LabVIEW中的函数类似于文本编程语言中的操作符和自带的底层库函数。例如,LabVIEW中的加法函数与文本编程语言中"+"运算符相类似,LabVIEW中求字符串长度的函数与C语言中的strlen()函数或Python中的len() 函数功能类似。
3).结构:用于控制程序的执行顺序。它与文本编程语言中那些控制程序流程的关键字功能相类似。例如,LabVIEW中的for循环结构,与C或Python语言中的for 语句功能类似。
4).子VI:一个VI被其它的VI所调用,我们就称之为子VI。它与文本编程语言中子函数的概念是相似的。
5).装饰:VI的程序框图上还可以放置一些与程序运行无关的节点,比如一个背景图片、一段说明文字等等。它仅仅是为了让程序代码更容易被阅读和理解。这相当于文本编程语语言中的注释。
(4).在LabVIEW中,程序的基本执行顺序由连线来控制,即程序是沿着程序框图上的连线执行的。
(5).LabVIEW程序的执行顺序:一个数据从程序框图上的某个起始节点出发,沿着与它相连的数据线流动到下一个节点的某个输入端点。数据在这个节点被加工处理后,再从这个节点的输出端点沿着连线流出,流向下一个节点,直到流入某个终止节点为止。数据流动的顺序,也就是程序执行的顺序。因此,LabVIEW编写出来的程序被称为数据流驱动的程序。
(6).LabVIEW的每个控件都可以选择作为控制控件或是显示控件,这就决定了数据流动方向。作为控制控件时,数据从其接线端流出;作为显示控件时,数据从其接线端流入。默认情况下,一个控件是控制控件还是显示控件,取决于这个控件所代表的物理实体的特征。比如说,表示开关的控件,默认情况下是控制控件;而表示灯泡的则是显示控件。鼠标右键点击控件,在弹出的快捷菜单中有"Change to Control,Change to Indicator"等选项,可以用来改变控件的数据流向。
(7).函数以及子VI通常有多个接线端,并且这些接线端的方向是固定的。数据总是从函数的输入接线端流入,从输出接线端流出。
(8).数据线是可以有分叉的。数据从一个接线端流出,可以同时流向多个接收数据的接线端。数据沿着数据线流动至分叉处,数据会自动生成一个副本,变成两份一模一样的独立数据,分别传递到各自的下一个节点。后续的节点再分别对两份数据进行处理,两者不会相互影响(这是一个比较易于理解的描述方式,实际上LabVIEW并不一定在每个分叉都产生副本)。但反之则不可,即一个接收数据的接线端不能同时接受来自不同源的数据。
注:以上内容主要整理自:https://lv.qizhen.xyz/