cpubbs论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

LabVIEW+单片机学习套件全套教程资料下载[免费]LabVIEW论坛精华列表贴USB0816数据采集卡《LabVIEW宝典》
LabWindows/CVI论坛精华贴NET0816以太网数据采集卡RC0210远程设备授权系统 关闭关停锁定打开设备 户外分布式数据采集
NET1624低速高精度以太网数据采集卡WIFI0824SD无线WIFI网络数据采集卡脱机运行 SD存储 小尺寸微型 串口采集远程采集 安卓 手持移动采集 纪录仪
楼主: baby

第五讲 程序结构---循环结构

[复制链接]
 楼主| 发表于 2009-2-16 21:44:39 | 显示全部楼层
第一种公式节点的使用比较方便,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:45:05 | 显示全部楼层
当把第一种公式节点放置到程序框图上时,系统便会自动弹出如上图所示的对话框,它的操作比较简单,当上述对话框右上方的方块显示为绿色时,则表明系统识别输入的函数,当出现非法函数时,则表明系统不识别。如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:45:51 | 显示全部楼层
它的使用虽然方便,但消耗的系统资源较多,下面我们将重点介绍第二种公式节点的使用方法。
如图:创建一个公式节点到程序框图,在边框上单击右键

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:46:13 | 显示全部楼层
选择添加,然后即可在节点框中输入变量名称,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:46:41 | 显示全部楼层
公式节点中的函数和操作符与C语言中的基本相符,遇到特殊函数时查表即可。

应用举例:
例一:该例的目的是联系使用条件表达式来执行不同条件时的数据传输。
下面的代码表示:如果X为非负数,Y等于X的平方根;如果X为负数,Y等于-999。
if(x>=0)then y=sqrt(x)
else y=-999
end if
对这段代码可以用公式节点来计算,需要注意大小写,如图所示:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:47:24 | 显示全部楼层
例二:该例的目的是联系使用公式节点来计算两个输出x1和x2,并在同一图表中显示。
x1=t^3-10*t+1
x2=a*t+b
其中:t共取10个点,范围是从0~9
  • 新建一个VI,在前面板上放置一个波形图,用于同时显示输出的两个波形。同时放置两个数值输入控件,它们分别表示x2函数的斜率和截距。
  • 在程序框图上放置一个For循环,计数端子设为10,计算自变量t分别等于0到9。
  • 在For循环中添加一个公式节点,为它添加三个输入端口,分别与重复端口i,斜率a和截距b相连,并添加两个输入端口,分别表示输出x1和x2。再用文本标签工具再公式节点里添加代码。
  • 在数组函数子模板中选取“创建数组“函数将x1和x2合并为一个二维数组,并在波形图中同时显示。
  • 完成连线,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:48:14 | 显示全部楼层
