3年目後期 物理実験3

気象計測実験レポート

〜 LabVIEW で作る気象計測用プログラム 〜

理学部   地球惑星科学科   地球物理   22980138   森川 靖大

これは理学部 地球惑星科学科 地球物理 3年目後期に行われた 物理実験3 の一つ 気象計測に関するレポートである。


  1. 気象計測実験の目的
  2. 気象計測実験の内容
  3. LabVIEW について
  4. DAQ ボードについて
  5. 風向・風速計で計測するためのプログラム
  6. 気圧計で計測するためのプログラム
  7. 温度・湿度センサーで計測するためのプログラム
  8. 転倒マス雨量計で計測するためのプログラム
  9. 超音波風速計で計測するためのプログラム
  10. 気象観測実施
  11. matlabで観測データをグラフ化
  12. 気象計測実験を終えて
  13. 気象観測(物理実験3)実験関係者
… 2
… 2
… 2
… 2
… 3
… 4
… 4
… 4
… 5
… 5
… 6
… 11
… 18
… 19
… 19
… 19
… 20
… 20
… 20
… 21
… 21
… 21
… 22
… 22
… 23
… 23
… 24
… 25
… 26
… 26
… 27
… 29
… 31
… 31
… 32
… 33
… 33
… 33
… 34
… 34






1. 気象計測実験の目的

理学部 地球物理学科 3年目後期に行われた 物理実験3 の一つ 気象計測では、主に以下のものに関しての 知識、技術を習得することが目的であった。

  1. 気温、気圧、風(エアロベン、超音波風速計)、 雨量計等の計測原理を理解する。
  2. 自動計測制御ソフトウェアー(LabVIEW)の使い方を習得し、 気象要素を自動計測できるようになる。
  3. 電子カメラで屋外の天気状況を自動モニター できるシステムを構築する。
  4. Matlab の使い方を習得し、計測した気象データを図示したり、 解析を行う。

結果的には 1、2 についてはおおむね目標を達成できたが、 3、4 に関しては実験が遅々として進まなかったために ほとんど行う事ができなかった。 (ただ、3 に関しては実験担当教官の一人である見延先生がいつの間にか 行っていたが)


2. 気象計測実験の内容

目的と成果はともかく、本実験では主に以下の事をおこなった。

  1. LabVIEW の習得、及び気象の自動計測
  2. 計測器の原理の理解
  3. 計測器とコンピュータとをつなぐインターフェースの理解
  4. 計測器とインターフェースとの配線
  5. 計測器の設置
  6. 実際の計測
  7. 計測データの解析

実験は 2班 各3名 で行ったため、各班ごとに役割を分担して作業を行った。 特にそう決めたわけではないが、私は主に LabVIEW に関しての作業を 行ったため、このレポートではその分野を中心にまとめる。 (正直に言えば、計測器の原理などに関しては結局ほとんど理解していない)


3. LabVIEW について

[3.1] グラフィカルプログラミング

LabVIEW とは、C言語や Fortran 、Java などと同じように プログラミング言語の一つである。

ただ、一つ大きく違うのは C や Fortran は文字でプログラムを 作るのに対し、LabVIEW では グラフィカルにプログラムを作る ことができる点である。(というかグラフィカルにしか作れないのだが)

言葉だけではわかりにくいかもしれないので、以下に LabVIEW のプログラミング開発画面を紹介する。

例えば、Fortran で以下のような簡単な足し算のプログラムがあるとする。

program sample
integer :: x,y,ans
write(6,*) 'Please input number x= '
read(5,*) x
write(6,*) 'Please input number y= '
read(5,*) y
ans=x+y
write(6,*) 'x+y =',ans
end program sample

これを LabVIEW で書くと以下のようになる。 (多少細かい部分は異なるが…)
なお、LabVIEW では以下のものを「ダイアグラム」と呼んでいる。

足し算のプログラム

また、先ほどの Fortran のプログラムでは数値の入力なども コマンドラインで行うが、LabVIEW ではプログラムの制御も グラフィカルに行う。 上記のプログラムは以下のような画面で制御する。 この画面を「パネル」と呼ぶ。

足し算の制御画面

この「パネル」では数値だけではなく、リアルタイムで変化する グラフを表示する事もできる。 このような機能から、LabVIEW のプログラムは VI(Virtual Instruments:仮想計測器)とも呼ばれる。 本レポートでは、LabVIEW のプログラムのことを、 なんとなく「スクリプト」「プログラム」「VI」と呼び分けたりするが、 ほとんど皆、同じものである。

このように、文字列でプログラムを書くものと違って、 パズルを組み立てていく感じでプログラムを作成していった。 半年間 LabVIEW をさわってみて感じた良かった点、 悪かった点を挙げてみる。 (とはいえ、私は他に Fortran と Perl を少しさわったことが あるだけなのでまともな比較ではないと思うが)

[3.1.1] グラフィカルプログラミング で良かったと感じた点

[3.1.2] グラフィカルプログラミング で悪かった(または難しかった)と感じた点


[3.2] 計測制御用プログラム

もう一つの LabVIEW の特徴は計測器の制御に優れている事である。 本実験では4種類のインタフェースを通して、5種類の計測器からデータを 収集したが、ほとんど全てのものにすぐに使えるサンプルプログラムが 用意されていた。

使用する計測器に対応させて以下のようにインターフェースを用いたが、 これらのインターフェースは全て LabVIEW から制御できる。







計測器 インターフェース
風向・風速計 DAQ ボード
気圧計
温度・湿度センサー
転倒マス雨量計 カウンタ、DAQボード
超音波風速計 シリアルポート

ちなみに、インターフェースを4種類用いた、と書いたがここには3種類 しか書いていない。あと1つのインターフェースは GPIB という機器である。 GPIBは DAQボードの機能(後述)にさらにそれ自身が計測・表示する機能を 持ったインターフェースであったが、以下の 2点の理由から、 役目を DAQボードに譲り本実験では使用しないことにした。

なお、もちろん GPIB も LabVIEW から制御可能である.

GPIB ってこんなの

GPIBってこんなの

[3.3] LabVIEWで作る気象観測用プログラム

