【LabVIEWでDAQを扱う②】LabVIEWによるDAQ操作の考え方

LabVIEWでDAQを扱う

スポンサーリンク

LabVIEWでデータ測定用のハードウェア(DAQ)を扱おうという初心者の方に向けて、道しるべになるような情報を発信していこうという試みです。

シリーズ2回目としてDAQを使用する際に必要なタスクという考え方について紹介していきます。

この記事は、以下のような方に向けて書いています。

  • LabVIEWでDAQを動かすときのサンプルを知りたい
  • タスクって何?
  • タスクを用意して簡単にプログラムを動かしたい

もし上記のことに興味があるよ、という方には参考にして頂けるかもしれません。

なお、前回の記事はこちらです。

スポンサーリンク

サンプルを見てみる

前回、NI MAXを使ってハードウェアが認識されているか確認すること、簡単な測定が行えることなどを紹介しました。

もう早速LabVIEWのプログラムを見ていこうと思うのですが、プログラムを動かす関係上、ハードウェアが必要になります。

前回の記事で、シミュレーションデバイスの作り方を紹介しました。

本記事の内容も、実機がある方は実機を使って、もしない方はシミュレーションデバイスを作って読んでみてください。どんなハードウェアでもいいですが、ここでは例としてNI cDAQ9174のシャーシにNI 9215というアナログ入力用のモジュールを一つ挿していることを想定します。

NI MAXの操作にはまたあとで戻ってきますが、いったんLabVIEWの方でDAQハードウェアの操作を行うようなプログラムはどういったものとなるのか、イメージを持っておいた方がいいと思います。

そんなときに便利なのは・・・やはりサンプルです。

DAQ操作に対するサンプルは、DAQmxのドライバソフトウェアをインストールした時点で一緒にインストールされLabVIEWからアクセスすることができます。

サンプルファインダの中でハードウェア入力と出力、この中のNI DAQmxの中から今回はNI 9215というアナログ入力ハードウェア(モジュールと呼んだりします)を例にとるのでアナログ入力を選び、電圧の連続入力のサンプルを開いてみます。

ちなみに、特定のハードウェアに特化したサンプルを絞り込み検索するということもこのNIサンプルファインダで行えます。

まずは見様見真似で下の図のようなフロントパネルの設定にして、プログラムを実行します。

結果が1秒に一回更新されるくらいの頻度でグラフに表示されるはずです。

なお、シミュレーションデバイスの場合には、指定した測定パラメタで正弦波信号を測定している、という状態を模擬しています。(上の図はシミュレーションデバイスを使用した場合の結果です。同じ操作、パラメタにしている場合には同じ結果になっているはずです)

プログラムが実行されるのが分かったら、こんな結果を得られるプログラムはどういう作りになっているか、についてブロックダイアグラムで確認します。フロントパネルが表示されている状態でCtrl + Eでブロックダイアグラムを確認してみます。

この時点で一つ一つの関数の意味を理解する必要はなくて(今後の記事で扱います)、今はまずこんな作りになっているんだな程度に見ておきます。この作りを理解するためのキーワードが前回NI MAXの話でも出ていた「タスク」です。

簡単に言えばタスクはハードウェアの振る舞いについて「こういう動作をしてください」という指定の集まりです。どのチャンネルを使用して、どのようなサンプリングレートで、どのようなトリガを使用して、といった振る舞いを定義してこれを一つのタスクとして扱います。

なのでDAQを操作するプログラムは

  • タスクを構成する
  • タスクを実行する
  • タスクをクリアする

といった流れが決まっています。サンプルの中身も当然このようになっています。

ではもう少しタスクについてイメージを持つために、実際にタスクを構成してみます。

とはいってもLabVIEWのプログラムだとそもそも個々の関数の使い方を知らないと組めないので、ここでは簡単に構成するための機能を使いましょう。ということでNI MAXに戻ります。

タスクをNI MAXで作ってみる

