LabVIEW应用-SubVI的调用

合集下载

Labview子VI创建与调用方法(适合初学者)

Labview子VI创建与调用方法(适合初学者)

首先打开labview创建一个子VI,要实现的功能是:输入两个数x,y,最后输出得到x+y-3;
程序,前面板如图所示:
右击左上角圈出位置选择模式为
三个框(即两个输入一个输出)
选好模式以后,然后开始确定输入和输出对应的接口,具体操作为鼠标单击任意方框(方框又白变黑)然后单击前面板上要对应的控件。

如下图所示:
然后依次操作
然后单击保存命名为:“子VI创建(x+y-3).VI”就可以调用啦。

调用过程如下:
打开labview程序界面,单击右键选择”选择VI”选项
然后选择”子VI创建(x+y-3).VI”
单击确定,放置调用的VI 于程序面板上,按下ctrl+H如下图可看调用的子VI有三个接线端
然后在三个接线端点击右键创建控件如下所示:
就此简单的子VI创建与调用就完成了。

本教程只是简单的描述子VI的调用方法,针对初学者学习很有帮助。

学会子VI的调用在以后的复杂编程中会很有用处。

Labview功能介绍之三

Labview功能介绍之三

探针
你可以用探针工具来查看当框图程序流经某一根 连接线时的数据值。从Tools工具模板选择探针工 具,再用鼠标左建点击你希望放置探针的连接线。 这时显示器上会出现一个探针显示窗口。该窗口 总是被显示在前面板窗口或框图窗口的上面。在 框图中使用选择工具或连线工具,在连线上点击 鼠标右键,在连线的弹出式菜单中选择“探针”
示。 • 图形子模板:显示数据结果的趋势图和曲线图。 • 路径和参考名(Refnum)子模板:文件路径和各
种标识的控制和显示。
控制模板包括的几个子模板(续)
• 控件容器库子模板:用于操作OLE、ActiveX等功能。 • 对话框子模板:用于输入对话框的显示控制。 • 修饰子模板:用于给前面板进行装饰的各种图形对象。 • 用户自定义的控制和显示。 • 调用存储在文件中的控制和显示的接口。
框图程序
框图程序是由节点、端点、图框和连线四种元素构成的
•节点 类似于文本语言程序的语句、函数或者子程序。
LabVIEW有二种节点类型----函数节点和子VI节点。两者
的区别在于:函数节点是LabVIEW以编译好了的机器代 码供用户使用的,而子VI节点是以图形语言形式提供给用 户的。用户可以访问和修改任一子VI节点的代码,但无法 对函数节点进行修改。上面的框图程序所示的VI程序有两 个功能函数节点,一个函数使两个数值相加,另一个函数 使两数相减。
功能模板包括的几个子模板(续三)
• 应用程序控制子模块:包括动态调用VI、标准可执行程 序的功能函数。
• 底层接口子模块:包括调用动态连接库和CIN节点等功 能的处理模块。
• 文档生成子模板。 • 示教课程子模板:包括LabVIEW示教程序。 • 用户自定义的子VI模板。 • “选择…VI子程序”子模板:包括一个对话框,可以

labview动态调用

labview动态调用

基本概念众所周知,LabVIEW程序又称虚拟仪器,即VI。

VI是由以下三部分构成:·前面板——即用户界面。

·程序框图——包含用于定义VI功能的图形化源代码。

·图标和连线板——用以识别VI的接口,以便在创建VI时调用另一个VI。

当一个vi可以应用在其它VI中,则称为子vi。

子vi相当于文本编程语言中的子程序。

在进行LabVIEW程序设计时,一个VI中可以包含一个或若干个子vi。

这些子vi是被直接放置在程序框图中,习惯上称这些子vi为:静态链接子vi。

这些子vi在VI载入的同时也被加载到内存中。

动态调用VI在应用程序设计时,我们希望能够自由地、任意切换操作界面和测量程序界面,并且希望在任何时候,前面板上仅运行一个程序界面。

这样就能够保证良好地、准确地实现“人机对话”。

完成这样的操作,就需要动态的调用不同的VI。

与静态链接的子vi不同,动态加载VI只有在打开VI引用时VI的调用程序才会将其加载。

如果VI调用程序较大,采用动态加载VI的方式可以节省加载时间和内存,这是因为在调用程序需要运行该VI以前无需将其加载,在操作结束后又可将其从内存中释放。

问题是:在涉及到动态调用的LabVIEW帮助文件中,看到了这样的概念:“严格类型VI”。

那么与此相对应一定还存在着:“非严格类型VI”。