本実験では、LabVIEW で気象観測用のプログラムを作った。 (ほとんどはサンプルスクリプトに毛が生えた程度のものだが)

以下では、本実験でどのように各種の計測器用の LabVIEWのプログラムを 作成したのかを記す。 また、プログラム作成において必要となった各種計測器および 各種インターフェースに関する情報も付け加えていく。


4. DAQ ボードについて

[4.1] DAQ ボードの特徴

これから風向・風速計気圧計温度・湿度センサー転倒マス雨量計 に関しての気象観測用プログラムの作成方法を述べるが、 それら 4つの計測器とコンピュータをつなぐインターフェース 「DAQ ボード」について少し述べる.











ちなみにこれが DAQボード
電源はコンピュータからもらってます
中身にはこんな感じ(既に配線済み)
この線は計測機器とつながっている
DAQ ボード全景 DAQ ボードの中身

DAQ ボードは計測器とコンピュータとをつなぐインターフェース機器である。 DAQ ボードとコンピュータを接続するには DAQ ボード用の 専用インターフェースカードをコンピュータに取り付け、 それと DAQ ボードをコネクタでつなぐ。

コンピュータとコネクタの接続部(近すぎ) DAQ ボードとコネクタの接続部(近すぎですって)
コンピュータとコネクタの接続部 DAQ ボードとコネクタの接続部

DAQ ボードと計測機器をとの接続は銅線を用いる。 DAQ ボードにはアナログ入出力用の接続部が約 14個、 デジタル入出力用の接続部が約 8個ある。 (その他、アースや電源用の接続部とよくわからない部分の接続部を 加えると合わせて 68個の接続部がある。) なお、この接続部を「チャネル」と呼ぶ。

計測機器は DAQ ボードのチャネルのそれぞれと接続され、計測値を DAQ ボードに送る。DAQ ボードに送られてきたデータを コンピュータが LabVIEW で収集し、計測を行う。 DAQ ボードには複数のチャネルがあるため、 複数の計測機器を同時に制御可能である。

計測機器のうち、風向・風速計気圧計温度・湿度センサーはアナログ出力なのでアナログチャネルに接続し、 転倒マス雨量計はカウンタを通してデジタル出力されるため、 デジタルチャネルに接続する。

なお、以下の記述において、DAQ ボード、計測器、電源間の配線に ついてはかなり半端な表現をしている。 これは、私が配線に関しては勉強をしなかったため (その分野は他のメンバーにまかせっきりにしてしまったため) 知識が無い(つまりは書きたくても書けない)ためである。 配線や計測器の原理については他のメンバーのレポートや資料、 または計測器に付属していた説明書などを参照していただきたい。 (責任逃れとか言わないでくれるとうれしい)

以上の理由から配線に関してはあまり触れない。 プログラム作成に際しては既に計測器とDAQボードが接続済み であることを前提として話を進める。


5. 風向・風速計で計測するためのプログラム

[5.1] 風向・風速計の特徴

風向・風速計は文字通り風向及び風速を計測する 計測器である。

風向・風速計外観 (風車も本体もくるくる回る)
風向・風速計の姿

この風向・風速計は、プロペラの回転から風速を、 本体自身の回転から風向を計測する。

この風向・風速計を DAQ ボードと接続し、DAQ ボードは コンピュータと接続する。この風向・風速計の計測値を DAQ ボードから取得する LabVIEW プログラムの作成の方法を 述べる。

なお、風向・風速計用 VI を作成するに当たって必要な 風向・風速計の特徴は以下のようなものである。

電圧 0.00V 0.25V 0.50V 0.75V 1.00V
方角 北風 東風 南風 西風 北風

[5.2] DAQ ボードを制御する

本実験で使用するプログラムに求められるのは主に以下の 4点である。

  1. DAQ ボードを制御できること
  2. 継続的に計測を続ける事ができること
  3. 取得したデータを保存する事ができること
  4. 計測器から送られてくるデータを知りたい値(気温や風速など) に変換できること

DAQ ボードを制御するプログラムを作る一番の近道は サンプルプログラムを拝借してしまうことである。 LabVIEW には数多くのサンプルスクリプトやサブルーチンが 用意されている。 先ほども書いたように、LabVIEW は計測機器の制御に優れている プログラムである事から、計測機器に関してのプログラムの蓄積も多い。 DAQ ボードも例外ではなく、すぐに使えるサンプルスクリプトが 存在する。

以下、DAQ ボードを制御するためのプログラムの作成手順である。

[5.2.1] チャネルの設定

DAQ ボードを制御する際には、まず「チャネル」についての 設定を行う必要がある。 ただ、その前にどのチャネルをどの計測器用に使用するのか決めなければ ならない。 しかし、まだ個々の計測器に関する説明も足りないため、 各プログラムを作成するたびにどのチャネルをどの計測器に割り当てるのか 決めていく事にする。

今回の実験では

に割り当てた。ちなみに「ACH」とは「アナログチャネル」のことである。 それと、アナログチャネルはたいてい 2つセットで使用することを 付け加えておく。

では、チャネル設定の手順を説明する。 以下は、風速のチャネル設定(ACH0 - ACH8)の例である。

  1. LabVIEW を起動して、「DAQ ソリューション」を選択する。
LabVIEW 起動画面
  1. 「DAQ ソリューションウィザードへようこそ!!」で 「Measurement&Automationエクスプローラを使用」を 選択する。
  2. MAX(Measurement&Automationエクスプローラ)が起動したら、 左の「構成」の「データ設定」を右クリックし、 「新規作成」する。
MAX 画面
  1. 「新規作成」画面で「仮想チャネル」を選択し、「終了」を選ぶ。
  2. チャネルの新規作成ウィザードが起動するので、 各項目を以下のように設定する。
設定画面 項目 設定値
新規チャネルを作成 チャネルの種類 アナログ入力
チャネル名と説明を入力 チャネル名 ACH0 - ACH8 (作成者がわかっていれば何でも良い)
チャネルの説明 (書いても書かなくても良い)
チャネルウィザード1 センサまたは測定の種類 電圧
チャネルウィザード2 単位と範囲 変更なし
チャネルウィザード3 スケーリング 変更なし
チャネルウィザード4 DAQ ハードウェア Dev1 : PCI-6024E(使用しているDAQ ボード名)
使用するチャネル 0   (<==> ピン: (+)ACH0 (-)ACH8 )
アナログ入力モード 差動

