• 要件—入出力タスクをハードウェアタイミングで制御する必要があります。サンプリングクロックエッジが検出されると同時に出力値を更新しなければなりません。また、タイミング重視ループとそれより優先度の低いプロセスとの間でデータを交換する必要があります。
  • 解決法— 「DAQmx次のサンプリングクロックまで待機」関数/VIを使用して、新しいサンプリングクロックエッジが発生したかどうかを確認します。「DAQmx次のサンプリングクロックまで待機」関数/VIの後に、通信コード (通常、LabVIEWではリアルタイムFIFO、LabWindows/CVIではスレッドセーフキュー) を配置します。

    利点

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

    制約事項

    読み取り、処理、書き込みの各操作は、デバイスがデータの集録を開始した時間から次のサンプリングクロックエッジの検出までの時間内に行われる必要があります。
  • サンプルアプリケーション: ハードウェアタイミングによる入出力同時アップデートとタイミング重視ループと非タイミング重視ループ間でのデータ交換

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

    タイミングダイアグラム



    LabVIEWの例: ハードウェアタイミングによる入出力同時アップデートとタイミング重視ループと非タイミング重視ループ間でのデータ交換

    メモ このサンプルはLabVIEWユーザ向けに書かれていますが、基本的な概念はLabWindows/CVIなどの他のアプリケーション開発環境にも共通します。
    • 「DAQmx次のサンプリングクロックまで待機」VIをハードウェアタイミングタスクに配線します。データフローの配線により、「DAQmx次のサンプリングクロックまで待機」VIが必ずAO書き込み関数の呼び出し後に実行されるようにすることができます。
    • データフローの配線により、リアルタイムFIFO操作が必ず「DAQmx次のサンプリングクロックまで待機」VIの実行後に実行されるようにすることができます。
    • 「DAQmx次のサンプリングクロックまで待機」VIが次のサンプリングクロックエッジ検出前に実行されないと、NI-DAQmxによってエラーが返されます。

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



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