下載詳細說明 PDF 檔
若 LabVIEW 無法執行 VI,則會將 Run 箭頭轉為破碎圖示以提醒使用者,Error List 視窗亦將列出 VI 錯誤的原因。第二種錯誤往往較難以發現,但 LabVIEW 具備多種輔助工具,可讓使用者更輕鬆觀看程式碼執行時的情況。
修復破碎的 VI

若 VI 無法執行,則為破碎或無法執行的 VI。若使用者所建立或編輯的 VI 發生錯誤,將顯示破碎的 Run 箭頭按鈕。
一般情況下,此代表必要輸入尚未接線,或接線已中斷。可按下破碎的 Run 箭頭按鈕即可觀看 Error List 視窗。 Error List 視窗將列出錯誤並說明問題。使用者可對錯誤連點滑鼠 2 次,即可直接前往錯誤處。
回到頂端
尋找 VI 破碎的原因
警示功能並無法阻止使用者執行 VI。此功能僅協助使用者避免 VI 的可能問題。當然任何錯誤均可中斷 VI。在確實執行 VI 之前,必須解決所有錯誤。點選破碎的 Run 按鈕,或點選 View » Error List 即可了解 VI 錯誤的原因。Error List 視窗將列出所有錯誤。Items with Errors 區塊將列出記憶體中的所有項目名稱,如發生錯誤的 VI 與專案函式庫。若有超過 2 個以上的項目為相同名稱,則此區塊將顯示各個項目的特定應用實例。
Errors and Warnings 區塊將將針對使用者於 Items with Errors 區塊中所選的 VI,列出其錯誤與警示。 Details 區塊則說明錯誤,另有特定條件下的錯誤修正建議。點選 Help 按鈕即可於
LabVIEW Help 中顯示相關主題,以詳細說明錯誤並可逐步修正。
點選 Show Error 按鈕,或對錯誤說明連按滑鼠 2 次,即可反白強調程式圖或人機介面的錯誤所在。

圖 1. Error List 對話框範例
常見的 VI 破碎原因
下列為使用者編輯 VI 卻發生錯誤的常見原因:
- 由於資料形態不符或有未連接的端點,程式圖將因此產生斷線。可參閱 LabVIEW Help 中的 Correcting Broken Wires,以進一步了解連接斷線的資訊。
- 必要的程式圖端點尚未接線。可參閱 LabVIEW Help 中的 Using Wires to Link Block Diagram Objects,以進一步設定必要的輸出與輸入。
- subVI 發生錯誤;或當使用者將 subVI 圖示置於 VI 程式圖之後,卻又編輯了接頭面板。
修復錯誤動作
若 VI 可執行卻產生錯誤結果,就可能是程式碼發生功能錯誤。LabVIEW 多項工具可協助分析 VI 並未正確運作之處。
回到頂端
程式圖工具列

當執行 VI 時,出現在程式圖工具列上的按鈕,即可用於 VI 除錯。下列工具列即出現於程式圖上。

當執行 VI 時,可點選 Highlight Execution 按鈕以顯示程式圖的執行動畫。另可注意程式圖的資料流動情況。同樣按鈕再按 1 次,即可停止此功能。
此執行作業的強調功能,即透過連線之間移動的泡泡 (Bubble),顯示在節點之間的資料移動情況。另可搭配單步進 (Single-stepping) 功能,以觀看資料數值是如何穿過 VI 並於節點之間移動。
注意: Highlight Execution 可能大幅降低 VI 執行的速度。

圖 2. Highlight Execution 使用中的範例

點選 Retain Wire Values 按鈕,即可於執行流程的各個點中儲存接線數值,因此若於接線上放置探針 (Probe),可迅速取得「穿過接線」的最新資料數值。若要取得接線數值,必須成功執行 VI 至少 1 次。

點選 Step Into 按鈕即可開啟節點並暫停。當再次點選 Step Into 按鈕,隨即恢復執行第一次作業,並將暫停 subVI 或架構的下一次作業。另可按下 <Ctrl> 與鍵盤的向下箭頭。Single-stepping 將逐一完成 VI 的各個節點。當準備執行完畢,各個解點均將開始閃爍。

點選 Step Over 按鈕以執行節點,並可暫停下一個節點。另可按下 <Ctrl> 與鍵盤的向右箭頭。若逐一完成各個節點,則不需 Single-stepping 亦可執行節點。

點選 Step Out 按鈕,可結束目前節點的執行狀態並暫停。當 VI 結束執行,亦無法點選 Step Out 按鈕。另可按下 <Ctrl> 與鍵盤的向上箭頭。在結束節點之後,即可完成節點的 Single-stepping,再瀏覽至下一個節點。

若 VI 產生警示,且使用者在 Error List 視窗中勾選 Show Warnings,隨即產生 Warning 按鈕。警示代表程式圖發生潛在問題,但並不會中斷 VI 的執行。

