學術專區 關於NI NI活動訊息 Community 技術支援服務 使用者解決方案 產品與服務 連絡NI MyNI

5. 資料形態與架構

近似於其他程式設計語言,NI LabVIEW 軟體亦有多種不同的資料形態,還有組織這些資料形態的不同方法。可透過顏色與標記而區分資料形態,且各有其特殊的使用理由。接著將說明不同資料形態與架構的功能,還有使用時機。

共有 3 組影片:


詳細說明

下載詳細說明 PDF 檔


字串 (String) 資料形態

字串 (String) 為一系列可顯示或不可顯示的 ASCII 字元。字串可針對各種平台提供獨立的資訊/資料格式。某些常見的字串應用則包含:

- 建立文字簡訊。
- 傳送文字指令以控制儀器,並透過 ASCII 或二進制字串回傳資料值,以利後續可轉換為數字數值。
- 將數字資料儲存至磁碟。若要以 ASCII 檔案儲存數字資料,則將資料寫入至磁碟檔案之前,必須將數字資料轉換為字串。
- 透過對話框導引使用者。

在人機介面上,字串可透過表格、標籤、文字輸入框所呈現。LabVIEW 內建的 VI 與函式,即可讓使用者運作字串,包含剖析 (Parse) 字串、格式化字串,還有其他編輯作業。 LabVIEW 另可用粉紅色呈現字串資料。

點選此處以進一步了解字串資料

回到頂端

數字 (Numeric) 資料形態


LabVIEW 可將數字資料呈現為複數、整數、浮點數、定點數、無正負號整數。LabVIEW 並以橘色表示單/雙精度 (Double/Single precision) 與複數資料。所有整數的數字資料則以藍色表示。

注意: 數字資料形態的相異之處,僅在於「儲存資料」與「呈現資料數值」所使用的位元數有所不同。

特定資料形態亦提供延伸組態選項。舉例來說,量測的實體單位可結合浮點資料 (包含複數),因此可針對定點資料設定其編碼與範圍。

點選此處以進一步了解數字資料

點選此處可觀看數字資料形態表格

回到頂端

布林 (Boolean) 資料形態

LabVIEW 可將 Boolean 資料儲存為 8 位元值。而 Boolean 可於 LabVIEW 中呈現為 0 或 1;TRUE 或 FALSE。若 8 位元值為零,則 Boolean 值為 FALSE。任何非零的值均代表 TRUE。Boolean 資料的常見應用包含數位資料呈現,並可作為人機介面上的開關/切換控制元;此開關具備機械式動作,常用以控制如 Case 的執行架構。Boolean 控制元亦常作為條件表示式,可退出 While Loop。LabVIEW 則以綠色代表 Boolean 資料。

點選此處以進一步了解機械動作的 Boolean 控制元

回到頂端

動態 (Dynamic) 資料型態

大多數的 Express VI 均可接受/回傳動態資料形態,均以深藍色端點表示之。

使用 Convert to Dynamic Data VI 與 Convert from Dynamic Data VI,即可轉換下列資料形態的浮點數或 Boolean 資料:

- 1D array of waveforms
-1D array of scalars
-1D array of scalars – most recent value
-1D array of scalars – single channel
-2D array of scalars – columns are channels
-2D array of scalars – rows are channels
-Single scalar
-Single waveform

動態資料形態應接至「最能完整呈現資料」的指示元。其中包含圖表、數字、Boolean 指示元。但因為動態資料必須自動轉換,以配合所連線的指示元,所以 Express VI 將拖慢程式圖的執行速度。

動態資料形態適合搭配 Express VI。LabVIEW 所隨附的其他大多數 VI 與函式,均無法接受此種資料形態。若要使用內建的 VI 或函式而分析/處理動態資料形態,就必須轉換動態資料形態。

點選此處以進一步了解動態資料

回到頂端

NI LabVIEW 中的資料架構

有些時候,集中互有關係的資料可達極高效益。在 LabVIEW 中,可透過陣列與叢集而集中相關資料。陣列 (Array) 可將相同形態的資料整合為單一資料架構;叢集 (Cluster) 則可將多樣形態的資料整合為單一資料架構。

