CompactRIO使用LabVIEW FPGAおよびCシリーズデジタルモジュールより多く機能実現

概要

ナショナルインスツルメンツでは、NI CompactRIOシステムでのデジタル信号の入出力に使用できる20以上のCシリーズデジタルモジュールを提供しています。Cシリーズデジタルモジュールは、さまざまな信号レベル、速度、およびチャンネルで使用可能なため、仕様を満たすシステムを構築できます。デジタルモジュールは、状態の監視や機械のオン/オフなどの基本的なタスクを実行する優れた方法です。CompactRIOを DAQmx と使用する場合、DAQmx APIを使用してカウンタタスクを実装することもできます。ただし、LabVIEW FPGAを使用すると、デジタルモジュールの機能をさらに拡張できます。

このホワイトペーパーでは、デジタルモジュールの機能を向上させる7つの方法を検討します。以下のサンプルは、LabVIEW FPGAおよびFPGAインタフェースを使用してプログラミングする方法を示しています。これらのサンプルが正しく動作するには、特定のNI CompactRIOシャーシ用に正しく構成されている必要があります。

メモ:各Cシリーズデジタルモジュールは異なるタイミング特性を提供します。アプリケーションのニーズに合ったタイミング特性を持つモジュールを選択してください。また、以下に示すサンプルファイルパスはLabVIEW 2012用です。LabVIEW 2013以降、FPGAサンプルは改良され、新しいファイルパスに配置されました。LabVIEW 2013以降のサンプルのファイルパスは、このドキュメントで使用したサンプルに類似した新しいサンプルです。

内容

イベントカウント

イベントカウントは、デジタルモジュールで実行できる最も簡単なタスクの1つです。 イベントカウントは、デジタル信号の各立ち上がり/立ち下がりエッジをカウントするプロセスで、モータの測定からパイプを流れる液体の量の計測まで、さまざまなアプリケーションで役立ちます。NI-DAQmxドライバでプログラミングする場合、カウント操作を行うには専用オンボードカウンタまたは別のカウンタモジュールを使用する必要があります。これは、多くのアプリケーションで十分です。 または、FPGAを使用して独自のカウンタアプリケーションを作成することもできます。これにより、追加のカウンタモジュールなしで実装できるカウンタの数が増加します。 カウンタの数は、システムのデジタルラインの数とFPGAのサイズによってのみ制限されます。

次の例は、 LabVIEW FPGA を使用してイベントカウンタを実装する方法を示しています。サンプルでは、ブール論理を使用して立ち上がりエッジまたは立ち下がりエッジが発生したかどうかを判断します。このサンプルは、LabVIEWサンプルファインダにあり、次の場所に移動します。 

LabVIEW 2013以降:ハードウェア入力と出力→CompactRIO→信号生成と処理→デジタル→カウンタ→エッジカウンタ→Edge Counter.lvproj

LabVIEW 2012以前:ハードウェア入力と出力→CompactRIO→FPGAの基本機能→カウンタ→イベントカウンタ→イベント制御器(エッジ指定)(cRIO.lvproj)

イベントカウントVI構成する

  1. カウントするラインを任意のデジタル入力ラインに接続します。
  2. 「Quad Ctr」VIのブロックダイアグラムを開き、物理信号のデジタル入力チャンネルがAおよびBブール制御器に置き換わるように変更します。
  3. VIを実行してコンパイルし、対話モードで使用します。

図1.外部信号をカウントするコードを変更する

 

PWM

パルス幅変調(PWM)を使用して、一連のデジタルパルスを出力し、アナログ回路を制御します。これらのパルス長および周波数を変更することで回路への全電力を決定します。PWM信号はDCモータの制御に最もよく利用されていますが、その他にもバルブ制御やポンプ制御、LEDの輝度調節など幅広くアプリケーションに利用されています。

PWM信号を構成するデジタルパルス列は固定の周波数を持ち、パルス幅を変化させて信号の平均電力を変更します。パルス幅と周期の比率は信号のデューティーサイクルと呼ばれます。たとえば、PWM信号の周期が10ミリ秒でパルス長が2ミリ秒の場合、デューティーサイクルは20%となります。 PMWのデューティーサイクルを制御することで、アナログ回路が使用する電力量を制御できます。NIデジタルモジュールを使用して、制御PWMの出力や既存のPWMのデューティーサイクルの測定を行うことができます。

