VeriStand用カスタムデバイスでセクションやチャンネルを追加する

更新しました Jun 28, 2024

環境

ソフトウェア

  • VeriStand
  • VeriStand Custom Devices
  • LabVIEW

VeriStand用カスタムデバイスはLabVIEWで開発することができ、VeriStandの組み込みの機能では実現できないような複雑あるいは特殊な処理を実装するのに必要となります。
この記事では、カスタムデバイスを作成、使用するうえで入力や出力の機能を担うチャンネルとそれらを含んだセクション用のページ作成について確認していきます。

もし、カスタムデバイス作成に必要なプロジェクトテンプレートがない場合には、こちらの記事 に従ってまずはプロジェクトテンプレートを使用できるまでの準備を完了してください。
 

静的にセクションやチャンネルを追加する

  1. LabVIEWで新規のプロジェクトを作成します。プロジェクトテンプレートから、新規プロジェクトの一覧にあるCONSOLIDATED NI VeriStand Custom Deviceを選択してカスタムデバイスのプロジェクトを作成します。
    installcomplete.png
  2. カスタムデバイスの名前と保存先を決定します。カスタムデバイス名はAdd Sec Ch Testとし、任意の場所にAdd Sec Ch Testというフォルダを用意してここに保存されるようにします。また、Custom Device Execution ModeはAsynchronousとし、Custom Device Extra Page Namesは空白の状態にします。
    createproject.png
  3. 作成されたプロジェクトで、<カスタムデバイス名> System Explorer.lvlibの下にあるInitialization VI.viを選択します。
    initialize.png
    ブロックダイアグラムを開いてケースストラクチャのTrueケースにあった処理は全て削除し、以下の図のように関数を配置します。この図のように配置することで、このカスタムデバイスをVeriStand上で使用した場合、MyInputSectionというセクションに4つの入力チャンネルが、MyOutputSectionというセクションにも4つの出力チャンネルがそれぞれ作成されます。
    initializeblock.png
  4. 次にプロジェクトエクスプローラに戻り、<カスタムデバイス名> Engine.lvlibの下のRT Driver VI.viを選択します。このviに書いた処理が、ターゲット(今回はWindows)上で動作します。
    rtdriver.png
    注意:
    もしリアルタイムターゲット上で動作する処理を各場合には、プロジェクトエクスプローラのリアルタイムターゲット下にある<カスタムデバイス名> Engine.lvlibの下のRT Driver VI.viを選択します。Engine.lvlibはターゲットに依らず共通ですが、リアルタイムターゲット下のviを選択することで、リアルタイム下で使用できる関数を使ってviを開発することができます。
  5. viのブロックダイアグラムを開いて、以下の図のように編集します。このプログラムでは、入力(Input)チャンネルの値をそのまま出力チャンネルに表示します。
    rtdriverblock.png
  6. RT Driver VI.viの編集が終わったら保存し、プロジェクトエクスプローラでビルド仕様を右クリックしてBuild Allですべてビルドします。もしリアルタイムターゲットに対して作成した場合にはリアルタイムターゲット下のビルド仕様に対してもすべてビルドを実行します。
  7. ビルド後にVeriStandを開いてシステムエクスプローラからカスタムデバイスを選択します。システムエクスプローラを閉じてプロジェクトのツリー上では以下のように表示されていることを確認します。ここで、同じセクション内でのチャンネルの並び方は、Initialization VI.viでチャンネルを作成した順番とは必ずしも一致しないことに注意します。
    vsresult.png
  8. プロジェクトをデプロイして、各入力チャンネルの値を変更します。このとき、Initialization VI.vi上で入力チャンネルを作成した順番と出力チャンネルを作成した順番が対応することを確認します。例えば、MyInputBは入力チャンネルとしては2番目に作成されているため、MyInputBの値は出力チャンネルとして2番目に作成されたOutputCと一致します。同様に、InputDチャンネルは入力チャンネルとして4番目に作成されているため、出力チャンネルの4番目に作成されたOutputDが対応しています。
    vsresult2.png

動的にセクションやチャンネルを追加する

  1. 次に、動的にチャンネルを作成する方法を試します。LabVIEWのプロジェクトエクスプローラに戻り、<カスタムデバイス名> System Explorer.lvlibの下でSystem Explorer >> Dynamically CalledにあるMain Page.viを開きます。
    mainpage.png
  2. Main Page.viのフロントパネル上にブール制御器を一つ配置し、機械的動作をラッチとします。
    mainpagefront.png
    以下の図のようにこのブール制御器に対するイベントを作成します。このイベントは、発生するたびに有効なラベル名を調べてそのラベル名に対応したセクションおよびNewInputとNewOutputのチャンネルを追加します。
    mainpageblock.png
  3. Main Page.viの編集が終わったら保存して閉じ、再びプロジェクトエクスプローラ上でビルドします。
  4. VeriStandを開いたままにしていた場合には一度終了してから、VeriStandのシステムエクスプローラ上で今ビルドしたカスタムデバイスを選択します。もし既にシステムエクスプローラ上でカスタムデバイスを追加している状態であれば一度これを削除してから新規で追加します。
  5. カスタムデバイス名をクリックして表示されるメインページ上のブール制御器ボタンを押すたびに、セクションおよびこれに付随するチャンネルが生成されることを確認します。
    addresult.png

注意:
セクションやチャンネルを削除するときには、どちらの項目であってもRemove Custom Device Item.viを使用します。
 
 

次のステップ

この記事では、VeriStandのカスタムデバイスで入出力を与えるのに必要となるチャンネルおよびチャンネルをまとめるためのセクションを作成するための流れを確認しました。
チャンネルを作成するための関数はInitialization VI.viMain Page.vi以外でも使用することができます。アプリケーションの要求にあった、ユーザーが使用しやすい機能となるように設計を考えることで、セクションやチャンネルを作るタイミングを決定してください。