NI-DAQmxハードウェアタイミングによるシングルポイント遅延チェック

Contents

概要

NI-DAQmxは、バッファなしで継続的に集録または生成されるハードウェアタイミングによるシングルポイントサンプルモードをサポートします。確定的な周期での入力や出力を必要とする制御アプリケーションには、ハードウェアタイミングによるシングルポイントモードがLabVIEW Real-Timeプラットフォームで一般的に使用されます。ソフトウェア操作がハードウェアタイミングに追いついているかどうかを確認するには、遅延チェックが必要です。NI-DAQmx 7.4で導入された変更により、リアルタイムプラットフォームのハードウェアタイミングによるシングルポイント操作を実行する場合の柔軟性が向上しました。NI-DAQmx 7.4以降では遅延チェックに関する以下の3つのオプションがあります。

1)厳密な遅延チェック(次のサンプルクロックまで待機)
2)FIFOオーバーフロー遅延チェック(見過ごしたサンプルを報告)
3)遅延チェックなし

このチュートリアルでは、この3つの遅延チェックモードを説明します。また、NI-DAQmx 7.4の新機能の使用方法を示すサンプルアプリケーションも用意されています。このアプリケーションは、シングルポイントのNI-DAQmxタスクを使用するリアルタイムアプリケーションでの共通の要件に基づいています。これらのサンプルは、基本的なサンプルでより複雑なアプリケーション設計の参考になります。このサンプルは制御アプリケーションに関するものですが、Hardware-in-the-Loop(HIL)、イベント応答タスク、インライン信号操作など、その他のシングルポイントアプリケーションにも適用できます。

各アプリケーション例は、NI-DAQmx 7.4の新機能に加えて、特定のサンプルアプリケーションの使用方法、およびタイミング図、LabVIEWブロックダイアグラムを説明します。また、実装の詳細、最適化、エラー条件の詳細情報も記載されています。

厳密な遅延チェック(次のサンプルクロックまで待機)

NI-DAQmx 7.4以降には、「DAQmx 次のサンプルクロックまで待機(Wait For Next Sample Clock)」VIがあります。これは、ハードウェアタイミングによるシングルポイントタスクで確実にハードウェア層とソフトウェア層を同期化します。このVIは、ブロックダイアグラムの実行をハードウェア信号(指定タスクのサンプルクロックなど)に関連付け、制御ループのリアルタイム実行全体に対するフィードバックを提供します。

   
図1. 「DAQmx次のサンプルクロックまで待機」VI

「DAQmx次のサンプルクロックまで待機」VIは、配線されたタスクに次のサンプルクロックパルスが発生するまで待機します。このVIの呼び出しの間に余分なサンプルクロックパルスが発生する場合、次の呼び出しはエラーまたは警告を返し、次のサンプルクロックパルスを待機します。その他のDAQmx関数の後に「DAQmx次のサンプルクロックまで待機」VIを配置して呼び出すと、このVIに配線されたタスクの次のサンプルクロックまですべての関数が実行完了するかを確認できます。このVIの詳細については、『NI-DAQmxヘルプ』を参照してください。

メモ: 柔軟性が向上したことにより、NI-DAQmx 7.4以降では、NI-DAQmx 7.3に含まれている「DAQmx読み書き遅延チェック(DAQmx Is Read or Write Late)」VIを使用する場合は、動作が変わります。NI-DAQmx 7.4以降では、「DAQmx読み書き遅延チェック」VIは遅延チェックを実行しません。「DAQmx読み書き遅延チェック」VIが使用されているアプリケーションでは、配置されていもプログラムは実行しますが、遅延エラーや遅延警告は通知されません。「DAQmx次のサンプルクロックまで待機」VIに置換するか、またはこのチュートリアルに記載されている別の方法をお勧めします。

FIFOオーバーフロー遅延チェック(見過ごしたサンプルを報告)

