お願い 大学,研究所,メーカーの方々から多くのアクセスをいただいています。このサイトが有用であると思われましたら,LabVIEW TOPページへのリンクをよろしくお願いします。
本ページの内容をLabVIEW 2014用に改訂したミラーサーバーを作りました。こちらの方がお役に立つと思います。

「LabVIEW Trivial Tips」

(Since 2003/10/10,最終更新日:2005/10/08)
サイト全体の改定履歴

「サイトマップ」

LabVIEW TOPに戻る


 各VIの太字名称をクリックすると,ブラウザでVIの詳細説明を表示し,必要ならばVIをDownloadできます(このサイトの内容は逐次更新されていますので,最新の内容にアクセスするには「サイト全体の改定履歴」を参考にしてください)。
 なお,これらのVIがうまく動作しない,もしくは,バグがあることに気づかれた方は,メールで文句を言ってください。調べてみます。

20. エクセル関連(ExcelOpenClose.viフロントパネルとダイアグラムの説明)

 ActiveXを使ってエクセルに処理させるLabVIEWのexampleには,新規/既存のブックを問合わせなしで自動処理したり,処理後にブックを閉じてエクセルを終了するものが載っていません。ダウンロードする場合は,本体VIと,必要なサブVIを含めた自己解凍ファイルです。(ダウンロード 130 kB)

19. USBカメラからの画像取り込み

 USB経由でのカメラ画像の取り込み用ライブラリについて説明します。このライブラリは,大橋 康司さんのサイトの解説書ページで紹介されていましたPeter ParenteさんのLabVIEW Webcam Libraryに少しだけ手を入れたもので,著作権はPeter Parenteさんにあります。インストールは簡単で,特別な知識は不要です。手元にあったUSB Webカメラで動作することを確認してありますが,万一(more?)うまく動作しなかった場合には,VFWの詳細があまり理解できていませんので,申し訳ないですが,自力でDebugするか,あきらめてください。ダウンロードする場合は,改訂版の自己解凍ファイルです。(ダウンロード 529 kB)

18. サウンド関連

 18.1 ボイス・オペレーション録音機 (VOX Recorder.vi フロントパネルとダイアグラムの説明)

 計測の開始以前のデータを記録する手法である,リングバッファの応用サンプルとしての録音機VIです。録音機のサンプルは,あちこちにあると思いますが,この録音機はボイス・オペレーションになっています。ボイスオペレーション録音機では,音声記録開始時の頭の部分が切れることがあります。子音(かー)をしゃべっても母音(あー)に化けたりします。
 この対策として,リングバッファを用いて頭切れを少なくしています。Ring Buffer.viをサブVIとして使っています。ダウンロードする場合は,この2つを合わせた自己解凍ファイルです。(Download 115 kB)

 18.2 再生機 (Variable Speed Player.vi フロントパネルとダイアグラムの説明)

 上記用の再生機サンプルです。簡単な話速変換機能(Speech Speed.vi)をつけてあります。A15カーブの音量調整(VR A15Conv.vi)をサブVIとして使っています。ダウンロードする場合は,この3つを合わせた自己解凍ファイルです。(Download 87 kB)

17. 車間距離の計算 (フォーミュラノードの例題)

 17.1 発進時の車間距離 (DistBetwnCars.vi フロントパネルとダイアグラムの説明)

 交差点で発進する時の前車との車間距離の変化について計算表示するサンプルです。(Download 66 kB)

 17.2 減速時の車間距離 (DistBetwnCars2.vi フロントパネルとダイアグラムの説明)

 ある車間距離の前車がブレーキを踏み,遅れて自車がブレーキを踏んだ場合の車間距離の変化について計算表示するサンプルです。(Download 68 kB)