似乎将VI分成了两种不同的形式?到底“什么是严格类型VI和非严格类型VI”?它们有什么内在联系和不同以及区别呢?前几天我还和NI的AE讨论这个问题,就是:“什么是严格类型vi和非严格类型VI”?但一直没有得到明确的答复。

察看一些LabVIEW的资料,也没有弄明白这个问题。

直到开始写这篇博客时,因涉及到这个概念,才开始对这个问题进行了仔细的分析,分析的结果似乎找到了一些答案。

严格类型vi:严格类型vi就是可以被其它VI调用的子vi(静态链接子vi)。

进一步说LabVIEW 提供的“函数”选板上的vi都是严格类型vi。

labview深入探索------全局变量、局部变量与内存管理

labview深入探索------全局变量、局部变量与内存管理

很多教科书上都提示要慎用局部变量和全局变量,主要有以下几个原因:违背了数据流的编程读取局部变量需要拷贝数据不能象SUBVI一样可以重用数据BUFFER不利于程序调试容易引起竞争我在论坛上看到很多初学者的程序,里面充满了大量的局部变量,可以这样说,当你使用了过多的局部变量的时候,你的程序结构是有问题的,在早期的LV版本中根本不存在全局变量和局部变量,同样可以编制规模很大的程序,这说明局部变量和全局变量并不是必须的,LV提供了它们是因为在特定的情况下可以简化编程。

当我们使用SUBVI时,我们需要定义一个连接器,包括输入输出端子,调用VI的数据从输入端子进入,当SUBVI未执行完毕时,数据是不会流出到输出端子的,因此,SUBVI可以重用调用VI的数据缓冲区。

而局部变量可以在子VI的任何位置被读写,局部变量在同一一个VI中,全局变量可以在任何VI中,所以通常情况下,无法重用数据缓冲区。

局部变量用于读写一个VI的前面板对象,对象是控制器或者指示器都可以,当我们读局部变量的时候,我们是在对象的当前状态,而对象在程序框图中的其它位置,其它的线程可能连续写这个对象,所以LABVIEW无法重用内存,不得不拷贝数据到新的缓冲区中,如果数据结构很大,就会占用相当多的内存。

很多情况下,局部变量都是可以避免的,看下面的例子。

上面图中的设计方式,在很多初学的程序中经常碰到,同样的数据要传到两个VI中,并且有次序要求,因此采用了顺序结构。

问题是根本没有必要用局部变量,局部变量导致了数据的复制。

上面的两个图完成同样的功能,一个仍然采用顺序结构,不过CLUSTER挪到了FRAME外面,通过隧道,将数据传入到两个子VI中,避免了使用局部变量。

但是顺序结构本身也是效率比较低的,也是NI不建议过度使用的.针对这个具体问题,最下面的是最好地解决方案,利用错误簇作为数据流实现了顺序处理,避免使用局部变量。

通过错误簇同时也有利于程序调试跟踪.另外一个明显的优点是程序框图更清晰明了,避免了在各个FRAME中进行切换.全局变量使用内存的方式类似于局部变量,不同的是每次读全局变量肯定要生成一份内存拷贝,而局部变量是有可能重用缓冲区的.当全局变量是一个比较大的数组或者字符串时,多处多次读操作会造成大量的内存复制,极大地占用内存,导致运行速度下降。

LabVIEW调用库函数节点技术

LabVIEW调用库函数节点技术

LabVIEW调用库函数节点技术LabVIEW提供了调用库函数节点(Call Library Function node,简称CLF),利用CLF,可以在LabVIEW中实现DLL和API函数的调用。

在LabVIEW中使用CLF 需要了解动态链接库里被调用的函数名称、功能及其输入输出参数等,下面将详细介绍在LabVIEW 8.6下利用CLF调用6050运动控制卡基于C语言编写的驱动程序[41]。

首先在框图程序中创建一个空的CLF,CLF位于“函数模板→互连接口→库与可执行程序子模板”,如图1-1所示,下面给出其详细的配置过程:图1-1 CLF节点图标(1)双击CLF图标弹出配置对话框,如图1-2所示,首先要指定6050控制卡动态链接库的库名或路径。

点击其右边的文件夹图标,打开一个文件对话框,找到6050运动控制卡的动态链接库文件“dfjzh6050dll.dll”所在位置。

(2) LabVIEW装载了DLL文件后会自动检测其所包含的函数,但不能检测函数中的参数及其数据类型,因此接下来的要参照DLL说明文件“dfjzh6050dll.h”及控制卡使用手册选择所要配置的函数名,设置函数参数。

(3)在调用规范中有“stdcall(WINAPI)”和“C”两个选项,它们的区别是,若调用函数为Windows标准共享库函数则选择“stdcall(WINAPI)”选项,若调用函数为VC环境下编译的库函数则选择“C”选项,本文选择“C”选项。

