NI製品ディスカッション

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

入力されたパルスの総数とパルスとパルスの時間間隔の両方を同時に計測したい

こんにちは.hat810と申します.私の所属する研究室では,イオンが飛んで来るたびに,パルス信号を発生させ,そのパルスをNI PXI-6221(端子台SCB-68経由)を用いてLabVIEW8.0へ入力しています.

 

私が計測したいのは,

①決められた時間(60秒間)に入力されたパルスの総数をカウント

②パルスとパルスの時間間隔(次のパルスが来るまでの経過時間)(データ数は入力されたパルスの個数分だけ)

この2つを同時取得したいと思っています.色々やってみたのですが,②の機能をどう実装するか困っており,ご教授願いたい次第です.

 

パルスが来る周期はどれだけ速くともだいたい数10μs周期です.

ですので②の時間間隔の精度はある程度余裕を持たせて0.5μsで動かしたいと思っています.

添付ファイルには,自分なりに組んでみたプログラムを添付しています.ティックカウントを用いて1msの時間分解能で測定しているつもりですが,計測時間はブレブレとなっており,別のもっと良いアプローチが必要だと感じています.

ご助言等いただけないでしょうか.よろしくお願いします.

0 件の賞賛
メッセージ1/4
2,410件の閲覧回数

おはようございます。

 

①の部分はできておりますか?60秒間のカウント数を足して表示する必要があるかと思いますが。。

②の部分についてはPXI-6221では無理そうですね。最大サンプリングレートが250kHzなので、最大4micro秒間隔で測れます(アナログ入力1チャンネル前提、チャンネル数が増えると各チャンネルのサンプリングレートは減ります)。0.5micro秒間隔を測りたいのであればFPGA搭載製品じゃないと厳しいですね。WindowsOS自体がms以下の精度の確定性はないので、、

 

PXI-6221はこの用途で購入されたのでしょうか?

0 件の賞賛
メッセージ2/4
2,348件の閲覧回数

dragon1様

 

ご回答ありがとうございます.①の機能ですが,[DAQ Assistant] Expressのエッジカウントを用いて作っております.[DAQ Assistant] Expressのエッジカウント自体がもともと,プログラムをスタートしてから,リセットされるまでカウントを積算する機能となっているようで,きっちり60秒間プログラムを動かしてやれば60秒の間にやってきたパルスの総数は自ずとわかるようになっているようです.したがって②の機能は実装せず①の機能に集中させれば実用レベルのものは出来上がっております.

 

②の機能ですが,PXI-6221では厳しいのですね.LabVIEW関連のシステムは私が配属されるずっと前からありまして実は①と②の機能を両方持つVIが受け継がれてはいます.しかしVIの説明などは残っておらず,さらにLabVIEWでのプログラミングを初めたばかりということでブロックダイアグラムを見ても解読できなかったので最初から自前で作ってみようと思い立ちました.PXI-6221はもともと①の機能だけのために購入したようです.

当研究室の過去の論文ではサンプリング時間0.5μsとあり,dragon1様のご指摘と食い違いますので,一度確認致します.

現在では受け継いだVIでサンプリング周波数5kHz,すなわち0.2msの時間精度で計測しています.したがってせめて0.2msの時間精度で②の機能を実装したいのですが,私が作ったVIではこの時間精度でも経過時間が正しく計測されず,例えば測定時間を60sと設定しても,実際の測定時間は100sを越えてしまいうまく動かない状態です.

一応受け継いだVIも添付致します.

 

hat810

すべてをダウンロード
0 件の賞賛
メッセージ3/4
2,336件の閲覧回数

んー、VI拝見しましたが、hat810様のもの、受け継がれてきたVIともに、良くない書き方が多いです。細かいものまで全部指摘するのは大変なので、一部にとどめます。

(1) ループ内で配列連結追加を行っている

(2) ループ内での不必要なデータ型の強制変換が多い

これらはメモリの再割り当てにつながるので、実行速度に影響します。特に(1)はかなり効いてきます。長時間実行すると動作が遅くなったりしませんか?

(3) 「ティックカウント」関数の使い方がおかしい

これはPC内のミリ秒タイマーの値を返す関数で、経過時間を表すものではありません。経過時間を知りたければ、ループ間で差を取ります。

(そもそも、受け継がれてきたVIでは計測終了後に間隔をカウントしているようですが、リアルタイムでカウントしたい理由はありますか?)

 

また、機能に関しても、(1)に集中すれば実用レベルとおっしゃっていますが、挙げられたようなms切るパルス間隔だと取りこぼしだらけです。それは実用上問題にならないのですか?


ここからはVIに関係のない忠告ですが、大学は教育機関でもあるとはいえ、車輪の再発明にことさら時間をかけるべきではありません。

もし自分で全て作り直してちゃんとしたものにしたいのであれば、時間節約のためにLabVIEWの実践集中コースとデータ集録コースを受けられた方がいいと思います。このまま独学で進めても、あまり良いものはできないだろうと思います。

もし東京や大阪に行くのが大変なら、e-learningもあるので、指導教員に頼んでみましょう。アカデミック価格はかなり割安です。

大学にサイトライセンスがあれば、無料でSelf-paced Online Trainingが受けられることもあります。

0 件の賞賛
メッセージ4/4
2,313件の閲覧回数