<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > LabVIEW中的波形圖(Waveform Chart)

          LabVIEW中的波形圖(Waveform Chart)

          作者: 時(shí)間:2016-12-26 來源:網(wǎng)絡(luò) 收藏
            所謂曲線就是一組X與Y對應(yīng)數(shù)值的圖形化顯示。通常曲線圖中的Y值代表了數(shù)據(jù)值,而X值則代表了時(shí)間。波形圖控件(waveform chart)可以在Controls工具面板的Modern>>Graph子面板中找到。這個(gè)控件是一個(gè)專門用來顯示一個(gè)或多個(gè)數(shù)據(jù)曲線的數(shù)值類型的指示器控件。這個(gè)控件經(jīng)常在循環(huán)結(jié)構(gòu)中使用,用來保留與顯示以前采集到的數(shù)據(jù),并追加新產(chǎn)生的數(shù)據(jù),將這些數(shù)據(jù)以連續(xù)更新的方式進(jìn)行顯示。在波形圖控件中,Y值表示了新產(chǎn)生的數(shù)據(jù),X值表示了時(shí)間(通常,每次循環(huán)就產(chǎn)生一組新的Y值,而X值則表示了一個(gè)循環(huán)的時(shí)間)。在LabVIEW中只有一種波形圖控件,不過這個(gè)控件有三種數(shù)據(jù)刷新模式。下圖就是一個(gè)多曲線波形圖的例子。
          波形圖更新模式

            波形圖控件的三種數(shù)據(jù)更新模式分別是帶狀記錄紙模式(strip chart),示波器圖模式(scope chart)以及掃描圖模式(sweep chart),如下圖所示。數(shù)據(jù)更新模式可以通過在波形圖控件上面點(diǎn)擊鼠標(biāo)右鍵后在彈出菜單中的Advanced>>Update Mode>>子菜單來加以改變。如果在VI程序運(yùn)行期間想要修改波形圖控件的數(shù)據(jù)更新模式,由于運(yùn)行時(shí)的控件右鍵菜單與編程時(shí)的不同,就在該控件的郵件菜單中的Update Mode中選擇即可。

          本文引用地址:http://www.ex-cimer.com/article/201612/334091.htm

            帶狀記錄紙模式的顯示和真正的帶狀記錄設(shè)備的顯示相像。示波器圖模式則和真正示波器的曲線顯示相像,該模式中當(dāng)曲線到達(dá)波形圖的右邊界之后,整個(gè)曲線就會(huì)清除并從波形圖的左邊界重新開始顯示。掃描圖模式與示波器圖模式十分相似,不過掃描圖模式中曲線到達(dá)右邊界后并不會(huì)有清除動(dòng)作,而是有一個(gè)豎線出現(xiàn)在波形圖中,該豎線標(biāo)識著新數(shù)據(jù)的開始,并在新數(shù)據(jù)不停添加的時(shí)候,該豎線會(huì)慢慢移動(dòng)。這些區(qū)別在看到實(shí)際波形圖控件在不同刷新模式先運(yùn)行之后就很容易區(qū)別開來的。由于示波器圖模式與掃描圖模式在追溯以往曲線上比帶狀記錄紙模式的開銷要少,所以這兩種數(shù)據(jù)更新模式要比帶狀記錄紙模式很明顯的快得多。

          注意:波形圖中一直都是設(shè)定為X值代表了等間隔的點(diǎn)。在LabVIEW的波形圖中,你可以只提供Y值而不用管X值。每次波形圖中添加一個(gè)新的Y值之后,就會(huì)自動(dòng)為X值加一。對于X值是任意值的情況就需要使用后面介紹的曲線圖而不要使用波形圖了。

            波形圖控件可以接收的數(shù)據(jù)類型包括了數(shù)值、數(shù)組以及波形數(shù)據(jù)類型。在波形數(shù)據(jù)類型中包含了時(shí)間信息(比如第一個(gè)數(shù)據(jù)點(diǎn)的時(shí)間標(biāo)志以及每點(diǎn)之間的時(shí)間間隔)。波形圖控件將使用這些時(shí)間信息來顯示數(shù)據(jù),這也就意味著這時(shí)初始的X值以及每點(diǎn)之間的間隔在每次有新數(shù)據(jù)寫入到波形圖時(shí)是不同的。

          單曲線波形圖

            使用波形圖控件的一個(gè)最簡單的方法就是將一個(gè)數(shù)值在VI程序框圖中連接到波形圖控件的輸入端點(diǎn),如下圖所示。在每循環(huán)一次就會(huì)有一個(gè)點(diǎn)被添加到波形圖中所顯示的波形中。

            也可以通過一次添加多個(gè)點(diǎn)來更新單曲線的波形圖,如下圖所示,傳送一個(gè)數(shù)組的數(shù)值給波形圖。

          多曲線波形圖的連線

            波形圖控件也可以用來顯示多條曲線。不過,由于比不能從多個(gè)數(shù)據(jù)源連線到單一的波形圖控件輸入端點(diǎn),所以需要先使用捆綁函數(shù)(Bundle函數(shù),可以在 Programming>>Cluster & Variant子面板找到)將多個(gè)數(shù)據(jù)捆到一起。如下圖所示,該函數(shù)“捆綁”或聚合了三個(gè)不同的采集溫度的VI的輸出到了一個(gè)簇中,以便這些數(shù)據(jù)能夠被波形圖控件說顯示。大家可以注意一下波形圖控件的端點(diǎn)連接到捆綁函數(shù)的輸出之后的變化。如果需要添加多個(gè)曲線,只要增加捆綁函數(shù)的輸入端點(diǎn)的個(gè)數(shù)即可。

            在連接多曲線的波形圖的時(shí)候,要確保使用的是Bundle函數(shù),而不是Build Array函數(shù)。LabVIEW會(huì)將數(shù)組中的數(shù)值看成同屬于一條曲線,把簇中的數(shù)值看成是屬于多條曲線。如果使用了創(chuàng)建數(shù)組函數(shù),你得到的將是每次循環(huán)中有三個(gè)新數(shù)據(jù)點(diǎn)的單條曲線。這種情況在從硬件讀取波形時(shí)是很有用的,因?yàn)檫@時(shí)你讀取的是單個(gè)通道的多個(gè)采樣點(diǎn)的數(shù)據(jù)。

          單曲線與多曲線數(shù)據(jù)類型對比:需要記住的技巧

            曲線圖與波形圖是可復(fù)用的。它們可以接受幾種不同類型的數(shù)據(jù),并可以用來顯示單條或多條曲線。不過有些時(shí)候,很難記清楚用于單曲線、多曲線的數(shù)據(jù)類型。另外,曲線圖與波形圖也有多種類型,這使這一切變得更復(fù)雜了。

            不過有一個(gè)簡單快捷的方法可以找出用于某種曲線圖或波形圖的數(shù)據(jù)類型。這個(gè)方法就是在程序框圖中,將鼠標(biāo)光標(biāo)移動(dòng)到曲線圖或波形圖輸入端點(diǎn)上方,這時(shí)在Context Help窗口中就可以看到曲線數(shù)據(jù)類型的詳細(xì)描述了。這個(gè)Context Help窗口可以通過菜單Help>>Show Context Help或者是使用快捷鍵打開。

          顯示數(shù)值?

            與其他的數(shù)值顯示器控件類似,波形圖也有顯示或隱藏?cái)?shù)值顯示的選項(xiàng)(在曲線圖上點(diǎn)擊鼠標(biāo)右鍵,在右鍵菜單的Visible Items>>Option中可以設(shè)置)。這個(gè)數(shù)值顯示部分就會(huì)顯示波形圖中顯示的最后一個(gè)數(shù)據(jù)的值。

          X軸滾動(dòng)欄

            波形圖也有一個(gè)X軸滾動(dòng)欄,可以通過右鍵菜單Visible Items>>中的子菜單來設(shè)置其是否可見。你可以通過拖動(dòng)這個(gè)滾動(dòng)欄查看波形圖中已經(jīng)不在顯示屏中的舊數(shù)據(jù)。

          清空波形圖

            有些時(shí)候,我們必須從波形圖中刪除舊數(shù)據(jù)??梢酝ㄟ^右鍵菜單中的Data Operations>>Clear Chart選項(xiàng)在編輯模式下清空波形圖中的所有數(shù)據(jù)。如果你的VI不在運(yùn)行狀態(tài)下一般就是處于編輯狀態(tài),如需要在VI未運(yùn)行是更改狀態(tài),可以在 Operator菜單中選擇Change to Run/Edit Mode即可。如果VI處于運(yùn)行狀態(tài),Clear Chart選項(xiàng)就可以在右鍵菜單直接找到,而不用在Data Operations子菜單中尋找了。

            如果需要在程序中通過編程來自動(dòng)清除波形圖中的數(shù)據(jù),你就需要向波形圖控件的History Data屬性中寫入一個(gè)空數(shù)組,如下圖所示。

          覆蓋模式以及堆疊模式的波形圖

            如果你使用的是多曲線的曲線圖控件,你可以選擇將所有曲線共用同一個(gè)Y軸顯示,這種顯示模式就稱為覆蓋模式;或者是讓每一條曲線有一個(gè)獨(dú)立的Y軸,這種顯示模式就稱為堆疊模式。這可以在波形圖的右鍵菜單中選擇顯示類型來完成設(shè)定。下圖顯示了這兩種顯示模式的區(qū)別:

          多標(biāo)度Y軸

            如果一個(gè)波形圖中有多條曲線,并且在覆蓋模式下進(jìn)行顯示,有些時(shí)候就需要為每條曲線設(shè)定不同的Y軸標(biāo)度。例如,一條曲線的Y值范圍是從-1到+1,另一條曲線的Y值范圍是-100到+100,這是使用覆蓋模式并以同一個(gè)標(biāo)度的Y軸進(jìn)行顯示就可能看不清Y值范圍較小的那條曲線,這時(shí)使用多標(biāo)度的Y軸就顯得必要了。使用多標(biāo)度Y軸的具體步驟如下,首先在Y軸點(diǎn)擊鼠標(biāo)右鍵在彈出的右鍵菜單中選擇Duplicate Scale選項(xiàng);之后,在這個(gè)新標(biāo)度上點(diǎn)擊鼠標(biāo)右鍵,在右鍵菜單中選擇Swap Sides將這個(gè)復(fù)制的標(biāo)度移動(dòng)到曲線圖的另一側(cè)。具體哪個(gè)坐標(biāo)對應(yīng)哪條曲線可以在波形圖的屬性對話框里修改。如果需要?jiǎng)h除一個(gè)Y軸標(biāo)度,就在該標(biāo)度上點(diǎn)擊鼠標(biāo)右鍵并選擇Delete Scale選項(xiàng)即可。下圖是一個(gè)使用了兩個(gè)Y軸標(biāo)度的波形圖的示例:

            在波形圖中不能夠復(fù)制多個(gè)X軸標(biāo)度。因?yàn)椴ㄐ螆D控件只能有一個(gè)X軸標(biāo)度。如果你試著在X軸標(biāo)度上點(diǎn)擊鼠標(biāo)右鍵,就發(fā)現(xiàn)在彈出的右鍵菜單中Duplicate Scale選項(xiàng)是灰色不可用的。(在曲線圖控件中則是可以使用多X軸標(biāo)度的)

            通過在曲線圖或波形圖上點(diǎn)擊鼠標(biāo)右鍵,在右鍵菜單中選擇 Advanced>>Reset Scale Layout就可以復(fù)位曲線圖或波形圖的標(biāo)度。執(zhí)行這個(gè)操作之后,Y軸標(biāo)度就會(huì)返回到曲線顯示區(qū)域的左側(cè),X軸標(biāo)度就會(huì)返回到曲線顯示區(qū)域的下端,并復(fù)位標(biāo)度數(shù)值。

          波形圖歷史長度

            默認(rèn)情況下,波形圖控件可以存儲(chǔ)1024個(gè)數(shù)據(jù)點(diǎn)。如果你想讓它存儲(chǔ)更多或更少的數(shù)據(jù),可以在右鍵菜單的 Chart History Lenggth...選項(xiàng)來設(shè)定一個(gè)新的數(shù)據(jù)點(diǎn)數(shù)值,該值的取值范圍是10到2,147,483,647(不過實(shí)際的限制可能受你的計(jì)算機(jī)的內(nèi)存大小的限制而會(huì)小些)。更改了這個(gè)緩存的大小并不會(huì)改變在波形圖上一次顯示的數(shù)據(jù)的個(gè)數(shù),只會(huì)改變你通過滾動(dòng)欄可以回溯的數(shù)據(jù)的總數(shù)。




          關(guān)鍵詞: LabVIEW波形圖WaveformChar

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();