(4)在“线程”选项中选择“在UI线程中运行”。

至此,完成了所有配置选项,在CLF配置图最下方可以看到函数原型。

下面阐述配置CLF过程中需注意的两个问题:图1-2 CLF节点配置图Figure1-2 CLF Node Setting Chart(1) LabVIEW线程调用方式节点配置中,有两种线程调用方式,“在UI线程中运行”和“在任意线程中运行”。

“在UI线程中运行”表示在用户接口线程中调用,DLL的执行期将等到用户接口线程(在此即LabVIEW环境下的VI应用程序)执行DLL的导出函数调用时才开始;“在任意线程中运行”表示允许多个线程同时调用这个DLL。

利用LabVIEW进行仪器控制与测量

利用LabVIEW进行仪器控制与测量

利用LabVIEW进行仪器控制与测量LabVIEW是一款强大的图形化编程软件,广泛应用于仪器控制与测量领域。

它提供了丰富的工具和函数库,帮助工程师们实现高效可靠的仪器控制和测量任务。

本文将介绍如何利用LabVIEW进行仪器控制与测量,并分享一些实用的技巧和经验。

一、LabVIEW简介LabVIEW是由美国国家仪器公司(National Instruments,简称NI)开发的一款虚拟仪器编程环境。

它基于图形化编程思想,通过将各种仪器的控制命令和测量数据进行图像化的表示和连接,实现仪器的自动化控制和数据处理。

二、仪器连接与配置在使用LabVIEW进行仪器控制之前,首先需要确保仪器与计算机正确连接,并进行相应的配置。

LabVIEW支持各种通信接口,如GPIB、USB、以太网等,根据所使用的仪器接口,选择相应的硬件适配器并进行驱动程序的安装。

在LabVIEW开发环境中,选择适当的仪器控制器件和相应的驱动程序,并进行配置。

LabVIEW提供了一系列的仪器驱动程序,可以根据具体的仪器型号进行选择和安装,以确保与仪器的正常通信。

三、仪器控制程序设计1. 创建仪器控制 VI在LabVIEW中,一个程序被称为虚拟仪器(VI,Virtual Instrument)。

要创建一个仪器控制程序,首先打开LabVIEW开发环境,点击“新建”按钮,选择“空VI”创建一个新的虚拟仪器。

2. 编写程序代码在LabVIEW的开发环境中,程序代码被称为控件和功能块,通过将这些控件和功能块进行图形化的连接,实现仪器的控制和测量。

可以根据需要在界面上拖拽控件,如按钮、滑块、图表等,并通过功能块的参数设置来实现具体的仪器控制和测量任务。

3. 数据采集与处理LabVIEW提供了丰富的数据采集和处理函数库,可以方便地进行数据采集、数据存储、数据处理和数据分析等操作。

可以根据需求选择合适的函数,并将其与仪器控制程序进行连接,实现数据的自动采集和处理。

labview信号量的使用

labview信号量的使用

labview信号量的使用
关于信号量的使用,程序自带帮助文件的说明是这样的:信号量(互斥量)是用来保护对共享资源进行访问的一个对象。

被访问的共享资源的代码叫作关键临界段。

在同一时间,只有一定数量的任务可以访问信号量。

信号量以此方式保护对重要部分的访问。

通常情况下,一次只有一个任务可以访问被通用信号量保护的临界段。

但是,信号量可能允许一个以上任务(预定义值以下)访问重要部分。

如要指定同时访问被通用信号量保护的重要部分的任务数量,连接获取信号量引用VI的大小输入端。

该VI获取对现有信号量的引用或新建一个信号量,大小输入端指定同一时间可获取信号量的任务数量。

使用获取信号量VI可以
获取对一个信号量的访问。

如使用获取信号量引用VI创建的信号量的大小为1,则一次只有一个任务可访问信号量。

所以,必须使用释放信号量VI,释放
对信号量的访问。

这样,另一个任务才能访问信号量。

使用释放信号量引用VI,释放对信号量的引用。

注:只要非空闲的顶层VI引用了某个信号量,信号量就一直在内存中。


顶层VI为空闲,LabVIEW将释放该VI的全部信号量引用,包括顶层VI的子VI中的引用。

如LabVIEW释放上一个引用至命名信号量,LabVIEW将销毁信号量。

因为只能获取引用至一个未命名信号量的引用,当顶层VI空闲时,LabVIEW将销毁一个未命名信号量。

如要在多个顶层VI之间使用信号量,需为信号量命名并从顶层VI调用获取信号量引用VI,这样每个VI就有了对信号量的唯一引用。

