(part 2)LabVIEW的复合数据_第1页
(part 2)LabVIEW的复合数据_第2页
(part 2)LabVIEW的复合数据_第3页
(part 2)LabVIEW的复合数据_第4页
(part 2)LabVIEW的复合数据_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1,济南大学 自动化与电气工程学院 授课教师:谢锦丽 E-mail:cse_ 联系方式虚拟仪器技术,2,数组、二维数组,数组:是一系列相同数据类型元素的集合。 数组元素是根据其索引来访问的:每个元素的索引值在0到N-1之间,N是数组元素的个数。 创建数组是将数组框架与数据对象结合起来创建数组控件和指示器。 所有的元素要么都是控件,要么都是指示器,不能混合使用。 For循环和While循环可以在边界上自动索引并累加数组每次迭代创建一个新的元素,该功能称为自动索引。 自动索引功能在For循环中是默认打开的,但是在While循环中是默认关闭的。,3,数组、二维数组,For循

2、环边界上的自动索引数组,每次迭代时都创建下一个数组元素。在循环结束后,循环输出数组到指示器,而在循环结束之前,所有的数组数据都是不可用的。 关闭自动索引,只有随机数函数的最后一个值从循环输出 在打开For循环输入数组上的自动索引后,LabVIEW会将循环次数自动设置成数组的大小,因此就不需要连接值到计数端子。如果赋给LabVIEW的循环次数发生冲突例如,同时使用外部定义循环次数和自动索引(或者自动索引两个不同大小的数组),LabVIEW设置循环次数为其中最小的值。 二维数组以类似表格的形式存储元素,需要使用两个索引来定位一个元素:列索引和行索引。,4,数组处理函数,初始化数组:该函数创建并初始

3、化具有指定值的n维数组。 数组大小:该函数返回输入数组中元素的个数。 创建数组:该函数可以将两个数组合并或组合成一个数组,或为数组添加额外的元素。 数组子集:该函数返回从“索引”端子指定索引开始,长度为“长度”端子指定值的部分数组元素子集。注意,由于索引是从0开始的,第n个元素的索引是n-1。 索引数组:该函数范围数组中特定的元素。 删除数组元素:该函数删除数组的一部分,从“索引”开始,长度为“长度”指定的值的元素。与数组子集函数一样,删除数组元素函数返回数组的一部分,但是它返回的是原数组被删除后剩下的部分。,5,复合运算,复合运算函数能够同时处理多个数据。在需要多次使用加、乘、与、或和异或函

4、数时,复合运算函数避免了一次性使用多个这样的函数。 在输出端子的弹出菜单上选择“更改模式”改变函数的功能。同样可以使用操作工具单击函数来改变模式。 弹出菜单中“逆操作”选项来反转数字输入或输出的极性或布尔值(从假到真,或真到假)。输入和输出上的小圈表示极性反转。,6,4.6 簇,簇是一个组合数据类型结构。 簇元素数据具有绑定和释放概念。释放元素后可以访问其中的元素,可以一次性全部释放,也可以按索引释放指定元素,这取决于选择使用的函数。 不像数组可以动态的改变大小,簇有固定的大小,相当于其内部有固定数量的线,每根线代表一个元素。 簇里面的对象必须全都是控件或者全都是指示器,在同一个簇中不能既有控

5、件又有指示器。簇是控件还是指示器取决于首次放入其内部的对象属性。 创建簇两个步骤:在前面板或程序框图中放置簇框架;添加需要的控件、指示器或常数到框架内。 簇内元素具有固定的逻辑顺序,与它们在框架内的位置无关。第1个放入簇的对象为元素0,第2个为元素1,以此类推。,7,4.6 簇,使用簇将一些控件和指示器绑定起来,就可以使用单个端子连接子VI,传输多个值,减少连接到子VI的连线和端子的数量。 只有类型相同的簇之间才可以连接。即:两个簇必须有相同的元素个数,且对应元素必须有相同的顺序和数据类型。只要数据类型相同,数组中的多态性同样适用于簇。 释放函数,将簇分解成单个的元素,根据索引访问元素,必须访

6、问整个簇并且考虑簇中元素的顺序。按名称释放函数,同样是分解簇为单个元素,但是根据标签访问元素,可以访问任意数量的元素。 绑定函数,将单个的元素组成新的簇或者使用簇代替元素。按名称绑定函数不能绑定簇,但是能够替换簇中的单个元素而不需要访问该簇,另外,使用按名称绑定函数,不需要担心簇顺序和正确的绑定函数大小,只需要确认所有元素都有名称即可。,8,4.6 簇,练习:创建VI,检测输入簇中的Numeric 1数值控件的值是否大于等于0。如果小于0,VI 计算所有控件的绝对值。如果大于等于0,VI不用计算任何空间的绝对值。无论Numeric 1的绝对值是什么,VI 都将所有的值乘以0.5并将结果显示在O

