NIリアルタイムシステムを構築するには、開発ソフトウェアとハードウェアプラットフォームを選択する必要があります。各ソフトウェアやハードウェアのオプションに関する詳細情報は、下記のセクションで説明します。このドキュメントを読み進める前に、リアルタイムシステムについての基本的理解およびリアルタイムシステム構築がプロジェクトにもたらす改善点を確認しておくことが大切です。この情報については、「リアルタイムシステムを採用するメリット」を参照してください。
リアルタイムシステムを構築する場合、リアルタイム対応のOSを選択する必要があります。NIのリアルタイム開発ツールでは、必要なすべてのリアルタイムOS (RTOS) ソフトウェアがパッケージに含まれていますので、このコンポーネントを個別に選択する必要はありません。ハードウェアプラットフォームに基づいて、NIはNI Linux Real-Time OSまたはPhar Lap ETS OSを使用します。
リアルタイムプログラムを開発するには、LabVIEWグラフィカルプログラミング、LabWindows™/CVI ANSI C環境 (Phar Lap用)、または任意のLinux互換C/C++開発環境 (NI Linux Real-Time用) のいずれかを使用できます。
図1.LabVIEW使用したグラフィカルプログラミング。
NIがサポートするリアルタイムハードウェアをグラフィカルにプログラミングするには、LabVIEW Real-TimeモジュールとともにLabVIEWを使用する必要があります。LabVIEW Real-Timeでは、1つのツールを使用して、信頼性の高い強固なリアルタイムアプリケーションを作成し、それらのアプリケーションをハードウェアにダウンロードできます。また、アプリケーションをデバックし、実行することもできます。
比例/積分/微分 (PID) 制御機能など、LabVIEWに付属している標準の数学アルゴリズムや信号処理アルゴリズムのほとんどをリアルタイムアプリケーションで使用することができます。 さらに、MATLABノードを使用してリアルタイムシステム上でテキスト数式演算スクリプトを実行したり、オプションのLabVIEW Model Interface Toolkitを使用して、The MathWorks, Inc.のSimulink ®ソフトウェアまたは他のモデリング環境で作成したモデルを統合できます。
LabVIEWでリアルタイムアプリケーションを開発する場合、LabVIEWプロジェクトエクスプローラを使用して、プログラム (VI) を整理したり、プログラムを実行するハードウェアを割り当てたりすることができます。コードは、汎用のWindowsホストコンピュータで開発し、その後で、EthernetまたはUSB接続を経由してリアルタイムハードウェアにデプロイします。
図2.LabVIEWプロジェクトエクスプローラを使用してLabVIEWプログラム (VI) を管理し、リアルタイムハードウェアに割り当てます。
LabVIEWでのリアルタイムプログラムの開発は、PC向けの通常のLabVIEWアプリケーションの開発とほとんど同じです。その他にもリアルタイムシステムに特化した以下のような機能がいくつかあり、Real-Time VIパレットに含まれています。
ハードウェアでLabVIEW Real-Timeコードをテストするには、「実行」の矢印をクリックするだけです。これによりアプリケーションがリアルタイムハードウェアにデプロイされ、アプリケーションの実行が開始されます。リアルタイムプログラムがリアルタイムターゲット上で実行していても、開発コンピュータでは、実行のハイライト、シングルステップ、ブレークポイントなどの標準NIデバッグツールを使用することができます。
リアルタイムプログラムが完成したら、LabVIEWで実行ファイルを作成し、そのファイルをスタートアップアプリケーションとしてリアルタイムハードウェアにダウンロードできます。リアルタイムハードウェアを再起動すると、プログラムは信頼性の高いスタンドアロン方式で自動的に実行されます。
LabVIEWのデータフロープログラミングモデルを使用すると、テキストベースのプログラミング言語のシーケンシャルアーキテクチャを使用する必要がなくなります。実行順序はノード間のデータフローによって決定されるため、複数の処理を並列実行するアプリケーションを簡単に作成できます。また、LabVIEWでは、タイミングループストラクチャによってスレッドの優先順位も容易に割り当てることができます。以下に示すように、構成可能なタイミングソース、期間、優先順位などを各ループに含めることができます。
図3.LabVIEWタイミングループストラクチャを使用して、さまざまなコードセクションの優先順位とプロセッサ割り当てを指定します。
LabVIEW Real-Timeはマルチコア処理をサポートしており、並列したコードセクションをOSの各スレッドに自動的にマッピングするので、スレッドを手動で作成したり、管理したりする必要はありません。デフォルトで、これらのスレッドはリアルタイムハードウェアで使用可能なCPUに自動的に分配されます。
リアルタイムシステムのパフォーマンスと信頼性は、タイミングループを特定のプロセッサコアに手動で割り当てることで向上させることができます。たとえば、プロセッサの1つのコアを1つのタイムクリティカルループの実行専用に割り当てて、別のコア上で実行される優先順位の低いタスクから隔離することができます。
高度なマルチコアデバッグでは、Real-Time Trace Viewerを使用することで、コードの実行を停止したり中断したりすることなく、LabVIEWまたはLabWindows/CVIのリアルタイムプログラムのパフォーマンスを検証できます。リアルタイムコードを極力変更せずに、アプリケーションのパファーマンスをファイルに記録し、そのファイルをホストコンピュータに送り、参照、解析することができます。 トレースツールのビューアでは、マルチスレッドコードの実行が視覚化され、スレッドのスワップ、ミューテックス、メモリ割り当てがハイライトされます。Real-Time Trace Viewerを使用すると、不要な実行特性や見つけることが難しい競合状態を特定することで、アプリケーションのパフォーマンスを最適化することができます。
CやC++を標準として使用している組織では、LabWindows/CVI開発環境または他の開発環境を使用できます。LabWindows/CVI Real-TimeではReal-Time PXIコントローラのみがサポートされますが、NI Linux Real-Timeを使用するターゲット (CompactRIOコントローラなど) はオープンソースのため、開発ツールを自由に選択して利用することができます。 Linux-Real-Time用C/C++ Development Toolsの使用方法の詳細については、『NI Linux Real-Time用C/C++開発スタートアップガイド』を参照してください。
NIリアルタイムハードウェアプラットフォームは、すべて共通のアーキテクチャをベースとしているので、LabVIEW Real-Timeで作成したプログラムは、わずかな変更を加えるだけ、または変更を加えずにさまざまなNIハードウェアで使用できます。特に、各ハードウェアプラットフォームは、プロセッサ、RAM、不揮発性ストレージ、I/Oバスインタフェースなどの市販のコンピュータコンポーネントを搭載しており、一部のハードウェアプラットフォームには、LabVIEW FPGAモジュールを使用してプログラムできる、ユーザによるプログラムが可能なFPGAを搭載しているものもあります。
業界標準のPXIプラットフォームは、統合型タイミング/トリガライン、組込コントローラ、およびプラグインI/Oモジュールを搭載した堅牢なシャーシで構成されています。シリアル、USB、ギガビットイーサネット、GPIBの各ポートもコントローラに組み込まれています。PXIリアルタイムハードウェアは、LabVIEW Real-TimeまたはLabWindows/CVI Real-Timeのいずれかを使用してプログラムすることができます。
Windowsが動作するPXIコントローラを既にお持ちで、これをリアルタイムコントローラに変更したい場合は、LabVIEW Real-Timeデプロイメントライセンスを購入すると、コントローラの変更やデュアルブートシステムのセットアップを行うことができます。
オンラインPXIアドバイザを使用して、コントローラ、シャーシ、I/Oモジュール、ソフトウェアを含む独自のPXIリアルタイムシステムを構成できます。
図4.PXIハードウェアは、リアルタイムプロジェクト向けの堅牢かつ高性能なオプションです。
NI PXIハードウェアは、電子制御ユニットのHIL (hardware-in-the-loop) テストや機械状態監視アプリケーションの振動解析などの高性能リアルタイムシステムに使用される場合があります。Real-Time PXIシステムを使用すると、高精度のI/Oトリガや複数モジュール間の同期を簡素化する上級タイミング/同期ハードウェア機能をアプリケーションで活用できます。
CompactRIOは、リアルタイムプロセッサ、FPGA、およびCシリーズI/Oモジュールを統合したもので、パッケージレベルおよびボードレベルの両方のフォームファクタで提供されます。また、コントローラにはシリアル、USB、Ethernetの各ポートが搭載されています。
オンラインCompactRIOアドバイザを使用して、コントローラ、I/Oモジュール、ソフトウェアを含む独自のCompactRIOシステムを構成できます。
図5.パッケージ化されたCompactRIOコントローラには、リアルタイムアプリケーションに適した、柔軟性が高く堅牢でポータブルなオプションが用意されています。
LabVIEW Real‐Timeまたは任意のC/C++開発ツールを使用して、CompactRIOのプロセッサをプログラムすることができます。また、LabVIEW FPGAを使用して、FPGAコードを開発することもできます。プロセッサ上のIOデータにアクセスするには、NIの最高クラスの計測用プログラミングAPIであるNI-DAQmx API、またはNIスキャンエンジンを使用できます。また、LabVIEW FPGAを使用してFPGAから直接データにアクセスすることもできます。
図6.CompactRIOの異種アーキテクチャには、リアルタイムプロセッサ、再構成可能なFPGA、I/Oが搭載されています。
CompactRIOハードウェアは、機械状態監視、HIL (hardware-in-the-loop) テスト、物理システムテスト、機械制御などの産業用アプリケーションに使用される場合があります。
CompactRIO Single-Boardコントローラ (sbRIO) などのCompactRIOボードレベルコントローラは、パッケージ化されたCompactRIOコントローラと同じアーキテクチャを備えていますが、堅牢なパッケージがなく、フォームファクタが小さくなっています。
図7.CompactRIOボードレベルコントローラはパッケージ化されたCompactRIOコントローラと同じアーキテクチャを備えていますが、フォームファクタが小さくなっています。
柔軟性、信頼性、高性能を必要とする大規模アプリケーションには、CompactRIO Single-BoardコントローラやSystem on Moduleが最適です。