0

Functional Global Variables (FGV)に関するLabVIEW wikiページには、次のように記載されています。

Functional Globals の主な用途は、水平方向と垂直方向の両方で、プロジェクト全体にわたってデータ共有を提供することです。

以前、FGV を使用して、同じターゲット上で実行されている VI 間でデータを共有することに成功しました。

複数のターゲット(つまり、ホストPCとcRIO)を含む私の現在のプロジェクトでは、ホストVIとRT VIの間で構成データを渡したいと考えており、FGVがそのために役立つと考えました。

ただし、うまくいかないようです。ホスト VI の FGV に書き込みます。しかし、RT VI で FGV からデータを読み取ると、シフト レジスタに何も書き込まれていないかのように、デフォルト値しか得られません。

提案する前に: はい、FGV の VI プロパティを確認しました。その実行は、当然のことながら、non-reentrantに設定されます。

機能グローバル変数を使用して、異なるターゲットで実行されているVI間でデータを共有できますか? それとも、FGV のスコープは、それが実行されるターゲットに限定されますか?

残念ながら、LabVIEW オンライン ヘルプや LabVIEW ディスカッション ボードでこれらの質問に対する回答を見つけることができませんでした...

4

1 に答える 1

3

機能グローバル変数は、単一のコンテキスト内でのみ機能します。コンテキストは 1 つのターゲット (たとえば、マイ コンピュータ、Compact RIO、RT デバイスなど) にのみ存在します。

FGV は、シフト レジスタの機能を使用してプログラム内で共有値を作成するための実に優れた方法です。ダイアグラムでシフト レジスタを初期化しないと、最後に得られた値で初期化されます。2 つのターゲットで実行されている VI は同じ VI ではなく、2 つのコピーです。FGV のコピーが 2 つあるため、共有したいデータが共有されていません。

2 つのターゲット間で通信するには、共有変数TCP、またはネットワーク ストリームを確認することをお勧めします。他にも多くのオプションがありますが、これらは私のお気に入りであり、さまざまなシナリオで設定するのが最も簡単です.

于 2013-08-30T02:27:34.427 に答える