7.Post Processプログラム

 Post Processプログラムでは,データの収集後に「簡単ファイル転送.vi」でCenter Stationに集められたデータをもとに,以下のような2次処理を行ないます。
  1. 指定された複数のセンサデータについて,全時間履歴をフロントパネルの「全体波形グラフ」に表示します。「全体波形グラフ」表示器は,もとのフロントパネル上に重なって表示されるので,必要な時だけ現れるようになっています。
  2. カーソルで指定された時間領域のデータをフロントパネルの「カーソル範囲の拡大グラフ」に拡大表示する。
  3. カーソルで指定された時間領域のデータの平均値を表示する。
  4. 指定された2信号のリサージュをフロントパネルの「XYグラフ」に表示する。
  5. 指定された2信号をもとに伝達関数の計算をおこなう。
  6. 結果をテキストもしくは,Excelに出力する。
 Post Process File.viが最上位のPost ProcessプログラムVIで,Center Stationのハードディスクにおさめられています。
以下の説明で,フロントパネルアイコンフロントパネルアイコンの図がついている箇所は,各VIのフロントパネル/ダイアグラム説明にリンクします。

7.1 Post Process File.viで使われているサブvi他の説明

7.1.1 サブVIs

(1)Input Convert Coefficient.vi フロントパネルとダイアグラムの説明
(2)Strip binary header.vi フロントパネルとダイアグラムの説明
(3)Convert to EU for Each.vi フロントパネルとダイアグラムの説明
(4)Convert to EU.vi フロントパネルとダイアグラムの説明
(5)GS表示SUB.vi
(6)Excelグラフ.vi
--------------------

7.1.2 LabVIEWライブラリ

vi.lib\Utility\file.llb中にあるもの vi.lib\Analysis\baseanly.llb中にあるもの vi.lib\Measure\maspectr.llb中にあるもの vi.lib\Utility\error.llb中にあるもの

目次に戻る


7.2 Post Process File.viフロントパネルとダイアグラムの説明内容説明

7.2.1 動作概要

 Post Process File.viでは,Input Convert Coefficient.viで,電圧値から物理単位への変換テーブルを読み取った後,以下の4つのストラクチャ処理を行ないます。

  1. 2次処理を行うセンサデータが記録されたファイルを指定し,そのファイルからデータ収集パラメータ情報を取り出すWhile Loopストラクチャ
  2. 記録された時暦の表示開始時間と表示終了時間を指定するWhile Loopストラクチャ
  3. 指定されたファイルからデータをメモリに読み出すFor Loopストラクチャ
  4. メモリに読み出されたデータに対して,指定された2次処理を順番に行うシーケンスストラクチャ
--------------------

7.2.1.1 ファイル指定とパラメータ取り出しのWhile Loop処理

このWhile Loop処理では,
  1. 処理を行なうセンサデータが記録されたバイナリファイルを,ダイアログで指定します。
  2. ファイルを開き,ファイルサイズを知ります。
  3. 指定されたバイナリファイル名に書かれているDevice番号(3, 4, 5)を抜き出します。これは,後ですべてのデータのスキャンレートをそろえて間引くために使われます。
  4. ファイルの先頭に書かれたバイナリヘッダ文字列を読み出します。
  5. バイナリヘッダ文字列からStrip binary header.viで,データ収集パラメータ情報を取り出します。
  6. Device番号とファイルに記録されたセンサ数情報から,データの1Scanあたりのバイト数を求めます。
  7. 以上の処理を必要なファイルすべてについて繰り返します。
このLoop処理で得られたパラメータ情報から,
  1. 複数ファイルの記録レートの最大値,最小値をフロントパネルに表示します。
  2. スキャンレートを統一するための,各ファイルごとの間引き比率を求めます。
  3. 時間履歴の最大表示可能時間をフロントパネルに表示します。
--------------------

7.2.1.2 表示時間指定のWhile Loop処理

  1. 設定完了ボタンのプロパティで,「時間設定完了」のブールテキストをボタンに表示し,ブリンクさせます。
    「時間設定完了」ボタンが押されるまで以下の処理を行ないます。
  2. 表示開始時間と,表示終了時間を指定します。
  3. 時間から,読み出し開始スキャン位置Starting Scanと,読み出し終了スキャン位置Finishing Scanを求めます。
--------------------

7.2.1.3 データ読み出しFor Loop処理

指定された数のファイルについて,指定時間分か,EOF,エラー,停止ボタンが押されるまでBinary dataを読み,バイナリスケーリング前の値に変換します。