将这些难懂的语言转化为我自己的语言吧:。

Labview实验一、Labview基本编程环境的使用和子VI的调用

Labview实验一、Labview基本编程环境的使用和子VI的调用

实验一、Labview基本编程环境的使用和子VI的调用一、实验目的(1)熟悉LabVIEW软件的基本编程环境。

(2)熟悉子VI的调用。

二、实验内容(1)创建一个VI程序,并将此程序保存为子VI。

此VI要实现的功能是:当输入发动机转速时,经过一定的运算过程,输出发动机温度和汽车速度值。

(2)创建一个VI程序,并在编写程序过程中调用上机练习一中创建的子VI。

此VI 要实现的功能是:通过旋钮控件来显示输入的发动机转速值,中间调用练习一中创建的子VI作为计算过程,从子VI输出的值分别输出至不同的数值显示控件来显示发动机的温度以及当前汽车速度,同时判断当汽车速度超过100时,系统将产生蜂鸣声,报警提示。

三、实验步骤练习一(1)新建一个VI。

(2)在前面板中放置一个温度计控件、一个仪表控件、一个数值输入控件,并修改标签名以及标尺刻度范围。

(3)做出前面板如图:(4)切换至程序框图窗口。

(5)从函数选板中选择相应的函数,拖入程序框图中,并连线,做好的程序框图如图:(6)单击运行按钮,运行VI程序。

调整发动机转速,观察前面板。

(7)修改图标为T/V以表示该子VI输出量为发动机温度T和汽车速度V。

(8)在前面板右上角的图标框中单击鼠标右键,从弹出的快捷菜单中选择“编辑图标”选项,将打开一个图标编辑器对话框。

(9)将编辑框中的缺省图标消除,然后画出所需的图标。

(10)在窗口的图标框中单击鼠标右键,从弹出的快捷菜单中选择“显示连接板”选项。

选择一种连接器。

(11)使用连线工具,在左边的输入连接器端口框内单击鼠标左键,进行连线。

并将右侧的两个接线端口分别与前面板中的发动机温度显示控件和汽车速度显示控件对应连接。

(12)保存文件,子VI创建完成。

练习二(1)新建一个VI。

(2)从控件选板中选择按钮控件并拖入前面板中,并修改标签名。

(3)修改旋转控件数值范围,在快捷菜单中选择“显示项→数字显示”,则调出一个数字显示控件来同步显示旋钮控件当前的值。

用到的Labview知识点: 属性节点、引用句柄、子VI、枚举、条件结构、连线板

用到的Labview知识点: 属性节点、引用句柄、子VI、枚举、条件结构、连线板

用到的Labview知识点:属性节点、引用句柄、子VI、枚举、条件结构、连线板
首先创建三态的子VI:
1.在前面板添加“枚举”控件以及Bool引用句柄,创建布尔引用句柄方法为:先添加“控件引用句柄”,然后右键→选择VI服务器类→通用→图形对象→控件→布尔,并勾选“包括数据类型”;
2.在程序框图添加“属性节点”,并和Bool引用句柄连线;
3.添加“条件结构”,并同“枚举”类型连接,其中“枚举”类型的“编辑项”属性中添加三态:default,run,fault;
4.在每态条件结构中分别定义“数组常量”,然后添加“簇常量”,并在“簇常量”中添加两个“颜色盒常量”,然后将这个“簇常量”整体放入前面定义的“数组常量”,并同“属性节点”连线;
5. 程序框图如下图所示:
6.在前面板中对子VI进行连接线定义:前面板中右键子VI图标,选择编辑图标,此处选取自己喜欢的子VI图标,并勾选显示接线端,退出编辑后,继续右键子VI图标,选择“显示连线板”,开始选取子VI的连线板,这里选择前面板中的“枚举”和“bool引用句柄”这两个输入,至此子VI建立完成,前面板如下图所示:
子VI建立好后,就可以设计一个指示灯,试验一下三态LED的运行情况了,我添加的一个简单VI如下图,这里注意的是要创建指示灯的一个bool引用:
程序建立完成后,就可以运行了,试验结果表明此VI能很好的实现三态LED显示。

labview如何调用子vi

