シェア変数を使用してスタートアップアプリケーションを実行しているリアルタイムターゲットに接続する

更新しました Aug 1, 2019

使用製品

Software

  • LabVIEW Real-Time Module
  • LabVIEW Real-Time Application Builder Module

問題

  • リアルタイム実行ファイル(RTEXE)を作成し、それをスタートアップ実行ファイルとして設定しました。しかし、ホストPCを使用して接続することはできません。リアルタイムターゲットでホストされているネットワークシェア変数を使用しています。
     
  • リアルタイムターゲットに接続しようとすると、競合解決ウィンドウが表示されてアプリケーションが実行を停止します。代替手段として、アプリケーションはデプロイを選択した場合にのみ実行されます。しかし、一度デプロイされた後、切断して再接続しても実行されません。

解決策

この解決するできるいくつかのオプションがあります。その方法は、以下のとおりです。
 

  • オプション1: コントローラを右クリックして、変数の自動デプロイを無効化を選択します。

     
  • オプション2: プロジェクト外側でPCホストVIを開いて実行します。
  • オプション3: PCホストVIのビルド仕様を作成して、ビルドした実行ファイルを実行します。
  • オプション4:  2つの別々のライブラリを使用します。1つはホスト上に、もう1つはリアルタイムターゲット上にします。ホストライブラリ内の変数は、必要に応じてネットワーク公開される場合とされない場合がありますが、リモートライブラリにバインドする必要があります。


これらのオプションがどれもうまくいかない場合は、RTターゲットが実際にスタートアップVIを実行していることを確認します。確認例としては、ユーザLEDを繰り返し点滅させるだけのコードでも十分確認可能です。そうでない場合は、RTターゲットを再フォーマットすることを検討してください。

追加情報

この問題が発生する理由は、ホストVIが接続する前にシェア変数ライブラリをターゲットに再デプロイしようとしていることです。このデプロイを成功させるためには、RTEXEの実行を中止する必要があります。一度接続すると、RTEXEは中止されているため実行されません。これが、アプリケーションの再デプロイで動作する理由です。
 

ライブラリは一度だけデプロイする必要があるため、上記の方法のいずれかを使用して、ライブラリを再デプロイすることなくRTEXEに接続できます。これが動作する理由は、次のとおりです。
 

  • オプション1では、自動デプロイを無効にすることで、ホストVIはターゲット上にすでに存在するシェア変数ライブラリに接続します。ライブラリを変更する必要がある場合は、もう一度手動でデプロイする必要があります。
  • オプション2と3では、シェア変数ライブラリを含むプロジェクトの外側でホストVIを実行しているため、ライブラリを再デプロイしようとしません。
  • オプション4では、2つの別々のライブラリを持つことで、リモートライブラリの存在に対するホストVIの依存関係が解消されます。リモートライブラリが存在しない場合、ホストVIはエラーを返しますが、リモートコンピュータに変数をデプロイすることを要求しません。

この記事はお役に立ちましたか?

いいえ