4.2 波形图表与波形图的使用与定制
波形图表与波形图是在数据显示中用得最多的两个控件,在4.1.2节中讲到,波形图表是趋势图的一种,它将新的数据添加到旧数据尾端后再进行显示,可以反映数据的实时变化,它和波形图的主要区别在于波形图是将原数据清空后重新画一张图,而趋势图保留了旧数据,保留数据的缓冲区长度是可以通过右击控件并选择“图表历史长度”来设定的。下面分别对它们的用法与设置进行详细的介绍。
4.2.1 波形图表与波形图的使用
将波形图表与波形图放置在前面板上后的默认形式如图4-2所示,它包括了波形显示的主要元素:波形显示区、横纵坐标轴和图例。波形图表和波形图接收的数据类型包括标量数据类型、一维数组、波形数据和二维数组,另外,通过簇绑定或者创建数组的方法可以显示多条曲线。
图4-2 波形图表与波形图控件
【例4-1】 标量数据的显示。
对于标量数据,波形图表直接将数据添加在曲线尾端,逐点显示,而波形图不能逐点显示,只能输入一维数组,按如下步骤创建程序。
1)切换到前面板,在“控件→新式→图形”中选择波形图表与波形图,放置到前面板上,修改标签名称为“标量数据--波形图表”和“标量数据--波形图”。
2)切换到程序框图,在“函数→编程→结构”中选择For循环,设置循环次数为360。
3)在“函数→数学→初等与特殊函数→三角函数”中选择“正弦.vi”,放置到循环中。
4)用For循环的i乘以π除以180后作为“正弦.vi”的输入(化成弧度后作为输入,“正弦.vi”的输出波形更光滑),“正弦.vi”的输出接“标量数据--波形图表”。
5)将“正弦.vi”的输出经过For循环索引通道后连接“标量数据--波形图”。
6)在“函数→编程→定时”中选择“等待(ms).vi”放置在For循环体中,输入为10,表示程序每隔10ms循环一次,这样是为了更加明显地展示波形图表显示标量数据的过程。
运行程序,显示结果与程序框图如图4-3所示。
图4-3 标量数据的显示
【例4-2】 一维数组数据的显示。
对于一维数组数据,波形图表将它一次添加到曲线的末端,也就是说曲线每次向前推进的点数为数据的点数,这和波形图的显示效果一样。参照例4-1的步骤创建程序,不同之处在于“一维数组--波形图表”要放置在循环体内,因为现在是显示一维数组,关于For循环的索引通道问题,请读者参看第5章For循环的相关内容,程序运行结果和程序框图如图4-4所示。请读者仔细比较其与例4-1的区别。
图4-4 一维数组数据的显示
【例4-3】 多曲线数据的显示。
对于波形图表,用簇里的“捆绑”函数就可以实现在一个波形图形中显示多条数据曲线,而对于波形图,则要用“创建数组”函数,按下列步骤创建程序。
(1)切换到前面板,在“控件→新式→图形”中选择波形图表与波形图,放置到前面板上,修改标签名称为“多曲线--波形图表”和“多曲线--波形图”。
(2)切换到后面板,在“函数→编程→结构”中选择For循环,设置循环次数为30。
(3)在“函数→数学→初等与特殊函数→三角函数”中选择“正弦.vi”,放置到循环中,输入端口与For循环的i相连,输出端口分别“加5”和“减5”。
(4)在“函数→编程→簇、类与变体”中选择“捆绑.vi”,拉伸成3个输入端口,与“正弦.vi”的输出同加、减5后的值连接,创建成的簇数组输出与“多曲线--波形图表”连接。
(5)在“函数→编程→数组”中选择“创建数组.vi”,输入端口与“正弦.vi”的输出和加、减5后的值连接,输出连接“多曲线--波形图”。
(6)在“函数→编程→定时”中选择“等待(ms).vi”放置在For循环体中,输入为100,表示程序每隔100ms循环一次,这样是为了更加明显地展示波形图表显示数据的过程。
运行程序,显示结果与程序框图如图4-5所示。
图4-5 多曲线标量数据的显示
【例4-4】二维数组数据的显示。
对于二维数组,波形图表默认情况下将它转置,即每一列作为一条曲线来显示,而对于波形图,默认是将行作为一条曲线显示,需要用户手动对数据进行转置,具体方法为右击波形图,选择“转置数组”,按下列步骤创建程序。
1)切换到前面板,在“控件→新式→图形”中选择波形图表与波形图,放置到前面板上,修改标签名称为“二维数据--波形图表”和“二维数据--波形图”。
2)切换到程序框图,在“函数→编程→结构”中选择For循环,设置循环次数为30。
3)在“函数→数学→初等与特殊函数→三角函数”中选择“正弦.vi”,放置到循环中,输入端口与For循环的i相连,输出值除以2(此步操作和4)中与i相加的目的都是为了使波形分开显示而不重叠)。
4)在For循环体中在建立一个For循环,循环次数为3,将正弦值与内层For循环的i相加(禁用此处For循环的输入索引通道),再将它经过两层For循环的索引通道输出,形成二维数组,分别与“二维数据--波形图表”和“二维数据--波形图”连接。
5)在外层For循环的输出索引通道处右击,选择“创建→显示控件”,修改标签名称为“数组”。
运行程序,显示结果与程序框图如图4-6所示,图中所示为一个30行3列的数组,在波形显示时,每一列作为一条曲线进行显示,程序每运行一次,波形图表中的每条波形数据增加30个点,而波形图则是先清除旧的数据点,再显示新的30个数据点。
图4-6 二维数组数据的显示
【例4-5】 波形数据的显示。
对于波形数据,波形图表只能显示当前的输入数据,并不能将新数据添加到曲线的尾端,这是因为波形数据包含了横坐标的数据,因此每次画出的数据都和上次结果无关,等价于图表,按如下步骤创建程序。
1)切换到前面板,在“控件→新式→图形”中选择波形图表与波形图,放置到前面板上,修改标签名称为“波形数据--波形图表”和“波形数据--波形图”,在“波形数据--波形图”上右击,在快捷菜单中取消“忽略时间标识”。
2)切换到程序框图,在“函数→编程→结构”中选择For循环,设置循环次数为30。
3)在“函数→数学→初等与特殊函数→三角函数”中选择“正弦.vi”,放置到循环中,输入端口与For循环的i相连。
4)在“函数→编程→波形”中选择“创建波形.vi”,拉伸成3个输入,分别选择“Y、dt、t0”,将Y与“正弦.vi”的输出端口相连,dt设置成10,在“函数→编程→定时”中选择“获取时期/时间(s).vi”,与t0相连。
5)将“创建波形.vi”的输出与“波形数据--波形图表”和“波形数据--波形图”连接。
运行程序,显示结果和程序框图如图4-7所示。在本程序中,用“创建波形”函数来创建一个正弦函数的波形数据,用“获取日期/时间”函数获取系统的当前时间,作为波形数据的起始时间,从图中可以看出,波形图表的横坐标显示的是系统的当前时间,而用波形图显示时间时要在右键菜单中取消“忽略时间标识”,请读者仔细比较它与前面几个案例的区别。
图4-7 波形数据的显示
注意:当VI运行停止后,缓冲区中的数据并没有清除,对于波形数据的显示或者是用波形图来显示数据时问题不大,因为它们在程序重新运行时显示的是当前的最新数据,而对于用波形图表来显示其他类型的数据时,因为旧数据的存在,可能会引起混淆,如果想清除缓冲区中的数据,可以通过在波形图表的波形显示区域右击,选择“数据操作→清除图表”,如果想复制图表中的数据,右击波形显示区域后选择“数据操作→复制数据”即可。
4.2.2 波形图表的定制
1.打开波形图表个性化设置对象
打开波形图表个性化设置对象的方法有两种:右击波形显示区域,在弹出地快捷菜单中选择“显示项”,单击要显示的项,如图4-8中左图所示;或者是在右击弹出的菜单中选择“属性”,打开如图4-8右图所示的属性设置对话框,在“外观”选项卡里选择要显示的项(图中画圈区域),设置完成后的波形图表及各对象功能如图4-9所示。
图4-8 打开波形图表个性化设置对象
图4-9 设置完成的波形图表及各对象功能
2.设置坐标轴显示
(1)自动调整坐标轴
如果用户想让Y坐标轴的显示范围随输入数据变化,可以右击波形图表控件,在弹出的菜单中选择“Y标尺→自动调整Y标尺”,如果取消“自动调整”选项,则用户可任意指定Y轴的显示范围,对于X轴的操作与之类似。这个操作也可在属性对话框里的“标尺”页完成,如图4-10的区域“1”。
(2)坐标轴缩放
在图4-10的区域“2”中可以进行坐标轴的缩放设置,坐标轴的缩放一般是对X轴进行操作,主要是使坐标轴按一定的物理意义进行显示,例如,对用采集卡采集到的数据进行显示时,默认情况下X轴是按采样点数显示的,如果要使X轴按时间显示,就要使X轴按采样率进行缩放。
(3)设置坐标轴刻度样式
在右键菜单中选择“X标尺→样式”,然后进行选择,也可以在图4-10的区域“3”中进行设置,同时可对刻度的颜色进行设置。
(4)设置网格样式与颜色
网格样式与颜色的设置在图4-10的区域“3”中进行。
图4-10 波形图表属性设置
(5)多坐标轴显示
默认情况下的坐标轴显示如图4-2所示,右击坐标轴,在弹出的菜单中选择“复制标尺”,此时的坐标轴标尺与原标尺同侧,如图4-11右上图所示,再右击标尺,在弹出的菜单中选择“两侧交换”,这样坐标轴标尺就对称地显示在图表的两侧了,如图4-11右下图所示。
注意:对于波形图表的X轴,不能进行多坐标轴显示,而对于波形来说,则可以按上述步骤实现X轴的多坐标显示。如果要删除多坐标显示,则在右键弹出的菜单中选择“删除标尺”即可。
3.图例
默认情况下图例只显示一条曲线,若想要显示多条曲线的图例,直接将图例往下拉即可。右击图例,在弹出的菜单中可以对曲线的颜色、线型和显示风格等进行设置。双击图例文字可以改变曲线名称。此步操作如图4-12所示。
图4-11 多坐标轴显示
图4-12 设置图例
4.图形工具选板
默认情况下第一个十字标志按钮被选中,表示此时图形区的游标可以移动。放大镜标志用来对图形进行缩放,共有6种模式,如图4-13所示。对于第一排中的放大方式,只需要选中该放大方式后,在图形区域拉动鼠标就能实现,用〈Ctrl+Z〉可以撤消上一步操作,选中手形标志后可以随意地在显示区域拖动图形。
5.更改缓冲区长度
在波形图表显示时,数据首先存放在一个缓冲区中,这个缓冲区的大小默认为1024个数据,这个数值大小是可以调整的,具体方法为在波形图表上右击,选择“图表历史长度”,在弹出的对话框中输入缓冲区的大小,如图4-14所示。
图4-13 图形工具选板
图4-14 更改缓冲长度
6.刷新模式
数据刷新模式设置是波形图表特有的,波形图没有这个功能。在波形图表上右击,在弹出的菜单中选择“高级→刷新模式”即可完成对数据刷新模式的设置,如图4-15所示。
图4-15 设置波形图表刷新模式
波形图表的刷新模式有以下3种。
1)带状图表:类似于纸带式图表记录仪。波形曲线从左到右连续绘制,当新的数据点到达右部边界时,先前的数据点逐次左移,而最新的数据会添加到最右边。
2)示波器图表:类似于示波器。波形曲线从左到右连续绘制,当新的数据点到达右部边界时,清屏刷新,然后从左边开始新的绘制。
3)扫描图:与示波器模式类似,不同之处在于当新的数据点到达右部边界时,不清屏,而是在最左边出现一条垂直扫描线,以它为分界线,将原有曲线逐点右推,同时在左边画出新的数据点。
示波器模式及扫描图比带状图表运行速度要快,因为它们无须像带状图表那样处理屏幕数据滚动而另外耗费时间。
【例4-6】 用3种不同的刷新模式显示波形曲线。
按如下步骤创建程序。
1)切换到前面板,在“控件→新式→图形”中选择3个波形图表,放置到前面板上,修改标签名称为“带状图表”“扫描图”“示波器图表”。
2)在“带状图表”上右击,选择“高级→刷新模式→带状图表”,将它设置成带状图表的显示形式,按相同方法分别设置其他两个控件的显示方式。
3)在“函数→信号处理→信号生成”函数子选板中选择“正弦信号.vi”,放置到程序框图,用它来产生正弦信号。
4)从“函数→编程→结构”中选择“While循环.vi”,将程序框图上的对象都置于循环体中,设置程序运行间隔为100ms。
运行程序,分别用带状图表模式、扫描图模式、示波器图表模式来显示正弦波,效果和程序框图如图4-16所示。
图4-16 用3种不同的刷新模式显示正弦信号波形
【例4-7】 分格显示曲线,每条曲线用不同样式表示。
分格显示曲线是波形图表特有的功能,右击波形图表控件,在弹出的菜单中选择“分格显示曲线”即可实现此功能,当然也可以在属性对话框的“外观”选项卡中进行设置。按如步骤创建程序。
1)切换到前面板,在“控件→新式→图形”中选择波形图表,放置到前面板上,修改标签名称为“分格显示”。
2)在“函数→编程→结构”中选择“While循环.vi”设置程序运行间隔为100ms。
3)在“函数→数学→初等与特殊函数→三角函数”中选择“正弦.vi”,放置到循环体中,将输入与While的i相连。
4)在“函数→编程→簇、类与变体”中选择“捆绑.vi”,拉伸成3个端口,分别与“正弦.vi”的输出相连,形成簇数组,与“分格显示”相连。
5)切换到前面板,在波形图表上右击,在弹出的菜单中选择“分格显示曲线”。
6)拉伸波形图表的图例,显示3条曲线图例,单击图例,在弹出的菜单中设置曲线的样式。
运行程序,显示效果和程序框图如图4-17所示。
图4-17 分格显示曲线
注意:在设置分格显示曲线时,需要在属性对话框的“外观”选项卡中指定要显示的曲线数目。
4.2.3 波形图的定制
波形图的个性化定制方法大部分和波形图表是相似的,对于相同的部分,这里不再赘述,只对不同的部分进行介绍。
1.游标
和波形图表相比,波形图的个性化设置对象没有“数字显示”,多了一个“游标图例”,如图4-18所示。通过游标图例,用户可以在波形显示区中添加游标、拖动游标。在游标图例中会显示游标的当前位置,游标可以不止一个,通过右击游标图例并选择“创建游标”来添加游标,选中某个游标后,还可以用游标移动器来移动游标。在游标图例中右击,从弹出的菜单中可对光标的样式、颜色等进行个性化设置。
图4-18 波形图游标设置
2.添加注释
在前面板上右击波形图,在弹出的菜单中选择“数据操作→创建注释”,弹出“创建注释”对话框,如图4-19所示。在“创建注释”对话框中,用户可以在“注释名称”中输入想要在波形图中显示的注释名称。在“锁定风格”中指定注释名称是“关联至一条曲线”还是“自由”,如果选择“关联至一条曲线”,则用户需要在“锁定曲线”中指定注释关联的曲线,在移动注释的过程中,注释始终指向关联的曲线;如果选择“自由”,则“锁定曲线”选项变成灰色,不可用,用户可以任意移动注释,并且在移动过程中,注释不指向曲线。设置完成后的波形图显示如图4-20所示。
图4-19 添加波形注释
图4-20 添加注释后的波形图显示
【例4-8】 用簇数组和二维数据显示不同长度的数据曲线。
按如下步骤创建程序。
1)在“函数→信号处理→信号生成”子选板中,选择“正弦信号.vi”和“方波.vi”,设置正弦信号的采样点数为128点,方波的采样点数为200点,幅值为0.5。
2)在“函数→编程→簇、类与变体”子选板中选择“创建簇数组.vi”,连接两信号输出端,创建簇数组并用波形图显示,取名为“簇数组显示”。
3)在“函数→编程→数组”子选板中选择“创建数组.vi”,连接两信号输出端,创建二维数组并用波形图显示,取名为“二维数组显示”。
运行程序,结果如图4-21所示。从图中可以看出,用簇数组显示的波形图中,只显示实际的数据点数,而用二维数组显示时,缺少的数据点用“0”补齐。
图4-21 簇数组与二维数组显示