@ひろP

    - Welcome to Hiroshi's Home Page -
    趣味を中心とした個人のホームページです


@ひろP / ホビー / プロフィール / ブックマーク / 掲示板 / アルバム / サイトマップ / memo

▼ ▼ ▼

Linux関連 / OpenBlockSS関連 / 電波時計関連 / GPS関連 / USB関連 / プログラミング

▼ ▼ ▼

電波時計キット / 電波時計用NTP4.1.0 / NTPサーバとの時差をグラフ化

電波時計用NTP4.1.0サーバ…

はじめに

NTP4.1.0に、有限会社トライステートさんの電波時計キット(TS-JJY01)用ドライバを作成し、組み込みました

CRON等で定期的に電波時計キットから時刻を取得し、パソコンの時刻を校正するソフトは多数あるのですが、ntpdにドライバを組み込むことにより、ntpd自身が電波時計キットから時刻を取得し、パソコンの校正と、時刻サーバとしての機能を果たすようになります。

このパッチによる障害等に対して、一切責任を負いません。

インストール

RedHat 7.2用のバイナリパッケージを用意しました。

# rpm -U ntp-4.1.0-4tsjjy.i386.rpm

これ以外に、libcapがインストールされていなければいけません。

設定

電波時計キットは、Type 40としてコーディングしてあります。

アドレスの4番目には、デバイス(/dev/jjy?)のポート番号を指定します。

例えば、電波時計キットが /dev/ttyS0 に接続してある場合、一旦、/dev/jjy0にシンボリックリンクを張り、アドレスの4番目に0を入れる形になります。

# ln -sf /dev/ttyS0 /dev/jjy0

# ln -sf /dev/ttyS1 /dev/jjy1

なお、/dev/ttyS1を/dev/jjy0に割り当てても構いません。その場合、0を指定すると/dev/ttyS1を使用するようになります。つまり、ドライバから見たときに、/dev/jjy?を使用するだけです。

ntp.conf の記述例(先頭の方に、以下の2行を追加します)

server 127.127.40.0 # TS-JJY01

fudge 127.127.40.0 time1 0.0710

time1には、実際の時刻とのずれを秒単位で入力します。

公開されているntpサーバとのoffsetを計測した結果、私の環境では0.07前後にすることで、大体±30m秒位まで近い値が、コンスタントに出るようになりました。( >>時差グラフ )

ntp.confの設定が終了したら、ntpdを起動します。

# /etc/rc.d/init.d/ntpd start

ntpqを実行したときに、以下のように表示されます。

# /usr/sbin/ntpq -p

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*TSJJY01(0)      .JJY.            0 l   26   64  377    0.000    1.838   7.488
    

電波時計キットのプロトコル

本ドライバでは、以下の3コマンドを使用しています。

STUS: 取得できる時刻情報が正しいか否かの判断のため

STIM: 時刻情報の取得と、秒合わせのため

DATE: 日付情報取得のため

ドライバの内部処理

1. ntpd内のポーリング処理(tsjjy_poll())で、STUSコマンドを送信します。

2. データ受信処理(tsjjy_receive())で、STUSコマンドのリターン値を取得し、続けてSTIMコマンドを送信します。

3. データ受信処理(tsjjy_receive())で、STIMコマンドのリターン値を取得し、続けてDATEコマンドを送信します。

4. データ受信処理(tsjjy_receive())で、DATEコマンドのリターン値を取得します。

5. 日付情報を受け取った時点で、1月1日から何日目か計算し、2〜4にかかった時間を足した値を設定します。

詳しくはrefclock_tsjjy.cを参照してください。

ソース及びパッケージ

ntp-4.1.0.tar.gz に対するパッチのみ: ntp-4.1.0-tsjjy.patch.gz (4,450bytes) [2002/01/12]

バイナリパッケージ: ntp-4.1.0-4tsjjy.i386.rpm (1,101,667bytes) [2002/01/12]

ソースパッケージ: ntp-4.1.0-4tsjjy.src.rpm (2,014,049bytes) [2002/01/12]

 

Reference Clock Driver - Type 40: TriState TS-JJY01 receiver

Synopsis

Address: 127.127.40.u
Reference ID: JJY
Driver ID: TSJJY01
Serial Port: /dev/jjyu; 9600 baud, 8-bits, no parity

Description

Format STIM (8 ASCII printing characters):

hh:mm:ss<cr><lf>
hh:mm:ss = hours, minutes, seconds

Format DATE (14 ASCII printing characters):

yyyy/mm/dd www<cr><lf>
yyyy/mm/dd = year, month, day

Format STUS (8 or 10 ASCII printing characters):

<adjusted|unadjusted><cr><lf>

Fudge Factors

time1 time

Specifies the time offset calibration factor, in seconds and fraction, with default 0.0.

 

(2001/12/07)

電波時計キット / 電波時計用NTP4.1.0 / NTPサーバとの時差をグラフ化

▲ ▲ ▲

Linux関連 / OpenBlockSS関連 / 電波時計関連 / GPS関連 / USB関連 / プログラミング

▲ ▲ ▲

@ひろP / ホビー / プロフィール / ブックマーク / 掲示板 / アルバム / サイトマップ / memo

@ひろP

(c) Copyright 1998-2002 Hiroshi OHNO All right reserved.
E-MAIL: hirop0730@hotmail.com / hiroshi@bigfield.com