16. フロントパネル開閉

 16.1 フロントパネルを閉じる (CloseFP.vi フロントパネルとダイアグラムの説明)

 ローカルVIのプログラム処理が完了したら自分でフロントパネルを閉じる方法です。どこかのサンプルに有りました。(Download 15 kB)

 16.2 リモートステーションのフロントパネルを開閉 (OpenCloseRemoteFP.vi フロントパネルとダイアグラムの説明)

 LANを用いて複数ステーションで処理を行なうプログラムを開発する際,バグなどのためにリモートステーション側のVIが動きっぱなしになってしまい,あちこち駆け回って再起動することをしばらくやっていました。この手間をはぶくために,リモートステーション側のVIをVIサーバーで開閉するサンプルです。リモートステーションで起動中のVIのフロントパネルを閉じると,VIが停止し,メモリが開放されます。vi.lib\Utility\victl.llb\Close Panel.viを参考にしました。(Download 69 kB)

15. 統計処理

 LabVIEWのサンプルとしてはあまり出てこないと思われる,統計関連のVIを紹介します。統計処理はExcelなどで行っている方が多いと思いますが,LabVIEWでも十分行えますし,計測したデータを用いてすぐに統計処理できる点では,Excelよりはるかに応用分野が広いと思います。

 15.1 正規分布乱数 (NormDist.vi フロントパネルとダイアグラムの説明)

 LabVIEWで良く使われているのは一様分布乱数ですが,正規分布乱数は統計処理では必須です。LabVIEWの関数には無いと思って,逆関数法で作成したのですが,ちゃんとBox-Muller法の標準正規乱数が用意されていました。さがせばLabVIEWにはなんでもありのようです。Sub VIとして使えます。(Download 20 kB)

 15.2 乱数分布精度の検証 (DistAccuracy.vi フロントパネルとダイアグラムの説明)

 ついでに,LabVIEWの一様分布乱数と,上記で作成した正規分布乱数の発生精度をカイ2乗検定してみました。どちらもきわめて理論的分布に近い乱数を発生できることがわかります。(Download 128 kB)

 15.3 仮説の検定 (HypoTest.vi フロントパネルとダイアグラムの説明)

 計測とは直接関係ないサンプルですが,分割表から仮説の検定を行うもので,少し変更して生産現場の工程管理などにも応用できると思います。(Download 111 kB)

14. ストップ付ノブ (KnobStop.vi フロントパネルとダイアグラムの説明)

 数値制御器のノブやダイアルは,最大値と最小値の間をジャンプするようになっています。これはこれで,便利な場合もあるのですが,ジャンプしては困る場合も多いと思います。このVIはジャンプしないノブやダイアルの構成法を示したものです。単独では使えず,Whileループに組み込んで使います。動作させると,最大値と最小値の間で振動的に見える状態がありますが,これはみかけのみで,出力値は正しく制限されています。(Download 29 kB)

13.プロパティノードによるグラフ・チャートの凡例表示 (SetLegend.vi フロントパネルとダイアグラムの説明)

 グラフやチャートの凡例・マーカーをプログラムで指定したい場合,プロパティノードを用います。プロパティノードでの指定には,LabVIEWオブジェクトにはめずらしく,プロパティの指定順序などに少しくせがあります。順序が違うと思ったとおりに設定されないことがあります。(Download 63 kB)

12. メール送信 (SMTP.vi フロントパネルとダイアグラムの説明)

 LabVIEWでメールを送るVIを作成しました。新しいLabVIEW 7 Expressでもメールを送ることができるようですが,SMTPの基本的な流れに沿って作成したサブVIです。件名に日本語を用いても,Shift JIS⇒JIS⇒Bエンコードしますので,文字化けしないで送ることができます。
使われる方の環境に合わせてブロックダイアグラムの文字列定数を変更してください。
 メールサーバーのサーバー名称で実行した場合にエラーになるときは,メールサーバーのIPアドレスを使ってください。
 ダウンロードする場合は,SMTP.viとSJIS2JISフォルダの2つを圧縮した自己解凍ファイルです。(Download 119kB)
