From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

NI製品ディスカッション

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

プログラム検証方法

デジタルマルチメータを用いて測定値をあらかじめ指定したテキストボックスにリアルタイム保存を行うプログラムを作成しました。しかし、実際にリアルタイムに保存されているかわかりません。リアルタイム保存を検証する方法があれば教えていただけると助かります。

宜しくお願い致します。

 

プログラムを添付しときます。

0 件の賞賛
メッセージ1/13
3,141件の閲覧回数

あいにくバージョンの関係でviが確認できませんが(当方のバージョンは相当古いので・・)、それ以前に、「リアルタイム」というのはどのくらいのリアルタイムさがご要望なのでしょうか?

そもそも「値を測定した時」と、通信を介してそのデータがPCに取り込まれそのデータがテキストボックス(表示器?)に反映される時は、同時であるわけがないので、リアルタイム検証するまでもなくリアルタイムにはならないのですが、どういう状態ならリアルタイムと考えられるのか、は、はっきりしないといけないと思います。

「テキストボックスにリアルタイム保存」が「フロントパネル上の表示器に表示」の意味で良ければ(viが開けないのですみません)、モニタのリフレッシュレートも考慮して下さい。例えばリフレッシュレートが1/60秒サイクルであれば、内部でいくらデータを表示器に書いていても、それが見た目の表示に反映されるのは最悪1/60秒後ということもありますし、1/60秒以下のデータ更新はそもそも逐一反映されません(以前、「1秒間に数千点くらい生成される点を、グラフにリアルタイムプロットしたい」といったスレッドが出たこともありましたが、どんなに速く1点1点出力してもリフレッシュレートのせいで1/60秒ごとにまとめて打たれますよ、だから100個単位くらいでまとめて打った方が見た目は同じで総合的には早い、という例もありました)

 

従って、まず、どのくらいのレイテンシならリアルタイムと考えるのか、どのくらい以下でないとどう困るのか、を示して頂いた方が良いかと思います。

 

(よく、同じように、ファイルに対してリアルタイムに保存されているか?が論じられるケースもあります。それも、いくら計測の直後にファイル書き込み関数を呼び出したとしても、内部では一時バッファにたまっているだけで一定量に達してようやく実際にファイルに書き出されたり(フラッシュするかクローズすると強制書き込みになりますが)、遅延書き込みがなされたり、と、実際の書き出しは関数呼び出しよりもっと後なのが普通だったりしますし)

0 件の賞賛
メッセージ2/13
3,107件の閲覧回数

おじゃまします。 (同じくVI見れないですが)

 

処理時間(周期)を計って、それを確認すれば良いと思います。

 

例えばですが(この方法だと1回目の周期=0になる)
①ループの「日付/時間を秒で取得」を配置
②ループのシフトレジスタに配線する。
③ループの中でも「日付/時間を秒で取得」を配置し、シフトレジスタとの差をとる。
④上記の差は、前回の処理時間となる。 それを表示器等で確認する。

 

マルチメータを使った測定ってことなので、数十ミリ秒ぐらいの周期になると思いますよ。

0 件の賞賛
メッセージ3/13
3,102件の閲覧回数

返信有難うございます。

viの写真を添付しときました。

厳密なリアルタイムは望んでいないのですが、プログラムがきちんと動作を行っているかを確認したいと思っています。

0 件の賞賛
メッセージ4/13
3,093件の閲覧回数

回答有難うございます。

viを添付しときます。

この方法では、ループの中と外に「日付/時間を秒で取得」するのでしょうか?

初歩的な質問ですいません。

回答宜しくお願いします。

0 件の賞賛
メッセージ5/13
3,092件の閲覧回数

hirohiro310様 

 

ループで繰り返して測定するような処理でしか使えません。

 

ループは入って繰る返すようなプログラミングをされているようですが
ループで繰り返して測定するようになってないような?(多分1回でループが終了 *半分推測)

 

どのように実行されるかを確認されたらわかると思います。

 

デバッグ方法(実行のハイライトがお勧め)
http://zone.ni.com/reference/ja-XX/help/371361N-0112/lvconcepts/debug_techniques/

0 件の賞賛
メッセージ6/13
3,073件の閲覧回数

ループの周期を測りたいのでしょうか?

それとも、「測定がなされて」から「保存される」までの時間差を測りたいのでしょうか?

(最初の質問からは後者だと読み取った次第ですが)

0 件の賞賛
メッセージ7/13
3,043件の閲覧回数

 

ループ中のAG3401のリード.viのエラークラスタが、きちんとシフトレジスタでシリーズに接続されていますので、エラーなく実行されているならば、値はほぼ確実に読めていると思われます。

これを前提にしたとき、画像のようなコードをループに入れるとおよそのループ速度がわかります。私はデバッグ中はよく仕込みます。お試しください。

メッセージ8/13
3,038件の閲覧回数

「測定がなされて」から「保存される」までの時間差を計測したいです。

0 件の賞賛
メッセージ9/13
3,024件の閲覧回数

回答有難うございます。

ループ速度については、測定できました。

測定値の書き込み時間を計測することはできますか?

それともループと同じ速度で書き込まれているのでしょうか?

回答宜しくお願い致します。

0 件の賞賛
メッセージ10/13
3,022件の閲覧回数