NI製品ディスカッション

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

2000回ごとに10回測定

解決済み
解決策を見る

今電圧降下の測定を自動で行うプログラムを作成しています。

USB6210のデジタルエッジ機能とDAQmxトリガを使って待機時間を設定し電圧降下部分だけ測定しています。

今電圧降下だけを取り出して測定をするところまでできたのですが、このVIだと電気接点を開閉するごとにデータを保存してしまいます。

自分が行いたいのは2000回ごとに10回だけ電圧降下を保存するプログラムを作りたいのです。

どうしたら出来るのかわかる方がいましたら教えてほしいです。

よろしくお願いします。

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

平素よりNI製品をご愛顧頂きありがとうございます。
日本ナショナルインスツルメンツ技術部の上野です。

 

添付いただいたVIでは、有限サンプルモードで1000点のアナログ入力を行うコードをWhileループが止まるまで繰り返すように作成されているかと思います。

アナログ入力はそのままでソフトウェア的に保存する保存する値を絞り込みたいと言うことでしょうか?

それでしたら、保存部分をケースストラクチャで囲み、条件を満たしたらTrueになるようなアルゴリズムを作成し、Trueケースに保存VIを配置しておけば、Trueケースになる条件のときだけデータが保存されます。

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

このVIを実行するとこのcsvファイルのように1回、2回、3回と停止ボタンを押すまで1000個のサンプル数を平均して接触抵抗を出してくれます。

ここから1回、2回、3回と記録していき10回まで記録したら、次は2001回、2002回、2003回と記録をしていき、2010回まで行ったら次は4001回、4002回、4003回と自動で記録してくれるようにしたいのです。

このようにするためにどうしたらいいのか悩んでいます。

説明下手ですいません。ぜひよろしくお願いいたします。

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

回数は、i端子の数を保存しておりますので、ループ回数をケースストラクチャが動作する条件とすることが可能です。

たとえば、商と余り関数で2000で割り切れる数から10点はTrueになる条件を算出する方法や予め保存したい数を配列に準備しておき、それを比較関数を使用する方法も考えられます。たとえば、下記のようにすれば、任意の回数で保存する条件を作成可能です。

 

SS7.png

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

ありがとうございます。

例えば自分が添付したVIですとどの部分に実装すれば良いのでしょうか?

何度も質問すいません。

0 件の賞賛
メッセージ5/12
2,009件の閲覧回数

保存処理のみを特定条件下で行いたいのでしたら、ファイルI/Oをおこなっている部分を含めればよいかと思います。なお反復端子(i)は含めないでください。

0 件の賞賛
メッセージ6/12
2,003件の閲覧回数

返信ありがとうございます。色々と試してみたのですができませんでした。

forループはこの場合使う必要はあるのでしょうか。

理解ができず申し訳ありません。

0 件の賞賛
メッセージ7/12
1,983件の閲覧回数
解決策
トピック作成者reicoo1996423が受理

Forループは、現在ご使用のWhileループの代わりに自動停止する目的で使用しております。事前に準備した配列に含まれている要素の値の場合、Trueケースが実行される仕組みということは分かりますでしょうか?

0 件の賞賛
メッセージ8/12
1,965件の閲覧回数

わかりました。返信ありがとうございました。

0 件の賞賛
メッセージ9/12
1,963件の閲覧回数

何度も質問申し訳ありません。

教えてもらったことを理解した上での質問です。

このVIだと自分の中では指標配列部分に打ち込んだ数値の時だけ保存し、保存が実行されたら指標配列の指標の部分がインクリメントによって1ずつ増加していき、次の指定した回数の時にまた保存が実行されるというようなイメージです。

しかしこのVIだとサイクルが形成されているので実行できなくなってしまいます。

どうしたら解決できるでしょうか。

毎回毎回もうしわけないです。

0 件の賞賛
メッセージ10/12
1,933件の閲覧回数