labview如何调用子vi
键,此时我们选择调用的子程序就已经加入到程序框图里面了。
4、我们将此子程序的各个连接端口与主程序中的其他控件的节点按
照逻辑关系进行连接子程序的前面板,在SubVI的图标
上单击鼠标右键,然后在弹出的菜单中选择《设置子VI节点》,在接下来弹
出的对话框中选择《调用时显示前面板》即可,另外《运行时挂起》的意思
labview如何调用子vi
labview如何调用子vi
这种技巧经常用在多个参数顺序测量时,实现波形实时切换,显示当
前测试参数的波形。具体步骤为:在主VI中右键,单击选择VI,即可选择
需要调用的VI(子VI)。
在子VI图标上右键,勾选调用时显示前面板,即可在主VI调用子
VI的时候显示子VI的前面板。
子VI运行是的位置,由子VI的文件下拉菜单中VI属性决定。
LabVIEW子程序的调用方法
1、新建一个VI程序,然后在程序框图的空白处单击鼠标右键,在
弹出的函数选板中选择《选择VI》子选板。
2、在弹出的《选择需要打开的VI》对话框中找到我们需要调用的子
程序。
3、将我们刚才选中的子程序移至程序框图的合适位置,单击鼠标左
是运行的时候暂时停止。注意在调用子VI的时候,需要注意数据流的流向,
即只能向输入端口中输入数据,而不能从输入端口中向外输出数据。

第1篇 LabVIEW 基本概念第3章

第1篇 LabVIEW 基本概念第3章
上一页 下一页 返回
3.2 创建与编辑VI
• 这样,就完成了一个“乘” 节点的创建工作,如图3.2.7所示。 • 完成了程序框图所需的端口和节点的创建之后,下面的工作就是用数
据连线将这些端口和图标连接起来,形成一个完整的程序框图。 • 用连线工具将端口“a”和“b”分别连接到“乘”节点的两个端口
“x”和“y”上,将端口“c”连接到“乘”节点的输出端口“x ,适当调整各图标及数据连线的位置,使之整齐美观。完整的程序框 图如图3.2.8所示。 • 4.保存VI
• 1.选择对象
上一页 下一页 返回
3.2 创建与编辑VI
• 在“工具”选板中将鼠标切换为对象操作工具。 • 当选择单个对象时,直接用鼠标左键单击需要选中的对象;如果需要
选择多个对象,则要在窗口空白处拖动鼠标,使拖出的虚线框包含要 选择的目标对象,或者按住Shift键用鼠标左键单击多个目标对 象,如图3.2.10所示。 • 2.删除对象 • 选中对象按Delete键,或在窗口菜单栏中执行“编辑” → “ 删除” 命令,即可删除对象,其结果如图3.2.11所示。 • 3.变更对象位置 • 用对象操作工具拖动目标对象到指定位置,如图3.2.12所示。
• “Express”子选板中包含最常用的输入控件和显示控件,如 图3.1.5所示。
• “控件”选板有不同的可见类别,默认的类别是“Express” 子选板。
上一页 下一页 返回
3.1 LabVIEW 的操作面板
• 如果要将其他子选板设置为首选可见类别,可以选择控件工具栏的 “查看” → “更改可见类别” 选项,如图3.1.6所示。
上一页 下一页 返回
3.2 创建与编辑VI
• 完成颜色的选择后,用颜色工具单击需要改变颜色的对象,即可将对 象改为指定的颜色。

第14章 LabVIEW中子VI的设置及

第14章  LabVIEW中子VI的设置及

14.7 VI调用
对子VI的调用和使用,主要是在程序框图中直接调用。这种方法 也是最常用,应用最方便、最广泛的一种。
14.8 VI层次结构
当一个复杂的程序调用多个子VI后,某一个程序执行的错误和进 度都不好调试。所以LabVEIW软件提供了一个良好的工具,就是 层次化结构。它能很好地观察程序所有涉及的VI和布局层次。通 过“查看”|“VI层次结构”命令打开,如图14.7所示。
在编程完并设置好接线图标后,还要对子VI进行设置,才能保存。 在子VI的设置是一个有调用时的显示设置,这一步操作可以决定 在调用时能否显示此子VI程序和子VI运行的情况。通过“文 件”|“VI属性”命令打开文件的属性设置,如图14.2所示。
14.6 子程序优先级
子程序级允许VI以最有效的方式运行。设置成子程序级别的VI不 与其他VI共享执行时间。
14.9 小结
本章对子VI的设置进行了讲解,这也是编程中经常用到的一种方 法。子VI是对一些复杂的程序进行模块化、功能化的方法。进行 子VI的设置,可以对一个程序在不同的地方多次调用ห้องสมุดไป่ตู้省去了编 程中重复的麻烦。下一章将对编程中可能用到的其他技巧进行讲 解。
14.10 练习题
什么是子VI?它和VI有什么区别? 怎样设置一个VI的显示图标?
14.4 子VI节点设置对话框
右击程序框图上的一个子VI图标,从弹出的快捷菜单中选择设置 子VI节点,可显示该对话框。该对话框中显示的项是VI属性对话 框中项的子集。该对话框可对子VI仅设置当前实例的相关选项。 通过VI属性对话框中子VI执行的相关项,则可设置子VI每个实例 的相关选项。
14.5 保存与调用子VI
在子VI运行中要显示出此界面,该如何操作?写出操作过程。

