Labview中引用,属性节点,局部变量之间的区别
成员变量、实例变量、类变量和局部变量区别
成员变量、实例变量、类变量和局部变量区别
⼀、成员变量、实例变量、类变量和局部变量区别
1::变量电议部分所定义的变量被称为类的。
也就是说在整个类中都有效,类中的⽅法可以直接调⽤成员变量使⽤。
然⽽成员变量⼜分为实例成员变量(简称)和类变量(简称)
1.1::就是我们正常定义的变量,⽐如int a; a就是
1.2::定义前要加上Static ⽐如static int a;这个a就是静态变量,当在变量定义前加上static的时候就代表着该变量在使⽤的时候有⼀处改变则各个⽤到这个变量的地⽅,该变量都发⽣改变,就是所谓的⼀处改变处处改变,静态变量的⽣存期为整个,但是只能在定义该变量的函数内使⽤该变量。
退出该函数后,尽管该变量还继续存在,但不能使⽤它。
2::在⽅法体中定义的变量和⽅法的参数称。
也就是说只在定义它的⽅法内有效,⽽⽅法外部的其他⽅法⽆法使⽤局部变量。
当局部变量名字与成员变量名字相同,则成员变量被隐藏,即这个成员变量在这个⽅法内暂时失效,以局部变量定义的为准。
⼆.长提到的⽅法有,类⽅法,实例⽅法。
就是名字和类名相同,⽽且没有类型。
类⽅法和实例⽅法的区别就是类⽅法前⾯有static修饰,⽽实例⽅法没有static修饰。
实例⽅法既能对类变量操作,也能对实例变量操作,⽽类⽅法只能对类变量进⾏操作。
LabVIEW虚拟仪器技术第4章-程序结构
基本程序结构
在各编程语言中,基本的程序结构有三种: 顺序结构、条件结构和循环结构。
LabVIEW中,除了具有上述三种程序结构外, 还提供了用于事件处理的事件结构。
此外,还有局部变量,属性节点和调用节点 等功能,为增加程序编写的灵活性提供了保障。
文本语言接口
在LabVIEW的图形化编程环境中,利用上述 程序结构可以解决很多非常复杂的问题。
范例
条件结构的输出隧道。
条件结构的输出方式
条件结构的输出有两种方式:
1.在条件分支内部输出数据
2.通过数据输出隧道,在条件结构外部输出数据
在分支内部输出数据更符合常规编程语言的编 程方式,但是从LabVIEW数据流的观点来看,并 不是最佳选择。
程序求输入数值的平方根,计算之前先判断 输入是否大于等于0。判断为真,结果由显示控件 输出,判断结果为假时,条件为真的分支不执行。
点击右键,在快捷菜单中我们可以添加或删 除每一帧。我们也可以通过拖曳的方式来改变每 一帧的大小。
顺序结构在执行时,会按照帧的顺序,从左 到右,依次执行每一帧。每一帧都有一个帧序号, 最小的帧序号为0,然后是1、2、3依次递增。
平铺式顺序结构因为代码是平铺的,因此代 码更直观,可读性较高。但是它的缺点是占用空 间较大。
针对于此,可以通过调用快捷菜单中的“替 换为层叠式顺序”功能,将平铺式的顺序结构转 换成层叠式的,以使VI看起来更为紧凑。
4.1.2 层叠式顺序结构
从本质上看,层叠式顺序结构和平铺式顺序 结构的功能完全相同,且二者可以相互转换。
层叠式顺序结构的创建
层叠式顺序结构外形类似于条件结构。它包 括一个或多个顺序执行的子程序框图或帧。
在很多情况下,程序员会需要多段代码按照预 先设定的顺序执行,这就需要顺序结构来帮忙了。
用到的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显示。
06-labview-局部变量,全局变量
6.
Right-click the global variable terminal to select a global variable in the same Global Variable VI
Click the global variable terminal to select a global variable in the same Global Variable VI
from the Main Menu
Select a Global Variable VI from the Functions Palette(1)
出现文件窗口,选择已存在的全局变量VI
Select a Global Variable from the Same Global Variable VI(2)
Local Variable & Global Variable
局部变量
一个VI的任何前面板控件均可在框图程 序上生成与之对应的局部变量。 局部变量可读也可写,不论其对应的控 件是控制型或显示型。 局部变量只可供产生它的VI存取。
Create Local Variable from Shortcut Menu of Controls/Indicators or their Corresponding Terminals
3. 4.
看指导书第22页的例程(1)与(2),体会两者的不同。 看文件夹 05-LocalVariable下的例程“AVP1.vi”、“AVP2.vi”、 “控制档位控件的方式.vi”,理解轮询编程方式(polling programming)-CPU不停地查询控件的状态,即使用户没有 操作控件,循环仍在进行,iteration terminal中的值也一直在 增加。
labview深入探索------全局变量、局部变量与内存管理
很多教科书上都提示要慎用局部变量和全局变量,主要有以下几个原因:违背了数据流的编程读取局部变量需要拷贝数据不能象SUBVI一样可以重用数据BUFFER不利于程序调试容易引起竞争我在论坛上看到很多初学者的程序,里面充满了大量的局部变量,可以这样说,当你使用了过多的局部变量的时候,你的程序结构是有问题的,在早期的LV版本中根本不存在全局变量和局部变量,同样可以编制规模很大的程序,这说明局部变量和全局变量并不是必须的,LV提供了它们是因为在特定的情况下可以简化编程。
当我们使用SUBVI时,我们需要定义一个连接器,包括输入输出端子,调用VI的数据从输入端子进入,当SUBVI未执行完毕时,数据是不会流出到输出端子的,因此,SUBVI可以重用调用VI的数据缓冲区。
而局部变量可以在子VI的任何位置被读写,局部变量在同一一个VI中,全局变量可以在任何VI中,所以通常情况下,无法重用数据缓冲区。
局部变量用于读写一个VI的前面板对象,对象是控制器或者指示器都可以,当我们读局部变量的时候,我们是在对象的当前状态,而对象在程序框图中的其它位置,其它的线程可能连续写这个对象,所以LABVIEW无法重用内存,不得不拷贝数据到新的缓冲区中,如果数据结构很大,就会占用相当多的内存。
很多情况下,局部变量都是可以避免的,看下面的例子。
上面图中的设计方式,在很多初学的程序中经常碰到,同样的数据要传到两个VI中,并且有次序要求,因此采用了顺序结构。
问题是根本没有必要用局部变量,局部变量导致了数据的复制。
上面的两个图完成同样的功能,一个仍然采用顺序结构,不过CLUSTER挪到了FRAME外面,通过隧道,将数据传入到两个子VI中,避免了使用局部变量。
但是顺序结构本身也是效率比较低的,也是NI不建议过度使用的.针对这个具体问题,最下面的是最好地解决方案,利用错误簇作为数据流实现了顺序处理,避免使用局部变量。
通过错误簇同时也有利于程序调试跟踪.另外一个明显的优点是程序框图更清晰明了,避免了在各个FRAME中进行切换.全局变量使用内存的方式类似于局部变量,不同的是每次读全局变量肯定要生成一份内存拷贝,而局部变量是有可能重用缓冲区的.当全局变量是一个比较大的数组或者字符串时,多处多次读操作会造成大量的内存复制,极大地占用内存,导致运行速度下降。
labview复习重点总结
Labview复习题一、填空1. 所有的LabVIEW 应用程序,即虚拟仪器(VI),它包括前面板、流程图以及图标/连结器三部分。
2. LabView有三种操作模板,分别是控件模板、函数模板和工具模板。
3. CIN节点需要调用*.lsb格式文件,这种文件可以通过Visual C++来生成。
4. 虚拟仪器设计中连线为虚线时表示数据类型不匹配出错,当RUN按钮显示为折断的箭头时,表示程序有错误发生。
5.在LabView中局部变量主要用于程序内部传递数据,全局变量主要用于程序之间传递数据。
6. 程序框图由端口、节点和连线组成的可执行代码。
7、数组是相同类型的数据元素的集合,数据元素的类型可以是任意的,可以创建数值数组、布尔数组、字符数组和簇数组。
8、数据采集系统由被测参数→传感器→信号调理→数据采集卡→计算机组成。
9、Labview支持文本文件,二进制文件,数据记录文件,波形文件,测试数据文件等格式的文件输入和输出。
10、数据采集卡性能指标有输入通道数,输出通道数,采集位数,采集速度等。
11、循环边框上的数据出口为一个小方块,称为移位寄存器,具有存贮数据功能,对FOR循环而言第一次循环时布尔型数据出口值为false。
12、虚拟仪器在使用数据采集卡之前必须运行专用软件MAX进行配置,如设置通道名,输入输出类型,测量类型等。
13、LabVIEW概念是一种用图标代替文本行创建应用程序的图形化编程语言。
14、传统文本编程语言根据语句和指令的先后顺序决定程序执行顺序,而LabVIEW则采用数据流编程方式,程序框图中节点之间的数据流向决定了程序的执行顺序。
它用图标表示函数,用连线表示数据流向。
15、LabVIEW程序为称为VI,扩展名默认为.vi。
16、程序框图是图形化源代码的集合,这种图形化的编程语言也称为G语言。
17、虚拟仪器系统是由计算机、应用软件和仪器硬件三大要素构成的。
计算机与仪器硬件又称为VI的通用仪器硬件平台。
labview2014图形显示、Express VI 第4讲
第4讲——图形显示、Express VI 、 局部和全局变量、属性节点
上一讲内容回顾
复合数据类型 1. 数组
相同数据类型数据的有序集合
2. 簇
不同(或相同)数据类型数据的组合 错误簇(用于错误处理的特殊簇)
3. 波形, t0(时间标识),dt,Y, attributes/属性
如何使用全局变量?
a) 在某个VI中,打开函数选板, Select a VI…,选中保存好的 全局变量文件; b) 在全局变量上单击弹出列表, 选择想要读写的内容。
全局变量同样可能出现竞态条件!
4. 属性节点
属性节点(Property Node)
• 前面板控件具有很多可设置参数,通过快捷菜 单和其他UI(用户界面)操作对这些参数进行设 置;这些操作发生在建立应用程序时 如何在用户运行已建好的程序时,采用编程的 方式动态(例如根据用户输入设置参数值)设 置控件参数?通过属性节点
同一DDT数据,有不同的解释方法 使用时需要明确: • DDT内包含怎样的数据内容 • 准备怎样利用该数据
单一波形
2. Express VI
动态数据类型输入到显示控件的默认规则*
DDT中包含的数据 单个数值 单通道 多通道 单个数值 数值显示控件 显示控件 图形 数据处理和显示结果 绘制包括时间标识和属性在内的单个值 绘制包括时间标识和属性在内的整个波形 绘制包括时间标识和属性在内的所有数据 显示单个值
② 示波器图表(Scope Chart)
数据从左到右绘制,到达右边界后擦除图表中曲线,再次从 左到右绘制;与示波器相似。
③ 扫描图表(Sweep Chart)
数据从左到右绘制,新数据处有一移动竖直线,到达右边界后 重新从左到右绘制,擦除竖直线经过处的旧数据。
Labview之如何创建通用属性节点和调用节点
如文档对您有帮助,欢迎下载支持,谢谢!LV Nugget 之如何创建通用属性节点和调用节点 2011-01-01 07:34/csxcs366/blog/10-12/201447_993ee.html这篇文章中我谈到了创建通用引用的两个简便方法。
我们创建通用引用的目的是通过通用引 用的属性节点和方法节点等修改引用所指向的对象。
这与我们直接创建前面板中控件的引用 的目的是一样的。
我们必须注意,LV 中的数据都是以输入控件、显示控件和常量的方式存在的,通用控件的 引用本身也是一种特殊的控件,这导致了许多初学者在使用通用引用时出现了问题。
NI 论坛上有几个帖子就出现了这样的问题,我简单了回答了一下,但是网友无法理解,发 邮件希望我给解答一下,在这里我一并回答这个问题。
帖子地址为:/t5/NI-LabVIEW-CVI-数据采集等产品讨论区/两个难题-关于显 示数据和调用节点/td-p/1398578对于前面板中的控件,可以直接通过控件的快捷菜单创建它的引用、属性节点、调用节点、 常量、局部变量等等,以多列列表框为例,直接利用控件的快捷菜单。
在程序框图中的控件的接线端子中,同样可以利用接线端子的快捷菜单,创建指向控件的引 用、属性节点等,与控件的快捷菜单功能是相同的。
我们知道,对于前面板中的控件,直接创建它的属性节点和调用节点时,是不需要连接引用 的,这是因为我们通过快捷菜单创建时候,LV 自然知道创建的属性节点和调用节点是指向 这个特殊控件的。
实际上,我们也可以通过控件的引用,间接创建这个控件的属性节点和调用节点,在应用控 制函数选板中提供了很多与引用有关的操作,包括属性节点和调用节点。
箭头所示的属性节点和调用节点在使用时候必须连接控件的引用,也就是说这里的属性节点 和调用节点是通用的,不指向任何特定控件的,只有连接一个引用的时候,它才会指向一个 特定的控件或者特定的控件类型,指向特定的控件如下图所示,指向特定的控件类型则是我 们将要重点讨论的。
LabVIEW中的数据类型和变量管理
LabVIEW中的数据类型和变量管理在LabVIEW中,数据类型和变量管理是非常重要的概念。
通过正确地理解和使用数据类型和变量,我们可以更好地组织和管理数据,提高程序的可读性和可维护性。
本文将介绍LabVIEW中常用的数据类型,并探讨变量的管理方法。
一、数据类型在LabVIEW中,数据类型用于定义变量或数据的格式和属性。
常见的LabVIEW数据类型包括整数(Integer)、浮点数(Floating-Point)、布尔值(Boolean)、字符串(String)等。
不同的数据类型在内存占用、数据范围、精度等方面有所差异,选择合适的数据类型可以提高程序的效率和准确性。
例如,对于表示温度的变量,我们可以选择浮点型数据类型,以保留小数位数并能表示负数。
而对于只有两个状态的变量(如开关状态),布尔值可以更好地满足需求。
除了基本的数据类型,LabVIEW还提供了聚集数据类型,如数组(Array)和矩阵(Matrix)。
数组可以方便地存储和处理多个相同类型的数据,而矩阵则更适用于数学计算和图像处理等领域。
二、变量管理变量是在LabVIEW中存储和处理数据的基本单元。
良好的变量管理可以提高程序的可读性和可维护性。
1. 命名规范在LabVIEW中,变量的命名应遵循一定的规范,以提高程序的可读性。
以下是一些常见的命名规范:- 使用有意义的变量名,能准确描述变量的用途。
- 变量名应使用英文单词或单词缩写,避免使用拼音或中文等。
- 避免使用与LabVIEW内置函数或关键字相同的名称。
例如,对于表示温度的变量,我们可以使用“temperature”或“temp”等命名,而不要使用“t”或“temp1”等命名,以提高变量的可读性。
2. 变量作用域变量的作用域决定了变量的可见性和生存周期。
在LabVIEW中,可以通过将变量定义在合适的作用域内来控制其访问权限。
- 局部变量(Local Variable):定义在VI或子VI中,只在当前VI 中可见,适用于内部数据传递。
LabVIEW编程与项目开发实用教程 第6章 LabVIEW高级编程
图6-4 公式节点输入/输出端子对应,左图正确/右图错误
6.1.2 公式
在函数数学公式与脚本选板中公式节点 ,见图6-5。
当把公式节点放置到程序框图上时,系统会自动弹出“配置公式”对 话框,见图6-6。在对话框中输入公式后,若对话框右上方的方块显示为 绿色时,则表明系统识别了输入的函数。当出现错误或非法公式时,对 话框右上方的方块显示为灰色,表明系统不识别。
图 6-1 公式节点选板
图 6-5 脚本与公式选板
与创建循环的方法类似,用户从结构选板中选择公式节点,用鼠标 在程序框图上任意位置拖放任意大小的公式节点。公式节点是一个大小 可变的方框,利用它可直接在程序框图中输入数学公式,如图6-3所示。
在程序框图上输入数学公式或类似于C语言的表达式,可以使用的函 数如下:abs、acos、acosh、asin、asinh、atan、atan2、atanh、ceil、cos 、cosh、cot、csc、exp、expm1、floor、getexp、getman、int、intrz、ln、 lnp1、log、log2、max、min、mod、pow、rand、rem、sec、sign、sin、 sinc、sinh、sqrt、tan和tanh等。
LabVIEW通过对象标签将局部变量和 前面板对象相关联,因此必须用描述性 的自带标签对前面板控件和显示件进行 标注,如图6-11中对象标签“字符串”、 “数值”等。
2.局部变量使用方法
(1)使用局部变量可对前面板控件进行 读/写。 局部变量有读和写两种属性。当一个局部 变量为读属性时,说明可以从该局部变量 中读取数据。相反,当其为写属性时则可 以给该变量赋值。右键单击从弹出菜单上 选 转换为写入 或 转换为读取。
1.全局变量创建
LabView中的属性节点
LabView中的属性节点很多朋友对于属性节点的使⽤表⽰有些不明⽩,但是其作⽤⼜是相当强⼤的,所以必须明⽩怎么使⽤属性节点以及如何调⽤的问题,下⾯就来为⼤家解迷。
在获得对象的reference之后,就可以使⽤属性节点(Property Node)和调⽤节点(Invoke Node)来设定对象属性和调⽤对象提供的固有⽅法(Method)。
属性节点的⼀般形式如图1所⽰:图2 新放置的属性节点作为⼀个例⼦,为第⼀个端⼦选择Operation 属性,该属性表⽰运⾏程序的操作系统名称。
运⾏程序后,在字符串指⽰器⾥返回所选择属性的值Windows NT,如图3所⽰。
Operation 为只读属性。
reference参数使⽤了默认值,即当前运⾏的应⽤程序的reference,这同使⽤空的machine name参数调⽤Open Application Reference参数返回的结果完全相同。
图3 使⽤当前程序的属性节点查询操作系统名称调⽤节点的⼀般形式如图4所⽰,其组织⽅式同属性节点相似。
class为reference所关联对象的类型名,method为⽅法名,param 1等为参数名。
如果⽅法调⽤没有返回值,则method的位置仅仅显⽰⽅法名;如果⽅法调⽤有返回值,则method 变为输出端⼦,在return value中输出⽅法调⽤的返回值。
图4 调⽤节点在调⽤节点上单击⿏标右键会弹出快捷菜单,在这个菜单⾥含有名为Methods的⽅法列表⼦菜单。
⼀个对象可以有很多⽅法供调⽤,但是⼀个调⽤节点只能为对象调⽤⼀个⽅法,这⼀点与属性节点不同,属性节点对在其中访问的属性个数没有限制。
⽅法调⽤的某些参数有默认值,可以不连接,这些可选参数的调⽤节点端⼦底⾊为灰⾊,可以根据需要决定是否接⼊这些参数。
图5给出了调⽤节点的使⽤⽰例图5 使⽤调⽤节点打开并最⼤化当前VI的前⾯板窗⼝图中调⽤节点所关联的的对象的类别是VI,其输⼊参数reference为使⽤路径常量InvokeNode.vi作为vi path输⼊参数调⽤Open VI Reference函数的返回值,实际上该路径指向的VI就是调⽤节点所在的VI本⾝。
快速入门LabVIEW编程基本概念和语法
快速入门LabVIEW编程基本概念和语法LabVIEW是国际上应用广泛的一种图形化编程语言,它能够使我们极其便利地进行数据采集、编程控制、虚拟仪器仿真等。
掌握LabVIEW编程基本概念和语法对于想要快速入门这个领域的人来说非常重要。
本文将介绍LabVIEW编程的基本概念和语法,并提供一些实例,帮助读者快速入门LabVIEW编程。
一、LabVIEW编程基本概念1. 前导界面 (Front Panel):LabVIEW程序的用户交互界面。
在前导界面中,我们可以通过布局控件、指示灯、图形等元素来创建自定义界面。
2. 后台代码 (Block Diagram):包含了程序的功能实现部分。
在后台代码中,我们可以使用各种可视化的数据流图来进行数据处理、逻辑控制等操作。
3. 节点 (Node):在后台代码中代表某个具体的操作或功能的元素。
比如,加法节点可以实现两个数相加的功能。
4. 连线 (Wire):将各个节点连接起来传递数据和信号。
通过连线,我们可以实现数据在节点之间的传递和共享。
二、LabVIEW编程语法1. 基本数据类型:LabVIEW支持常见的数据类型,包括整数、浮点数、布尔值、字符串等。
我们可以在节点中使用这些数据类型进行计算和处理。
2. 变量和常数:在LabVIEW中,我们可以创建变量来存储和管理数据。
变量可以是数字、布尔值、字符串等。
常数是指在程序中不会变化的值,可以直接用于计算或逻辑判断。
3. 控制结构:LabVIEW提供了条件语句、循环语句等控制结构,使我们可以根据不同的条件执行不同的程序分支,或者重复执行某段代码块。
4. 数组和矩阵:LabVIEW支持数组和矩阵的操作,我们可以使用数组和矩阵进行多个数据的计算和处理。
5. 函数和自定义VI:LabVIEW提供了很多内置函数,我们可以使用这些函数来完成各种常见的操作。
此外,我们还可以根据需要创建自定义VI (Virtual Instrument) 来封装特定的功能,方便后续复用和调用。
第五章LabVIEW介绍5
(1)调用 • 由函数模板中的Select a VI…子模板打开选择用户 程序对话框,选择已经保存的全局变量声明VI程序 ,此时将在框图程序中显示全局变量数据端口。 • 如果在全局变量声明VI中建立多个控件,可以用操 作工具在全局变量的图标上单击,在列出的所有变 量对象中选择所需的对象。
–(2)使用示例 • 利用全局变量在不同VI中传递数据。 • 创建一个全局变量声明Ⅵ,其中包含一个数值型控件和布 尔型控件,保存为“GV.vi”。 • 新建一个VI命名为“采集信息.vi”,前面板中有一个旋钮 开关和按键开关,将它们的值送到全局变量中。由函数模 板中的选择VI子模板打开选择用户程序对话框,选择 “GV.vi”,调用两次全局变量声明Ⅵ,选择全局变量的不 同数据类型,对端口连线并保存VI。如图
2019/1/18 32
强度图表的应用
本程序中,先由正弦函数在for循环的边框通道上形成一个 一维数组,然后通过“创建数组”函数形成一个列数为1的 二维数组,送到强度图表控件。因为强度图表所需的数据类
型为二维数组。
2019/1/18 33
5.7.5 数字波形图
数字数据类型
在数字电路设计中经常要分析数字电路的逻辑, 因此通常需要分析时序图。LabVIEW提供了数 数字数据 字波形图解决了此类问题。
4、特点 (1)以独立文件的形式存在 (2)一个全局变量中可以包含多个对象,拥有多种数 据库类型 (3)与子VI不同,不能进行编程,只能用于简单的数 据存储。 (4)速度快 (5)其中的数据可以分别访问
(四)慎用局部变量与全局变量
理由: 1、占用大量内存 2、使程序可读性差 3、在多线程并行运行的程序中,局部变量也可能引 起竞态条件。
二维数组
5.7.7 三维图形
LabVIEW性能和内存管理(中文)解析
Clump 1 Sleeping
Start of diagram: Reads controls, then schedules Clumps 1 and 2 Then sleeps...
Clump 0 Sleeping
Clump 2
Bottom For Loop Indicator is updated Clump 0 Scheduled Sleep...
LabVIEW的执行系统
Clump 0
LabVIEW块运算
Clump 1
Clump 0
Clump 2
LabVIEW块运算
• LabVIEW使用抢先式和合作式的多线程机制。在编译过程中,LabVIEW分析VI 以定位可以在所谓的块中一起执行的节点组。每个优先级和执行系统组合都 有一个运行队列数据结构,保留哪些块可以一起运行。当执行系统激活线程 时,执行系统从运行队列检索并执行块。当执行系统完成运行时,它在运行 队列上存储满足输入条件的附加块。这就允许程序框图在任何可用的执行线 程中运行。如果程序框图具有足够的并行性,则它可以在所有线程中同时执 行。LabVIEW不会将代码块永久分配给特定线程。LabVIEW可以在下次运行VI 时使用不同的线程执行程序块。
优先级
• 子VI优先级影响执行系统中该VI的队列元素的优先级。 • 优先级较高的队列元素首先被执行 • 优先级设置不影响执行系统线程本身的优先级:
– 执行系统可能会抢占整个线程来运行线程相对于另一 个执行系统(或其它进程)
– 使用定时循环更可靠地控制优先级。
子程序优先级
• 子程序优先级设置不是实际的优先级。它不是改变队列元素 的优先级,子程序优先级使整个VI是一个单独的块,它保证 在开始执行时不会进入休眠。这意味着您不能调用任何可能 导致VI在子程序VI中进入休眠的功能,并且不能在VI中切换执 行系统。您只能调用也标记为子程序优先级的其他子VI。在 子程序VI中运行的所有代码都是串行的:在子程序VI中没有 并行性。
LabVIEW属性节点
LabVIEW属性节点
在实际运⽤中,经常需要实时地改变前⾯板上的对象的颜⾊、⼤⼩和是否可见等属性。
那么就需要使⽤属性节点进⾏动态设置。
属性节点有输⼊和输出两种形式(点击右键,在快捷菜单中选择转换为写⼊/输出)
基本属性:
1 可见性visible
数据类型为bool型
2 状态Disabled
在可视状态下,当输⼊0或1 时,⽤户可以访问⾯板上的对象;当输⼊2时,⽤户不可访问对象。
3 焦点状态Key Focus
设置键盘焦点状态数据类型为布尔型
4 闪烁(Blinking)
数据类型为布尔型,对象的闪烁速度和颜⾊,在Vi运⾏状态下,这两种属性值就不能进⾏设置。
设置对象的闪烁速度和颜⾊的⽅法是:在labVIEW主选单⼯具中选择选项,弹出⼀个对话框
5 位置
6 ⼤⼩。
labview数据传递的对比
LabView中常用数据传递的比较编写者:LabView交流与代做群(160910366)在LabView中数据的传递主要是以下几种1.移位寄存器(功能性全局变量)2.反馈节点3.局部变量4.属性节点值5.其他(主要包括:全局变量,队列,共享变量等等,在这里不进行比较)一.运行时间比较很多人都喜欢用运行时间来判断一个程序的好坏,那么我们也进行一下比较来看看。
我们以自加一运行10万次看看运行时间。
1.移位寄存器(功能性全局变量)2.反馈节点3.局部变量4.属性节点值由上面我们可以看出各运算速度:移位寄存器 > 反馈节点 > 局部变量 >>属性节点二.数据传递模式1.移位寄存器:数据流2.反馈节点:数据流3.局部变量:非数据流4.属性节点值:非数据流所有labview的书籍中,第一章肯定都会提到labview是数据流驱动的。
如果你程序中使用了大量局部变量和属性节点,那么你的程序肯定违背了介绍中的这条信息,而破坏了数据流。
而且局部变量与属性节点较慢,这也奠定了局部变量与属性节点在labview中的地位,是用来扫尾工作的。
三.移位寄存器PK反馈节点1.速度移位寄存器 > 反馈节点2.数据流向:移位寄存器一般从左至右,反馈节点会逆流。
(破坏了程序执行的基本方向,如果文本语言中的至上而下,突然变成了自下而上,你想想会出现什么效果?)这会使反馈节点的出错率大大大于移位寄存器的出错率。
3.易读性:移位寄存器 > 反馈节点4.使用范围:移位寄存器整个循环中,反馈节点无法跨结构下图反映出了反馈节点无法跨结构进行运算。
综上所述,在功能基本相同的情况下,移位寄存器的功能每项都超过反馈节点。
四.局部变量VS属性节点值局部变量与属性节点值真是一对纠结的双生子,同样的功能,基本相同的创建方式。
这似乎都反应出了存在一个就没必要存在另一个了。
在这有必要分别说明下局部变量与属性节点值。
局部变量:局部变量这名词我最先接触是在C语言中,但是C语言中的局部变量更加接近于移位寄存器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Labview中引用,属性节点,局部变量之间的区别
在Labview 中我们经常会碰到这样几个概念,那就是控件的引用,属
性节点以及局部变量,他们之间到底有哪些区别呢?首先谈引用,在Labview 中长称为引用句柄,在Windows 编程中,引用句柄指的是指向指针的指针,换句话说,引用句柄保存的是其他一些数据类型的地址,例如窗口句柄。
在Labview 中,控件的引用句柄指的也是指向特定数据类型的指针,在Labview 中,控件的引用句柄是长度为四个字节,引用句柄不但能够表示控件的类型,还与空间一一对应,这是通过句柄的编号来实现的,引用句柄自身未代表任何空间,但是通过引用句柄指向特定的实例后,就可以操作具体的控件了,简单的理解就是通过对引用句柄的操作,可以改变控件的属性参数。
接下来说属性节点,属性节点在Labview 中是一个很重要的概念,属性节点用于访问控件的属性,例如需要改变控件在前面板的大小,运行时候的状态等都需要通过属性节点来进行操作,与引用结合起来讲就是属性节点可以设置引用的属性。
Labview 的属性节点功能强大,不同的控件有不同的引用,这些不同的引用都可以通过各自的属性节点来进行设置,但需要注意的是,属性节点的执行效率比较低,甚至比全局变量的效率还要低,所以NI 一般建议少用属性
节点。
最后说局部变量,局部变量相当于C 语言中的局部变量一样,通过局部变量可以在一个VI 中访问或者存储数据,通常这些数据都是存储在不同
的显示或者输入控件当中,所以说局部变量不是单独存在的,每一个局部变量都是与特定的控件相对应的,一个控件可以生成许多局部变量,就相当于在一个函数中定义了一个变量,在函数的任何地方都可以使用这个变量一样,每一个局部变量都要复制对应控件中的数据,因此这将消耗更多的内存,因此在labview 中一些大的数组中不建议使用局部变量。
tips:感谢大家的阅读,本文由。