NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

デジタル変化検出

解決済み
解決策を見る
解決策
受理者 shinichiro

shinichiro 様

日本ナショナルインスツルメンツ技術部のワカスと申します。

 

ご存知の通り、ハードウェアタイミングでディジタル入力を行う際、サンプリングレートを
指定するために、外部のクロックソースが必要となります。デジタル変検出をご使用頂くと
サンプリングレートを変化することができかねます。そこで、ディジタル入力をご利用頂くとご希望の
サンプリングレートを指定することができます。

 

今回、アナログ入力も同時に行われるようですので、そこで、アナログ入力のai/SampleClockをディジタル入力チャンネルのタイミングで指定して頂ければと思います。


この場合、アナログ入力とディジタル入力を同期させる方法が考えられます。

 

簡単なサンプルプログラムを添付致しますので、是非ご確認頂ければと思います。

お手数ですが添付のサンプルにより意図されている動作が確認できるかどうか、経過をお知らせいただければと思います。

宜しくお願い申し上げます。

0 件の賞賛
メッセージ11/38
1,575件の閲覧回数

日本ナショナルインスツルメンツ技術部 ワカス様

 

回答ありがとうございます。無事に動作し、とても参考になりました。また何かあれば相談したいと思います。

それと、先ほど投稿した質問にもできればお答えいただきたいのよろしくお願います。

PXI6254において、1MS/秒(マルチチャンネル)、1.25MS/秒(1チャンネル)とありますが、マルチの場合はすべてのチャンネルの合計の

サンプリングレートが1MS/秒までという事でしょうか?それともそれぞれのチャンネルで1MS/秒までとれるという事でしょうか?

0 件の賞賛
メッセージ12/38
1,570件の閲覧回数

shinichiro 様

 

日本ナショナルインスツルメンツ技術部のワカスと申します。
ご連絡頂きましてありがとうございます。

ご質問頂いた点についてですが、PXI6254において、マルチチャンネルの場合はすべてのチャンネルの合計のサンプリングレートが1MS/秒までとなります。

 

また、前回お送り致しましたサンプルプログラムにて、アナログ入力と同じサンプリングレート(30,000Hz)でディジタル入力を行うことができると思います。

 

今後とも宜しくお願い致します。

0 件の賞賛
メッセージ13/38
1,561件の閲覧回数

日本ナショナルインスツルメンツ技術部 ワカス様

 

デジタル入力を添付(multi_0823_b)のように加えると、Dev16のほうのwhileは動きますが、Dev3,4,5のほうほwhileループが回りません。

しかし、デジタル入力のDAQmx Timing.viを消して実行すると正常に動きます。この原因がDev16をアナログ、デジタル入力の両方で使って

いることが原因と思い、添付(multi_0823_c)のようにアナログ入力を消すと、Error -50103 occurred at DAQmx Start Task.vi:5と出ます。

 

この原因と対処法はどのようなものでしょうか?ご教授お願いします。

すべてをダウンロード
0 件の賞賛
メッセージ14/38
1,488件の閲覧回数

shinichiro 様

 

ご連絡頂きましてありがとうございます。
ファイルをご添付頂きましてありがとうございます。


今回発生したエラー-50103の原因と対処法について、

弊社の下記リンクに記載されておりますので、ぜひご参照頂ければと思います。

 

NI-DAQmx エラー -50103 “指定したリソースは予約されています” が生じる原因:
http://digital.ni.com/public.nsf/allkb/09929182FB4BCA57862575A000035443?OpenDocument

 

以上、宜しくお願い致します。

0 件の賞賛
メッセージ15/38
1,475件の閲覧回数

回答ありがとうございます。

繰り返しになるかもしれませんが以下の質問に回答お願いします。

添付のviで変化検出を行っているのですが、立ち上がりだけを設定した場合、4回立ち上がってから一気に

whileループのカウンタが4回インクリメントされます。同様に、立下りでも同じです。立ち上がりと立ち下りを

設定すると合計で4回変化が起こってからwhileループのカウンタが4回インクリメントされます。LEDもデジタル値が

4回変化してから点灯します。Digital Inputでは正常に検出できています。

この原因はなんでしょうか?

 

0 件の賞賛
メッセージ16/38
1,463件の閲覧回数

shinichiro 様

 

ご連絡頂きましてありがとうございます。

ファイルをご添付頂きましてありがとうございます。

 

ご指摘頂いた現象をこちらにもご確認させて頂きました。

