NI製品ディスカッション

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

処理の順番について

いつも大変参考にさせてもらっています。
今回は、処理の流れの作り方について、
アドバイス頂きたく思います。
サブviAからデータが帰って来たらサブviBを実行させたいです。
サブviAから戻ってきたデータはサブviBに入れる必要はありませんので、
直接つなぐことができません。
現在は、比較や選択のノードを使用し、
片側に定数を入れ、片側にサブviAの結果を入れ、
両方揃ったら、サブviBを実行という流れを作っています。
シーケンスストラクチャを使うのが正当かと思いますが、
この様な処理が多々あるため、
できればもう少し簡便なやり方で実現したいです。
アドバイス頂けないでしょうか。
よろしく御願いします。
0 件の賞賛
メッセージ1/12
6,678件の閲覧回数
単に処理の順番だけを制御したいというのであれば、
まったく関係のない値(ブールでも数値でも)の出力をサブViAに、入力をサブViBに作ってあげて、
それを配線すれば処理の順番は制御できるかと思います。
これだと見栄えが悪いというのであれば、エラー処理を組み込んだらいかがでしょう?
処理の順番もはっきりしますし、なによりエラー処理は必要かと思います。
メッセージ2/12
6,662件の閲覧回数

T.shimizu様

早速のご返答ありがとうございます。

Q1."エラー処理"とはエラークラスタを
   サブviA→サブviBに渡すことにより、
   流れを制御するという意味合いでしょうか?

やってみようと思います。

更に質問なのですが、

Q2.現在、サブviCの結果が異常の場合にviの停止を行う場合、
   停止には、labview停止ノード(?)を使っています。
   サブviCが0~3を返し、0以外が異常とした場合、
   (True/False入力のlabview停止ノードに対して)
   サブviCをどのようにつなぐのが上手い方法なのでしょうか?

   現在は、比較や選択ノードを使ってつなげています。
   もう少しシンプルな方法がないかと模索しております。

貴重なご意見ありがとうございます。
できれば、上記質問にもアドバイス頂けたらと思います。
よろしく御願いします。

0 件の賞賛
メッセージ3/12
6,647件の閲覧回数
お世話になります。
まず、エラー処理に関してですが、
どんな内容のプログラムなのか知らずに勝手に判断してしまいましたが、
エラーが発生するようなViの場合なら、エラー処理を組み込めば順番も決まってきます。
その場合、おっしゃるとおりサブViにエラークラスタの入出力端子を設け、それを配線すればよろしいかと思います。
サブVi_AとサブVi_Bだけでなく、他のサブViも・・・
 
Q.2に関してですが、どのようなプログラムにしたのか分かりませんが、
どんな方法でも複雑になるようなものではないかと思われますので、そのままでもよいのでは?
一応、自分が考える一番シンプルなやり方を添付しますが、こんなもので良いのでしょうか?
もしかして質問の意図を理解できてなく、まったく見当違いな回答してしまっていたらスミマセン。。。
メッセージ4/12
6,634件の閲覧回数

T.shimizu様

またまた、早速のご返答ありがとうございます。

添付して頂いた内容で参考になりました。
重ねてお聞きしてもよろしいでしょうか?

T.shimizu様が作られたようなロジックの発展で、
サブviがどんな値を返して来ても、
その次のlabview停止ノードにtrueを渡したいのです。

この場合は、やはり
0以外の場合と
0の場合を作成し、
ORする方法でしょうか?

シンプルな方法を御存知でしたら、
またアドバイス頂けないでしょうか。
度々ですいませんが、
よろしく御願いします。

0 件の賞賛
メッセージ5/12
6,629件の閲覧回数
お世話になります。
ごめんなさい・・・質問の意味が分かりません。
メッセージ6/12
6,614件の閲覧回数

横槍で恐縮です。

こういうことでしょうか?(上:前の投稿でfoxm様がかかれたもの。下:VI-C実行後に必ずLabVIEW終了にするもの(LabVIEW終了はデフォルトでTrue接続))

 

メッセージ7/12
6,611件の閲覧回数
T.shimizu 様
白石 様
早速のアドバイス、本当にありがとうございます。

返事が遅くすいません。>T.shimizu 様
また、質問の仕方が悪くすいませんでした。>T.shimizu 様
白石 様が書かれた"foxm様がかかれたこと"が
僕が想像していましたロジックです。
(白石様ありがとうございます。)
ここにあるように、
単にAの処理(サブvi)終了後、Bの処理(labviewの終了)といった流れを作るのに、
ノードを3つも使うのが不愉快だったので、
アドバイスを頂戴したかった次第です。
白石様が書かれていますのは、
シーケンスストラクチャを使った方法ですね。
確かにこの方法がすっきりしますね。
(白石様ありがとうございます。)
ただ、元々アプリケーションの流れを作るのに
シーケンスストラクチャを使っているので、
更にその中にシーケンスストラクチャを書くと、
見にくくなってしまうのをちょっと避けたいという思いもあります。
(すいません、わがままな理由で。)
希望は、2入力1出力のnop関数のような物があり、
出力はBOOLであればズバリなのですが、
私では発見できませんでした。
(この為だけに、nop処理subViを作るのも気が引けまして。)
長くなりましたが、
上記のような都合のよいnopノードを御存知であれば、
アドバイス頂けますでしょうか。
0 件の賞賛
メッセージ8/12
6,601件の閲覧回数
そういう意味では、今回の場合は「=」または「≠」を使うという手もあるかも知れません。
サブVIの出力1つを、=の2つの入力に入れれば、どのようなデータタイプであっても必ずTrueになります(実数のNaNの場合はどちらもNaNでも=はTrueにはなりませんが)。これなら、foxm様の御所望の、2入力1出力(bool出力)でいつでもTrue、というのに使えるかと。逆に、いつでもFalseが欲しいなら「≠」が使えるかも知れません。
 
メッセージ9/12
6,599件の閲覧回数

白石様

早速のご返答ありがとうございます。

なるほど、試してみます。

本当にありがとうございました。

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