LabVIEW使用技巧锦集

LabVIEW使用技巧锦集

LabVIEW使用技巧锦集LabVIEW使用技巧集锦一本地变量(local variable)与属性节点(property node)的不同我们知道在程序框图中,本地变量或属性节点无须与control(控制器)/indicator(指示器)直接连线就可用来传递“控制器”/“指示器”中的数值。

当然,属性节点还有非常多的使用方法,所以对本地变量与属性节点之间不同的讨论也仅限于传递数值这个特性上。

实际上,虽然它们从传递数值这个特性上有相同之处,但本质上还有许多不同的地方,只有充分了解它们之间的差异,才能有效、合理的在程序中使用它们。

<!--[if !supportLists]-->1、 <!--[endif]-->内存本地变量:建立本地变量实质就是对“控制器”/“指示器”中数据进行复制(copy),所以要占用内存,当为数组建立多个本地变量时,会占用大量的内存。

操作行为是读数据(Read)或写数据(Write)属性节点:建立属性节点实质上是对“控制器”/“指示器”中数据进行查询或置入,不会占用内存。

因为在部件创建时已经为此参数分配好了内存,多少有些像VB中的属性设置。

操作行为是查询(Query)数据或置入(Set)数据。

<!--[if !supportLists]-->2、 <!--[endif]-->执行速度本地变量:由于本地变量是对内存操作,所以运行速度很快。

属性节点:相对于本地变量来讲,属性节点的效率是很低的,或者说更占用CPU 的资源。

下面通过两个测试图来进一步说明二者之间的差异。

在图1中,我们使用一个for循环对Numeric的本地变量写10000次数据,并测量运行的时间,探针[1]显示出程序运行时间是:4mS。

图1 本地变量的10000次运行时间然后,我们将图1中的本地变量换成一个属性节点,见图2。

我们会看到10000次的操作运行时间是:2472mS。

LabVIEW编程入门

LabVIEW编程入门

实验1 LabVIEW编程入门1 实验目的(1)了解LabVIEW的基本概念和术语;(2)创建和编辑VI,创建和调用SubVI,以及运行和调试VI的基本方法。

2 实验任务(1)使用LabVIEW各个菜单及其相应功能;(2)任意创建SubVI,进行调用和调试。

3 实验步骤3.1 练习 1-1 打开LabVIEW,熟悉菜单前面板操作过程1 在New对话框的Create New:控件里选中Blank VI,单击OK后建立一个空的LabVIEW程序,如图1-1所示。

图标 控件模板 前面板窗口框图窗口图1-1 新建的空白LabVIEW 程序2 打开前面板分别熟悉控制(Control )、指示(Indicator)和装饰(Decoration)各类不同控件。

图 1-2 LabVIEW 中控制控件控制控件是以图形化的图标形式出现,例如图1-2中的数字控制、按钮、开关、旋钮、滑动条等等,用户可以通过鼠标或键盘更改控制中的数值。

图1-3 LabVIEW中指示控件指示控件也是以图形化的图标形式出现,例如图1-3中的速度表、温度计、水箱、LED指示灯、进程条、波形图等等。

(注:在VI处于运行状态时,用户不能通过鼠标或键盘更改指示中的数值)图1-4 LabVIEW中装饰控件装饰控件作用仅是美观前面板,在Controls模板中专门有个Decoration子模板,其中含有各种装饰图形,例如图1-4的线条、箭头、矩形、圆形、三角形等。

(注:在VI处于编辑状态时,只可以对装饰进行改变颜色和大小两项操作,不能对其进行编程;在VI处于运行状态时不能对装饰进行任何操作。

)框图操作过程框图程序由节点(Node)、端口(Terminal)和数据连线(Wire)组成。

1 节点:是VI程序中的执行元素,类似于文本编程语言程序中的语句、函数或者子程序。

正弦波发生器的框图程序就是一个典型例子,如图1-5所示。

图1-5 正弦波发生器框图程序在LabVIEW中共有4种类型的节点,包括功能函数(Function)、结构(Structures)、外部代码接口节点和子VI(SubVI)。

LabVIEW子VI

LabVIEW子VI

7
10.3 定义子VI属性

可重入子VI举例
8
10.3 定义子VI属性

10.3.2 设置子VI调用属性
9
10.3 定义子VI属性

