03-17-2017 03:53 AM
現在、LabVIEW 2014で Tektronix製オシロスコープ(TDS3054C)を制御しようとしています。
PCとはイーサネットで接続し、TDS3054C用のサンプルプログラムを編集していろいろ試しているところです。
サンプルプログラムにあった「Single Channel Waveform Acquire.vi」を利用し、「Configure Trigger.vi」および「Configure Edge Trigger Source.vi」で設定したトリガにかかった信号がオシロスコープでかかったときに、初めてその波形をWaveform Graphに表示したい(トリガ検出するまで待機させたい)のですが、
何も信号を入力していない状態でプログラムを実行しても、Waveform Graphに横に一本の直線が引かれてプログラム終了してしまいます。このとき、TDS3054Cの画面上には何も表示されていません(トリガ待ちの状態)。
プログラム自体を、オシロスコープのトリガ待ち状態のように、設定したトリガを検出するまで終わらない(トリガ検出したときに初めてWaveform Graphにその波形を表示して終了する)ようにしたいのですが、何かいい方法はないでしょうか。
解決済! 解決策の投稿を見る。
03-21-2017 02:28 AM
kirinmaru様
Data\Low Level\Wait for Acquisition Complete.viで待たせる(タイムアウト付)
Public\DataのRead Waveform.viをやめて
Data\Low Level\Initiate Acquisition.vi→Data\Low Level\Wait for Acquisition Complete.vi→ Data\Low Level\Fetch Waveform.vi
と実行させる。
【参照VI】
Public\DataのRead Waveform.vi
ExamplesのTektronix TDS 3000 Series Wait For Acquisition Complete Example.vi
03-21-2017 09:52 PM
su-sann5073 様
ご回答いただきありがとうございます。
ご教示いただいたとおり、
「Read Waveform.vi」で読み取っていた部分を、
「Initiate Acquisition.vi」→「Wait for Acquisition Complete.vi」→「Fetch Waveform.vi」
に置き換えて実行したところ、トリガ待機状態には入ったのですが、オシロスコープでトリガ検出してもフロントパネルには表示されず、エラー(1074004013)が返ってきました。
ここで、【参照VI】に挙げられていた「Tektronix TDS 3000 Series Wait For Acquisition Complete Example.vi」を見たところ、「Initiate Acquisition.vi」の前に、「Configuration\Acquisition\Configure Initiate Continuous.vi」が置かれており、「Wait for Acquisition Complete.vi」の詳細ヘルプにも、使用する場合にこれを置く必要があるという旨の記載がありました。
そこで、同様に「Configure Initiate Continuous.vi」を配置したところ、想定していたように、「トリガを検出するまで待機し、トリガがかかったときに初めてWaveform Graphにその波形を表示」することができました。
次の段階として、トリガにかかった波形のみを連続的に記録していくというものを目指していますが、第一段階はこれで解決しました。
03-22-2017 12:55 AM
kirinmaru様
自己解決おめでとうございます。
「Configure Initiate Continuous.vi」のパラメータはFalseですよね?
オシロの状態が繰り返し測定(STOP/RUNボタンで止める)モードになっており
その状態だとエラー(波形取得でエラー?)になるんだと思います。
見落としてました&詳細ヘルプまで見てませんでした。
03-22-2017 02:32 AM
su-sann5073 様
はい。「Configure Initiate Continuous.vi」のパラメータはFalseです。
なるほど、波形データを読込むにはシングル・シーケンスモードにしておく必要があったのですね。理解しました。
今度は先ほどの波形データ読込み部分を添付のようにForループの中に入れ、とりあえず10回繰り返すとして実行してみました。
一応、トリガにかかった波形を10個分表示することはできたのですが、毎回シングル・シーケンスモードにして画面に表示したものを読込んでいるため、次の波形を読込むのに時間がかかり、連続的に信号がきた場合読み飛ばしてしまうものがあります。
今後自分でいろいろ試してみたいと思いますが、これについて何かいい対処法がありましたら、またご教示いただけると幸いです。
ちなみに最終的には、数万個ほどのイベントを連続的に取得し、データファイル(csv等。バイナリも可能か?)に保存(「イベント毎にファイル分割」又は「一つのファイルに保存」についても後に検討)することを目指しています。
03-22-2017 06:41 PM
kirinmaru様
私の認識(知識)だと、波形をPCへ取込むのが目的であれば
トリガ待ち→測定→波形読込→トリガ待ち→測定・・・
崩せないと思います(=波形読込中は取りこぼす)。
どれぐらいの時間なんですかね?
「Fetch Waveform.vi」(ついでにグラフ表示)の実行時間を確認したほうがいいと思います。
細かいことですが、Configure Initiate Continuous.viの設定はループの前で1回実行すればOK。
03-27-2017 12:56 AM
su-sann5073 様
ご回答ありがとうございます。
確かに「Configure Initiate Continuous.vi」の設定はループの前に1回だけでよかったので、そのようにいたしました。
また「Fetch Waveform.vi」(ついでにグラフ表示)の実行時間を確認するため、添付(トリガ待機3)のようにForループの中身を変更し、トリガにかかった波形を100個分表示し、その1回1回にかかる時間(ms)を測定してみました。
入力信号として、周波数1kHz(振幅1Vpp)の正弦波を連続でオシロに入力して実行してみたところ、添付(wait for trigger1.csv)のような結果となり、毎回かかる時間は異なりますが、1つの波形を測定して読取るのにおよそ450ms~860ms程度かかる(その間にトリガにかかったものは読み飛ばす)ことがわかりました。
理想としては、LabVIEWのフロントパネル上には毎回表示しなくてよいので、オシロで繰り返し測定モードにしたときにトリガにかかるものすべてのデータをcsv等で保存できるとよいのですが、、
「トリガ待ち→測定→波形読込→トリガ待ち→測定・・・が崩せない」のであれば、やはり難しいのでしょうか。
03-27-2017 04:12 AM
kirinmaru様
>理想としては、LabVIEWのフロントパネル上には毎回表示しなくてよいので、オシロで繰り返し測定モードにしたときにトリガにかかるものすべてのデータをcsv等で保存できるとよいのですが、、
可能であれば、理想の内容をメーカ(Tektronix)に確認してもらったほうが良いかと思います。
Tektronix製TBS1000シリーズにデータ記録機能ってのがあるみたいです。
多分そちらの機能が理想に近いかと思われます。
>「トリガ待ち→測定→波形読込→トリガ待ち→測定・・・が崩せない」のであれば、やはり難しいのでしょうか。
レーコード長を小さくして波形読込を短くするとかでしょうか?
03-28-2017 07:47 PM
su-sann5073 様
昨日、Forループの中に入れた各VIの構造などを見てみましたが、波形読取時間の短縮は難しそうですね。使用しているオシロの性能による(=LabVIEWプログラムでは改善できない)のかもしれません。
メーカに問い合わせたり、可能なことを試してみたいと思います。
何か進展があれば、こちらに書き込ませていただきます。