專題介紹 - 如何讓subVI同一個接點可以輸入不同的資料型態?

在許多情況下,我們會希望一個 subVI 的接點可以接入不同的資料型態。例如進行相同的資料處理公式,但是輸入的資料可能是 scalar,或是輸入 1D-Array。在 subVI 的同一個接點無法接入不同的資料型態之下,我們勢必在輸入前得因應各種資料的輸入可能,進而撰寫判斷的迴圈,才使用不同的 subVI 來執行。在這種情況下,若 LabVEW 能夠協助判斷資料型態自動變更 subVI 接點的屬性,那就太好了。

那 LabVIEW 到底有沒有辦法可以協助呢?
答案是一半一半。

LabVIEW 基本上要直接作資料型態的轉換只有一種方式,就是 Type Cast,然而有些時候並非強制資料轉換即可解決,例如有可能輸入一個 scalar,或是輸入 1D-Array,此時 subVI 需要針對這不同的資料型態來作相同的處理時,就可以使用 Polymorphic VI

Polymorphic VI 並非自動作資料的轉換,而是根據你輸入的資料型態,自動/手動決定你要使用的 subVI ,也就是我們還是得根據相對應的資料型態作出不同的 subVI ,但是可以使用同一個 subVI 窗口來輸入資料,這樣可以大幅減少程式維運上的困難


圖片程式版本:LabVIEW 2013
範例程式版本:LabVIEW 8.6


說了這麼多,我們實際的來實作 Polymorphic VI 吧。

首先我們假定的題目是:subVI 可輸入三種資料型態,分別為 U32 、 string 、 boolean,輸入後經過 Polymorphic VI 判斷,跳出對話視窗,顯示輸入的資料型態為何,輸入的值為何

首先我們先建立以下三個 subVI:




分別取名為 TEST_STRING、TEST_U32、TEST_BOOLEAN。
此時特別注意

  • 定義 Connector Pane Pattern (接腳盤) 時,必須使用相同的 Pattern 
  • 定義的腳位必須是同樣的輸入或輸出的設定
  • 不同 subVI 中相同的輸入,在 Pattern 上須都在同一個位置上

否則接下來會出現錯誤。


這個範例是選用上圖的樣式,且定義輸入點皆為左上角的點。


接下來選擇 File >> New...


再來選擇 Polymorphic VI


按下OK之後就會出現 Polymorphic VI 的編輯畫面


按下 Add... 把剛剛製作的三個 subVI 都加進去


最後按下 CTRL + S 存檔,檔名設定為 TEST_MAIN 即可。到此為止,Polymorphic VI 已經製作完畢,接下來是呼叫出來使用。請開一個新的 VI ,同時插入剛剛製作完成的 TEST_MAIN.vi。

在 VI 上按右鍵選擇 Visible Items ,此時可以看到 Polymorphic VI Selector 的選項,請啟用。


此時可以看到 VI 下方多出了一個選擇器


這告訴我們目前使用的是之前製作的 TEST_BOOLEAN.vi。若在選擇器上面按左鍵,便可看到這個 Polymorphic VI 內包含的型態有哪些。


大家可以看到目前他勾選的是 Autmatic ,也就是自動選擇。
此時嘗試著接上不同的資料型態及值,並執行。







各位應該發現,當選擇器勾選 Automatic 時,Polymorphic VI 就會根據我們輸入的不同資料型態,自動選擇不同的 subVI 來執行。當然,不同的 subVI 內容不見得要一模一樣,只要符合Pattern 相同,腳位輸入輸出的設定相同,那麼 Polymorphic VI 就可以根據不同的資料型態,選擇不同的資料處理方式

Polymorphic VI 的介紹到此為止,相關的範例程式在這裡下載。