厳密な遅延チェックを行う別の方法は、DAQmx Real-Timeプロパティノードの「見過ごしたサンプルを報告」プロパティを使用します。ハードウェアタイミングによるシングルポイントアナログ入力に対してこのプロパティをTRUEに設定すると、「DAQmx読み取り」VIでFIFOにサンプルがあるどうかをチェックします。FIFOにサンプルがある場合、「DAQmx読み取り」VIはソフトウェアがハードウェアレートに追いついていないことを示すエラーを返します。この遅延チェックは、アナログ入力操作の遅延のみを確認し、アナログ入力タスクに関連するその他の操作が完了したかは確認しません。


図2. DAQmx Real-Timeプロパティノード

メモ: 「見過ごしたサンプルを報告」プロパティはハードウェアタイミングによるシングルポイントアナログ入力のタスクのみサポートされています。このプロパティは、「DAQmx次のサンプルクロックまで待機」VIと一緒に使用しないでください。

遅延チェックなし

3番目の方法は、「DAQmx次のサンプルクロックまで待機」VIや「見過ごしたサンプルを報告」プロパティを使用せず、遅延チェックを実行しない方法です。このモードでは、NI-DAQmxは遅延チェックを行わないので、NI-DAQmx関数によるソフトウェアがハードウェアレートに追いついていないことを示すエラーや警告も報告されません。上級ユーザの方にはパフォーマンスを向上できますが、システムがハードウェアレートに追いついていることを確認する外部ハードウェアが必要となります。

アプリケーション例1 ― ハードウェアタイミングによる入出力同時アップデート

要件
入出力タスクをハードウェアタイミングで制御する必要があります。サンプルクロックエッジが検出されると同時に出力値を更新しなければなりません。

解決法
「DAQmx次のサンプルクロックまで待機」VIを使用して、新しいサンプルクロックエッジが発生したかどうかを確認します。

利点

  • 現在の反復の出力サンプルは、次の反復の入力サンプルと確実に一致します。
  • 「DAQmx次のサンプルクロックまで待機」VIが次のサンプルクロックエッジが発生する前に開始されると、NI-DAQmxによってエラーが返されます。
  • 入出力ジッタがハードウェアクロックの数ナノ秒のジッタの範囲内になります。


制約事項
読み取り、処理、書き込みの各操作は、デバイスがデータの集録を開始した時間から次のサンプルクロックエッジの検出までの時間内に行われる必要があります。

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



図3.タイミング図

実装例

  • 「DAQmx次のサンプルクロックまで待機」VIをハードウェアタイミングタスクに配線します。データフローの配線により、必ず「DAQmx 書き込み(DAQmx Write)」VIの呼び出し後に「DAQmx次のサンプルクロックまで待機」VIを配線して、書き込み後に遅延チェックが実行するようにできます。
  • 「DAQmx次のサンプルクロックまで待機」VIが次のサンプルクロックエッジ検出前に開始されないと、NI-DAQmxによってエラーが返されます。




図4. ブロックダイアグラムの例

メモ

  • LabVIEWでは、「DAQmx次のサンプルクロックまで待機」VIはループ内でしか使用できません。1つのループ内に複数のハードウェアタイミングシングルポイントI/Oタスクを配置した場合、「DAQmx次のサンプルクロックまで待機」VIをそのループ内のハードウェアタイミングシングルポイントタスクに接続できません。
  • サイクルのオーバーフローが発生した場合にエラーではなく警告が表示されるようにするには、DAQmx Real-Time→遅延エラーを警告に変換プロパティノードをTRUEに設定します。
  • 「DAQmx次のサンプルクロックまで待機」VIには、ポーリングモードと割り込みまで待機するモードの2つのモードがあります。デフォルトである割り込みまで待機するモードでは、タイムクリティカルループが次のサンプルクロックを待機している間に、優先度の低いプロセスを実行できます。ポーリングモードでは、高いサンプルレートを指定できますが、タイムクリティカルループが次のサンプルクロックを待機している間に、優先度の低いプロセスを実行することができません。
  • 「DAQmx読み取り」VIにも、ポーリングモードと割り込みまで待機するモードの2つのモードがあります。割り込みまで待機するモードでは、タイムクリティカルループが要求されたサンプル変換の完了を待機している間に、優先度の低いプロセスを実行できます。ポーリングモードでは、高いサンプルレートを指定できますが、タイムクリティカルループが要求されたサンプル変換の完了を待機している間に、優先度の低いプロセスを実行することができません。
  • このセクションで示すアプリケーションでは、「DAQmx次のサンプルクロックまで待機」VIと「DAQmx読み取り」VIの両方が割り込みまで待機するモードに設定されています。この設定を変更するには、DAQmx読み取り→上級→待機モードプロパティ、DAQmx Real-Time→次のサンプルクロック待機モードまで待機プロパティを使用します。