CompactRIOコントローラがNI-DAQmxプログラミングをサポートしている場合は、NI-DAQmxでPWMタスクを実装することもできます。ただし、PWMにはカウンタが必要なため、PWMタスクの数はCompactRIOのオンボードカウンタの数によって制限されます。このタスクをFPGAでプログラミングすると、実装できるPWMタスクの数が増加します。

図2.パルス幅変調

以下のサンプルは、Loop Timer.viを使用してパルスのHIGHとLOWの長さを制御します。このサンプルはサンプルファインダで参照できます。

LabVIEW 2012以前:ハードウェア入力と出力→CompactRIO→FPGAの基本機能→カウンタ→イベントカウンタ→PWM出力、シンプル - cRIO.lvproj 

LabVIEW 2013以降:ハードウェア入力と出力→CompactRIO→信号生成と処理→デジタル→パルス幅変調→PWM生成→PWM生成.lvproj

 

PWM VI構成する

  1. カウントするラインを任意のデジタル入力ラインに接続します。
  2. PWMを生成するデジタル出力チャンネルを持つ「PWM Out, Simple」VIのブロックダイアグラムを変更します。
  3. VIを実行してコンパイルし、対話モードで使用します。

図3.PWM信号を生成するようにコードを変更する

 

エンコーダ

エンコーダは、医療機器や産業機械のテストなどのアプリケーションにおいて、動きや位置を測定するために使用される機械的デバイスです。ほとんどのエンコーダは、光センサを使用してパルス列形式の電気信号を提供します。信号の詳細については、複数のパルス列を参照してください。NI 9401などのデジタルモジュールは、これらのパルス列をキャプチャしてFPGAを使用し、信号をモーション、方向、または位置情報に変換します。また、Cシリーズデジタルモジュールを使用して、HIL (Hardware in the Loop) テストなどの他のアプリケーションでエンコーダの出力を模倣することもできます。エンコーダは非常に多くの種類のアプリケーションに対応しているため、さまざまな形状、サイズ、出力レベルがあります。  NIでは、アプリケーションに必要な特定のエンコーダと統合できる複数のデジタルモジュールを提供しています。NI 9421は、工業環境で0~24 V信号を読み取る場合に使用します。NI 9401は、クリーンな実験環境でトランジスタ間論理(TTL)または0~5 V信号の読み取りに使用します。

CompactRIOコントローラがNI-DAQmxプログラミングをサポートしている場合は、NI-DAQmxでエンコーダタスクを実装することもできますが、エンコーダタスクの数はより制限されます。このタスクをFPGAでプログラミングすると、使用できるエンコーダタスクの数が増加します。

次の例は、LabVIEW FPGAおよびCompactRIOシステムを使用してエンコーダ測定を実装する方法を示します。サンプルはブール論理を使用して、AB位相差出力エンコーダが回転しているかどうか、またどの方向に回転しているかを判断します。このサンプルは、サンプルファインダで以下を参照できます。 

LabVIEW 2013以降:ツールキットとモジュール→FPGA→CompactRIO→信号生成と処理→デジタル→直交符号化→直交復号器→直交復号器.lvproj

LabVIEW 2012以前:ハードウェア入力と出力→CompactRIO→FPGAの基礎→カウンタ→直交入力→Quad Ctr – cRIO.lvproj

エンコーダアプリケーション構成する

    1. AおよびB信号を2つのデジタルラインに接続します。
    2. Quad Ctr.viのブロックダイアグラムを物理信号のデジタル入力チャンネルに変更して、AおよびBブール制御器を置き換えます。
    3. VIを実行してコンパイルし、対話モードで使用します。

図4.FPGA内でブール論理を使用して位置を追跡

 

周波数

デジタル信号の周波数は、周期が発生する速度です。ここで、周期は立ち上がりエッジまたは立ち下がりエッジ間の時間、またはHz単位の周期の逆数です。デジタル信号の周波数は、速度や角速度の決定から光源の強度のデコードまで、さまざまなアプリケーションで非常に役立ちます。LabVIEWおよびCompactRIOを使用して、周期復号化アルゴリズムを使用するFPGAにデジタル信号を転送するようにCシリーズデジタルモジュールをプログラムします。その後、周期はホストアプリケーションに転送され、周波数が補間されます。周波数を集録した後、既知の物理現象にマッピングできます。  

繰り返しになりますが、LabVIEW FPGAで周波数入力タスクをプログラミングすることで、NI-DAQmxよりもFPGA入力タスク数を増やすことができます。一部の周波数入力タスクでは2つのカウンタが必要なため、この方法は特に便利です。

