LabVIEW用NI-DAQmxを使用して停止トリガを構成する

更新しました Nov 13, 2023

使用製品

ドライバ

  • NI-DAQmx

問題

NI DAQデバイスがあり、LabVIEW用サポートのあるNI-DAQmxを使用して、データの収集を開始および停止するタイミングをデバイスに伝える信号をデバイスに送信したいです。これを行うにはどうすればよいですか?

解決策

DAQmxでは、停止トリガを直接生成する方法は提供されていません。ただし、基準トリガを使用して読み取り位置を変更することで、LabVIEWで停止トリガに相当するものを作成できます。

これを達成するには、基準トリガの前後にN個のサンプルを取得するように構成された有限集録を設定する必要があります。これは、基準トリガのプリトリガサンプルを提供するために、DAQmxタスクが基準トリガを待つ間、データを連続的に収集するために便利です。この連続的に収集されたデータは、明示的に設定された取得の一部ではありませんが、DAQmx読み取りVIを使用して読み取ることができます。

基準トリガを停止トリガとして実装する方法の例として、次のスニペットを参照してください。

図1: LabVIEWで開始トリガと停止トリガを使用するDAQmxアプリケーション
 

上記の例では、アナログ入力タスクがDAQmxで作成され、開始デジタルエッジトリガと基準デジタルエッジトリガの2つのトリガを使用するように設定されています。

開始トリガは、タスクが基準トリガに備えてサンプルの取得を開始する時期を決定し、基準トリガはタスクが停止する前に最初に要求された有限数のプレトリガおよびポストトリガサンプルをいつ送信するかを決定します。

メモ: DAQmxドライバは、開始トリガが発生するまで基準トリガを待機しないため、必要に応じて同じPFIラインに到達するように開始トリガと参照トリガを設定することができます。


 

基準トリガを構成する

基準トリガには、プリトリガサンプル数/チャンネルと呼ばれる追加の入力パラメータが必要です。


図2:  LabVIEWのプリトリガサンプル数/チャンネル パラメータ


プレトリガサンプル数は、有限収集中に取得されたサンプルのうち、基準トリガが発生する前のサンプル数を定義します。取得中の残りのサンプルは、ポストトリガサンプルとみなされます。

暗黙的に、ポストトリガサンプルの数は次のようになります。

ポストトリガサンプル数 = サンプル数/チャンネル(DAQmxタイミング入力) - プレトリガサンプル数/チャンネル(DAQmxトリガ入力)

たとえば、プレトリガサンプルの最小数(2個)を収集し、ポストトリガサンプルを40個取得するタスクを構成するには、DAQmxタイミングVIのサンプル数/チャンネル入力端子に42を設定し、DAQmx基準トリガのプレトリガサンプル数/チャンネル入力端子に2を設定します。 有限収集の最終出力は次のようになります。


図3: 基準トリガを使用した場合におけるDAQmx読み取りの最終的な出力を可視化


メモ: タスクのタイミングを設定するときは、基準トリガのために少なくとも2個のプリトリガと2個のポストトリガサンプルが必要です。したがって、基準トリガを停止トリガとして使用しても、基準トリガが発生した後も少なくとも2つのサンプルが受信されますが、必要でない場合は後処理で破棄することができます。

追加情報

基準トリガとともに連続的に収集する

デフォルトでは、DAQmxは読み取るサンプルの総数に見合う十分な大きさのバッファサイズを選択します(たとえば、上記の例ではバッファはサイズ42になります)。

DAQmxアプリケーションが基準トリガを待機している間にバッファから連続サンプルを引き出すことができるようにするには、次の2つの変更が必要です。
 
  1. タイミングプロパティを設定した後、DAQmxアプリケーションのバッファサイズを手動で変更するには、DAQmx入力バッファ構成VIを使用します。
     
  2. 読み取り位置を変更するには、DAQmx読み取り>>相対を設定します。デフォルトでは、このプロパティは基準トリガを使用する場合、最初のプリトリガサンプルに設定されます。現在の読み取り位置に設定すると、DAQmx 読み取りは、開始トリガが発生した後バッファに格納されているサンプルを読み取ります。これが変更されていない場合、DAQmx読み取りVIはバッファからサンプルを取り出す前に、基準トリガが受信されるまで待機します。
     
  3. DAQmxチャンネルプロパティノードを配置して、アナログ入力>>一般プロパティ>>上級>>データ転送とメモリ>>データ転送リクエスト条件プロパティを選択肢、空でないオンボードメモリに設定します。これにより、デバイスのオンボードメモリ内でデータが使用可能である限り、データがバッファに直接転送されるようになります。