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

整合文字架構的程式設計功能

NI LabVIEW 軟體必須完成特定作業 (如調整訊號、解出數學方程式),以有利於建立文字架構的程式設計功能。LabVIEW 則可選擇使用 C++ 語法搭配 Formula Node;.m 檔案指令碼語法搭配 MathScript Node,以利分析、數學、訊號處理函式。接著將一併說明此 2 種搭配方式。


逐步程序

下載逐步程序的 PDF 檔


為了呈現 LabVIEW 所整合的文字架構,這裡透過 1 組方程式轉換現有熱敏電阻為攝氏溫度。


圖 1. 將熱敏電阻的電阻轉換為溫度的方程式

我們用許多數學等式建構出複雜的多項式。一旦方程式成立,卻可能在 LabVIEW 中變得更複雜;即如圖 2 顯示:

圖 2. 熱敏電阻常式所形成的 LabVIEW 函式

圖 3 範例則為傳統文字架構語言 (如 C) 所呈現的程式。看來更容易了解,且更接近實際方程式。現在就透過 Formula Node 與 MathScript Node 建立此方程式。


圖 3. 文字架構的程式碼呈現熱敏電阻常式

LabVIEW Formula Node

在開始此程序之前,應先完成 進行量測 中的習題並使用解決方案。亦可建立數字控制元,以模擬 DAQ 輸入。

注意:若並未使用 DAQ Assistant 擷取電阻資料並轉換為溫度,則可直接略過至 Step 2 並於 DAQ Assistant 中使用數字控制元。

  1. 設定 Voltage Input DAQ Assistant,從多功能數位電表 (DMM) 端點輸入電阻
    1. 對目前的 DAQ Assistant 連按滑鼠 2 次,即可編輯設定
    2. Channel Settings 對話框中的 Voltage 通道按下滑鼠右鍵,再點選 Remove from Task
    3. 點選藍色的「+」號即可新增通道,再點選 Resistance
    4. 點選 Dev1 (NI myDAQ) » dmm
    5. 確認 Iex Source 已設定為 Internal
    6. 確認 Acquisition Mode 已設定為 1 Sample (On Demand)
    7. 再點選 OK 以套用設定
  2. 於程式圖上配置 Formula Node,將電阻轉換為攝氏溫度
    1. 對程式圖按下滑鼠右鍵,再點選 Mathematics » Scripts & Formulas » Formula Node
    2. 將下列方程式貼入至 Formula Node 視窗,再調整所需尺寸
  3. float64 M;
    M=ln(R/10000);
    T=(1/(A+B*M+C*M*M+D*M*M*M))-273.15;

  4. 為 Formula Node 新增輸入,以用於方程式中的所有輸入變數
    1. 對左側邊緣按下滑鼠右鍵,再點選 Add Input
    2. 輸入 R0,讓方程式中的輸入與 R0 變數產生關連
    3. 再對 ABCD 重複此步驟
    4. 分別對 AB CDR0 等輸入按下滑鼠右鍵,點選 Create » Control
    5. A=0.0039083; B=5.775E-7; C=1.63214E-6; D=7.1922E-8; R0=1000
    6. 將 DAQ Assistant 的 Data 輸出,接至 Formula Node 的 R 輸入
  5. 新增 Temperature (C) 輸出,即可於圖表指示元上顯示結果
    1. 對邊緣按下滑鼠右鍵,再點選 Add Output
    2. 輸入 T,讓方程式中的輸出與 T 變數產生關連
    3. 將此輸出接至圖表指示元的輸入
  6. 新增 While Loop 以連續執行此 VI
    1. 對程式圖按下滑鼠右鍵,再點選 Programming » Structures » While Loop
    2. 按下滑鼠並拖曳,以涵蓋完整程式碼
    3. 對條件端點按下滑鼠右鍵,再點選 Create » Control
  7. 當按下 Stop 按鈕,或偵測到錯誤時,可建立停止條件以納入系統
    1. 針對 Analog Input DAQ Assistant 的 Stopped 輸出端點,應中斷 Conditional Terminal 的連線
    2. 對程式圖按下滑鼠右鍵,再點選 Programming » Boolean » Or
    3. Stop 按鈕控制元的輸出,接至 Or Boolean 函式的底部輸入
    4. 對程式圖按下滑鼠右鍵,再點選 Programming » Cluster, Class, & Variant » Unbundle by Name,再將之配置於 Analog Input DAQ Assistant 的右側
    5. 將 Analog Input DAQ Assistant 的 Error Out 輸出端點,接至 Unbundle by Name 函式的輸入,並確認 Status 已選為 unbundled
    6. 將 Unbundle by Name 函式的輸出,接至 Or 函式的頂端輸入
    7. 將 Or 函式的輸出,接至 Conditional Terminal 的輸入
  8. 執行 VI 即可觀看結果

可參閱 Formula Node 以進一步了解,並取得 Formula Node Functions 清單。

MathScript Node

另可使用 MathScript Node 而執行既有的 .m 檔案指令碼;亦可針對訊號處理作業,於 LabVIEW 中開發 .m 檔案。

在開始此程序之前,應先完成 進行量測 中的習題並使用解決方案。亦可建立數字控制元,以模擬 DAQ 輸入。