Device3, 4のファイルに記録されているアナログデータについては,
  1. データを1000スキャン行ごとに読み取り,[Scan行, センサ列]の16bit整数2次元配列にします。
  2. 信号極性,倍率,オフセット情報から,バイナリフォーマットスケーリング前の単精度実数2次元配列に戻します。
  3. すべての読み取りを連結して,各ファイルごとの読み出しセンサデータ配列を作成します。
Device5のファイルに記録されているデジタルデータについては,1Scan=32bit=4byteなので,
  1. デジタルデータはファイルが小さいので,全データを一括して読み取る。
  2. 4byte整数で読み取り,各1bitを1Wordに拡張して,[Scan行, DI列]のWord2次元配列にします。
  3. さらにWordを単精度実数に変換して,アナログデータと同じ配列形式にします。

  4. すべてのファイルの2次元データをまとめて3次元配列にします。この時,
     ・ 各2次元配列データの列数であるセンサ数はファイル(Station/Device)ごとに異なる。
     ・ スキャンレートが異なる。
    の違いを無視して,強制的に3次元化することにより,
     ・ センサ数の少ないファイルでは,存在しないセンサが無効センサデータ(0値)として配列化されます。
     ・ スキャンレートの低いファイルでは,存在しないスキャンが無効スキャン(0値行)として配列化されます。
    このため,後に,無効部分を除く処理が必要になります。これに関しては,Post Process File.viの最新版では3次元配列を用いずに,2次元配列をクラスタ化して,その配列を用いるようにして,この無効データが発生しないように改造していますが,ここでは述べません。
  5. データの読み取りが完了すると,ファイルを閉じます。

目次に戻る

----------------------------------------

7.2.2 2次処理シーケンス

以下の5つのシーケンスで指定された処理を行ないます。

  1. シーケンス0では,読込んだファイル名とそれに含まれるセンサ名を表示し,2次処理するセンサを選択できるようにします。
  2. シーケンス1では,指定された複数のセンサについて,元のScan Rateのまま間引きせずに,指定された時間領域の波形表示を行ないます。
  3. シーケンス2では,Scan Rateをもっとも低いものにあわせて補正し,全体波形データとグラフをExcelファイルに書き込みます。
  4. シーケンス3−0では,カーソルで時間指定された区間の拡大表示と,その区間の平均計算,X-Y表示を行ないます。
    シーケンス3−1では,区間平均値と全データをTextに書き出します。
  5. シーケンス4では,時間指定された区間選択波形をExcelに書き込み,その区間のデータに関して,パワースペクトラムと伝達関数を表示します。

--------------------

7.2.2.1 センサ選択(シーケンス0)

  1. 「全体波形グラフ」表示器のプロパティノードのVisibleをFalseにして,グラフ表示器を隠します。
  2. フロントパネルのリング制御器に,読み込んだファイル名を表示して,ファイルを選択できるようにします。
  3. 選択するセンサを表示するための,フロントパネルのリストポックス制御器をクリアします。
  4. 読み込まれた各ファイルごとに,処理するセンサ群をSelected Ch配列に指定するために,Selected Ch配列のクラスタをつくり,読み込んだファイル数だけクラスタ要素を持つ1次元配列にします。
  5. 設定完了ボタンのプロパティで,「センサ選択完了」のブールテキストをボタンに表示し,ブリンクさせます。
    「センサ選択完了」ボタンが押されるまで以下の処理を行ないます。
  6. データ収集パラメータ情報を用いて,選択されたファイル中の全センサ名をリストポックス制御器に表示します。
  7. リストポックス制御器で処理指定されたセンサ番号をSelected Ch配列に書き込みます。
  8. 必要に応じて,ファイル選択を変更し,処理するセンサを指定します。
--------------------

7.2.2.2 タイムチャート表示(シーケンス1)

