VIの編集時にVIが壊れる一般的な理由を以下にリストします。
• ブロックダイアグラムに、データタイプの不一致や未接続配線による 壊れたワイヤが含まれている。
不良ワイヤを修正する詳細については、第5章「ブロックダイアグ ラムを作成する」の「不良ワイヤを修正する」のセクションを参照し てください。
• 必要なブロックダイアグラムの端子が配線されていない。
必要な入力および出力を設定する詳細については、第5章「ブロッ クダイアグラムを作成する」の「ブロックダイアグラムオブジェクト をワイヤで接続する」セクションを参照してください。
• サブVIが壊れているか、あるいはVIのブロックダイアグラム上にそ のアイコンを配置した後でそのコネクタペーンを編集した。
サブVIの詳細については、第7章「VIおよびサブVIを作成する」
の「サブVIを作成する」のセクションを参照してください。
デバッグ方法
VIが壊れていないにもかかわらず予期したデータが得られない場合は、
複数のテクニックを使用してVIやブロックダイアグラムのデータフロー の問題を識別して修正します。
実行のハイライト
ブロックダイアグラムの実行を動画表示するには、以下に示す実行のハイ ライトボタンをクリックします。
実行のハイライトを有効にすると、ブロックダイアグラム上のノードから ノードへワイヤに沿ってバブルが移動し、データが移動する様子を示しま す。この機能をシングルステップとともに使用すると、VI全体でノード からノードにデータ値がどのように移動するかを調べることができます。
メモ 実行のハイライトを使用すると、VIの実行速度が大幅に低下します。
エラー出力クラスタがエラーをレポートすると、エラー値が赤でエラー出 力の横に表示されます。エラーがない場合は、エラー出力の横にOKが緑 の枠で表示されます。
エラークラスタの詳細については、この章の「エラークラスタ」のセク ションを参照してください。
シングルステップ
VI実行時にブロックダイアグラム上のVIの各動作を表示するには、VIを シングルステップで実行します。シングルステップボタンは、以下のよう に、シングルステップモードのVIやサブVIでの実行にのみ影響を与えま す。
シングルステップモードに切り替えるには、ブロックダイアグラムのツー ルバーにある飛び越えるまたは中に入るボタンをクリックします。飛び 越える、中に入る、または外に出るボタン上にカーソルを移動すると、そ のボタンをクリックした場合の次のステップを記述したヒントラベルが表 示されます。サブVIでは、シングルステップで実行することも、通常ど おりに実行することも可能です。
実行のハイライトをオンにした状態でVIをシングルステップで実行する 場合は、以下のような実行グリフが現在実行中のサブVIのアイコン上に 表示されます。
プローブツール
一般プローブを使用して、ワイヤを介して渡されたデータを表示します。
一般プローブを使用するには、ワイヤを右クリックしてショートカットメ ニューからカスタムプローブ→一般プローブを選択します。
ブレークポイント
ブロックダイアグラム上のVI、ノード、またはワイヤにブレークポイン トを配置し、その位置で実行を一時停止するには、以下のようにブレーク ポイントツールを使用します。
ワイヤ上にブレークポイントを設定すると、そのワイヤからデータが渡さ れた後で実行が一時停止されます。ブロックダイアグラム上のすべての ノードの実行後に一時停止するようにするには、ブロックダイアグラムに ブレークポイントを設定します。
VIがブレークポイントで一時停止すると、LabVIEWはブロックダイアグ ラムを表示し、ブレークポイントを含むノードまたはワイヤをマーキーで ハイライトします。ブレークポイント上にカーソルを移動すると、ブレー クポイントツールのカーソルの黒色部分が白色で表示されます。
実行中にブレークポイントに到達するとVIは一時停止し、一時停止ボタ ンは赤になります。以下の操作を実行できます。
• シングルステップボタンを使用してシングルステップモードで実行し ます。
• ワイヤにプローブを置いて中間値をチェックします。
• フロントパネルの制御器の値を変更します。
• 一時停止ボタンをクリックして、次のブレークポイントまで、または VIが実行を停止するまで実行を継続します。
LabVIEWはVIとともにブレークポイントを保存しますが、VIを実行す
る場合にのみブレークポイントはアクティブになります。操作→ブレーク ポイントを選択して検索ボタンをクリックすると、すべてのブレークポイ ントを表示することができます。
ブレークポイントの削除は、VI階層全体で、または個々に行えます。
エラーを処理する
作成したVIに信頼性がある場合でも、発生しうるすべての問題を予測す ることはできません。VIが正しく機能しないことが判明した場合、エ ラーをチェックするメカニズムが必要です。エラーチェックとは、エラー が発生した理由と場所を特定する機能です。
どのような入出力(I/O)動作を行う場合も、エラーが発生する可能性を 考慮する必要があります。通常、I/O関数はエラー情報を返します。特に I/O処理(ファイル、シリアル、計測器、データ集録、および通信)を行 うVIでは、内部にエラーチェック機能を組み込み、エラーを正しく処理 するメカニズムを提供する必要があります。
デフォルトでは、実行を中断し、エラーが発生したサブVIや関数をハ イライトしてエラーダイアログボックスを表示することにより、VIの 実行時にエラーを自動的に処理します。
現在のVIの自動エラー処理を無効にするには、ファイル→VIプロパティ を選択し、カテゴリプルダウンメニューから実行を選択します。新規に作 成したブランクVIの自動エラー処理を無効にするには、ツール→オプ ションを選択し、カテゴリリストからブロックダイアグラムを選択しま す。サブVIまたは関数の自動エラー処理をVI内で無効にするには、エ ラー出力パラメータを、他のサブVIまたは関数のエラー入力パラメータ に配線するか、エラー出力表示器に配線します。
エラー処理の方法は、他にもいくつかあります。たとえば、ブロックダイ アグラム内のI/O VIがタイムアウトになっても、アプリケーション全体 を停止せず、またエラーダイアログボックスが表示されないよう設定こと もできます。また、一定時間、VIが実行を再試行するよう設定すること もできます。LabVIEWでは、このようなエラー処理の判断をブロックダ イアグラム内で行えます。
エラーを処理するには、ダイアログ& ユーザインタフェースパレットに
あるLabVIEWエラー処理VIと関数、また多くのVIが持つエラー入力と
エラー出力パラメータを使用します。たとえば、LabVIEWでエラーが発 生した場合に、さまざまな種類のダイアログボックスにエラーメッセージ を表示できます。エラー処理機能をデバッグツールとともに使用して、エ ラーを検出、処理します。
VIと関数は、数値によるエラーコードかエラークラスタのいずれかの方 法でエラーを返します。関数は通常数値によるエラーコードを使用し、VI は通常エラー入出力とともにエラークラスタを使用します。
LabVIEW内のエラー処理はデータフローモデルに従います。データ値が
VI内を移動する場合と同様に、エラー情報もVI内を移動できます。エ ラー情報はVIの最初から最後まで配線します。エラーが発生せずにVIが 実行されたかどうかを調べるには、VIの最後にエラー処理VIを組み込み ます。使用または作成する各VIでエラー入力とエラー出力クラスタを使 用して、VIを介してエラー情報を渡します。エラークラスタはフロース ルーパラメータです。
フロースルーパラメータの詳細については、第5章「ブロックダイアグ ラムを作成する」の「フロースルーパラメータ」のセクションを参照して ください。
VIの実行時、LabVIEWは各実行ノードでエラーがないかをテストしま す。エラーが検出されなかった場合、ノードは正常に実行されます。エ ラーが検出された場合、コード部分は実行されずにノードは次のノードに
エラーを渡します。次のノードは同じ動作を繰り返します。実行フローの 最後にエラーが報告されます。
エラークラスタ
エラー入力およびエラー出力クラスタには以下の情報のコンポーネントが 含まれています。
• ステータスはブール値であり、エラーが発生した場合にTRUE を報告 します。
• コードは符号付き32 ビット整数で、番号でエラーを識別します。ス テータスのFALSEを伴う0以外のエラーコードは、エラーでなく警 告であることを知らせます。
• ソースはエラーが発生した場所を識別する文字列です。
一部のVI、関数、およびブールデータを受け取るストラクチャは、エ ラークラスタも認識します。たとえば、エラークラスタを「停止
(Stop)」、「LabVIEW終了(Quit LabVIEW)」、または「選択(Select)」
関数のブール入力に配線することができます。エラーが発生した場合、エ ラークラスタは関数にTRUEの値を渡します。
クラスタの詳細については、第9章「文字列、配列、およびクラスタを 使用してデータをグループ化する」の「クラスタ」のセクションを参照し てください。
While ループを使用してエラー処理を実行する
エラークラスタをWhileループの条件端子に配線すると、Whileループ の反復を停止できます。エラークラスタを条件端子に配線すると、エラー クラスタのステータスパラメータのTRUEまたはFALSEの値だけが端子 に渡されます。エラーが発生すると、Whileループは停止します。
条件端子にエラークラスタを配線すると、ショートカットメニュー項目の Trueの場合停止およびTrueの場合継続は、エラーの場合停止およびエ ラーの場合継続に変わります。
Whileループの詳細については、第8章「ループとストラクチャ」の
「Whileループ」のセクションを参照してください。
ケースストラクチャをエラー処理に使用する
エラークラスタをケースストラクチャのセレクタ端子に配線すると、ケー スのセレクタラベルは、2つのケース(エラーとエラーなし)が表示さ れ、ケースストラクチャの枠の色がエラーの場合は赤、エラーなしの場合 は緑に変更されます。エラーが発生すると、ケースストラクチャはエラー サブダイアグラムを実行します。