11-28-2011 05:43 AM
只今,サンプリングレート1000Hzで予め作成しておいた任意波形を出力し,
同時にサンプリングレート200Hzでデータを集録するといったプログラムを作成しております.
このとき集録の開始と共に,出力が開始されるようにしたいと考えております.
これを実現するため,入出力の集録モードを共にNサンプルとし,
開始トリガを用いることで入出力を同期させたプログラムを作成しました.(DAQアシスタント内の入出力のプログラムをひとつにまとめた形です)
このプログラムを用いて50秒程度の波形を出力データとして選び,実行したところ思い通りの動作が行えていることを確認しました.
しかし,用いる出力波形を200秒程度のものとした場合,『タスクが設定された時間内に終了しませんでした』というようなエラーが発生します.
タイムアウトを無効にするといつまでも処理が終わらない状態になります.
おそらくこの原因は,出力するデータ数が非常に多いためであると考えています.
これを解決するため,入出力共に集録モードを連続サンプルとするため,Nサンプル集録時の入出力のプログラムをwhileループ内に入れ,
サンプル数を減らし実行したところ,『ループ内での処理が間に合わない』といったエラーが発生し,どのようにプログラムを修正すべきか困っているところです.
そこで,
・Nサンプルで多くのデータ点数(今回では200s×1000Hz=200000点)を出力する方法
・連続サンプルで異なるサンプリングレートで入出力を行う方法
についてアドバイスをいただけないでしょうか.
なお用いているデバイスは『NI USB-6259 BNC』です.
またNサンプル集録時に用いているデータの入出力に当たる部分のプログラムを添付します.
宜しくお願いします.
11-30-2011 02:21 AM
T-matsu 様
今回出力される2つのエラーですが、エラーコードをお教え頂けますでしょうか。
次いで、お客様の方で添付していただいた画像を拝見したとこと、かなり精通した VI を作成しているようですが、VI に元々存在するサンプルは既にご参考いただいていますでしょうか。単純なものではありますが、そちらをお試し頂けたらと思います。
AI-AO の同期のサンプルは以下の方法で検索できます。
LabVIEW のメニューバーのヘルプ >> サンプルを検索 >> ハードウェア入力と出力 >> DAQmx >> 同期 >> マルチファンクション >> Multi-Function-Synch AI-AO.vi
CS. Hara
12-04-2011 11:56 PM
Hara 様
返信が遅れてしまい申し訳ありません.
添付したVIはDAQアシスタントのブロックダイアグラムをそのまま使ったものです.
このVIを使ってNサンプルによる入出力は実行できています.
しかし,出力データが周波数1000Hz,50秒までは特に問題なく実行できるのですが,200秒となりますとエラーコード“200560”が出まして
タイムアウト以内にタスクが完了しなかったとの問題が発生します.タイムアウトを-1で無効化したところ,何も出力せずフリーズしたような形となります.
この問題は200000点をまとめてNサンプルで出力しようとしているからだと考えています.
なお,この出力データの周波数1000Hzは入力するハードウェアの仕様上変えることができません.
また出力データは任意波形であり,最初にcsvファイルから読み込みます.
そこで,連続サンプルでデータを出力するという形に変更したいのですが,プログラム開始時にのみ入力と出力を同期させ,
出力は1000Hz,入力は200Hzでループさせる方法が分からず詰まっている状態です.
ご指摘いただきましたサンプルの『Multi-Function-Synch AI-AO.vi』はNサンプルで出力しつつ,連続サンプルでデータを参照しているのではないでしょうか.
よろしければ添付した画像中のどの部分をループ内に入れるべきかお教えください.
宜しくお願いします.
12-07-2011 04:52 AM
T-matsu 様
AI-AO のそれも AO 側の有限サンプルの同期ということなのですが、DAQアシスタントのフロントパネルを開いてそれを編集するよりも、一から作成したほうが恐らく正確に作成できるかと思います。
Multi-Function-Synch AI-AO.vi は参考までにご紹介させて頂きました。他の同期などもご参考いただきながら作成頂けたらと思います。
次いで、弊社のコミュニティーサイトからカウンタを使用した AI(連続サンプル)-AO(有限サンプル)の同期 VI をご紹介させて頂きます。
Generate a Finite Waveform and Read the Response
https://decibel.ni.com/content/docs/DOC-11691
英語で大変恐縮ですがご参考頂けたらと思います。
CS. Hara
12-08-2011 12:46 AM
Hara 様
度々のご返答有難うございます.
私が行いたいのはAI(連続サンプル)-AO(連続サンプル)でして,
AIが200Hz,AOが1000Hzでのサンプルレートにしたいと思っています.
言葉が足らず申し訳ありません.
連続サンプルとした場合,DAQmxの関数はそれぞれWhileループ内に入ると思いますが,
その際のサンプリングレートが異なる入出力を同期させつつ,それぞれのDAQmx関数とWhileループをどのように配置すべきかが分かっておりません.
これを実現する方法について教えていただけないでしょうか.
もしくは,現在,問題となっている有限サンプル出力の際の,一度に出力するデータ点数(200000点)が多すぎてエラーが発生している部分について,
他の回避方法等あればお教えください.
宜しくお願いします.