10-22-2018 03:11 AM
SubVIの中でUSB接続のオシロスコープから波形データを2Hzの間隔で取り出し、メインのVIでそのほかの処理をやるプログラムを作成しているのですが、SubVIのループ中に取得する波形データをメインでも表示させたいと思ったのですが、やり方がよくわかりませんでした。アドバイスを頂けないでしょうか。
ちなみに、リファレンスを作成して波形データを取得しようと考えてやってみたのですが、リファレンスをSubVIに作成してメインで実行するとVISA openで1回目だけエラーが発生し、その後も波形がメインに表示されませんでした。
リファレンスを作成する方法以外でもよいのでメインに波形データをSubのループごとに表示させる方法を教えていただきたいです。
環境はLabview2012でWin10上で動作させています。
10-22-2018 03:27 AM
最新値のみ表示するなら、波形グラフのリファレンスをサブVIに渡して、
プロパティノード経由で表示できると思います。
または以下の素晴らしいサンプルが参考になると思います。
キューを介してVI間でデータをやり取りする方法です。上側のループがサブVI、下側がメインVIのイメージになるかと思います。
10-22-2018 03:51 AM - 編集済み 10-22-2018 03:54 AM
早速の回答ありがとうございます。
示してくださった写真の通り、今回リファレンスを作成したのですが、VISA openのところでエラーが吐き出されてしまいました。
ちなみにエラー文は
VISA: (Hex 0xBFFF000E) The given session or object reference is invalid.
です。リファレンスでも行けそうなのは、回答を読んでわかったのでリンク先を見てみたいと思います。
写真にメインとsubのコードの一部を載せておきました。
10-22-2018 04:27 AM
いろいろと試したのですが、SubVIだけで走らせるとエラーが出ることなく、波形をループで表示できており、リファレンスがない状態でメインを走らせるとループが終了するまでメインに波形は表示されない。
リファレンスがある状態でメインを走らせるとエラーがVISA openで発生し、このエラーはリファレンスのコントロールがあるだけで発生するようです。1回目のVISA openだけがエラーなのですが、その後もメインに波形は表示されません。リファレンスについてあまり詳しくないため原因がよくわからない状態です。
10-22-2018 06:18 AM
回答していただいた Emboar さんありがとうございました。
無事解決しました。リファレンスを使うのが初めてだったため、よくわかっていなかったために今回のミスが起こりました。
主な原因はリファレンスを引くために新たに設置したSubVIにVISAsoruceやtimeoutの配線をしていなかったことでした。
そのため、一回目のリファレンスを読み取る際にエラーコードがVISAopenで発生していました。
今回の場合、リファレンスを引くために新たにsubVIを設置する必要はなく、リファレンスをもとのVIにつければよかっただけでした。