09-27-2010 12:17 AM
いつもお世話になっております。
添付させていただきました図1のプログラムの中で、計測した電流値を積分して累積電荷量を求めています。
データを細かく取るために、待機時間を「1000ms→100ms」に変更したところ、所定の電荷量までに要する時間が約10分の1になってしまいました。
1000msの場合と100msの場合とで測定している電流値に違いがないため、プログラム内の「積分(Sum[Xdt])」は1000ms以外の場合には適していないのでしょうか。
「積分(Sum[Xdt])」のdtは、どこが決定しているのかがわかりませんでした。
100ms毎で積分していくために何かいい方法はありますでしょうか。
将来的には100msよりもう少し短くできればと思っています。
とても初歩的な問題で恐縮ですが、ご助言いただけると有り難いです。
よろしくお願いいたします。
解決済! 解決策の投稿を見る。
09-27-2010 05:37 AM
こんな感じのは、どうでしょうか?
10-05-2010 04:17 AM
xyzz様、返信が大変遅くなりまして申し訳ありません。
ご指摘ありがとうございました。
添付してくださった画像のようにしましたところ、上手く100msで動作することができるようになりました。
積分(Sum[Xdt])のdtがどのようになっているのかわからないのですが、保存されたデータを見ると、ループの待機時間に関わらず電流値に相当するデータが入ってくるたびに足し合わされているように思いました。
上手く表現できず申し訳ないのですが・・・。
同様の方法で10msの場合を試してみたのですが、上手く動作させることができませんでした。
サンプリングレートも大きくしてみたのですが、保存されたデータを見るとおおよそ40ms毎の記録になっていました。
何かが原因して制約がかかってしまっているのでしょうか。
本当にたびたびで申し訳ないのですが、アドバイスをいただけると幸いです。
10-06-2010 12:10 AM
波形を入力すると波形データ内のdtが効いてきます。
10-06-2010 12:43 AM
設定した周期よりも、実際の周期の方が大きい場合は、
ループ内の処理が設定した周期では完了出来無いという事です。
今回の場合はループ毎に、ファイル保存しているので
ファイル保存を処理1シーケンスから切り離し、次のシーケンスに移動、もしくは
新規シーケンスを作成すれば
処理1シーケンスにかかる時間は短くなります。
周期時間をだんだん短くしていった時に、周期時間のバラツキが出た場合は、
他アプリーケーション等の割り込み処理等によって、定周期性が確保できません。
根本的な解決策は、リアルタイムOSのシステムに変更しないといけないと思います。
が
その前に定周期性が必要な所をシンプルにして処理を軽くする。
(必要最低限の処理にする、ロアレベル関数に変更する。)
ループをタイミングループに変更してみる。
をやってみてください。
10-06-2010 08:06 PM
安定したdtを得るためには 連続サンプル集録 にした方が良いと思います。
dtはDAQデバイスが制御するので安定しています。
10-13-2010 01:04 AM
xyzz様、再び返信が大変遅くなりまして申し訳ありません。
ご指摘ありがとうございました。
添付してくださった画像のようにしようと試みたのですが、添付した画像の赤枠部分が必要なことと、ループ毎の保存データが必要なため、波形作成のdtの値を効かせることができませんでした。
まだタイミングループを試したことがないので、そちらを試してみたいと思います。
10-13-2010 05:51 AM
まずは
ループ毎のファイルへの書き込みが時間がかかると思ったので
ループごとにメモリー(チャートの記録、シフトレジスタ等)に溜め、
ループ終了時に溜めたデータを一気にファイルに保存すれば、
ループ毎の処理が軽くなると思ったのですが。
後でまとめてデータのファイル保存をしても良い場合は、試してみてください。
10-13-2010 07:04 AM
DAQアシスタントの設定が
Nサンプルの場合、毎回初期化を行っていると思うので
連続サンプルに変更することによって初期化の時間分だけ
処理が軽くなると思います。
間違っていたらすみません。
10-15-2010 05:10 AM
ザックリとしていますが、連続サンプル案をUPしておきます。