注意:若並未使用 DAQ Assistant 擷取電阻資料並轉換為溫度,則可直接略過至 Step 2 並於 DAQ Assistant 中使用數字控制元。

  1. 設定 Voltage Input DAQ Assistant,從多功能數位電表 (DMM) 端點輸入電阻
    1. 對目前的 DAQ Assistant 連按滑鼠 2 次,即可編輯設定
    2. Channel Settings 對話框中的 Voltage 通道按下滑鼠右鍵,再點選 Remove from Task
    3. 點選藍色的「+」號即可新增通道,再點選 Resistance
    4. 點選 Dev1 (NI myDAQ) » dmm
    5. 確認 Iex Source 已設定為 Internal
    6. 確認 Acquisition Mode 已設定為 1 Sample (On Demand)
    7. 再點選 OK 以套用設定
  2. 於程式圖上配置 MathScript Node,將電阻轉換為攝氏溫度
    1. 對程式圖按下滑鼠右鍵,再點選 Mathematics » Scripts & Formulas » MathScript Node
    2. 將下列方程式貼入至 MathScript Node 視窗,再調整所需尺寸

double M;
M=log(R/10000);
T=(1/(A+B*M*M+C*M*M+D*M*M*M));
T=T-273.15;

  1. 為 Formula Node 新增輸入,以用於方程式中的所有輸入變數
    1. 對左側邊緣按下滑鼠右鍵,再點選 Add Input
    2. 輸入 R,讓方程式中的輸入與 R 變數產生關連
    3. 將 DAQ Assistant 的 Data 輸出,接至 MathScript Node 的 R 輸入
    4. 再對 ABCD 變數重複此步驟
    5. 分別對 AB CDR0 等輸入按下滑鼠右鍵,點選 Create » Control
    6. A=0.0039083; B=5.775E-7; C=1.63214E-6; D=7.1922E-8; R0=1000
    7. 將 DAQ Assistant 的 Data 輸出,接至 MathScript Node 的 R 輸入
  2. 新增 Temperature (C) 輸出,即可於圖表指示元上顯示結果
    1. 對邊緣按下滑鼠右鍵,再點選 Add Output
    2. 輸入 T,讓方程式中的輸出與 T 變數產生關連
    3. 將此輸出接至圖表指示元的輸入
  3. 新增 While Loop 以連續執行此 VI
    1. 對程式圖按下滑鼠右鍵,再點選 Programming » Structures » While Loop
    2. 按下滑鼠並拖曳,以涵蓋完整程式碼
    3. 對條件端點按下滑鼠右鍵,再點選 Create » Control
  4. 當按下 Stop 按鈕,或偵測到錯誤時,可建立停止條件以納入系統
    1. 針對 Analog Input DAQ Assistant 的 Stopped 輸出端點,應中斷 Conditional Terminal 的連線
    2. 對程式圖按下滑鼠右鍵,再點選 Programming » Boolean » Or
    3. Stop 按鈕控制元的輸出,接至 Or Boolean 函式的底部輸入
    4. 對程式圖按下滑鼠右鍵,再點選 Programming » Cluster, Class, & Variant » Unbundle by Name,再將之配置於 Analog Input DAQ Assistant 的右側
    5. 將 Analog Input DAQ Assistant 的 Error Out 輸出端點,接至 Unbundle by Name 函式的輸入,並確認 Status 已選為 unbundled
    6. 將 Unbundle by Name 函式的輸出,接至 Or 函式的頂端輸入
    7. 將 Or 函式的輸出,接至 Conditional Terminal 的輸入
  5. 執行 VI 即可觀看結果

進一步了解 LabVIEW MathScript RT Module

另可對 DAQ Assistant 按下滑鼠右鍵,並點選 Generate NI-DAQmx Code,即可將 DAQ Assistant Express VI 轉換為初階 NI-DAQmx 函式。初階 NI-DAQmx API,將提供更多程式設計的功能與客制化選項。

 

LabVIEW VI 片段 (Snippet)

既有的 LabVIEW 函式片段

Formula Node Snippet

MathScript Node Snippet

對上方的 VI 片段按下滑鼠右鍵,點選  Save Image As... 找出硬碟中的檔案並點選之,再將檔案圖示拖曳至 LabVIEW 程式圖上。LabVIEW 將從 VI 片段自動產生程式碼。 若需要更多資訊,可參閱 VI Snippets


Module Exercise:整合文字架構的程式設計功能

下載習題 PDF 檔

Exercise Goal
透過上述的 LabVIEW VI 而建立整體解決方案,在使用 NI myDAQ 而擷取熱敏電阻的電阻時,可選用「電阻轉換為溫度」的 3 種方法之一。在開始此習題之前,應先完成 進行量測 中的習題並使用解決方案。

必備硬體
1 組 NI myDAQ 或 NI ELVIS II
1 組 10 kΩ 熱敏電阻
,或
以數字控制元模擬電阻輸入

考量重點

  • 執行相關條件的程式碼時,其執行架構為何?
  • 若 Case 架構中有超過 2 筆條件,則應使用何種控制元?字串可用於此嗎?數字可用於此嗎?可整合數字與字串嗎?
  • 電阻提高/降低時,溫度會上升嗎?針對電阻值而配置數字指示元,以了解結果。
  • 以鱷魚夾搭配 DMM 接線,協助固定熱敏電阻。

觀看習題解答
(別偷看喔!)

Cumulative Exam:
LabVIEW 與 DAQ

了解自己對 LabVIEW 與 DAQ 的熟悉程度。建議先完成 LabVIEW Basic ConceptsLabVIEW Basic Tasks 之後,再接受此測驗。本測驗共有 26 題多重選擇題。

開始


Cumulative Project:
LabVIEW 與 DAQ

透過 LabVIEW 與 DAQ 介面卡而擷取、處理、顯示資料,了解自己建立完整系統的實力。建議先完成 LabVIEW Basic ConceptsLabVIEW Basic Tasks 之後,再接受此方案。

開始