アプリケーション例2 ― ハードウェアタイミングによる入出力同時アップデートとタイムクリティカルループと非タイムクリティカルループ間でのデータ交換

要件
入出力タスクをハードウェアタイミングで制御する必要があります。サンプルクロックエッジが検出されると同時に出力値を更新しなければなりません。また、タイムクリティカルループとそれより優先度の低いプロセスとの間でデータを交換する必要があります。

解決法

  • 「DAQmx 次のサンプルクロックまで待機」VIを使用して、新しいサンプルクロックエッジが発生したかどうかを確認します。
  • 通信コード(通常はリアルタイムFIFO)を「DAQmx 次のサンプルクロックまで待機」VIの後に配置します。


利点

  • 現在の反復の出力サンプルは、次の反復の入力サンプルと確実に一致します。
  • 「DAQmx次のサンプルクロックまで待機」VIが次のサンプルクロックエッジが発生する前に開始されると、NI-DAQmxによってエラーが返されます。
  • 入出力ジッタがハードウェアクロックの数ナノ秒のジッタの範囲内になります。
  • ハードウェアタイミングによるカウンタ入力操作では、マルチプレクスアナログ入力のような変換時間がありません。したがって、リアルタイムFIFOはLabVIEWループ内のどこにでも配置できます。


制約事項
読み取り、処理、書き込みの各操作は、デバイスがデータの集録を開始した時間から次のサンプルクロックエッジの検出までの時間内に行われる必要があります。

サンプルアプリケーション
このようなアプリケーション例には、特定の数のアナログ入力チャンネルからサンプルを読み取り、制御アルゴリズム(PIDなど)でデータを処理して新しい値をアナログ出力チャンネルに書き込むアナログ制御ループが挙げられます。アプリケーションでは、優先度の低いプロセスから受け取るブール値に基づいて制御ループを停止するために、リアルタイムFIFOが使用されます。同様に、リアルタイムFIFOを使用して、PIDパラメータを動的に変更したり、集録したデータや制御出力値を優先度の低いプロセスへ転送してデータログ作成やリモート監視を行うこともできます。


図5. タイミング図

 

実装例

  • 「DAQmx次のサンプルクロックまで待機」VIをハードウェアタイミングタスクに配線します。データフローの配線により、必ず「DAQmx 書き込み(DAQmx Write)」VIの呼び出し後に「DAQmx次のサンプルクロックまで待機」VIを配線して、書き込み後に遅延チェックが実行するようにできます。
  • データフローの配線により、リアルタイムFIFO操作が必ず「DAQmx次のサンプルクロックまで待機」VIの実行後に実行されるようにすることができます。
  • 「DAQmx次のサンプルクロックまで待機」VIが次のサンプルクロックエッジ検出前に実行されないと、NI-DAQmxはエラーを返します。


図6. ブロックダイアグラムの例