なお、ここの設定は以後も MAXにて変更可能である。

  1. 以上で風速(ACH0 - ACH8)のチャネルの設定は終了した。 同じ要領で風向(ACH1 - ACH9)のチャネル設定も行う。
    風向が風速と違う点は以下で赤く記してある。
設定画面 項目 設定値
チャネル名と説明を入力 チャネル名 ACH1 - ACH9 (先ほどとは違うものにするのを勧める)
チャネルの説明 (書いても書かなくても良い)
チャネルウィザード4 DAQ ハードウェア Dev1 : PCI-6024E(使用しているDAQ ボード名)
使用するチャネル 1   (<==> ピン: (+)ACH1 (-)ACH9 )
アナログ入力モード 差動
  1. 以上で風速(ACH0 - ACH8)及び風向(ACH1 - ACH9)と のチャネルの設定は終了した。 MAX を終了して「DAQ ソリューションウィザードへようこそ!!」 へ戻り、「次へ >」を選択する。

[5.2.2] サンプルスクリプトを呼び出す

サンプルスクリプト集「ソリューションギャラリー」から DAQ ボード制御用のプログラムを呼び出す。

  1. 「ソリューションウィザード - ステップ 2/3」 で「ソリューションギャラリ(推奨)」を選択
  2. 「ソリューションウィザード - ステップ 3/3」で 「ギャラリカテゴリ」では「電圧・電流測定」を、 「一般的なソリューション」では「電圧測定(連続的)」 を選択する。
  3. 「ソリューションウィザード - 指定された入力/出力」で 「選択:チャネル」で先ほど作成した「ACH0 - ACH8」を選択し、 「ソリューションを開く」でプログラムを開く。 すると以下のようなプログラムが呼び出される。
電圧測定用VI

[5.2.3] サンプルプログラムを使ってみる。

このサンプルスクリプトを使って DAQ ボードから風速の値 を取得してみる。 なお、この作業は風向・風速計、DAQ ボード、電源、 コンピュータを正しく接続してから行っていることを前提にしている。

  1. 正しく接続が完了したら、プログラムの左上にある実行ボタンを押して プログラムをスタートしてみる。
スタートボタン
  1. すると、以下のように表示されるはずである。
クリックで原寸大が表示

はじめの状態のだと、グラフの電圧の表示範囲が -5 〜 100 V に なっているため上下の変動が全然見えない。 グラフのY軸の数値も2桁までしかないため、見づらい。
また、右の数値も小数点 2 桁までしか見えないため、 風速の計測には大雑把過ぎる。 (通常だと風速計から出る電圧の範囲はせいぜい 0.00V 〜 0.05V)
それと、風速計の仕様なのか、 風が無い場所でも 0.04V(0.2 m/s 相当)の 電圧が流れるようだ。

  1. グラフ、数値ともに表記が適していないため、計測に適した 形式にする。
    まず数値の表記を小数点2桁から小数点5桁にする。
    「最新の測定値」の下の測定値を右クリックし、 「形式と精度」をクリックする。 その後、「小数点下の桁数」を「5」にする。 なお、これらの操作は VI を一度ストップさせてから行うこと。
これを押してストップさせた後
ストップボタン
こうして こうすると こうなる
形式と精度   ⇒   形式と精度   ⇒   小数点以下が5桁になりました

グラフの Y軸の数値も始めは小数点以下を表示しない。 表示させたい時は、Y軸の数字を右クリックし、 「形式」を選択する。 すると、形式の設定画面が出てくるので、そこで 小数点以下の桁数を設定すると良い。

グラフの Y軸の数値で整数を2桁以上表示させたい時は、 グラフ上で右クリックし、「Y軸」→「スケールラベルを表示」 にチェックをつけるとよい。

  1. グラフで増減が見えるようにする。 そのために、グラフのY軸の範囲を狭くする。
    1. アバウトな方法
      グラフの上で右クリックし、「項目を表示」→「グラフパレット」 を選択する。
こうすると こんなものが出てくる
グラフパレット表示   ⇒   グラフパレット

そこで虫眼鏡(?)をクリックしてから右上のものを選び、 グラフ上で一部を選択すると、引き伸ばされたグラフが 表示される。

「上下に引き伸ばす」を選択   ⇒   引き伸ばし範囲を選択
  ⇒  
引き伸ばされた結果
    1. 几帳面な方法
      グラフの Y軸の数字をクリックし、数値を入力する。 一番上と、一番下の数値に自分の設定したい最大値、最小値を 入力すると、好きな範囲にできる。
最大値を設定 最小値を設定
最大値 最小値

  1. ここまでの作業で、以下のようにグラフと数値がちゃんと表示 されるようになるはずである。
設定後のグラフ

もちろん今回の設定は風速用に合わせたものなので、 他の計測機器に関しては、その出力される値に合った 設定を行う。

[5.2.4] 風速用VIを保存する。

  1. 作成した VI を保存する。「ファイル」→「保存」を選んで 保存するだけだが、 その際に以下のような表記が出るはずである。
サブルーチン保存確認のダイアグラム

これは、今回呼び出したサンプルVIがもう一つ別のサブルーチンを 含んでいるためである。 もちろん、今回の風速計用VIはこのサブルーチンが無いと動かない ため、保存する必要がある。 保存する場所は今回の風速計用VIと同じ場所で良いだろう。

  1. 以上で DAQ ボードからの風速値の電圧を 取得できるVIができた。 今度は風向用に[5.2.2]、[5.2.3]の手順をおこなって 風向用のVIも作っておく。 風速用と風向用で違うのは「使用するチャネル」と 「出力電圧の範囲」くらいなので作業はほとんど同じである。
  2. 本実験で使用する VI に必要な条件のうち、 「1. DAQ ボードを制御できること 」は満たした。 「2. 継続的に計測を続ける事ができること 」は元々の サンプルVI が条件を満たしていたためこれもクリアしている。 次に必要なのは「3. 取得したデータを保存する事ができること 」 である。

[5.3] 計測値を保存する

