From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
From 04:00 PM CDT – 08:00 PM CDT (09:00 PM UTC – 01:00 AM UTC) Tuesday, April 16, ni.com will undergo system upgrades that may result in temporary service interruption.
We appreciate your patience as we improve our online experience.
03-03-2010 04:05 AM
いつも参考にさせていただいております。
DAQmxでアナログ信号を生成するときの再生成モードについて
サンプルプログラムやHelp、このコミュニティの過去ログなどを見たのですが
自分の理解であっているのかどうか良くわからないので確認させてください。
DAQmxのアナログ出力における再生成モードの設定は
①再生成を許可しない
②再生成を許可-オンボードメモリのみ使用がTRUE
②再生成を許可-オンボードメモリのみ使用がFALSE
の3種類。
主な特徴としては、
①:PCメモリ上にバッファを生成し、そのバッファからDAQデバイスに直接データを書き込む。
バッファのデータは再利用されないため、常に新しいデータを書き込む必要がある。
タスク実行中にパラメータ(周波数、電圧レベル等)を変更できるが、PCの使用状況によってはバッファアンダーランが生じ
信号生成が停止することがある。
②バッファを生成せず、デバイスのFIFOメモリに直接データを書き込む。FIFOメモリのサイズはデバイスに依存し、
サイズを超えるデータは書き込めない。
タスク実行中はFIFOメモリにアクセスできないため、タスク実行中に信号のパラメータを変更することはできないが、
PCの使用状況に依存せず安定して信号を出力することが可能。
③バッファからデバイスのFIFOにデータを転送し、FIFOのデータを使用して信号を生成する。
FIFOへのデータ転送は繰り返し実行されるため、①のようにタスク実行中でも信号パラメータを変更することが可能な上、
PCの使用状況の変化等でデータ転送タイミングが遅れてもFIFOのデータを再利用するので信号出力は停止しない。
しかし、データ転送タイミングの設定をきちんと行わないと出力信号に不連続点(グリッチ)が発生する。
上記のような理解で正しいでしょうか?
特に③についてがいまいちピンときていないのですが。。。
なお、動作環境としてはLabVIEW8.5、Windowsを想定しています。
解決済! 解決策の投稿を見る。
03-08-2010 01:07 AM
平素より弊社の製品をご利用頂きまして誠にありがとうございます。
日本ナショナルインスツルメンツ技術部の巳波と申します。
1. 再生成を許可しない
PCメモリ上のバッファに書き込まれたデータがオンボードメモリ(FIFO)に転送され、オンボードメモリに書き込まれたデータが順番に出力されます。
書き込まれたデータが出力されるのは1回のみになりますので、書き込まれたすべてのデータが出力され終わった後は、出力するデータがなくなってしまいます。
このバッファアンダーランを回避するために、データを書き込むスピードがデータが出力されるスピード(アップデートレート)より速くなくてはいけません。
タスク実行中にパラメータを変更することができます。(変更後のデータがPCメモリ上のバッファに書き込まれ、このデータが順番に出力されます。)
2. 再生成を許可-「オンボードメモリのみ使用」がTRUE
PCメモリのバッファを使用せず、デバイスにあるFIFOメモリ(オンボードメモリ)に直接データを書き込み、デバイスがオンボードメモリのデータを出力いたします。
オンボードメモリのデータがすべて出力された後は、また同じデータが出力されます。
PCメモリのバッファを使用しないため、PCの使用状況に依存せず信号を出力することが可能ですが、オンボードメモリの大きさはデバイスによって決まっています。
各デバイスのオンボードメモリの大きさは弊社ウェブサイトの仕様に記載されております。
3. 再生成を許可-「オンボードメモリのみ使用」がFALSE
仰る通りでございます。PCメモリ上のバッファに書き込まれたデータがオンボードメモリ(FIFO)に転送され、オンボードメモリに書き込まれたデータが順番に出力されます。
1. と同じようにタスク実行中にパラメータを変更することができます。
仮に新しいデータが届くのが間に合わず、書き込まれたすべてのデータが出力され終わってしまった場合には、同じデータが繰り返し出力されるので信号出力が途切れることはありませんが、同じデータを再出力中に新しいデータが届いた際に、出力するデータが古いものから新しいものになる境目が不連続点(グリッチ)となって現れます。
03-08-2010 02:51 AM
巳波様
返信ありがとうございます。
③について、
>同じデータを再出力中に新しいデータが届いた際に、出力するデータが古いものから新しいものになる境目が不連続点(グリッチ)となって現れます。
再出力中に新しいデータが届いた場合、
A.古いデータが残っていても直ちに新しいデータが出力される
B.再出力中の古いデータを全部出力してから新しいデータが出力される、
C.古いデータと新しいデータが交互に出力される(ヘルプを読むとこの状況をグリッチというようですが。。。)
D.上記A~Cがランダムに発生し、決まっていない
のいずれの動作になりますか。
私の希望はBの動作になるよう規定したいのですが、そのようなことは可能でしょうか。
03-12-2010 06:51 AM
03-14-2010 07:45 PM
巳波さま
丁寧な説明ありがとうございます。
やっと再生成モードをONにしたときの挙動について理解することができました。
ありがとうございました。
また何かありましたらよろしくお願いいたします。
03-15-2010 11:07 PM
04-26-2012 12:48 AM
お世話になります。
関連した質問ですので、こちらでお願いさせて頂きます。
再作成の制御に関する関数がどれなのだかいまいちわかってません。
①再生成を許可しない
再作成の許可不許可自体は「DAQmx書き込み」”プロパティノード”で選択可能だということはわかるのですが。
②再生成を許可-オンボードメモリのみ使用がTRUE
②再生成を許可-オンボードメモリのみ使用がFALSE
の”オンボードメモリのみ使用”の選択の方法がわからないです。
どの関数を用いればよいでしょうか?
LabVIEWのバージョンは10.0です。
以上、よろしくお願い致します。