リアルタイムコントローラにある実行ファイルもしくはVIをプログラム的に実行する

更新しました Nov 22, 2018

使用製品

Software

  • LabVIEW Real-Time Module

問題

Real-Timeターゲット上に組み込まれたVIもしくは実行ファイルがあります。VIサーバを使用してプログラム的に実行するにはどうすれば良いですか?

解決策

LabVIEW 2009以降

LabVIEW Real-Time 2009の起動時に、startup.rtexeはスタートアップ実行ファイルとしてのみ実行することができます。これは、startup.rtexeがブート時に解凍するLLBのZip圧縮ファイルだからです。この動作は、サイズの制限を考慮して変更されました。

RTターゲット上でVIをプログラム的に実行するには、プロジェクトにソース配布を作成して、それをターゲットにデプロイする必要があります。
ソース配布を作成する方法は以下のとおりです。


1. VIが含まれているプロジェクトで、ビルド仕様を右クリックして、新規>>ソース配布を選択します。  


2. ソースファイルカテゴリで、対象のVIを選択して右矢印ボタンをクリックし、「常に含む」ボックスに移動します。
3. 出力先カテゴリで、「出力先パス」を変更してVIを保存したい場所を指定します。
4. ビルドボタンをクリックします。
5. 作成したソース配布を右クリックして、デプロイを選択します(バージョン2009ではこのオプションはなく、VIを手動でReal-TimeターゲットにFTPを利用して送信する必要があります)。



これで、ターゲット上において実行したいVIを含むソース配布となります。そして、下記のLabVIEW 8.6.1以前用のステップに進みます。手順2でソース配布のトップレベルVIを示していることを確認します。


 

LabVIEW 8.6.1以前

VIサーバを通してホストコンピュータからRTコントローラ上に存在する組み込みの実行ファイルを実行する方法は以下のとおりです。

1. ブロックダイアグラムにアプリケーションリファレンスを開くVIを配置して、マシン名入力端子にRTコントローラの名前もしくはIPアドレスを配線します。

2. ブロックダイアグラムにVIリファレンスを開くVIを配置します。これを使用して、実行するトップレベルVIのリファレンスを開きます。RT Engine.viと呼ばれる下記の例のトップレベルVIでは、デフォルトの実行場所を開くためのパスは以下の通りです。
 C:\ni-rt\startup\startup.rtexe\RT Engine.vi

3. インボーグノードもしくはリファレンス呼び出しノードを使用してリモートVIを実行します。インボーグノードを作成するには、VIリファレンスを開くVIのVIリファレンス出力端子を右クリックして、作成>>VIクラスのメソッド>>VIを実行を選択します。

4. Real-TimeターゲットでVIを実行する必要がなくなったら、VIリファレンスを閉じてからLabVIEWアプリケーションリファレンスを閉じます。ダイナミックに呼び出すVIは、リファレンスが開いている間Real-Timeターゲットでのみ実行可能であることに注意してください。リファレンスが閉じたら、Real-Timeターゲット上のVIを停止します。


メモ: パスデータタイプがVIリファレンスを開くための十分な位置情報を提供しなく、エラー-1445を返す例があります。これが発生する場合は、VIの名前を含む文字列定数をVIリファレンスを開くVIのVIパス入力端子に配線してください。この例では、トップレベルVI名(RT Engine.vi )を含む文字列を入力として使用します。

追加情報

VIサーバ機能を使用しているとき、VIサーバのセキュリティ権限が正しく設定されている、もしくはエラーが発生することを確認することが重要です。リアルタイムコントローラのプロパティを開いて、ウィンドウの左側にあるVIサーバの項目を選択します。そして、TCP/IPチェックボックスがチェックされていることを確認します。デフォルトのポート番号は、3363です。





ライブラリ(DAQmx、VISAなど)からVIを使用するソース配布では、これらのライブラリが出力先に含まれていることを確認します(そうしない場合、VIは実行しません)。そして、ソース配布プロパティを開いて、「その他の除外項目」のカテゴリで下図に示すオプションからチェックを外します。これで、実行ファイルがライブラリを含むすべてのVIをリアルタイムコントローラで利用できるようになります。


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

いいえ