異なったサンプリングレートでのDAQmx複数チャンネルデータ集録
ハードウェア: PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers, PXI/CompactPCI>>Controllers
問題: 同一タスクで内で、異なったサンプリングレートを持つ複数チャンネルのデータ集録プログラムを構築することは可能でしょうか。
解決策: 同一タスクで異なったサンプリングレートを持つ複数チャンネルのデータ集録をするために、注意点を含め、下記の2つの方法が考えられます。
1. 全てのチャンネルのサンプリングレートが同じ公約数を持つようにし、各集録チャンネルにつきDAQmxチャンネル作成関数を複数配置する方法
NI-DAQmxにおいて、 DAQmxチャンネル作成関数を‘(目的のサンプリングレート)÷(最大公約数サンプリングレート)’ によって計算される数だけ配置します。
全てのチャンネルのサンプリングレートが公約数のサンプリングレートの倍数となり、かつデバイスの仕様上限内の場合、下記の注意をもって可能となります。以下に例を示しました。
しかし、各チャンネルの読み取りサンプル数は配置されたDAQmxチャンネル作成関数の数の倍だけ増えますが、サンプリングレートに関して、サンプリング間隔は必ずしも等間隔で行われません。
EシリーズやMシリーズのデバイスではデフォルト設定でインターバルサンプリング方法でデータ集録され、各チャンネルが1サンプル毎、マルチプレクシングによってA/D変換器へ送ります。そのチャンネル間の遅延は等間隔ではなく、AI変換クロック(コンバートクロック)によります。
つまり1チャンネルに対し複数のチャンネル作成関数を置くことによりサンプルを取る回数は増えますが、そのサンプルが取られる間隔はAI変換クロックによるものとなります。
したがって、単純にサンプリングレートが倍になるのではないことにご注意ください。
なお、AI変換クロックレートはタイミングプロパティを使用することによって制御できますので、サンプリング間隔をある程度操作することは可能です。
例; チャンネル1でサンプリングレート100S/s、チャンネル2でサンプリングレート200S/s の集録を行う場合
1. DAQmxタイミング関数のサンプリングレートを100 S/sに設定
2. チャンネル1用に1つのDAQmxチャンネル作成関数を配置
3. チャンネル2用に2つのDAQmxチャンネル作成関数を配置
上記のサンプルVI、詳細が下記のリンクにございます。
Sampling Different Channels at Different Rates with NI-DAQmx
http://digital.ni.com/public.nsf/allkb/96FD2F4685065C7686256F25006EE8DE?OpenDocument
2. 一番高いサンプリングレートで全てのチャンネルを集録し、低いサンプリングレートのチャンネルでサンプルを間引く方法
NI-DAQmxにおいて、各チャンネルが’(集録する最大サンプリングレート)÷n(整数)’のサンプリングレートを取ることが可能です。
以下に例を示しました。
この方法においては読み取るサンプル数とサンプリングレート共に指定した整数で割った数になり、サンプリング間隔も等間隔で取得することが可能です。
例;チャンネル1でサンプリングレート100S/s、チャンネル2でサンプリングレート200S/s の集録を行う場合
1. DAQmxチャンネル作成関数のソース端子に複数チャンネルを指定(Dev1/ai1:2 等)
2. DAQmxタイミング関数のレート端子に最大サンプリングレート200 S/sを入力
3. DAQmx読み取り関数の出力端子を指標配列につなぎ、指標を0とし、チャンネル1のデータを取得
4. デシメート1D配列を繋ぎ、出力の要素端子を2つ分に設定
データの間引き方法はいくつか方法があり、1例として例は配列パレットのデシメート1D配列を使用しております。

関連リンク: KnowledgeBase 3E5E6MPK: Sampling Different Channels at Different Rates with NI-DAQmx
添付:
downsampling.JPG
報告日時: 02/24/2008
最終更新日: 03/19/2009
ドキュメントID: 4INL86FF