NI スキャンエンジンと変数を使用してデータを転送する
- 更新日2025-03-06
- 5分で読める
プログラムフロントパネル通信を使用してコヒーレントなFPGA I/OデータセットをRTホストVIに転送する場合、FPGA VIとホストVIを同期するブロックダイアグラムコードを作成する必要があります。FPGAターゲットでNI スキャンエンジンがサポートされる場合は、NI スキャンエンジンを使用してこのデータ転送を同期できます。その後、ユーザ定義I/O変数を使用して、FPGA VIおよびRTホストVIの間でデータを転送できます。
NI スキャンエンジンを使用すると、FPGA I/OチャンネルとRTホストVIの間でコヒーレントなデータセットのアクセスや転送を行うために必要なコードの量を減らすことができます。ユーザ定義I/O変数を使用すると、RTホストVIにデータを送信する前、そのデータをFPGA VIに戻した後に、FPGAターゲットでデータを処理できます。たとえば、以下の手順を実行するアプリケーションを作成できます。
- I/Oデータを集録し、FPGA VIのデータでFFTを実行する
- 処理したデータをRT VIの制御ループに転送する
- 物理I/Oチャンネルへの出力に対し、RT制御ループの出力データをFPGAに戻す
手順2および3では、FPGA VIとRT VI間のデータ転送にユーザ定義I/O変数を使用します。
(CompactRIO) ユーザ定義I/O変数の使用例については、labview\examples\CompactRIO\NI Scan Engine\Getting Started\User-Defined IO Variable - Basic\ディレクトリにあるUser-Defined IO Variable Basic.lvprojを参照してください。
ユーザ定義I/O変数を作成する
新規I/O変数を作成するには、プロジェクトエクスプローラウィンドウでシャーシ項目を右クリックし、ショートカットメニューから新規→ユーザ定義変数を選択します。I/O変数はすべて単方向であるため、各ユーザ定義I/O変数の方向をFPGAからホストまたはホストからFPGAのどちらかに指定する必要があります。
この方法で作成したI/O変数は、コンテナにユーザ定義変数という名前で表示されます。
ユーザ定義I/O変数に関する注意事項
ユーザ定義I/O変数を作成および使用する際は、以下に注意してください。
- ユーザ定義I/O変数を使用する前にFPGA VIへのリファレンスを開く必要があります。
- ユーザ定義I/O変数は、NI スキャンエンジンをサポートするFPGAターゲットのみで使用できます。NI スキャンエンジンサポートの詳細については、ターゲットのハードウェアドキュメントを参照してください。
- ユーザ定義I/O変数は、スキャンアクセスのみをサポートします。ユーザ定義I/O変数ではダイレクトアクセスを使用できません。
- ユーザ定義I/O変数ノードをFPGA VIのブロックダイアグラムに追加する場合は、FPGAターゲットに対するそのFPGA VIの実行モードを設定する必要があります。FPGA VIの実行モードを変更するには、そのVIを含むシャーシ項目を右クリックし、実行モードを選択→FPGAターゲットを選択します。シミュレーション (シミュレーションI/O) またはシミュレーション (実際のI/O) を選択した場合に、そのFPGA VIにユーザ定義I/O変数が含まれていると、実行ボタンが壊れて表示され、FPGA VIは実行できなくなります。
- ユーザ定義I/O変数を使用して、同じシャーシで実行するFPGA VIおよびRT VI間のみで通信を行うことができます。ただし、ユーザ定義I/O変数のネットワーク共有を有効にすると、この変数を同じLabVIEWプロジェクト内のRT VIまたはWindowsベースのVIで使用できます。たとえば、ネットワーク共有I/O変数を使用して、Windowsで実行できるユーザインタフェースを作成できます。
NI スキャンエンジンからタイミング情報にアクセスする
ユーザ定義I/O変数は、NI スキャンエンジンのタイミング情報に依存します。タイミング情報にアクセスするには、FPGA VIのブロックダイアグラムにスキャンクロックI/O項目を追加します。このI/O項目は、信号がHIGHの間のFPGAクロックサイクル数などのタイミング情報をスキャンエンジンからFPGA VIに転送します。このタイミング情報を使用して、FPGA VIとRTホストVI間で転送するデータセットがコヒーレントであることが保証されるアプリケーションを構築します。
一部のシャーシでは、このスキャンクロックI/O項目はサポートされていません。この項目がサポートされていないシャーシを使用する場合、プロジェクトエクスプローラウィンドウのFPGAターゲットの下のChassis I/O項目にある項目を使用できます。以下の図は、項目の場所を示します。