RTターゲットのリアルタイムオペレーティングシステムでは、確定的に実行するプロセスを指定できます。確定的プロセスは、ハードウェアリソースに優先的にアクセスできるため、優先度の低いプロセスによって中断されるリスクなく、制限時間内に実行されます。このチュートリアルでは、タイミングループを使用して、RTターゲットでデータを生成する確定的プロセスを指定します。生産者/消費者の設計では、このループを生産者ループと呼びます。これは、処理する別のループのデータを生成するためです。このチュートリアルでは、次に消費者ループについて説明します。生産者/消費者デザインに関する詳細は、ni.com/infoに「PCdesign」と入力してください。

LabVIEWプロジェクトを設定する

アプリケーションの設計を開始する前に、RTターゲットをLabVIEWプロジェクトに追加し、RTターゲットで実行するVIを追加する必要があります。VIは、LabVIEWプロジェクト階層内で追加したハードウェアで実行されます。マイ コンピュータにVIを追加すると、ホストコンピュータで実行されます。RTターゲットプロジェクト項目にVIを追加すると、そのVIはRTターゲットで実行されます。

以下の手順に従ってLabVIEWプロジェクトを作成します。

  1. LabVIEWスタートアップウィンドウで、ファイル→プロジェクトを作成を選択してプロジェクトを作成ダイアログボックスを表示します。
  2. ブランクプロジェクトを選択し、完了をクリックします。
  3. ファイル→保存を選択し、プロジェクトを保存します。
  4. プロジェクトにスタートアップという名前を付けます。
  5. OKをクリックします。

RTターゲットを検出するには、以下の手順に従ってください。

  1. プロジェクトエクスプローラウィンドウで、プロジェクトルートを右クリックし、ショートカットメニューから新規→ターゲットとデバイスを選択し、ターゲットとデバイスを追加ダイアログボックスを表示します。
  2. 既存ターゲットまたはデバイスを選択します。
  3. 既存ターゲットまたはデバイスを検出を選択します。
  4. ターゲットとデバイスのタイプリストボックスで、RTターゲットのタイプを指定します。たとえば、RTターゲットがcRIO-9033の場合、Real-Time CompactRIOフォルダを展開してcRIO-9033を選択します。
  5. OKをクリックし、プログラミングモードを選択ダイアログボックスを表示します。
  6. (FPGAターゲット) スキャンインタフェースを選択します。
    メモ   スキャンインタフェースの代わりにLabVIEW FPGAインタフェースを選択して、FPGAの最大パフォーマンスと柔軟性をプログラミングすることができます。
  7. 継続をクリックします。

以下の手順に従って、プロジェクトに新しいVIを追加します。

  1. プロジェクトエクスプローラウィンドウでRTターゲットを右クリックし、新規→VIを選択します。
  2. フロントパネルで、ファイル→保存を選択してVIを保存します。
  3. VIにReal-Time Mainという名前を付けます。
  4. OKをクリックします。

タイミングループを作成する

リアルタイムオペレーティングシステムは、LabVIEWのすべてのプロセスに優先度を割り当てます。バックグラウンドタスクの優先度は最も低くなります。LabVIEWプロセスは低、通常、または優先になります。タイムクリティカル優先度に設定されたVIは、最高の優先度になります。タイミングループは、高優先度より上、タイムクリティカル優先度より下で実行される確定的ストラクチャです。VIにタイミングループを追加する場合、ループの周期と優先度を指定する必要があります。周期はループの1回の反復に割り当てられた実行時間です。優先度は、VIに複数のループがある場合に、どのループを最初に実行するかをLabVIEWに指示します。

メモ   タイミングループの確定性が低下するのを避けるため、他のすべてのループを標準の優先度に設定し、アプリケーションで複数のタイミングループを使用する際は注意してください。

RTターゲットVIにタイミングループを設定するには、以下の手順に従ってください。

  1. プログラミング→ストラクチャ→タイミングストラクチャ関数パレットを使用して、Real-Time Main.viのブロック図にタイミングループを追加します。
  2. タイミングループの入力ノードをダブルクリックすると、タイミングループを構成ダイアログボックスが開きます。
  3. ソースタイプリストボックスから1 kHzクロックを選択します。
  4. ループが毎秒4回実行されるように、周期テキストボックスに「250」と入力します。
    メモ   設定する周期では、タイミングループ内でコードが実行されるのに適切な時間を設ける必要があります。また、CPUの枯渇を防ぐために、優先度の低いプロセスを実行するための周期に余裕を持たせる必要があります。
  5. 優先度テキストボックスに100と入力します。
  6. OKをクリックします。
  7. タイミングループのループ条件端子を右クリックし、ショートカットメニューからコントロールを作成を選択します。LabVIEWによって、フロントパネルに停止ボタンが追加されます。

データを生成するコードを追加する

このセクションでは、「乱数」関数を使用して、RTターゲット上にデータを生成します。「乱数」関数は、アプリケーション固有のコードのプレースホルダです。実際のアプリケーションでは、「乱数」関数を確定的に処理するデータを生成するコードに置き換えてください。

データを生成して表示するには、以下の手順に従ってください。

  1. タイミングループ内に「乱数」関数を追加します。
  2. 「乱数」関数を右クリックし、ショートカットメニューから作成→表示器を選択します。
    メモ   ベストプラクティスとして、タイムクリティカルなコードの中に表示器を含めないでください。データを確定的に生成することは重要ですが、データを確定的に表示することは重要ではありません。このステップの表示器は、RTターゲットがデータを生成することをテストするためのものです。このチュートリアルの後の部分で削除してください。
  3. VIを保存します。

ブロック図が次の図と一致しているはずです。

RTターゲットでVIを実行する

コードの実行を開始するには、VIをデプロイしてRTターゲット上で実行できるようにする必要があります。VIをデプロイすると、LabVIEWはVIと関連ファイルをRTターゲットのメモリに保存します。

VIをRTターゲットにデプロイするには、以下の手順に従ってください。

  1. プロジェクトエクスプローラウィンドウでRTターゲットを右クリックし、ショートカットメニューからプロパティを選択して、RTターゲットプロパティダイアログボックスを表示します。
  2. IPアドレス/DNS名テキストボックスでIPアドレスを指定します。
    メモ Measurement & Automation Explorer (MAX) を使用して、RTターゲットのIPアドレスを判断することができます。
  3. OKをクリックします。
  4. プロジェクトエクスプローラウィンドウでVIを右クリックし、ショートカットメニューからデプロイを選択します。

結果

Real-Time Main.viを実行すると、RTターゲットは確定的に乱数を生成し、表示器はフロントパネルに数値を表示します。