今度は、計測したデータを保存する方法である。 たいていコンピュータではデータの保存は「ファイルに書き出す」という 方法で行う。今回も同様の方法を使う。

今回は、いよいよ VI のプログラムの内部(「ダイアグラム」と呼ぶ) を編集する事になる。

[5.3.1] VI の内部

ダイアグラムを表示するには、「ウィンドウ」→「ダイアグラムを表示」 とする。

ダイアグラム表示

すると、以下のようなダイアグラムが表示される。

ダイアグラム全景

大きく2ブロックに分かれていると思う。 左の青丸でくくられたブロックは [5.2.4] で触れたサブルーチンを含むブロックで、 直接編集する事はない。(というか難しそうなので編集できない)
右の赤丸でくくられたブロックは 「パネル」に表示される数値やグラフと直接関係する部分で 主にこちらを編集していく事になる。

[5.3.2] ダイアグラムとパネルとの対応

上記の赤丸でくくられたブロックについて 簡単な解説を行う。

こちらパネル こちらダイアグラム
パネル ダイアグラム

同じ色の丸でくくられたものが対応したものである。 以下、簡単な説明。

なお、この対応はダイアグラムでその「端子アイコン」 を矢印ツールでダブルクリックすると 見る事ができる。

矢印ツール

[5.3.3] 計測時間間隔の設定

少しわき道にそれて、計測時間間隔を設定できるようにする。 (間隔が1000ミリ秒だと長期観測には向かない)

  1. 「ダイアグラム」の時計マークについている「1000」という 数字を右クリックし、「制御器へ」を選択する。
定数   ⇒   制御器
  1. すると、「パネル」の方にも以下のような端子アイコンが出現する。 この数値を適宜変更して、データの取得間隔が変化している ことを確認する。
パネルでの制御器   ⇒   制御器で設定

[5.3.4] 「ファイルへの書き込み」ができる サンプルVIの検索

ファイルへの書き込みを行うためには、 ここまでで使用したことの無い端子アイコンを使用する必要がある。 このような場合は「サンプルの検索」 を使って目的のサンプル VI を探すと良い。

  1. 「ヘルプ」→「サンプルの検索」を選択。
  2. キーワードに「ファイル」と入力する。
「ファイル」で検索
  1. 検索の結果出てくる「ファイル I/O のサンプル - 全体のリスト」 を選択する。
  2. 右側に出る「ASCIIファイルサンプル」を選択し、そこで出てくる 「Write to Text File」を開く

[5.3.5] 「ファイルへの書き込み」の端子アイコンのコピー

上記で開いたサンプルVIの「ファイルへの書き込み」部分は 以下の 2つである。

ファイルに書き出すダイアグラム
これが全体図で下が拡大図
ファイルを開く ファイルに書き込む
こちらが「ファイルを開く」端子アイコン こちらが開いたファイルに「書き込む」端子アイコン

ちなみに、「ヘルプ」をクリックすると、それぞれの端子アイコンに ついての情報を見る事ができる。

ファイルを開く ファイルに書き込む

この2つの端子アイコンを風速計用のVI にコピーする。 (ドラッグ & ドロップで簡単にできる)
ただし、2つ同時に移動はしないほうが良い。

「ファイルを開く」端子アイコンとその周りのものを選択
選択


風速計用 VI のここらへんにコピー (while ループを矢印ツールで広げてある)
ここらへんにコピー


「書き込み(Write File)」端子アイコンは 風速計用 VI のここらへんにコピー
ここらへんにコピー

[5.3.6] 「ファイルを開く」アイコンと「ファイルに書き込む」 アイコンを結線

風速計VIでもさきほどのサンプルVIと同じように 「ファイルを開く」端子アイコンと「ファイルに書き込む」 端子アイコンを結線する。

ここと ここを こんな感じで
「ファイルを開く」ものの結線部分 「ファイルに書き込む」の結線部分 結線結果
この「結線」には下の「糸ツール」を使用する。
糸ツール

[5.3.7] 数値データを文字列データにして 「書き込み」端子アイコンをつなぐ。

「計測値(数値)」端子アイコンと「書き込み」端子アイコンを つなぎ、開いたファイルにデータを書き込むようにする。

ただし、やってみるとわかるが直接結線してデータをとっても まともな数値をとることはできない。 なぜなら、「Write File」端子アイコンは数値データを 直接取り込む事ができないからである。

ダメな例

よって、数値データを文字列データに変換する必要がある。

この変換には「To Fractional」端子アイコンを用いる。 このアイコンは「関数」→「文字列」→「文字列/数値変換」→ 「To Fractional」として使用できる。

この端子アイコンを間に挟むと、「Write File」アイコンで ファイルに保存する事ができるようになる。

「To Fractional」アイコン こんなふうに間に挟む
「数値 → 文字列」変換アイコン 間に変換アイコンを挟んで文字列に変換した

[5.3.8] データを保存できるか確認

以上の作業で、データを保存できるようになるはずである。 プログラムを実行してファイルにデータを書き込んでみる。

すると、数値は保存できているはずである。 ただし、一つの数値ごとに改行されてはおらず、 数値同士の間に変な文字が挟まっているはずである。 これについては、あとで出力形式を整えるので気にしなくてよい。

[5.3.9] 保存ファイルの場所を指定

上記の作業までで、最低限のデータ保存はできるようになったが、 いくつか計測に役立つことを記す。

一つは、保存ファイルの位置を「パネル」から指定することである。 「関数」→「ファイル I/O」→「ファイル定数」→「パス定数」 を呼び出し、それを「制御器」に変更して 「ファイルを開く」端子アイコンの「ファイルパス」と結線する。

「パス定数」を「パス制御器にして」 「ファイルを開く」と結線する。
パス定数 パス制御器 「ファイルを開く」と結線

すると、「パネル」に下記のようなものができる。 ここに保存する位置とファイル名を指定すると、 毎回、プログラム実行時に保存するファイルの名前や位置について 聞かれずに済む。

パネル上のパス

ついでに「default name(書き出すファイル名の名前)」も制御器 にしておく。

[5.3.10] データを整形し、時間も付加する