利用显示子VI前面板来实现登录对话框
10
10.3.3 自定义子VI图标形状


第一步:在编辑VI图标界面选择Edit->Clear清除图标。 第二步:在256 Colors下画一个封闭的图形。为了方便与端子对 应,你可以选择Show Terminals复选框显示连接端子。 第三步:将画好的256色图标分别复制到16 Colors和B & W下, 确保三种显示模式所显示的图标形状一致。
2
10.1 创建子VI

其实任何VI本身就可以作为子VI被其它VI调用, 只是你需要在普通VI的基础上多进行两步简单 的操作而已:定义连接端子和图标。
3
10.1 创建子VI

Hale Waihona Puke 第一步:新建一个Blank VI,编写其程序框图 第二步:编辑VI图标。
4
10.1 创建子VI

第三步:建立连接端子。
引子


LabVIEW中的子VI(SubVI)类似于文本 编程语言中的函数。 通过子VI,我们可以把程序分割为一个 个小的模块来实现
1
本章内容


10.1 10.2 10.3 10.4
创建子VI 查看VI层次结构(VI Hierarchy) 定义子VI属性 多态(Polymorphic)VI
16

创建多态VI举例

多态VI对应的两个实例VI
13
10.4 多态(Polymorphic)VI

labview中设置文件位置的用法

labview中设置文件位置的用法

LabVIEW中设置文件位置的用法简介L a b V I E W在(一种图形化编程语言和开发环境)中,设置文件位置是一项非常重要的功能。

通过设置文件位置,可以方便地管理和操作文件,同时实现程序与外部文件的数据交互。

本文将详细介绍La bV IE W中设置文件位置的用法,包括文件的打开、保存、读取和写入等操作。

1.文件的打开和保存1.1打开文件"O p e n F i l e"在L ab VI E W中,使用函数可以打开文件,该函数位于**"F il eI/O"**函数库中。

首先,在程序中设置一个按钮,当用户点击按钮时,执行打开文件的操作。

具体的步骤如下:"O p e n F i l e"1.在L ab V IE W界面中,拖拽一个按钮控件,并将其命名为。

2.双击该按钮控件,进入按钮的回调函数编写页面。

"O p e n F i l e"3.在回调函数中,使用函数打开文件对话框,并设置相关的选项。

"F i l e P a t h"4.在用户选择文件后,使用输出来获取所选文件的路径。

下面是一个示例代码:```L ab VI EW...该SubVI用来打开文件该SubVI将File Selection轮询为True时输出文件路径该按钮用来打开文件点击该按钮时调用"Open File.b",并获取打开的文件路径...```1.2保存文件"S a v e F i l e"与打开文件类似,保存文件也是通过设置文件位置来实现的。

使用函数可以创建保存文件对话框,用户可以选择保存的文件名和位置。

具体步骤如下:"S a v e F i l e"1.在L ab V IE W界面中,拖拽一个按钮控件,并将其命名为。

2.双击该按钮控件,进入按钮的回调函数编写页面。

"S a v e F i l e"3.在回调函数中,使用函数创建保存文件对话框,并设置相关选项。

LabVIEW调用操作系统功能

LabVIEW调用操作系统功能

7.2 读/写XML文件
XML文件写操作
平化至XML(Flatten To XML)函数 XML模版
7.2 读/写XML文件
XML文件读操作
从XML还原(Unflatten From XML)函数 XML格式转换成簇
7.2 读/写XML文件
从XML文件中读取数据
7.3 读/写配置文件
动态链接库
动态链接库(Dynamic Link Library,DLL)是一个可以多方共享 的程序模块,内部对共享的例程和资源进行了封装。
动态链接库文件的扩展名一般为*.dll,也可能是*.drv,*.sys或 者*.fon
7.6 调用动态链接库(DLL)
DLL和可执行文件
DLL和可执行文件(EXE)很相似,最大的区别在于DLL虽然包含了 可执行代码却不能单独执行,必须由Windows应用程序直接或间接 调用
实时获取鼠标键盘信息例程
首先通过查询输入设备(Query Input Devices.vi)查询按键和鼠 标的信息
分别初始化键盘和鼠标 在While循环中获取键盘按键信息和鼠标位置及在这信息 关闭输入设备
7.5 输入设备控制
程序框图
7.5 输入设备控制
程序界面
7.6 调用动态链接库(DLL)
简化部署和安装 当DLL中的函数需要更新或修复时,部署和安装DLL不要求重新建 立程序与该DLL的链接。
7.6 调用动态链接库(DLL)
DLL使用注意
为了使应用程序正常地使用动态链接库,DLL文件必须存放在下列 任意一个子目录中:
Windows\system目录中; 应用程序所在的子目录; 配置文件中定义的自动搜索的子目录。
Mac OS c:temp:data.dat;