陣列

陣列由要素 (Element) 與維度 (Dimension) 所構成。要素即是形成陣列的資料。維度即是陣列的長度、高度,或深度。陣列可具備超過 1 組以上的維度,最多可達 231 組;若記憶體容量足夠,則 1 組維度均為 1 組要素。

另可建立 Boolean、數字、路徑、字串、波形、叢集等資料形態的陣列。當要使用大量的類似資料,或執行高密度運算作業時,則可使用陣列。只要是透過波形蒐集的資料,或於迴圈 (各次循環可產生 1 組陣列元素) 中產生的資料,均可透過陣列儲存之。

注意:LabVIEW 中的陣列索引均以零為架構。不論陣列的維度為何,索引的第一組元素均為零。

陣列的元素均已排定順序。因此在使用索引功能時,可輕鬆存取任何 1 組特定元素。由於索引是以「零」為架構,亦即範圍是 0 ~ (n-1);此處的 n 即為陣列中的元素數量。舉例來說,n = 12 代表 1 年共 12 個月,但索引範圍則為 0 ~ 11。其中「三月」屬於第三個月,索引數字為 2。

圖 1  則為陣列數字的範例。陣列 (3.00) 中所顯示的第一組元素處於 Index 1;第二組元素 (1.00) 則處於 Index 2。由於在檢索顯示區選擇了 Element 1,因此位於 Index 0 的元素並未顯示於此圖中。在檢索顯示區中選擇的元素,往往即為元素顯示區左上角的元素。


圖 1.  陣列索引顯示、數字控制陣列

回到頂端

建立陣列控制元與指示元

如 圖 2 所示,若要為人機介面新增陣列框,只要在人機介面上建立陣列控制元或指示元,再將資料物件或元素 (如數字/字串控制元) 拖曳至陣列框中即可。



圖 2.  於陣列框中放置數字控制元

若要將無效的控制元/指示元拖曳至陣列框中,將無法確實放置控制元或指示元。

在程式圖上使用陣列之前,必須於陣列框中插入物件。否則陣列端點將為空白,且不會產生任何相關資料類型。

2D 陣列

上述範例為 1D 陣列。2D 陣列則是於格線中儲存元素。2D 陣列需要欄、列指數各一,才能找到元素,且兩者均以「零」為基礎原點。 圖 3  則為 8 欄乘以 8 列的 2D 陣列,即具備 8 × 8 = 64 元素。

Figure 3. 2D Array


To add a multidimensional array to the front panel, right-click the index display and select Add Dimension from the shortcut menu.亦可重新設定索引顯示區的尺寸,直到有足夠的維度。

初始化陣列

使用者可初始化陣列,亦可不進行任何初始化作業。初始化之後,即可定義各個維度中的元素數量與元素內容。 An uninitialized array contains a fixed number of dimensions but no elements. Figure 4 shows an uninitialized 2D array control.請注意,這些元素均無法選擇。即代表此陣列尚未初始化。


圖 4.  2D 未初始化陣列

 圖 5 則初始化了 6 組元素。在 2D 陣列中,若初始化單一列中的 1 組元素,均將透過預設的資料形態,進而初始化並產生同列中的其他元素。若以 圖 5 為例,若對第一欄、第三列中的元素輸入「4」,則第三列中的第二與第三欄將自動產生「0」。


圖 5. 共 6 組元素的初始化 2D 陣列

建立陣列常數

若要於程式圖上建立陣列常數,則可於 Functions 面板上選擇 Array Constant,將陣列框置於程式圖上,再於陣列框內輸入 Boolean 常數、字串常數、數字常數,或叢集常數。另可透過陣列常數儲存常數資料,或將之作為其他陣列的比較基礎。

回到頂端

使用陣列搭配迴圈

自動索引陣列輸入

