10-31-2016 11:59 PM
初めまして、今回が初投稿になります。
私は、大学の研究でLabVIEWを用いてある2つの信号の到達時間差をナノ秒レベルで計測するプログラムを作成しようとしています。
しかし、LabVIEWでナノ秒レベルでの計測を行う方法がわかりません。
自身で調べたところでは、ミリ秒単位での計測方法しか発見できませんでした。
LabVIEWには、Nanosecound Engine(ナノ秒エンジン)というソフトウェアコンポーネントがあるということでしたので、
そちらを用いられないかと試行錯誤しましたがやはり分かりませんでした。
LabVIEWに対して勉強不足なだけなのかもしれませんが、皆様からアドバイスなどご享受頂ければ幸いです。
お手数をおかけいたしますが、よろしくお願いいたします。
それでは失礼します。
11-02-2016 01:45 AM
見つけられた資料は下記のものでしょうか?
非常に調べたうえで質問をされていると思います。
ただ残念ながら、この機能というのはハードウェア同期の話ですので、NIデバイスでnsecオーダーの同期をさせる、という話になります。
現状subaruさんがされたいのは、LabVIEWソフトウェア上でナノ秒オーダーの時間差を測定されたいのでしょうか?お使いのハードウェアにはこのような機能はないということでよろしいですか?
11-02-2016 02:10 AM
ご返答わざわざありがとうございます。
Pigniteさんがおっしゃられている通りの資料を参照致しました。
なるほど、ナノ秒エンジンはハードウウェア内部のみの機能だったんですね。
お教えくださってありがとうございます。
私が行いたいことは、外部からの信号(パルス波)をDAQmxなどを用いて検出し、
1つ目の検出が行われた際にタイマーを起動し、2つ目の検出時にタイマーを止めるというプログラムの作成です。
パルス波検出についてはプログラムの作成ができたのですが、nsの時間計測法が分からないため、
ティックカウント(ms規模ですが)関数を用いて、2回目の時間から1回目の時間を引く形で代用しているのが現状になります。
しかし、目標としましてはmsをnsまで落とし込みたいと考えています。
長々と失礼致しました。
11-02-2016 02:31 AM
nsecオーダーでの計測をされたいとなると、FPGAレベルの話になるかもしれません。。。
金額的な話もあるかと思いますが、このアプリケーションへの実現要求性はどれくらい高いのでしょう?
11-02-2016 04:59 AM
FPGAという集積回路は存じ上げませんでした。
貴重な情報を提供してくださりありがとうございます。
このアプリケーションへの実現要求性と致しましては、とても高いという状態です。
FPGAの件を教授に相談したところ、なるべく金銭を用いずにソフトウェア上で解決したいとおっしゃっていました。
しかしどうしても解決できないようであれば、ある程度の予算は考えるということでした。
その際の不安要素としましては、FPGAについて全く知識がない状態からしっかりと運用できるのかという点があります。
このFPGAの運用難度はどれくらいのものなのでしょうか?
また、FPGAを用いない方法として他に可能性のある方法はないでしょうか?
大変恐縮ですが、お教えいただけると幸いです。
長々と失礼しました。
11-02-2016 07:50 AM
こんにちは。
ティックカウント関数を用いたコードを実装しているのであれば、ティックカウント関数の代わりに、「高分解能の相対秒」関数を用いてはいかがでしょうか?
時間の確度がどこまで保証されるかわかりませんが、仕様上は小数点以下14桁の精度で相対秒を返すようなので、ナノ秒オーダーの測定も出来るかと思います。
ただ、より確実な時間測定を希望するのであれば、既出の通りFPGAを用いるなり、LabVIEW Real timeモジュールを用いるなど、LabVIEW以外にも別途購入する必要があると思います。
もし興味があるのならば、ディスカッションフォーラムに投稿するのではなく、一度NIの方に問い合わせて相談するのが良いのではないでしょうか。
11-02-2016 10:26 AM
質問者様がどこまでの精度と確度を求められているかが分かりませんが、「高分解能の相対秒」ではサブマイクロ秒の計測は難しいと思います。
Tick Count (us) - microsecond timing granularity on Windowsのコメント欄の1番目などを参照いただければわかりますが、実行環境次第で値が変わるので、ソフトウェアでは難しく、FPGAなどを使用してハードウェアで実現するしかないように思います。
参考までに、「高分解能の相対秒」テスト用のVIを作成したので、もしよければお試しください。
ちなみに、わたしの実行環境(Windows, Intel Core i7-3770 3.4GHz)での実行結果は添付画像の通りです。
11-02-2016 10:47 AM
ご返答わざわざありがとうございます。
「高分解能の相対秒」関数ですね、今まで用いたことがありませんでした。
勉強不足で申し訳ありません。
一度関数を差し替えて計測結果を確かめてみたいと思います。
加えて、FPGAなどの外部機器やNIへの相談の提案もありがとうございます。
こちらのNIサービス全般に対して、完全な初心者でしたのでこのような助言もとても助かりました。
教授ともう一度相談を行い、NI自体への問い合わせを行いたいと思います。
長々と失礼致しました。
11-02-2016 11:14 AM
ご返答わざわざありがとうございます。
精度のお話しについてですが、現在は20nsec周期のパルス波を用いてサンプル計測をしていますが、
今後使用する予定である信号に関しましては1桁nsecあたりの数値計測が出来ることが目標となっています。
「高分解能の相対秒」関数ではサブマイクロ秒の計測は難しいというご指摘、ありがたく頂戴致します。
そのご指摘に付け加えて、参照リンクの記載やテスト用のVIの添付、またMerlyさん自身の実行結果まで添付してくださり、本当に重ね重ねお礼申し上げます。
早急にこちらのテストVIを使用させていただきたいと思います。
また、先の回答者の方々と同様のFPGAなどの外部ハードウェアの使用提案もしっかりと受け止めさせていただきたいと思います。
長々と失礼致しました。
11-02-2016 09:48 PM
要求速度が1桁nsecであれば、やはりFPGAですかね・・・最速で5nsec毎の実行が可能です(関数の種類にもよりますので一概には言えませんが、"最速で"、です)
FPGAの開発は、VerilogやVHDLと比較してLabVIEWはグラフィカル環境そのままで開発が出来るので、複雑度はまだ低いです。ですが、FPGAならではの技術・テクニックは非常に多くありますので、購入されたからと言ってその日にシステムを作って動かせるようなものではないと思います。英語ですが、下記のYou Tubeで簡単な実装イメージを確認いただけます。
Writing Your First LabVIEW FPGA Program - YouTube
Single-Cycle Timed Loops in LabVIEW FPGA - YouTube
ひとつのアイデアとしては、NIさんのパートナー会社に開発を依頼することです。「アライアンス」といいますが、LabVIEWでのシステム開発を請け負ってくれる会社です。
日本のアライアンスパートナー一覧 - National Instruments Japan
いずれにせよソフトウェア単体では難しいと思いますので、NIのほうに一度相談されるのがよいと思います。