picture.jpg

図5.デジタル信号の周期と周波数

次の例は、LabVIEW FPGAおよびCompactRIOシステムを使用して周波数測定を実装する方法を示しています。このサンプルでは、ブール論理を使用してエッジの発生を判断し、FPGAクロックを使用してパルス間の時間を決定します。このサンプルは、サンプルファインダでLabVIEWに移動し、以下を参照してください。

LabVIEW 2013以降:ハードウェア入力と出力→CompactRIO→信号生成と処理→デジタル→周期と位相測定→周期と位相測定.lvproj

LabVIEW 2012以前:ハードウェア入力と出力→CompactRIO→FPGAの基礎→カウンタ→周波数測定→カウントと周期―cRIO.lvproj.

周波数測定構成する

  1. 必要な信号をデジタルラインに物理的に接続します。
  2. 「カウントと周期 (FPGA)」VIのブロックダイアグラムを物理信号のデジタル入力チャンネルに変更して、AおよびBブール制御器を置き換えます。
  3. VIを実行してコンパイルし、対話モードで使用します。
     

図6.デジタル信号の周期と周波数を決定する

NIハードウェアを使用した周波数測定の詳細については、https://www.ni.com/en/shop/data-acquisition/measurement-fundamentals/frequency-measurements-how-to-guide.htmlを参照してください。

デジタルフィルタ処理

周囲ノイズや工業用スイッチまたはセンサの機械的「バウンス」などの環境要因により、データ収集システムがクリアな信号を受信できなくなる場合があります。FPGAを搭載したCompactRIOシステムでは、デジタルフィルタまたはデジタルデバウンスと呼ばれる技術を実装できます。デジタルフィルタ処理とは、信号の変化がシステムの処理面に伝播される前に、信号が指定された時間新しいレベルに維持されていることを確認するプロセスです。この方法は、ラインのグリッチやノイズをフィルタ処理し、システム内の不要な動作を削減します。

次の例は、ブール論理、LabVIEW FPGA、および CompactRIO システムを使用してデジタル ラインをフィルタ処理する方法を示しています。  フィルタ処理された入力が変更を反映する前に、信号は指定された時間新しいレベルに維持される必要があります。このサンプルは、サンプルファインダでLabVIEWに移動し、以下を参照してください。

LabVIEW 2012以前:ハードウェア入力と出力→CompactRIO→FPGAの基礎→デジタルフィルタ→デジタルフィルタ – 連続 – cRIO.lvproj 

LabVIEW 2013以降:同等の例は存在しません。以下のスニペットをブランクVIにドラッグできます。

 

デジタルラインフィルタ処理する

  1. 必要な信号をデジタルラインに物理的に接続します。
  2. 「Digital Filter – continuous」VIのブロックダイアグラムを物理信号のデジタル入力チャンネルに変更して、入力制御器を置き換えます。
  3. VIを実行してコンパイルし、対話モードで使用します。

図7.FPGAを使用してデジタル信号をフィルタ処理する

通信

CompactRIOシステムとCシリーズモジュールには、シリアルやイーサネットからPROFIBUSやMODBUSなどの工業用プロトコルまで、さまざまな標準通信プロトコルが含まれています。ただし、これらの標準プロトコルは、異なるプロトコルまたはコネクタを使用するデバイスと通信する能力が制限される場合があります。  CompactRIOシステムでは、デジタルモジュールとLabVIEW FPGAを使用してこれらのデバイスと通信できます。

図8.LabVIEWおよびLabVIEW FPGAを使用したSPI通信プロトコルの実装

このプロトコルの詳細については、『NI LabVIEWでのSPIバスについて』を、LabVIEW FPGAを使用してSPIバスプロトコルを実装する方法の詳細なサンプルについては『LabVIEW FPGAでのSPI通信プロトコルの実装』を参照してください。

カスタムトリガリング

トリガは、データ収集または制御システムにおいて不可欠な機能です。同期、アラーム、またはスタートアップ/シャットダウンタスクにはトリガを使用します。ただし、NI-DAQmxの標準トリガ関数には、複数の入力トリガを使用したり、いずれかのエッジまたは両方のエッジでトリガを行うなどのカスタム機能はありません。  CompactRIOシステムでFPGAを使用して、カスタムトリガアプリケーションを作成します。

デジタルパターン発生時にのみトリガを生成する例については、トリガとカウンタを作成する (FPGAモジュール) を参照してください。 

図9.デジタルパターン発生時にのみトリガを生成

ステップ