本教程將分為以下部分進行說明:
構建一個 While 迴圈
- 啟動LabVIEW並打開一個新VI。您可以通過選擇File » New VI 以打開一個空白 VI。
-
右鍵單擊程式框圖以顯示臨時版本的函式選板。
-
導航到 結構(Structures) 並選擇While 迴圈。
-
要將迴圈放置在程式框圖上,請單擊滑鼠左鍵並拖動滑鼠,直到迴圈達到您想要的大小。
- 在前面板上添加一個停止按鈕。您可以在Controls Palette » Boolean » Stop下找到它。
- 在程式框圖上,將 Stop 按鈕圖標拖到 while 迴圈中。
- 回到程式框圖將 Stop 按鈕連接到條件接線端,以便您可以控制 while 迴圈的執行。
- 預設情況下,當按下停止按鈕時,會向條件端口傳遞TRUE,從而導致 while 迴圈停止執行。
- 注意:您可以將任何布林資料連接到條件接線端來控制 while 迴圈的執行,而不僅僅是一個停止按鈕。
- 配置條件端口。要在Stop if True和Continue if True之間切換條件接線端,請右鍵單擊條件接線端並選擇所需的設置。
- 條件端口定義迴圈何時停止。條件端口有兩種設定: Stop if True ( ) Continue if True( )。
- 如果條件端口設定為Stop if True,並且布林值 true 被發送到條件端口,則迴圈停止執行。這是預設的設定。
- 當設定為 Continue if True 時,只有當布林值 true 發送到端口時才運行 while 迴圈。
- (可選)通過右鍵單擊迭代端口(iteration terminal)並選擇創建顯示器來監控迴圈所經歷的迭代次數。
返回文章索引
將結構隧道添加到您的 While 迴圈
使用結構隧道將資料輸入和輸出結構,如 while 迴圈。如果要將資料發送到 while 迴圈中,則需要創建結構隧道。
- 發送到 While 迴圈的資料僅在第一次迭代時發送。
- 從 while 迴圈發出的資料則僅在最後一次迭代之後才發送。
- 如果您希望您的前面板資料不斷更新,它們的顯示器應該位於 while 迴圈內
示例:判斷已完成的迭代
- 完成構建 while 迴圈的步驟(可察看構建一個While迴圈 )。
- 在前面板上創建一個數字顯示器。您可以在 Controls » Numeric » Numeric Indicator 找到它。
- (可選)為避免強制資料類型,通過右鍵單擊顯示器並選擇 Representation » I32 將數字表示更改為 I32 。
- 在程式框圖上,將迭代計數器連接到數字顯示器
- 結構隧道顯示為 while 迴圈邊界上的實心塊。實心塊的顏色會由連接到隧道的資料類型決定。
- 迴圈終止後資料從迴圈中傳遞出去。
在下面的框圖中,迭代端口連接到隧道。在 while 迴圈完成執行之前,隧道中的值不會傳遞給迭代顯示器。將下面的LabVIEW程式片段帶入您的 LabVIEW 程式碼並註意:
- 隨機數(Random Number)和顯示器放置在 while 迴圈內。該顯示器的資料隨著每次迭代而更新。
- 程式碼運行時,迭代計數顯示器的值為零。這是因為在 while 迴圈停止執行之前,隧道不會將信息傳遞給顯示器。
- 當您按下停止時,迭代計數顯示器現在將更新資料。
注意:此圖像是 LabVIEW 程式片段,其中包含可在項目中重複使用的 LabVIEW 程式碼。要使用此片段,請右鍵單擊圖像,將其保存到您的電腦,然後將該檔案拖到您的 LabVIEW 程式框圖上。
設定停止條件
通過使用布林函式,您可以實現多個條件來影響您的 while 迴圈的條件端口。例如您可以使用OR函式來比較錯誤連線狀態和停止按鈕控制元件,以便如果其中一個為 TRUE,則條件端口接收 TRUE 訊號,並將 while 迴圈停止。
- 完成構建 while 迴圈的步驟(可察看構建一個While迴圈 )。
- 在前面板上放置一個Error In 3D.ctl 控制元件。您可以在 Controls Palette » Data Containers » Error In 3D.ctl 找到它。
- 在程式框圖上,確保 Error In 3D.ctl 顯示器位於 while 迴圈之外。
- 刪除停止按鈕和條件端口之間的連接線。
- 在 while 迴圈之外放置一個Simple Error Handler函式( Functions Palette » Dialog & User Interface » Simple Error Handler.vi )。此函式將報告調用時遇到的任何錯誤。
- 通過結構隧道的while迴圈將Error In 3D.ctl 控制元件與Simple Error Handler函式連接起來。
- 將Error In 3D.ctl 控制元件錯誤輸出連接到 while 迴圈的邊界。單擊邊界以創建隧道。
- 繼續將錯誤線從隧道連接到 while 迴圈的相反邊界,並進入Simple Error Handler函式的輸入。
- 在 while 迴圈內放置一個Unbundle By Name函式( Functions Palette » Programming » Cluster, Class, & Variant » Unbundle by Name )。您可以使用此函式來分隔錯誤資料線的布林部分。
- 將錯誤線連接到 Unbundle by Name 功能。
- 左鍵單擊 Unbundle 功能並選擇狀態(Status)以顯示錯誤資料的布林部分。
- 在 while 迴圈中放置一個or函式(Functions Palette » Programming » Boolean » Or)。
- 連接資料線。
- 連接Stop按鈕控制元件和Unbundle by Name狀態輸出至Or函式。
- 將Or函式的輸出連接到條件接線端。
如果按下停止按鈕或在 while 迴圈內檢測到錯誤,下面的程式片段將停止執行 while 迴圈。
注意:此圖像是 LabVIEW 程式片段,其中包含可在項目中重複使用的 LabVIEW 程式碼。要使用此片段,請右鍵單擊圖像,將其保存到您的電腦,然後將該檔案拖到您的 LabVIEW 程式框圖上。
設定停止條件衍生說明:其他停止條件注意事項
上述情況(用戶輸入
或錯誤停止)是設定條件停止輸入的一個非常常見的用例。但這並不是增加停止條件複雜性的唯一方法:
- 使用 Or、Compound Arithmetic 或其他布林比較函式比較錯誤簇時,您可以將誤差束直接連接到算術函式中。錯誤狀態 Boolean 將自動被解析出來。
- 這可能不適用於所有版本的 LabVIEW。設定停止條件 部分中描述的過程適用於所有版本的 LabVIEW,並遵循正確的過程。