[5.3.8] では、保存されたデータがちゃんと整列されたものに なっていなかったはずである。 ここで、復帰改行文字などを出力データと組み合わせ、 見やすいデータを出力するようにする。
また、データを取得した際に、それがいつのものかわからないと 解析や比較に不便なため、 データに時間を付加する。

  1. データと時間を結合して取得するには、 時間を取得する「Format Date/Time String」端子アイコン、 複数の要素(文字列、時間など)を結合する 「Concatenate Strings」端子アイコン、 時間とデータの間に入れる「タブ」端子アイコン、 一回に計測するデータの最後に入れる「復帰改行」端子アイコン の4 つを使用する。

ちなみに「Format Date/Time String」は「関数」→「時間」にあり、 「Concatenate Strings」、「タブ」、「復帰改行」は 「関数」→「文字列」にある。

日時を取得 複数要素を結合 タブ文字 復帰改行文字
日時を取得 複数要素を結合
(右クリックで結合できる
要素の数を増減できる)
タブ文字 復帰改行文字
  1. 上記の 4 つの端子アイコンを下記の様に 「計測値(数値)」端子アイコンと「書き込み」端子アイコン の間に挟む。
結合出力完成
  1. これで、以下のようにきれいな形になり、 なおかつ 時間もセットになったデータを 取得する事ができる。
02/02/10 06:58:01 0.018799
02/02/10 07:08:02 0.009033
02/02/10 07:18:03 0.024902
02/02/10 07:28:04 0.014893
02/02/10 07:38:05 0.023926

なお、この時間はコンピュータの内部時計に依存するので、 コンピュータの時間が正しいか確認する事。

[5.3.11] プログラムを再実行してデータを取得する場合の注意

本プログラムでは、プログラムを実行する際に、書き込むファイル が既に存在している時は以下のような確認ダイアログが 出てきて上書きしてよいか尋ねてくる。 「キャンセル」とすればデータが保存されず、 「置換」とすると以前のデータは削除される。

確認ダイアログ

前回のデータを残しておく場合には、 先にそのデータを他の保管場所へ移動しておくこと


[5.4] 風速計からの出力電圧を風速値に変換する

計測器からの出力電圧をそのまま取得する事はできるようになった。 その計測値をなんらかの他のプログラムで風速値に変換しても良いが、 LabVIEW 自体で風速値に変換する事もできる。 以下では、出力電圧値を風速値に変換する方法を記す。

[5.1] 風向風速計の特徴 にて 「風速は [出力される電圧(単位 V)] x 50 で求められる。 (風速の単位は m/s)ちなみに、有効測定限界は 1V (つまり風速 50 m/s)まで」 と書いた。 これより、計測値(単位 V)に 50 を単純に掛ければ 風速値(単位 m/s)が求まる。

[5.4.1] 計算を行う

  1. 掛け算には以下の「Multiply」端子アイコンを使用する。 このアイコンは「関数」→「数値」にある。
掛け算アイコン
  1. これを「書き込み」端子アイコンと「計測値(数値)」端子アイコンの 間に挟み、残りに「定数」端子アイコンをつける。 もちろん定数の値は「50」である。 下の例では「計測値(グラフ)」も同様の計算を行っているため グラフ表示されるものも風速値になっている。
50 を掛ける
  1. これで計測値(数値)の部分に風速値が表示され、 保存するデータも直接風速値になる。 そして、結果できた VI の「パネル」はこのようになる。
できあがり

[5.5] 風向計の場合

風向計は出力電圧範囲が 0V 〜 1V と決まっており、 ([5.1] 風向風速計の特徴 参照) そのままの値でもわかりやすかったため、 変換を行わなかった。角度などに変換したい場合は 上記の風速計を例にして行うと良い。


6. 気圧計で計測するためのプログラム

[6.1] 気圧計の特徴

気圧計は文字通り気圧を計測する 計測器である。

気圧計(正面図) 気圧計(斜め下より)
気圧計(正面) 気圧計(斜め下から)

この気圧計を DAQ ボードと接続し、DAQ ボードは コンピュータと接続する。この気圧計の計測値を DAQ ボードから取得する LabVIEW プログラムの作成の方法を 述べる。

なお、気圧計用 VI を作成するに当たって必要な 気圧計の特徴は以下のようなものである。


[6.2] DAQ ボードを制御する

行う作業は 風向・風速計での [5.2] DAQ ボードを制御する。 とほぼ同じである。

ただし、使用するチャネルは

とした。
気圧計も、出力は電圧なので MAX(Measurement&Automationエクスプローラ) にて気圧用に新規アナログチャネルを作る際は、 以下の赤く記してある部分以外は風速や風向と同じように作成する。

設定画面 項目 設定値
チャネル名と説明を入力 チャネル名 ACH2 - ACH10
チャネルの説明 (書いても書かなくても良い)
チャネルウィザード4 DAQ ハードウェア Dev1 : PCI-6024E(使用しているDAQ ボード名)
使用するチャネル 2   (<==> ピン: (+)ACH2 (-)ACH8 )
アナログ入力モード 差動

その後のサンプルスクリプトの呼び出しや設定は 風向・風速計の時と同じなのでそちらを参考してほしい。

ただし、新しくサンプルスクリプトから同じ手順を繰り返さずとも、 風速計や風向計のスクリプトをコピーし、それを編集したほうが 手っ取り早い。

[6.2.1] パネル上の設定値の保存

風速計のVIをコピーして使用する場合、 「パネル」上の「チャネル」「パス」「出力ファイル名」を変更する 必要がある。 ただし、普通に「ファイル」→「保存」とするだけでは この設定は保存されない。

この場合は「操作」→「現在のすべての設定をデフォルト設定にする」 を選択してから「ファイル」→「保存」とすると パネル上の設定値が保存される。


[6.3] 計測値を保存する

ここで行う作業は風向・風速計での [5.3] 計測値を保存する。 と全く同じなため、そちらを参照して作業を行う。 (風速計用 VI をコピーしてから編集する場合はこの作業は必要ない。)


[6.4] 気圧計からの出力電圧を気圧に変換する

ここで行う作業は風向・風速計での [5.4] 風速計からの出力電圧を風速値に変換する 場合とほとんど同じである。

