以下に示された製品を含め、NIのソフトウェアをダウンロードするには、ni.com/downloadsをご覧ください。
概要
このサンプルでは、ホストVIからRT VIを実行し、RT VIからFPGA VIを実行する手順をご紹介します。
Windows VI >> RT VI呼び出し >> RT VI >> FPGA VI呼び出し >> FPGA VI
というフローです。
これにより、
・Windowsホストから指定したRT VIを実行するためには
・ホストからFPGA VIを実行するには
を学んでいただけます。
詳細
下位側から順に作成していきます。
◎ FPGA
まずFPGA VIでは、FIFOを使用してデータをホストへ転送しています。
それ以外のことは特に行っていません。
通常と同じようにFPGAをコンパイルします。
◎ RTホスト
続いてRTホスト側では、FPGA VIをFPGA VIリファレンスを開く関数を用いて実行します。
FPGA FIFOから読み取ったデータを、ネットワーク共有型のシェア変数に渡しています。
このVIをRTターゲットにデプロイして実行します。
ビルドの際はリアルタイムアプリケーションを作成するのではなく、下記資料を参考にしてソース配布を作成してください。
How Can I Programmatically Launch an Executable or VI on a Real-Time Controller?
また、RTターゲット側でVIサーバーの設定が必要となる場合があります。
この作業を行わないと、Windows VI実行時にエラー63が発生しますので注意してください。
Why Am I Getting Error 63 When I'm Using VI Server to Launch a VI on a Remote Machine?
Windows VI実行時に「VIが壊れている」という旨のエラーが発生するようでしたら、
ソース配布プロパティの「その他の除外項目」から、
・vi.lib
・instr.lib
・user.lib
からのファイルを除外チェック、をはずしてビルドしてください。
(上記資料に詳細は記載があります。)
◎ Windowsホスト
Windowsホスト側ではRTターゲットで使用されているシェア変数に、Windows上で作成したシェア変数をバインドし、
RTターゲットからのシェア変数データを受け取れるようになっています。
実装・実行方法
1. 添付ファイルをダウンロードします
2. プロジェクトを開き、ターゲットを正しく構成します
3. FPGA VIをコンパイルします
4. RT VIでFPGA VIの指定を正しく構成します。
5. RT VIのソース配布を作成し、デプロイを行います
6. Windows VIを実行し、値が正しく取得されることを確認します。
7. 必要に応じて、Windows VIもビルドしてEXEとして動作させます。
必要なもの
ソフトウェア
・LabVIEW 2012以降
・Real Timeモジュール
・FPGAモジュール
ハードウェア
・cRIO
・FPGAターゲット
※2015/11/2 追記
Linux RT搭載のRIOデバイスを使用している場合、Windows側で指定するRTターゲット内のVIパスにはご注意ください。
例えば下記のように"home:\lvuser\natinst\bin\Real_Time_VI.vi"と記載いただく必要があります。
NIコミュニティのサンプルコード交換のサンプルコードは、MIT Licenseによりライセンス供与されています。