システムの品質と拡張性を確保するため、LabVIEWではお勧めのテンプレートやサンプルプロジェクトが用意されています。それらのテンプレートやサンプルプロジェクトはすべてオープンソースで、コードの意味と機能の追加や修正のベストプラクティスについてわかりやすく解説する詳細なドキュメントが含まれています。推奨のアーキテクチャを示すだけでなく、コードの文書化や整理におけるベストプラクティスについても解説します。
LabVIEWでは、既存のテンプレートやサンプルプロジェクトから新しいプロジェクトを作成することができます。
テンプレートは、ほとんどのLabVIEWアプリケーションの基本構成要素となるものです。実世界のシステムを構築するために、1つまたは複数のテンプレートを組み合わせて使用する場合もあります。これらのテンプレートは、優れた設計パターンを利用した一般的なアーキテクチャに基づいており、修正を加えてシステムを構築できます。
簡易ステートマシン このテンプレートを使用すると、コードセクションの実行シーケンスの定義が容易になります。この実装方式はムーアマシンと呼ばれることもあります。現在の状態で行われた判断に基づいて次の状態が決まるという方式です。このテンプレートは、アプリケーションの構造に大幅な変更を加えなくても、新しいコードセクションの追加や削除、コードセクションの実行順の変更などが簡単にできる設計となっています。 | |
キューメッセージハンドラ このテンプレートを使用すると、並列で実行しデータをやり取りする複数のコードセクションの扱いが容易になります。各コードセクションは、データ収集などのプロセスを表し、ステートマシンと同様に設計されます。これらのコンポーネントを分離することで、応答性の高いユーザインタフェースを実現できます。また、他のメッセージの実行中にデータを連続して記録することも可能となります。 | |
アクターフレームワーク このテンプレートでは、互いに通信する必要のある複数の独立したタスクを含むLabVIEWアプリケーションを作成することができます。このフレームワークは、機能の実行やプロセスの追加の際に、コードの大幅な重複が起こる可能性のある一般的な開発シナリオに対応するよう設計されています。アクターフレームワークは、LabVIEWクラスを多用する高度なテンプレートです。 |
デスクトップサンプルプロジェクトは、1つまたは複数のテンプレートを実際のアプリケーションで使用する方法を示すものです。これらのプロジェクトは、応答性の高いユーザインタフェース、非同期解析、データロギング、ユーザダイアログ、エラー処理、複数の独立したタスクなど、デスクトップベースの計測アプリケーションで一般に求められる要件を満たしています。
有限測定 「有限測定」サンプルプロジェクトは、計測を1回収集し、その計測をファイルにエクスポートするオプションを提供します。このサンプルプロジェクトは、ユーザの要求に応答して、計測を構成および実行し*、解析を行い、結果を表示して、データをディスクに記録することのできるステートマシンとして開発されています。 *DAQmx 9.5.5以降では、このサンプルプロジェクトの2つ目のバージョンがインストールされます。このサンプルプロジェクトでは、DAQmx APIを使用して、ハードウェアI/Oによって実際の計測を構成および収集します。 | |
連続測定とロギング 「連続測定とロギング」サンプルプロジェクトは、連続的に測定を収集してディスクに記録します。5つのループを並列実行して、さまざまなタスクを同時に実行でき、その間にユーザの要求に応答して、その要求をエンキューすることができます。その5つのループとは、イベント処理、UIメッセージ、収集*、ロギング、表示です。 *DAQmx 9.5.5以降では、このサンプルプロジェクトの2つ目のバージョンがインストールされます。このサンプルプロジェクトでは、DAQmx APIを使用して、ハードウェアI/Oによって実際の計測を構成および収集します。 | |
フィードバック蒸発冷却器 「フィードバック蒸発冷却器」サンプルプロジェクトは、「アクターフレームワーク」テンプレートを使用して構築されており、ホットスワップ可能なハードウェア、コントローラ、ユーザインタフェースで蒸発冷却器を実装します。このサンプルプロジェクトは、アクターと呼ばれる個別に実行する複数のVIから構成され、それぞれがユーザインタフェース、冷却器、ファン、水位を表します。各アクターは、関連するコンポーネントとの間でコマンドに似たメッセージを送受信します。このアーキテクチャは、アクターをスタティックまたはダイナミックに追加して拡張できます。 | |
監視制御/データ収集システム メモ: このサンプルプロジェクトを利用するにはLabVIEW DSCモジュールが必要です。 このサンプルプロジェクトは、NI CompactRIOおよびプログラマブルロジックコントローラ (PLC) ベースのシミュレーションシステムで、監視制御/データ収集 (SCADA) を実装するものです。サーバ/ヒューマンマシンインタフェース (HMI) クライアントアーキテクチャを採用しているため、LabVIEWデータロギング/監視制御 (DSC) モジュールを利用して、サーバアプリケーションで他社製品との接続、履歴データ、アラームロギングを実現できます。HMIクライアントアプリケーションでは、ユーザインタフェースへのイベントベースアップデートやサブパネルのダイナミックローディングを組み込むことで、効率的で応答性の高いユーザインタフェースアーキテクチャを実現します。 |
組み込みシステムには、一般に信頼性と確定性に優れた性能を実現するよう設計されたアーキテクチャが必要です。そのため多くの組み込みアプリケーションでは、システムのステータス監視、エラー処理、ウォッチドッグタイマ専用のプロセスが必要となります。CompactRIOおよびPXI RT DAQ用のLabVIEWサンプルプロジェクトは、さまざまな組み込み制御/監視システムで使用できる推奨のソフトウェアアーキテクチャを提供することで、そのようなニーズに応えるベストプラクティスを示します。また、データ通信、ネットワーク接続、制御ルーチン、データロギングなどのベストプラクティスも含まれています。
LabVIEW内でこれらのテンプレートを表示するには、LabVIEW Real-TimeモジュールまたはLabVIEW FPGAモジュール (あるいはその両方) がインストールされている必要があります。
CompactRIOを使用したLabVIEW FPGA制御 このサンプルプロジェクトは、高性能な制御やハードウェア側での安全ロジックが必要なアプリケーション向けに開発されたものです。制御アルゴリズムをソフトウェアで実行するのではなく、FPGAファブリックに制御を組み込んで、制御ループが最小限のジッタで10 kHzを超えるレートを実現できるようにします。また、FPGA VIには、致命的なエラーやリアルタイムソフトウェア障害の発生時に出力を即座に安全な状態に戻す安全ロジックが搭載されていますので、最大限の信頼性が実現できます。 | |
CompactRIOを使用したLabVIEW Real-Time制御 (RIOスキャンインタフェース) このサンプルプロジェクトは、100 Hz以下のシングルポイントI/Oレートを使用し、確定性に優れた性能を必要とする制御アプリケーション向けに開発されたものです。FPGAハードウェアは使用しませんが、確定性に優れたリアルタイムプロセッサを利用して制御を行います。RIOスキャンインタフェース (RSI) を使用して、リアルタイムアプリケーション内で変数としてI/Oデータにアクセスします。 | |
CompactRIOを使用したLabVIEW FPGA波形集録/ロギング このサンプルプロジェクトは、カスタマイズ可能なFPGAベースの高速アナログ収集機能を搭載し、トリガ条件が満たされると収集したデータをリアルタイムシステム上のディスクに記録します。ヘッドレスでの実行が可能なほか、付属されているオプションのユーザインタフェースに接続することもできます。 | |
LabVIEW Real-Timeシーケンサ (CompactRIO) このサンプルプロジェクトでは、LabVIEW Real-Timeを使用した制御アプリケーションで、ユーザ定義のシーケンスやレシピを実行するシーケンスエンジンを実装します。Windowsベースのユーザインタフェースでは、ユーザ定義のシーケンスを生成し、それをCompactRIOにデプロイして、シーケンスエンジンのステータスを監視します。ユーザインタフェースでは、サブパネルのダイナミックローディングを使用することで、効率的で応答性の高いユーザインタフェースアーキテクチャを実現します。 |
「LabVIEW Real-Time (NI-DAQmx)」サンプルプロジェクトは、リアルタイム制御や波形集録/ロギングを行うアプリケーション向けに開発されたものです。
LabVIEW Real-Time制御 (NI-DAQmx) ソフトウェアによるプラントの確定的制御を実装します。このサンプルプロジェクトでは、NI-DAQmxを使用します。このサンプルプロジェクトは、NI Real-Time PXIコントローラとNI DAQを使用して、DAQ制御I/Oの確定性に優れた性能を必要とする制御アプリケーション向けに開発されています。 | |
LabVIEW Real-Time波形集録/ロギング (NI-DAQmx) 連続波形データを収集してディスクに記録します。このサンプルプロジェクトでは、NI-DAQmxを使用します。このサンプルプロジェクトは、データ収集機能を搭載し、トリガ条件が満たされると収集したデータをリアルタイムシステム上のディスクに記録します。ヘッドレスでの実行が可能なほか、付属されているオプションのユーザインタフェースに接続することもできます。NI DAQを搭載したNI Real-Time PXIコントローラまたは単体のNI CompactDAQを使用するアプリケーションに適しています。 |
上級ユーザは、付属のテンプレート/サンプルプロジェクトのリストに独自のものを追加できますので、「プロジェクトを作成」ダイアログで推奨のテンプレートを開発チーム全体で簡単に共有、配布することができます。
カスタムテンプレートやサンプルプロジェクト用の「プロジェクトを作成」ダイアログは、その内容を変更して、カスタムコード生成用のスクリプトを作成できるカスタムテンプレートなどの追加の項目を含めることができます。
テンプレートとサンプルプロジェクトを使用するには、LabVIEWのさまざまなスキルやプログラミング概念が求められます。各プロジェクトに付属のドキュメントには、ユーザが理解しておくべき概念の一覧が記載されています。さらに、ブロックダイアグラムに関するドキュメントでは、コードを追加/修正する個所が青字で明記されています。