若要從 For Loop 或 While Loop 連接陣列,則可啟用自動檢索 (Auto-indexing) 功能,即可將迴圈的各次循環連至陣列中的元素。通道 (Tunnel) 圖片將從固定方塊改為圖片,以顯示自動檢索功能。對通道按下滑鼠右鍵,再點選功能表的 Enable IndexingDisable Indexing,即可切換通道的狀態。

陣列輸入

若要啟用「接至 For Loop 輸入端點的陣列」的自動檢索功能,則 LabVIEW 可將計數端點設定為陣列尺寸,讓使用者不需銜接計數端點。由於 For Loops 單次僅能處理陣列的單一元素,因此只要是連接 For Loop 的陣列,LabVIEW 均預設啟用自動檢索功能。若不需單次處理多個陣列的 1 組元素,則可停用自動檢索功能。

圖 6  中,For Loop 所執行的次數,等同於陣列中的元素數量。在一般情況下,若 For Loop 的計數端點並未接線,則 Run 亦將為破裂箭頭。但此條件下的 Run Arrow 為完整箭頭。


圖 6. 陣列用以設定 For Loop 的計數功能

若啟用超過 1 個通道的自動檢索,或連接計數端點,則迴圈的實際執行次數將為最小數值。舉例來說,若有 2 個自動檢索的陣列 (分別具備 10 與 20 組元素) 進入迴圈,且計數端點連接「15」數值,則迴圈僅將執行 10 次,雖可檢索第一陣列的所有元素,但僅將檢索第二陣列的前 10 組元素。

陣列輸出

當自動檢索陣列輸出通道時,輸出陣列將從迴圈的各次循環取得新元素。因此,自動索引輸出陣列往往等於循環次數。 「連接輸出通道與陣列指示元」的接線,若在迴圈邊緣變更為陣列,則本身將變得更粗;輸出通道將包含方形括弧以代表陣列。

圖 7. 自動檢索輸出

對迴圈邊緣的通道按下滑鼠右鍵,並點選功能表的 Enable IndexingDisable Indexing,即可啟用/停用自動索引功能。While Loop 的自動檢索功能預設為停用。 舉例來說,若要通道僅送出最後數值,才需要停用自動檢索。

建立 2D 陣列

只要將 1 組 For Loop 建於另 1 組 For Loop 中,亦即共 2 組 For Loop 可建立 2D 陣列。這時外部的 For Loop 可建立「列 (Row)」元素;內部的 For Loop 可為「欄 (Column)」元素。

圖 8. 建立 2D 陣列

回到頂端

叢集

叢集可集中混合類型的資料元素。LabVIEW 錯誤叢集即屬叢集的範例之一,其內包含字串、Boolean 數值、數字值各 1 組。叢集更近似於文字式程式語言中的記錄或架構。

若將數種資料元素整合為叢集,則可讓程式圖上的接線更簡潔,並減少 subVI 的接頭端點數量。接頭面板 (Connector pane) 最多可達 28 個端點。若人機介面超過 28 個控制元與指示元,且要移轉到其他 VI,則可將某些控制元/指示元納入叢集,再將叢集指派至接頭面板上的 1 個端點即可。

程式圖上的大多數叢集,均為粉紅色的接線與資料類型端點。錯誤叢集則為暗黃色的接線與資料類型端點。數字值的叢集 (有時可為「點」) 則為褐色的接線與資料類型端點。褐色數字叢集可接至 Numeric 函式 (如 Add 或 Square Root),即可與叢集上的所有元素同步執行單一作業。

叢集元素的順序

雖然叢集與陣列元素均有其順序,但只要使用 Unbundle 函式之後,即必須拆開所有叢集元素。此時可透過 Unbundle By Name 函式,依名稱拆開叢集元素。若使用 Unbundle by Name 函式,則各個叢集元素必須具備標籤 (Label)。與陣列不同之處,叢集的大小必固定。而叢集與陣列一樣,可為控制元或指示元之一。但叢集無法納入混合的控制元與指示元。

