錯誤叢集 (Error Cluster)

無論你對於自己製作的VI 多麼有信心,你都無法預測使用者可能遭遇的所有問題。若是沒有檢查錯誤的機制,你只能知道VI 沒有正常運作。錯誤查驗可以告訴你錯誤為何發生,以及發生的位置。當你進行任何類型的I/O 時,都要考慮到錯誤發生的可能性。幾乎所有的I/O 函數都會傳回錯誤資訊。在VI 中加入錯誤查驗(尤其是I/O 作業,例如檔案、序列埠、儀器、資料擷取以及通訊操作),並且提供機制,以便適當處理錯誤。

檢查VI 中的錯誤,可以幫助你找出以下的問題:
不正確地初始化通訊,或是對外部設備寫入不當的資料。
外部設備斷電、故障,或是不當運作。
你更新作業系統軟體,改變了檔案的路徑或VI 或函式庫的功能。

如果你的程式需要與網路連線,或是與儀器連線。有一些特殊狀況總是不能事先預測,比如說:網路斷線、海底電纜破壞,GPIB線鬆脫…等。一個比較好的程式應該要具備容錯的能力,當外在突發狀況發生時,程式產生相對應的動作等等。這個部份在撰寫較有系統的大型程式上面需要考慮。但是對於實驗室使用的小程式,因為使短時間使用,而且程式執行的過程中,開發者都在儀器附近,所以程式的容錯能力就補教不是那麼需要。但是還要要建立相關的觀念。

在預設情況下,LabVIEW 會自動處理VI 執行時發生的任何錯誤,也就是暫停執行,標示出發生錯誤的subVI 或函數,並且顯示一個對話方塊。你可以選擇其它的錯誤處理方式。舉例來說,如果程式區中的I/O VI 等候時間已到,你可能不希望整個程式停下來。你也可能希望VI 重試一段時間。在LabVIEW 中,你可以在VI 的程式區中進行錯誤處理的決定。VI 和函數使用兩種方法之一來傳回錯誤-使用數字錯誤代碼,或是錯誤叢集。一般來說,函數使用數字錯誤代碼,VI 則使用錯誤叢集,通常具備錯誤輸出埠及輸入埠。

在LabVIEW 中,資料處理乃遵循資料流模式。正如資料流經VI 一樣,錯誤資訊也可以。將錯誤資訊從VI 的開始連接到結束處。在VI結束的位置加入錯誤處理器,以判斷VI 執行是否正確。在你使用或建立的每一個VI 中使用錯誤輸入及輸出叢集,以便將錯誤資訊傳經VI。

當VI 執行時,LabVIEW 會在每個執行節點上測試是否有錯誤。如果LabVIEW 沒有發現任何錯誤,節點就會正常執行。如果LabVIEW 發現錯誤,該節點即將錯誤傳給下一個節點,但是不執行。下一個節點也作同樣的動作,餘此類推。使用下一個範例Simple Error Handler VI,在執行流結束之處處理錯誤。Simple Error Handler VI 位於Functions»All Functions»Time & Dialog 面板中。將錯誤叢集連接至error in 輸入埠。

![](upload://5VaivOQrb4zmaXnXFUZ2BddB2Sp.png)


這個錯誤叢集(Error Cluster)的位置在人機介面的「 Controls»Array & Cluster 」。

錯誤叢集包含的的資訊有三種:布林、數字、字串。

status 是個布林值,如果發生錯誤,即回報TRUE (真)。大部份接受布林值資料的VI、函數以及結構也會認得這個參數。舉例來說,你可以將一個錯誤叢集連接至Stop、Quit LabVIEW 或是Select 函數的布林輸入埠。如果發生錯誤,錯誤叢集就會傳送TRUE 值給函數。
code 是一個32 位元有正負記號整數,以數字的方式來辨識錯誤。非零代碼加上status 的值為FALSE,代表警訊,而非致命錯誤。
source 是一個字串,用於辨識錯誤發生的位置。

使用錯誤叢集控制器及指示器,在subVI 中建立錯誤輸入埠及輸出埠。

![](upload://slbR2jmJiyn6qvseRl33ysD0UHi.png)


在預設情況下,LabVIEW 會自動處理VI 執行時發生的任何錯誤,也就是暫停執行,標示出發生錯誤的subVI 或函數,並且顯示一個對話方塊。你可以選擇其它的錯誤處理方式。舉例來說,如果程式區中的I/O VI 等候時間已到,你可能不希望整個程式停下來。你也可能希望VI 重試一段時間。在LabVIEW 中,你可以在VI 的程式區中進行錯誤處理的決定。VI 和函數使用兩種方法之一來傳回錯誤-使用數字錯誤代碼,或是錯誤叢集。一般來說,函數使用數字錯誤代碼,VI 則使用錯誤叢集,通常具備錯誤輸出埠及輸入埠。

在LabVIEW 中,資料處理乃遵循資料流模式。正如資料流經VI 一樣,錯誤資訊也可以。將錯誤資訊從VI 的開始連接到結束處。在VI結束的位置加入錯誤處理器,以判斷VI 執行是否正確。在你使用或建立的每一個VI 中使用錯誤輸入及輸出叢集,以便將錯誤資訊傳經VI。

當VI 執行時,LabVIEW 會在每個執行節點上測試是否有錯誤。如果LabVIEW 沒有發現任何錯誤,節點就會正常執行。如果LabVIEW 發現錯誤,該節點即將錯誤傳給下一個節點,但是不執行。下一個節點也作同樣的動作,餘此類推。使用下一個範例Simple Error Handler VI,在執行流結束之處處理錯誤。Simple Error Handler VI 位於Functions»All Functions»Time & Dialog 面板中。將錯誤叢集連接至error in 輸入埠。

![](upload://qKkZycbri3kYncfUONXvrk0jsiy.png)


![](upload://o5BIBzuqR4WyqdwEg7d6eBpoIih.png)


![](upload://diXEsJj5PeyuYcqcu9DOZ7i7NPY.png)


![](upload://2QHm0duVPIBBLI5aNYrqBGv4s6m.png)


![](upload://7c3w3nLlrjfoqED4uwF4dy2AOQZ.png)


你可以將錯誤叢集連接至While Loop 的條件接頭(conditional terminal),以停止While Loop 的執行。當你將錯誤叢集連接至條件接頭時,只有錯誤叢集的status 參數的TRUE 或FALSE 值會傳送到接頭。當錯誤發生時,While Loop 就會停止。

當錯誤叢集被連接至條件接頭時,捷徑選單中的Stop if True 及Continue if True 選項會改變為Stop on Error 及Continue while Error。

![](upload://f3ciU49fJ5yefYxP5yZ3Lj7CjGs.png)




1個讚