エラー -1950679035または-1950679027: LabVIEWシェア変数を使用するとエラーが発生する

更新しました Jul 25, 2023

使用製品

ソフトウェア

  • LabVIEW Real-Time Module
  • LabVIEW

問題

プログラムでLabVIEWシェア変数にアクセスしようとすると、エラー-1950679035が発生し、場合によってはエラー1950679027が発生します。プログラムを最初にセットアップしたときにシェア変数を正常にデプロイしましたが、エラー発生時には再デプロイしていません。
 

エラーコード-1950679035がOpen Variable Connection in Host.viで発生

考えられる理由:
LabVIEW: (Hex 0x8BBB0005) シェア変数エンジン(SVE)にシェア変数が見つかりません。このシェア変数のデプロイメントに失敗したか、SVEが開始されていないか、SVEがビジーでこの要求に応答できない可能性があります。


解決策

システムおよび使用されている他のソフトウェアコンポーネントに応じて、このエラーが発生する複数の原因が考えられます。これらのエラーは、下記の原因の1つ、またはそれらの組み合わせが原因である可能性があります。

 

 

原因 1: 

Real-Timeターゲットでホストされている場合、シェア変数をホストするのに十分なリソースがReal-Timeターゲットにないと、これらのエラーが発生する可能性があります。この問題を解決するには、ループレートを遅くしてCPU時間を解放し、シェア変数エンジンに十分な実行時間を与えます。変数にアクセスする前にCompactRIO(cRIO)サービスが開始する時間を与えるため、プログラムの開始時に待機時間を追加することもできます。
 

この原因は、主にリアルタイムオペレーティングシステムで発生します。これは、シェア変数エンジンの操作に必要なスレッドのような低レベルのスレッドをより簡単に飢えさせることができるためです。通常、これはタイミングループなどの優先度の高いスレッドがCPU時間を過度に消費し、シェア変数エンジンの実行を妨げている結果です。リアルタイムシステムパフォーマンスを監視する詳細については、Monitoring CPU and Memory Usage on Real-Time Embedded Targetsを参照してください。

 

 

原因 2:

エイリアスまたはプログラムによるアクセスの使用時に指定された不適切なシェア変数パスは、このエラーの原因になります。これは、定義されたパスの誤植と同じくらい簡単な場合があります。エイリアスを使用する場合、シェア変数プロパティウィンドウのバインド先:セクションでパスを再確認できます。

 

 

原因 3:

ファイアウォールまたはウイルス対策ソフトウェアの設定により、コンピュータがシェア変数エンジンの個々の変数にアクセスできない場合があります。推奨する対処法は、どちらか一方だけではなく、パブリックネットワークとプライベートネットワークの両方のファイアウォールをオフにすることです。ソフトウェアおよびハードウェアファイアウォールを構成してナショナルインスツルメンツ製品をサポートするで説明されているように、シェア変数エンジンが使用する特定のポートのブロックを解除すると、この問題は解決します。

 

 

原因 4:

場合によっては、シェア変数を適切に読み取るために管理者権限でLabVIEWを実行する必要があります。管理者としてLabVIEWを実行するには、スタートメニューでLabVIEWバージョンに移動して右クリックし、管理者として実行を選択します。

 

 

原因 5:

シェア変数IOクラスでプロパティノードを使用している際にこのエラーが発生する場合は、Error -1950679035 When Programmatically Changing Shared Variable Propertiesを参照してください。

 

 

原因 6:

OPCタグにバインドされたシェア変数を使用する場合、Error -1950679035: Unable to Locate Variable in Shared Variable Engineで詳細に説明されている他の潜在的な原因がいくつかあります。

 

 

原因 7: 

シェア変数を含むライブラリが正しくデプロイされていない可能性があります。これを確認するには、シェア変数をホストしているライブラリを右クリックして、デプロイオプションのいずれかを選択します。このトラブルシューティングの詳細については、ネットワーク共有シェア変数のトラブルシューティングを参照してください。

 

 

原因 8:

シェア変数を使用してスキャンエンジンリソースにアクセスすると、このエラーが発生する場合があります。LabVIEWプロジェクトに移動してターゲット下のシャーシを参照し、リソースを手動でデプロイ解除します。そこから、Real-Timeスキャンリソースを展開し、スキャンエンジンリソース(モジュールなど)を右クリックして、デプロイ解除を選択します。次に、もう一度右クリックして、デプロイを選択します。

 

 

原因 9:

ホストPCでネットワークインターフェースカード(NIC)を2つ使用し、Real-Timeターゲットからシェア変数を参照する場合、LabVIEWプロジェクトファイルを開き、マイコンピュータ>>プロパティを右クリックして、カスタムアドレスを指定するチェックボックスにチェックを入れてアドレス欄に2つ目のNICのIPアドレスを入力します。

 

 

原因 10:

PC上のVIとRTターゲットで実行するRTEXEを使用してネットワーク公開シェア変数(NSV)を介してRTターゲットとPC間のデータ転送を確立する場合、このエラーが発生する可能性があります。この場合は、Data Transfer Through Network Published Shared Variables Does Not Start Using RT Exe and Error -1950679035 Is Shownを参照してください。

 

追加情報

エラーの原因を絞り込むには、LabVIEWのヘルプ>>サンプルを検索にあるLabVIEWサンプル「shared variables.lvproj」を使用できます。




 

1台のPCでShared Variable Server.viを実行してから、Shared Variable Client-Variable APIを開き、IPまたはコンピューター名を使用して以下に示す文字列を変更します。これにより、動作が確認されているコードを使用し、エラーの原因としてネットワーク/ファイアウォールを分離できます。