在 LabVIEW 中構建和配置 While 迴圈

更新 Jul 27, 2022

環境

軟體

  • LabVIEW

While 迴圈是一種用於重複執行程式碼段直到滿足特定條件的結構。 VI 運行時,While 迴圈內的程式碼會執行,然後條件接線端會被求值。

本教程將引導您了解如何在 LabVIEW 中構建和配置 While 迴圈。本介紹材料非常適合剛接觸 LabVIEW 並希望熟悉這種基本程式設計結構的人。

本教程將分為以下部分進行說明:

 

構建一個 While 迴圈

  1. 啟動LabVIEW並打開一個新VI。您可以通過選擇File » New VI 以打開一個空白 VI。
  2. 右鍵單擊程式框圖以顯示臨時版本的函式選板。
    • 可選:您可以單擊函式選板左上角的圖釘來固定選板,使其不再是臨時的。
  3. 導航到 結構(Structures) 並選擇While 迴圈。
    • 要將迴圈放置在程式框圖上,請單擊滑鼠左鍵並拖動滑鼠,直到迴圈達到您想要的大小。
  4. 在前面板上添加一個停止按鈕。您可以在Controls Palette » Boolean » Stop下找到它。
  5. 在程式框圖上,將 Stop 按鈕圖標拖到 while 迴圈中。
  6. 回到程式框圖將 Stop 按鈕連接到條件接線端,以便您可以控制 while 迴圈的執行。
    • 預設情況下,當按下停止按鈕時,會向條件端口傳遞TRUE,從而導致 while 迴圈停止執行。
    • 注意:您可以將任何布林資料連接到條件接線端來控制 while 迴圈的執行,而不僅僅是一個停止按鈕。
  1. 配置條件端口。要在Stop if TrueContinue if True之間切換條件接線端,請右鍵單擊條件接線端並選擇所需的設置。
    • 條件端口定義迴圈何時停止。條件端口有兩種設定: Stop if True ( ) Continue if True )。
      • 如果條件端口設定為Stop if True,並且布林值 true 被發送到條件端口,則迴圈停止執行。這是預設的設定。
      • 當設定為 Continue if True 時,只有當布林值 true 發送到端口時才運行 while 迴圈。
  2. (可選)通過右鍵單擊迭代端口(iteration terminal)並選擇創建顯示器來監控迴圈所經歷的迭代次數
返回文章索引
 

將結構隧道添加到您的 While 迴圈

使用結構隧道將資料輸入和輸出結構,如 while 迴圈。如果要將資料發送到 while 迴圈中,則需要創建結構隧道。
  • 發送到 While 迴圈的資料僅在第一次迭代時發送。
  • 從 while 迴圈發出的資料則僅在最後一次迭代之後才發送。
    • 如果您希望您的前面板資料不斷更新,它們的顯示器應該位於 while 迴圈內

示例:判斷已完成的迭代

  1. 完成構建 while 迴圈的步驟(可察看構建一個While迴圈 )。
  2. 在前面板上創建一個數字顯示器。您可以在 Controls » Numeric » Numeric Indicator 找到它。
    1. (可選)為避免強制資料類型,通過右鍵單擊顯示器並選擇 Representation » I32 將數字表示更改為 I32 。
  3. 在程式框圖上,將迭代計數器連接到數字顯示器
    • 結構隧道顯示為 while 迴圈邊界上的實心塊。實心塊的顏色會由連接到隧道的資料類型決定。
    • 迴圈終止後資料從迴圈中傳遞出去。
在下面的框圖中,迭代端口連接到隧道。在 while 迴圈完成執行之前,隧道中的值不會傳遞給迭代顯示器。將下面的LabVIEW程式片段帶入您的 LabVIEW 程式碼並註意:
  • 隨機數(Random Number)和顯示器放置在 while 迴圈內。該顯示器的資料隨著每次迭代而更新。
  • 程式碼運行時,迭代計數顯示器的值為零。這是因為在 while 迴圈停止執行之前,隧道不會將信息傳遞給顯示器。
  • 當您按下停止時,迭代計數顯示器現在將更新資料。