異なるのは「気圧は ([出力される電圧(単位 V)] x 184)+ 600 で求められる。 (気圧の単位は hPa) 」 ことである。 よって、以前に使用した「Multiply」端子アイコンに加え、足し算用の 「Add」端子アイコンを組み合わせて使用する。

結果こんな感じになる
気圧計用計算

7. 温度・湿度センサーで計測するためのプログラム

[7.1] 温度・湿度センサーの特徴

温度・湿度センサーは文字通り温度及び湿度を計測する 計測器である。

外見はこんなで 中身にこんなのが入っている(ピンボケだし)
温度・湿度センサーってこんなの 中身はこんなの

この温度・湿度センサーを DAQ ボードと接続し、DAQ ボードは コンピュータと接続する。この温度・湿度センサーの計測値を DAQ ボードから取得する LabVIEW プログラムの作成の方法を 述べる。

なお、温度・湿度センサー用 VI を作成するに当たって必要な 温度・湿度センサーの特徴は以下のようなものである。


[7.2] DAQ ボードを制御する

行う作業は 風向・風速計での [5.2] DAQ ボードを制御する。 とほぼ同じである。

ただし、使用するチャネルは

とした。
温度・湿度センサーも、出力は電圧なので MAX(Measurement&Automationエクスプローラ) にて温度用と湿度用に新規アナログチャネルを作る際は、 以下の赤く記してある部分以外は風速や風向と同じように作成する。

設定画面 項目 設定値
チャネル名と説明を入力 チャネル名 ACH3 - ACH11 (温度用)
ACH4 - ACH12 (湿度用)
チャネルの説明 (書いても書かなくても良い)
チャネルウィザード4 DAQ ハードウェア Dev1 : PCI-6024E(使用しているDAQ ボード名)
使用するチャネル 3   (<==> ピン: (+)ACH3 (-)ACH11 )
4   (<==> ピン: (+)ACH4 (-)ACH12 )
アナログ入力モード 差動

その後のサンプルスクリプトの呼び出しや設定は 風向・風速計の時と同じなのでそちらを参考してほしい。

ただし、新しくサンプルスクリプトから同じ手順を繰り返さずとも、 風速計や風向計のスクリプトをコピーし、それを編集したほうが 手っ取り早い。


[7.3] 計測値を保存する

ここで行う作業は風向・風速計での [5.3] 計測値を保存する。 と全く同じなため、そちらを参照して作業を行う。 (風速計用 VI をコピーしてから編集する場合はこの作業は必要ない。)


[7.4] 温度・湿度センサーからの出力電圧を気温・湿度に変換する

ここで行う作業は風向・風速計での [5.4] 風速計からの出力電圧を風速値に変換する 場合とほとんど同じである。

異なるのは「気温は ([出力される電圧(単位 V)] x 100)- 40 で求められる。 (気温の単位は ℃) 」であり、 「湿度は [出力される電圧(単位 V)] x 100 で求められる。 (ここの「湿度」とは相対湿度のことで単位は %) 」 であることである。 いままでの作業を応用するだけなので説明は割愛する。

温度はこんな感じになる
気温用計算


湿度はこんな感じになる
湿度用計算

8. 転倒マス雨量計で計測するためのプログラム

[8.1] 転倒マス雨量計の特徴

転倒マス雨量計は降雨量を計測する 計測器である。

外見はこんなで 雨でこのマスが左右に倒れて信号を送る
漏斗状になってます このマスが左右に倒れるたびに信号を送る

簡単にこの転倒マス雨量計の説明をする。

雨がこの雨量計上に降ると、その雨は雨量計上部の漏斗部分で一点に 集められ、その下にあるマスに流れ落ちる。 マスは、その中に 0.1mm の雨量がたまった時点で倒れ、 次はもう一方のマスに雨が流れ落ちるようになる。 このマスが倒れる時に雨量計から信号が送られるようになっている。 (具体的には「信号が送られる」とは「電圧がかかる」ということ)

雨量計の場合は、雨量計とDAQボードを直接つなぐのではなく、 その間に「カウンタ」を挟む。 「カウンタ」とは雨量計から信号が送られてくる回数を蓄積しておく 装置である。 DAQ ボードはその「カウンタ」に蓄積されている「信号の回数」 を読み取り、その回数をコンピュータに送ることで 雨量を計測する。

なお、本実験で使用した「カウンタ」は学生達で作成したものである。 (教官のアイディアの元、基盤に抵抗やコンデンサなどをはんだづけした) この仕組みも詳しく解説できれば良かったのだが私の理解が足りないため ここでは省略する。詳しくは他のメンバーの資料を参照してほしい。



これがお手製カウンタ ランプで「信号が送られてきた回数」がわかるようになってる
カウンタ外観 ランプがついてるのわかります?

以下では、このカウンタに蓄えられている「信号の回数」を DAQ ボードから取得する LabVIEW プログラムの作成の方法を 述べる。

なお、転倒マス雨量計用 VI を作成するに当たって必要な 転倒マス雨量計、及びカウンタの特徴は以下のようなものである。


[8.2] DAQ ボードを制御する

今度はデジタル入力を制御するが、VI に必要な条件は [5.2] DAQ ボードを制御する。 で挙げた4つと変わらない。
また、サンプルプログラムを拝借してしまうことが 近道なのも変わらない。

[8.2.1] ポートの設定

今回はデジタル入力なため、デジタル入出力のできる 「DIO(デジタルI/O[入出力])」を使用する。 なお、デジタルのチャネルを「ライン」とも呼び、 ラインを束ねたもの(ここでは DIO0 〜 DIO7)を「ポート」と呼ぶ。 (「チャネル」とはこの「ライン」も「ポート」も含めた名称)

カウンタにたくわえられる「信号の回数」は 7bit (128回)までなので、 1bit につき一つの DIO が必要になる。 よって、DIO0 〜 DIO6 までを使用することになる。

  1. MAX(Measurement&Automationエクスプローラ)を起動し、 新規チャネル作成ウィザードを開く。(以前の手順と同じ)
  2. 項目を以下のように入力する。
