シェア変数を特定のネットワークカードにデプロイする

更新しました Dec 1, 2019

使用製品

ソフトウェア

  • LabVIEW Full
  • LabVIEW Base

問題

ホストPCでシェア変数をデプロイして、Real-Time(RT)ターゲットから変数に書き込みを試みていますが、値が更新されません。更新されないのはなぜですか?

解決策

LabVIEW 2012以降のLogos Socketsは、シェア変数を利用可能なすべてのネットワークインタフェースカード(NIC)に対して自動的にブロードキャストします。そのため、以下で説明するプロセスは、バージョン2012以降では不要です。
 

通常、シェア変数エンジンは、それが実行されているシステムにデフォルトのNICを使用します。有線接続と無線接続の両方を備えたシステムの場合、一般に無線接続がデフォルト接続です。LabVIEW 8.2.1より、シェア変数エンジンが使用するNICを指定する機能が追加されました。これは、シェア変数がWindowsベースのシステムでホストされているかRTベースのシステムでホストされているかに応じて、適切な.ini構成ファイルを変更します。

 

 

 

Windowsベースのシステムの場合

C:\WINDOWSディレクトリにlogos.iniという名前のファイルがまだ存在しない場合は、新しくそのファイルを作成して、ファイルに次の行を追加します。

 

[LOGOS]
ServiceBindTo=XX:XX:XX:XX:XX:XX 


ここで、XX:XX:XX:XX:XX:XX は、バインドするNICのMACアドレスです。MACアドレスは、コマンドプロンプトからipconfig /allを実行することで確認できます。これは、ipconfigコマンドの結果リストで物理アドレスとして記載されています。
 

シェア変数エンジンを指定したイーサネットカードにバインドするには、コンピュータを再起動する必要があります。
 

IPアドレスは、LabVIEWプロジェクトエクスプローラのマイコンピュータ設定で任意のネットワークカードのIPアドレスを反映するように変更する必要もあります。
 

LabVIEWプロジェクトエクスプローラでマイコンピュータを右クリックし、プロパティを選択します。一般カテゴリにあるカスタムアドレスを指定チェックボックスにチェックを入れて、シェア変数をデプロイするネットワークカードのIPアドレスを入力します。



 

 

 

RTベースのシステムの場合

シェア変数通信をRTベースのシステムにある特定のNICにバインドするには、ターゲットの最上位ディレクトリにあるni-rt.iniファイルに次の行を追加します。

プライマリアダプタにバインドする場合
 

[LOGOS]
ServiceBindTo=primary 


セカンダリアダプタにバインドする場合 
 

[LOGOS]
ServiceBindTo=secondary 

 

 

 

通信トラブルの原因

RTターゲットでシェア変数エラー出力端子からエラー-1950679022が発生している場合、問題はおそらく間違ったアダプタへの書き込み(上記を参照)、またはファイアウォールが原因です。Windowsファイアウォールは、Windowsマシンがホストするシェア変数への書き込みを妨げる場合があります。RTターゲットがWindowsホストで公開されているシェア変数に書き込むことができるように、ファイアウォールをオフにする必要があります。
 

メモ: LabVIEW 8.2.1以降、シェア変数のデプロイに使用するNICを指定することができます。バージョン8.0以前では、シェア変数エンジンはWindows OSで変更可能なデフォルト(プライマリ)のNICを使用します。
 

メモ: IPアドレスを変更するLabVIEWプロジェクトでDAQmxデバイスを使用している場合、プライマリNICが常にオンであるることを確認します。ルータのプラグが抜かれているか、NICが無効である場合、関連するLabVIEWプロジェクトでDAQmxデバイスが表示されなくなります。