PythonでDAQmx AIトリガーを使用する

更新しました Mar 12, 2025

使用製品

ドライバ

  • NI-DAQmx

プログラミング言語

  • Python

問題

DAQmx Python AIトリガーを使用して、AI開始トリガーを受信したときにいくつかのアクションをトリガーしたいと考えています。 Python DAQmx API を使用してこれを実現するにはどうすればよいでしょうか?

解決策

API の使用方法の詳細については、 DAQmx Pythonドキュメントを参照してください。

トリガー信号ソースについては、こちらの記事 に記載されている手順に従うことができます。記事の例にあるように、 PXI(e) コントローラーで SMB コネクタを使用してトリガー信号をルーティングし、「 cfg_dig_edge_start_trig 」を呼び出して、ソースを [コントローラーの名前/TRIG_SMB] として設定します。 

これを実現するには、以下の簡単な Python サンプル コードを参照してください。

import pprint
import nidaqmx

pp = pprint.PrettyPrinter(indent=4)

with nidaqmx.Task() as task:
   clk_rate = 2.0e6 # サンプリング周波数。外部クロックのレートで決定されます。想定しているDAQボードPXIe-6378の最大サンプリングレートは3.5 MS/s/chです
   tr = [-0.1,1.0] # Timerange to plot.
   num_pts = int(clk_rate * (tr[1]-tr[0])) # データ取得の総時間です

   task.ai_channels.add_ai_voltage_chan("PXIe6378/ai0")
   task.timing.cfg_samp_clk_timing(rate=float(clk_rate), samps_per_chan=num_pts) # クロックの構成を行っています
   task.triggers.start_trigger.cfg_anlg_edge_start_trig(trigger_source = 'APFI1', trigger_level=1.5) # トリガー条件を設定しています
   print("1 Channel N Sample Read: ")
   data = task.read(number_of_samples_per_channel=num_pts, timeout=100)
   pp.pprint(data)

: Python スクリプトを実行するために NI MAX で PXIe-6378 デバイスをシミュレートしています。場合に応じて add_ai_voltage_chan の引数を変更してください。