底下這張VISnippet是LabVIEW內建範例中的Charts.vi,示範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中,並無二維陣列資料的示例。
由於2D資料只有在畫多條資料線(Multiple Plot)時才需要,
因此我針對狀況(3)、(4)重新做了一個範例,如下所示:
由上圖可看到,這個範例中有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的正確結果!
按這裡下載範例檔案!請使用LabVIEW2011以上版本開啟!
留言列表