NI製品ディスカッション

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

アナログ出力の同期にかんして

解決済み
解決策を見る

現在アナログ出力を5つ同期出力する制御を検討しています。

保有しているデバイスはPCIe-6323、usb-6343、PCI-6733です。

 

出力する信号は外部からの100KHz程度のトリガをクロックとして用いて、

5つの信号を同時に開始し、再度トリガを開始トリガとして繰り返し出力するというものです。

 

4つまでならPCIe-6323、usb-6343で作成できたのですが5つ目を出力しようとすると異なるデバイス間で

同期をとる必要があるのですがうまくいきません。

PCI同志であればRSTIで接続するという情報を見かけるのですがPCIeとusbではどうしたらよいのでしょうか?

もしくはPCI6733で上記を実現できればそちらでもよいのですがご教授お願いします。

 

環境はwin7、labview 2010です

0 件の賞賛
メッセージ1/7
5,642件の閲覧回数
解決策
トピック作成者とも0830が受理

とも0830さん

 

こんにちは。

いつもお世話になっております。

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

平素より、弊社製品をご使用いただき、誠にありがとうございます。

 

デバイス間で同期を取るにあたり、重要な項目が3つほどあります。

下記に示しますね。

 

1.必要な同期の精度

仮に5チャンネルから同じ周波数、同じ位相のサイン波を出力するとして、

それぞれの出力波形の位相差はどこまで許容できるか(nsec, μsec, msec)というところを最初に決める必要があります。

必要な同期の精度によっては、デバイスやプログラミングを変更しなければならない場合があります。

 

2.クロックの共有

同じデバイスであれば、元の基準のクロックは共有していますが、異なるデバイス間では

クロックは共有されていません。

まずは、このクロックを共有する必要があります。

 

3.開始合図の共有

同じクロックを共有していたとしても

開始の合図がずれていると、例えばデバイスAではデバイスBよりも、数サンプル先に集録しはじめてしまいます。

 

さて、本題に戻りたいと思います。

今回の場合、次の方法にてできると思います。

X1.元々PCIe-6323に入っていた外部クロックをUSBデバイスのPFI端子にも分岐して、渡して同期する方法

X2. PCIe-6323で使用しているAOのサンプルクロックをPFI端子にルーティングさせて、そのクロックをUSBデバイスで使用する方法

 

これらの注意点を挙げます。

 

*1.PCI6733を使用した波形よりもチャンネル間の同期誤差は大きいことが予想されます

*2.アナログ出力のタスクを開始させてから、クロックを入力するようにしてください

(上記X1では、PCIeとUSBのタスクを開始させてから外部クロックを入力する)

(上記X2では、スレーブとなる、USBのタスクを開始させてから、PCIeのタスクを開始する)

 

 

サンプルプログラムでは

下記ページの

NI-DAQmx: Synchronize Analog Output Across Multiple Devices Using LabVIEW - National Instruments :

http://www.ni.com/example/30197/en/

 

こちらがご参考いただけると思います。

http://ftp.ni.com/pub/devzone/epd/multi-dev_synch-ao_cont-gen.zip

 

それから自習用に、データ集録でおすすめの書籍があるので紹介いたしますね。

図解LabVIEWデータ集録プログラミング

 

また、どうしてもご自身で解決できない場合は、

保守の契約が必要にはなってしまうのですが

電話やメールにて、解決まで導く

弊社の技術サポートがございますので、弊社までご相談ください。

 

それでは、無事ご所望の動作が実現できるよう、応援しています。

 

 

日本NI

技術部

小野 永輔

0 件の賞賛
メッセージ2/7
5,616件の閲覧回数

小野様

 

ご丁寧に回答いただきありがとうございます。

トリガ信号の分岐はX1.の方法実施していたのですが

”アナログ出力のタスクを開始させてから、クロックを入力するようにしてください”を行っていませんでした。

こちらを先に行ったところ所望の動作が得られました。

 

ちなみにこのタスク起動順によりタイミングが異なるのはなぜでしょうか?

お手数ですがご教授お願いします

 

 

0 件の賞賛
メッセージ3/7
5,559件の閲覧回数

とも0830様

 

お世話になっております。

NIの小野です。

 

ご所望の動作が得られたとのことで嬉しく思います。

 

なぜかと申しますと、

仮にPCIeのデバイスが最初にタスクを駆動していた場合、

トリガのクロック信号が来た時点で出力を始めてしまいます。

 

この時点でUSBデバイスはタスクが始まっていないので、遅れを取ってしまうことになります。

 

これを防ぐには、USB,PCIeのタスクを先に開始させておいてから、

トリガのクロック信号を入力させてあげることで、同期が取れるようになります。

(タスクが開始してもトリガとなるクロック信号が来なければ、アナログ出力はデータを出力いたしません。)

 

こちらでご質問の回答になっていますでしょうか。

 

日本ナショナルインスツルメンツ

技術部

小野

0 件の賞賛
メッセージ4/7
5,555件の閲覧回数

小野様

 

ありがとうございます

 

PCIeとUSBではlabview上で同時に開始しても実際の動作開始タイミングが異なる為

両デバイスをクロック待ちにしておく必要があるという理解でよろしいでしょうか?

 

0 件の賞賛
メッセージ5/7
5,552件の閲覧回数

とも0830さん

 

仰るとおりです。

仮にlabview上で同時に開始しても、あくまでソフトウェアタイミングになりますので

誤差が発生します。

 

これを失くすためにはクロック待ちの状態にしておくということが必要になります。

 

日本ナショナルインスツルメンツ

技術部

小野 永輔

0 件の賞賛
メッセージ6/7
5,550件の閲覧回数

小野様

 

ご丁寧に対応いただきありがとうございました

0 件の賞賛
メッセージ7/7
5,548件の閲覧回数