05-12-2011 09:53 PM
ビルド済みの実行ファイルを実行すると、表題の様なエラーが表示され、実行が停止することがあります。
詳細は「トップレベルVI"xxxxx.vi"は、unknown で停止しました(ブロックダイアグラム:yyyyy.vi)。」
と出ます。
yyyyy.viは「呼び出されたらフロントパネルを表示」と「元々閉じていたら実行後に閉じる」にチェックを入れていました。
このときから同様なエラーが表示されたため、その後添付ファイルのような設定にしました。
再入実行にチェックを入れるとエラーは表示されなくなるようですが、再帰呼出しは行っておりません。
ビルドしたアプリケーションで問題の画面は1度は表示されます。
2度めでエラーが出る様に見えます。
対策ご存じの方よろしくお願い致します。
LabVIEW2009f3
Solved! Go to Solution.
05-20-2011 08:19 AM
おそらくサブVIのフロントパネルがEXE化の際に削除されているので、実行時にエラーが出ていると思われます。
ビルド仕様でサブVIのソースファイル設定を以下の画像のように指定して改善するか見て頂けますか?
よろしくお願いいたします。
05-24-2011 04:31 AM
高須さま
ご回答いただきありがとうございます。
問題のフロントパネル画面は1度は表示されるので、「フロントパネルが削除されている」というのは当らないと思いますが、 教えて頂いた通りにしてしてみました。
結果は同じでした。
一度は画面が表示されるものの、2度めはエラーメッセージが表示されて実行が止まります。
件の画面付きのVIの中身は、以前ここで問い合わせしたUSB-6343からタイマに同期してデータを取り込む処理をしているものです。 以下のような感じの処理をしています。
1 DOのいくつかを設定(オンデマンド)
2 AO2とAO3を設定(オンデマンド)
3 AI0~AI3、DI、エンコーダカウンタ(タイマ0)、パルス計測(タイマ1及び2)、サンプルクロック(タイマ3)のタスクを生成
4 各入力のサンプルクロックを設定(連続サンプル/タイミングPFI15)
5 各入力のタスクを開始
6 ルーブでデータ取得(1データ)、取得したデータの表示、AI0といくつかのDIを監視しながらループの終了判定
7 ループ終了後、DOのいくつかを設定(オンデマンド)
8 再度ルーブでデータ取得(1データ)、取得したデータの表示、AI0といくつかのDIを監視しながらループの終了判定
9 ループ終了後各入力タスクをクリア
何を行っているかというと、サーボモータを回してデータを連続採取し、その後サーボモータを逆転させてデータを連続採取するという処理です。
1、2、7はサーボアンプに対する設定です。 画面が表示される(計測が行われる)にはいろいろな条件があり、条件が満たされなければそもそも画面表示まで処理が進まず、 仮に進んだとしても現在はUSB-6343が既に装置に組み込まれてしまって100km以上離れた別の場所にあるため、 シミュレーションデバイスで確認するしかなく、そうするとパルス計測でタイムアウトが発生するためなかなか面倒です。
先のエラーメッセージは昨日現場で確認しました。
画面の表示は、データ異常のときにオペレータが手動で停止させる判断を行うため必要です。
上位のVIは測定データを元に各種判定を行った結果が表示されるため、測定中の画面を上位画面に統合させるのは現実的ではありません。
納期が迫っておりあまり時間も無いのですが、一度プログラムを単純化して試験して見ようと思っているところです。
引き続き何か情報がありましたらよろしくお願い致します。
05-24-2011 05:59 AM
あぁ、読み飛ばしていました。大変失礼しました。
この問題ですが、どのVIをどのようにして呼び出しているか、どのように実装しているかが分からないと問題解決が困難です。エラーメッセージとしてはフロントパネルが削除されているのはほぼ間違いないので、依存項目などに含まれるすべてのサブVIのフロントパネルを残すことで解決すると思われます。
「一度表示される」と仰っていますが、エラーが出るのは同じVIを表示しようとしているのでしょうか?別のVIをポップアップ表示などはされていないでしょうか?
問題を再現する最小構成のVIは頂けないでしょうか?文章からVIを構築しても同じ処理にするのに大変な労力を要します。
よろしくお願いします。
05-27-2011 04:17 AM
高須さま
先の書き込みの番号で3、4、5、6、8、9を削除すると「再現しなくなる」ことが確
認できました。
すなわち、計測をしなければ良いらしいです・・・。
連速計測中にオンデマンドの出力が入ってるのがいけないのかと思い、7を実行する前に
連続計測のタスクを一旦クリアして、7実行後に再度タスクの生成を行う様に変更して見
たのですが、これではダメの様です。
ビルド済みを実行すると、一度めはウインドウが表示されますが、二度めは同じエラーメッ
セージが出て実行が停止してしまいます。ビルドしなければ問題は無いのです。
開発案件のため、そのまま掲示板に晒すのははばかられます。
DAQ計測のプログラムに問題がある様なので、なんとかココに晒しても問題無い構成に
してみます。
引き続き情報がありましたらよろしくお願い致します。
05-28-2011 01:20 AM
高須さま
お世話様です。
Dev1にUSB-6343のシミュレーションデバイスを設定して実行すると現象が再現できます。
現象はビルドしたものでないと再現しないこと、念のため申し添えておきます。
よろしくお願い致します。
05-28-2011 02:30 AM
サンプル、有難うございます。あれこれ考えていたのですが問題を再現できずにいました。
実行したところまさに仰っている現象を確認しました。問題の特定に少々お時間をください。
なお、試しにLabVIEW2010でビルドし実行したところ問題は発生しないことがわかりました。
もしアップグレードが可能であればご検討ください。
よろしくお願いします。
05-29-2011 01:14 AM
sanmai 様
原因が分かりました。XYグラフのハンドルを掴みっぱなしになっているようです。以下の画像のように意図的にグラフ表示器のリファレンスを クローズすることで改善するかと思います。また、色々と検証したファイルも一応アップロードしておきますので何かのご参考にして頂けると幸いです。
よろしくお願いいたします。
05-29-2011 07:51 PM
高須さま
お世話様です。
土日にも関らず対応していただきありがとうございました。
教えていただいたように、グラフ表示器のリファレンスを閉じる処理を追加したら再現し
なくなりました。
また、添付していただいたviは今後のお手本になりそうです。
重ねてお礼申し上げます。
ひとつ疑問なのですが、以前にも測定中にグラフ付きの画面がポップアップするようなプ
ログラムを書いたことがあるのですが、この様な現象が発生したことはありませんでした。
LabVIEW2010では発生しないとのことですが、これはLabVIEW2009特有の問題なのでしょう
か?
ビルドアレイが効率が良くないことは承知しています。タイムクリティカルな処理にも関
らず、ビルドアレイを使用しているところに問題があるのでしょうか?
ご教示いただければ幸いです。
05-30-2011 06:13 AM
sanmai様
ご返信有難うございます。解決できそうで何よりです。当方この辺り趣味の世界になりつつあるので、お役にたてれば幸いです。
2009特有のようですね。。。残念ながらアップグレードしか手が無いように思えます。(毎回グラフリファレンスを閉じるのも如何なものかと思います。。。)
ビルドアレイが原因ではなかったようです。効率が悪いものの、ビルドアレイはパフォーマンス(速度)は抜群なので私も多用してしまっています。後から波形チャートをバッファにしてもいいなと気付いたのですがやはりコードがいまいちまとまらなくなってしまいますね。
納期に間に合えば幸いです。宜しくお願い致します。