labview分支选择器部分选择器值无对应分支,选择器值存在错误类型

扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
Labview中条件结构的选择器只能输入整数吗?
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
不是,可以输入布尔型,还有小数,等等,1..3就表示1到3之间的所有数,包括小数
为您推荐:
其他类似问题
扫描下载二维码LABVIEW条件结构,为什么提示:条件结构,选择器值存在错误类型
LABVIEW条件结构,为什么提示:条件结构,选择器值存在错误类型添加分支后,为什么选择器标签名字变为红色了,出现错误提示:选择器值存在错误类型.只有“真”和“假”是黑色字体,其他输入的分支都是红色的,我用的是LABVIEW8.5上面这个问题已经解决.但是用case结构,必须要设置一个默认分支吗?不设置会发生错误!但是设置一个分支为默认以后,只有默认分支执行操作,其他分支不执行操作.这是为什么?
先解释一下你的问题,你这样的情况一定是输入条件不符合其他的设置条件.再给你详细解释以下LabVIEW中CASE的使用.1.将一个输入值连接至选择器接线端,即可选择需执行的条件分支.选择输入类型一共有5种.分别是:a.布尔值:如果选择器接线端的数据类型是布尔型,则该结构包括一个真分支和一个假分支.相对于C里的if.b.整数c.字符串d.枚举型值:如果选择器接线端是一个整数、字符串或枚举型值,则该结构可以包括任意个分支.相当于C里的case.e.错误簇:选择器接线端以处理错误.如将错误簇连接到选择器接线端,真分支便成为无错误分支,而假分支成为错误分支.对于每个分支,可使用标签工具在条件结构上部的条件选择器标签中输入值、值列表或值范围.如使用列表,数值之间用逗号隔开.如使用数值范围,指定一个类似10..20的范围可用于表示10到20之间的所有数字(包括10和20).也可以使用开集范围.例如,..100表示所有小于等于100的数,100..表示所有大于等于100的数.对于字符串范围,a..c包括所有a或b开头的字符串,但不包括以c开头的字符串.而a..c,c则同时包括结束值c.如未指定条件结构默认用于处理范围外数值的条件分支,则必须列出所有可能的输入值.例如,如果分支选择器的数据类型是整型,并且已为1、2和3指定了相应的分支,则必须指定一个默认分支用于处理当输入数据为4或任何有效整数值时的情况.
我有更好的回答:
剩余:2000字
与《LABVIEW条件结构,为什么提示:条件结构,选择器值存在错误类型》相关的作业问题
加多宝的员工是全国统一价的,同一个岗位,同一工作年限,工资待遇基本上是一样的.电气技术员属于6级,住宿是6人间,住宿条件是有热水器,有空调,上下铺,现在北京员工是住在厂区外约10分钟路程的地方,工作制是每周40小时,加班按加班费,按国家法定来.基本工资你面试的时候人事会跟你说的了
经典例句] 1.If you copy my homework this time,you will start a bad habit.2.I’ll ask the teacher for help if I don’t understand.3.If the traffic lights are red,you m
If I were you,I would not go with him.如果我是你的话,我不会和他走的.if引导的虚拟语气,主句用过去将来时,从句用一般过去时.
这句话很正常啊,就是一个普通的if引导的条件状从..你参考下资料吧..真实条件句用于陈述语气,假设的情况可能发生,其中 if 是如果的意思. 时态关系 句型: 条件从句 主句 一般现在时 shall/will + 动词原形 If he comes, he will bring his violin. 典型例题 The
从DNA分子的复制过程可以看出,DNA分子复制需要 模板,DNA聚合酶和DNA解旋酶等条件.DNA分子的双螺旋结构能够为复制DNA提供模板
有浓硫酸加热 可能是 酯化(就有可能有-OH或是-COOH) 或是 消去(有可能有-OH 如果是170摄氏度,不用想一定是乙醇的消去)有NAOH醇溶液 是 消去(有-OH或是 卤素原子什么的) 有稀硫酸 或是 NAOH 是 水解(有酯基)书上没有的断键方式 一般题目中 会给出比如 一个C上连两个-OH 是怎么 样的题目
2、IF—THEN—ELSE语句IF—THEN—ELSE语句的一般格式为图1,对应的程序框图为图2.分析:在IF—THEN—ELSE语句中,“条件”表示判断的条件,“语句1”表示满足条件时执行的操作内容;“语句2”表示不满足条件时执行的操作内容;END IF表示条件语句的结束.计算机在执行时,首先对IF后的条件进行判断
也不一定啊. 再问: 为什么 再答: 比如:如果x>0 y=1 否则y=0 这里面就没有循环语句啊
都行的 D 再问: 呐,理由亲 再答: 没有不成立的理由 循环里面随便写吧 有判断中止的条件让他能出来就好了
如果是预留Q[m-1]为空,作为判别是否满,那么就有(r+1)%m==f 代表队满 若f==r则为队空.
1,最外层6个p电子:稀有气体.(我上次回答的时候看错了,不好意思哈.)3,次外层d轨道全满,最外层一个s电子:第一副族,也就是铜族元素 不是第一主族的原因是:它们的次外层是p轨道,而不是d轨道.
取代 反应物要有-OH -COOH -H 加成 要有C=C 或碳碳三键 也有的是C=O但这种情况基本上是不会考的 消去 是饱和烃或饱和卤带烃的反应 酯化-COOH -OH 水解-COO- 氧化 一般情况下烃都是可以氧化的 还原 加H去O的就是还原 中和 有机反应中一般就是-COOH与其他碱反应
C 再问: 为什么啊?这种循环结构不是先判断条件吗、?条件真就直接出来了? 再答: 有两种循环,你可能搞混了 第一:条件成立时执行循环,先判断后执行。 Do While 条件 循环体 Loop 第二:条件成立时结束循环,后执行后判断。 Do 循环体 Loop Until 条件 这道题是第二种情况
三螺旋DNA不是DNA在自然态下的主要结构,而是在特定的条件下形成的.它是由一条ODN通过与双链DNA形成Hoogsteen键或反Hoogsteen键,在其大沟处紧密缠绕而成.具体就是富含嘧啶的ODN与双链DNA的富含嘌呤的链以平行的方式键合,形成Hoogsteen键;富含嘌呤的ODN与双链DNA的富含嘌呤的链以反平行
由已知得该程序的作用是用二分法求方程的近似解,而由要求解的精确度为ε故可知当型循环结构中判断框是判断精度是否满足条件,以决定是否继续循环的语句,则当型循环结构的终止条件是|x1-x2|<ε.故答案为:|x1-x2|<ε.
这个"case structure "可以理解为一个多态的函数.将你的分支条件直接接到着“case structure”的接线端就可以了.输入为布尔类型时,只有2个选项(真、假),输入数值或字符串,就可以自定义添加条件选项,但是都必须有个“默认”,就是说当输入不在这几个条件分支里面时,默认执行. 再问: ??????л
郭敦顒回答:四种不同的市场结构,按西方经济学划分为:一、完全竞争二、垄断竞争三、寡头垄断四、完全垄断市场结构的构成条件一,完全竞争性市场结构的构成条件1,处在市场经济初期.2,卖方厂商较多,资金相对不足,他们且相对独立,物价相对较高.3,市场的买主基本上为自然人.4,政府不干涉.二,垄断竞争市场结构的构成条件1,处在市
a 再答: a
按规定留置的用作结构实体检验的混凝土同条件养护试件是代表混凝土结构实体强度的,它可反映出混凝土后期养护情况对混凝土强度的影响.标养试件同样是检验混凝土结构强度的.它可较为全面的反映混凝土配合比,原材料,施工控制等方面的因素对混凝土强度的影响.是规范规定用来做混凝土强度评定的最直接的依据.一般拆模试块为自然养护.但采用其LabVIEW中如何设置条件分支选择器值_百度知道
LabVIEW中如何设置条件分支选择器值
这个&case structure &可以理解为一个多态的函数。将你的分支条件直接接到着“case structure”的接线端就可以了。输入为布尔类型时,只有2个选项(真、假),输入数值或字符串,就可以自定义添加条件选项,但是都必须有个“默认”,就是说当输入不在这几个条件分支里面时,默认执行。
解决了,谢谢大神。
为您推荐:
其他类似问题
您可能关注的内容
labview的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。当前位置: >>
labview 教程
Labview 环境运行 Labview,如图:点击新建 VI,即可打开一个新的 Labview 程序 前面板 ①:工具条 ⑤:图标②:标签 ⑥:旋钮③:数值控件 ⑦:图例④:标尺 ⑧:XY 图前面板工具条: :运行按钮 :连续运行按钮:中断运行按钮。当编码出错使 VI 不能编译或运行时,中断运行按钮将替换运行按钮 :连续运行按钮 :暂停/继续按钮 :异常终止执行按钮:对齐对象按钮。用于将变量对象设置成较好的对齐方式:分布对象按钮。用于对两个及其以上的对象设置最佳分布方式。:调整对象大小按钮。用于将若干个前面板对象调整到同一大小。 程序框图①:数值输入控件 ⑤:For 循环结构框图工具条:②:旋钮控件 ⑥:数据连线③:数值常量 ⑦:捆绑函数④:乘 ⑧:XY 图控件 ⑨:子 VI 程序:加亮执行按钮。当程序执行时,在框图代码上能够看都数据流,这对于调试和校验程序的正确运行是非常有用的。在加亮执行模式下, 按钮转变成一个点亮的灯泡::保存连线值按钮。 :单步进入按钮。允许进入节点,一旦进入节点,就可在节点内部单步执行。 :单步跳过按钮。单步跳过节点,但不执行时不进入节点内部但有效地执行节点。:单步跳出按钮。允许跳出节点,通过跳出节点可完成该节点的单步执行并跳转到下一个节点。 :文本设置按钮。 :层叠顺序。 下拉菜单 由于 Labview8.2 采用了中文的界面,每个下拉菜单的功能根据字面意思就很容易理解了,在这里我不再赘述。 选项板 ?工具选项板?左图所示便是工具选项板,各按钮的功能如下::自动选择工具 :操作工具 :连线工具 :定位/调整大小/选择工具 :对象快捷菜单工具 :滚动窗口 :编辑文本工具:设置/清除断点工具:探针工具:颜色复制工具:着色工具?控件选项板:和下拉菜单一样 Labview8.2 采用了中文的界面 各个控件的功能一目了然 某些常用的控件的功能我们会在下面的章节中做详细的介绍?函数选项板 和下拉菜单一样 Labview8.2 采用了中文的界面 各个控件的功能一目了然 某些常用的控件的功能我们会在下面的章节中做详细的介绍?下面将手把手地教大家写一个简单的 VI 程序,让大家对一个基本的认识再进入下一章节的讲解。创建第一个 VI: 本节将创建的第一个 VI 来完成下列功能:1. 2. 3.将两个输入数字相加并显示结果 将同样的两个输入数字相乘并显示结果 比较两个输入数字,如果数字相等,则 LED 指示灯变亮步骤:1. 2.从“文件”菜单中选择“新建”VI 打开新的前面板 创建数字控件和指示器。使用两个前面板控件输入数字,使用两个指示器输入数字加和乘的结果。 a. b. 从控件选项板的数值子选项板中选择数值输入控件 单击数值输入控件,然后拖拽控件到所希望的位置,然后单击鼠标将控件放下,如图: c.在标签框(在控件上方)内键如字母,按前面板工具条上的 Enter 按钮。如果在继续编程操作(诸如将其他控件放置在前面板上) 之前不键入标签内容,标签框将保留默认标签内容“数值” 。如果控件或指示器没有标签,可用右键单击控件,在控件上弹出快 捷菜单,从显示项菜单中选择标签,标签框就会出现,然后可使用标签工具编辑文本。d.&重复以上过程创建第二个数字控件和第二个数字指示器。可选择按任意方式排列控件和指示器,不过排列得整齐而有规律会更 好些3.创建布尔 LED。如果两个输入数字是相同的,那么指示灯打开;如果不是,则保持关闭状态。 a. b. 从控件选项板的布尔子选项板中选择圆形知识灯。将该指示器放置到前面版上并拖拽到所希望的位置,然后单击鼠标按钮。 在标签框内键入“Round LED” ,键入完毕,单击标签框外边的任何地方,或单击 Enter 按钮。如图: 4. 5.从窗口下拉菜单中选择显示程序框图,切换到程序框图。 先在在框图上放置“加”和“乘”函数。可从框图选项板,编程选项板的数值子选项板中选择“加”函数。按照同样的步骤,将“乘” 函数放置到框图上并显示标签。6.从框图选项板,编程选项板的子选项板中选择“等于?”函数,并放到框图上,如果他们相等,返回“真” ,如果不相等,则返回“假7.连线,在工具选项板中选择连线工具,当把鼠标移到各个控件的上方时,能够参与连线的节点便会自动闪烁,提示用户,此处可以连线。 连线完成后如图:8.连线完成后,单击运行按钮,便可在前面板上看到运行的结果。While 循环1.While 循环是一种结构,它重复执行代码片段直到满足某种条件为止。它可比作传统语言中的 Do Loop 或 Repeat-Until 循环。它位于编 程→结构→While 循环。每个 While 循环都有一个条件端子和一个重复端子。如图:重复端子用于记录和输出已执行的循环的次数,条件端子输入的是一个布尔变量:真或假,While 循环将一直执行到连接条件端子上的布尔 值变成真或假为止,取决于条件端子设置为“真(T)时停止”还是“真(T)时继续”。在条件端子上单击右键即可进行更改。如图: 下面举个简单的例子:利用 While 循环产生随机数,当产生的随机数大于 0.8 时,循环停止。 步骤如下: 1. 打开前面板,新建两个数值显示控件,一个为循环次数,一个显示最后产生的那个大于 0.8 的随机数。如图:2. 切换到程序框图,放置一个 While 循环,如图:3. 放置随机数函数到 While 循环内,并连线,如图: 4. 放置比较函数,将循环次数与重复端子连线,如图:5. 运行,即可在前面板上看到结果,如图:在程序框图中,在数值显示控件上单击右键,可更改数值的类型,如图: 各种数值的类型都可以看见,我就不再赘述。 在 While 循环的边框上单击右键,可添加位移寄存器,如图:有关位移寄存器的用法,我们将会在 For 循环中讲到,这里暂不做介绍。 注意:While 循环的条件端子一定要有连线,否则程序无法运行!如图: For 循环 1. For 循环位于函数→编程→结构→For 循环,如图:从图中可以看到,For 循环有两个端子 计数端子:要执行循环的次数,可用于 For 循环内部的循环计数 重复端子:已执行循环的次数,可用于 For 循环内部的重复计数 For 循环应用举例:产生 10 个随机数,并把最后一个显示出来。 步骤如下: 1. 放置一个数值显示控件到前面板,并改名为随机数。 2. 放置 For 循环到程序框图,如图:3.放置随机数函数到程序框图,并连线 4.计数端子上单击右键,选择创建常量,并输入 10,如图: 5.运行程序,便可在前面板上看到结果。 6.因为程序的运行的速度非常快,我们无法一个一个地看清所产生的 10 个随机数,我们可以在程序框图中添加时间延迟控件。它 位于函数→编程 →定时→时间延迟,如图:7. 放置它到程序框图上,选择延迟的时间,即两次循环之间的时间间隔。如图:8. 将时间设置为 1.000,点击确定即可,再运行程序就可从前面板上看到所产生的随机数了。 移位寄存器 移位寄存器用于 For 循环或 While 循环中从一个迭代传输数据到下一个迭代,它由循环垂直边框上一对反向相反的端子组成,在边框上单击 右键,选择添加移位寄存器,就可进行添加。如图: 右端子(带向上箭头的矩形)在每完成一次迭代后存储数据,移位寄存器将上次迭代的存储数据在下一次迭代开始时移动到左端子(具有向 下箭头的矩形)上。移位寄存器可存储任何数据类型,包括数字,布尔,字符串和数组,但连接到同一个寄存器端子上的数据必须是同一类型。 移位寄存器的类型与第一个连接到其端子之一的对象数据类型相同。下面是 1+2+3+4+?+100 的程序,如图:说明:进行第一次运算的是 0+0,For 循环中的重复端子是从 0 开始计数,移位即寄存器在没有初始化的情况下,默认的数值是 0,所以第 一次运算的是 0+0,第二次运算的是寄存器的 0 与重复端子的 1 相加,所以循环要进行 101 次。而计数端子输出的数据始终是 101。 移位寄存器的初始化:移位寄存器的初始化是非常必要的,因为只要用户不退出 VI,移位寄存器便可记录上次运算完时的结果,所以上面的程序 在第二次执行时输出的结果不是 5050,而是 10100!添加初始化即可,如图:下面在举几个复杂一点的例子。 例一:计算一组随机数的最大值和最小值 1.新建一个 VI,在前面板上放置一个波形图标,它位于新式→图形→波形图表,用它来记录产生的随机数。同时在前面板上放置两个数值 显示控件“最大值”和“最小值” ,用来显示随机数中的最大值和最小值。2. 3.在程序框图中,放置一个 For 循环,设置循环次数为 50 次。单击边框选择添加两个移位寄存器,分别初始化为 0 和 1。 放置随机数函数和最大最小值函数与程序框图中,其中最大最小值函数位于编程→比较→最大值与最小值。然后连线。如图:运行,便可在前面板上看到结果,如图:例二:计算1. 2.在前面板上放置一个数值输入控件“阶次 n”和一个数值显示控件“求和结果” 在程序框图上放置两个 For 循环嵌套结构,外层循环的计数端口与“阶次 n”连接,输出是各个数的阶乘所组成的一个数组。它的重复端 子加 1 作为内层循环的循环次数,内层循环利用一个移位寄存器实现阶乘运算,移位寄存器的初始值设为 1。3.同样在程序框图的右边在放置一个 For 循环结构,它的计数端子没有任何连接数据,使用的是自动索引功能。这个循环的作用是对由阶 乘所组成的一个数组进行索引,对索引出的各个元素进行求和计算,最后将计算结果输出给“求和结果” 。4.完成连线,如图: 运行结果如图:例三:计算自然对数中底数 e 的近似值。算法: 步骤:1. 2.新建一个 VI,打开前面板,添加两个数字显示控件,分别表示”近似值 e”和“临界阶次 N” 。 切换到程序框图,放置一个 While 循环,将条件端子的条件改为“真时停止” 。在它内部再放置一个 For 循环,计数端子与 While 循环结 构的重复端子加 1 后连接。右击 For 循环边框,添加移位寄存器,并初始化为 1,For 循环结构的功能是计算各个数的阶乘。3. 4.计算各个数阶乘的倒数,添加倒数函数,它位于函数→编程→数值→倒数。 添加比较函数,将它的阶乘的倒数与 10^-5 比较,比较结果连接到 While 循环结构的条件端子上,如果小于则返回“真” ,停止循环,否 则返回“假”继续循环。5.由于 While 循环默认的是不能够自动索引功能,而程序中需要累加保存每次计算的阶乘,这就需要在输出通道上选择“启用索引” ,实现 自动索引,将各个元素累加成为一维数组。6.在程序框图右边再添加一个 For 循环,它的功能是进行自动索引求和,需要主机的是它的移位寄存器被初始化为 1,这是由近似算法所决 定的。将输出结果送给“近似值 e” 。7.完成连线,并运行程序。如图:运行结果,如图: 例四:实现对随机数进行平滑滤波。通过对 4 个连续的随机数求其平均值来实现。1. 2.新建一个 VI,在前面板上放置两个波形图表,一个为“原始波形” ,一个为“滤波后波形” 。 在程序框图上放置一个 While 循环,在边框添加一个移位寄存器,然后在左边的寄存器上单击右键,选择“添加元素” ,一共添加 3 个。 如图:3. 4. 5. 6. 添加随机数产生函数,并添加符合运算,将连续产生的 4 个随机数相加,相加的结果除以 4。 放置循环定时函数,定义循环时间为 100ms。 完成连线,在 While 循环的条件端子处添加输入控件。如图:运行结果:在前一章的末节,我们一起写了一个最简单的 Labview 程序,下面我们将仔细讨论前面板和程序框图中的各种编辑技术1.创建:在上一章中我们介绍了最常用的创建方法,就是用鼠标选择,然后放置到框图或前面板中,在这里我们为大家介绍另外一种常用 的方法。如图:放置一个随机数函数到程序框图,位于函数―编程-数值-随机数。 然后在上面单击右键,选择创建-显示控件,如图则可看到有一数值控件与其相连,前面版上也出现了一个数值控件。如图:2.选择对象:在前面板和程序框图中,使用定位工具来选择对象,它也可以用来移动和调整对象的大小,如图:当对象被选中时,就会出现环绕的虚线轮廓 当要选择多个对象时,按住&shift&键并同时单击鼠标即可,如图: 或者在空白处单击鼠标,并拖拽光标直到全部希望的对象均出现在矩形框来选择多个对象。如图:3.移动对象:选定对象后,用鼠标拖拽,便可移动对象到指定位置。如图:4.删除和复制对象:显然,选中所要进行操作的控件后,单击主菜单中的编辑,然后选择删除或者复制,粘贴是完全可以实现各项操作的。 下面我向大家介绍几种用键盘来实现这些操作的方法。 删除:选中控件后,按下“退格”键或&delete&即可 复制:选中控件后,按&Ctrl+C&,然后&Ctrl+V&即可,或者按下&Ctrl&,然后拖拽所需要复制的控件到其他地方即可,如图: 5.调整对象大小:当工具选项板上选定定位工具时,把鼠标挪到各个控件的角上时,就会大小调节的句柄,直接拖拽,然后释放,便可改 变控件的大小,如图:注意:某些控件横向的大小,不能改变纵向的大小,比如数字控件! 6.标签对象:标签分为两种-自由标签和固有标签。固有标签是用户在添加控件时系统自动添加上的,不能删除和复制,只能隐藏。如图, 单击右键,把标签一栏取消即可。自由标签不附加与任何对象,可独立的创建,移动或处理。使用即可实现自由创建和编辑。如图:输入完后,在空白处单击鼠标即可。 7.改变字体,字形和文本大小:使用工具条上的文本设置工具,可以方便地更改标签,控件或指示器中显示的任何文本的字体,字形,大 小和对齐方式。如图: 选中控件后,更改大小为 36具体每一项下拉菜单的功能,大家根据字面的意思即可理解,这里不再赘述。 8.编辑连线:如图:当连线发生错误时,就会出现断线,在有断线的时候,程序也就不能运行,运行按钮也会发生改变,如图: 此时选中断线,然后按&Delete&即可删除,或者按&Ctrl+B&清除所有断线。 9.对象的对齐,分布和大小调节: 对齐-先选中所需要对齐的控件,然后选择不同的对齐方式即可对齐后的效果如图:控件之间的间距也可进行调整,如图,先选中他们,然后然后选择调整间距。排列后的效果如图: 三个控件已呈等垂直间距排列 调试技术 1.发现错误:当编程错误使 VI 不能编译或运行时,工具条上的运行按钮便会变为不能运行,如图: ,单击,便会弹出程序错误列表,如图:单击显示错误,便可在程序框图中找到出错的地方,如图:2.加亮执行:单击加亮执行按钮,可在程序框图中观察到数据流的流动状态,但程序的执行时间会明显增加。如图:3.单步通过 VI:为了调试程序,你可以一个节点一个节点地执行框图,在运行程序的时候,不要点击运行按钮,直接点击单步运行按钮, 运行一步后,程序自动暂停下来,等待用户的下一个命令,再执行下一步。如图:两个单步按钮均可,只是暂停的位置略有区别。 4.断点与探针:要更为详细的知道程序在运行时的各个参数,可以在各条连线上设置断点,然后用探针查看断电上的数据,然后按继续按钮让程 序继续运行。如图: 程序运行到断电处便会自动暂停,然后单击继续,便可继续运行。如图:快捷键 键盘上的按键组合 Ctrl+S Ctrl+R Ctrl+E Ctrl+H Ctrl+B Ctrl+W Ctrl+F 功能 保存 VI 运行 VI 在前面板和程序框图间切换 打开或关闭帮助窗口 消除所有无效连线 关闭活动的窗口 查找对象和 VIAVR 与虚拟仪器欢迎交换链接,请与小古联系 avrvi【at】163.com 子 VI 是供其他 VI 使用的 VI,与子程序类似。子 VI 是层次化和模块化 VI 的关键组件,它能使 VI 易于调试和维护。使用子 VI 是一种有效的 编程技术,因为它允许在不同的场合重复使用相同的代码。G 编程语言的分层特性就是在一个子 VI 中能够调用到另一个子 VI。下面可用一个表格 表明子 VI 的作用: 程序代码 function average (in1,in2,out) { out=(in1+in2)/2.0; } 子 VI 框图 main { average (point1,point2,pointavg); } 调用子 VI 框图 调用子程序 编辑图标和连接器:1.图标:每个 VI 都有一个默认的图标,显示在前面板和框图窗口的右上角。默认图标是一个 Labview 徽标和一个数字构成的图片,该数字 指出自从 Labview 启动后已打开新 VI 的数量。使用“编辑图标”可以定制该图标。如图:选择编辑图标后,便可打开图标编辑器。编辑器如图:各个控件的作用如图: 一个像素一个像素地绘制和擦除绘制直线。使用限制绘制水平,垂直和对角线从图标象素选取前景色用前景色填充封闭区域使用前景色绘制矩形框。双击该工具,可以用前景色给图标加边框使用前景色绘制框并用背景色填充。双击该工具,可以用前景色给图标加边框并用背景色填充。选择图标区域,用于移动,复制,删除,或执行其他操作。双击次此工具并在键盘上按键将立刻删除整个图标。在图标中输入文本。双击该工具可以选择不同字体。在图标中通常采用小字体。显示当前前景色和背景色。分别单击前景和背景将进入彩色选项板,从中可以选择新的颜色。 编辑好图标以后,就可以看到自己编辑的图标,如图: 连接器:连接器是与 VI 控件和指示器对应的一组端子。连接器是为了 VI 建立的输入和输出口,这样 VI 就可以作为子 VI 使用。连接器从输 入端子接受数据,并在 VI 执行完成是将数据传送到输出端子。在前面板上,每一个端子都与一个具体的控件或指示器相对应。连接器端子的作用 与函数调用时子程序参数列表中的参数类似。 注意:只能从前面板查看和编辑连接器窗格。 在右上角图标上单击右键,选择显示连线板,即可看到连接器。默认情况下,Labview 根据前面板上控件和指示器的数目显示端子模板。如图:也可在模式选项中选择更多的连接器类型,如图:注意:子 VI 最多可用的端子数是 28! 创建子 VI 方法一:把前面板和程序框图编辑妥当以后,按照上面的步骤编辑子 VI 的图标(编辑图标可跳过),然后打开连接器,给控件和指示器指 定端子,在工具选项板上选择连线工具,然后把控件和指示器上的对应位置相连接。如图:连接正确后,在指示器上的相应位置颜色就会发生改变,表明该处已连接上 全部正确连接后如图:保存,更改名称为“求平均值”,退出,即可在其他程序中调用这个子 VI 了。 打开一个新的 VI,在前面板上放置两个数值输入控件和一个数值显示控件,如图:打开程序框图,选择“选择 VI”在弹出的对话框中选择“求平均值”,如图:放置到程序框图中,如图:然后连线,运行,如图:方法二: Labview 可以在程序框图中直接将选定的部分创建为子 VI,如图: 这是一个将摄氏温度转化为华氏温度的程序,中间的运算可整个设置为一个子 VI,步骤如下: 1. 把要设置为子 VI 的部分进行选择,如图:2. 点击编辑,然后点击“创建子 VI”,如图:创建完成后,如图:双击子 VI 图标,便可对他进行编辑,如图:建议:我极力建议将所创建的子 VI 保存在目录下而不是保存在库文件中。尽管在称为 VI 库的单个文件中能够保存多个 VI,但我们不希望这 样做。将 VI 保存为单个文件是最有效的存储方式。因为这样在复制,重新命名和删除文件时比使用 VI 库时要容易些。 与其他目录一样,VI 库文件可以装入,保存和打开,但不是分层的。不能在 VI 库内创建另一个 VI 库,也不能在 VI 库内创建新目录。VI 库文件创 建后,当其出现在文件对话框中时,其图标将与 VI 文件图标略有不同。数组是由同一类型数据元素组成的大小可变的集合。同其他语言一样,Labview 也提供了数组结构,数组是相同数据类型的集合,这些数据 类型可以是数组型,布尔型,字符串型等。当需要频繁地对一批数据进行绘图时,使用数组将获益匪浅。下面将详细介绍数组及数组函数的各种 用法。创建数组 1.从前面板上创建数组:打开前面板,在控件→新式→数组,矩阵与簇→数组,如图:再在里面放置一个数值输入控件即可,如图:如果要显示更多的数组成员,在工具选项板上选择定位工具,在数组的边框停滞,当出现网状拐角后就可以拖动增加或减少显示区域。如图:如果要增加或减少数组的维度,既可以在索引框的快捷菜单上执行,如图:增加后如图:对于二维数组来说,索引框中上一个为行索引,下一个为列索引。 2.程序框图上创建数组:在程序框图上创建数组和在前面板上创建数组有点类似,也首先创建一个外壳,然后再放入数值型常量,枚举或 环形常量,字符串型常量以及布尔型常量等。刚刚放入常量后,所有的数组成员显示为灰色,可以用操作工具依次给它们赋值,赋值范围以外的 数组成员保持灰色不变。如果跳过一些数组成员给后面的成员赋值,则前面的成员自动赋一个系统默认的值。 先在程序框图上放置一个数组常量,位于函数→编程→数组→数组常量,如图: 然后再往里放入一个数值常量,完成后如图:数组函数 数组函数的面板如图:设计步骤如下:1. 2.创建一个 For 循环,循环次数定为 100 次 在数学函数中调用 Sinc 函数,重复端子作为输入,输出用一个波形图表和一个数组显示。如图:例二:创建一个二维数组1.程序框图如图所示: 2.现在已经有两组一维数组了,可以使用创建数组函数就可以把他们创建为二维数组,在一个波形图中显示,如图:3. 4.可以用鼠标对该函数进行拉伸操作,即可有两个输入端子了。 程序框图如图:5.前面板运行结果如图:例三:初始化和分离数组:利用 For 循环的自动索引功能从一个输入数组中依次抽取各个元素,如果是大于 0 的数则添加到正数数组,如果 是小于 0 的则添加到负数数组。并分别计算两个数组中各自有多少个元素。 如图所示便是程序框图 下图是在选择结构中为“假”时的情景其中一共用到了三个数组函数,一个初始化函数,一个创建函数,一个数组大小函数,运行时前面板如图:数组函数就给大家介绍这么多,大多数函数的功能看汉语意思便能明白,当大家有什么问题的时候,可上我们的网站 www.avrvi.com 提问, 我们将尽力为大家解答。簇簇是一种类似数组的数据结构,用于分组数据。簇和数组有着重要的差别,其中一个重要差别是,簇可以包含不同的数据类型,而数组仅可 以包含相同的数据类型。例如,一个数组可以包含 10 个数字指示器,一个簇却可以包含一个数字控件,一个开关和一个字符串控件。尽管簇和数组的元素都是有序存放的,但访问簇的元素最好是通过释放的方法同时访问其中部分或全部元素,而不是通过索引一次访问一个 元素。簇和数组的另一个差别是簇具有固定的大小。 簇通常用于将出现在框图上的有关数据元素分组管理。因为簇在框图中仅用唯一的连线表示,所以对于减少连线混乱和子 VI 需要的连接器 端子个数,使用簇有着积极的效果。可以将簇看做是一捆连线,线缆中每一个连线表示簇的不同元素。在框图上,只有当簇具有相同类型,相同 元素数量和相同元素顺序时,才可以将簇的子端连接。多态性应用于簇时,只需要簇具有同样顺序,同样数量的元素。下面来向大家介绍簇的创建簇的创建框位于前面板中的控件→新式→数组,矩阵和簇→簇,如图:然后就可以往簇的框中添加各种类型的控件了,例如现在要建立一个学生的记录信息,包括学生的姓名,学 号,性别和年龄.这就需要在簇外壳里依次放入两个字符串输入控件,一个数字控件和一个布尔控件.如图:与数组的创建类似,簇也可以从程序框图中创建,先在程序框图上放置一个簇外壳,然后就可以在簇外壳里放置各种数据类型常数。如图:簇内对象的大小是可以调整的,右击簇边界,在弹出的快捷菜单中可以选择各种调节操作,如图:选择调整为匹配大小,即可缩小簇的边框,如图为调整后的结果: 簇结构中的元素排列是按照它们放置的先后来排序的,它与簇内元素的位置无关。放入簇内的第一个元素序号为 0,第二个元素序号是 1, 依次向下排列。如果删除了一个元素,序号将重新自动调整。簇的排序很重要,它直接影响着后面将要介绍的“捆绑”以及“接触捆绑”函数的 端口顺序,如果你想将一个簇与另一个簇连接,这两个簇的序和类型必须相同。 如果想要改变簇内元素的排列顺序,可以右击簇结构的边框,在弹出的快捷菜单中执行“重新排序簇中控件”,如图:这时鼠标会变成一个带“#”号的手柄箭头,黑框指出新设置的排列序号,白框表示原先的排列序号,可以改变标题栏上的“单击设置”内 容,然后单击簇元素即可设置新的序号。设置完毕后单击工具栏上的“ b) 簇函数 簇函数的模版如图: ”按钮确定更改,如果想恢复原先设定值,单击“ ”取消设置。簇函数中最主要的就是构造打包生成簇的“捆绑”函数,还有从簇中解包提取簇中元素的“解除捆绑”函数。它们是根据簇成员的顺序来进 行操作的,这也说明了簇内成员顺序排列的重要性。 簇函数举例:1.创建簇,解包簇,再打包簇该例的目的是学习使用簇的两个基本函数,如图:首先放置一个簇外壳到前面板上,将标签内容改为“输入簇” 在簇外壳中依次放入字符串控件“Name”,布尔控件“Sex”,数字输入控件“Pay”以及字符串控 件“Address”,通过这些簇元素来组成某一公司内一名员工的工资记录。如图:切换到程序框图,放置一个“解除捆绑”解包簇函数,函数刚放入时,它的右侧只有 2 个输出端口,当输入端口与“输入簇”端子 相连后,右侧端口会自动增加为簇元素的数目,端口从上向下排列的顺序与簇内元素的放置顺序相对应,并且数据类型也是与簇元素数 据类型相对应。如图:同样放置一个“捆绑”打包簇函数,用定位工具将输入端口的数目增加到 4 个,依次将它们与解包出来的 4 个簇元素相连,表示又 把它们进行打包生成一个新的簇。在输出端口创建一个簇显示器,把标签改为“输出簇”,如图:2.替换簇成员该例的目的是学习使用“按名称捆绑”函数来替换簇内的某些元素。1.新建一个 VI,在前面板上创建一个簇外壳,依次向簇内添加一个数字输入控件,一个布尔控件,一个字符串输入控件,如图:2.打开程序框图,选择“按名称捆绑”函数,它的功能是按照名称来替换簇成员的值。在函数刚放入时,它的左侧只有一个输入 端口,将函数的“输入簇”端口与创建的簇端子相连之后,左侧端口会显示簇内第一个元素的名称数值,用操作工具单击它可 以选择其他的簇成员。如图: 3.在前面板上创建一个输入控件,将标签改为“输入数字” ,在程序框图将它与“数值”端口相连,表示将用它来替换簇元素。如 图:4.在“按名称捆绑”函数后面创建输出簇,完成后即可运行程序,如图:3.插接生成簇数组该例的目的是学习使用“索引与捆绑簇数组”函数插接簇数组函数来生成一个簇数组。1. 2.新建一个 VI,打开程序框图,放置一个该函数,刚放入时它只有一个输入的端口,用定位工具拖拉它为 3 个输入端口。 在程序框图上放置三个数组外壳,然后分别添加字符串常量,数值常量和布尔常量,建立三个数组,如图: 然后给他们赋如图所示的值,如图:然后连线,并创建显示控件,如图:运行,结果如图:说明:该函数从输入的 3 个数组中依次取值,相同索引值的数据被攒程一个簇,所有的簇构成一个一维数组。 插接成的数组的长度与所有输入数组中长度最短的一个相等,多余的数据被丢弃。4. 建立“数组的数组”该例看起来好像是不可以实现的,因为在数组的学习中,已经知道数组的成员不可以是数组。这里将学习把一维数组当成一个簇, 然后通过建立簇的数组,因为簇数组的每一个成员都是一个簇(即一维数组),从而实现建立“数组的数组”的目的。1.先新建一个 VI,打开程序框图,放置一个“创建簇数组”函数,该函数的功能是建立簇的数组,簇数组的每个成员都是一个簇。刚放入程序框图时,函数只有一个输入端口,用定位工具拖动它的边框,使它具有 3 个输入端口。 2. 在程序框图上创建 3 个数值型数组,分别对它们进行赋值,第一个和第三个数组长度设定为 5,第二个数组的长度设定为 4。在 “创建簇数组”函数的输出端口创建一个簇显示器,将簇显示器的标签内容改为“数组的数组” ,如图: 3.运行程序,即可在前面板上看到结果,如图:Error 簇 Error 簇是一类很重要的簇,许多的控件里都有“错误输入”和“错误输出”这两个簇的端口,通常来讲,当一个 VI 中间出现错误而导致不 能运行时,可以在出错的控件的“错误输出”端子创建一个显示控件,则可以让程序继续运行,如图所示,即为 Error 簇:而 Error 簇更重要的应用在于, 它可以控制控件执行的先后顺序, 也可以通过 Error 簇来控制循环的终止。 如图:当信号的发生出现错误的时候,就可以把循环停止。图形是虚拟仪器的重要组成部分,Labview 为用户提供了丰富的图形显示功能,在图形子模版中提供了许多可供使用的显示控件,如图: 我们将在下面的章节通过一些例子向大家介绍前三种图形显示控件的使用。 波形图及波形图表 首先放置一个波形图表到前面板上,然后在上面单击右键,如图:或者右击后选择属性,便可以看到所有能对该控件操作的选项,如图: 例一:用波形图表显示两组随机数。1.新建一个 VI,在前面板上放置一个波形图表,取消 X 轴和 Y 轴的刻度标签,如图:2.定位工具上下拖动边框,让它显示两条曲线图注,如图:3.然后把他们拖动到合适的位置。如图: 4.切换到程序框图,放置一个 For 循环,计数端子取值为 100,这样每次运行产生 100 个数据。在循环体内放置两个随机数产生函数,分 别乘上一个因子 5 和-5。如图:运行结果如图:例二:温度临界预警器1.新建一个 VI,在前面板上放置一个波形图表,将 Y 轴的刻度标签改为“温度” ,然后选择隐藏图例,然后将 Y 轴坐标的自动调整取消, 如图: 2.添加一个布尔圆形指示灯,并调整为合适大小,把标签内容改为“报警”当温度超出临界值时点亮报警灯,同时在前面板放置一个停止 开关。3.在程序框图上放置如图所示的程序,其中添加一个定时工具,把时间间隔设为 200ms。如图:运行结果如图:波形图 波形图和波形图表得大部分组建及其功能都是类似的, 特别的是波形图具有光标指示器, 利用它可以准确地读出波形曲线上的任何一点数据, 便于分析某一时刻的特性值。如图: 波形图举例: 例一:该例的目的是用随机数函数产生 100 个随机数据,分别用波形图和波形图表来显示,并比较他们的区别。1.新建一个 VI,在前面板上分别放置一个波形图和一个波形图表,调整为合适大小,取消显示图例,取消 Y 标尺自动调整,最大值设为 1, 最小值设为 0。2.切换到程序框图,放置一个 For 循环结构,内部添加一个随机数产生函数,For 循环结构计数端口设为 100,同时添加定时工具,每次循 环间隔时间为 100ms.3.连线,如图所示:运行,程序结果如图:我们可以清楚地看到这两种显示工具的区别,它们地实现方法和过程不同,在程序框图也可以看出,波形图表产生在循环体内,这样每得到 一个数据点,就立刻显示一个;而波形图产生在循环体外,100 个数据都产生之后,跳出循环,然后一次显示出整个数据曲线。程序运行第二次时, 波形图表的 X 轴刻度就会随之增加,由 0~99 变为 100~199,表示数据点的增加;而波形图的 X 轴刻度并没有发生变化,还是 0~99,表示只 显示当前的数据。 例二:该例的目的是学习使用“捆绑”打包函数来设置波形图的 X 轴刻度起始点和间隔。1.新建一个 VI,在前面板上放置一个波形图,取消 X 轴的自动调整,使产生的波形可以充满整个 X 轴刻度。同时放置两个数值输入控件, Xo 控制 X 轴刻度的起始点,数据类型为 I32,Delta X 控制 X 轴刻度的水平间隔,数据类型为 DBL。2.切换到程序框图,放置一个高斯白噪声函数,它位于函数→信号处理→信号生成→高斯白噪声。如图:3.添加“捆绑”函数,用定位工具拖动它的边框为 3 个输入端口,然后如图所示联系。运行,结果如图:例三:该例的目的是学习使用簇数组来显示不同长度的数据,并比较它与直接用二维数组显示的区别。1. 2.新建一个 VI,在前面板上放置两个波形图,将它们标签内容分别改为“二维数组显示”和“簇数组显示” ,标签字体大小设为 18 号。 打开程序框图,添加正弦波函数和方波函数,它们位于函数→信号处理→信号生成→正弦波,方波。分别给它们的采样端口赋值为 150 和 200。 3.在数组函数中,选择创建数组函数,将正弦波和方波的输出合并为一个二维数组。在介绍数组时,已经得知当将两个不同长度的一维数 组组成二维数组时,会自动在长度较短的一维数组后面添加 0,使得它们的长度相同。所以在图形显示时会在正弦波形后面添加一些没有 意义的 0。4.为了解决显示不同长度的一维数组,需要建立一个簇数组。方法是用“捆绑”函数将一维数组打包为一个簇,然后用创建数组函数建立 一个簇数组,由于每组数据是一个簇,这样就可以解决显示不同长度的一维数组。程序框图如图所示:运行结果如图:XY 图 以上介绍的两种波形显示器:波形图表和波形图只能描绘样点均匀分布的单值函数变化曲线,因为它们的 X 轴只是表示时间先后,而且是单 调均匀的。要想描绘 Y 与 X 的函数关系,就需要用 XY 图。XY 图形就是通常意义上的笛卡尔图形,描绘 XY 图首先需要两个数组 X 和 Y,分别对 应于图形的 X 轴和 Y 轴,并且需要两个数组打包构成一个簇,X 轴在上,Y 轴在下。下面通过两个例子来说明 XY 图的一般用法。 XY 图位于控件→新式→图形→XY 图,如图:例一:应用 XY 图显示里萨如图形。 首先简单介绍一下构成里萨如图形的原理,如果知道 X 和 Y 方向的两个数组分别按正弦规律变化(假设其数据点数,幅值和频率都相同), 如果它们的相位相同,则应用 XY 图描绘出的里萨如图形是一条 45°的斜线;当它们之间的相位差等于 90°时为圆;大部分情况都是椭圆。1. 2.新建一个 VI,在前面板上放置一个 XY 图,调整它的边框为合适大小,同时放置一个数值输入控件“相位差” 。 切换到程序框图,添加两个正弦波函数放置到程序框图上。将“相位差”输入控件与第二个正弦波函数的“相位输入”端口相连,默认 的相位是 0。3.在簇函数子模板上选择“捆绑”函数,将两个正弦信号打包为一个簇,第一个数组作为 X 轴的数据,第二个数组作为 Y 轴的数据,簇的 输出与 XY 图相连。如图:例二:用 XY 图描绘同心圆1. 2.新建一个 VI,在前面板上放置一个 XY 图,使曲线图例显示两条曲线标识。 在程序框图上放置一个 For 循环,给计数端子赋值为 360,添加正弦函数和余弦函数,它们位于函数→数学→基本与特殊函数→三角函数 →正弦,余弦。3. 4.选择“捆绑”打包函数,将每次循环产生的一对正弦值和余弦值攒成一个簇,循环结束后将这 360 个簇组成一个簇函数。 因为 XY 图的显示机制决定了它的输入必须是簇,所以要再用一次“捆绑”打包函数将两个簇数组转换为簇,最后再用“创建数组”函数 组成一个簇数组。程序框图如图:运行结果如图: Labview 同时还为我们提供了另外一种 XY 图,就是 Express XY 图切换到程序框图时,我们会看到在程序框图上,它的使用比单纯的 XY 图简便,从图中我们也可以看到,它的输入端口是两个,输入既可以是单 个的数值,也可以是数组,这里我们不再作详细的介绍。条件结构条件结构是执行条件语句的一种方法。这类似于文本编辑语言中常见的 If?Then?Else 语句。它位于程序框图中,函数→编程→结构→条件 结构。如图所示:条件结构包含有两个或者更多的子框图,每一个子框图包含一段程序代码,由此对应一个程序分支。多个子框图就像一摞卡片重叠在一起, 任何时候只有一个是可见的,执行哪一个取决于于选择端子外部接口相连的某个整数,布尔数,字符串或者枚举指,用户也可以直接输入所有可 能出现的值。 1. 选择端口的输入值 条件结构选择端口的输入值是由与它相连的输入控件对象决定的,数据类型可以是布尔量,整形,字符串型或者枚举型。条件结构顶部中间 是各分支的选择标识,它自动调整为输入的数据类型,可以在工具模板上使用标签工具直接键入单个数值或某个数据范围。数值之间用逗号来分 开,例如:“..0,2,4..10”表示选择条件为:≤0,2,4,5,6,7,8,9,10。 对于字符型和枚举型数值在条件标识上会自动加上双引号,当键入的选择器标识值与连接选择端口的数值类型不同时,选择器标识变为红色 标识有错误。如图:设置默认分支的方法是,选择一个分支结构,在快捷菜单中执行“本分支设置为默认分支”,它的作用是当选择端口的值与选择器标识值没 有一个匹配时,就执行默认分支。如图:2.条件结构的数据通道 条件结构的数据通道就是数据的输入和输出端口。将结构内外的端子相连后,边框上就会出现一个小矩形框,这就是数据通道,用于传输数 据。向条件结构的一个分支提供数据时,这个数据对于所有的分支都是有效的,也就是其他分支都可以使用这个输入数据。条件结构的输出通道 有些不同,当在一个分支中创建输出通道后,所有分支的同一位置都会出现一个白色小方框,它要求每一个分支都必须为这个通道予以连接,通 道变为实心后程序才可以运行。也可以在通道的快捷菜单中选定“未连线时使用默认”为没有连接的分支定义一个默认输出值,这时输出通道变 为灰色。如图: 条件结构应用举例 例一: 该例的目的是检查一个数是不是正数,如果是就计算该数的平方根值,如果不是则发出警告。1. 2. 3. 4. 5.新建一个 VI,在前面板上放置一个数值输入控件和一个数字显示控件。 在程序框图上放置一个条件结构,调整边框为合适大小。 在比较运算子模板中选取“大于等于 0?”函数,如果数字大于或者等于 0 则返回真,否则返回假。它的输出连接条件接口的选择端口。 在数值数字运算子模板中选取“平方根”函数,放置在条件结构的“真”子代码框。 选择一个发声函数,放到条件结构的“假”子代码框。它位于函数→编程→图形与声音→蜂鸣声。如图:6. 7.在条件结构的假代码框的输出通道上选取创建常量,创建常数-999,表示当数值输入为负数时输出-999,同时蜂鸣器发出警告。 完成连线,如图: 运行结果如图:例二: 该例的目的是首先要判断液面的高度是否超过零界面,如果超过零界面则执行后续操作(循环判断液面是否超位),否则停止执行程序。 因为 Labview 语言的 While 训话是先执行,然后再判断条件。而在实际应用中,经常是要求先进行判断条件,只有当条件满足时才执行,否 则不执行。可以在 While 循环中加入条件结构来实现此功能1. 2. 3.新建一个 VI,在前面板上放置一个数值输入控件,模拟容器“液面高度”同时放置一个“液面报警”指示灯,当液面超过零界面时点亮。 在程序框图上放置一个 While 循环结构并在它内部放置一个条件结构,调整结构边框位合适的大小。 在比较运算子模板中选取“大于 0?”函数,如果数字大于 0 返回真,否则返回假。它的输出连接条件的选择端口,并且连接到 While 循 环结构的循环条件端子,表示输入数字量大于 0 则继续循环,并且执行真分支。4. 5.在真分支代码框中,放置“大于?”函数,将“液面高度”与上限值“5”进行比较,输出送给“液面报警”指示灯。 完成连线,并运行程序。程序及运行结果如图: 顺序结构 顺序框图位于函数→编程→结构→平铺式顺序结构,层叠式顺序结构。 顺序结构依次执行程序,它可以包含多个代码子框图,这些代码子框图看起来就像是多帧电影胶片一样,所以把每个子框图称为帧。右击顺 序结构的框架,将弹出如图所示的快捷菜单。其中添加顺序局部变量是为了在各个帧之间传递数据。 顺序结构的一个典型应用就是计算程序运行的时间,将通过这个例子来说明顺序结构的用法。 1. 2. 3.新建一个 VI,在前面板上放置一个数值输入控件“给定数据”和两个数值显示控件“执行次数” , “所需时间” 。 在程序框图上放置一个层叠式顺序结构,右击结构边框,在弹出的快捷菜单中执行两次“在后面添加帧” ,创建帧 1 和帧 2。 选取第 0 帧,记录程序运行初始时间。右击顺序结构框图的边框,在弹出的快捷菜单中执行“添加顺序局部变量”,这时在第 0 帧的下边框出现一个黄色小方框,这就是 顺序局部变量,它可以在同一个顺序结构中的各帧之间传递数据。放置一个时间计数器到顺序结构内,它位于函数→编程→定时→时间计数器。返回毫秒定时器的值,用与计算占用的时间。用连线 工具将它与顺序局部变量相连,这时黄色小方框里会出现一个指向顺序结构外部的箭头,数值可用后续帧使用,如图:4.选取第 1 帧,实现等于给定值的匹配运算。程序如图:5.选取第 2 帧,同样放置一个时间计数器函数用于返回当前时间,将它减去顺序局部变量传递过来的第一帧初始时间后就可以得到花费的 时间,如图: 运行,结果如图:注意:Labview 编程的主要特点是数据流形式,这便于 VI 大量的按照并行方式运行,优化了程序的计算性能。而顺序结构却趋向于中断数 据流编程,禁止程序并行操作,顺序结构还掩盖了部分代码,所以用户在编程时应尽量不用或少用顺序结构。 在实际应用中,经常用人为的数据依从关系来确定程序先后执行的顺序,在前面簇的章节中,我们就提到过 Error 簇可以控制程序执行的先 后顺序,但并不是每一个控件都有 Error 簇的输入和输出端口,这时还有另一种方法能实现顺序执行的功能。如图:从第一个 While 循环结构中的布尔开关上连了一根线到第二个 While 循环结构的边框上,可以看到,第二个 While 循环结构中没有一个对象 需要这个数据,只是起到顺序执行程序的目的。 公式节点 用户可以在程序框图的两个位置找到公式节点结构,一个位于函数→Express→算术与比较→公式;另一个位于函数→编程→结构→公式节 点。如图: 第一种公式节点的使用比较方便,如图: 当把第一种公式节点放置到程序框图上时,系统便会自动弹出如上图所示的对话框,它的操作比较简单,当上述对话框右上方的方块显示为 绿色时,则表明系统识别输入的函数,当出现非法函数时,则表明系统不识别。如图:它的使用虽然方便,但消耗的系统资源较多,下面我们将重点介绍第二种公式节点的使用方法。 如图:创建一个公式节点到程序框图,在边框上单击右键选择添加,然后即可在节点框中输入变量名称,如图:公式节点中的函数和操作符与 C 语言中的基本相符,遇到特殊函数时查表即可。 应用举例: 例一:该例的目的事联系使用条件表达式来执行不同条件时的数据传输。 下面的代码表示:如果 X 为非负数,Y 等于 X 的平方根;如果 X 为负数,Y 等于-999。 if(x&=0)then y=sqrt(x) else y=-999 end if 对这段代码可以用公式节点来计算,需要注意大小写,如图所示:运行结果如图: 例二:该例的目的是联系使用公式节点来计算两个输出 x1 和 x2,并在同一图表中显示。 x1=t^3-10*t+1 x2=a*t+b 其中:t 共取 10 个点,范围是从 0~91.新建一个 VI,在前面板上放置一个波形图,用于同时显示输出的两个波形。同时放置两个数值输入控件,它们分别表示 x2 函数的斜率和 截距。2. 3.在程序框图上放置一个 For 循环,计数端子设为 10,计算自变量 t 分别等于 0 到 9。 在 For 循环中添加一个公式节点,为它添加三个输入端口,分别与重复端口 i,斜率 a 和截距 b 相连,并添加两个输入端口,分别表示输 出 x1 和 x2。再用文本标签工具再公式节点里添加代码。4. 5.在数组函数子模板中选取“创建数组“函数将 x1 和 x2 合并为一个二维数组,并在波形图中同时显示。 完成连线,如图:运行结果如图: 全局变量和局部变量 全局变量和局部变量是 LabVIEW 用来传递数据的工具。LabVIEW 编程是一种数据流编程,它是通过连线来传递数据的。但是如果一个程序 太复杂的话,有时连线会很困难甚至无法连接,这时就需要用到局部变量,就如同 Protel 软件画电路原理图一样,给相同的连线添加网络标号, 标识它们是相通的。另外用户也许会经常碰到这样一种情况,既能够对程序中一个控件对象写入数据,又要能够读出它的数据,这在数据流编程 中是无法实现的,这也需要用到局部变量或者全局变量,全局变量主要是针对不同 VI 程序之间的通信。 局部变量: 谈到局部变量,其实早在介绍顺序结构时就已经接触过了,当时是添加顺序局部变量来传递程序初始时间,以便计算程序所执行的时间。目 的是在不同选择分支中都能够对指示器进行赋值。 建立局部变量:建立局部变量的方法有两种:一种是在程序框图中直接添加,如图:另一种方法是右击控件对象,在弹出的快捷菜单中执行“创建/局部变量”如图: 局部变量的应用 该例的目的在于使用局部变量向它联系的前面板上的电流控件写数据,也可以从电流控件读取数据。程序框图如图所示:程序的目的是检验电流量,如果电流大于 5A 时,则限定电流量为上限 5A,这时电流局部变量时写入状态,可以向它写入数据 5A,尽管电 流控件是控制器;如果电流小于 5A 时,则将电流通过一个“电流显示器”来显示,这时就需要将电流局部变量改变为读取状态,方法是在快捷菜 单上执行“转化为读取”命令。 全局变量: 全局变量与局部变量不同,它是在不同的程序之间进行通信。LabVIEW 的全局变量是一个独立的 VI,它是一种特殊的程序,没有程序框图 只有前面板,功能是保存一个或多个全局变量,所以也把全局变量程序称为“容器”。 建立全局变量:它的建立和局部变量类似,将全局变量拖拽到程序框图中,在它的快捷菜单中执行“打开前面板”,或双击全局变量图标, 打开全局变量程序前面板,然后在前面板中添加所需要的全局变量控件,如图,添加了 3 个全局变量,并保存 VI。建立了全局变量以后就可以在其他程序里面调用它,方法是在程序框图上选中“选择 VI...”,如图:在打开的对话框窗体中为程序选择想要放置的全局变量。如果最先放置的不是想要的全局变量,可以像对局部变量那样操作,在快捷菜单上 选取“选择项”子选项,在列出的所有变量对象中进行选择,或者用操作工具来选择。 使用全局变量时必须特别小心,因为它对所有的 LabVIEW 程序都是通用的,稍有不慎就可能互相干扰,用户必须清楚的知道全局变量的读 写位置。用户编辑时既可以向全局变量输入数据,也可以从它读取数据,这一点与局部变量是完全相同的。 全局变量的应用较少,这里就不再举例 使用全局变量和局部变量的注意事项: LabVIEW 语言编程是一种数据流,全局变量和局部变量提供了一种违反严格数据流的程序设计方式。大家有必要了解竞态条件的缺陷,当 两个或两个以上的事件可以按任何顺序发生时就产生了竞态条件。用户要想知道再多个并行的程序中一个全局变量什么时候被访问是比较困难的。 特别是再多线程编程中,对这种共享数据变量的竞态条件问题要求更加苛刻,使用全局变量会带来意想不到的错误。 如果用户的应用程序中有全局变量,那么就存在大量的数据复制的危险,因为用户要想在不同的地方对数据进行处理,最终就有许多的数据 备份,造成内存的巨大开销和系统资源的浪费,所以建议初学者尽量不要使用全局变量。 如果程序中使用了全局变量或者是局部变量,那么在程序运行之前,必须首先要确定它的初始值是否满足执行要求,如果不满足的话,就要 对它们进行初始化。字符串字符串是 ASCII 码字符的集合,当用户与 GPIB 和串行设备的通信,读写文本文件以及传递文本信息时,字符串都是非常有用的。字符串中 的字符有些是可显示的,有些则是不可显示的。LabVIEW 在功能模板上的字符串子模板中提供了一整套的字符串处理函数,能够完成各种字符串处理功能。常用的字符串对象包括字符串 输入控件和字符串显示控件,它们位于控件→新式→字符串与路径→字符串输入控件,字符串显示控件。如图:字符串的显示方式: 在前面板上放置一个字符串输入控件,右击鼠标,弹出如图所示的菜单: 从上图中可以看出字符串有 4 种显示方式 下图是“www avrvi.com”分别用这 4 种方式显示,如图:字符串函数 打开程序框图中的字符串函数,如图:字符串函数模板除了包含一般的字符处理函数以外,还包含各种字符常量,以及字符串与数字量,路径的相互转换函数。 其中最后一行包含了各种常量,可以方便的使用。 字符串应用举例: 例一:组合字符串 该例的目的是将一些字符串和数值转化成一个新的输出字符串。1.新建一个 VI,在前面板上放置字符串输入控件“命令字”和“单位” ,符串显示控件“输出命令字符” ,数值输入控件“数值”和数值显 示控件“字符串长度” 。2.切换到程序框图,在字符串函数模板中选择“格式化写入字符串” ,如图连线:3.双击“格式化写入字符串”函数,弹出如图所示对话框对它进行参数设定,将分数的长度改为 4,如图: 4. 5.同样在程序框图中添加“字符串长度”函数计算字符串的长度,它用于返回输出的命令字符串的长度。 完成连线,如图:运行结果如图:例二:字符串子集和数值的提取 实际应用中很多情况下,必须把字符串转换成数值,例如需要将从仪器中得到的数据字符串转换成数值。 该例的目的是从一个输入的字符串中,提取一个子字符串,另外扫描字符串,将子字符串转换为数据。1.新建一个 VI,按照如图所示放置输入和输出控件。 2. 3.切换到程序框图,从字符串函数模板中,选择“部分字符串”函数,在该例中,它的功能是返回从偏移地址开始的指定长度的子字符串。 选择“扫描字符串”函数,它用于扫描字符串,并将有效的数值(0~9,正,负,e 和 E)转换成数值。如果连接了一个格式字符串,它 将根据字符串指定的格式进行转换,否则将进行默认格式的转换,该函数的初始扫描位置参数用于设置初始扫描位置,它与“数字相对 偏移量”相连。4.完成连线,如图:运行结果如图:注意:LabVIEW 的偏移地址是从 0 开始计数的。文件 I/O 文件输入输出是程序设计中的一个重要概念,一般来说,文件是存储在磁盘伤的数据的集合。文件输入与输出就是要在磁盘文件中保存和读 取信息数据,以文件形式存储起来的数据具有“永久性”,数据文件不仅可以与 LabVIEW 语言编写的其他 VI 交换数据,而且可以被其他程序共 享。 文件输入与输出操作主要包括 3 个基本的步骤:新建或者打开一个已有的文件,对文件进行读写和关闭文件。 LabVIEW 支持的文件格式主要包含以下 3 种:? ? ?ASCII 码文本格式文件 二进制格式文件 LabVIEW 数据记录文件1.ASCII 码文本格式文件文本文件又称为 ASCII 码文件或字符文件,它的每一个字节代表一个字符,存放的是这个字符的 ASCII 码。文本文件的优点是它几 乎在任何应用程序中都是可读的,这种文件最易于进行整体互换,用户可以用其他的软件来访问数据,例如字处理软件 Word 或者 Excel 等,在仪器控制系统中的大部分控制指令也是用文本字符串。当然在写文件之前必须要将所有的数据都变成 ASCII 字符串格式,读文件 之后要将字符串恢复为原数据值。文本文件的缺点是占用的磁盘空间较大,比如存储一个浮点数-864.39571,因为每个字符要占用一个字节,所以需要 10 个字节空 间。文本文件的存取数据过程中存在 ASCII 码与机器内码的转换,所以存取数据的速度也比较慢。2.二进制格式文件二进制文件是把数据按其在内存中存储的形式(机器内码)原样输出到磁盘上,所以它的存取速度最快,格式也最紧凑。二进制格 式占用的磁盘空间比 ASCII 码文本文件要小得多,对于上诉的浮点数-864.39571,如果存储为单精度型,只占用 4 个字节,要是存储为 双精度型,则占用 8 个字节。用户在读写二进制文件时,必须明确文件使用的时哪一种数据类型,各种类型的二进制文件之间是不能通用的。二进制格式文件可 以随机的访问其中的某一数据。而这一点是文本文件无法比拟的,要想在文本文件中访问某一数据,则必须把它之前的数据全部都读出 来,才可以访问所需要的数据。3.数据记录文件数据记录文件也是一种二进制格式的文件, 只有 LabVIEW 才可以对它进行读取和处理。 数据记录文件可以看成是数据库文件格式, 它将数据存储为一系列相互独立的有各自数据类型的记录,就像簇一样,每一个记录可以包含不同类型的数据,这些数据类型是由用户 事先指定的。LabVIEW 允许用户自由读取数据记录文件,在各个记录中索引出不同数据类型的数据,并且每一个记录文件都包含由时间 标记。LabVIEW 在程序框图上的为我们提供了一整套功能强大而且方便灵活的文件输入/输出函数,如图: 具体每个控件的作用和功能不在这里向大家详细地介绍,下面将通过一系列地例子来说明各种文件的读取。例一: 使用“写文本文件”函数写文本文件 1.新建一个 VI,在前面板上放置一个“波形图表”,将标签内容改为“温度”,取消显示曲线图注和 X,Y 坐标轴标签,同时放置一个数 字输入控件,将标签改为“采样点数”。再放入一个“文件路径输入控件”,它位于控件→新式→字符串与路径→文件路径输入控件,如图:2.后面板程序如图:其中用到了一个 LabVIEW 自带的程序 Digital Thermometer.vi,在程序框图中点击“选择 VI?”,如图: 系统会自动打开一个对话框,如图:在我的计算机里,它位于 labview8.2→Activity→Digital Thermometer,如图: 其中在“格式化写入字符串”函数上的“%3.f\n”是转换后保留三位小数,字符串间以回车间隔。 回到前面板,点击“路径”右边的小图标:打开一个对话框,选择文件的存储路径,如图: 选择完后,程序即可运行,运行结果如图:打开记事本,即可看到写入的文件,如图:此程序中利用了 For 循环自动索引的功能,一次产生了 10 个数据,然后逐一写入文本。正因为此,“写入文本文件”是高层文件 I/O 操作 函数,高层文件 I/O 操作函数每调用一次就会实现创建或打开文件,读写文件,关闭文件的整个过程。如果需要向文件中连续写入数据,这样的效 率是非常低的。如果想要提高效率,可以采用底层文件 I/O 操作函数来实现写文本文件。 例二: 使用底层文件 I/O 操作函数向文本文件写入数据。 图中框起来的便是底层文件 I/O 函数 前面板的构建和例一类似,下面是程序框图:从途中可以看出,程序进行循环后,文件则被打开,这样就可以一直向文件中输入数据,直到循环结束,才关闭文件,它大大提高了写文件 的效率。 运行结果如图: 从上图可以看出,每两个数字之间正好间隔一个 Tab 定界符。 例三:写电子表格文件 “写入电子表格文件”函数的应用与“写入文本文件”函数的应用十分相似。它能直接写入一维或是二维的数据。程序框图如图:图中 Generate Waveform.vi 也使 LabVIEW 自带的一个 VI,它与前面所讲的 Digital Thermometer.vi 在同一个文件夹里,它是用于模拟产生抽样信号的。 则数据会按列排列。 运行结果如图:该函数默认的是将数据在表格中按行排列, 那么一个二维数组的记录则只有两行, 若在该接口中给其赋值 “真” , 打开保存的电子表格文件,即可看到数据例四:读文本文件 该例采用在例一中保存的文件,程序框图如图:说明:其中用到了一个 LabVIEW 自带的子 VI:Extract Numbers,它位于 LabVIEW8.2→examples→general→strings,如图: 单击确定后,系统会弹出下面的对话框:选择 Extract Numbers.vi,它的作用是提取由逗号,分行符号,非数值字符等分隔开的数据所组成的 ASCII 字符串,并将它们转换成数值数 组,用于将读取的字符串转换为双精度数据类型的一维数组。运行结果如图: 例五:另一种读取文本文件的方法 上面的例子是用一个函数完成了,文件的打开,读取,关闭。和写入文本文件时一样,我们也可以通过三个函数来实现以上的三个步骤,程 序框图如图:其中 For 循环默认的是自动索引,在连线后,需将图中框起来的两个节点禁用索引。运行结果如图:例六:读取电子表格文件 本例使用例三所产生的表格文件。 程序框图如图: 运行结果如图:从结果中可以看到,因为例三在生成表格文件时采用的格式为“%.3f\t”,所以从该电子表格中读取数据时,中间的一行空白 LabVIEW 会自 动把它们默认为 0 数组,从而在波形图表中显示的时候会出现中间的一行红线。驱动程序的安装NI 公司官方提供了支持 LabVIEW8.2 的 DAQ 驱动程序,下载地址为: ftp://ftp.ni.com/support/daq/pc/ni-daq/daqmx/8.3/NIDAQ830.zip 把 DAQ 卡插入电脑的 PCI 插槽上后,就可以开始安装驱动程序了。把压缩包解压以后,双击 Setup,就会出现如图所示的对话框: 进度条完成后,提示用户选择安装的文件夹:然后选择所需要安装的组件,如图: 安装完成后,重启计算机,即可使用 DAQ 了。双击桌面上的图标:可以看到您现在的计算机所拥有的 NI 公司的硬件和软件的情况。如图:DAQ 的简单使用 打开程序框图,我们可以看到有关 DAQ 的函数,如图: 在所有的函数中最常用的就是 DAQ Assist,下面我们就简单得介绍一下 DAQ Assist 的用法。 先放置一个 DAQ Assist 到程序框图上,系统会自动弹出如图所示对话框:例一:用 DAQ 输出正弦波形 1.如上图,选择 Analog Output,如图: 选择 Voltage,指用电压的变化来表示波形,然后系统弹出对话框,如图:选择通道 0,点击“Finish”,弹出对话框: 确定,系统便开始对 DAQ 进行初始化,如图:完成后,DAQ Assistant 的图标变为当我们向它输入信号的时候,DAQ 便可以向外输入我们输入的信号了。 2.放置仿真信号函数到程序框图,它位于函数→信号处理→波形生成→仿真信号.系统弹出对话框,如图: 点击“确定”即可。程序框图如图:运行结果如图: 注意:不同型号的 DAQ 的接口板是不同的,大家可以网上查到不同型号的 DAQ 的每个接口的应用指示。下图是我的 DAQ 的接口图:有关 DAQ 的应用我们暂时就介绍这么多,大家如有疑问,可上论坛发帖,我们将尽力为大家解答。串行通讯终端与计算机之间或者计算机与计算机之间进行交换信息时,除了采用并行通讯方式之外,还经常采用串行通讯方式。并行通讯是指数据的 各位同时进行传送,其有点是传送数据速度快,缺点是有多少位数据就需要多少根传输线,这在数据位数较多,传送距离较远时就不宜采用。串 行通讯是指数据一位一位地按顺序传送,其突出优点是只需一根传输线,特别适应于远距离传输,缺点是传送速度较慢。在微机测量,控制系统中,目前串行数据的传输大多采用异步通讯的方式。1.同步通讯和异步通讯 串行通讯分为同步传送和异步传送两种方式。o? 同步传送方式要求通信双方以相同的速率进行,而且要准确地协调。它通过共享一个单个时钟或定时脉冲源以保证发送方和 接受方准确同步。其特点是允许连续发送一组字符序列(而非单个字符) ,每个字符数据位数相同,没有起始位和停止位,效率 高。o? 异步传送方式不要求通信双方同步,发送方和接受方可以有各自的时钟源。为了能够实现通信,双方必须都遵循异步通信协 议。在异步通信中,通信双方必须规定两件事:一是字符格式,即规定字符各部分所占的位数,是否采用奇偶校验,以及校验 的方式;二是采用的波特率,以及时钟率与波特率之间的比例关系。由此可见,异步通信方式的传输效率比同步通信方式低, 但它对通信双方的同步要求大大降低,因而成本也比同步通信方式低。2.DTE 和 DCE在串行通讯中,用于发送和接收数据的设备称为数据终端设备(Data Terminal Equipment 简写为 DTE)。DTE 既可以是一台计 算机, 也可以是一台只接收数据的打印机。 用于连接 DTE 与数据通信网络的设备称为数据通信设备 (Data Communications Equipment 简 写为 DCE),或称为数据电路终接设备。DCE 既可以是一个调制解调器,也可以是简单的线路驱动器。3.波特率在串行通讯中还有一个重要的指标――波特率(又称调制速率)。波特率定义为每秒钟传送二进制数码的位数,以位/秒(bit/s)为 单位,亦称“波特”。在异步通讯中,波特率为每秒传送的字符数和每个字符位数的乘积,例如每秒传送的速率为 120 字符/秒,而每个 字符又包含 10 位(1 位起始位,7 位数据位,1 位奇偶校验位,1 位停止位),则波特率为:120 字符/秒×10 位/字符=1200 位/秒=1200 波特注意:波特率与时钟频率不是一回事,时钟频率比波特率要高得多,通常在高 16 倍或 64 倍。由于异步通讯双方各用自己的时钟源 采用较高频率的时钟,在一位数据内就有 16 位或 64 个时钟,捕捉正确的信号就可以得到保证,若时钟频率就是波特率,则频率稍有偏 差就会发生接收错误。LabVIEW 中的串行通讯选板 安装完 labVIEW8.2 后,还需要安装 VISA 的驱动程序才能使用串口,驱动程序的下载地址为: ftp://ftp.ni.com/support/visa/drivers/win32/4.0/visa400full.exe LabVIEW 中有关串口的函数选板如图,它位于函数→仪器 I/O→串口 下面举一个例子来说明串口是如何进行通讯的 例:双机通讯 1. 功能描述 双机通信是在两台计算机之间进行串口通讯。一台计算机作为服务器,通过 RS-232 串口向外发送数据;另一台计算机作为客户机,接收 由服务器发送来的数据。 2. 串口引脚连接 两台计算机的串口之间通过一根 RS-232 电缆线连接起来,串口电缆线采用三线制,它只使用发送数据(TxD),接收数据(RxD)和信号 地(SG)三根信号线。 3. 服务器程序设计 其程序设计如下: ㈠新建一个 VI,在前面板上放置 4 个输入控件:“端口号”,“波特率”,“数据比特”和“停止位”。另外,放置一个字符串输入控件, 在其内部输入向外发送的字符串数据。添加程序文本标签“串口服务器”。 ㈡在程序框图中放置一个层叠式顺序结构,创建两个分支。在第 0 分支中,放置一个“Serial Port Init.vi”函数,并添加一个顺序局部变量; 在第 1 分支中,放置一个“Serial Port Write.vi”函数,它们位于 labVIEW8.2→vi.lib→Instr→serial。连线如图:前面板如图: 4.客户机程序设计与服务器程序类似,其中使用了“Bytes At Serial Port.vi”函数和“Serial Port Read.vi”它们都在前文所提到的路径中, 客户机程序框图如图:前面板如图:串口的内容就为大家简单的介绍这么多,有什么问题可上我们的论坛发帖,我们会尽力为大家解答。
更多搜索:
赞助商链接
All rights reserved Powered by
文档资料库内容来自网络,如有侵犯请联系客服。}

我要回帖

更多关于 labview超时事件分支 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信