LabVIEW中的波形图(Waveform Chart)
扫描二维码
随时随地手机看文章
所谓曲线就是一组X与Y对应数值的图形化显示。通常曲线图中的Y值代表了数据值,而X值则代表了时间。波形图控件(waveform chart)可以在Controls工具面板的Modern>>Graph子面板中找到。这个控件是一个专门用来显示一个或多个数据曲线的数值类型的指示器控件。这个控件经常在循环结构中使用,用来保留与显示以前采集到的数据,并追加新产生的数据,将这些数据以连续更新的方式进行显示。在波形图控件中,Y值表示了新产生的数据,X值表示了时间(通常,每次循环就产生一组新的Y值,而X值则表示了一个循环的时间)。在LabVIEW中只有一种波形图控件,不过这个控件有三种数据刷新模式。下图就是一个多曲线波形图的例子。波形图更新模式
波形图控件的三种数据更新模式分别是带状记录纸模式(strip chart),示波器图模式(scope chart)以及扫描图模式(sweep chart),如下图所示。数据更新模式可以通过在波形图控件上面点击鼠标右键后在弹出菜单中的Advanced>>Update Mode>>子菜单来加以改变。如果在VI程序运行期间想要修改波形图控件的数据更新模式,由于运行时的控件右键菜单与编程时的不同,就在该控件的邮件菜单中的Update Mode中选择即可。
带状记录纸模式的显示和真正的带状记录设备的显示相像。示波器图模式则和真正示波器的曲线显示相像,该模式中当曲线到达波形图的右边界之后,整个曲线就会清除并从波形图的左边界重新开始显示。扫描图模式与示波器图模式十分相似,不过扫描图模式中曲线到达右边界后并不会有清除动作,而是有一个竖线出现在波形图中,该竖线标识着新数据的开始,并在新数据不停添加的时候,该竖线会慢慢移动。这些区别在看到实际波形图控件在不同刷新模式先运行之后就很容易区别开来的。由于示波器图模式与扫描图模式在追溯以往曲线上比带状记录纸模式的开销要少,所以这两种数据更新模式要比带状记录纸模式很明显的快得多。
注意:波形图中一直都是设定为X值代表了等间隔的点。在LabVIEW的波形图中,你可以只提供Y值而不用管X值。每次波形图中添加一个新的Y值之后,就会自动为X值加一。对于X值是任意值的情况就需要使用后面介绍的曲线图而不要使用波形图了。
波形图控件可以接收的数据类型包括了数值、数组以及波形数据类型。在波形数据类型中包含了时间信息(比如第一个数据点的时间标志以及每点之间的时间间隔)。波形图控件将使用这些时间信息来显示数据,这也就意味着这时初始的X值以及每点之间的间隔在每次有新数据写入到波形图时是不同的。
单曲线波形图使用波形图控件的一个最简单的方法就是将一个数值在VI程序框图中连接到波形图控件的输入端点,如下图所示。在每循环一次就会有一个点被添加到波形图中所显示的波形中。
也可以通过一次添加多个点来更新单曲线的波形图,如下图所示,传送一个数组的数值给波形图。
多曲线波形图的连线
波形图控件也可以用来显示多条曲线。不过,由于比不能从多个数据源连线到单一的波形图控件输入端点,所以需要先使用捆绑函数(Bundle函数,可以在 Programming>>Cluster & Variant子面板找到)将多个数据捆到一起。如下图所示,该函数“捆绑”或聚合了三个不同的采集温度的VI的输出到了一个簇中,以便这些数据能够被波形图控件说显示。大家可以注意一下波形图控件的端点连接到捆绑函数的输出之后的变化。如果需要添加多个曲线,只要增加捆绑函数的输入端点的个数即可。
在连接多曲线的波形图的时候,要确保使用的是Bundle函数,而不是Build Array函数。LabVIEW会将数组中的数值看成同属于一条曲线,把簇中的数值看成是属于多条曲线。如果使用了创建数组函数,你得到的将是每次循环中有三个新数据点的单条曲线。这种情况在从硬件读取波形时是很有用的,因为这时你读取的是单个通道的多个采样点的数据。
单曲线与多曲线数据类型对比:需要记住的技巧曲线图与波形图是可复用的。它们可以接受几种不同类型的数据,并可以用来显示单条或多条曲线。不过有些时候,很难记清楚用于单曲线、多曲线的数据类型。另外,曲线图与波形图也有多种类型,这使这一切变得更复杂了。
不过有一个简单快捷的方法可以找出用于某种曲线图或波形图的数据类型。这个方法就是在程序框图中,将鼠标光标移动到曲线图或波形图输入端点上方,这时在Context Help窗口中就可以看到曲线数据类型的详细描述了。这个Context Help窗口可以通过菜单Help>>Show Context Help或者是使用快捷键
显示数值?
与其他的数值显示器控件类似,波形图也有显示或隐藏数值显示的选项(在曲线图上点击鼠标右键,在右键菜单的Visible Items>>Option中可以设置)。这个数值显示部分就会显示波形图中显示的最后一个数据的值。
X轴滚动栏波形图也有一个X轴滚动栏,可以通过右键菜单Visible Items>>中的子菜单来设置其是否可见。你可以通过拖动这个滚动栏查看波形图中已经不在显示屏中的旧数据。
清空波形图 有些时候,我们必须从波形图中删除旧数据。可以通过右键菜单中的Da
如果需要在程序中通过编程来自动清除波形图中的数据,你就需要向波形图控件的History Da
覆盖模式以及堆叠模式的波形图
如果你使用的是多曲线的曲线图控件,你可以选择将所有曲线共用同一个Y轴显示,这种显示模式就称为覆盖模式;或者是让每一条曲线有一个独立的Y轴,这种显示模式就称为堆叠模式。这可以在波形图的右键菜单中选择显示类型来完成设定。下图显示了这两种显示模式的区别:
多标度Y轴
如果一个波形图中有多条曲线,并且在覆盖模式下进行显示,有些时候就需要为每条曲线设定不同的Y轴标度。例如,一条曲线的Y值范围是从-1到+1,另一条曲线的Y值范围是-100到+100,这是使用覆盖模式并以同一个标度的Y轴进行显示就可能看不清Y值范围较小的那条曲线,这时使用多标度的Y轴就显得必要了。使用多标度Y轴的具体步骤如下,首先在Y轴点击鼠标右键在弹出的右键菜单中选择Duplicate Scale选项;之后,在这个新标度上点击鼠标右键,在右键菜单中选择Swap Sides将这个复制的标度移动到曲线图的另一侧。具体哪个坐标对应哪条曲线可以在波形图的属性对话框里修改。如果需要删除一个Y轴标度,就在该标度上点击鼠标右键并选择Delete Scale选项即可。下图是一个使用了两个Y轴标度的波形图的示例:
在波形图中不能够复制多个X轴标度。因为波形图控件只能有一个X轴标度。如果你试着在X轴标度上点击鼠标右键,就发现在弹出的右键菜单中Duplicate Scale选项是灰色不可用的。(在曲线图控件中则是可以使用多X轴标度的)
通过在曲线图或波形图上点击鼠标右键,在右键菜单中选择 Advanced>>Reset Scale Layout就可以复位曲线图或波形图的标度。执行这个操作之后,Y轴标度就会返回到曲线显示区域的左侧,X轴标度就会返回到曲线显示区域的下端,并复位标度数值。
波形图历史长度默认情况下,波形图控件可以存储1024个数据点。如果你想让它存储更多或更少的数据,可以在右键菜单的 Chart History Lenggth...选项来设定一个新的数据点数值,该值的取值范围是10到2,147,483,647(不过实际的限制可能受你的计算机的内存大小的限制而会小些)。更改了这个缓存的大小并不会改变在波形图上一次显示的数据的个数,只会改变你通过滚动栏可以回溯的数据的总数。