运行结果如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:48:27 | 显示全部楼层
5.4全局变量和局部变量
全局变量和局部变量是LabVIEW用来传递数据的工具。LabVIEW编程是一种数据流编程,它是通过连线来传递数据的。但是如果一个程序太复杂的话,有时连线会很困难甚至无法连接,这时就需要用到局部变量,就如同Protel软件画电路原理图一样,给相同的连线添加网络标号,标识它们是相通的。另外用户也许会经常碰到这样一种情况,既能够对程序中一个控件对象写入数据,又要能够读出它的数据,这在数据流编程中是无法实现的,这也需要用到局部变量或者全局变量,全局变量主要是针对不同VI程序之间的通信。
局部变量:
谈到局部变量,其实早在介绍顺序结构时就已经接触过了,当时是添加顺序局部变量来传递程序初始时间,以便计算程序所执行的时间。目的是在不同选择分支中都能够对指示器进行赋值。
建立局部变量:建立局部变量的方法有两种:一种是在程序框图中直接添加,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:49:20 | 显示全部楼层
另一种方法是右击控件对象,在弹出的快捷菜单中执行“创建/局部变量”如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:49:48 | 显示全部楼层
局部变量的应用
该例的目的在于使用局部变量向它联系的前面板上的电流控件写数据,也可以从电流控件读取数据。程序框图如图所示:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:50:22 | 显示全部楼层
程序的目的是检验电流量,如果电流大于5A时,则限定电流量为上限5A,这时电流局部变量时写入状态,可以向它写入数据5A,尽管电流控件是控制器;如果电流小于5A时,则将电流通过一个“电流显示器”来显示,这时就需要将电流局部变量改变为读取状态,方法是在快捷菜单上执行“转化为读取”命令。
全局变量:
全局变量与局部变量不同,它是在不同的程序之间进行通信。LabVIEW的全局变量是一个独立的VI,它是一种特殊的程序,没有程序框图只有前面板,功能是保存一个或多个全局变量,所以也把全局变量程序称为“容器”。
建立全局变量:它的建立和局部变量类似,将全局变量拖拽到程序框图中,在它的快捷菜单中执行“打开前面板”,或双击全局变量图标,打开全局变量程序前面板,然后在前面板中添加所需要的全局变量控件,如图,添加了3个全局变量,并保存VI。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:50:46 | 显示全部楼层
建立了全局变量以后就可以在其他程序里面调用它,方法是在程序框图上选中“选择VI...”,如图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:51:18 | 显示全部楼层
在打开的对话框窗体中为程序选择想要放置的全局变量。如果最先放置的不是想要的全局变量,可以像对局部变量那样操作,在快捷菜单上选取“选择项”子选项,在列出的所有变量对象中进行选择,或者用操作工具来选择。
使用全局变量时必须特别小心,因为它对所有的LabVIEW程序都是通用的,稍有不慎就可能互相干扰,用户必须清楚的知道全局变量的读写位置。用户编辑时既可以向全局变量输入数据,也可以从它读取数据,这一点与局部变量是完全像同的。
全局变量的应用较少,这里就不再举例
使用全局变量和局部变量的注意事项:
LabVIEW语言编程是一种数据流,全局变量和局部变量提供了一种违反严格数据流的程序设计方式。大家有必要了解竞态条件的缺陷,当两个或两个以上的事件可以按任何顺序发生时就产生了竞态条件。用户要想知道再多个并行的程序中一个全局变量什么时候被访问是比较困难的。特别是再多线程编程中,对这种共享数据变量的竞态条件问题要求更加苛刻,使用全局变量会带来意想不到的错误。
如果用户的应用程序中有全局变量,那么就存在大量的数据复制的危险,因为用户要想在不同的地方对数据进行处理,最终就有许多的数据备份,造成内存的巨大开销和系统资源的浪费,所以建议初学者尽量不要使用全局变量。
如果程序中使用了全局变量或者是局部变量,那么在程序运行之前,必须首先要确定它的初始值是否满足执行要求,如果不满足的话,就要对它们进行初始化。

练习5.2 使用顺序结构
目的:创建一个 VI,计算生成等于某个给定值的随机数所需要的时间。

前面板
1.
打开一个新的前面板,并按照下图所示创建对象

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:51:52 | 显示全部楼层
本帖最后由 baby 于 2009-2-16 21:53 编辑

我们约定数据是0100范围的整数。当前值用于显示当前产生的随机数。“执行次数”用于显示达到指定值循环执行的次数。匹配时间用来显示达到指定值所用的时间。

流程图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
 楼主| 发表于 2009-2-16 21:54:31 | 显示全部楼层
1.
在程序框图中放置顺序结构(Functions»Structures)。
2.
用鼠标右键单击帧的边框,在快捷菜单中选择Add Frame After,创建一个新帧。重复这个步骤,再创建一个帧。共3桢。
3.
选中第0桢,设置读取初始时间(子)程序
4.
第0帧的下边框上含有一个小方框,其中有一个箭头。这个方框叫做顺序局部变量,可以在同一个顺序结构中的各个帧之间传递数据。用鼠标右键单击第0帧的底部边框,选择Add Sequence Local,创建顺序局部变量。顺序局部变量显示为一个空的方块。当您将某个功能函数与顺序局部变量相连时,方块中的箭头就会自动显示。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cpubbs论坛. ( 粤ICP备09171248号 )

GMT+8, 2025-4-5 06:48 , Processed in 0.683430 second(s), 5 queries , Gzip On, File On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表