LabVIEWにおけるエラー処理

本ページの内容

作成したVIにどれほど自信があっても、発生しうる全ての問題を予測することはできません。エラーの有無をチェックする仕組みが用意されていないと、VIが正しく機能しないことのみ判明している、という状態に陥ります。エラーチェック機能があれば、エラーが発生した場所と原因を突き止めることができます。

自動エラー処理

各エラーには数値コードと対応するエラーメッセージがあります。

デフォルトでは、実行を中断し、エラーが発生したサブVIや関数をハイライトしてエラーダイアログボックスを表示することにより、VIの実行時にエラーを自動的に処理します。

現在のVIで自動エラー処理機能を無効にするには、ファイル→VIプロパティを選択し、カテゴリプルダウンメニューから実行を選択します。新たに作成するブランクVIの自動エラー処理を無効にするには、ツール→オプションを選択し、カテゴリリストからブロックダイアグラムを選択します。VIの中のサブVIや関数の自動エラー処理を無効にするには、エラー出力パラメータを別のサブVIまたは関数のエラー入力パラメータまたはエラー出力表示器に配線します。

手動エラー処理

ただし、他のエラー処理方法を選択することもできます。例えば、ブロックダイアグラム内のI/O VIがタイムアウトになっても、アプリケーション全体を停止せず、またエラーダイアログボックスが表示されないよう設定こともできます。また、同じVIを一定時間リトライさせることもできます。LabVIEWでは、VIのブロックダイアグラムにこのようなエラー処理を含めることができます。

エラーを処理するには、ダイアログ&ユーザインタフェースパレットにあるLabVIEWエラー処理VIと関数、また多くのVIが持つエラー入力エラー出力パラメータを使用します。例えば、LabVIEWでエラーが発生したときに、エラーメッセージをさまざまなタイプのダイアログボックスに表示させることができます。エラー処理とデバッグツールを使用して、エラーを検出、処理します。

どのような入出力(I/O)動作を行う場合も、エラーが発生する可能性を考慮する必要があります。通常、I/O関数はエラー情報を返します。特にI/O処理(ファイル、シリアル、計測器、DAQ、および通信)を行うVIでは、内部にエラーチェック機能を組み込み、エラーを正しく処理するメカニズムを提供する必要があります。

エラーへの対応には、LabVIEWエラー処理VI、関数、およびパラメータを使用します。例えば、LabVIEWでエラーが発生したときに、エラーメッセージをダイアログボックスに表示させることができます。あるいは、サブVIまたは関数のエラー出力出力を「エラークリア」VIのエラー入力入力に配線すれば、エラーをプログラム的に修正してからエラーを消去することができます。エラー処理とデバッグツールを使用して、エラーを検出、処理します。

エラークラスタ

LabVIEWのエラー処理は、データフローモデルに基づいて実行されます。データ値がVI内を移動するのと同様に、エラー情報もVI内を移動できます。エラー情報はVIの最初から最後まで配線します。エラーが発生せずにVIが実行されたかどうかを調べるには、VIの最後に「シンプルエラー処理」VIなどのエラー処理VIを組み込みます。作成または使用する全てのVIでエラー入力/エラー出力クラスタを使用して、エラー情報をVI全体に渡すようにします。

VIの実行時、LabVIEWは各実行ノードでエラーがないかをテストします。エラーが検出されなかった場合、ノードは正常に実行されます。エラーが検出された場合、コード部分は実行されずにノードは次のノードにエラーを渡します。次のノードは同じ動作を繰り返します。実行フローの最後にエラーが報告されます。

エラークラスタ制御器や表示器は、サブVI内のエラー入力およびエラー出力を作成するために使用します。

エラー入力およびエラー出力クラスタには、以下の情報が含まれています。

  • ステータスはブール値であり、エラーが発生した場合にTRUEとなります。
  • コードはエラーを数値で識別するための符号付き32ビット整数です。ステータスがFALSEで、エラーコードが0以外の場合は、エラーでなく警告であることを意味します。
  • ソースはエラーが発生した場所を示す文字列です。

エラーの説明

エラーが発生した場合は、クラスタの枠を右クリックしてショートカットメニューから「エラーの説明」を選択すると、「エラーの説明」ダイアログボックスが開きます。「エラーの説明」ダイアログボックスには、エラーに関する情報が表示されます。ショートカットメニューには、VIでエラーではなく警告が発せられた場合の「警告の説明」オプションも含まれています。

また、エラーの説明ダイアログボックスにはヘルプ→エラーの説明メニューからアクセスすることもできます。

Whileループを使用したエラー処理

エラークラスタをWhileループまたはForループの条件端子に配線すると、ループの反復を停止させることができます。エラークラスタを条件端子に配線すると、エラークラスタのステータスパラメータのTrueまたはFalse値のみが端子に渡されます。エラーが発生すると、ループは停止します。条件端子付きのForループでは、値をカウント端子に配線するか、入力配列を自動指標付けして、最大反復回数を設定することも必要です。Forループは、エラーが発生するまで、あるいは指定回数の実行が完了するまで繰り返し実行します。

エラークラスタを条件端子に配線すると、ショートカットメニューの「TRUEの場合停止」と「TRUEの場合継続」がそれぞれ「エラーの場合停止」と「エラーの場合継続」に変わります。

図1では、エラークラスタと停止ボタンをともに使用してループを停止するタイミングを指定します。ループはプログラム的に停止させるか、何か異常が発生してエラーが発せられたかのいずれか早いときに、ほとんどのループを停止させる推奨方法です。

図1. Whileループを停止させる

新しい方法でLabVIEWの基礎を学習する

新しい対話形式の方法で、LabVIEWの概念を学習しましょう。

学習を続ける

前へ実行ストラクチャ
LabVIEWでサンプルを検索次へ