order1

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

名称

order1, order1d - win 形式データ(秒未満パケット)の1秒パケットへの結合と時間順整列  

形式

order1 [-Dgw] inkey outkey shmsize [ limit [ logfile ]]

order1d [-gw] inkey outkey shmsize [ limit [ logfile ]]

 

解説

order1 は、キー  inkey の共有メモリ・セグメントに書き込まれているWIN形式の1秒パケットと 秒未満パケット(1パケットが1/N秒、ただし1≦N≦10)を読み込み、 そのうち秒未満パケットについては1秒パケットに結合し、元々の1秒パケットと併せて 時間順に整列させて、キー  outkey で与えられる共有メモリ・セグメントに書き込みます。キー  outkey をもつ共有メモリ・セグメントが存在しない場合は、大きさ  shmsize  (KB) の共有メモリ・セグメントが作られます。すでに存在している場合は、 そのサイズが  shmsize  (KB) よりも小さいとエラーになります。 共有メモリ・キーは32ビットの整数値です。

order1 は、実時間からちょうど  limit 秒遅れた時刻に出力します。 1秒パケットに結合出力される秒未満パケットはそれまでに到着したものであり、 それより遅れた秒未満パケットは読み捨てられます (遅れたものをそのまま通過させても以降の処理ができないため)。 元々の1秒パケットについては遅れて到着したものも捨てられずに出力されます (order(1W) による救済が可能であるため)。  limit としては最大10秒までが指定でき、指定しない場合のデフォルト値は5秒です。

order1d は daemon モードで起動します。order1 でオプション -D を指定した時と同じ動作です。

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

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

共有メモリ上の形式

共有メモリ inkey 上の形式は、時間順整列の有無・書き込み時刻の有無・ ブロック末尾のブロック長の有無、 のいずれも問いません。 共有メモリ outkey の形式は、書き込み時刻付き(オプション-w を指定した場合を除く)・ ブロック末尾のブロック長付きです。 共有メモリ上の形式については order(1W), recvt(1W) を 参照してください。  

秒未満パケットの形式

秒未満パケットは、通常のWIN形式(winformat(1W) 参照)が長さ1秒の 秒ブロック単位であるのに対して、長さ1/N秒のサブ秒ブロック単位である形式です。 ここでNはサンプリングレート(Hz)の約数となる2,4,5,10のいずれかであるのが普通です。 ただしorder1 はNが1~10の任意の整数で動作します。 通常のWIN形式の秒ブロックは正秒から始まる1秒間分のデータを持ちますが、 秒未満形式のサブ秒ブロックは正秒または正1/N秒単位で始まる1/N秒分を持ち、 サブ秒ヘッダーのタイムスタンプはその開始時刻を示します。

サブ秒ヘッダーのタイムスタンプ中の「秒」を示す1バイトでは、 通常のBCD値では0であるはずの最上位ビットを1にすることにより これが秒未満パケットであることを示し、自動判別を可能にします。 このときタイムスタンプは6バイトではなく7バイトとなり、 7バイト目が「サブ秒(ss)」つまり秒以下の時刻を示します。 ssの上位4ビットは1秒がN分割されていることをN-1の値で示し、 下位4ビットはそのうちの何番目のブロックであるかを0~N-1の値で示します。 たとえばN=2の場合ssの値は0x10 と0x11を、 N=4の場合は0x30, 0x31, 0x32, 0x33 を、それぞれ順に繰り返します。

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

サブ秒ブロック(可変長)


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

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


チャネル番号サンプルブロック中の
サイズ情報サンプル数(=SR/N)
2B0.5 B1.5 B

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

秒未満パケットの結合動作について

上記の通りorder1 は、実時間から  limit 秒遅れた時刻までに届いた、同じ秒に属する秒未満パケットを結合して 1秒パケットとして出力します。その際、欠落した空白部分 (つまり欠落した秒未満パケット)については、その秒内にあって その部分の直前の有効な秒未満パケットの最後のサンプルの値または その部分の直後の有効な秒未満パケットの最初のサンプルの値の いずれかの一定値で埋めます(前値ホールドまたは後値ホールド)。 これは値0で埋めるとそれが前後の有効な値とかけ離れたオフセットとなる 場合があることを避けるためです。

ただし、秒未満パケットの伝送が専ら raw2mq(1W) と mq2raw(1W) によって行われていて send_raw(1W), recvt(1W), relay(1W) によるUDP伝送によらない場合は、 パケットの欠落や着順逆転はほとんど起こらないものと思われます。 2026年4月現在、send_raw(1W) と recvt(1W) は秒未満パケットに対応していません。  

オプション

-D
daemon モードで起動します。
-g
デバッグ情報を出力します。
-w
時間順ソートされた「書き込み時刻無し」の形式で出力します。このとき、 元々の1秒パケットと秒結合された秒未満パケットの両方が、すべて時間順ソートされた 1秒パケットの形式で出力され、  limit に遅れたパケットは廃棄されます。これは order(1W) の出力形式と同じであり、 wdisk(1W) の入力とすることができます。このオプションを指定しない場合は、 通常、order1の後ろに order(1W) を通してから wdisk(1W) に入力することが 必要です。
 

ソース

order1.c
 

関連事項

winformat(1W), order(1W), recvt(1W), raw2mq(1W), mq2raw(1W)


 

Index

名称
形式
解説
共有メモリ上の形式
秒未満パケットの形式
秒未満パケットの結合動作について
オプション
ソース
関連事項

This document was created by man2html, using the manual pages.
Time: 17:52:46 GMT, June 12, 2026