若將數種資料元素整合為叢集,則可讓程式圖上的接線更簡潔,並減少 subVI 的接頭端點數量。接頭面板 (Connector pane) 最多可達 28 個端點。若人機介面超過 28 個控制元與指示元,且要移轉到其他 VI,則可將某些控制元/指示元納入叢集,再將叢集指派至接頭面板上的 1 個端點即可。

程式圖上的大多數叢集,均為粉紅色的接線與資料類型端點。錯誤叢集則為暗黃色的接線與資料類型端點。數字值的叢集 (有時可為「點」) 則為褐色的接線與資料類型端點。褐色數字叢集可接至 Numeric 函式 (如 Add 或 Square Root),即可與叢集上的所有元素同步執行單一作業。

回到頂端

建立叢集

控制元與指示元

只要將叢集框新增至人機介面 (如圖 9),再將資料物件或元素 (可為 Boolean、Refnum、陣列、數字、字串、路徑) 拖曳至叢集框內,即可於人機介面上建立叢集的控制元或指示元。另可拖曳滑鼠游標,即可設定叢集框的尺寸。


圖 9. 建立叢集控制元

 圖 10 範例即是單一叢集內含 3 組控制元:Boolean 開關、字串、數字各 1 組。叢集可為控制元或指示元,但不可同時包含此 2 者。


圖 10. 叢集控制範例

建立叢集常數

若要於程式圖上建立叢集常數,則可於 Functions 面板上選擇 Cluster Constant,將陣列框置於程式圖上,再於陣列框內輸入 Boolean 常數、字串常數、數字常數,或叢集常數。另可透過叢集常數儲存常數資料,或將之作為其他叢集的比較基礎。

若人機介面中已有叢集控制元或指示元,且使用者又要於程式圖上建立叢集常數,並使其具備相同的元素,則可將該叢集從人機介面拖曳至程式圖;或對人機介面上的叢集按下滑鼠右鍵,並點選 Create » Constant 即可。

回到頂端

使用 Cluster 函式

Cluster 函式可建立並操作叢集。舉例來說,可執行類似下列作業:

- 自叢集中取得獨立的資料元素。
- 將獨立的資料元素新增至叢集。
- 將叢集打散為其獨立的資料元素。

另可使用 Bundle 函式組裝叢集;Bundle 與 Bundle by Name 函式可修改叢集;Unbundle 與 Unbundle by Name 函式可打散叢集。

若對程式圖上的叢集端點按下滑鼠右鍵,點選功能表的 Cluster, Class & Variant Palette,即可於程式圖上放置 Bundle、Bundle by Name、Unbundle、Unbundle by Name 等函式。Bundle 與 Unbundle 函式將自動產生正確的端點數量。Bundle by Name 與 Unbundle by Name 函式,將與叢集中的第一組元素同時出現。亦可透過 Positioning 工具重新設定 Bundle by Name 與 Unbundle by Name 函式的尺寸,以顯示叢集的其他元素。

組裝叢集

Bundle 函式可透過獨立元素而組裝叢集,或變更現有叢集中的獨立元素值,且不需為所有元素指定新值。另可使用 Positioning 工具重新設定函式尺寸,或對元素的輸入按下滑鼠右鍵,再點選 Add Input。

圖 11. 於程式圖上組裝叢集

修改叢集

若要銜接叢集的輸入,則僅需銜接將要變更的元素。以 圖 12  中的 Input Cluster 為例,其中即具備 3 組控制元。

圖 12. 修改叢集所用的組合

若已知叢集的順序,則可透過 Bundle 函式以銜接圖 12 中的元素,即可變更 Command 值。

亦可使用 Bundle by Name 函式,以取代/存取現有叢集的已標記元素。Bundle by Name 函式的功能近似 Bundle 函式,但不是依叢集的順序參考叢集元素,而是參考其標籤。使用者僅可存取「具備標籤」的元素。輸入的數量並不一定符合輸出叢集中的元素數量。

可透過 Operating 工具點選輸入端點,再從下拉式功能表中點選元素。亦可對輸入按下滑鼠右鍵,再從 Select Item 功能表中選擇元素。

