この記事では、NI VeriStandを使用して、分散処理システムと分散I/Oシステムを構築する方法について説明します。NI VeriStandは、より効率的に分散システムの開発を行うための機能を多数備えており、優れたエクスペリエンスを実現します。
航空機や自動車の製造といった工業プロジェクトに使用される制御システムでは、多くの場合、監視、テスト、シミュレーションを実行するために、1つのプロセッサカードとシャーシを用いたシステムよりも高い演算能力とI/O機能が必要になります。このホワイトペーパーでは、大規模なHIL (Hardware-in-the-Loop) テストシステムやリアルタイムテストシステムのニーズに対応できる、拡張性に優れた分散システムを構築する方法について説明します。NI VeriStandは、HILテストシステムなどのリアルタイムテストアプリケーションを構成するための、すぐに使用できるソフトウェア環境です。NI VeriStandの機能を使用すれば、ソフトウェアアーキテクチャの設計やプログラミング、または保守に大きな時間を割くことなく、こうしたシステムを開発することができます。
多くの場合、大規模なシステムは、さまざまなコンポーネントに分割して、各コンポーネントのハードウェアとソフトウェアを個別に実装および処理することができます。演算能力やI/O機能をさらに高めるために、システムの各コンポーネントを異なるハードウェアのセットに実装することができます。
たとえば、航空機では、フラップ、スラット、ラダー、エンジン、補助翼などすべてのコンポーネントに対して、シミュレーションやテストを行わなければなりません。図1のように、このシステムを複数のハードウェアに分割すれば、モジュール式アプローチを活用することができます。
図1: 複数のPXIシステムを使用して、航空機のコンポーネントをシミュレーションすることができます。
NI VeriStandを使用すると、1台または複数台のホストコンピュータ (オペレータ) が、最小構成で、1台または複数台のリアルタイム実行ターゲットと通信することができます。ホストコンピュータと実行ターゲットとの間の通信は、すべてNI VeriStandが処理します。図2は、ホスト1つとターゲット1つのシンプルなトポロジを示しています。
図2:シンプルなトポロジ
ターゲットと通信するホスト側のコンポーネントは、NI VeriStand Gatewayです。この通信は自動的に処理されますが、これが、より大規模なトポロジを理解する上での重要な概念となります。
ターゲットは、NI VeriStandのシステムエクスプローラを使用して、NI VeriStandシステム定義に簡単に追加できます。1つのシステム定義ファイルに含めることができるターゲッの数には上限がありません。各ターゲットは独自のハードウェアとソフトウェア構成を備えており、いずれのターゲットも、1つのゲートウェイでデプロイや情報のやり取りを行うことができます。
図3: 1つのホストから、複数のターゲットをデプロイしたり、情報のやり取りを行ったりすることができます。
ホストコンピュータを追加した場合、追加したホストは別のホストのゲートウェイと通信することにより、同じターゲットトポロジーを使用して通信することができます。
図4: 複数のホストと複数のターゲットから成るトポロジ
このトポロジは、追加したホストがリモートホストとして認識されるように、NI VeriStand Gatewayのアドレスを変更するだけで実現できます。アプリケーションの他の部分へ変更を加える必要はありません。
分散システムを単一システムのように動作させるには、多くの場合、各コンポーネントシステム間でのデータの共有が必要です。言い換えれば、データの共有は、すべてのコンポーネントの連携を可能にする重要な要素です。通常、こうしたシステムを構築するには、リフレクティブメモリインタフェースを使用します。
リアルタイムLAN (ローカルエリアネットワーク) であるリフレクティブメモリネットワークでは、各コンピュータが、共有メモリセットの最新のローカルコピーを常に保持することができます。この特殊なネットワークは、確定性に優れたデータ通信に特化して設計されています。このネットワークでは、分散型シミュレーションや工業用制御アプリケーションで広く要求される緊密なタイミング性能を実現できます。リフレクティブメモリネットワークは、汎用データネットワークの進歩の恩恵を受けていますが、完全に独立したテクノロジを維持しています。このネットワークは、さまざまな要件によって駆動し、確定性、実装の簡素化、ソフトウェアのオーバーヘッドの少なさが重要な要素となるアプリケーションに対応しています。1
リフレクティブメモリを利用することで、NI VeriStandでは複数のターゲット間でデータを共有することができます。それと同時に、システム全体の性能と確定性の要件を満たすことが可能になります。また、リフレクティブメモリを使用すれば、シミュレーションモデルを分割し、さまざまなターゲットシステム上で同時にシミュレーションを実行できるようになります。入力値と出力値は、リフレクティブメモリ上の個々のシステム間で共有されます。GE Intelligent Platforms社のリフレクティブメモリボードは、NI VeriStand 2010以降でネイティブにサポートされています。NI VeriStandの多くのコンポーネントでは、マルチターゲットシステムのシームレスな開発を可能にするために、リフレクティブメモリを自動的に使用することができます。
たとえば、刺激 (テスト) プロファイルを、ターゲットB上のデータを参照するターゲットA上で実行するように構成することが可能です。また、モデル出力を別のターゲットのモデル入力にマッピングするなど、あるターゲットから別のターゲットにデータをマッピングすることもできます。この処理は、ユーザが明示的な構成を行わなくても自動的に実行されます。
リフレクティブメモリカードを使用したシステムの例を図5に示します。
図5: リフレクティブメモリを利用した複数シャーシ
システムを設計する際には、タイミングと同期に関する要件について検討することが重要です。 分散システムを構成するハードウェア間の同期がとれていないと、入力と出力を同時にサンプリングすることはできません。また、システムコンポーネントのサンプリングレートを同じ値に設定していても、時間の経過とともにドリフトが発生し、システムのコンポーネントごとにサンプルデータの収集数に違いが発生するすることがあります。これにより、シミュレーションシステムで問題が発生する可能性があります。たとえば、一方のシミュレーションモデルが他方のシミュレーションモデルと異なる時間状態になる場合があります。そうした場合、正確な共通のタイムベースがないため、最終的にはデータ解析が困難か不可能となる可能性があります。
分散システムを同期する場合、ハードウェアの同期とソフトウェアの同期の両方が必要となります。必要に応じて、システム全体を1588、GPS、IRIGなどの外部の時間基準に同期させることもできます。
NI VeriStandの構成ベースの環境では、1つまたは複数の実行ターゲット上で、さまざまな種類のI/Oから構成される多様な同期システムを作成できます。詳細については、「Building Synchronized NI VeriStand Systems」を参照してください。
NI VeriStandからのデータログには、さまざまな形式があります。シングルポイントデータから、XNET未処理フレーム、1つまたは複数のターゲットからの高速波形データに至るまで幅広い形式で提供されます。これらのログのデータを組み合わせて表示することは、テクノロジとデータ形式が多様であるため、難しい処理となります。DIAdemは、このプロセスを容易に実行できる強力なツールです。「Viewing Time Correlated NI VeriStand Data Logs」に掲載されているチュートリアルでは、時間調整DIAdem SCRIPT、サンプルファイル、ステップごとの手順などについて説明しています。
NI VeriStandを導入すれば、リアルタイムI/Oや刺激プロファイル、データロギング、アラームなどのタスクを構成することができます。また、さまざまなソフトウェア環境からモデルをインポートして、制御アルゴリズムやシステムシミュレーションを実装することもできます。さらに、入手後すぐに使えるツールを備え、実行時に編集可能なユーザインタフェースを使用して、テストシステムインタフェースを短時間で構築したり、NI LabVIEWや、NI TestStand、ANSI C/C++、.NET、Pythonといったさまざまなソフトウェア環境を使用してカスタム機能を追加したりすることも可能です。
NI VeriStandのメリットを活用すれば、すぐに使用できるマルチターゲット機能を使って、分散型HIL、テストセル、リアルタイムテスト、監視システムなどを容易に開発することができます。