JST2000 で時計合わせ

JST2000 とは,シーデックス株式会社 の製品で, 40KHz 長波による 日本標準時 の時刻情報をシリアルポート経由で得られる. シーデックス株式会社 では 日本標準時「電波修正時計装置」と称している. 佐賀県から発信されている 60KHz 長波用も発売されている.カタログ性能では,電波状態が良好なときの総合精度が +/- 30msec 以内となかなかすぐれもの.

ただ,受信感度はちょっと弱いか.東京にある建物の一階の北側の窓際は届く. ノイズ対策も考えたほうがよいかも. 本体だけで動かしているときには,問題なく電波が受信できているのに,シリアルケーブルで計算機と接続すると受信できなくなったことがある. アンテナの場所は同じなのに,ノートパソコンに接続すると受信できないが,デスクトップマシンのシリアルに接続したら受信できたこともある.

といっても,電波の受信部分は,表示やシリアルポートのある本体とツイストペアケーブルで接続されていて, 最大 500m 離してもよいそうなので,電波状態の良いところを探して受信部を置けばよい. 防雨型もあるそうなので,雷に十分注意して屋外に設置すれば感度の問題は解決できるだろう.

JST2000 はシリアルポート経由で問い合わせをすると,JST で日付時刻などを返してくれる. 問い合わせコマンドやその返事の仕様は製品を買うと付いてくる. 返ってくる時刻の最小単位は100ミリ秒だ. シリアルポート経由のデータのやりとりの時間は問い合わせ側で計測できるから補正が可能だし, 時刻の最小単位以下の情報も工夫すれば得られる.内部精度は十分なので使い方次第だ.

GPS 受信機には,毎正秒のパルス (PPS) を出力してくれる機種もある. この場合は,かなりの精度で時刻合わせが可能だ.例えば 古野電気TS-820 は精度 1マイクロ秒の PPS を出力する. この TS820 は,国立天文台の 報告 によれば,セシウム原子時計と 30ナノ秒程度の時刻差で使えるようだ.これはすごい.

TS820は GPS の時刻情報を利用している.JST2000 は日本標準時ということで, 計算機の時刻合わせを外国に依存しないでできるのもよいかも.

JST2000 に戻ろう.JST2000 に一回問い合わせると 100ミリ秒単位の時刻が得られる. しかし,問い合わせの回数に制限はない. ここで,90ミリ秒間隔で何回か問い合わせたとしよう.毎回,時刻情報が返ってくる. その100ミリ秒の桁に注目する. 90ミリ秒間隔で問い合わせた結果の100ミリ秒の桁の数字が直前の問い合わせと同じだったら, JST2000 の100ミリ秒の桁の数字が変化する間に,2回の問い合わせをしたことになる. つまり,1回目の問い合わせは正秒から最大10ミリ秒の遅れで送ったし, 2回目の問い合わせは,次の正秒の前10ミリ秒以内にあったわけだ. これで,精度を10ミリ秒に追い込めるはずだ. (もちろん, 問い合わせから返事を得るまでの往復時間の補正はする.これ以上細かくしても JST2000 には過剰精度だ)

この仕組みに基づいた プログラムFreeBSD 上で書いてみた. だいたいうまく動いている.FreeBSD 4.8-RELEASE と FreeBSD 5.1-RELEASE で使用中. GPS を基準にした時刻情報との比較もプログラムのページに記載.

時刻合わせといえば NTP だが, JST2000 用の ntpd (ntp-4.0.99k23) のドライバ プログラム も書いて試してみた. 安定して時刻が得られるが, ntpd は問い合わせタイミングの補正まではしていないようだ. 起動時のずれがいつまでも残っている.

自作プログラムでローカルクロックを合わせ,それを NTP で広報する組合せはかなりよい. JST2000 を計算機を複数台用意して peer で組み合わせると,精度があがるかな.

原文は2001年11月頃
加筆修正 [2003.5.19]
プログラム 修正 for FreeBSD 5.1-RELEASE [2003.6.29]
NTP のドライバは Takao Abe氏 の書かれたものが 4.1.1b (2002年10月) に取り込まれました. FreeBSD 5.1-RELEASE はこのバージョンになっています [2003.7.8]


ホーム
webmaster