注意:此圖像是 LabVIEW 程式片段,其中包含可在項目中重複使用的 LabVIEW 程式碼。要使用此片段,請右鍵單擊圖像,將其保存到您的電腦,然後將該檔案拖到您的 LabVIEW 程式框圖上。

設定停止條件

通過使用布林函式,您可以實現多個條件來影響您的 while 迴圈的條件端口。例如您可以使用OR函式來比較錯誤連線狀態和停止按鈕控制元件,以便如果其中一個為 TRUE,則條件端口接收 TRUE 訊號,並將 while 迴圈停止。

  1. 完成構建 while 迴圈的步驟(可察看構建一個While迴圈 )。
  2. 在前面板上放置一個Error In 3D.ctl 控制元件。您可以在 Controls Palette » Data Containers » Error In 3D.ctl 找到它。
    1. 在程式框圖上,確保 Error In 3D.ctl 顯示器位於 while 迴圈之外。
  3. 刪除停止按鈕和條件端口之間的連接線。
  4. 在 while 迴圈之外放置一個Simple Error Handler函式( Functions Palette » Dialog & User Interface » Simple Error Handler.vi )。此函式將報告調用時遇到的任何錯誤。
  5. 通過結構隧道的while迴圈將Error In 3D.ctl 控制元件與Simple Error Handler函式連接起來。
    1. 將Error In 3D.ctl 控制元件錯誤輸出連接到 while 迴圈的邊界。單擊邊界以創建隧道。
    2. 繼續將錯誤線從隧道連接到 while 迴圈的相反邊界,並進入Simple Error Handler函式的輸入。
  6. 在 while 迴圈內放置一個Unbundle By Name函式( Functions Palette » Programming » Cluster, Class, & Variant » Unbundle by Name )。您可以使用此函式來分隔錯誤資料線的布林部分。
    1. 將錯誤線連接到 Unbundle by Name 功能。
    2. 左鍵單擊 Unbundle 功能並選擇狀態(Status)以顯示錯誤資料的布林部分。
  7. 在 while 迴圈中放置一個or函式(Functions Palette » Programming » Boolean » Or)。
  8. 連接資料線。
    1. 連接Stop按鈕控制元件和Unbundle by Name狀態輸出至Or函式。
    2. Or函式的輸出連接到條件接線端。
如果按下停止按鈕或在 while 迴圈內檢測到錯誤,下面的程式片段將停止執行 while 迴圈。

注意:此圖像是 LabVIEW 程式片段,其中包含可在項目中重複使用的 LabVIEW 程式碼。要使用此片段,請右鍵單擊圖像,將其保存到您的電腦,然後將該檔案拖到您的 LabVIEW 程式框圖上。
 

設定停止條件衍生說明:其他停止條件注意事項

上述情況(用戶輸入錯誤停止)是設定條件停止輸入的一個非常常見的用例。但這並不是增加停止條件複雜性的唯一方法:
  • 如果您想比較三個或更多條件,請使用複合算術(Compound Arithmetic) 函式。如果您想同時監控錯誤狀態、用戶輸入和測量資料並在出現閾值(Threshold)或錯誤狀態時停止運行程式碼,該函式將非常有用。
  • 使用 Or、Compound Arithmetic 或其他布林比較函式比較錯誤簇時,您可以將誤差束直接連接到算術函式中。錯誤狀態 Boolean 將自動被解析出來。
    • 這可能不適用於所有版本的 LabVIEW。設定停止條件 部分中描述的過程適用於所有版本的 LabVIEW,並遵循正確的過程。

下一步

熟悉 While 迴圈後,之後可以了解如何使用移位暫存器將訊息從一個迴圈迭代傳遞到下一個迴圈迭代 。您可以使用Learn LabVIEW Basics在線教程作為入門資源。