選択されたセンサ群の時暦データを,スキャンレートが異なったまま重ねて表示します。そのため,表示器にはXYグラフを用いています。
  1. 3次元配列データの各ファイルIndex(i)について,以下の項目10までの繰り返し処理を行ないます。
  2. 各ファイルIndex(i)ごとに,処理することを指定されたセンサの数を示す配列を生成します。
  3. 各ファイルIndex(i)のデータの間引き比率の配列を生成します。
  4. 各ファイルIndex(i)のデータのスキャン数の配列を生成します。
  5. 各ファイルIndex(i)で指定された全センサの時暦データを取り出し,一括して物理量に変換し,すべてのIndex(i)で配列化します。これは指定されたセンサのみの時暦データ3次元配列です。
  以上の2, 3, 4, 5の配列データは,全センサデータを最も低いスキャンレートに補正するために,次のシーケンス2で使われます。
  1. このファイルIndex(i)のデータ群のスキャンレートとスキャン数から,時間軸データを生成します。これがこのデータ群(i)のX軸データとなります。
  2. そのファイルIndex(i)中で指定された全センサIndex(j)について,以下の項目10までの処理を繰り返し行ないます。
  3. センサ(j)の時暦データを取り出し,物理量に変換します。これがセンサ(j)のY軸データとなります。
  4. データ収集パラメータ情報を用いて,指定されたセンサ(j)の名称を取り出し,グラフの凡例に設定します。
  5. センサ(j)のX軸/Y軸データをまとめてクラスタにして,それをさらにすべてのセンサIndex(j)について配列化します。

  6. 以上の処理により,スキャンレートの異なる各センサデータが,X軸/Y軸データとしてクラスタ化され,全センサデータがクラスタの1次元配列として構成されます。この配列データを用いて全体波形グラフ (XYグラフ表示器)を表示します。
--------------------

7.2.2.3 スキャンレート補正とExcel書き込み(シーケンス2)

3次元配列データのスキャンレートを一致させ,Excelファイルにデータ値とグラフを書き出します。
  1. 3次元配列データの各ファイルIndex(i)について,以下の項目3までの繰り返し処理を行ないます。
  2. スキャンレートの高いデータについて間引き処理を行うことにより,スキャンレートを最低値にあわせます。この際,本来のスキャン数まで処理することにより,無効スキャンデータを除去します。
  3. 本来のセンサ数までの部分配列を取り出すことにより,無効センサを除去します。
  この補正後のセンサデータを次のシーケンス3で用います。
  1. 最低スキャンレートとスキャン数から,時間軸データを生成します。これが以後の処理での統一的なX軸データとなります。
  2. センサデータに時間軸データを追加します。
 この時間軸のついたデータは,次のシーケンス3でも用います。
  1. 後述するExcelグラフ.viを用いて,「描画マクロ」付きのExcelファイル「描画マクロ.xls」を開き,時間軸をつけたデータをExcelシートに書き出し,グラフも描きます。
--------------------

7.2.2.4 カーソル指定区間処理(シーケンス3)

シーケンス3−0では,カーソルで指定された時間領域の拡大表示と,その区間の平均計算を行います。また,1番目と2番目のセンサについて,X-Yリサージュ表示を行います。
  1. 設定完了ボタンのプロパティで,「カーソル範囲指定完了」のブールテキストをボタンに表示し,ブリンクさせます。
    「カーソル範囲指定完了」ボタンが押されるまで,項目5までの処理を行ないます。
  2. 全体波形グラフ上で位置操作された2本のX軸カーソルから,センサ時暦データの先頭Indexと長さを求めます。
  3. その区間のセンサ時暦データを切り出します。このデータは,次のシーケンス4でも使われます。
  4. 1番目と2番目のセンサについて,その区間でのリサージュをXYグラフに表示します。
  5. 各センサデータのその区間平均値を求めます。
シーケンス3−1では,
  1. 区間平均値と全データをTextファイルに書き出します。
--------------------

7.2.2.5 周波数領域処理(シーケンス4)

シーケンス4では,カーソルで指定された区間のデータを用いてパワースペクトラムと伝達関数を表示します。
  1. 区間センサ時暦データを用いてパワースペクトラムを表示します。
  2. 区間センサ時暦データにX軸時間データを追加します。
  3. 後述するGS表示SUB.viを動的に呼び出し,伝達関数を表示します。

目次に戻る


7.3 GS表示SUB.viフロントパネルとダイアグラムの説明内容説明

7.3.1 動作概要

 GS表示SUB.viでは,指定された時間領域のセンサ時暦データにおいて,指定された励起信号と応答信号のデータを用いて伝達関数を描画します。
S/N改善のため,励起信号中の複数のピーク値が自動的に検出され,閾値以上のピーク値のデータのみを用いて伝達関数が求められます。
 励起信号選択/応答信号選択リストポックス制御器に,データ配列にあるセンサ名称を表示してから,以下の6つのシーケンスで処理を行います。

7.3.1.1 信号選択処理(シーケンス0)

  1. 指定完了ボタンのプロパティで,「信号選択完了」のブールテキストをボタンに表示し,ブリンクさせます。
  2. 励起信号選択/応答信号選択リストポックス制御器で,励起信号と応答信号が指定され,「信号選択完了」ボタンが押されるのを待ちます。
  3. センサデータ配列から,指定された励起信号データと応答信号データを抜き出し,まとめて配列にします。
--------------------

