• 要件—入出力タスクをハードウェアタイミングで制御する必要があります。サンプリングクロックエッジが検出されると同時に出力値を更新しなければなりません。アプリケーションではタイミングループを使用します。
  • 解決法—「DAQmxタイミングソースを作成」関数/VIを使用して、I/O操作と制御アルゴリズムを含むタイミングループを駆動するタイミングソースを作成します。

    利点

    • タイミングソースによって、タイミングループ反復のトリガとなるI/O信号 (サンプリングクロック信号など) を指定できます。
    • タスクからの制御ループなどのタイミングソースによって、厳密な遅延チェックを行い、複数のアナログチャンネルで多重化/サンプル集録が行われている間に他のスレッドを実行できます。
    • タイミングループによって、反復が時間内に完了したかどうかフィードバックを得られます。
    • 直接I/Oハードウェアサブシステムの使用してこのアプローチを複数のタイミングループに適用することで、マルチレートアプリケーションを作成できます。

    制約事項

    • 普通のLabVIEW Whileループと比較して負荷が多少増加します。
    • ウォームアップ反復を処理するための追加コードを記述する必要があります。
  • サンプルアプリケーション: タイミングループを使用したハードウェアタイミングによる入出力同時アップデート (LabVIEWのみ)

    この種類のアプリケーションの例には、特定の数のアナログ入力チャンネルからサンプルを読み取り、制御アルゴリズム (PIDなど) でデータを処理し、新しい値をアナログ出力チャンネルに書き込むアナログ制御ループが挙げられます。

    タスクからの制御ループタイミングソースを使用するアプリケーションを作成できます。タスクからの制御ループタイミングソースは、アナログ入力タスクからのサンプリングクロック信号を使用するため、そのサンプリングクロックに関連するすべてのタスクの厳密な遅延チェックを行えます。

    また、タスクからの制御ループタイミングソースによって、サンプリングクロックイベントが処理するタイミングとタイミングループの実行を開始するタイミングの間の遅延を指定できます。この遅延 (スリープ時間) によって、アナログ入力サンプルの多重化とデジタイズの待機中に、タイミングループ内のDAQmx読み取り関数/VIによってCPU時間が100%占有されないようにすることができます。

    タイミングダイアグラム



    LabVIEWの例: タイミングループを使用したハードウェアタイミングによる入出力同時アップデート

    • タイミングループのタスクからの制御ループタイミングソースを作成します。この信号は、タイミングループの実行を開始するタイムベースとなります。
    • タイミングループによって、前回の反復が時間内に完了したかどうかフィードバックを得られます。このフィードバックは、遅れて終了 [i-1]ノードによって行われます。
    • プロセッサキャッシュの効果を活用するため、またループの初回実行中に発生するその他のイベントを考慮に入れるため、数回のフォームアップ反復を実行します。

    サンプルブロックダイアグラム



    メモ
    • タスクからの制御ループタイミングソースを使用するとDAQmx読み取りVIがポーリングモードに設定されます。ポーリングモードでは、タイミングループ内の干渉に関するスケジュール負荷を回避できます。
    • アナログ入力変換レートは、DAQmxタイミングプロパティで手動で増やすことができます。レートを高速にすることで、要求された数のサンプルの変換に費やされる時間が短くなります。データ集録システム全体における最短整定時間を設けることは、信号の劣化や干渉を防止するためにも重要です。
    • これらのタスクでは、「DAQmx次のサンプリングクロックまで待機」VIを使用しないでください。
    • 優先度が低いその他のタイミングループなど、優先度が低いプロセスは、タイミングループが次の反復を待機している間に実行されます。
    • マルチチャンネル制御アプリケーションは、優先度が低いスレッドの処理時間が長くなる可能性がありますが、「DAQmxタイミングソースを作成」VIのスリープ時間パラメータにゼロ以外の値を指定することで、最適化できます。ゼロ以外の値を設定することで、アナログ入力サンプルの変換に使用される時間を、他のスレッドが通信やディスクへのログ保存など他のタスクに使用できるようになります。
    • アプリケーションの全体的な速度に影響しない範囲の最大スリープ時間は、集録するアナログチャンネルの数、サンプル変換レート、システムの仕様など、様々な要素によって変わります。

    以下の図は、複数チャンネル構成における、スリープ時間の長さによる最大I/Oレートとそのレートにおける優先度の低いスレッドの処理量に対する影響示しています。



    *以下のベンチマーク構成を参照してください。

    グラフは、特定のハードウェア/ソフトウェア構成で8チャンネルのサンプルを集録する場合、スリープ時間の長さが0 µsから5 µsに増加すると最大I/Oレートが低くなることを示しています。ただし、12チャンネルおよび16チャンネルの構成では、それぞれ10 µs、15 µsまではスリープ時間が変化しても最大I/Oレートにはほとんど影響しません。12チャンネルおよび16チャンネルの構成では、スリープ時間を増加させると、アプリケーションの全体的なI/Oレートに影響することなく他のスレッドがより多くの処理を実行できるようになります。

    ベンチマーク構成

    • ハードウェア構成:
      • NI PXI-8196RTコントローラ
      • NI PXI-6070 EシリーズMIOデバイス
      • NI PXI-6723 アナログ出力デバイス
    • ソフトウェア構成:
      • LabVIEW Real-Time 8.0
      • NI-DAQmx 8.0
      • イーサネットドライバをポーリングモードに設定
    • ベンチマークの詳細:
      • 処理単位は、普通の優先度のループが、I/Oタイミングループ (上記のサンプルブロックダイアグラム) が並行して実行される間に、符号なし64ビット数値を増分できる回数として定義されます。
      • アナログ入力変換レートは、明示的に設定されません。これは、アナログ入力変換レートが、NI-DAQmxドライバによってチャンネルとサンプリングクロックレートに基づいて自動的に計算されるためです。