在 VI 執行時,Probe 工具可檢查接線上的中間值。若目前使用多項作業的複雜程式圖,且任何 1 組作業均可能回傳錯誤資料時,即可使用 Probe 工具。若 Probe 工具搭配前述的執行強調 (Execution highlighting)、單步進 (Single-stepping)、斷點 (Breakpoint) 功能,即可找出錯誤資料。若找出資料,則 Probe 工具將於 Execution Highlighting 與 Single-stepping 期間,或於暫停斷點期間,立刻在
Probe Watch 視窗 中更新並顯示資料。若因單步進或斷點而暫停執行節點,則可探測剛執行過的接線,以找出穿過該接線的值。
回到頂端
處理 LabVIEW 中的錯誤
不論使用者有多相信自己所建立的 VI,仍往往無法預測錯誤發生。但由於尚無錯誤檢查機制,使用者僅能發現 VI 無法正常運作。而錯誤檢查功能可讓使用者得知錯誤原因。
自動處理錯誤
所有錯誤均有相對應的數字代碼與訊息。
依預設值,當 VI 暫停執行時,LabVIEW 將自動處理錯誤、強調顯示發生錯誤的 subVI 或函式,並蹦現錯誤對話框。
若要對現有 VI 停用自動錯誤處理功能,可點選 File » VI Properties ,再點選 Category 下拉式功能表上的 Execution。若要停用空白或新 VI 的自動錯誤處理功能,可點選 Tools » Options ,再點選 Category 清單上的 Block Diagram 。若要停用 VI 內 subVI 或函式的自動錯誤處理功能,可將其 error out 參數接至其他 subVI/函式的 error in 參數,或可接至 error out 指示元。
手動處理錯誤
使用者亦可選擇其他錯誤處理方式。若程式圖上的 I/O VI 暫停,則使用者可能不希望整個應用停止,並能顯示錯誤對話框。另可讓 VI 在特定時間後重新嘗試啟動。而這時可透過 LabVIEW 的程式圖,設定 VI 的錯誤處理功能。
可使用 Dialog & User Interface 面板上的 LabVIEW 的錯誤處理 VI 與函式,讓大多數 VI/函式 的 Error in 與 Error out 參數去管理錯誤即可。舉例來說,若 LabVIEW 發生錯誤,則使用者可透過不同的對話框顯示錯誤訊息。使用錯誤處理功能搭配除錯工具,即可尋找並管理錯誤。
當執行任何輸出/輸入 (I/O) 時,亦應考量可能的錯誤。大多數的 I/O 均可回傳錯誤訊息。這些訊息包含 VI 的錯誤檢查功能 (特別是 I/O 作業,如檔案、序列、儀控、通訊、資料擷取),並可正確處理錯誤。
使用 LabVIEW 的錯誤處理 VI、函式、參數,以管理錯誤。另可透過程式設計進而修復錯誤,並將 subVI/函式的 error out 輸出,接至 Clear Errors VI 的 error in 輸入,即可清除這些錯誤。使用錯誤處理功能搭配除錯工具,即可尋找並管理錯誤。
回到頂端
錯誤叢集
透過錯誤叢集的控制元與指示元,即可於 subVI 中建立 Error 輸出與輸入。
Error in 與 Error out 叢集將提供下列資訊要件:
- status 屬於 Boolean 值,可於錯誤發生時回報 TRUE。
- code 則為 32 位元具正負號的整數,即以數字呈現錯誤。若是不為零的錯誤代碼搭配 FALSE 狀態,則屬於警示而非錯誤。
- source 為字串,可表示錯誤發生的位置。
LabVIEW 中的錯誤處理,則是跟隨資料流模型。如同資料數值可流經 VI,錯誤資訊亦可。將錯誤資訊從 VI 起頭接至末端。而 VI 末端可納入錯誤處理 VI (如 Simple Error Handler.vi),以了解 VI 是否運作無誤。另可使用各個 VI 中的 error in 與 error out 叢集,以將錯誤資訊傳送過 VI。
當 VI 執行時,LabVIEW 將於各個執行節點測試錯誤。若 LabVIEW 並未發現錯誤,則節點將正常執行。若 LabVIEW 確實測得錯誤,則節點會將錯誤傳送至下個節點,而不會執行該部分的程式碼。下個節點亦將執行相同動作。直到執行流程的末端,LabVIEW 即回報錯誤。
了解錯誤
當錯誤發生時,可對叢集邊框按下滑鼠右鍵,再點選 Explain Error 即可開啟 Explain Error 對話框。Explain Error 對話框將提供該錯誤的相關資訊。若 VI 發生警示而非錯誤,則按下滑鼠右鍵所出現的功能表,將提供 Explain Warning 選項。
另可點選 Help » Explain Error 功能表,即可開啟 Explain Error 對話框。
回到頂端
使用 While Loop 搭配錯誤處理功能
另透過條件端點,可將錯誤叢集接至 While Loop 或 For Loop 的條件端點,即可停止迴圈循環。若將錯誤叢集接至條件端點,則僅有錯誤叢集的 True 或 False 狀態參數值,會傳送至端點。若發生錯誤,則迴圈隨即停止。在具備條件端點的 For Loop 中,亦可將單一數值接至計數端點,或自動檢索輸入陣列,以設定迴圈循環的最大值。For Loop 將不斷執行,直到錯誤發生或完成特定循環值。
若將錯誤叢集接至條件端點,則功能表上的 Stop if True 與 Continue if True,將更改為 Stop on Error 與 Continue while Error。
圖 3 則同時使用了錯誤叢集與停止按鈕,以決定停止迴圈的時機。因為使用者可依需求而停止迴圈,也可依錯誤發生而停止迴圈,所以此為停止大多數迴圈的最佳方式。

圖 3. 停止 While Loop
回到頂端