NI製品ディスカッション

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

2つの動作を交互に行うには

LabVIEW初心者のYoshihitoと申します。

たびたび申し訳ありませんが、問題解決のためアドバイスをいただきたく、新たに質問させていただきます。

 

 

あるデバイスで交互に行いたい2つの動作(フォーミュラと閾値以外は全く同じ)があります。

そこで、それぞれに条件があるため条件を閾値として設定し、閾値に達したらデバイスにデジタルパルスを送り、次の動作に移る(2つの動作の繰り返し)プログラムを組みたいと思っています。

 

個々の動作を行うプログラムはできているのですが、それをどのように組み合わせれば繰り返し行えるようになるのかがわからず、困っています。

おそらくケースストラクチャやシーケンスストラクチャを用いると思うのですが、具体的にどのように用いればよいのかについては力不足でわかりませんでした。

 

個々の動作を行うプログラムは添付した画像のようになっているのですが、2つの動作でフォーミュラと閾値の値が違うため、別々に設ける必要があると考えています。

 

言葉足らずでわかりにくいところがあると思いますが、何かアドバイスをいただけたら幸いです。

よろしくお願いいたします。

0 件の賞賛
メッセージ1/15
5,180件の閲覧回数

Yoshihito 様

 

 

平素よりNI製品をご使用いただき誠にありがとうございます。

 

今回 Yoshihito 様がご要望の処理をもっとも簡単に表すとどのようになりますでしょうか。デバイスの型番、それからもっとも大まかな流れを状態遷移図にしてJPEGで張り付けていただけますと、こちらもスムーズに適切なご案内をさしあげることができます。例えば、状態遷移の状態は「デバイス1集録」であるとか、「データ処理1」などで、遷移状態はそれら状態間を矢印で書く、等をお願いしたく存じます。

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

気になったので

横槍失礼いたします。

 

条件分岐、データ選択のテストが出来る物をUPしておきます。

8.2形式で保存しています。

的外れだったらすみません。

 

o.fujioka 様がおっしゃる様に

フローチャートの様にみんなでイメージが共有できる物が

有った方が、相手にちゃんと伝わると思います。

フローチャートを作成しているときに、自分で気づく事も多々あります。

 

22643i8955FC7630D4B358

 

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

o.fujioka様、xyzz様、返信ありがとうございました。

 

説明がわかりにくく失礼いたしました。

デバイスの型番は「USB-6221」です。

プログラムのフローチャートは書いたことがないのですが、書き方を調べて作成してみました。

処理1と2で行う処理の流れは同じなのですが、計算の内容と閾値がそれぞれ異なるため分けて書きました。

 

書き方等誤りがありましたら、再びご指摘いただけると幸いです。

よろしくお願いいたします。

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

Yoshihito様

 

フローチャート拝見しました。

2つの処理を完全に直列で行うようですので、

大きなwhileループ(xyzz様の写真の一番外側の枠ですね)の中に2つの処理を並べて、

エラーチェックの配線で順番につなげば恐らくフローチャート通りの機能が実現すると思います。

 

LabVIEWは、上流の処理が終わるまで次の処理が行われない特性があるので、

配線はサブループ内の最後の処理(図1を見る限りフォーミュラでしょうか?)につないでおけばいいと思います。

 

0 件の賞賛
メッセージ5/15
5,074件の閲覧回数

ザックリとしたシーケンスを作ってみました。

8.2形式で保存しています。

 

22675i02576E4D97B617A6

 

22677iAEC31A675E301C2C

メッセージ6/15
5,070件の閲覧回数

Yoshihito 様、xyzz 様、山本様、

 

掲示板を盛り上げていただきましてありがとうございます。

 

xyzz 様の VI は非常にシンプルで見ていて流れがわかりやすいですので、Yoshihito 様もぜひご参考ください。私からは、もう少し高度なデザインパターンをご紹介いたしたく存じますので、もう少々お時間いただければと存じます。

0 件の賞賛
メッセージ7/15
5,064件の閲覧回数

山本様、xyzz様、o.fujioka様、返信ありがとうございました。

 

xyzz様のサンプルを使用させていただき、動作確認をしましたところ、希望していた動作ができるようになりました。

現在添付させていただいた図のようになっているのですが、2回目の繰り返しになったときに、赤枠で囲った部分の数値をリセットできるようにしたいと思っているのですが、どのようにしたらできますでしょうか。

数値がリセットされないと、すでにしきい値に達していると判断されてしまうようで、すぐにパルス出力されてしまうのが現状です。

 

たびたびすみませんが、よろしくお願いいたします。

すべてをダウンロード
0 件の賞賛
メッセージ8/15
5,010件の閲覧回数

時間領域演算関数(積分)の初期化(積分値のリセット)の仕方が解からないので

初回ループ時に前回終了時の積分値を引いた値を入力する方法と、

シフトレジスタを用いて処理する方法をUPしておきます。

8.2形式で保存しています。

 

22873iDFEF6B3DC62A55D8

 

22875i49EBFCC1B92E26AD

すべてをダウンロード
0 件の賞賛
メッセージ9/15
4,973件の閲覧回数