NI製品ディスカッション

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

タイミングをずらしたデータ取得

DAQアシスタントでデータを取得するときに
一方では「2秒毎にデータを取得しグラフに表示」、
また一方では「200秒毎にデータを取得しノートに書き込む」
という動作を行いたいです。
時間の経過は「次のミリ秒倍数まで待機」関数を用います。
タイミングの違った動作を行うにはどのように構成すればよろしいでしょうか?
 
よろしくお願いいたします。
0 件の賞賛
メッセージ1/8
3,742件の閲覧回数

2通りほど例示します。ご参考下さい。

片方は、ループを2秒で回して2秒ごとの処理を行い、100回に1回だけ別の処理を追加します(200秒の1回)。こちらの方法は、ループの待ち時間が2秒でよい場合と、長いほうの処理がループ周期の整数倍の場合に有効です。

もう片方は、ループは高速で回しておき(CPU負荷を考えて50msec程度)、Tick Countで経過時間が2秒もしくは200秒になるたびに処理を行います。こちらは、ループの中は速く回るので他の処理の反応が早くなるのと、複数の処理の周期が整数倍の関係になくても大丈夫です。(こちらは経過時間比較は経過時間ExpressVIでも記述可能と思います)

他にも用途に応じていろいろ書き方が出来ますが、2通りの異なる方法としてご参考下さい。

 

すべてをダウンロード
0 件の賞賛
メッセージ2/8
3,734件の閲覧回数
ご回答ありがとうございます。
 
ケースストラクチャーを用いることは理解できましたが、ケースストラクチャー内に入れたいVIにフィードバックノードがある場合
置くことができませんが、その代用をできるものはあるのでしょうか?
 
よろしくお願いいたします。
0 件の賞賛
メッセージ3/8
3,727件の閲覧回数

例えば、フィードバックノードをシフトレジスタに直し(ワイヤ長くなりますが)、Caseの枠内にワイヤを突入させて処理して再度Caseから出すようにしては如何でしょうか。そのCaseの処理しない面では、ワイヤを素通りさせます。

 

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

自己レスです。

シフトレジスタにする必要はありませんでした・・・フィードバックノードをCaseの外に出して、Caseから出たワイヤをフィードバックノードに入れてその出力をまたCaseに戻せば良くて、先ほどの投稿のように、Caseで処理しない面はワイヤを素通りさせればOKかと思います。フィードバックノードがCaseの中には入らないので、Caseの周りをワイヤが回りますが、シフトレジスタよりマシでしょう。

 

0 件の賞賛
メッセージ5/8
3,715件の閲覧回数
アドバイスありがとうございます。
フィードバックについてはよく分かりました。
Whileループとケースストラクチャーを併用しますが、両方でDAQアシスタントによりデータ集録をしたいのです。
この場合DAQアシスタントを複数使用しますとエラーが表示されます。
通常のタイミングでのデータ集録と違ったタイミングでの集録を可能にするにはどのような方法があるでしょうか?
 
よろしくお願いいたします。
0 件の賞賛
メッセージ6/8
3,709件の閲覧回数

「DAQアシスタントを複数置いてエラー・・」というのはこのフォーラムでも時折見られるものでして、DAQアシスタントを単純に2つ以上置いてしまうと、両方のアシスタントで同一のリソースをつかもうとするため、後発のアシスタントでエラーが出ます。

おそらくスレッドを見回すと同様なエラーに対する対処が載っているものがあると思いますので、是非ご覧下さい。(アシスタントを使用できる7.0以上をめったに使わないのと、7.0以上の場合でもアシスタントなどめったに使わないため、申し訳ありませんが、アシスタントに関して的確にアドバイス出来ません・・・DAQアシスタントは便利ですが、組み合わせて2つ以上置こうとするとすぐエラーになりやすく、混乱の元・・と考えています) DAQ関数で組上げた方が、処理もすっきりするし、お勧めです。

 

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

アドバイスありがとうございました。

非常に参考になりました。DAQ関数での構成を考えたいと思います。

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