raw_snd

Section: WIN SYSTEM (1W)
Updated: 2019.9.5
Index Return to Main Contents
 

名称

raw_snd - RAW 形式の3チャネル加速度波形データから震度値を毎秒出力  

形式

raw_snd [ -ahnop ] inkey chbase outkey shmsize chout [ chfile [ logfile ]]

 

解説

raw_snd は、キー  inkey の共有メモリ・セグメントに巡回的に書き込まれている、  chbase チャネルから始まる3チャネルのwin 形式加速度波形データを読み込み、 気象庁震度に準じた震度値を計算して、毎秒、チャネル番号  chout 、サンプリングレート1HzのWIN形式データとしてキー  outkey で与えられる共有メモリ・セグメントに書き出します。

チャネルファイル  chfile が与えられた場合、その中から入力データの感度情報 (1LSBあたりのgalまたはm/s/s値)を得ます。 もしその方法で感度情報が得られない場合、raw_snd は入力データの3成分合成 オフセット値を重力値(980galまたは9.8m/s/s)とみなして、データから 感度情報を生成します。ただしこの場合はセンサーの固有オフセット分が 感度の誤差となることに注意が必要です。

キー  outkey をもつ共有メモリ・セグメントが存在しない場合は、大きさ  shmsize  (KB) の共有メモリ・セグメントが作られます。すでに存在している場合は、 そのサイズが  shmsize  (KB) よりも小さいとエラーになります。 共有メモリ・キーは32ビットの整数値です。

ログファイル名  logfile を指定すると、ここに動作ログがとられ、指定しないとログ情報は標準出力に 送られます。ログファイルは書き込みのたび毎にオープン/クローズされます。

チャネルファイルの形式については win(1W) を参照してください。 感度情報は

[8]センサーの感度(V/入力振幅単位、入力振幅単位は[9]で示す)
[9][8]における入力振幅単位、"m/s/s"または"gal"
[12]センサー出力からA/D変換までの電圧増幅率(dB)
[13]A/D変換の1量子化ステップ幅(V)

の4項目から算出されます。したがってチャネルファイルは、少なくとも 行頭から13項目めまでが埋まっている必要があります。3チャネルのうち一部の チャネルについての感度情報 しか得られない場合、他のチャネルについては得られたのと同じ値が代用されます。

入力データの共有メモリ inkey 上の形式は、時間順整列されたもの(order(1W)参照)でも されていないもの(recvt(1W)参照)でもかまいません。 出力側共有メモリ outkey の形式は inkey と同じになります。

raw_snd は、引数なしで起動すると簡単な使用法を表示します。  

出力される震度値の形式

震度値は、震度-3.0~7.9の範囲で0.1毎に対応する整数 0~109 に符号化されます。 したがって、出力データの整数から30を引いて0.1をかけたものが震度値で、 0.1刻みです。 震度値は気象庁の方法に従って、過去(=最新の)60秒分のデータから求められます。  

オプション

-a
震度値とともにPGA(peak ground acceleration, mgal単位)が出力されます。 PGA値は1秒間の3成分合成波形の絶対値のうちの最大の値です。その場合も 出力データは1チャネルのみで、4バイト整数のうち最下位8ビットに震度値 (0-109)が、上位24ビットにPGA値が、いずれも符号なし整数で入ります。
-h
入力波形からDCオフセットを除いた波形を、同じチャネル番号で 出力共有メモリへ出力します。震度の計算、PGA値の計算のいずれも、 このDCオフセットを除いた波形を利用して行われています。
-n
起動直後から震度値出力を行います。このオプションを付けないと raw_snd は起動後60秒分のデータがたまるまで震度値を出力をしません。 これは気象庁の方法に合わせるためです。
-o
震度計算のために、気象庁が指定する周波数特性補正を行った後の波形を、 同じチャネル番号で出力共有メモリへ出力します。この波形は、入力波形から DCオフセットを除いた波形に、FIRフィルタをかけることによって得ています。
-p
震度値を出力せず、かわりにPGA(peak ground acceleration, mgal単位)を 出力します。PGA値は1秒間の3成分合成波形の絶対値のうちの最大値です。 サンプリングレート1Hzの出力データとして、PGA値が4バイト整数で入ります。
 

使用例

キー11の共有メモリにチャネル番号 0300, 0301, 0302 の3チャネルの加速度波形 が書き込まれているとき、震度値データをキー12の共有メモリ(サイズ100KB)に チャネル番号 0400 として出力します。入力データのチャネル表ファイルは ch.tbl にあるとします。

raw_snd 11 0300 12 100 0400 ch.tbl

このときウィンドウ環境があれば、簡単なwishスクリプト show_snd

fileevent stdin readable { set d [lrange [gets stdin] 0 5]
set i [format "%.1f" [expr ([lrange [gets stdin] 2 2]-30)*0.1]] }
label .w1 -bg black -fg red -font {Arial 16} -textvar d
label .w2 -bg black -fg red -font {Arial 200} -textvar i
pack .w1 .w2 -fill both

を使って、

shmdump -qt 12 | wish show_snd

のようにして震度表示ができます。  

注意

raw_snd は現在のところサンプリングレート100Hz の入力波形データのみに 対応しており、サンプリングレートが約100Hzでないデータは読み捨てます。

raw_sndでは入力データに対して、気象庁が指定する周波数特性の補正を、 300次の最小位相特性FIRフィルタにより時間領域で施して震度を算出しています。 その際、入力される加速度波形データはDCから数十Hzまで平坦な周波数特性を 持っていると仮定しているので、もしそうでないセンサー特性の場合は 別途補正が必要かもしれません。  

ソース

`raw_snd.c'
 

関連事項

winformat(1W), win(1W)


 

Index

名称
形式
解説
出力される震度値の形式
オプション
使用例
注意
ソース
関連事項