圖 13  中,可透過 Bundle by Name 函式而更新 Command 與 Function 的值,並以 New Command 與 New Function 的值取代之。


圖 13. 修改叢集所用的 Bundle by Name

針對可能於開發期間改變的資料架構,則可使用 Bundle by Name 函式。若要為叢集新增元素,或修改叢集的順序,則由於名稱仍屬有效,因此不需要重新連接 Bundle by

Name 函式。

打散叢集

Unbundle 函式可將叢集切割為獨立元素。

Unbundle by Name 函式則可根據使用者所指定的名稱,而回復叢集元素。輸出端點的數量,則與輸入叢集中的元素數量並不相關。

可透過 Operating 工具點選輸出端點,再從下拉式功能表中點選元素。亦可對輸出端點按下滑鼠右鍵,再從 Select Item 功能表中選擇元素。

以  圖 14 為例,若使用 Unbundle 函式搭配叢集,且該叢集具備 4 組輸出端點,另對應至叢集中的 4 組控制元。則使用者必須知道叢集順序,才能針對「已打散叢集」的正確 Boolean 端點,將之對應至叢集中的開關。在此範例中,元素則以 Element 0 開始,從上到下為順序。若使用 Unbundle by Name 函式,則輸出端點可為任意數量,並可依名稱而存取獨立元素,不需依照其順序。


圖 14. Unbundle 與 Unbundle By Name

回到頂端

列舉 (Enum)

列舉 (Eumeration,Enum) 包含常數、控制元、指示元,為資料形態的集合。列舉並代表成對的數值、1 組字串、1 組數字,另可為 1 串數值之中的 1 個。舉例來說,若建立的列舉形態稱為「Month」,則 Month 變數的數值對可為 January-0、February-1,直到 December-11。 圖 15  則針對列舉控制元,於 Properties 對話框中顯示成對資料的範例。只要對 Enum 控制元按下滑鼠右鍵,點選 Edit Items 即可直接使用此功能。


圖 15. Month Enumerated 控制元的屬性

與字串相較,因為 Enum 可輕鬆於程式圖上操作數字,所以用途較廣泛。 圖 16 顯示上述「Month」的列舉控制元、列舉控制元中的資料對選項、對應的程式圖端點。

圖 16. Month Enumerated 控制元、控制元中的選項、程式涂端典

回到頂端

Module Quiz:資料形態與架構

完成簡易測驗,看看自己是否了解「LabVIEW 資料形態與架構」影片中的概念。

  1. 可整合字元、字母、數字的資料形態為 _________
  2. 字串
    雙精準浮點 (Double Precision Floating Point,DBL)
    Boolean
    動態

     
  3. 可用於小數點數值,並可於磁碟上佔用 64 位元儲存空間的數字資料形態為______________
  4. 字串
    雙精準浮點 (Double Precision Floating Point,DBL)
    Boolean
    動態

     
  5. __________ 資料形態僅分為 TRUE 或 FALSE。
  6. 字串
    雙精準浮點 (Double Precision Floating Point,DBL)
    Boolean
    動態

     
  7. 陣列不能同時儲存多種資料形態。


  8.  
  9. 叢集不能同時儲存多種資料形態。


  10.  
  11. 列舉 (Enum,Enumerated control) 是由 ________________ 資料形態所組成。
  12. 字串,雙精準浮點 (Double Precision Floating Point,DBL) 字串,整數
    Boolean,字串
    字串,叢集

     

Cumulative Test:
LabVIEW Basics

接受 LabVIEW Basics Test,測出自己對 LabVIEW 基本了解程度。建議先完成 LabVIEW Basic Concepts 中的 7 大區塊之後,再接受此測驗。本測驗共有 20 題多重選擇題。

開始

Cumulative Exercise:
LabVIEW Basics

完成 LabVIEW Basics Exercise,以了解自己對 LabVIEW 環境的熟悉程度。建議先完成 LabVIEW Basic Concepts 中的 7 大區塊之後,再接受此測驗。此習題將透過 LabVIEW 而建構計算機。

開始