底下這張VISnippet是LabVIEW內建範例中的Charts.vi,示範Waveform Chart(波型紀錄表)的使用方法。

Waveform Chart  

 

大致上可分為四種狀況:

(1)Single Plot,1 point per update:

只畫1條線,每次波形紀錄表更新時,只新增1個點

(2)Single Plot,multiple point per update:

只畫1條線,每次波形紀錄表更新時,同時新增多個點

(3)Multiple Plot,1 point per update:

畫N條線,每次波形紀錄表更新時,只新增1個點

(4)Multiple Plot,multiple point per update:

畫N條線,每次波形紀錄表更新時,同時新增P個點

 

根據Context Help的說明,Waveform Chart可以接受多種資料,包含純量(Scalar)、一維陣列資料(1D)、波形資料(WDT=Waveform Data Type)、二維陣列資料(2D);但是在Charts.vi中,並無二維陣列資料的示例。

Waveform Charts_Context Help.png  

由於2D資料只有在畫多條資料線(Multiple Plot)時才需要,

因此我針對狀況(3)、(4)重新做了一個範例,如下所示: 

Waveform Chart_NEW-2    

由上圖可看到,這個範例中有4個波形紀錄表,對應4種寫法,

<方法1>=>適合狀況(3),畫N條線,一次一個點

使用Cluster of points(資料點叢集),

也就是將多個數值bundle在一起,形成一個"包含多個資料點的叢集"

假設有a,b,c共3個獨立的數值,要畫成3條資料線,

那其資料格式就會是<a1,b1,c1>。

 

<方法2>=>適合狀況(4),畫N條線,一次多個點

使用Array of "Cluster of points",基本上就是<方法1>的延伸,

你必須產生一個陣列,陣列中每一個元素都是"包含多個資料點的叢集"。

 

假設有a,b,c共3個獨立的數值,要畫成3條資料線,

 

那其資料格式就會是[<a1,b1,c1>,<a2,b2,c2>,<a3,b3,c3>,...]

 

 

<方法3>=>適合狀況(4)畫N條線,一次P個點

使用二維陣列資料(2D Array Data),但這邊要特別注意,

假設有a,b,c共3組獨立的資料(每組P個點),要畫成3條資料線,

理所當然我們會以為格式是一個3列P欄的二維陣列

[ [a1,a2,a3,...],[b1,b2,b3,...],[c1,c2,c3,...] ],

但卻發現畫出來的線跟想像中不一樣,呈現一種無邏輯的亂跳! 

因為Waveform Chart會把它當成<方法2>的格式,

把a1,a2,a3三個原本屬於同一條曲線的資料點,

看成是分屬三條曲線的第一個資料點!

所以這是錯誤的格式! 必須改成<方法4>的格式!

 

<方法4>=>適合狀況(4),畫N條線,一次P個點

由錯誤的<方法3>可知,我們必須將格式改成

[ [a1,b1,c1],[a2,b2,c2],[a3,b3,c3],... ]

這要怎麼做呢? 只要將原來<方法3>的二維陣列進行轉置(Transpose)即可!

也就是說,如果你希望畫出N條線,一次更新P個點,

那你就必須將資料排成一個P列N欄的二維陣列。

 

此範例執行後如下:

右上方就是<方法3>的錯誤結果,右下方則是將陣列轉置後,再輸出到Waveform Chart的正確結果!

Charts_NEW.png  

這裡下載範例檔案!請使用LabVIEW2011以上版本開啟!

 

 

 

arrow
arrow

    sky 發表在 痞客邦 留言(0) 人氣()