日本語 English
株式会社ヒューリンクス
TEL:03-5642-8384
営業時間:9:00-17:30

Igor Proと計測機器との連携(2)

Igor Proと計測機器との連携(2)

  • 執筆者:中川
  • 掲載日:2026/02/12
  • 使用したバージョン:Igor Pro 10

Igor Pro 「NIDAQ Tools MX」 を使用した繰り返し波形描画とFFT解析

前回の記事でご紹介した「NIDAQ Tools MX」は 、Igor Proを用いてデータ収集を行うための強力なツールでした。この「NIDAQ Tools MX」には、既存のUIから波形を読み取る機能だけでなく、様々な関数とオペレーションも提供されており、波形の読み取りと解析を同時に行うような機能を実装することができます。今回は、「NIDAQ Tools MX」とIgor Pro組み込みオペレーションである「FFT」を用いて、波形の読み取りとFFT解析をリアルタイムで実行する応用例をご紹介します。

1. メリット

複数の機器からの信号を読み取り分析するには、1台数万円の分析機器を用意する必要があります。しかし、「NIDAQ Tools MX」により提供される関数・オペレーションを利用することで、Igor Proで同様の機能を実装することができ、運用コストの削減につながります。次の図は -4 ~ 4V の矩形波をAD変換器を介して取り込み、波形とそのFFT解析の結果を連続で表示させたものです。なお、矩形波は一定の周波数ではなく、周波数が変調しています。

2. 主な関数・オペレーション

ここでは、上記のような機能を実装するのに有用な「NIDAQ Tools MX」関数・オペレーションをいくつか紹介します。

  1. fDAQmx_DeviceNames()

システム上のNI-DAQmxデバイスの文字列リストを返す関数です。

  1. DAQmx_Scan

NI-DAQmxデバイスの読み取りを開始するオペレーションです。以下に主なフラグとパラメータを紹介します。サンプリング数とサンプリングレートは書き出し用ウェーブのポイント数とスケールに依存します。

フラグ

  • /DEV=deviceNameStr:必須
    測定するデバイス名の文字列を指定します。デバイス名の文字列はfDAQmx_DeviceName()関数で取得することができます。
  • /BKG=doBackground:オプション
    バックグラウンドでデータを受け渡すかどうかを指定します。doBackground=0のとき、データを収集し終わってからIgor Proにデータを渡します。省略した場合のデフォルト値は/BKG=0です。

パラメータ

  • WAVES=waveParameterStr:選択必須
    データを書き出すウェーブと読み取るチャンネルを指定する文字列リストです。waveParameterStrは、”wave, channel/type;”のような構造をしています。例えば、チャンネル1のデータをDIFFモードでinputWave_ch1というウェーブに、チャンネル2のデータをRSEモードでinputWave_ch2というウェーブに読み取りたいときは、WAVES=”inputWave_ch1, 1/DIFF; inputWave_ch2, 2/RSE;”のように指定します。また、ウェーブの代わりにFIFOを使うこともできます。

3. サンプルコード

以下に、NIDAQの信号読み取りとFFT解析を同時に行う関数のサンプルコードを紹介します。

Function Main()

//デバイス名を取得
String devNameList = fDAQmx_DeviceNames()
String devName = StringFromList(0, devNameList)
//サンプリング数とサンプリングレート
Variable points = 2000, interval = 0.0001
//FFT表示グラフの縦軸の最大値
Variable fftAxisMaxleft = 2000

//NIDAQ読み取りデータ格納先ウェーブ
Make/O inputWave
//サンプリング数を指定
Redimension/N=(points) inputWave
//サンプリングレートを指定
SetScale/P x, 0, interval, inputWave
//FFT結果格納先ウェーブ
Make/O FFTWave

Variable i = 0

for(i=0;i<100;i+=1)

DAQScanMultiChan(devName, inputWave, FFTWave)

//繰り返し回数表示
print "interations : " + num2str(i)

endfor

End
//DAQScanの本体
Function DAQScanMultiChan(devName, inputWave, FFTWave)

String devName
Wave inputWave, FFTWave

//ウェーブパラメータ用リスト
//チャンネル0から読み取り
String waveParameter = NameOfWave(inputWave) + ", 0;"

DAQmx_Scan/DEV=devName WAVES=waveParameter

FFT/DEST=FFTWave/MAG inputWave

DoUpdate //結果をグラフに反映

End

4. まとめ

「NIDAQ Tools MX」では、付属の関数・オペレーションを使用することで、信号の読み取りと波形解析を同時に行うことができます。

このような機能に興味のある方は、ぜひ「Igor Pro」と「NIDAQ Tools MX」をお試しください。

30日間のデモ版もありますので、興味がありましたら デモ版申請フォーム よりお問い合わせください。