NI製品ディスカッション

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

SubVIのループごとに値をメインで取得

SubVIの中でUSB接続のオシロスコープから波形データを2Hzの間隔で取り出し、メインのVIでそのほかの処理をやるプログラムを作成しているのですが、SubVIのループ中に取得する波形データをメインでも表示させたいと思ったのですが、やり方がよくわかりませんでした。アドバイスを頂けないでしょうか。

 

ちなみに、リファレンスを作成して波形データを取得しようと考えてやってみたのですが、リファレンスをSubVIに作成してメインで実行するとVISA openで1回目だけエラーが発生し、その後も波形がメインに表示されませんでした。

 

リファレンスを作成する方法以外でもよいのでメインに波形データをSubのループごとに表示させる方法を教えていただきたいです。

環境はLabview2012でWin10上で動作させています。

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

最新値のみ表示するなら、波形グラフのリファレンスをサブVIに渡して、

プロパティノード経由で表示できると思います。

code image.PNG

または以下の素晴らしいサンプルが参考になると思います。

生産者消費者パターンで書いたシリアル通信VIの紹介

キューを介してVI間でデータをやり取りする方法です。上側のループがサブVI、下側がメインVIのイメージになるかと思います。

Certified LabVIEW Developer
There are only two ways to tell somebody thanks: Kudos and Marked Solutions

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

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

示してくださった写真の通り、今回リファレンスを作成したのですが、VISA openのところでエラーが吐き出されてしまいました。

ちなみにエラー文は

VISA:  (Hex 0xBFFF000E) The given session or object reference is invalid. 

です。リファレンスでも行けそうなのは、回答を読んでわかったのでリンク先を見てみたいと思います。

写真にメインとsubのコードの一部を載せておきました。

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

いろいろと試したのですが、SubVIだけで走らせるとエラーが出ることなく、波形をループで表示できており、リファレンスがない状態でメインを走らせるとループが終了するまでメインに波形は表示されない。

 

リファレンスがある状態でメインを走らせるとエラーがVISA openで発生し、このエラーはリファレンスのコントロールがあるだけで発生するようです。1回目のVISA openだけがエラーなのですが、その後もメインに波形は表示されません。リファレンスについてあまり詳しくないため原因がよくわからない状態です。

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

回答していただいた Emboar さんありがとうございました。

無事解決しました。リファレンスを使うのが初めてだったため、よくわかっていなかったために今回のミスが起こりました。

主な原因はリファレンスを引くために新たに設置したSubVIにVISAsoruceやtimeoutの配線をしていなかったことでした。

 

そのため、一回目のリファレンスを読み取る際にエラーコードがVISAopenで発生していました。

今回の場合、リファレンスを引くために新たにsubVIを設置する必要はなく、リファレンスをもとのVIにつければよかっただけでした。

 

 

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