LabVIEW的程序结构

上传人:真** 文档编号:243309118 上传时间:2024-09-20 格式:PPT 页数:49 大小:864KB
返回 下载 相关 举报
LabVIEW的程序结构_第1页
第1页 / 共49页
LabVIEW的程序结构_第2页
第2页 / 共49页
LabVIEW的程序结构_第3页
第3页 / 共49页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2-3-,*,LabVIEW,的程序结构,主要的程序结构有:,循环,(,While,循环和,For,循环),选择,(,Case,结构),顺序,(,Sequence,结构,分为平铺式和层叠式),事件,(,Event,结构),1 For,循环,1,For,循环的创建,基本的,For,循环结构由循环框、循环次数端口和计数端口组成。,循环框,计数端口,循环次数端口,循环边框,2,For,循环的工作流程,For,循环用于将结构中的程序循环执行指定的次数。,在开始,For,循环之前,从循环次数端口读入循环次数,计数端口输出,0,值。,接下来执行,For,循环框内框图代码程序,每执行一次计数端口值自动加,1,。,循环次数达到设定值后,退出循环。,3,For,循环的数据通道与自动索引,数据通道是用连线工具连接循环框内外的数据端口时,在框架上自动形成的方形通道图标,。,图标空心表明此时数据通道具有自动索引功能,实心图标不能索引,。,自动索引是指将循环框外面的数组成员逐个依次进入循环体内,或将循环框内的数据累加成一个数组输出到循环框外面。,例如:下图中通道自动索引功能有效时,每一次循环产生一个新的数据,存储在循环的边框通道上,待循环结束以后,产生的,6,个数据将传送到一个数组指示器中。自动索引功能无效时,只有最后一次,For,循环产生的,1,个随机数传到循环外。,空心,实心,4,移位寄存器,创建:,右击边框,弹出一个菜单,选择,Add Shift Register,选项,可添加一个移位寄存器。,用途:,主要用于,While,循环和,For,循环,将上一次循环的值传给下一次循环。,数据类型:,数字型、布尔型、字符串等,。,初始化:,在循环外将初始值连到移位寄存器的左端口,有默认初值。,还可以存储前几次循环的值,,在移位寄存器的左端口或右端口上右击鼠标弹出菜单,选择,Add Element,选项,可创建附加的左端口来存储前几次循环的值。,5,反馈节点,功能:在循环中,将数据从一次循环传递到下一次循环。,反馈节点箭头的方向表示数据流的方向。,反馈节点和移位寄存器可以互换,在反馈节点或移位寄存器图标上弹出快捷菜单选,Replace with shift Register,或,Replace with Feedback Node,即可。,移位寄存器左端口多于,1,个时不能转换为反馈节点。,下面是用移位寄存器(左图)和反馈节点(右图)实现,a+,的框图程序。,2 While,循环,For,循环和,While,循环的区别:,For,循环要执行预先指定的循环次数。,而,While,循环只有在条件端口接收到的值为,False(or:True,),时才停止循环。,While,循环不必知道循环次数。,While,循环不满足条件也要执行,1,次。,For,循环当,N1,时,1,次都不执行。,1.While,循环的创建,While,循环由循环框、条件端口和计数端口组成。,循环框,条件端口,计数端口,循环边框,2.While,循环的工作流程,条件端口控制循环的停止与否。,条件端口有两种状态 :,当使用状态为,Stop if True,时,若输入值为,Ture,,则停止循环 。若输入值为,False,,则继续执行下一次循环。,当使用状态为,Continue if True,时,若输入值为,Ture,,则继续执行下一次循环。若输入值为,False,,则停止循环。,循环结束后,才去检测条件端口的值,因此不管条件是否成立,循环至少要执行一次。,计数端口用于统计循环执行的次数,,While,循环每执行一次,计数端口的值就加,1,。,计数端口从零开始计数,也就是说,在第一次循环结束时,计数端口的值为,0,,如果循环执行了,10,次,则计数端口的值为,9,。,While,循环也具有数据通道索引和移位寄存器、反馈接点的功能,它们的用法与,For,循环相同,只是,While,循环的边框数据通道默认为不能索引。,用,While,循环实现求,X,的立方和(,P54,),3 Case,结构,1.Case,结构的创建,Case,结构由选择框架、选择端口、选择器标签,以及递增,/,递减按钮组成。,选择标签,递增按钮,递减按钮,选择框架,选择端口,2,Case,结构的工作流程,Case,结构有一个条件选择端口 (,Selector,),根据连到该端口,的值来判断执行哪一个子,Case,。,Selector,端口的数据类型有布尔型、数字型和字符串型。,3,设置选择结构的默认项,应设置一个默认项来处理超出条件选项范围的情况。,设置选择结构默认项的方法是在选择结构边框上单击鼠标右键,选择,Make This The Default Case,。,4,选择结构数据通道的设置,输入数据时,每个子,Case,框可连可不连数据通道。,输出数据时,每个子,Case,框必须为通道连接数据。否则程序不能运行,这时通道的图标是空心的,只有为每个子,Case,框的数据端口都连接数据后,图标才变成实心。,Use Default if Unwired,可使程序中没有连线的子,Case,框输出默认值。,CASE0 (Add),,,VI,就进行加法运算,,CASE1,,则,VI,将进行减法运算。,使用了一个数字型,Text Ring,控制器(在控制模板中的,Ring&Enum,子模板中),注意:,当在一个子,Case,中建立了一个输出数据通道后,必须给每一个子,Case,定义输出数据通道。,设定默认的子,CASE,,当所有条件都不满足时,执行默认子,CASE,例子,4,顺序结构,LabVIEW,是一种数据流程序设计语言,没有明确的先后顺序,当节点所有输入端的数据全部有效时,节点才执行。,Sequence,结构,它是一种先后顺序执行的结构,看上去象电影胶片的帧(,Frame,),每一帧为一段框图程序,按照帧(,Frame,)的顺序来执行框图程序。,两种形式顺序结构,,Flat Sequence Structure,平铺式顺序结构和,Stacked Sequence Structure,层叠式顺序结构。功能相同,区别仅在于表现形式不同。,1.,顺序结构的创建,在函数模板的,Structures,子模板中选择创建顺序结构。选取,Stacked Sequence Structure,层叠式顺序结构 。,在结构边框上面单击鼠标右键,从弹出的快捷菜单中选择“,Add Frame After”,或“,Add Frame Before”,可以增加子图形代码框。,在结构边框上右击弹出的快捷菜单,选择,ReplaceReplace,with Flat Sequence,,可以将层叠式顺序结构变换为平铺式顺序结构,2.,顺序结构的工作方式,数据传递至顺序结构时,层叠式从标识,0,开始执行,依次顺序执行;平铺式从左至右执行所有子图形代码框。,从结构外面向顺序结构写数据时,可连接可不连接这个数据通道;但是当顺序结构向外输出数据时,各个图形代码框中只能有一个连接这个数据通道。,代码框之间的数据传递,平铺式可从一帧直接连线到另一帧来传递数据,层叠式则需要通过局部变量,Sequence Local,来传送数据。,在层叠式顺序结构的边框上面右击,选择,Add Sequence Local,即可在当前帧创建一个顺序局部变量端口。,将本帧中的数据连接到该局部变量端口,该数据就可传到后面的帧,该数据不会作用到它前面的帧。,如下图示意了层叠式顺序结构通过局部变量传递数据的情况。在标识是,1,号帧的一个数据传递到标识是,2,号的帧进行“或”运算,,0,号帧不能使用该数据。,例:,使用,Sequence,结构,设计一个,VI,,计算产生一个与指定的数字相等的随机数所需花费的时间。,读取定时器的当前值,VI,程序每隔,10ms,执行循环,四舍五入取整,5,事件结构,1.,事件结构的创建,事件结构包括:结构框、事件标签、超时端口和事件数据端口。,事件标签 :,说明当前框图程序是响应的什么事件,。,超时端口,,默认值为,-1,,表示无限等待,。,事件数据端口,结构框,2,事件结构的使用,可有一个或多个子图形代码框,该图形代码框可以设置为响应多个事件。,右击事件结构边框,从弹出的快捷菜单中选择,Edit Events Handled by,ThisCase,,这时将弹出编辑事件对话框。,显示当前建立的事件,默认“,Timeout,事件。,增加事件,删除事件,可以选择的事件源,相应的事件源可产生的事件消息,例如:建立一个,5,秒的超时事件和一个“,OK Button”,开关值发生变化的事件,要求:,方法,1,:任一事件发生都执行同一个子图形代码框程序,显示出对话框“超时或单击了,OK,按钮”。,方法,2,:由不同的框图程序响应不同的事件,显示出对话框“超时事件”或“单击了,OK,按钮事件”。,法,1,:,在前面板添加放置一个“,OK Button”,控件 。,在编辑事件对话框中单击按钮 新建一个事件,选取“,EventSources,”,事件源窗口中的“,OK Button”,,并在“,Event”,事件窗口中选择“,Value Change”,。,选取,OneButtonDialog,函数,放置在,Event Structure,中。,在,message,数据端口新建一个常量,输入“超时或单击了,OK,按钮”。,在超时端口连接值为,5000,的一个数字常量。,运行程序,如果单击了“,OK Button”,按钮或等待,5,秒都会显示出对话框“超时或单击了,OK,按钮”。,法,2,:,在事件结构边框的快捷菜单中选择,Add Event Case,来创建事件结构的一个分支 。,在弹出的对话框中,选取“,EventSources,”,事件源窗口中的“,OK Button”,。并在“,Event”,事件窗口中选择“,Value Change”,。,后面的设置与法,1,类似。,6,公式节点,在框图程序中,如果需要设计较复杂的数学运算,框图将会十分复杂,工作量大,而且不直观,调试、改错也不方便。,利用公式节点,只需将数学公式的文本表达式输入在公式节点的框图内,并连接相应的输入、输出端口,则,LabVIEW,会自动地根据公式计算出正确的结果,并从输出端输出。,(,1,)公式节点的创建,从函数模板的,Structures,子模板上选择公式节点,Formula Node,,在框图中设置公式节点。,公式节点的边框大小可以改变,用户可以使用标签工具,将数学公式直接输入到公式节点的框内。,(,2,)公式节点的使用,可以声明变量,也支持一些常用的,C,语言的语句(包括赋值语句、条件语句、循环语句、,Switch,语句),每条语句以分号结尾。,输入公式后,需要添加输入、输出端口。,在添加端口后出现的方框内填入变量名称。,将输入端口和程序中的数据端口相连接。,将输出端口和程序中的指示端口连接,公式节点中常用的运算符,其中,条件运算符的“,?”,前的部分是判定条件,“,?”,和“,:”,间的部分为当条件为,True,时的表达式,“,:”,后的部分为当条件为,False,时的表达式。,公式节点语句中还可以使用数学函数:,abs,、,acos,、,acosh,、,asin,、,asinh,、,atan,、,atan2,、,atanh,、,ceil,、,cos,、,cosh,、,cot,、,csc,、,exp,、,expml,、,floor,、,getexp,、,getman,、,int,、,intrz,、,ln,、,lnp1,、,log,、,log2,、,max,、,min,、,mod,、,pow,、,rand,、,rem,、,sec,、,sign,、,sin,、,sinc,、,sinh,、,sizeOfDim,、,sqrt,、,tan,、,tanh,。,公式节点中可使用,IF,条件语句,,for,和,do ,、,while,循环,Swtich,( ) case,分支语句,公式节点的,语法与,C,语言相同,例:用公式节点计算,y,1,=x,3,+x,2,+5,和,y,2,=m*,x+b,分析:,公式的输入端口共有,3,个输入量,分别是,m,、,b,和,x,。,3,个输入量经过公式节点中的两条语句完成指定的运,算,通过输出端口输出,y1,和,y2,。,补充:前面板对象属性的动态控制,在前面板设计编程时,我们可以修改和设定对象控件的属性,但是在程序运行时能否由用户修改或程序自身改变呢?,方法是:创建对象的属性节点,通过对属性节点的“写”操作,完成对对象属性的修改。,同样通过对属性节点的“读”操作,在程序中读取对象的属性。,例:程序运行中,用,Knob,控件改变图形曲线的颜色,提示:建立,CHART,的属性节点 ,改为可写,并指定为曲线,Plot,的颜色,Color,属性,用,Knob,的值控制,CASE,,分别送,5,种颜色值给属性节点,7,局部变量和全局变量,1,局部变量,程序太复杂,连线困难,需用局部变量。,(,1,),创建,法一,:为前面板对象创建局部变量。,在对象上面单击鼠标右键,选择,CreateLocal,Variable,。,法二,:在框图程序中新建局部变量,然后再指向某个对象。,可以为一个对象创建多个局部变量。,局部变量具有读、写两种属性。并可互换。,(2),使用示例,程序中,建立了“停止”控件的两个局部变量。,循环内的局部变量处于“读”状态,读出当前“停止”控件的状态,送给“指示灯”控件显示。,循环外的局部变量 则处于“写”状态,它在每次程序运行前赋给“停止”控件,赋值为“,False”,,以保证程序运行时进入循环状态。,2,全局变量,不同程序之间交换数据,需用全局变量。,全局变量,VI,只有前面板而无框图程序。,(,1,),创建,选择全局变量图标,右击,选择,Open Front Panel,,打开全局变量声明,VI,的前面板。,按照需要的数据类型加入控件,。,切换到框图程序窗口,单击全局变量图标,选择需要它指向的控件。,返回到全局变量声明,VI,的前面板,将该,VI,文件存盘,完成全局变量的建立。,(,2,),调用,由函数模板中的,Select a VI,子模板打开选择用户程序对话框,选择已经保存的全局变量声明,VI,程序,此时将在框图程序中显示全局变量数据端口。,如果在全局变量声明,VI,中建立多个控件,可以用操作工具在全局变量的图标上单击,在列出的所有变量对象中选择所需的对象。,(,3,),使用示例,利用全局变量在不同,VI,中传递数据。,创建一个全局变量声明,,其中包含一个数值型控件并命名为“数值”和布尔型控件并命名为“状态”,保存为“,GV,vi”,。,新建一个,VI,命名为“采集信息,.vi”,,前面板中有一个旋钮开关和按键开关,将它们的值送到全局变量中。由函数模板中的,Select a VI,子模板打开选择用户程序对话框,选择“,GV,vi”,,调用两次全局变量声明,,选择全局变量的不同数据类型,对端口连线并保存,VI,。如图,“采集信息”框图程序,新建,VI “,显示信息,.vi”,,前面板中有一个表盘指针控件和,LED,控件。采用同样的方法在框图程序窗口选择创建的全局变量,并在全局变量图标上单击鼠标右键,选择“,Change to Read”,。,“显示信息”框图程序,分别运行两个,VI,程序,可以发现由程序“采集信息”得到的数据,通过全局变量传递到程序“显示信息”中,实现了两个程序之间的数据传递。,习题:,2.3,1.,用,While,循环,创建一个程序使之当输入,0,到,100,之间的随机数,大于等于循环次数时继续运行。,2.,学习使用双重,For,循环。创建一个程序,画出,X,从,1,到,N,的立方和曲线(,N,大于等于,1,小于等于,100,,,X,、,N,均为整数),3.,创建一个,VI,程序,不断地产生随机数,直到产生的随机数与程序指定的数值相匹配。记录下共产生了多少个随机数才与程序的指定值相匹配。,4.,创建一个,VI,程序,每秒测量一次温度,并显示在波形,Chart,指示器上。如果温度高出或低于设定范围,,VI,程序点亮前面板的,2,个,LED,。,参考答案,第,1,题,第,2,题,第,3,题,第,4,题,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!