弊社のデータベースを調べ致しましたところ、該当する回答が見つかりませんでした。

 

本現象に関しましては、当方から確実な回答を差し上げる為に本社に問い合わせております。
shinichiro 様には、米国本社から返答があり次第ご連絡差し上げます。

 

大変ご迷惑をお掛け致しておりますが、ご了承をお願いいたします。

宜しくお願い申し上げます。

 

0 件の賞賛
メッセージ17/38
1,452件の閲覧回数

日本ナショナルインスツルメンツ技術部 ワカス様

 

回答ありがとうございます。

他の質問になるのですが、添付ファイルでは30,000Hzと4000Hzでアナログデータを取得していおり、DAQmx Readのnumber of samples per channelは

それぞれ3,000と400としています。Mシリーズではオンボードのクロックが20Mなので、厳密な30,000Hzは作れず30030.0300...Hzとなります。

http://digital.ni.com/public.nsf/websearchj/134CC419824199D986256F88000B31ED?OpenDocument

そのため、number of samples per channelをそれぞれ3,000、400すると、それぞれのデバイスでwhileを更新するタイミングが異なってきます。これは長時間計測するにあたり

問題にならないでしょうか?

 

また、正確に30,000Hzとすることはできないでしょうか?

ご教授お願いします。

0 件の賞賛
メッセージ18/38
1,448件の閲覧回数

shinichiro 様

 

ご連絡頂きましてありがとうございます。
ファイルをご添付頂きましてありがとうございます。

ご質問頂きました点についてですが、下記のように回答致します。


>30,000Hzと4000Hzでアナログデータを取得していお​り、DAQmx Readのnumber of samples per channelは

それぞれ3,000と400としています。それぞれのデバイスでwhileを更新するタイミング​が異なってきます。

 

この場合、While ループの読み取る速度は両デバイスにおいて、 30,000/3000 =4000/400=10になります。一秒間にWhile ル

ープが10回更新されますので、収集には問題はございませんと思います。

ただし、データを読み取りでタイムアウトやデータが上書きされないようにご注意して頂ければと思います。


>サンプリングレートが 30​,000Hzは作れず30030.0300...Hzとなります。

ご存知の通り、ユーザが指定したレートと実際にADコンバータに適用されるレートは必ずしも同じではありません。
実際にADコンバータに設定できるサンプリングレートは自由自在な連続的な値ではなく、とびとびの値です。

ActualサンプリングレートはTimebaseを分周して生成されています。
内部クロックを使用する場合は20MHzのTimebaseを分周し、サンプリングレートを決定しています。

 

例えば、10MHzをサンプリングレートとして設定した場合、20MHzのTimebaseの2パルス毎にカウントします。
立ち上がりでも立下りでもない時点でカウントすることはできませんのでサンプリングレートはTimebase を整数で割っ

た値になります。

 

またサンプリングクロックの精度については以下のリンクに詳細がございますので
宜しければ是非ご覧ください。

サンプリングクロック精度と周波数測定値精度の決定方法
http://digital.ni.com/public.nsf/allkb/09292D16F4F34A17862571260040F509?OpenDocument

たとえばユーザがレートに4,1000 Hzを指定した場合、実際には20,000,000/487 = 41067.8 Hz がADコンバータに適用

されます。

 

お手数ですが、正確に30000Hzのサンプリングレートを作成することはできないと思います。

 

宜しくお願い申し上げます。

0 件の賞賛
メッセージ19/38
1,438件の閲覧回数

日本ナショナルインスツルメンツ技術部 ワカス様

 

回答ありがとうございます。

 

>この場合、While ループの読み取る速度は両デバイスにおいて、 30,000/3000 =4000/400=10になります。一秒間にWhile ル

ープが10回更新されますので、収集には問題はございませんと思います。

 

30,000Hzにすると、実際には30030,..Hzとなるので、一秒間に更新される数は30030/3000=10.01となり、少しずつ4000Hzのデバイスと

whileを回るタイミングが異なってくると思うのですが問題ないのでしょうか?

 

また、デジタル変化検出がうまくいかまいので、デジタル入力で変化検出をしたいと思っているのですが変化した際のタイムスタンプを取得するには

どのようにすればよろしいでしょうか?デジタル入力のsample rateは30,000で、Digital Wfm 1Chan Nsampでnumber of  samples per channelを

3000にしたいと思っています。

 

よろしくお願いします。

 

0 件の賞賛
メッセージ20/38
1,429件の閲覧回数