winformat

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

名称

winformat - 多チャネル地震波形データ用フォーマット  

概要

win フォーマットは、多チャネル地震波形データのためのフォーマットです。 通常の win フォーマットの他に、特殊な非可逆圧縮形式の win フォーマット である「MON 形式」もありますが、これについて は raw_mon(1W) を参照してください。 ここでは通常の win フォーマット(MON 形式と区別するため に「RAW 形式」と呼ばれることもあります)について説明します。 win フォーマットは、

(1)1秒ごとの時刻ラベル付き可変長の秒ブロック、
(2)1チャネルごとのヘッダー情報付きチャネルブロック、
(3)サンプリングレートとサンプルサイズが動的に可変、

といった仕様により、次のような特徴をもっています。


(1)チャネル・時間での分割・統合が容易、
(2)異なるサンプリングレートやサンプルサイズが混在できる、
(3)チャネル数は実際上ほぼ無制限、
(4)容量圧縮の効果がある。
 

基本フォーマット

win フォーマットでは、1バイトを超える長さの整数値は、すべてビッグ エンディアン(上位バイトが先、または上位バイトが若いアドレスを占める) です。負の数は2の補数で表現されます。フォーマットを構成する 最小単位は、4バイトのチャネル・ヘッダーのついた、 次のような1チャネルの 1秒分のデータブロックです(以下で、'B' は単位「バイト」を表します)。


チャネルヘッダー1チャネル・1秒分データ
4B可変長

チャネルブロック(可変長)

1つのチャネルブロックのサイズは、チャネルヘッダーを読むことにより、 知ることができます。チャネルヘッダーは次の形式です。


チャネル番号サンプルサンプリング
サイズ情報レート(Hz)
2B0.5 B1.5 B

チャネルヘッダー(4 B)

4バイトのチャネルヘッダーのうち、前の2バイトはチャネル の固有番号です。16進数4桁で 0000〜FFFF になります。

後ろの2バイトのうち、上位の4ビットは 後続する1秒分のデータのサンプルサイズの情報を示します。 とりうる値は 0〜5 です。5 は WIN_pkg-3 で初めて導入されました。0 は 0.5 バイト(4ビット)長を表し、1〜3 については、それぞれ 1〜3 バイト長を表 します。4 と 5 については4 バイト長を表わし、4 は0〜3と同じく差分値、5 は値そのものが入っている事を示します。
サンプルサイズ情報サンプルサイズ(B)差分値

00.5Yes
11Yes
22Yes
33Yes
44Yes
54No

下位12ビットはサンプリングレート(Hz)で、とりうる値は 1〜4095です。このチャネルヘッダーに後続するデータブロックには、 そのチャネルの1秒分のデータが入っています。このうち 先頭のサンプルだけは、常に4バイト長で、第2サンプル以降は、 前のサンプルとの差分値([当サンプル値]−[前サンプル値])が、 いずれもチャネルヘッダーに記されたサンプルサイズ情報に従ったサンプルサ イズで、(サンプリングレート−1)個、入っています。 ただし、サンプルサイズ情 報が 5 の時は、すべてのサンプルで差分を取らず、値そのものが入ります。こ れは差分を取ったときに値が 4 バイト整数値で表す事が出来る範囲を越 える場合がある事、4バイトの場合差分を取っても圧縮効果が無い上に差分を 取るという演算が入る事に対応して導入されました。今後はサンプルサイズ情 報として、4 の時は代わりに 5 を使う事が推奨されます。


先頭の最初の最後の
サンプル差分...差分
4 B(*B)(*B)

データブロック(可変長)

 (サンプルサイズ(*B) はチャネルヘッダーに指定)

サンプリングレートが 1Hz のときは、データブロックは4バイトの 先頭サンプルだけで、差分データはありません。サンプルサイズ は 0.5〜4 バイト、つまり 4, 8, 16, 24 または 32 ビット長で、 いずれの場合も2の補数表示です。なお、サンプルサイズが 0.5 バイトの とき、サンプリングレートが偶数だと、データブロックの最後の1バイトの 下位4ビットに未使用の空きができます。

サンプルサイズとしては、このチャネルの1秒分の差分データを表現 できるだけの、できるだけ小さいサイズがとられます。たとえば、1秒分の 差分データが -8〜7 の範囲に入っていれば、サンプルサイズは 0.5バイト になります。同様に -128〜127 なら1バイト、-32768〜32767 なら 2バイト、というふうになります。差分をとるのは、直流オフセット のためにサンプルサイズが大きくなることを避けるためです。 サンプルサイズは 毎秒のチャネルヘッダーに書いてあるので、動的に変わります。これにより データは内容に応じて圧縮されることになります。 適正にゲイン設定されていると、平常時のサンプルサイズは 0.5〜1 バイト になるのが普通です。 同一チャネルのサンプリングレートが動的に変動することは可能 ですが、あまり一般的ではありません。アナログテープ記録 からAD変換したデータの場合などは、サンプリングレートの変動を そのまま記述することができます。ただし、win フォーマットを読む プログラムの方で、同一チャネルのサンプリングレートは一定である ことを仮定しているかもしれません。