7、utput Cluster上。,9,4.6 簇,1. 打开新的前面板并放置簇框架(新式数组、矩阵与簇),标记为Input Cluster。 2. 函数编程数值子选项卡创建Numeric 1、Numeric 2和Slide控件,从选项卡选取控件时,要放置在簇框架的内部,且一定要以指定的顺序创建,分别为其设置标签。 3. 根据同样的方法使用指示器创建Output Cluster,放置元素的到簇的顺序要与Input Cluster相同。(可通过复制Input Cluster 来创建Output Cluster ,更改标签。) 创建程序框图,包括选择(Case)结构的True和False两个分支。,1

8、0,4.6 簇,按名称释放函数(编程簇、类与变体):从Input Cluster中提取Numeric 1,然后与0比较,如果“Numeric 1”没有出现在输入出名称区域,使用操作值工具单击,从簇元素列表中选择Numeric 1。 大于或等于0函数(编程比较):如果数字输入是正数或者0就返回True。,11,4.6 簇,绝对值函数(编程数值):输入数值大于等于0时,返回输入数值;输入数值小于0时返回输入数值的相反数。在本练习中,取整个簇的绝对值。 5. 运行VI,给Numeric 1既输入正数又输入负数。注意使用多态性,给簇中的所有值一次性乘以0.5并计算整个簇的绝对值。 6. 保存,12,第

9、4章 LabVIEW的复合数据,4.1 数组 4.2 二维数组 4.3 数组处理函数 4.4 多态性 4.5 复合运算 4.6 簇 4.7 数组和簇的转换 4.8 错误簇和错误处理函数,13,4.7 数组和簇的转换,LabVIEW中包含的数组操作函数比簇操作函数多,因此数组和簇之间的转换非常有用。 例如:如果想要把前面板上按钮簇中所有按钮的值都反转,那么“反转一维数组”函数是很好的选择,此时可以使用“簇至数组转换”函数将簇转化成数组,再用“反转一维数组”函数反转数组的值,最后再使用“数组至簇转换”函数转换回簇。 函数编程数组/簇、类与变体,14,4.7 数组和簇的转换,簇至数组转换函数:将具有

10、相同数据类型的N元素簇转换成相同数据类型的N元素数组。数组的索引对应于簇顺序(例如:簇元素0编程数组中索引0的值)。 LabVIEW不允许创建数组的数组,不能对包含以数组为元素的簇使用此函数。 在使用该函数时,簇中的所有元素的数据类型必须相同。 数组至簇转换函数:函数将N个元素的一维数组转换成相同数据类型的N元素簇,必须在函数端子的弹出菜单上选择簇大小指定输出簇的大小,因为簇不会像数组一样自动调整大小。,15,4.7 数组和簇的转换,簇大小的默认值是9,如果数组非空且小于簇大小所规定的元素数量,LabVIEW会自动填入额外的值到簇,这些值就是簇内元素数据类型的默认值(数值型:0;字符串型:空字

11、符串;布尔型:假)。如果输入数组的元素数量大于指定簇大小,输入数组会被截断以适合簇大小所规定的元素数量。 输入簇大小必须与连接到其输入数据的元素数量匹配,否则,输出连线会保持中断直到簇大小调整合适。,16,4.7 数组和簇的转换,数组和簇的比较函数模式 一些比较函数在比较数组和簇的数据时有两种模式:集合比较模式和元素比较模式。在比较节点的弹出菜单的比较模式子菜单中选择需要的模式。 集合比较模式下,比较函数返回集合整体比较厚的布尔值。当且仅当所有元素的比较结果都为真时返回值才是真。在元素比较模式下,返回一个布尔型的数组或簇,里面数据是基于每个元素的比较结果。,17,第4章 LabVIEW的复合数

12、据,4.1 数组 4.2 二维数组 4.3 数组处理函数 4.4 多态性 4.5 复合运算 4.6 簇 4.7 数组和簇的转换 4.8 错误簇和错误处理函数,18,4.8 错误簇和错误处理函数,错误是函数或子VI因为资源不可用或接收到的消息不正确而不能完成请求的事件。 错误输入/错误输出函数:控件新式数组、矩阵与簇子选项卡,可以用于许多VI和函数的输入/输出上。 LabVIEW中错误簇是一个特殊的数据类型:由布尔型状态、I32型错误代码和字符串型错误源组成。用来传送LabVIEW代码运行时产生的错误信息。 在LabVIEW中使用数据流传输错误簇数据类型中的错误信息。,19,4.8 错误簇和错误

