LabViewプログラミングメモ

by K.I

Index


概要

ちゃんとした使い方は、 ASCII出版の「LabVIEW 8プログラミングガイド グラフィカル言語によるPCベース計測とデータ解析」がお薦め。
1使いはじめて間もないので、嘘が多いかもしれないけど。

[top]

基本的なプログラム

データ入出力

VIはデータ入出力端子として、制御器と表示器を持つ。 例として、連続したデータ表示をやってみる。 これは表示器のみ使用している。

配列

測定データは多くの場合、ある時間間隔で記録された複数のデータになる。 例として、配列にある波形データが入っていたとして、それを表示するプログラムを考える。

サブVI

プログラムが大きくなってくると、特にLabViewの場合、全体の見通しが悪くなる。

一部をサブVIに変換

アイコンの設定

コネクタの設定


2必ずファイルにする必要があるのは面倒に感じるが、LabViewのプログラム構造上の問題だろう。
3制御器、表示器の生成機能を使う。

[top]

シーケンス制御

測定自体は、測定器を複数接続して並列に処理する。 例えば計測プログラムの大まかな流れが、例えば以下のようになっているとする。 通常のプログラムでは、シーケンスで順番に実行するプログラムの記述は容易だ。 でもLabViewでは、基本的に並列処理されるので、逆にシーケンス記述が面倒になる。

シーケンスストラクチャ

エラーフロー

LabViewのファイル処理でのエラーフローを例に説明する。

データフローによるプログラム


[top]

外部プログラムの使用

LabViewでは、測定ボード等の外部プログラムのDLLを利用することが出来る。

VC++でDLLを作成する

VC++で、DLLとしてプロジェクトを作ってコンパイルする。 これで、VC++の設定は終わり、あとはデフォルトで良い。

DLLのプログラム

プログラムは DLL名称.cpp とする。
        /* Call Library Source File */

        #include <ni/LabVIEW7.1/cintools/extcode.h> →DLL用ヘッダ


        _declspec (dllexport) int AddFunc(int in1, int in2);    →プロトタイプ宣言

        _declspec (dllexport) int AddFunc(int in1, int in2)             →関数定義
        {
          return(in1 + in2) ;
        }

DLL呼出し方法

DLLを動作させてみる

データフローを考慮してDLLを作る

例えば以下のように、エラー入出力用のパラメータを付加しておく。
        long _AddFunc(long *err, long arg1, long arg2);

DLLでグローバル変数を使う

        #include <ni/LabVIEW7.1/cintools/extcode.h>

        int gdata;
        
        _declspec (dllexport) int MulFunc(int in1, int in2);
        _declspec (dllexport) int GetData(void);

        _declspec (dllexport) int MulFunc(int in1, int in2)
        {
          int i=0;
          
          gdata = in1 * in2;
          return(gdata);
        }

        _declspec (dllexport) int getdata(void)
        {
          return(gdata);
        }

4LabViewのプログラムファイル名。拡張子が.viになる。

[top]

メモ

便利なショートカット

UARTを使う

その他



comments powered by Disqus