メモ

  • LabVIEWでは、「DAQmx次のサンプルクロックまで待機」VIはループ内でしか使用できません。1つのループ内に複数のハードウェアタイミングI/Oタスクを配置した場合、「DAQmx次のサンプルクロックまで待機」VIをそのループ内のハードウェアタイミングシングルポイントタスクにしか接続できません。
  • サイクルのオーバーフローが発生した場合にエラーではなく警告が表示されるようにするには、DAQmx Real-Time→遅延エラーを警告に変換プロパティノードをTRUEに設定します。
  • 複数チャンネルのアナログ入力操作をマルチプレクサを用いたデバイス(Eシリーズ、Mシリーズなど)で扱う場合は、「DAQmx次のサンプルクロックまで待機」VIの後にリアルタイムFIFOコードを配置することを強くお勧めしますが、これは必須ではありません。デバイスはサンプル周期の半分をアナログ入力チャンネルのA/D変換に費やすため、FIFOコードをこの変換中に実行することで、アイドル時間を有効に利用できます。
  • アナログ入力変換レートは、DAQmxタイミングプロパティノードを使用して変更できます。レートを高速にすることで、要求された数のA/D変換に費やす時間が短くなります。データ集録システム全体における最短整定時間を考慮することは、信号の劣化や干渉を防止するためにも重要です。

アプリケーション例3 ― ハードウェアタイミングによる入力とソフトウェアタイミングによる出力

要件
アナログ入力タスクをハードウェアタイミングで制御する必要があります。出力タスクは、サンプルクロックエッジでハードウェア同期を行う必要がありません。

解決法
DAQmx Real-Time→見過ごしたサンプルを報告プロパティを使用します。これにより、読み取り操作にて1つ前のサンプルのA/D変換が、次のサンプルが読み取られる前に完了しない場合、エラーを返します。

利点

  • 入力サンプルは、ハードウェアタイミングに基づきます。
  • 読み取り、処理、書き込みの各操作は、後続の読み取り操作で次の入力サンプルのセットを完了するだけの十分な時間があれば、次のサンプル周期にオーバーフローすることができます。マルチプレクサを用いたデバイス(EシリーズやMシリーズなど)の複数チャンネルからデータを集録するアプリケーションは、デバイスが読み取り操作が返す前の入力サンプルを変換するまで待機する必要があります。処理と書き込みの操作を次のサンプル周期にオーバーフローさせることで、アイドル時間を有効に活用できます。これにより、アプリケーションの制御ループの速度が高速になります。


制約事項
出力の更新はハードウェアタイミングに基づいていないため、ソフトウェアジッタの影響を受けます。

サンプルアプリケーション
このようなアプリケーション例として、特定の数のマルチプレクサを用いたアナログ入力チャンネルからサンプルを読み取り、制御アルゴリズム(PIDなど)でデータを処理してソフトウェアタイミングタスクによって新しい値をアナログ出力チャンネルに書き込むアナログ制御ループが挙げられます。


図7. タイミング図

実装例

  • アナログ入力操作の見過ごしたサンプルを報告プロパティをTRUEに設定します。
  • 読み取り操作にて1つ前のサンプルのA/D変換が、次のサンプルが読み取られる前に完了しない場合、エラーを返します。

 


図8. ブロックダイアグラムの例

メモ

  • アナログ入力読み取りのオーバーフローエラーが発生した場合に、エラーではなく警告が表示されるようにするには、遅延エラーを警告に変換プロパティをTRUEに設定します。
  • 1つのLabVIEWループ内で「DAQmx次のサンプルクロックまで待機」VIと見過ごしたサンプルを報告プロパティを同時に使用しないでください。
  • 見過ごしたサンプルを報告プロパティは、ハードウェアタイミングによるシングルポイントアナログ入力タスクによってのみサポートされます。
  • アナログ出力タスクはソフトウェアタイミングを使用するため、書き込み関数の呼び出しが開始されるとすぐに値の書き込みが開始されます。したがって、ハードウェアクロックによるデータ出力を待機しません。