13、处理函数,4.8.1 错误簇数据类型 错误簇包含了3个元素: 1. 状态:布尔型,表示是否有错误发生(真或假)。 2. 代码: I32型,错误代码,用于标志错误的有符号整数。 a. 错误代码为正数表示错误; b. 错误代码为负数表示警告。 c. 0表示没有错误 3. 源:字符串型,包含错误源描述信息的字符串。通常包含调用链,调用链是一个VI列表,从错误发生处的子VI(或函数)开始,然后根据调用的层次,列出直到顶层的所有VI。,20,4.8 错误簇和错误处理函数,4.8.2 传输错误信息:错误流 LabVIEW本身就是一个基于数据流的编程语言,对于错误信息的传递也是使用数据流的形式在LabVIE

14、W的程序框图中实现。如下图中的红点标识处所示,错误簇数据在框图中是按顺序、连续的在程序中传递。 很多LabVIEW 函数以及子VI 都有错误输入(Error In)以及错误输出(Error Out)端点,一般这两个端点分别位于函数节点图标的左下侧以及右下侧。,21,4.8 错误簇和错误处理函数,4.8.3 子VI中错误的产生和响应 关于错误的产生和响应,希望函数和VI 能完成以下的功能。 1. 如果“错误输入”包括错误(状态为“真”),不需要做任何处理,除非进行“结尾”工作,例如: a. 关闭相关的文件。 b. 关闭相关的设备或断开相关的连接。 c. 使系统回到空进程安全状态(关闭电机等)。

15、2. 如果错误发生在函数或者VI内部,函数就必须通过“错误输出”端子输出错误信息,除非已经有错误信息从“错误输入”端子输入,这种情况下只需要将从“错误输入”进入的错误信息原封不动的输出到“错误输出”。,22,4.8 错误簇和错误处理函数,错误选择结构 通过使用错误选择结构,可以轻易的实现上述第2条的常规错误处理动作。 错误选择结构就是一个有错误簇连接到其条件端子的选择结构。选择结构允许错误簇数据类型连线到条件选择器端子。连线之后,选择结构的帧名改变为“无错误”和“错误”。在执行时,如果错误簇不包含错误,那么执行“无错误”帧,反之,如果错误簇包含错误,那么就执行“错误”帧。 实现上面提到的第2条

16、功能只需要将错误帧中错误簇直接连接到VI 的错误输出端,将没错误的情况下的执行代码放到无错误帧中。,23,4.8 错误簇和错误处理函数,错误数据融合 在程序中如果上游的函数就已经出错了,这是需要做清理工作该怎么办?这时就不便使用错误选择结构了,最好就是使用合并错误(Merge Error)函数将所有的上游错误融合在一起。 函数编程对话框与用户界面。 使用这个函数的时候要注意,错误簇只能包含一个错误信息,而这个合并错误函数将多个错误融合为一个错误,最终得到的错误是按照该函数的输入端至上而下的优先级得到的,也就是说优先级最高的输入端上如果有错误数据,最终的输出就是该错误数据。在实际的编程中,就需要

17、按照程序中实际需要连接这个函数的错误输入数据。如果所有的输入端都没有错误发生,最后该函数的输出也是无错误的。,24,4.8 错误簇和错误处理函数,错误代码至错误簇转换函数:将错误或警告代码转换成错误簇。例如:由于调用的VI产生了不正确的输入,可以使用该函数产生一个新错误。 简单错误处理器函数:显示包含错误信息的对话框,指出是否有错误产生。例如:子VI和顶层的应用程序不能处理错误,放弃执行,显示错误消息给用户。如果有错误产生,该VI返回错误的描述信息和可选择的对话框。该VI调用通用错误处理器函数,这两个错误处理器功能基本相同,只是选项不同。,25,小结,错误簇是LabVIEW中一种特殊的数据类型

18、,用来传输LabVIEW代码运行时产生的错误信息。LabVIEW中的许多函数和VI都有错误输入和错误输出端子,通常分别位于连接器窗格的左下方和右下方。连接VI的错误输入和错误输出端子来增强数据流,保证错误信息在应用程序中的传递。 创建子VI时,遵循有关错误处理和错误传递的标准是很重要的。将功能代码放入错误选择结构,当有错误流进入VI时,此段代码就不会执行。错误汇总来源于并行执行的VI 。不要在子VI中弹出错误对话框。只有在错误无法用合适的方式处理时,才在主应用程序上使用错误对话框。,26,上机练习题,6. 创建一个计算器VI,在前面板上用数值控件输入两个数值,数值指示器显示VI的运算结果(加、减、乘除)。使用滑动控件指定执行的运算。,27,上机练习题,28,上机练习题,29,上机练习题,7. 只能用一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论