10-14-2019 02:16 AM
今電圧降下の測定を自動で行うプログラムを作成しています。
USB6210のデジタルエッジ機能とDAQmxトリガを使って待機時間を設定し電圧降下部分だけ測定しています。
今電圧降下だけを取り出して測定をするところまでできたのですが、このVIだと電気接点を開閉するごとにデータを保存してしまいます。
自分が行いたいのは2000回ごとに10回だけ電圧降下を保存するプログラムを作りたいのです。
どうしたら出来るのかわかる方がいましたら教えてほしいです。
よろしくお願いします。
解決済! 解決策の投稿を見る。
10-14-2019 03:07 PM
平素よりNI製品をご愛顧頂きありがとうございます。
日本ナショナルインスツルメンツ技術部の上野です。
添付いただいたVIでは、有限サンプルモードで1000点のアナログ入力を行うコードをWhileループが止まるまで繰り返すように作成されているかと思います。
アナログ入力はそのままでソフトウェア的に保存する保存する値を絞り込みたいと言うことでしょうか?
それでしたら、保存部分をケースストラクチャで囲み、条件を満たしたらTrueになるようなアルゴリズムを作成し、Trueケースに保存VIを配置しておけば、Trueケースになる条件のときだけデータが保存されます。
10-15-2019 02:05 AM
このVIを実行するとこのcsvファイルのように1回、2回、3回と停止ボタンを押すまで1000個のサンプル数を平均して接触抵抗を出してくれます。
ここから1回、2回、3回と記録していき10回まで記録したら、次は2001回、2002回、2003回と記録をしていき、2010回まで行ったら次は4001回、4002回、4003回と自動で記録してくれるようにしたいのです。
このようにするためにどうしたらいいのか悩んでいます。
説明下手ですいません。ぜひよろしくお願いいたします。
10-15-2019 03:35 AM
回数は、i端子の数を保存しておりますので、ループ回数をケースストラクチャが動作する条件とすることが可能です。
たとえば、商と余り関数で2000で割り切れる数から10点はTrueになる条件を算出する方法や予め保存したい数を配列に準備しておき、それを比較関数を使用する方法も考えられます。たとえば、下記のようにすれば、任意の回数で保存する条件を作成可能です。
10-15-2019 04:40 AM
ありがとうございます。
例えば自分が添付したVIですとどの部分に実装すれば良いのでしょうか?
何度も質問すいません。
10-15-2019 05:03 AM
保存処理のみを特定条件下で行いたいのでしたら、ファイルI/Oをおこなっている部分を含めればよいかと思います。なお反復端子(i)は含めないでください。
10-16-2019 01:38 AM
返信ありがとうございます。色々と試してみたのですができませんでした。
forループはこの場合使う必要はあるのでしょうか。
理解ができず申し訳ありません。
10-16-2019 03:47 AM
Forループは、現在ご使用のWhileループの代わりに自動停止する目的で使用しております。事前に準備した配列に含まれている要素の値の場合、Trueケースが実行される仕組みということは分かりますでしょうか?
10-16-2019 03:50 AM
わかりました。返信ありがとうございました。
10-17-2019 07:11 AM
何度も質問申し訳ありません。
教えてもらったことを理解した上での質問です。
このVIだと自分の中では指標配列部分に打ち込んだ数値の時だけ保存し、保存が実行されたら指標配列の指標の部分がインクリメントによって1ずつ増加していき、次の指定した回数の時にまた保存が実行されるというようなイメージです。
しかしこのVIだとサイクルが形成されているので実行できなくなってしまいます。
どうしたら解決できるでしょうか。
毎回毎回もうしわけないです。