NI MAXでは、このタスクを対話式に作成することができます。ただし前回の記事でも紹介したように、これは固定されたタスクとなるため、プログラムの途中で編集することができません。

編集はできないものの、タスクでどういったことを構成できるのかのイメージをつかむにはいいかなと思うので紹介していきます。

NI MAXでハードウェアを選択し、タスクを作っていきます。タスク名は何でも構わないのですが、後でLabVIEWプログラムの中で使用することになります。

タスク名を決めたら、次の画面で測定パラメタを設定します。

この画面を見て、何か見覚えがあるという感覚を持つ方もいるかもしれません。実はこれ、DAQアシスタントでハードウェア操作を構成するのと同じ画面になります。もしDAQアシスタントを使用したことがある方は、同じイメージを持ってもらって特に問題ないと思います。

先ほどLabVIEWのサンプルを動かしたのと同じパラメタにするには以下を参考にしてみてください。

NI MAXでタスクを構成したら、これをLabVIEWで呼び出して使用することができます。

今回は電圧の入力を例にとるので、読み取りの関数を使用します。この関数の左上の入力がタスクの指定を受け付けます。

DAQmx読み取りの関数が、実際の測定値を出力する関数になります。この関数に対して、先ほどNI MAXで用意したタスクを割り当てます。

割り当てたのはタスクだけなのですが、このDAQmx読み取りの関数が期待通りに動くようにするために、サンプル数/チャンネルという値を「肉付け」していきます。この値は、一度にこのDAQmx読み取りの関数から出力されるデータの数を指定するものと思ってください。

繰り返しの処理についてはWhileループを使用しています。この辺りで何をやっているのかよくわからないという場合には、Whileループの使い方の復習していただくといいかもしれません。このブログでは以下の記事で紹介しています。

仕上げに、タスクを停止し、クリア(消去)するための関数を用意します。

もうこれでプログラムは動くのですが、結果を表示させるためにはグラフが必要です。フロントパネルでグラフを用意し、DAQmx読み取りのデータ出力から出したワイヤを配線します。

これでプログラムを実行することで結果が得られます。

さきほどサンプルファインダのサンプルで見られていたのと同じような結果が得られていることがわかるでしょうか?サンプルだとブロックダイアグラム上では関数がたくさん並んでいましたが、タスクをNI MAXで構成した場合には、使用する関数の数もぐっと減ります。

そのため見た目的にはタスクをNI MAXで構成したほうがすっきりなのですが、測定に関するパラメタを途中で少しでも変更したいなと思った場合にはまた新たなタスクをNI MAXで作る必要があります。

この点、サンプルファインダのサンプルはフロントパネルでパラメタを指定できその場で対応できます。

決まったことしかやらないのか、パラメタを自由に変換できる方がいいのか、場合に依るとは思いますが、基本的に後者のことができれば不自由はないと思うので、LabVIEWの関数を並べてプログラムを作る方に慣れてるのに越したことはないと思います。

さて、LabVIEWを使用してハードウェアを操作することについてサンプルやNI MAXで用意したタスクを通して紹介しました。

これを踏まえ、次回はタスクの中身をLabVIEWでどのように実装しているのかについてもう少し具体的に紹介しようと思います。

もしよろしければ次の記事も見ていってもらえると嬉しいです。

ここまで読んでいただきありがとうございました。

コメント

  1. つまさき より:

    めちゃめちゃ助かりました!
    研究室で使わないといけないのですが、LabVIEW自体はかなりマイナーなのでどのように勉強すれば良いのかわからず困っていました。詳細かつわかりやすい説明をありがとうございます。

    • コメントいただきありがとうございます。
      学生の方でしょうか、お役に立てて何よりです。

      本屋に行っても書籍見かけなかったり、LabVIEWを勉強するの大変ですよね・・・
      私も仕事で使う必要があって触り始めた口ですが、その時の気持ちを忘れずに、わかりやすいと思っていただけるような記事をこれからも
      書いていこうと思ってますので、これからもたまに遊びに来てください。

タイトルとURLをコピーしました