関数であるサブVIを2個同時に使用すると、おかしな結果になる。



使用ソフトウェア: LabVIEW Development Systems
使用ソフトウェア・バージョン: 6.0
使用ソフトウェア・バージョンに特化: N/A
二次のソフトウェア:

問題: LabVIEWを使用して、ある動作を行なうサブVIを作成しました。サブVI自体は、問題なく動作しています。Whileループに入れたときも、問題なく動作しています。しかし、このサブVIを2個使用して、2系統分の処理を行なうと、処理した結果がおかしな結果になります。

解決策: LabVIEWでは、同じ名前のVIは、同じ関数であると認識されて動作しています。同じ名前のVIを平行して動作させると、処理をしているメモリ領域も、計算過程の値も競合状態になります。

したがって、1つのVIを使用するときは、正しく動作するが、2つを平行して動作させますと、おかしな動作になります。

対策としては、まずはVIプロパティを参照し、実行オプションの「再入実行」を有効化する事です。これにより同じ名称で定義されたsubVIは配置された回数(インスタンス分)だけ別のメモリ領域を保持します。

通常はこの方法で改善されますが、それでも動作がおかしい場合は使用しているVI名を変更することします。 例えばsub.VIとして使用しているサブVI名を、各々sub1.とsub2.VIと名前を付けます。

もしこれでも、正常でない場合は、このVIの中に含まれているサブVIも同じ名前のサブVIが存在しますので、それらにも、このように名前の変更を行なうことで対処できます。

関連リンク:

添付:





報告日時: 08/14/2001
最終更新日: 08/15/2001
ドキュメントID: 2CDMFI1I