注意) 最近のメールサーバーはユーザーの認証を行うものが多いので,プロバイダのネットワーク外から送信する場合にはメールサーバーがSMTP応答を拒否することがあります。これを避けるには,メール送信前に一度,ダミーでメールの受信操作を行ってから送信してください。この件は,LabVIEW 7以降に付属しているMail関数についても同様です。
 これを避ける事前認証方法もあるのですが,暗号化レベルが低いためセキュリティ上の問題があります。

11. 特殊スナップ・スイッチ

 上/中/下と3位置で動作する4種類のスナップ・スイッチです。単独では使えず,Whileループに組み込んで使います。 スイッチの上下部分に,透明にした押しボタンが配置されています。マウスで操作したとき,スナップ・スイッチではなく,透明押しボタンが正しく選択されるように,ツールバーの並べ替えボタンを押して,透明押しボタンの重なりを「最前面に移動」に設定してください。

  11.1 3SWUtDt.vi フロントパネルとダイアグラムの説明 :上下ともマウスクリックでテンポラリに動作し,中立位置に自動復帰するスイッチです。(Download 20kB )
  11.2 3SWUhDt.vi フロントパネルとダイアグラムの説明 :下にはテンポラリ動作で中立位置に自動復帰し,上に倒すとその位置でホールドされるスイッチです。 (Download 30kB)
  11.3 3SWUtDh.vi フロントパネルとダイアグラムの説明 :上にはテンポラリ動作で中立位置に自動復帰し,下に倒すとその位置でホールドされるスイッチです。 (Download 24kB)
  11.4 3SWUhDh.vi フロントパネルとダイアグラムの説明 :上下ともその位置でホールドされるスイッチです。もう一度クリックすると中立位置に戻ります。 (Download 36kB)

10. 簡単FFT (EasyFFT.vi フロントパネルとダイアグラムの説明)

 エクセルcsv形式(=カンマ区切りテキスト),もしくはTab区切りテキストで記録された時間列と信号列のデータから周波数スペクトルを描きます。

    (1)データの先頭に複数行のコメントなどがあってもOKです。
    (2)複数列の記録データから,時間列と信号列を個々に指定することができます。
    (3)時間応答の範囲を指定して,その部分のデータを用いて周波数スペクトルを描きます。

  操作方法は,フロントパネル上部に書かれた緑字の説明を見てください。
 ダウンロードはMain VIのみですので,Sub VIはMain VIをロードした時に出てくる指示に従って,LabVIEWのライブラリを呼び出せばOKです。 (Download 225kB)