7.3.1.2 励起信号ピーク検出処理と励起スペクトル表示(シーケンス1)

  1. サンプル周期Tsと励起信号データから,直流成分をカットした励起信号の波形データを生成します。これは以降のピーク検出過程で,ピーク検出閾値を最大ピークの-15dBの値になるように自動設定しているのですが,DC成分があった場合にそれが最大ピーク値と誤認識されないようにするためにDC除去してからピーク検出を行うためです。
  2. DC除去した励起信号波形データからパワースペクトルを求めます。
  3. スペクトル振幅の最大値の-15dB値を閾値として,ピーク検出を行います。
  4. スペクトルデータのdf,ピーク位置のIndexから,ピーク位置を表示するためのクラスタデータを作成します。

  5. サンプル周期Tsと励起信号データから,励起信号の波形データを生成します。これはシーケンス3でも使われます。
  6. 励起信号波形データからパワースペクトル値を求めます。
  7. スペクトルデータのf0, df, 個数から,周波数軸のデータを生成します。
  8. スペクトル表示するためのクラスタデータを作成します。

  9. 励起信号スペクトルを表示するXYグラフ表示器の,最低/最大周波数設定を行います。最大周波数はナイキスト周波数に設定します。
  10. 一旦,X軸(周波数軸)カーソルを隠します。
  11. Y軸カーソルを自動閾値の位置に表示します。
  12. スペクトルグラフとピーク位置マーカーを重ねて励起信号スペクトル (XYグラフ)を表示します。
--------------------

7.3.1.3 ピーク閾値設定処理(シーケンス2)

 ピーク閾値は上述のように自動的に設定されるのですが,自分でピーク閾値を指定できるようにする処理です。
  1. 指定完了ボタンのプロパティで,「ピーク閾値指定完了」のブールテキストをボタンに表示し,ブリンクさせます。
  2. 励起信号スペクトルグラフのY軸カーソルとして表示されているピーク閾値を,カーソルを上下に移動させてピーク閾値指定を変更すると,それに応じたピーク検出が行われて,励起信号スペクトルグラフのピーク位置マーカー表示が更新されます。
  3. 「ピーク閾値指定完了」ボタンが押されるのを待ちます。
--------------------

7.3.1.4 伝達関数表示処理(シーケンス3)

  1. サンプル周期Tsと応答信号データから,応答信号の波形データを生成します。
  2. 励起信号波形データと応答信号の波形データから,振幅/位相の周波数特性データを求めます。
  3. 全データを用いた伝達関数をグラフ表示します。

  4. 励起信号のピーク周波数位置に対応する応答信号の振幅/位相データから,ピーク位置のみの周波数特性データを生成します。
  5. ピーク位置のみのデータを用いた伝達関数をグラフ表示します。

  6. 励起信号スペクトルのグラフに,X軸(周波数)カーソルを表示して動かせるようにします。カーソル位置はわかりやすいようにグラフの最高周波数であるナイキスト周波数の1/2としています。
--------------------

7.3.1.5 カーソル操作と値表示処理(シーケンス4)

  1. 指定完了ボタンのプロパティで,「カーソル操作完了」のブールテキストをボタンに表示し,ブリンクさせます。
  2. 励起信号スペクトルグラフの最低/最大周波数に,伝達関数グラフの最低/最大周波数を一致させます。
  3. 励起信号スペクトルグラフのX軸(周波数)カーソル位置に,伝達関数のX軸(周波数)カーソルを一致させます。
  4. X軸(周波数)カーソル位置でのスペクトル振幅値,伝達関数のGain値,位相の値を表示します。
  5. 「カーソル操作完了」ボタンが押されるのを待ちます。
--------------------

7.3.1.6 Excel出力処理(シーケンス5)

  1. 後述するExcelグラフ.viを用いて,「伝達関数描画マクロ」付きのExcelファイル「伝達関数描画マクロ.xls」を開き,周波数特性のデータをExcelシートに書き出し,Bode線図のグラフも描きます。

7.4 Excelグラフ.viフロントパネルとダイアグラムの説明 内容説明

7.4.1 サブVIs

(1)Set Cell Text.vi フロントパネルとダイアグラムの説明
(2)Set Cell Value2.vi フロントパネルとダイアグラムの説明

7.4.2 動作概要

 Excelグラフ.viでは,指定されたBook名称/マクロ名称を含む既存のファイルを開き,時間軸付きのセンサデータをスプレッドシートに書き出し,Invoke Nodeを用いてマクロを起動し,センサデータのグラフを描画します。

指定されているExcelファイルは,「描画マクロ.xls」です。この中の「描画マクロ」は,

目次に戻る


LabVIEW TOPに戻る