LabVIEW中如何实现子程序调用1

LabVIEW中如何实现子程序调用1
labview中如何实现子程序调用1labview子程序加工中心子程序调用子程序调用易语言调用子程序西门子plc子程序调用三菱plc子程序调用数控车床子程序调用按键精灵调用子程序vb调用子程序
LabVIEW 子程序的调用(方法一) 子程序的调用(方法一)
李彦华 山东科技大学
1.首先设计一个小程序,打开前 面板
2
4
3
7.全部完成
8.新建一个vi
9.找到子程序所在位置直接拖到 新建vi的程序框图中
10.打开即时帮助窗口查看一下
好啦, 好啦,这样开<图标编辑器>
3.利用第(3,1)虚线选框选中图 标,然后Delete删除原图标
4.选中(1,1)绘图笔,手绘子程 序图标,确定
5.右击图标 选择显示连线板
6.鼠标变成线圈
1
单击一连线端,端子被选中 移 动鼠标选择要连接的对象(如电压幅值) 如图4 完成一项,其他端子同理

67.在 LabVIEW 中实现 VI 的递归调用

67.在 LabVIEW 中实现 VI 的递归调用

在LabVIEW 中实现VI 的递归调用LabVIEW 中使用递归调用不是很方便。

不过递归并不是编程必须程序结构,任何需要使用递归调用的地方,都可以用循环结构来代替。

但是在某些情况下,使用递归调用的确可以大大简化程序代码,对缩短编程时间、提高程序可读性都非常有帮助,所以学习一下递归的实现方法还是有好处的。

一、为什么VI 不能够被静态的递归调用LabVIEW 不能通过静态调用的方法(把子VI 直接放到另一VI 的程序框图上)来实现递归。

对于一个非可重入的subVI,在每一个时间,这个subVI 这能被运行一次。

LabVIEW 需要借此来保证多线程时的数据安全。

对于被递归调用的代码,是需要在它执行到中间的时候,就再次被调用的。

所以默认设置下的VI 不能被静态递归调用。

对于被设置为可重入的VI,是可以被同时调用多次的,但也不能被静态的递归调用。

除非是通过VI Server 动态的调用VI,否则,LabVIEW 是在一个程序被调入内存,开始运行之前就为它的所有VI 分配好内存空间的,包括数据区。

如果一个VI 不是可重入的,LabVIEW 会在这个VI 运行时局部变量所在的数据区开辟在这个VI 所在的空间内;对于可重入的VI,LabVIEW 把它的数据区开辟在调用者VI 上,这样就可以保证这个可重入VI 在不同的地方被同时调用时使用不同的数据区,以防止多线程运行时数据混乱。

因此,可重入VI 虽然可以被同时多次调用,但是被调用的次数是运行前就确定的。

而递归运算时的调用次数是运行时决定的。

这样,如果是静态调用,LabVIEW 根本没有办法为提前为参与递归的VI 开辟好数据区。

二、用动态调用方法实现递归图1 是一个采用递归算法计算阶乘的例子图1:利用递归结构计算阶乘正如前文说过的,所有的递归都可以使用循环来代替,计算阶乘也可以使用循环结构,但是这里介绍的是使用递归结构的方法。

因为n!=n*(n-1)!,所以我们只要编写一个VI 实现功能F(n)=n*F(n-1) 就可以了。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

LabVIEW应用-SubVI的调用
[]摘要当主程序执行某个任务的同时,会跳出waiting...对话框提示用户等待, 直到任务执行完毕waiting...对话框消失.以下主要介绍其实现方法...
[]创建SubVI
创建SubVI
[]调用SubVI
1. 前面板中放下VI 引用句柄: 引用句柄>>VI 引用句柄;
2. 前面板右击VI 引用句柄,在选择VI 服务器类下左击浏览,选择你刚刚创建的SubVI;
3. 程序框图中放下打开VI 引用: 右击VI 引用句柄>>应用程序控制面板>>打开VI 引用;
4. 将VI 引用句柄连接到打开VI 引用的类型说明符端;
5. 将刚刚创建的SubVI 所保存的路径连线至打开VI 引用的VI 路径端;
6. 程序框图中放下属性节点; (同[]调用SubVI 步骤3)
7. 将打开VI 引用的VI 引用端连线至属性节点的引用端;
8. 单击属性节点的属性>>前面板窗口>>打开,并右击FP.Open 将属性转换为输入;
9. 程序框图中放下布尔真常量并连线至FP.Open;
10. 程序框图如下:。

相关文档
最新文档