2012年11月8日 星期四

建立 Network Shared Variables

傳統上,應用程式之間若要經由網路交換資料,要考慮的事情很多,例如選擇適合的網路協定、定義傳輸的資料格式、選擇程式庫等,這些工作會耗掉很多開發資源與時間。LabVIEW 提供了一個叫作 Network Shared Variables 的變數型別,顧名思義,Network Shared Variables 意思就是可以讓應用程式或是遠端電腦在網路上共用的一種變數,使用 Network Shared Variables 可以大大簡化應用程式之間傳遞資料的繁雜工作。在這篇,我將示範如何建立 Network Shared Variables,我所用的環境為 在 Windows 7 和 LabVIEW 2012。

由於建立 Network Shared Variables 必須使用專案來管理,所以我們從頭開始做起,先建立範例專案與範例 VI:

Step 1: 打開 LabVIEW,在 Startup Window 中點選 Create Project:

image

選擇 Blank Project 並按下 Finish 建立專案:

image

完成後,會產生一個未命名的專案 (如下圖左),我們先把專案存檔,本例將專案取名為 NSV_Demo.lvproj (如下圖右):

image  image

Step 2: 點擊選單 File > New VI 以建立一個新的 VI,然後設計如下的程式。如下圖左,在 Front Panel 上放置一個 Vertical Pointer Slide;如下圖右,在 Block Diagram 上放個 While Loop 迴路與 Timer。然後把 VI 檔儲存起來,本例將 VI 檔取名為 Temperature.vi:

image image

Step 3: 切到 Project Explorer 視窗,如下圖,在 My Computer 上按右鍵,並在右鍵選單上點擊 New > Variable 以建立共用變數:

image

Step 4: 接著要設定共用變數的屬性,參考下圖,把變數名稱設為 Temperature,變數型別 (Variable Type) 設定為 Network-Published,這代表新建立的 Temperature 變數會是一是網路共用的變數。至於 Data Type 有非常多選擇,例如 Boolean, Double, Integer, Variant 等等,而且還有 Arrary 變數可供選擇,此處我們使用預設的 Double 即可:

image

按下 OK 完成變數的建立工作。由於 LabVIEW 把共用變數納入 Library 管理,所以新建立的 Temperature 變數會放在未命名的 library 中,如下圖所示:

image

把 library 存檔,取名為 NSV_Demo.lvlib:

image

Step 5: 接著便可以使用共用變數來傳遞資料,方法很簡單,只要用滑鼠直接從專案視窗把 Temperature 變數拖曳到 Block Diagram 即可:

image

Step 6: 在 Temperature 共用變數上按右鍵,並點選 Access Mode > Write 把變數屬性改成 Write Mode:

image

Step 7: 參考下圖,把 Temperature Control 跟 Temperature 共用變數連接起來,程式即告完成:

image

Step 8: 接著切到 Front Panel,按下工具列的 Run 鈕執行程式,此時你會看到像下圖一樣的 Deployment Process 視窗,注意紅框表示處的 \\192.168.2.106\NSV_Demo\Temperature 便是網路共用變數的完整路徑,將來其它程式或遠端電腦要存取這個共用變數時,就要使用這個路徑:

image

按下 Close 鈕,這時候可能會跳出如下的安全性警訊,請按下「允許存取」:

image

Step 9: 現在,當你在 Front Panel 上滑動 Slide 改變溫度時,Temperature 共用變數的內容也會同步改變,要如何確認呢?請接著看下一步:

image

Step 10: 打開 Distributed System Manager (位置在 National Intruments 程式集裏),這時候可能會跳出如下的安全性警訊,請按下「允許存取」:

image

然後展開 localhost > NSV_Demo > Temperature,現在你應該會看到 Temperature 共用變數的即時讀值,試著切回 VI 程式,然後滑動 Slide 以改變溫度,然後你應該會發現 Distributed System Manager 上的 Temperature 變數值也會同步更新:

image

在這個範例裏面,我們用 Vertical Pointer Slide 當作共用變數的輸入,這是為了方便說明才這麼做,在真正的應用場合中,其實可以結合硬體擷取傳感器的資料,然後在遠端電腦或是行動裝置讀取共用變數作即時的監控,這樣應該會很方便很有幫助。

參考資料

0 意見: