測定代行株式会社

お問い合わせ

測定代行株式会社

NIスキャンエンジンの使い方・リアルタイムI/O実装ガイド

NIスキャンエンジンの使い方・リアルタイムI/O実装ガイド

LabVIEW Real-Timeシステムにおいて、FPGAプログラミングを行うことなくハードウェアI/Oへ迅速かつ決定論的にアクセスできる機能、それがNIスキャンエンジン(NI Scan Engine)です。

CompactRIOなどのシャーシに搭載されたCシリーズモジュールのデータを、ドラッグ&ドロップの手軽さでリアルタイムループ内に取り込むことができます。本ページでは、測定代行株式会社の開発実績をもとに、基本的な使い方と安定運用のための設定ステップを解説します。

NI スキャンエンジン

1. NIスキャンエンジンを採用する3つのメリット

FPGAモードでの開発と比較した場合、スキャンエンジンには開発効率を劇的に高める特徴があります。

① FPGAのコンパイルが不要(即座にテスト可能)

通常、FPGAのコードを変更すると数十分から数時間のコンパイル待ちが発生しますが、スキャンエンジンモードであれば、プログラムの変更後すぐに実行して実機検証が行えます。

② 単一周期の決定論的タイミング

スキャンエンジンは内部で単一のタイマー(スキャンクロック)に同期してすべてのI/Oデータを一括で更新します。これにより、リアルタイムOS上での高度な同期制御や制御ループの構築が容易になります。

③ ネットワーク公開変数(Network-Published Variables)との親和性

取得したI/O変数をそのままネットワーク変数として公開できるため、タッチパネル(HMI)や遠隔のPC(ホストPC)とのデータ通信回路を最小限の手間で実装可能です。

2. 実装・設定の5ステップ

NIスキャンエンジンを正しく動作させるための、標準的な開発手順です。

  1. プロジェクトへのハードウェア追加とモード選択
    LabVIEWプロジェクトにCompactRIOなどのリアルタイムターゲットを追加します。シャーシのプロパティを開き、インテグレーションモードで「スキャンインターフェース(Scan Interface)」を選択します。これで各スロットのCシリーズモジュールが自動認識され、I/O変数が生成されます。
  2. スキャン周期(スキャンレート)の設定
    リアルタイムターゲットのプロパティから「スキャンエンジン」の設定を開き、スキャン周期(例:1ms = 1kHz)を指定します。この周期で全モジュールの入力データが読み込まれ、出力データが書き込まれます。
  3. ブロックダイアグラムへのI/O変数配置
    プロジェクトツリーに表示されている各モジュールのチャンネル(AI0、DO0など)を、そのままVIのブロックダイアグラムにドラッグ&ドロップします。これでデータの読み書きを行うインジケータ/制御器が作成されます。
  4. 時間設定ループ(Timed Loop)との同期
    スキャンエンジンのタイミングと完全に同期した制御ループを作るため、ブロックダイアグラムに「時間設定ループ(Timed Loop)」を配置します。ループのタイミングソースとして「Synchronize to Scan Engine(スキャンエンジンに同期)」を選択します。
  5. エラークラスタによる例外処理
    I/O変数にはそれぞれエラー端子が含まれています。モジュールの切断や通信エラーを検知できるよう、各変数からエラークラスタを配線し、システムの緊急停止やログ記録を行う例外処理回路を必ず実装します。

3. 安定運用のための注意点と限界

リアルタイム制御・CompactRIOシステム開発は測定代行株式会社へ

「 cRIOを導入したいが、スキャンエンジンとFPGAモードのどちらで組むべきか迷っている」「スキャンエンジンを使ってリアルタイム制御を組んだが、ジッタが大きくて安定しない」といったお悩みはありませんか?

測定代行株式会社は、長年のLabVIEWシステム開発で培った知見を活かし、リアルタイムOSの最適化からハードウェアの選定、確実な同期システムの構築までをサポートいたします。実験装置の自動化や計測ベンチの構築など、LabVIEWに関することは何でもお気軽にご相談ください。