この記事では、LabVIEWプログラムの作成時に役立てられるデータロギング機能について紹介しています。この機能を使用することで、動作を確認したいVIに対していちいち動作結果を保存する機能を実装しなくても後から結果を確認することが簡単にできるようになります。
プログラム作成時の入出力値の記録
プログラムを作成するときに、ある入力値に対してどのような結果(出力)が得られるかをテストする場面はよく出てくると思います。
いくつかの考えうる入力値、あるいは同じ入力値でも結果が異なるようなプログラムに対して出力値が期待通りになっているかを確認することを考えたときに、「この入力値の場合にはこの出力値」という対応付けが簡単に記録できるととても便利です。
もしこれを実現しようと思った場合、入力値と出力値をいちいち記録するための機能を実装する、というのも一つの手だと思います。
ただし、単純な入力や出力データなら楽ですが、これが多くなったり、出力結果がクラスタになっていたりすると上の方法ではなかなか対応するのが難しくなります。
LabVIEWにはそんな入出力の記録をとってくれる機能をVI自体で持たせる設定があり、それがデータロギングの機能となっています。この機能を使うことで、入力値と出力値を簡単にログし後で確認することも容易になります。
データロギングの流れ
一つ具体的にデータロギングの流れを紹介します。
毎回結果が変わるものの方がわかりやすいので、以下のようなプログラムを例にとります。
このプログラムを何度か実行することでいくつかの結果が得られたとします。
これらの結果は、データロギングの機能を使っていることで簡単に後から確認することができます。
さらに、フロントパネルの制御器や表示器をコネクタペーンで端子接続していると、その特定の制御器や表示器の値のみを表示させることができるようになります。
もちろんこれはある記録用のファイルにデータを保存しているからこそ見えているのであって、何回も記録するとその記録ファイルのサイズが大きくなってしまいますが、手軽に確認できるのはとても便利です。
以降ではこの機能の設定について紹介していきます。
データロギングの設定の仕方
データロギングの設定は簡単で、操作のメニューから「完了時にログ」とするかあるいはデータロギングで「ログ」を選択します。
初めて選択した場合には、どこのファイルにデータを記録するかを聞かれます。拡張子は.txtを使用できます。
なお、「完了時にログ」と「ログ」は以下の違いがあります。
- 完了時にログ:この設定を行って以降、実行された結果をログする
- ログ:この設定を行った時点での結果のみをログする
ひとつのログファイルに何度も「ログ」を行うことができますが、連続でログをさせたいのであれば「完了時にログ」の設定をすることで、以降解除するまで毎回の結果が記録されることになります。
「あ、この結果記録させておきたい」と、実行してから思った場合には「ログ」を選択すれば実行後でも記録ができますが、その時の記録しかログされません。データを記録するファイルは同じものを使い続けている状態で、「ログ」をしてから「完了時にログ」をすることもできますし、実行の度に、記録しておきたい結果にだけ「ログ」を何度もすることもできます。
データ確認方法について
データの確認方法は大きく二種類あります。
- そのVI自体でデータの閲覧を行う
- 他のVIで「データベースアクセス」する
以下、二つの方法をそれぞれ見ていきます。
そのVI自体でデータの閲覧を行う
そのVI自体でデータの閲覧を行うのは、回収モードと呼ばれます。このモードで、何回目の実行の記録を見るかを指定するとその時の入出力の値が見えるようになります。
やり方は簡単で、対象のVIに対して「回収」を選択するだけです。
回収モードでは、何番目の記録を見たいかを選択するだけで簡単にその時の結果を表示できます。
また、このモードでは、ログから消したいものを選ぶことができます。消してしまうことでログは消えてしまいますが、削除のボタンを押してもすぐに消えるわけではなく、完了ボタンを押すまでは復元することができます。
対象となるVI単体でできる手軽さが利点です。ただし、あくまでこれまでの実行の結果をそのVIの上で再現するだけなので、それらの値を他のVI中で使用するといったことはできません。この点が次に紹介するデータベースアクセスの方法と異なります。
他のVIで「データベースアクセス」する
データベースアクセスを行う場合には、対象となるVIを他のVIにサブVIとして置き、右クリックして「データベースアクセスを有効にする」を選択します。すると、そのサブVIの周りが黄色の枠で囲まれるようになります。
この黄色の枠には、何回目の実行の結果を表示するかを指定する数値、その指定された数値でログがあるかを表示するブール、タイムスタンプ、そしてフロントパネル上の制御器や表示器がまとまったクラスタ表示器があります。
それぞれに対し右クリックで制御器や表示器を作成します。
なお、タイムスタンプは、どうやらVIの終了時間の記録を残しているようです。
あとは、何回目の実行の結果を見たいかについてをレコード番号として数値で指定して実行すればその時の入出力値がクラスタ表示器に表示されるようになります。
これにより、例えば「3回目の実行の時に得られている結果を使って他のVIで使用する」といったことができるようになります。(クラスタをバンドル解除する、あるいはコネクタペーンに表示器を接続しデータベースアクセス時にその表示器の値のみを取得する)これは回収モードではできない操作です。
なお、結果を見たいVIが回収モードになっている間はデータベースアクセスできません。
データロギングの注意点
最後に、データロギングにおける注意点について紹介します。
扱えるデータタイプ
このログ機能でログされるデータの実例を紹介していきます。
まず、基本的なデータタイプは一通り対応します。数値、文字列、ブール、これらの配列やクラスタもそのまま記録されます。
表示器で注意するのは、チャートです。グラフだとすべてのデータが表示されるのですが、チャートだと最後の一点しか表示されません。
また、波形データやピクチャの情報もログすることができます。一方で、Vision Acquisition SoftwareやVision Development Moduleで使用する画像表示器のデータは記録されません。
プログラムを編集した場合
記録をとりたい対象のプログラムに対し「ログ」あるいは「完了時にログ」を行ってからそのプログラム自体に変更を加え制御器や表示器が追加されたあとにログを取ろうとすると警告が出ます。
どうやら、一つのログファイルには一つの形式(制御器や表示器のクラスタ)でしか保存できないようで、制御器や表示器が加わることでこの形式が崩れることが原因のようです。
もし保存したいのであれば、新たなログファイルに記録されるようにします。
また、もし編集をやり直して今までログをとっていた状態の制御器、表示器の状態に戻しても、実行時に再び記録するファイルを選ばされるようになります。ここで新規のファイルを指定してもいいですし、今までのファイルを指定することもできます(今までのファイルを指定した場合警告が出ますが構わず続ければ、続きから記録できるようになります)。
完了時にログ設定について
一度「完了時にログ」設定したVIは、LabVIEWを終了させてもう一度開いてもこれが設定されたままになっています。実行回数が増えるほどログファイルのサイズも大きくなるので、必要でないときには「完了時にログ」設定を解除するのがいいと思います。
本記事では、プログラム作成時に入出力の結果を調べるときに役立つログ機能を紹介しました。わざわざ記録用の機能をプログラム的に作らなくても、LabVIEW VI自身で自動的に入出力値を保存してくれるのは知っているかいないかでプログラム作成効率も変わってくると思うので、ぜひ記事を参考に触ってみてください。
ここまで読んでいただきありがとうございました。
コメント