03-31-2015 05:45 AM
LabVIEW初心者で初めての投稿です。何か無礼なことがありましたらご容赦ください。
現在、2つの周波数カウンタを用いて別々のパルスの周波数を測定しつつそれらの値をまとめて1つのファイルに書き込むというVIを作成しております。(添付VI参照)
このVIを用いて2つの周波数カウンタで同じパルスを測定したところ、本来ならば同じ値が2つ出てくるはずなのになぜか微妙に異なる値が出てきてしまうことがわかりました。
周波数カウンタ側の問題かもしれませんがLabVIEWのプログラムの組み方の問題かもしれないのでぜひともLabVIEWに詳しい方に原因を教えていただきたいです。
よろしくお願い致します。
04-01-2015 10:22 PM
こんにちは。
気になる点を何点か
・「同じ値」と「微妙に異なる」というのは、どのくらいの精度の話でしょうか
計測に誤差はつくものですので、14 と 14.00001 を同じ値として扱うケースも十分あるかとおもいます。
・最終的な値の確認はどこでしてますか
ソフトでもハードでも問題の切り分けは必要です。
ファイルに保存されている値がおかしければ、書き込む直前の値を確認してください。
書き込む直前の値がおかしければ、値が作成される部分を確認してください。(今回は周波数カウンタのドライバ VI の部分)
ドライバ VI からの値がおかしければ、周波数カウンタ側の値を確認してください。(ディスプレイなどでデバッグできるかと)
04-07-2015 07:04 AM
ご指摘ありがとうございます。
それぞれについてお答え致します。
・同じ値というのは完全に1の位まで数字が一致することを想定しております。微妙に異なるというのは10の位から異なるということです。
具体的には、現在1GHzのものを計測するときに2つの周波数カウンタの出力値の差の標準偏差が約10Hzという状況です。
・最終的な値の確認はファイルに保存されている値を用いていました。ご指摘いただいてから確認したところ周波数カウンタのディスプレイに表示される値の時点で差があるようです。この確認のときに分かったのですが、カウントのタイミングが同じではないようです(数値がディスプレイに表示されるタイミングが一緒ではないようです)。
そこで、お聞きしたいのですが自分はミリ秒待機VIで同時測定するようプログラムしたつもりだったのですがこれは間違っているのでしょうか。(同期に関しては他にオカーレンスやランデブーなどのVIがあるようですがよくわかりません)
04-07-2015 11:34 PM
周波数カウンタのディスプレイで表示されている値が異なっているということですので、LabVIEW よりもまず周波数カウンタ側の同期などが必要になるかと。
LabVIEW のプログラムから二つの周波数カウンタに集録開始のコマンドを同時に送ったというプログラムを書いてもミリ秒単位のズレが発生します。
1Ghz の周波数を扱える周波数カウンタであれば、トリガ信号をもとにカウント開始をする機能があると思いますがいかがでしょう。
そういった機能があれば「カウント開始をトリガ信号をもとに行う」という設定を行う周波数カウンタ用のVI が用意されていると思います。
ちなみに二つの周波数カウンタで1 Hz 単位で同じ値が出るはずということですが、
仕様と入力している信号については問題ないと仮定していいのでしょうか。
04-09-2015 10:55 PM
アドバイスしていただき誠にありがとうございます。
トリガ信号をもとにカウント開始をする機能を用いたところ1Hz単位で同時測定することができるようになりました。
ただ、それはLabVIEWを用いないときはできるのですがLabVIEWを用いるとずれて測定するようになってしまいます。
具体的に説明させていただくと、1Hzのトリガ信号を用いて測定した際に片方の周波数カウンタが測定したあとに
残りの周波数カウンタが測定するという状態です。1Hzなので1秒ごとに測定するはずなのですが、順々に測定しているので結果として
2秒ごとにしかもバラバラに測定していることになっています。
「実行のハイライト」を用いてLabVIEW上で確認するとループの中で測定が同時ではなく片方が測定したあとにもう片方が測定するという状態になっていることがわかりました。
これを同時測定にするにはどうすればよろしいでしょうか。
何回も質問してしまい申し訳ありませんがご回答よろしくお願い致します。
04-13-2015 04:08 AM
plusnine様、
こんにちは、
いくつか気になる事があります。
>>ただ、それはLabVIEWを用いないときはできるのですがLabVIEWを用いるとずれて測定するようになってしまいます。
これは別のプログラムを利用すると同期測定が可能と言う事ですか?具体的にどういった状態ですか?
>>2秒ごとにバラバラに測定していること
もし可能でしたら、この状態のスクリーンショットを見せてもらってもよろしいですか。
同期測定動作を確認するためには「実行のハイライト」よりは「プローブ」を利用することをお勧めします。「実行のハイライト」はゆっくりデバッグを行うため、この場合は適切ではないと思います。
04-13-2015 06:28 AM
コメントありがとうございます。
それぞれお答え致します。
>>これは別のプログラムを利用すると同期測定が可能と言う事ですか?具体的にどういった状態ですか?
同期測定可能というのはLabVIEWで制御しないで(パソコンを周波数カウンタにつながずに)ただ周波数カウンタを動かしたときということです。
>>もし可能でしたら、この状態のスクリーンショットを見せてもらってもよろしいですか。
添付ファイルご参照ください。個人的にはwhileループの中では同時に周波数カウンタのVIが進行すると思っていたのですがどうも違うような気がしてきました。自分の目的は2つの周波数カウンタで同時測定して得られた2つのデータを1つのファイルに書き込むというプログラムを作ることなのですが、うまくいかないのが現状です。タイミングストラクチャや生産者消費者ループを試したのですがイマイチです。
04-14-2015 05:55 AM
私も計測機専門家ではないのではっきりした答えは無いですが気になる点があります。
While ループ内では同期するためのコードを使いになっているので問題無いとおもいます。フロントパネルを見ないとわからないですが、「Configure Reference Oscilloscope」関数と「Configure Arming」関数が少し怪しいです。
1.「Configure Reference Oscilloscope」関数では外部信号をTimebaseとして測定するとおもいますが、こちらにはどのぐらいの高周波数信号を入力していますか?それに両方同じTimebaseを参照していますか?
2.「「Configure Reference Oscilloscope」関数が両方実行された後に両方のConfigure Arming」関数は同じタイミングで実行される必要があります。添付ファイルのとおりにエラーの配線をすると両方のArming関数が両方のReference関数後に同じタイミングで実行します。
ちなみに、お使いになっている計測器はTektronixのカウンタですか?Picotestのカウンタですか?機械の組み合わせはどのようになっていますか?
フロントパネルや信号のズレも見れるともっとはっきり判断出来るとおもいますが。。。
04-14-2015 09:21 PM
申し訳ございません。
添付ファイルを忘れていました。
04-15-2015 12:06 AM
>>1.「Configure Reference Oscilloscope」関数では外部信号をTimebaseとして測定するとおもいますが、こちらにはどのぐらいの高周波数信号を入力していますか?それに両方同じTimebaseを参照していますか?
10MHzのRbクロックを両方の周波数カウンタに接続して用いてます。ちなみに、External Armは1HzのTTLを用いてます。
>>2.「「Configure Reference Oscilloscope」関数が両方実行された後に両方のConfigure Arming」関数は同じタイミングで実行される必要があります。添付ファイルのとおりにエラーの配線をすると両方のArming関数が両方のReference関数後に同じタイミングで実行します。
試してみましたがズレがでました。ただ、今回はたまに片方が1秒間隔で測定することがあることがわかりました。具体的には今までは1秒ごとにA→B→A→Bという感じだったのですが今回はA→B→A→Aという時がたまにありました(AとBが逆のときもありました)。
>>ちなみに、お使いになっている計測器はTektronixのカウンタですか?Picotestのカウンタですか?機械の組み合わせはどのようになっていますか?
今はTektronixのカウンタを2台使っています。
>>フロントパネルや信号のズレも見れるともっとはっきり判断出来るとおもいますが。。。
添付画像1をご覧ください。チャートに表示されてるのはシグナルジェネレーターからの1GHzの信号を2台の周波数カウンタで測定した結果です。ゆらいでるのはシグナルジェネレーター自体のノイズがかかわっているからだと思われます。すごくゆらいでるように見えるかもしれませんがこれでも2台の結果の差をとって標準偏差を計算すると0.2Hzくらいです。ちなみに、2台ともフロントパネルでの設定は同じにしております。Rbクロックを外部リファレンスとしてまた1HzのTTLをExternal Armとして立ち上がりで測定開始、立ち下りで測定終了です。
添付動画(gifファイル)はLabVIEWで制御中の周波数カウンタのパネルです。ご覧の通り、交互に測定されてることがお分かりになると思います。個人的には添付画像2に書いたことが起こってる気が致します。