win フォーマットの「秒ブロック」は、時刻を記述した秒ヘッダーの 後ろに、上述のようなチャネルブロックを1個以上並べたものです。


秒ヘッダー第1チャネル最終チャネル
年月日時分秒ブロック...ブロック
BCD 各 1B(1秒分)(1秒分)
6 B可変長可変長

秒ブロック(可変長)

この秒ブロックが、win フォーマットの基本フォーマットです。 win フォーマットは伝送・保存のためのさまざまな媒体上で 取り扱うことができますが、媒体によりいくらかフォーマットが 異なります。以降では、(1)ディスク/テープ上、 (2)IPのUDPパケット上、(3)共有メモリ上、(4)専用線上、 のそれぞれでの win フォーマットについて説明します。  

(1)ディスク/テープ上の win フォーマット

UNIX のディスクファイルでは、各秒ブロックの前に4バイトの 「ブロックサイズ」を付け加えたものを、秒数分だけ羅列して 1ファイルとします。


ブロック秒ブロックブロック秒ブロック
サイズ...サイズ
4B可変長4B可変長

1ファイル(可変長)

ここで「ブロックサイズ」が表すのは、バイト単位で、後続する 秒ブロックの大きさに4(「ブロックサイズ」の占める大きさ)を 加えたものです。win フォーマットのファイルの大きさ(秒数)に 制限はありません。ただし、オンライン連続データのバッファリング をする場合は、1分ごとにファイルを分割して います(wdisk(1W)、pmon(1W)、events(1W)、wtape(1W) など)。

win フォーマットのファイルを編集するプログラムとして、

wadd(1W)-ファイルの合成
wed(1W)-チャネルと時間での編集
wck(1W)-ファイルの検査

があります。ファイルの連結は、cat(1) でできます。

EXABYTE や DAT のようなテープ媒体上に連続記録するプログラムとして、 書き込み用の wtape(1W) と読み出し用の rtape(1W) があります。 これらの扱うフォーマットは基本的にディスクファイルと同じで、 10分ごと(X9分59秒とX0分00秒の間)に1つの テープマークが挿入されます。なお、テープでは 可変長の1秒分を1レコードとして読み書きしますので、テープ装置は 「可変レコード長」を扱えるものであることが必要です。  

(2)IPのUDPパケット上での win フォーマット

インターネットプロトコル上で win フォーマットのデータを 連続伝送するための、UDP パケットを利用したプログラムが 用意してあります。これらが取り扱うデータのネットワーク上の フォーマットは次のとおりです。


パケット  パケット  識別  秒  秒    秒  
番号  番号  コード  ブロック  ブロック  ...  ブロック  ブロック
  (再送用)  '0xA0'  のサイズ      のサイズ  
1B  1B  1B  2B  可変長    2B  可変長

1パケット (可変長)

「秒ブロックのサイズ」にはそれ自身の2バイトも含みます。 1パケットのサイズは、最大1472バイト(IPパケットのサイズにして 1500バイト)です。伝送効率のために、 通常パケットサイズはこの範囲でなるべく大きくなるように、 データを詰め込んで生成されます。 プロトコルについては、 recvt(1W) を参照してください。 このほか、1パケットに1秒分だけを収容する次のような 旧型のフォーマットもあります。


パケットパケット
番号番号ブロック
(再送用)
1B1B可変長

1パケット (可変長)

このフォーマットは、古いプログラムとの互換性を保つための もので、前述の新しいフォーマットとは、3バイト目の値で判別 することができます。 recvt(1W) は両方のフォーマットを受け入れることが できます。  

(3)共有メモリ上での win フォーマット

SYSTEM Vの共有メモリ上で win フォーマットの連続データを バッファリングする際のフォーマットは、「書き込み時刻」を 含む形式


ブロック書き込み
サイズ時刻ブロック
4B4B可変長

1ブロック (可変長)

と、含まない形式


ブロック
サイズブロック
4B可変長

1ブロック (可変長)

があります。「ブロックサイズ」には、それ自身の4バイトも 含みます。共有メモリセグメント中では、このようなデータブロック が羅列されています。詳しくは、 それぞれ recvt(1W) および order(1W) を参照してください。  

(4)専用線上での win フォーマット