9. 簡単F特性

 9.1 簡単F特性 (EasyBode.vi フロントパネルとダイアグラムの説明)

 エクセルcsv形式(=カンマ区切りテキスト),もしくはTab区切りテキストで記録された時間列と励起信号列,応答信号列のデータからFRFでボード線図を描きます。

    (1)データの先頭に複数行のコメントなどがあってもOKです。
    (2)複数列の記録データから,時間列と励起信号列,応答信号列を個々に指定することができます。
    (3)時間応答の範囲を指定して,その部分のデータを用いてボード線図を描きます。

 操作方法は,VI画面上部に書かれた緑字の説明を見てください。動作させると,フロントパネルが画面からはみ出しますので,処理が終了したら,スクロールして下部のボード線図を見てください。
 ダウンロードはMain VIのみですので,Sub VIはMain VIをロードした時に出てくる指示に従って,LabVIEWのライブラリを呼び出せばOKです。 (Download 277kB)

 9.2 簡単F特性2 (EasyBode2.vi フロントパネルとダイアグラムの説明)

 エクセルcsv形式(=カンマ区切りテキスト),もしくはTab区切りテキストで記録された時間列と励起信号列,応答信号列のデータからFRFでボード線図を描きます。上記9.1との違いは,スペクトラムとFRFの平均化処理を可能にしたことと,励起信号のスペクトラムが複数の励起ピーク値をもつ場合には,そのピーク周波数のみのデータを用いてボード線図を描けるようになっていることです。
 このVIについては,フロントパネルとダイアグラムを示すだけではなく,参考となるプログラム内容の説明も示しました。

    (1)データの先頭に複数行のコメントなどがあってもOKです。
    (2)複数列の記録データから,時間列と励起信号列,応答信号列を個々に指定することができます。
    (3)時間応答の範囲を指定して,その部分のデータを用いてボード線図を描きます。
    (4)使うファイルに複数回の計測データが入っている場合は,それらを用いて平均化処理を行えます。
    (5)平均化処理を行なった場合には,計測の信頼性の指標となるコヒーレンシのグラフも表示されます。
    (6)励起信号スペクトルに励起ピークがある場合は,自動的にそのピーク周波数群を検出し,
      計測のS/Nを改善するため,その周波数のみでのBode線図を描くことができます。
    (7)ピーク検出の閾値は自動的に設定されますが,設定に不具合がある場合には,カーソルで閾値を変更できます。

 操作方法は,VI画面上部に書かれた緑字の説明を見てください。
 ダウンロードはMain VIのみですので,Sub VIはMain VIをロードした時に出てくる指示に従って,LabVIEWのライブラリを呼び出せばOKです。 (Download 544kB)

参考
(1)上記の9と10用のサンプルtextデータです。少し長い計測を行ったデータですので大きくなっています。
 ファイル中には2つの計測データが含まれていますが,異なる対象の計測なので,9.2用には適したデータではありませんが,ためしに強引に使うことはできます。ご自分の手元に使えるデータがあれば,それを使われたほうがよいと思います。(Download 647kB)

(2)FFT/FRFともに,「窓関数」は無しで処理していますが,カーソルで切り出す区間のデータ波形から考えてリーケージ処理が望ましいと思われるならば,ブロックダイアグラムのFFT/FRF関数部分の解析windowをhanningなど適当なものに変えてください。

8. 日本語文字列検索 (KanjiMatch.vi フロントパネルとダイアグラムの説明)

 LabVIEWのMatch Patternでは,文字列を1byteごとに比較するため,日本語の文字列検索を行うと,おかしな一致がでることがあります。たとえば,「ミリ波」文字列と「株」がマッチしてしまいます。このVIはこれをなんとかするために作ったものです。 (Download 47kB)

7. 2次元配列の間引き処理 (Decimation.vi フロントパネルとダイアグラムの説明)

 計測装置のデータ処理で,サンプル周期が異なるセンサ群を,同じ時間軸に並べて表示するために,サンプル周期の短いデータ(多いデータ)の間引き処理を行いましたが,LabVIEWの配列処理ではやたら遅かったので,簡単なC言語とCall Library Function Nodeで作成しました。C言語はすっかり忘れてしまっているので,変なプログラミングになっている可能性がありますが,動作は確認済みです。「Decimate 1D Array関数」より便利だと思いますが,このdllで扱えるのは単精度(32bit)実数配列です。間引き機能のみで,ローパス機能はありませんので,エイリアシングが発生しないように,この処理の前にLPFを併用されることをおすすめします。
 ダウンロードする場合は,(decimation.dll 28kB)のみ,もしくは,Cのソースと,VI, decimation.dllを圧縮した自己解凍ファイル(decimation.exe 29kB)です。

 まったく,LabVIEWは奥が深く,最近(2005/10)になって「関数」「解析」「信号処理」「時間領域」サブパレットの中にDecimate.viという本Sampleより便利なものがあることに気づきました。ローパス機能も付いています。速度的にはわかりませんが試されるとよいと思います。いつになってもLabVIEWのStudentから卒業できないようです。