設定画面 項目 設定値
新規チャネルを作成 チャネルの種類 デジタル I/O
チャネル名と説明を入力 チャネル名 DIO (作成者がわかっていれば何でも良い)
チャネルの説明 (書いても書かなくても良い)
チャネルウィザード1 デジタルタイプ ポートから読み取る
チャネルウィザード2 DAQ ハードウェア Dev1 : PCI-6024E(使用しているDAQ ボード名)
使用するポート DIO
チャネルウィザード3 反転するライン 「7」にだけチェックを入れる。
理由:DIO7 には何も接続しないため、 常にONになってしまう。これをOFFにしておくため。

[8.2.2] サンプルスクリプトを呼び出す

サンプルスクリプト集「カスタムDAQアプリケーション」から DAQ ボード制御用(デジタル入出力用)のプログラムを呼び出す。

  1. 「ソリューションウィザード - ステップ 2/3」 で「カスタムDAQアプリケーション」を選択
  2. 「ソリューションウィザード - ステップ 3/3」で 「デジタル入力」を選択する。
  3. 「デジタル入力構成」の「Step 2」で「シングルデジタルポート」 を選択。
  4. すると、「ソリューション」の欄にいくつかの サンプルプログラムが表示される。
  5. その中の「Read from 1 Dig Port(652x)」を開く。 すると以下のプログラムが表示される。
デジタル I/O 用VI

[8.2.3] サンプルプログラムを使ってみる。

このサンプルスクリプトを使って カウンタから回数 を取得してみる。

  1. プログラムを実行する。
  2. すると、カウンタのランプと同じように「パネル」上の ランプも光るはずである。 また、回数も「パネル」右下の「パターン」に表示されている。
「パネル」でこうなっていて カウンタもこうなっている
パネル上 カウンタ

[8.3] 累積雨量の計測

今回のプログラムでは、計測のたびにカウンタの蓄積回数を リセットしない。 よって、計測する回数(つまりは雨量)は 計測開始からの累積回数(雨量)となる。 単位時間の雨量を求めたい場合は、 そのために工夫をする必要があるが、 今回の実験では行わなかった。

他に、カウンタの特徴の部分にも書いたが、このカウンタは 7bit (128)までしか回数を蓄積できない。 その回数を超えた場合、再びカウントは 0 に戻る。 つまり、12.8 mm 以上の降雨があった場合は、 測定値は 0.0 mm に戻ってしまう。 それをふまえて以下の VI を使う事

「パネル」に表示された回数をファイルに書き出す。 基本的には風向・風速計用VIの時の [5.3] 計測値を保存する。 と同じである。

[8.3.1] 保存すべき値

「パネル」の「パターン」を矢印ツールでダブルクリックすればわかるが、 今回保存すべき数値は以下の「pattern」である。

信号の回数

[8.3.2] 計測時間間隔の設定

このサンプルスクリプトは計測時間間隔が始め 0.1 秒に設定されている。 風向・風速計 VI のところの [5.3.3] 計測時間間隔の設定と 同様に「パネル」から設定できるようにする。

[8.3.3] ファイルへの書き込み

ファイルへの書き込みを行うためには 風向・風速計用 VI の [5.3.4] 〜 [5.3.10] と同様に作業を行う。

雨量計完成図
このような感じとなる。 (上記のVIでは回数に「0.1」を掛けて、 雨量に変換している。)

9. 超音波風速計で計測するためのプログラム

[9.1] 超音波風速計の特徴

超音波風速計は超音波で以下の 5 つについて計測を行う 計測器である。

  1. 風速
  2. 風向
  3. 上昇(下降)流
  4. 音速
  5. 気温

これが超音波風速計 この6 点から超音波が出ている(はず)
超音波風速計 ここから超音波が射出

この超音波風速計は他の計測器と異なり、DAQ ボードを介さない。 コンピュータについているシリアルポートに直接つないで 計測値を取得する。

以下では、超音波風速計からシリアルポートを介して 計測値を取得する LabVIEW プログラムの作成の方法を 述べる。

なお、超音波風速計用 VI を作成するに当たって必要な 超音波風速計の特徴は以下のようなものである。


[9.2] シリアルポートからのデータを読み取る

今回はシリアルポートから直接データが送られてくるため、 [5.2] DAQ ボードを制御する。 とは異なって以下の条件が求められる。

  1. シリアルポートからのデータを読み取る事ができること
  2. 継続的にデータを取得できること
  3. 取得したデータを保存する事ができること

しかし、サンプルプログラムを拝借してしまうことが 近道なのは相変わらずである。

[9.2.1] サンプルスクリプトを呼び出す

サンプルスクリプトを呼び出す。 ただし、今回は「DAQ ソリューション」は使用しない。 今回は「サンプルの検索」でサンプルスクリプトを呼び出す。

  1. 「ヘルプ」→「サンプルの検索」を選択して検索を行う。
  1. 「キーワード」に「シリアル」と入力
「シリアル」と検索
  1. 「シリアル」の文字にちなんだトピックがいくつか出てくるので その中の「シリアル通信のサンプル」を選択する。
  2. 右側に3つのサンプルスクリプトが出てくる。 その中の「LabVIEW <-> Serial」を呼び出す。
シリアル通信用サンプルVI

[9.2.2] サンプルプログラムを使ってみる。

とりあえず、プログラムをスタートさせてみる。 すると、以下のように変な文字列が読み取られるはずである。

読み取れない文字列

これは、以下の「ボーレート」と「読み取りバイト」の値が 超音波風速計に対応していないからである。

ボーレート 読み取りバイト

「ボーレート」を「38400」に、 「読み取りバイト」を「35」にすると 以下のように正常に計測値を読み取る事ができる。

文字が読み取り可能になった
※ただし、十数回に一回ぐらいの割合でデータが ずれて読み取られてしまう。(原因不明)

数値が5つ取得できるが、左から

  1. 風速 (m/s)
  2. 風向 (0°〜360°)
  3. 上昇(下降)流
  4. 音速 (m/s)
  5. 気温 (℃)

である。

この変更を保存するには「操作」→ 「現在のすべての設定をデフォルト設定にする」とした後、 VI を保存すると良い。


[9.3] 計測値を保存する

