EtherCAT用NI 9144スレーブシャーシは、確定性に優れたリアルタイムEthernetネットワーク経由で、リモートI/Oの同期が行えるよう設計されています。このNI Cシリーズモジュール用8スロットモジュール式シャーシは、NI LabVIEWのグラフィカルプログラミングでプログラムされており、CompactRIO、PXI、およびNI産業用コントローラの各プラットフォームで、NIリアルタイムプログラマブルオートメーションコントローラ (PAC) から2個のEthernetポートにデイジーチェーン接続できます。また、NI 9144にはLabVIEW FPGAモジュールでプログラムできるFPGA (field-programmable gate array) が搭載されており、カスタムタイミングやインライン処理にも対応できるインテリジェントな分散デバイスを実現できます。この技術資料では、LabVIEW Real-TimeのNI スキャンエンジンを使用して行ったNI 9144システムループレートのベンチマークに関する技術的詳細と性能結果について解説します。
マスタコントローラとNI 9144の間の通信ネットワークには、EtherCATと呼ばれるリアルタイムのオープンEthernetプロトコルを利用します。EtherCATベンチマークは、大きく分けると、ロジック、ドライバ、EhterCATネットワーク、I/Oの4つのコンポーネントで構成されています。
図2.EtherCATマスタ/スレーブベンチマークのコンポーネント
EtherCATマスタコントローラの場合、マスタベンチマークは、ユーザのコードと、そのコードとEtherCATネットワークの間でデータを移動させるEtherCATソフトウェアドライバに依存します。一般に、EtherCATマスタコントローラは、その処理能力がユーザロジックとドライバでのデータの処理速度に大きく影響するため、システムのループレートの制約要因となります。コントローラの処理能力が高いほど、短時間でより多くのI/Oデータを処理できます。
一方スレーブデバイスのベンチマークは、パケットがEtherCATネットワーク上を移動する距離と、スレーブI/Oがアップデートするレートに依存します。EtherCATネットワークのパケット速度は、スレーブデバイスノードの数、Ethernetケーブルの長さ、そして何よりもワイヤに送信されるI/Oデータの量など、多くの要因に影響されます。確定性に優れたプロトコルにより、EtherCATネットワークのタイミングを高精度で計れるため、マスタはスレーブがデータをアップデートし転送するタイミングを知ることができます。当然のことながら、EtherCATネットワークの速度は、システムループレート全体における最速のコンポーネントです。
NI 9144スレーブをEtherCATマスタをサポートするNI PACとともに使用する際は、ベンチマークコンポーネントは下図のようになります。
ロジックとはユーザが作成したLabVIEWコードであり、ドライバとはLabVIEWのNI スキャンエンジンとNI-Industrial Communications for EtherCATドライバソフトウェアを指します。EtherCATネットワークとは実際のEthernetケーブル経由の通信であり、I/OとはCシリーズI/Oモジュールを指します。それら全てのソフトウェアとハードウェアによって、NI EtherCATシステム全体のシステムループレートが決まります。
1回のスキャンループまたはサイクルで、EtherCATパケット (I/Oスキャン) の転送をマスタコントローラとNI 9144スレーブシャーシの間で同期させる必要があります。I/Oスキャンの際、マスタは新規の出力と命令を含むパケットをスレーブに送信し、スレーブはマスタの新規の入力値を含むパケットを返します。EtherCATパケットからのアップデートデータを使用して、マスタはプログラムスキャンを、NI 9144シャーシはスレーブのアップデートを開始します。プログラムスキャンとは、マスタがデータを処理してLabVIEWプログラムを実行するのにかかる時間のことです。スレーブアップデートとは、スレーブがDMA転送やデータ処理、I/Oのアップデートを行う時間のことです。そのため最小ループレートは、プログラムスキャンとスレーブアップデートのいずれか時間がかかる方の制約を受けます。
図4.スキャンサイクルのタイミング図
ネットワーク上のスレーブ数とI/O数が増えると、マスタコントローラがより多くのデータを処理しなくてはならないため、プログラムスキャンにかかる時間は長くなります。ただし、全てのスレーブはI/Oを並列で同時にアップデートするため、スレーブのアップデートにかかる時間が増加することはありません。したがって、ネットワーク上のスレーブI/O数が多ければ多いほど、マスタのプログラムスキャンがボトルネックになる可能性が高くなります。アプリケーションのI/Oチャンネル数が多い場合は、マスタとしてPXIなどの高性能コントローラを使用することを推奨します。
図5.NI 9144 EtherCATスレーブシャーシとともに使用するCompactRIOとPXIシステム
マスタコントローラ用のデフォルトのLabVIEWプログラミングモードでは、NI スキャンエンジンを実行します。NI スキャンエンジンは、シングルポイントI/Oの値をユーザ指定のレートでメモリに書き込むLabVIEW Real-Timeモジュールのコンポーネントです。マスタコントローラのベンチマークが目的なので、ユーザのコードを実行するのにかかる時間は計算しません。したがって、残るマスタベンチマークコンポーネントはドライバ速度で、これにはコントローラがNI スキャンエンジンのメモリマップからI/O変数にデータを転送するのにかかる時間などが含まれます。I/O変数は、NI スキャンエンジンのメモリマップからLabVIEWプログラミング環境のデータにアクセスする際に使用するシンプルなクリックアンドドラッグ式の変数です。 LabVIEWプログラムのI/O変数ノードの各インスタンスの実行には時間がかかります。各I/O変数ノードの平均実行時間は、プログラミング環境内のノード数が増えても一定に保たれる傾向にあります。あるNIマスタコントローラの実行時間を下記のチャートに示します。このデータに基づいて計算すると、各I/O変数ノードの平均実行時間は、NI cRIO-9074統合システムでは約8マイクロ秒、NI cRIO-9022組込リアルタイムコントローラでは3.5マイクロ秒、NI PXI-8106デュアルコア組込コントローラでは0.3マイクロ秒となります。
図6.各I/O変数ノードの平均実行時間
メモ:このリストは、EtherCATに対応するNIコントローラを全て掲載したものではありません。詳細については、「EtherCAT用NI製品選択ガイド」をご覧ください。一般に、プロセッサの処理能力が高いほど、I/O変数は高速で実行します。
マスタコントローラからデイジーチェーン接続できるNI 9144スレーブシャーシの最大数について、お客様からよくご質問を受けます。EtherCATプロトコルでは、理論上は1つのネットワークでの最大スレーブ数は65,535台としていますが、非常に多くのデバイスを1つのマスタコントローラで制御すると、スキャンレートが大幅に低下します。複数のマスタで実装することが推奨されます。現実には、マスタ側から見ると、スレーブデバイス数ではなく、I/Oチャンネル数の方がシステムのスキャンレートにより大きな影響をもたらします。図4に示したとおり、EtherCATネットワークにより多くのデータが送信されると、マスタのプログラムスキャンは増え、一般にスレーブのアップデート速度は低下します。そのため、各スレーブデバイスに追加するオーバーヘッドの量に関わらず、300チャンネルのI/Oを2台のNI 9144モジュール式シャーシで分けても20台のNI 9144モジュール式シャーシで分けても、システムのループレートへの影響はほぼ同じになります。
表1は、マスタコントローラとNI 9144スレーブのベンチマークを組み合わせて、最小サイクル時間、つまりシステムのループレートを表したものです。
最小サイクルタイム = ドライバ + EtherCATネットワーク + I/Oアップデート
これらのベンチマークには、ユーザのコードの実行にかかる時間は含まれていません。コードにかかる時間を適宜追加し、詳細は関連リンクを参照してください。
>表1.cRIO-9074、cRIO-9022、PXI-8106マスタコントローラのシステムループレート
2種類のコントローラと4種類のI/Oモジュールに関するテストに基づいて、ベンチマーク表 (system_loop_rate_chart2.xls) を本ホワイトペーパーの末尾に添付しています。EtherCATネットワークを構築する際にNIのハードウェアおよびソフトウェアのみを使用している場合、この表を参照してシステム全体のループレートを概算することができます。NI 9144モジュール式シャーシで使用しているアナログチャンネルおよびデジタルI/Oチャンネルの数と、LabVIEWコードの実行にかかるおおよその時間を入力すると、システムのループレートを計算できます。これらの式は特定のハードウェアセットアップに基づいていますので、別のI/Oモジュールを使用すると異なる結果になる場合があります。 また、マスタコントローラのローカルシャーシ内またはバックプレーン内のI/Oモジュールで取得される時間は含まれません。
関連リンク
NI スキャンエンジンの性能のベンチマーク
NI 9144スレーブシャーシには他社製のEtherCATマスタデバイスを使用することもできますが、その際、LabVIEWで提供される簡単なプログラミング機能は利用できません。そのような場合のために、マスタベンチマークコンポーネントを使用しないNI 9144スレーブとEtherCATネットワークのみでのベンチマークも行っています。これは実現可能な最小のサイクルタイムである点にご注意ください。実際のシステムループレートを計算するには、マスタのプログラムスキャンと実行時間を特定し比較する必要があります。計算式は2つの部分からなります:
スレーブの最小サイクルタイム = パケット伝送時間 + スレーブのアップデート時間
マスタから送信されたEtherCATパケットのパケット伝送時間とは、フレーム伝送、通信遅延、伝送中に生じたジッタを合計したものです。
パケット伝送時間 = フレーム伝送時間 + 通信遅延 + ジッタ
フレーム伝送は、1バイトのEtherCATデータあたり80ナノ秒、データを含むEtherCATフレームは1つにつき5マイクロ秒かかります。(この総EtherCATデータは、NI 9144シャーシのI/Oチャンネルの数と種類に直接対応します)。通信遅延は、NI 9144シャーシで600ナノ秒、Ethernetケーブル1メートルあたり5ナノ秒となります。
EtherCATパケットが全てのスレーブを経由して停止することなくマスタに戻った後、全てのスレーブは入力を読み取り、出力を書き込みます。そのため、システムの最小スレーブサイクルタイムは、最悪条件のスレーブアップデート時間によって決まります。
スレーブアップデート時間 = DMA転送時間 + 最悪条件のモジュールタイミング
これを特定するには、全てのNI 9144シャーシの個々のモジュール構成を考慮する必要があります。シャーシ内のモジュールに基づいて、入出力データのDMA転送時間を計算することができます。また、最悪条件での開始、変換、屈折タイミングのモジュールを特定することもできます。それらの値を加算することで、最悪条件のスレーブアップデート時間を求めることができます。
メモ:LabVIEW 2009のリリース以降、NI 9144のモジュールはLabVIEW FPGAを使用してハードウェアレベルでプログラムできるようになりました。したがって、システムのループレートよりも速いアップデートレートを持つモジュールのメリットを活用することができます。I/Oをモジュールの最大速度で実行することで、FPGAコードを使ってカスタム信号操作とインライン処理を行い、最終結果をマスタコントローラに返すことができます。
NI 9144では様々なモジュールを組み合わせて使用できるため、それらの全式を適用し、最小スレーブサイクルタイムを正確に計算するためのベンチマーク表 (ni_9144_only_benchmarks.xls) を本技術資料の末尾にご用意しています。値を正しく入力したら、計算済みのスレーブベンチマークに他社マスタのベンチマークを追加して、アプリケーション全体のシステムアップデートレートを特定することができます。高速パフォーマンスをさらに向上させるには、LabVIEW FPGA機能を使用してカスタムインテリジェンスをNI 9144にダウンロードすることもできます。
関連リンク
EtherCAT RIOの詳細
NIプログラマブルオートメーションコントローラ (PAC) を使用したEtherCATシステム構築方法