アプリケーション例4 ― ハードウェアタイミングによるカウンタタスク

要件
ハードウェアタイミングによるカウンタ入力操作を使用して、この制御ループを駆動します。

解決法
「DAQmx次のサンプルクロックまで待機」VIを使用して、カウンタ操作をカウンタのサンプルクロックと同期させます。

利点

  • カウンタタスクにおいて、制御ループのソフトウェア処理を実行する柔軟なタイミングとイベント検出が可能になります。つまり、制御ループで動的なクロックレートを使用できます。
  • 「DAQmx次のサンプルクロックまで待機」VIが次のサンプルクロックエッジが発生する前に開始されないと、NI-DAQmxはエラーを返します。


制約事項
読み取り、処理、書き込みの各操作は、デバイスがデータの集録を開始した時間から次のサンプルクロックエッジの検出までの時間内に行われる必要があります。

サンプルアプリケーション1
このようなアプリケーション例には、デジタルラインをあからじめ定義された制御論理に基づいて制御しながらエッジをカウントエッジするカウンタ入力タスクを実行する制御ループが挙げられます。このアプリケーション例は、リアルタイムFIFOを介して通信を実行します。


図9. タイミング図

 

実装例

  • 「DAQmx次のサンプルクロックまで待機」VIをカウンタ入力タスクに配線します。
  • 「DAQmx次のサンプルクロックまで待機」VIが次のサンプルクロックエッジ検出前に実行されると、NI-DAQmxはエラーを返します。




図10. ブロックダイアグラムの例

サンプルアプリケーション2
別のアプリケーション例として、パルス周波数モードでパルス幅変調(PWM)を生成し、制御信号を離散的な入力を監視してその値によってカウンタ出力タスクを更新する制御ループが挙げられます。このサンプルアプリケーションは、リアルタイムFIFOを介して通信します。



図11. タイミング図

実装例

  • 「DAQmx次のサンプルクロックまで待機」VIをカウンタ出力タスクに配線します。
  • 「DAQmx次のサンプルクロックまで待機」VIが次のサンプルクロックエッジ検出前に実行されないと、NI-DAQmxはエラーを返します。


図12. ブロックダイアグラムの例

メモ

  • LabVIEWでは、「DAQmx次のサンプルクロックまで待機」VIはループ内でしか使用できません。1つのループ内に複数のハードウェアタイミングI/Oタスクを配置した場合、「DAQmx次のサンプルクロックまで待機」VIをそのループ内のハードウェアタイミングシングルポイントタスクにしか接続できません。
  • サイクルのオーバーフローが発生した場合にエラーではなく警告を表示するには、DAQmx Real-Time→遅延エラーを警告に変換プロパティをTRUEに設定します。
  • ハードウェアタイミングによるカウンタ操作では、マルチプレクサを用いたアナログ入力で必要となるA/D変換時間はありません。したがって、リアルタイムFIFOはLabVIEWループ内のどこにでも配置できます。
  • NI-DAQmxでは、カウンタ書き込み実行中にサンプルクロックエッジが検出できなかった場合に復元するためのメカニズムがあります。この書き込み復元メカニズムが正常に完了しないと、NI-DAQmxはエラーを返し、そのタスクの後続の操作がハードウェアタイミングで実行されなくなります。
  • DAQmx Real-Time→書き込み回復モードプロパティでは、復旧メカニズムのモードを割り込みまで待機かポーリングのどちらかで選択できます。デフォルトである割り込みまで待機するモードでは、NI-DAQmxの復旧中に優先度の低いプロセスを実行することができます。一方、ポーリングモードではサンプルレートをより高速に設定できます。

アプリケーション例5 ― ソフトウェアタイミングによる入出力

要件
この入出力タスクはハードウェアタイミングをサポートしていません。

解決法
タイミングループを使用して、タイミング重視のループにソフトウェアタイミングを適用します。オンデマンドタイミングでNI-DAQmxタスクを使用するように構成します。