6. Sub VIの起動方法 (RunSub.vi フロントパネルとダイアグラムの説明)

 Main VIのブロックダイアグラム中に組み込まれたSub VIは,Main VIがメモリにロードされる時,同時に読み込まれます。これに対して,Main VIから必要な時点でSub VIをメモリに呼び出して起動するには2種類の方法があります。VIサーバーで呼び出すとMain VIとSub VIが独立した並行処理タスクとして動作します。そのため,2つのタスクは独立に終了させることもできます。これに対して,Call By Reference NodeでSub VIを動的に呼び出した場合,Sub VIが終了しないとMain VIに制御が戻らず,Main VIを終了させることができません。(Download-Main 57kBDownload-Sub 19kB)

5. Run中にグラフ/チャートの大きさを変える方法

 VIが停止中にグラフやチャートの表示領域を拡大/縮小するのは,オブジェクトの4隅を位置決めツールでドラッグするだけでできます。ここで示すサンプルは,Run中にグラフやチャートの表示領域を拡大/縮小するとともに,フロントパネルの大きさもそれに応じて変更する例です。
(1)プロパティノードを用いて行う方法です。(Subpanel_2.vi フロントパネルとダイアグラムの説明)(Download 53kB)
(2)VIサーバーとグローバル変数を用いて行なう方法です。 (SizeChange.vi フロントパネルとダイアグラムの説明)
 ダウンロードする場合は,SizeChange.viとSizeGlobal.vi,SubPanel.viの3つを圧縮した自己解凍ファイル(SizeChange.exe 49kB)です。

4. 矢印表示器 (Arrows.vi フロントパネルとダイアグラムの説明)

 教育などにLabVIEWを使って,機械の動きをシミュレーション動作させながら説明するような場合,信号の流れや物の流れの方向と大きさを示すために,矢印表示をLabVIEWで制御したい場合があります。ここに8種類の矢印表示器と,矢印表示器を2次元的に動作させる例を示します。水平/垂直の矢印表示器です。任意の傾きのものも欲しかったのですが,自分で調べた範囲では,LabVIEWで傾いた方向にアナログカスタム制御器を作ることはできないようです。
 固定点から伸びていく4種類の矢印表示器と,固定点に向かって縮んでいく4種類の矢印表示器です。(Download 106kB)

3. 画像の表示SUB (Graphic.vi フロントパネルとダイアグラムの説明)

 Main VIで指定されたファイルパスの画像を別のウィンドウに表示させるSUB VIです。ウィンドウの大きさは自動的に画像の大きさに調整されます。ファイルパスの拡張子で画像形式を認識し,使える画像形式は,BMP,JPG,PNGです。画像形式が合わないとエラー画像が表示されます。ダウンロードする場合は,Graphic.viとImageError.bmpの2つを圧縮した自己解凍ファイルです。(Graphic.exe 48kB)

2. 複数行の表示器の自動スクロール (LogDisp.vi フロントパネルとダイアグラムの説明)

 Log表示などで,表示器に複数行のデータを表示させると,表示領域からあふれた行は見えなくなってしまいます。表示領域を3行以上にして,表示器にスクロールバーをだしても,最新のLog表示行は画面からはみだした領域に書かれるので,いちいちスクロールしなければ見えず不便です。このVIは表示器のプロパティノードのTextScrollPosに大きな数値を書き込んで,最新の表示行が常に見えるように自動的にスクロールさせます。(Download 28kB)

1. Application作成時の階層増加 (BuildExe.vi フロントパネルとダイアグラムの説明)

 ファイル入出力を行うLabVIEW VIを,プロフェッショナル開発システムでアプリケーション(.exe)に変換すると,階層構造が1段増えるので,VIとして動作させた場合とアプリケーションとして動作させた場合ではファイルのパスが異なります。アプリケーションで正しく動作させるためには,ブロックダイアグラムを修正する必要がありますが,これはそれを避ける方法で,どこかのexampleにあったものです。(Download 21kB)

LabVIEW TOPに戻る

Presented by ALS-CI CO., LTD.