第4讲——图形显示、Express VI 、局部和全局变量、属性节点,LabVIEW编程及虚拟仪器设计,上一讲内容回顾,复合数据类型数组相同数据类型数据的有序集合簇不同(或相同)数据类型数据的组合错误簇(用于错误处理的特殊簇)波形, t0(时间标识),dt,Y, attributes/属性(变体)用于存储数字信号的特殊簇,本讲内容,图形显示Express VI(快速VI)局部变量和全局变量属性节点,1. 图形显示,LabVIEW具有强大的图形控件和功能波形图 XY图 波形图表 强度图 三维图形控件(略),控件选板->新式->图形,1. 图形显示,波形图(Waveform graph)可显示多条波形曲线对于每条曲线,相邻点在x轴间隔相等,且每个x值对应一个y值波形图的数据组织格式?菜单,帮助->查找范例,浏览方式:任务,基础->图形和图表-> Waveform Graph.vi,1. 图形显示,生成一个周期的正弦或余弦数组,例1,哪种情况最灵活、强大?多条曲线的x0,dx和数据点数都可以不同!,1. 图形显示,,1. 图形显示,波形图还可直接接收波形类型的数据:可输入波形数据,或者以波形数据为元素的1维数组,每条曲线对应一个图例,采样信息参数决定生成1秒钟的数据,,与采样信息共同决定一共3个周期,,两个波形生成函数共享频率和采样信息参数,同时显示两条曲线,例2,非常重要!,波形图的附属控件通过快捷菜单的显示项子菜单打开和关闭,1. 图形显示,标尺图例,,,游标图例,X滚动条,图形工具选板,游标,,主网格,,辅网格,,游标移动器,,2. XY图(XY graph)与波形图的不同之处:相邻点的x坐标间隔可以不等同一x值可以对应于多个y值数据组织格式?菜单,帮助->查找范例,浏览方式:任务,基础->图形和图表-> XY Graph.vi,1. 图形显示,例3,X数据:0,1,3,6,10…(dx=1,2,3,4),XY图示例Express XY图新式->图形子选板,1. 图形显示,只使用波形的Y成分,初相位45度,自动添加了对“创建XY图” Express VI的调用,,例4,好处:只需接入数组,不需关心内部细节,1. 图形显示,3. 波形图表(Waveform Chart)图(graph)和图表(chart)的区别?对于图(graph),新数据替换旧数据对于图表(chart),新数据接续在旧数据的后面,旧数据,新数据,,图的数据存储区,更旧的数据,新数据,,图表的数据存储区(长度有限,若填满则从头删除数据,与队列相似),旧数据,1. 图形显示,波形图表的其他设置图表历史长度(Chart History Length)缓冲区大小分格显示曲线(Stack plots)堆叠显示方式刷新模式(Update mode,快捷菜单,高级->刷新模式),,,带状图表,示波器图表,扫描图表,各条曲线有各自的y轴,共享x轴,1. 图形显示,刷新模式*① 带状图表(Strip Chart) 从左到右填满后,旧数据左移,新数据从右边进入图表,接续在旧数据后;数据从右向左滚动,与纸带记录仪相似。
② 示波器图表(Scope Chart) 数据从左到右绘制,到达右边界后擦除图表中曲线,再次从左到右绘制;与示波器相似③ 扫描图表(Sweep Chart)数据从左到右绘制,新数据处有一移动竖直线,到达右边界后重新从左到右绘制,擦除竖直线经过处的旧数据1. 图形显示,波形图表的数据组织格式?菜单,帮助->查找范例,浏览方式:目录结构,general->graphs-> charts.llb->Charts.vi,例5,1. 图形显示,其他数据组织格式?,例6,1. 图形显示,4. 强度图(Intensity Graph)和强度图表(Intensity Chart)在二维平面上显示三维数据,以颜色代表第三维度,(如地形图和温度图),1. 图形显示,强度图显示控件,y轴,x轴,定义颜色与z轴数值的映射,标签,1. 图形显示,示例① 定义如下的颜色映射关系:② 输入二维数值数组:,第0行,第1行,第2行,第0列,第1列,第2列,③ 强度图的显示结果:,,,0,1,2,3,0,1,2,3,2. Express VI,Express VI是特殊的VI/函数:Express VI通常封装了复杂、强大的功能参数设置通过对话框实现将Express VI添加到框图上时自动打开配置对话框;之后双击Express VI也可打开对话框。
函数选板,Express子选板,2. Express VI,Express VI示例,外观与普通VI有所区别,即时帮助窗口内给出Express VI 的参数配置情况,,,初次放置到框图上,或双击时打开的配置对话框,2. Express VI,动态数据类型(Dynamic Data Type,DDT)很多Express VI输出或接收DDT类型的数据,DDT数据可以简单理解为经过特殊封装的波形数组如果混合使用DDT数据和传统函数,需在DDT数据和传统数据类型之间进行转换,函数选板,Express->信号操作,DDT连线形状和颜色,DDT -> 其他类型,其他类型 -> DDT,,,2. Express VI,同一DDT数据,有不同的解释方法使用时需要明确:DDT内包含怎样的数据内容准备怎样利用该数据,生成仿真正弦、三角波DDT并合并,,,,,,,1维波形数组,1维数组,1维数组(最新值)(即最后一个值),1维数组(单通道),2维数组(列是通道),单一标量(最后一个值),2维数组(行是通道),单一波形,,,函数选板,Express->输入->仿真信号,,例7,2. Express VI,动态数据类型输入到显示控件的默认规则*,DDT,DDT,DDT,3. 局部变量和全局变量,局部变量(Local)?在程序框图上,只能从输入控件端子读数据(由用户在前面板输入),以及向输出显示控件端子输出数据(用户在前面板看到),用户在前面板输入,输入数据进入程序框图的图形化代码(数据源),用户在前面板看到输出结果,输出数据进入显示控件接线端(数据目的地),3. 局部变量和全局变量,局部变量(Local)?利用局部变量,在框图上通过编程的方式设置输入控件值,以及读取输出显示控件值,打破控件固有的读写模式,以编程的方式向输入控件写入数据,以编程的方式读取输出控件数据,例如:程序配置的读写(关闭程序时控件值写入文件,打开程序时从文件读取配置写入控件),3. 局部变量和全局变量,多个关联到同一控件的局部变量,对应于内存中的同一份数据。
可实现在不同位置访问同一份数据)局部变量建立方法之1:添加前面板控件;在控件或框图端子弹出快捷菜单,创建->局部变量3. 局部变量和全局变量,建立方法之2:添加前面板控件;在框图上添加未关联的局部变量,函数选板,编程->结构子选板;c. 点击局部变量,从列表中选择欲关联的控件局部变量与控件关联之后,可以设置为读取(作为数据源)或写入(作为数据目标)局部变量可能引发竞态条件(Race condition)!,3. 局部变量和全局变量,两段代码并行执行,对x有读有写,无法预知x最终值(设想先左后右、先右后左两种极端情况),竞态条件解决办法:采用数据流或者顺序结构强制规定代码执行顺序,,3. 局部变量和全局变量,全局变量(Global)?在同一程序的不同VI之间共享数据建立方式,学生名单,选课.vi,学籍管理.vi,考试.vi,,,,全局变量(在VI之间共享),菜单,文件->新建…,打开“新建”对话框,打开 其他文件->全局变量 选项,3. 局部变量和全局变量,自动打开全局变量窗口,向其中添加控件并保存为*.vi文件,全局变量可以认为是没有框图、只有前面板的VI,前面板上包含任意类型和数量的控件,全局变量同样可能出现竞态条件!,4. 属性节点,属性节点(Property Node)前面板控件具有很多可设置参数,通过快捷菜单和其他UI(用户界面)操作对这些参数进行设置;这些操作发生在建立应用程序时如何在用户运行已建好的程序时,采用编程的方式动态(例如根据用户输入设置参数值)设置控件参数?通过属性节点,属性节点建立方法之1: 添加前面板控件;在控件或框图端子弹出快捷菜单,创建->属性节点->(选择任意属性),4. 属性节点,属性节点建立方法之2: a. 添加前面板控件;b. 在框图上添加未关联的属性节点,函数选板,编程->应用程序控制;c. 右键弹出快捷菜单,链接至->窗格->(选择控件标签);d. 左键点击“属性”,在列表中选择任意属性。
4. 属性节点,属性节点大多可读可写,通过快捷菜单“转换为写入/读取”菜单项进行切换(与局部变量相似);使用一个属性节点可以访问一个控件的多个属性,向下拖曳节点边框,增加更多属性端子一些典型控件属性,以按钮为例:禁用(Disabled),整型,读/写,0-启用,1-禁用,2-禁用并变灰可见(Visible),布尔型,读/写,T-可见,F-不可见闪烁(blinking),布尔型,读/写,T-闪烁,F-不闪烁……,4. 属性节点,例8:每2秒生成一个随机数送入波形图表,如果随机数大于0.5则显示布尔指示灯控件(值为True),否则隐藏指示灯,,利用顺序结构框和整型常量2000到等待(ms)函数的连线,确保History属性先被设置,之后执行循环,,产生和显示10个随机数,每次循环延时2秒,,大于0.5则显示“布尔”控件,否则隐藏控件,,指示灯初始化为True,,历史数据(History)属性输入空数组,清空波形图表,练习,习题1:对如下所给VI的框图,改变正弦波产生函数的输入参数(频率、初相位、幅值等),观察相应XY 图输出的波形习题2:在一个波形图中,分别用红、绿、篮颜色显示3条随机数组成的曲线,其取值范围分别为0~1、1~5和5~10习题3:用for循环构造一个10×10的随机数二维数组,并用强度图表显示出来,。