メモ 本コンテンツの日本語版は、便宜を図るために自動翻訳で提供されています。正確な最新情報については、英語版をご覧ください。

CompactRIO再構成可能埋め込みシャーシ、統合型コントローラおよびシャーシ、Ethernet RIOシャーシ、およびSingle-Board RIO(sbRIO)デバイスには、スキャンクロックI/O項目があります。スキャンクロック項目を使用して、NI スキャンエンジンがFPGA VIとRTホストVIの間でデータ転送を行うタイミングを監視します。

スキャンクロック情報をユーザ定義I/O変数と併用することで、NI スキャンエンジンでデータ転送を同期できます。ユーザ定義I/O変数のデータ転送をスキャンエンジンと同期させることで、FPGA VIとRTホストVI間で転送するデータセットの一貫性が保証されます。

NIは、スキャンエンジンがFPGA VIとRTホストVI間のデータ転送を行っていない時に、読み取り/書き込み操作を実行するようなアプリケーションの設計を推奨します。スキャンエンジンがデータ転送を行っている間にユーザ定義I/O変数の読み取りや書き込みを行うと、スキャンエンジンはデータの一貫性を保証できず、データ転送は次の機会に持ち越されます。

以下のイメージは、スキャンエンジンのHIGH時間中にユーザ定義I/O変数からの読み取りまたは書き込みを行った場合や、ユーザ定義I/O変数の読み取りまたは書き込み操作がスキャンエンジンの立ち下がりエッジを逃した場合のスキャンエンジンの応答を示します。

図 2. ユーザ定義I/O変数の読み取り/書き込み操作に対するスキャンエンジンの応答
Scan Engine Reactions to User-Defined I/O Variable Read/Write Operations

また、スキャンクロック情報を使用してスキャンエンジンに同期するRTホストVIのコードとFPGA VIのコードの実行を同期することができます。

以下のスキャンクロックI/O項目、メソッド、およびプロパティを使用して、スキャンエンジンからの情報を監視します。

スキャンクロックI/O項目

FPGA I/Oノードを使用して、スキャンクロックI/O項目にアクセスします。

スキャンクロックI/O項目にアクセスするには、プロジェクトのシャーシI/OフォルダからスキャンクロックI/O項目をFPGA VIのブロックダイアグラムにドラッグします。FPGA I/Oノードをブロックダイアグラム上に配置し、FPGA I/Oノードの要素部分をクリックして、ショートカットメニューからシャーシI/O»スキャンクロックを選択することもできます。

  • スキャンクロック —は、スキャンクロック信号が高であり、スキャンエンジンがFPGA VIとRTホストVI間でデータ転送を行っていない場合にTRUEを返します。 スキャンクロックは、スキャンクロック信号が低であり、かつスキャンエンジンがFPGA VIとRTホストVI間でデータ転送を行っている場合にFALSEを返します。
  • スキャンクロックメソッド: 立ち上がりエッジで待機

    FPGA I/Oメソッドノードを使用して、スキャンクロックI/O項目の立ち上がりエッジで待機メソッドにアクセスします。

    立ち上がりエッジで待機メソッドは、スキャンクロック信号の次の立ち上がりエッジ、またはタイムアウトが発生するまで、FPGA I/Oメソッドノードの実行を一時停止します。

  • タイムアウト —は、立ち上がりエッジで待機メソッドが次の立ち上がりエッジを待機する時間をFPGAクロックティックで指定します。値を0に設定すると、メソッドはすぐタイムアウトになります。負の値に設定すると、メソッドは無限に待機します。正の値に設定すると、メソッドがクロックティックの数だけ待機します。
  • タイムアウトになりました。 —は、タイムアウトが発生した場合にTRUEを返します。
  • 立ち下がりエッジを見逃しました—は、メソッドの最後の実行後から現在の実行までに、スキャンクロック信号の1つ以上の立ち下がりエッジが検出された場合、TRUEを返します。 メソッドが初めて実行される時、未検出の立ち下がりエッジはFALSEを返します。 FPGA VIがスキャンエンジンと同期しているかどうかを監視するには、未検出の立ち下がりエッジおよび未検出の立ち上がりエッジ出力を使用します。
  • 立ち上がりエッジを見逃しました—は、メソッドの最後の実行後から現在の実行までに、スキャンクロック信号の1つ以上の立ち上がりエッジが検出された場合、TRUEを返します。 メソッドが初めて実行される時、未検出の立ち上がりエッジはFALSEを返します。 FPGA VIがスキャンエンジンと同期しているかどうかを監視するには、未検出の立ち下がりエッジおよび未検出の立ち上がりエッジ出力を使用します。
  • HIGH時間 —は、信号の最後の周期中にスキャンクロック信号が高となった時間をFPGAクロックティックの数で表示します。 スキャンクロック信号の最初の周期中、HIGH時間は0を返します。 立ち上がりエッジで待機メソッドのHIGH時間出力は、FPGA I/OプロパティノードからアクセスできるHIGH時間プロパティと同様に動作します。
  • スキャンクロックプロパティ

    FPGA I/Oプロパティノードを使用して、スキャンクロックI/O項目の以下のプロパティにアクセスします。

  • 有効 —は、スキャンエンジンが有効なときにTRUEを返します。有効は、スキャンエンジンが開始されていない場合、再構成中の場合、または停止した場合にFALSEを返します。
  • HIGH時間 —は、信号の最後の周期中にスキャンクロック信号が高となった時間をFPGAクロックティックの数で表示します。スキャンクロック信号の最初の周期中、HIGH時間は0を返します。HIGH時間プロパティは、立ち上がりエッジで待機メソッドのHIGH時間出力と同様に動作します。
  • サンプルVI

    ユーザ定義I/O変数とスキャンクロックI/O項目および立ち上がりエッジを待機メソッドの使用例については、labview\examples\CompactRIO\NI Scan Engine\Advanced\Scan Engine Synchronization\Scan Engine Synchronization.lvprojにある「User-Defined IOV Synchronized」VIを参照してください。

    ユーザ定義I/O変数とスキャンクロックI/O項目およびHIGH時間出力を含む立ち上がりエッジを待機メソッドの使用例については、labview\examples\CompactRIO\NI Scan Engine\Advanced\Scan Engine Synchronization - Advanced\Scan Engine Synchronization - Advanced.lvprojにある「User-Defined IOV Advanced Sync」VIを参照してください。