08-30-2011 02:15 AM
あるVIが不安定になったらしく、そのVIが入っているフォルダ内のすべてのVIを一括コンパイルしたところ
そのフォルダ内の別のllb内のVIの動きがおかしくなりました。
おかしくなったVIは複数台のモータードライバーコントローラーを動かすVIで
2ch(A Position , B Position)同時に動かせるので
他のVIからも空いているポジションで操作できるようにしているのですが
使用しているchは他で動かせないようにglobal変数に記憶させていました。
例
プログラム上での使用をしていない場合、各ポジションに表示されているものを表示
A Position で「1」, B Positionで「2」だとすると「1,2」など。
ポジションAでch1を使用する場合→11,2(使用しているところは2桁になる)
プログラムが終了→1,2
これが1ケタに戻らないようになってしまいました。
あと、その時には使用するはずのないglobal変数の文字配列に入力がされる事、
モータードライバーコントローラーとはネットワークでつなげていて
TCP Open Connection.vi を使用し、接続IDをつなぐことでやり取りをしているのですが
VIを終了後に操作していたモータードライバーコントローラーだけつながらなくなることもあります。
(接続IDをopen/closeするのは別VI、
終了させたVIでは毎回open/closeするという事は無くopen/closeには関係ない)
ただ、正常に動くときがあって、
操作し終わた後に動かし終わったポジションに表示されている値を読んで1ケタに入れなおすサブVI
(上記の『例:プログラムが終了』の時に実行させるVI)を表示させ、
実行ハイライトで動くさまを見ながらしていると正常に動きます。
(この状態で全て保存し、再度立ち上げてもエラーが出ます)
また、VI階層を表示させていても正常に動きます。
こういうことは何故起こるのでしょうか。
なお、一括コンパイルをする前は正常に動いていました。
もう1台同じ環境(PCの機種,LVのバージョンが同じで開発用のもの)があるのですが
そこでは正常に動いています。
Win7,LVバージョン9.0
よろしくお願いします。
09-01-2011 05:24 AM - 編集済み 09-01-2011 05:26 AM
kobato 様
日本ナショナルインスツルメンツ技術部のワカスと申します。
ご投稿頂きましてありがとうございます。
下記の点についてご確認頂けますでしょうか。
一括コンパアイルされた前、全てのVIのコピーを保存されましたでしょうか。
もしそうであれば、一括コンパアイル前のVIで今回のエラーが起こるかについて
ご確認頂けますでしょうか。
プログラムが終了の時に実行されるVIの動作には異常が発生し、
ハイライト実行で正常に動作するとのことです。ハイライト実行の場合、実行時間が遅くなりますので、
待機関数等をご利用頂いてこちらのVIの動作をご検証いただければと思います。
また、このVIで発生するエラーはどのようなエラーですか、エラーコードはどうなっておりますでしょうか。
なお、同じ環境のPCにて正常に動作していることが一括コンパアイル後での動作でしょうか。
もしそうであれば、対象のPCでは何らかの異常が発生した可能性はありませんでしょうか。
お手数ですが、上記内容についてご確認頂ければと思います。
09-15-2011 03:47 AM
日本ナショナルインスツルメンツ技術部 ワカス 様
ありがとうございます。
よろしくお願いします。
一括コンパイル前のものからおかしくなったVIの入ったllbだけコピーして
そのVIを含んだllbだけ一括コンパイル前に戻しましたところ、正常に動きました。
>同じ環境のPCにて正常に動作していることが一括コンパアイル後での動作でしょうか。
同じ環境のPC(開発用PC)に入っているものは一括コンパイル前のものです。
使用していたPC(実験用PC)に入れて数ヶ月使用後一括コンパイルしたところ
あるVIの動きがおかしくなりました。
>ハイライト実行で正常に動作するとのことです。
すいません。書き間違えています。
ハイライトにしていなくても、画面にその処理をするVIを画面に表示しているだけで正常に動いていました。
(最小化していても同じです)
ダイアグラムからダブルクリックするなどして画面に表示するだけで正常に動くことと
VI階層を表示している時も正常に動く(その時は上記のVIを表示していません)ことが不思議に思えました。
エラーコードは見ていませんでした。
少々お待ちください。
以上が現時点での状況です。
よろしくお願いします。