地震研究所の関東甲信越観測網では、1995年より、大部分の観測点からの 波形データをパケット方式で伝送しています。この 方式では、観測点のテレメータ装置で時刻スタンプを付けられた データが win フォーマット化 され、HDLCフレームに入れられて専用線を伝送されます。センターで 受信されたパケットは、そのままイーサネットに UDP 形式で ワークステーションへ転送されます。 HDLCフレーム中のフォーマットは次のとおりです。


FLAG  観測点  パケット  パケット  秒  観測点  FCS  FLAG
  ID  番号  番号  ブロック  ステータス    
      (再送用)        
1B  1B  1B  1B  可変長  1B  2B  1B

1パケット(フレーム) (可変長)

秒ブロックには、1〜3チャネルのデータが含まれます。1フレームは 通常 1024 バイトを超えない大きさです。  

低速サンプリング・データの扱い

1秒またはそれ以上のサンプリング間隔をもつデータでは、 通常の win フォーマットでは1秒分が1ブロックとなるので、 1ブロックには1サンプルしか入りません。ところが、それの 占めるサイズは、チャネルヘッダー4バイトと1サンプル分の 4バイトの計8バイトになり、容量効率が非常に悪くなります。 そこで、1秒サンプリングのデータに関しては、 1分間分の60サンプルを(形式的な)1秒ブロックに収容し、 フォーマット上では、あたかもサンプリングレート60Hzのデータのように 扱う場合があります。こうすると容量効率は良くなり、win(1W) で 波形を見るにも便利です。  

win フォーマットを扱うソフトウェア部品

各媒体上や媒体間で波形データを取り扱うプログラム部品として、 下表のようなものがあります。これらに イベント検出・収録用等のいくつかのソフトウェアを組み合わせれば、 観測点からセンターまでのデータ伝送・センター間のデータ交換・ データ収録 ・処理システム全体を容易に構成することができます。既存テレメータ系に 組み込む場合も、テレメータ系→IPへの変換部分でシステムごとの仕様の 違いを吸収すれば、あとはすべて同じ共通ソフトウェアが利用できます。

媒体機能プログラム機種

ADC→IP変換adtPC98
テレメータ系→IP変換epo2en他*PC98
専用線→IP中継hdlcPC98
専用線→専用線中継hdlcPC98

IP→IP中継relayWS
IP→メモリ受信recvtWS
メモリ→メモリ時間順ソートorderWS
メモリ→メモリチャネル選択raw_rawWS
メモリ→IP送信send_raw他WS
メモリ→ディスク保存wdiskWS
ディスク→8mm保存wtapeWS
8mm→ディスク再生rtapeWS
ディスク→画面検測winWS


* テレメータ系のフォーマットと出力インターフェースに合わせます。 epo2en は一例です。
 

他フォーマットと win フォーマットとの相互変換


(1)win フォーマットの生成
固定長の1チャネル・1秒分のデータから、 win フォーマットの チャネルブロックを作るサブプログラムとして、mk_windata(1W) と いうC言語の関数があります。 WIN_pkg-3 より前では winform(1W) でしたが、サンプルサイズ情報に 5 が追 加された事に伴ない、今後は mk_windata(1W) を使うようにして下さい。

(2)win フォーマットファイルからの変換
コマンドレベルで win フォーマットファイルからデータを切り出す 方法としては、
  ・プログラム dewin(1W) で単一チャネルを切り出す、
  ・プログラム win(1W) で画面表示部分を切り出す。
の方法があります。

(3)FORTRAN の読み書きサブルーチン
FORTRAN のサブルーチンとして、次のようなものがあります。
  open_win_format(iunit,file)
      winフォーマットファイルのオープン
  close_win_format(iunit)
   winフォーマットファイルのクローズ
  write_win(iunit,idx,idate,nch,nchan_tbl,nsamplea,ibuf,i_end)
      winフォーマットファイルの書き込み(1秒分)
  read_win(iunit,idx,idate,nch,nchan_tbl,nsamplea,ibuf,i_end)
      winフォーマットファイルの読み込み(1秒分)
  read_win_start_time(iunit,idx,idate,i_end)
      winフォーマットファイル中の時刻の読み出し(1秒分)
これらについては、 fortran(1W) を参照してください。
 

関連事項

wdisk(1W), pmon(1W), events(1W), wtape(1W), raw_mon(1W), wadd(1W), wed(1W), wck(1W), rtape(1W), recvt(1W), raw_raw(1W), recvt(1W), order(1W), mk_windata(1W), winform(1W), dewin(1W), win(1W), fortran(1W)


 

Index

名称
概要
基本フォーマット
(1)ディスク/テープ上の win フォーマット
(2)IPのUDPパケット上での win フォーマット
(3)共有メモリ上での win フォーマット
(4)専用線上での win フォーマット
低速サンプリング・データの扱い
win フォーマットを扱うソフトウェア部品
他フォーマットと win フォーマットとの相互変換
関連事項