「パネル」に表示された「シリアル読み取り」をファイルに書き出す。 基本的には風向・風速計用VIの時の [5.3] 計測値を保存する。 と同じだが、 このサンプルプログラムは一度実行すると一度データを読み込んで 終了してしまうため、連続で実行できるようにする必要もある。 (「連続実行」というボタンもあるが、ファイルに書き込むようにすると 毎回の実行時にファイルの上書き確認をされてしまう。 試してみるとよいかもしれない)

[9.3.1] 保存すべき値

「パネル」の「シリアル読み取り」を矢印ツールで ダブルクリックすればわかるが、 今回保存すべき数値は以下の「Serial Read」である。

ダイアグラム全体
シリアル読み取り

[9.3.2] while ループ で連続実行させる

このサンプル VI は他の計測器用のVI と違って一度実行すると 一回計測して終了してしまうため、 while ループでこのプログラム全体をくくって連続実行できる ようにする。 (ちなみに他のVIは始めから while ループ がかかっている)

  1. 「関数」の「ストラクチャ」の中の「while ループ」を選択し、 プログラム全体を囲む。
while ループ
全体を囲む
一番外の枠が While ループ
  1. 「Whileループ」には条件が必要となる。 ここには以前に作成した風速計用の VI での条件をそのまま コピーしてくる。
条件 パネルには「停止スイッチ」が出現
これを使う 「パネル」には「停止スイッチ」が出現
  1. 「関数」の「時間 & ダイアグラム」の 「Wait Untile Next ms multiple」を ループの中に入れ、 それと「制御器」を結線して計測時間間隔を 設定できるようにする。
メトロノームアイコン 制御器と結線
メトロノーム型アイコン 制御器と結線して While ループの時間間隔を制御

[9.3.3] ファイルへの書き込み

ファイルへの書き込みを行うためには 風向・風速計用 VI の [5.3.4] 〜 [5.3.10] と同様に作業を行う。

ただし、今回はシークエンス(分岐構文)があるため、 結線に気をつける。

具体的には、下図のように結線した場合、もう一つの分岐の方に 結線されていないのでプログラムが動かない。

分岐の一方を結線 もう片方は結線していない
中が白の四角は結線が ちゃんと行われていないことを示している
分岐の一方を結線 もう一方もちゃんと結線する
ちゃんと中に色がついていたら ちゃんと結線できている事を示している
完成図

完成図

以上で5種類の計測器に使用する VI が完成した。


10. 気象観測実施

観測機器や LabVIEW の準備を終えて、実際の気象観測を 始めたのは 2002/01/23 からであった。 ここでは、実際に行った気象観測について述べる。

[10.1] 観測機器の設置

既に冬も半ばに入り、遠距離に観測機器を運ぶのも難儀だったため、 観測機器は、観測部屋の窓から見える場所に設置した。 外部に設置した計測器は

  1. 風向・風速計
  2. 温度・湿度センサー
  3. 超音波風速計
  4. 転倒マス雨量計

の4つで、気圧計は室内でも屋外でもよかったため、屋内に設置した。

観測機器 温度・湿度センサーは何故か遠くに
観測機器 温度・湿度センサーだけ仲間はずれにしてみたり

[10.2] VI で観測データを取得

観測部屋では、いままでに作成した VI を利用して外部の観測機器 からのデータを収集した。

現在計測中
計測中の画面
左上:風速計、中上:気温計、右上:気圧計、
左中:風向計、中中:湿度計、右中:雨量計、
下:超音波風速計



[10.3] データを収集した期間

データを取得できた期間は以下のとおり (2002/02/10 現在)

データの取得間隔は 10分(600秒)である。


11. matlabで観測データをグラフ化

ここまでの作業で期間のほとんどを使ってしまい、 本格的に Matlab を勉強することはできなかった。 ただ、せっかく手に入れたデータをせめてグラフ化くらいはしたいと思い、 Matlab でデータのグラフ化を行った。

[11.1] Matlab によるデータのグラフ化

データをMatlabでグラフ化する方法について非常に簡単に述べる。 以下、最低限「グラフ化」のみする方法である。

「C:\data\2002_02_04\temperature.dat」 (2002/01/30 13:10 〜 2002/02/04 14:00 の気温のデータ) をグラフ化しようとする。

Matlab はコマンドラインで操作するソフトである。 コマンドは以下のように表記する。なお、 行頭の「>>」は入力する必要は無い。

>> コマンド
  1. Matlab を起動する。なお、既にインストールや設定は終わっている こととする。
  2. コマンド入力できるようになったら、 データを読み込む。
  3. >> load C:\data\2002_02_04\temperature.dat
  4. temperature.dat は以下のような形式のデータとなっている。
  5. 02/01/30 13:10:17	-1.425781
    02/01/30 13:20:17	-1.181641
    02/01/30 13:30:17	-1.669922
    02/01/30 13:40:17	-1.425781
    02/01/30 13:50:17	-1.425781
    02/01/30 14:00:17	-1.669922
  6. 上記のデータ形式から、3つめの要素(気温)を取り出して グラフにしたい。この場合は以下のコマンドを入力する。
  7. >> plot(temperature(:,3))
    ちなみに書式は
    >> plot(拡張子を除いたファイル名(:,取り込みたいデータの列))
  8. 以上が最低限のMatlabでのグラフ化の方法である。 グラフ化したものが以下である。
気温のグラフ
x軸が「何番目のデータであるか」を示し、 y軸は気温を示す。

12. 気象計測実験を終えて

以上が、私がこの気象実験にて行ったことである。 本レポートでは、LabVIEW の使い方に重点を置いた。 他に、計測器の設置や GPIB に 関しても数週間を費やしたが、本レポートでは触れなかった。

結果的には、目標の全てに関して実施できたわけではないので 尻切れトンボな感が無くもないが、 「観測器を用いて気象観測の準備を行い、観測を行う」ことは できたので良しとしたい。 また、気象観測機器を直接触る事ができ、 多少なりともその原理や特徴を知る機会はおそらくこの実験を 履修しなければ得られなかったことと思う。

最後に、半年間御教授頂いた教官やTAのみなさま、 また、一緒に助け合いながら(?)実験を行ったみなさま、 その他、お世話になった方々に 心より御礼申し上げます。


13. 気象観測(物理実験3)実験関係者