利点

  • ハードウェアタイミングでない操作でもI/O制御ループを実行できます。
  • 読み取り、処理、書き込みの各操作は、タイミングループで定義されるソフトウェアタイミングの時間内に制限されます。


制約事項
入出力サンプルがソフトウェアジッタの影響を受けます。

サンプルアプリケーション
このようなアプリケーション例には、デジタルI/O制御ループが挙げられます。アプリケーションは、複数の離散的な入力の状態を監視し、対応する出力を制御アルゴリズムに基づいて切り替えます。ハードウェアタイミングは、NI-DAQmxのシングルポイントデジタルI/Oタスクでは使用できません。


図13. タイミング図

実装例

  • タスクは、システムの時間ソース(ミリ秒またはマイクロ秒の分解能)によって実行するタイミングループによって実行されます。タイミングループが適切なレートで実行されるように構成します。
  • すべてのタスクがソフトウェアタイミング(オンデマンド)になるように構成します。
  • タイミングループは、前回の反復が時間内に完了したかどうかを示すフィードバックを返します。このフィードバックは、「遅れて終了 [i-1]」ノードによって行われます。

 


図14. ブロックダイアグラムの例

メモ

  • タイミングループでは、アプリケーションがループ内から周期を調節できます。これにより、制御のために動的なタイミングアルゴリズムを実装できます。
  • タイミングループが次の反復を待機している間、優先度の低いプロセスを実行できます。
  • その他のソフトウェアタイミングには、「待機」VIや「次のミリ秒倍数まで待機」VI(ミリ秒またはマイクロ秒の分解能)などがありますが、これらの方法ではアプリケーションが遅れてもフィードバックは得られません。

アプリケーション例6 ― タイミングループを使用したハードウェアタイミングによる入出力同時アップデート

要件
入出力タスクをハードウェアタイミングで制御する必要があります。サンプルクロックエッジが検出されると同時に出力値を更新しなければなりません。ただし、このアプリケーションでタイミングループも使用します。

解決法
「DAQmxタイミングソースを作成(Create Timing Source)」VIを使用して、I/O操作と制御アルゴリズムを含むタイミングループを駆動するタイミングソースを作成します。

利点

  • タイミングソースで、タイミングループ反復のトリガとなるI/O信号(サンプルクロックイベントなど)を指定できます。
  • タイミングループは、反復が時間内に完了したかどうかを示すフィードバックを返します。
  • このアプローチを複数のタイミングループに適用すると、I/Oハードウェアサブシステムを使用するマルチレートアプリケーションを作成できます。


制限事項
通常のLabVIEW Whileループと比較して負荷が多少増加します。

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


図15. タイミング図

実装例

  • ハードウェアタイミングタスクの信号を選択して、タイミングループのタイミングソースを作成します。この信号は、タイミングループの実行を駆動するタイムベースとして使用されます。
  • タイミングループは、前回の反復が時間内に完了したかどうかを示すフィードバックを返します。このフィードバックは、「遅れて終了 [i-1]」ノードによって行われます。

図16. ブロック図16. ブロックダイアグラムの例

メモ

  • 優先度が低いその他のタイミングループなど、優先度が低いプロセスは、タイミングループが次の反復を待機している間に実行されます。
  • マルチプレクサを使用しているデバイスでアナログ入力サンプルのA/D変換に費やす時間で、リアルタイムFIFOを介した通信など、ループ内でその他のタスクを実行できます。
  • アナログ入力のA/D変換レートは、DAQmxタイミングプロパティにより変更できます。レートを高速にすることで、要求された数のA/D変換に費やす時間が短くなります。データ集録システム全体における最短整定時間を設けることは、信号の劣化や干渉を防止するためにも重要です。
  • これらのタスクでは、「DAQmx次のサンプルクロックまで待機」VIを使用しないでください。

関連​リンク

Was this information helpful?

Yes

No