| 「謎のGPSユニット」で時刻同期 |
(2001.08.15更新)
(2001.06.16作成)
画像ファイルが結構あり、ISDN環境では表示するのに時間がかかります。ご了承ください。
2001.06月中旬、Right Stuffさんで「謎のGPSユニット」がジャンクコーナーでインターフェース作成用部品及びアンテナ付きで13,800円で放出されていました。私は、ユニットのみゲットしてみました。
なんでもNMEA+1PPS(Pulse per Second)出力とのこと。1PPSを活用して時刻同期ができそうです。
このページは、そのユニットの利用記です。ただし、このページを見た頃には、既にGPSユニットは入手できないかもしれません。あしからず。
また、ページ内に書いてあることは、素人がやっていることなので無保証ですので、自己責任で判断してください。
<ユニット概要>
(拡大写真あり)
(1)ユニット本体
ユニット表面に張ってあるシールには「FURUNO」の文字が。。。ひょっとしてGN or GTシリーズか?
最近の小型のものに比べると大きいですが、実はその分よかったりします。
(2)アンテナコネクタ接続用HRS H.FL<--->BNCメス(基板取り付け用)ケーブル
(3)HRS H.FL<--->GT5ケーブル
ジュピター旧型の保守部品としてSPAさんから入手可能です。これは、自分で用意したもの。
(4)2mmピッチコネクタ付きケーブル(コンタクト用)
pinから出ている信号の情報は、ライトスタッフさんで解析された資料が添付されていました。
アンテナへの電源が別系統となっており、いろいろなアンテナが接続できて便利です。Garminのハンドヘルド機だと、GPSユニット本体がアンテナへの電流を制御している?ようで接続できるアンテナを選ぶのですが、アンテナへの電源が別系統となっていると結構なんでもOKという感じです。
FURUNO製のGPSユニットは、GNシリーズにしろ、GTシリーズにしろ結構高価です。現在、SPAさんでも最新機種がいくつか販売されていますので、値段表をみると分かるでしょう。
したがって、今回の価格は、アンテナ及びインターフェース作成用電子部品込みですし、ジャンクといえどもかなりお買い得ではないかと思います。
http://www.eecis.udel.edu/~mills/ntp/clock1.htmなどをみると、昔からFURUNOのGPSユニットはTimeServerに使われていることが分かります。
FURUNOの最新GPSユニットGN-79はDTMセンテンスもサポートしているとか(SPAさんのメールニュースによる)
2mmピッチのコネクタ、ハウジング等は、秋葉原(西川電子部品ネジ部、山長通商)で探した範囲では、日圧PHシリーズしかありませんでした。このユニットで使われているものは見あたりませんでした。残念。。。PHシリーズだと、コネクタの底面の出っ張りを削らないとだめですね。
付属のケーブルを半分に切って、先バラとなった片方に2.54mmピッチのコネクタをつけたりするのがいいと思われます。
アンテナ接続部(RFコネクター)はHRSのH.FL(ジュピターの旧タイプと同じようです)になっていますが、正確には基板のパターンを追って調べる必要があるのですが、別途自分で同軸ケーブルを半田付けできるパターンも用意されているようです。
<GPS ユニット関連情報の所在源>
FURUNO製ということで、入出力データについては、同じFURUNO製のGPSコアを使っているとの話があるGM38のマニュアルが役に立つかもしれません。FURUNOのGPSユニットを各種販売しているSPAさん及びSPA提供のGM38のマニュアル(web版)のページを参照させてもらってください。
私が実験した範囲では、GM38のコマンドの主要なものは受け付けてくれました。
ただし、コマンド体系が機種によって微妙に異なっている可能性があり、全てのコマンドがそのまま適用ができるかは不明ですので注意が必要です。
NiftyServe FGPS mes2にアップされているGM38モニターレポート(1999年秋頃)も参考になるかも。
私の作成したGM38のページも適宜参考にしていただければ幸いです。
FURUNO製のGPSユニットに関する情報:http://www.furuno.co.jp/gps/product1.htmただし、最新機種のみ。
ジャンクで売られていたFURUNO GN-72 GPSユニット(TS-800内蔵GPS?)の情報:http://member.nifty.ne.jp/nhirata/Gn-72/index.htm
GT-74(TS-820)のデータ出力タイミング:http://www.tsden.org/nemossan/NTPserver/のpage11
ライトスタッフさんの情報では、フリーソフト「さとくん」が送信するコマンドを受け付けるとの話なので、RS232Cラインモニター(例:秋月電子)を使ってコマンドを解析することもできるでしょう。
- その他FURUNO GPSユニット関係情報(gooでの検索結果---いつまで参照できるか分かりませんが・・・):
- http://www.akihabara.co.jp/spa/gt74.html
http://www.akihabara.co.jp/spa/GN77.html
FURUNO GT-77に対応しているSatk - Satellite Assisted Time Keeper [慧(さと)くん]の情報 :http://www2.synapse.ne.jp/uchukan/data/occult/gpsradio/satk.html
NMEA FAQ:http://vancouver-webpages.com/peter/(有名なページです)
<インターフェース作成>
(拡大写真あり)
(1)イータ電機DCDCコンバーター(絶縁型、入力8-32V、出力5V0.3A)
データシートなどはhttp://www.eta.co.jp/にあり。 千石電商で1,180円で購入
今回は消費電流が本体100mA+アンテナ50mAという計算で、0.3Aの小型のものにしました。非絶縁型なら、もっと小型で電流を大きく取れるものがあります。
(2)バックアップ用1次電池
リチウムイオン電池3.6V。秋月電子で400円で購入。スーパーキャパシタでもいいでしょう。
FURUNOのGN-79、GT-77の仕様を上記web pageでみると、3.6Vで大丈夫という印象です。
(3)レベルコンバーターmax232相当品
analog device製。秋月電子でICソケット、コンデンサ付きで250円。
その他、電源入力逆接時保護用のDi、パイロットランプ(LED+抵抗)、スイッチ、Dsub9pinコネクタ、配線材などが必要でしょう。
また、ヒューズもつけておいた方がいいでしょう。私はシガレットライターソケットに刺すケーブル内にヒューズが内臓されたものを使っています。
私は直流安定化電源を使うことが多いので、DCDCコンバーターを購入してみた次第です。FM多重のDGPS機器を使う場合は、DCDCは避けた方がいいかもしれません(良く分かりませんが。。。)。
12V入力5V出力に対応したDCDCは、秋月電子でも1個200円で売っています(ただし、大容量のコンデンサをつけることを推奨)。以前、CQ Hamradioでも紹介されていました。
8V入力が可能だと、006P電池でも動きますね。。。
NMEA input/output、1PPS出力、DGPS入力を考えると、レベルコンバーターを使った方が初級者には簡単との印象。
スパーキャパシタを使う場合の配線方法は、ライトスタッフさんの添付資料にあり。
<ntp情報リンク集>---2001.07.17更新
NTP:http://www.ntp.org
ntp FAQは必読と思われます。
FreeBSD系:
FreeBSDのMLhttp://www.jp.freebsd.org/search.htmlでもFURUNO GPSが組み込まれたTS-800/820を使ったTime Server構築の話題が出ています。「gps」 or 「ntp」などで過去ログを検索してみてください。
その中でも
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/50775
http://www.etl.go.jp/etl/divisions/~tatebe/adm/43900またはhttp://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/43900
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/57533
などは要チェック。コマンドの利用方法なども分かり有用でしょう。
http://www.east.jdmia.or.jp/~tamotsu/how-to-install/ntpd.html
http://www.miz.nao.ac.jp/staffs/hisa/00fall_1.html
http://www.tcp-ip.or.jp/~ikken/intra/date.txt
http://hack.mc.cs.knct.ac.jp/mydoc/ntpserver.txt
http://www1.odn.ne.jp/~caa05360/timeserver/timeserver.html
http://tehanu.hpcl.titech.ac.jp/time/timesync.html
Linux系:
http://www.math.s.kobe-u.ac.jp/~kodama/tips-GPS_Clock.html
http://www.oiden.net/Flets/bangai02/---BIOS時刻の補正方法などが参考になります。
関連ドキュメント:
http://www.eecis.udel.edu/~mills/reports.htm
http://archive.osk.3web.ne.jp/pub/rfc/rfc2783.txt
RFCドキュメント一般:http://rfc-jp.nic.ad.jp/など
<時刻同期用ソフト利用>---NMEA+1PPS利用可能なもの
1PPSを利用して時刻同期しても、素人だとその正確性を測定する手段が難しかったりするので、どこまでこだわるのかという問題はありますが、ものは試しということで。。。
http://www.miz.nao.ac.jp/staffs/hisa/00fall_1.htmlをみると、GPSを用いた時刻同期の正確さが分かるでしょう。
GPSなら、世界中どこにいても時刻同期ができるというメリットがありますね。
1PPSの信号線の配線方法がソフトにより異なりますので注意が必要です。
ソフト名 PPSの配線方法 備考 ntp DCD(1pin) TTL level 直結 tac32 DCD(1pin),DSR(6pin)等 satk DSR(6pin) レベルコンバーター要
なお、以下の内容は、他ページで記述した内容が含まれています。
(1)ntp(http://www.ntp.org)
stratum1のサーバーを立ちあげて、家庭内LANの全てのパソコン(unix、windows系問わず)の時刻を同期させるとカッコいいかも?
以前のversionでは、patchを当てないとNMEA+1PPSは1ポートで直接利用できませんでした(http://www.hn.is.uec.ac.jp/~arimura/ntp/index-j.htmlまたはhttp://www.aist.go.jp/ETL/etl/divisions/~tatebe/adm/TS-800-FreeBSD.html参照)。しかし、最近のバージョンでは利用できるようです。ソースファイルを参照すると分かります(自分ではコンパイルして実験した実績はありませんが・・・)。さらには、ntp FAQ 6.2.4.3.3. How do I use PPS with NMEA driverにもその旨記述があります。v4.0.99k23から対応しているようです。
ジュピターでTimeServer構築(再掲)のページも参照ください。ntp.confの設定方法などは参考になるはずです。
ア.windowsでのntp利用
最近のntpのwindowsNT版のソースは、VC++ v6のみでコンパイルできるとドキュメントに書いてあります。dspファイルも用意されています。試しにVC++ v5でコンパイルしてみたら、新しい関数を利用しているようで、コンパイルできませんでした。
コンパイルできる環境がない場合はhttp://www.five-ten-sg.com/またはtrimbleのftpサイト(http://www.trimble.com/oem/ntp/参照)からバイナリーを入手可能です。
ntpのマニュアルは、ソースファイルのアーカイブの中の\html以下にあります。
今回は、バイナリー提供版v4.0.99jを利用しました。その後、v4.0.99mRC2でも試してみましたが、以下の状況は同じです。
ntpのドキュメントdriver29.htmをみると、windowNT版はmsオーダーでしか時刻同期できないようです。やはり、ntpはunixということでしょうか。
trimbleはntpのwindowsNT版のバイナリーファイルを提供しているだけあって、trimble用のドライバー解説ファイルに記述があるのが、おもしろいですね。
windowsNT版のインストールは、簡単でsetup.exeをクリックして、インストールディレクトリを指定すれば、OK。
ただし、インストールディレクトリには簡単なドキュメントしかインストールされません。readme.ntファイルはhtml形式なので、renameして必ず読みましょう。
プログラム本体(ntpd.exe ntpdate.exe ntpdc.exe ntpq.exe ntptrace.exe)は\winNT\system32\以下にインストールされます(検索すればすぐ分かります)。
設定ファイルは\winNT\以下にインストールされます。設定方法は、unix版と同じです。
GPSごとのntp.confの記述方法は、refclock.htmから解説をたどってやればよいです。
ntp.confのpath_nameは-c オプションにより任意の場所を指定できます。
インストールすると、自動的にコントロールパネル/サービスに登録されています。
windowNTでは、instsrvを実行する必要はない?
そもそもinstsrv.exeは何なのか?ソースをみるとinstsrvというものがあるのですが、バイナリーファイルをインストールしてもどこにいったのか不明です(winNTのインストールドライブを検索してもヒットしません)。
スタートアップ時の扱いについて、環境に応じて設定しておきます。私は、自動から手動に変更しました。
サービスの停止、開始もこのダイヤログボックスから行うのが簡単です。
私が実験した範囲では、コマンドラインからntpdとしてもサービスが開始されませんでした。
<windowsNT版ntpにおけるntp.confの設定方法>
いろいろ試してみたのですが、配布されているNT用のバイナリーを使っている限りは、windowsNT上ではPPSは利用できない(たぶん)という結論に達しました。\html\hints\winnt.htmを良く読むとドキュメントには、NMEAドライバーは開発始まったばかりとの主旨のことが書いてあります。
そもそもntpdc > kernコマンドを受け付けませんので検証ができません。そういうimplementがされていないようです。
さらには、ntpdc >sysinfoにより表示される内容で、system flags:にPPS関係の表示が出てきませんので、PPS同期はできないのでしょう。。。
一応、NMEA単独では動いているようでした.。どの程度の正確性かは不明です。
117番の時報とwindows付属の時計を比べてみたところ、それなりに時刻は合っているので、簡易な時刻あわせには十分ということでしょう。
その後、調べたところ、jupiterでntpサーバーを構築しているサーバーとの時差を桜時計でみてみたところ、10ms〜30ms程度でした。ひょっとしてPPSが利用できているのか?、単にNMEAセンテンスの出力間隔が安定しているだけなのか?(こんな検証をしてはいけません。windowsの時計は、かなり振れます。)
例1:NMEA+1PPS(---たぶんNMEA単独でしか動かないようです。設定方法はdriver20.htm参照)
#NMEA driver com port = 2 enable GGA sentence
server 127.127.20.2 mode 1 prefer ---ここではRMCを指定していmすが、GGA(mode 2)を指定しておいた方が、リセット時に便利です。
fudge 127.127.20.2 time1 0.0 stratum 0 refid GP74 flag2 0 flag3 1
enable pps---必要かどうかは不明。v3.5.93では必要だった。pps /dev/refclock-1 assert hardpps # PPS deviceなどという指定が必要なドライバーもある(motorola,parseが該当)ようです。
enable auth monitor stats
statsdir i:\win32app\gps\ntp
driftfile %windir%\ntp.drift # path for drift file
ntpq -p
ntpdc >sysinfo
などのコマンドを実行すると動作状況が確認できます。
下記の画面のように、いつまでたってもPPS同期を示す「o」がつきませんでした。
まさか、NMEA+1PPSの時だけ「o」がつかないということはないと思いますが・・・。
例2:PPS(---利用できませんでしたので、あくまで参考です。設定方法はdriver22.htm参照)
#PPS only
127.127.22.2
fudge 127.127.22.2 time1 0.0 stratum 0 refid PPS flag2 0 flag3 1
enable pps
enable auth monitor stats
statsdir i:\win32app\gps\ntp
driftfile %windir%\ntp.drift # path for drift file
イ.PC-unixでのntp利用
Linux kernel v2.0.34(PPSkit適用済)上でntp v4.0.99m-RC2をそのままコンパイルしてみましたが、とりあえずコンパイルはできました(warningはいくつかあり)。
しかし、だいぶntpの構造が変わっているようで、古いkernel+PPSkitではjupiter用のドライバーが導入されず。Linuxの入れ直しから始めないといけないかな。。。
PPSkitのinstallファイルやntpのソースをみると、/usr/include/sys/timepps.hがないと1PPS利用関係のドライバーはインストールされないようです。xntp v3.5.93ではppsclock.hがないといけなかったのですが、だいぶ状況が変わっているようです。
さらには、ntp4用のPPSkitをみると、ntpのソースにもpatchをあてないとntpでPPSを活用できないようです。
とりあえずNMEA用ドライバーを導入してみました。ntp.confの設定方法は上記に同じ。PPS利用指定オプションは意味がありませんが。。。
ntpd -c /etc/ntp.confというようにファイルを明示的に指定してntpdを実行することも可能です。
以下のコマンド出力について読み方は、ntp FAQ 6.2.4.2.1. So I think I have all required components ready, how will I see that everything is working?も参考になります。
ntpdc> kern---動作開始後数十分経過した際
pll offset: -0.005925 s
pll frequency: 15.319 ppm---ppm= parts per million(1e-06)
maximum error: 0.022855 s
estimated error: 0.010819 s
status: 0001 pll
pll time constant: 2
precision: 1e-06 s
frequency tolerance: 200 ppm
pps frequency: 41.741 ppm
pps stability: 200.000 ppm
pps jitter: 0.0002 s
calibration interval: 128 s
calibration cycles: 77
jitter exceeded: 0
stability exceeded: 5
calibration errors: 4
という感じです。
pps stabilityからみると1PPSは利用は駄目なようです。単にNMEAセンテンスの出力間隔という感じですね。
それでもestimated errorが10ms程度です。
ntp v4の利用はとりあえず、先送りにして、xntp v3.5.93+PPSkitを利用してみました。
この場合、NMEAセンテンスをcom1、1PPSをcom2に入力します。
NMEAはstratum2 PPSはstratum0と指定しました。stratumが隣接しているとそれぞれが同期を取ろうとしてしまい、なかなかPPSに同期しませんので、注意が必要です。fudge time1を設定すれば回避できるかもしれませんが、未確認です。
(PPSkit付属のenable_ppsというソフトを実行させてからでないとPPS同期しない場合があるようです。)
なお、ntp v4からは、ATOMとPPSという二つのドライバーがあり、PPSだと同期をとろうとしないようです(ntp FAQドキュメントによる)。
さらにはdriver22.htmをみると他のドライバーがprefer peerとなっていることが必要だとも書いてあるので、ntp.confの設定には注意が必要でしょう。
ntpq-p ---動作開始後約1日経過
remote refid st t when poll reach delay offset disp
==============================================================================
LOCAL(0) LOCAL(0) 3 l 37 64 377 0.00 0.000 10.01
GPS_NMEA(1) GPS_NMEA(1) 2 l 36 64 377 0.00 16.121 27.13
oATOM_PPS(2) .PPS. 0 l 36 64 377 0.00 -3.495 1.77
ntpq> cv
status=0000 clk_okay, last_clk_okay
device="PPS Clock Discipline", timecode=, poll=18, noreply=0,
badformat=0, baddata=0, fudgetime1=0.000, stratum=0, refid=PPS, flags=4
ntpq> rv
status=2184 leap_none, sync_atomic/PPS, 8 events, event_peer/strat_chg
system="Linux", leap=00, stratum=1, rootdelay=0.00, rootdispersion=2.90,
peer=44390, refid=PPS,
reftime=bef2ed43.00a808c8 Sun, Jul 8 2001 23:31:31.002, poll=6,
clock=bef2ed64.0207a000 Sun, Jul 8 2001 23:32:04.007, phase=-2.145,
freq=39306.44, error=0.90
server01:~# ntptime
ntp_gettime() returns code 0 (OK)
time bef2f216.c7f22000 Sun, Jul 8 2001 23:52:06.781, (.781038),
maximum error 10368 us, estimated error 7568 us.
ntp_adjtime() returns code 0 (OK)
modes 0x0 (),
offset -1629 us, frequency 37.788 ppm, interval 128 s,
maximum error 10368 us, estimated error 7568 us,
status 0x107 (PLL,PPSFREQ,PPSTIME,PPSSIGNAL),
time constant 2, precision 1 us, tolerance 200 ppm,
pps frequency 41.338 ppm, stability 0.133 ppm, jitter 63 us,
intervals 305, jitter exceeded 31, stability exceeded 13, errors 9.
xntpdc> sysinfo
system peer: ATOM_PPS(2)
system peer mode: client
leap indicator: 00
stratum: 1
precision: -18
root distance: 0.00000 s
root dispersion: 0.00357 s
reference ID: [PPS]
reference time: bef2ed83.00b1bbcf Sun, Jul 8 2001 23:32:35.002
system flags: auth monitor pll pps stats kernel_sync pps_sync
frequency: -16.000 ppm
stability: 44.879 ppm
broadcastdelay: 0.003906 s
authdelay: 0.000122 s
xntpdc> kern
pll offset: 3980 us---FreeBSDだとここが1us以下になるらしいのですが、古いLinuxの限界か?
pll frequency: 40.983 ppm
maximum error: 9168 us
estimated error: 5568 us---ジュピターとは余り変わりません。ジュピターもそうですが、この値は結構変動します。
status: 0307
pll time constant: 2
precision: 1 us
frequency tolerance: 200 ppm
pps frequency: 41.825 ppm
pps stability: 0.002 ppm
pps jitter: 113 us
calibration interval: 256 s
calibration cycles: 5707
jitter exceeded: 3554
stability exceeded: 29
calibration errors: 290
server01:~# tail -10 /var/log/xntp/loopstats---ファイルの記録内容についてはmonopt.htmlを参照してください。
52098 57480.484 -0.003980 38.7004 6
52098 57544.486 -0.003862 38.9485 6
52098 57608.489 -0.003110 38.9923 6
52098 57672.492 -0.003356 38.8726 6
52098 57736.494 -0.003357 39.2348 6
52098 57928.505 -0.005188 38.3785 6
52098 57992.506 -0.005269 38.6134 6
52098 58056.510 -0.004807 38.6485 6
52098 58120.512 -0.004963 38.5235 6
52098 58184.514 -0.004963 38.2746 6
Linuxのkernelが古いとこの程度が限界でしょうか?
それとも何か設定がまずいのか?fudge time1の設定を行う必要でもあるのか?
calibration intervalが長いせいでしょうか?
FreeBSDとかには及びませんね。。。(3桁以上違います)
server01:~# ntptrace
localhost: stratum 1, offset 0.000052, synch distance 0.00360, refid 'PPS'
PPS同期に関連して、tickadjというコマンドがありますが、私の古いマシンでは、ntpのマニュアルどおりのオプションは使えず、tickadj [tickvalue]という使い方しかできないようです。
ntp FAQの中の8.2.5.1. How do I set the correct value for tick?みると
~# cat /etc/ntp.drift 269.799
~# tickadj tick = 10000
~# echo 'scale=7; t=10000*(1+269.799/2^20)+0.5; scale=0; t/1' | bc
10003
~# tickadj 10003
という例があります。例にしたがって計算してみると、
pc02:/etc# cat ntp.drift
12.087
pc02:/etc# echo 'scale=7;t=10000*(1+12.087/2^20)+0.5;scale=0;t/1' | bc
10000
pc02:/etc# tickadj
tick = 10000
となるので、tickadjの値はとりあえずいじらなくてよいようです。2^20がどこから出てくるのかは、よく調べていません。
参考:jupiter binary mode+ 1PPS+xntp v3.5.93の場合(上記と同じマシンです)
コマンドの出力例は、必ずしも同一日時ではありません。
ntp.confの例---まずclockopt.html及びconfopt.htmlをみるとよいようです。
#Local clock
server 127.127.1.0 prefer
#jupiter 4800bps
server 127.127.31.2 prefer
fudge 127.127.31.2 time1 0.0035 time2 0.0 stratum 0 flag3 1 refid JUPI
enable pps
enable auth monitor stats ntp kernel calibrate---設定方法はmiscopt.htmlを参照してください。v3では「ntp」「kernel」「calibrate」は無効のようです。xntpdc> sysinfoにより表示されません。
driftfile /etc/ntp.drift
statsdir /var/log/xntp/
filegen clockstats file clockstats type day enable---設定方法はmonopt.htmlを参照してください(v3ではconfopt.htmも合せて参照)。
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
keys /etc/ntp.keys
trustedkey 1 2
requestkey 15
controlkey 15
server01:~# ntpq -p
remote refid st t when poll reach delay offset disp
==============================================================================
LOCAL(0) LOCAL(0) 3 l 7 64 377 0.00 0.000 10.01
oGPS_JUPITER(2) .JUPI. 0 l 7 64 377 0.00 9.565 0.31
ntpq> cv
status=0000 clk_okay, last_clk_okay
device="Rockwell Jupiter GPS Receiver", timecode=, poll=425, noreply=0,
badformat=0, baddata=22, fudgetime1=3.500, stratum=0, refid=JUPI,
flags=4
ntpq> rv
status=2464 leap_none, sync_uhf_clock/PPS, 6 events, event_peer/strat_chg
system="Linux", leap=00, stratum=1, rootdelay=0.00, rootdispersion=4.10,
peer=4789, refid=JUPI,
reftime=bef2d5b7.fffc541a Sun, Jul 8 2001 21:51:03.999, poll=6,
clock=bef2d5ec.f1e02000 Sun, Jul 8 2001 21:51:56.944, phase=3.340,
freq=33511.63, error=0.40
xntpdc> sysinfo---xntpdc.htmを読むと分かりますが、rfc1305に出力結果の解説があります。
system peer: GPS_JUPITER(2)
system peer mode: client
leap indicator: 00
stratum: 1
precision: -18---2のべき数で考えます。つまり2^(-18)=0.0000038...となります。
root distance: 0.00000 s
root dispersion: 0.00113 s
reference ID: [JUPI]
reference time: bef274b7.00de0935 Sun, Jul 8 2001 14:57:11.003
system flags: auth monitor pll pps stats kernel_sync pps_sync---PPS同期モードで動作しているようです。
frequency: -16.000 ppm
stability: 16.106 ppm
broadcastdelay: 0.003906 s
authdelay: 0.000122 s
xntpdc> kern---動作開始後数十分経過した際
pll offset: 6582 us
pll frequency: 8.391 ppm
maximum error: 20576 us
estimated error: 10176 us
status: 0107---ntptimeを実行すると詳細が分かります。
pll time constant: 2
precision: 1 us---FreeBSDや最新のLinux kernel+PPSkitではnsになるようです。
frequency tolerance: 200 ppm
pps frequency: 41.737 ppm
pps stability: 0.020 ppm
pps jitter: 54 us
calibration interval: 256 s
calibration cycles: 119
jitter exceeded: 0
stability exceeded: 9
calibration errors: 6
xntpdc> kern---数時間が経過すると
pll offset: 7910 us
pll frequency: 34.344 ppm
maximum error: 5456 us
estimated error: 3856 us---内蔵時計の精度が10ms以下のオーダーであれば、アマチュアには十分では・・・。
http://home.jp.freebsd.org/cgi-bin/showmail/FreeBSD-users-jp/57533(再掲)の例と1桁違うのはOSのkernelの違いでしょうか(Linux 2.0系はusオーダー、FreeBSDはnsオーダーです)?xntpd開始からの時間が30時間以上経過しても似たりよったりでしたので、このくらいが限界なのでしょう・・・。
status: 0307
pll time constant: 2
precision: 1 us
frequency tolerance: 200 ppm
pps frequency: 41.728 ppm
pps stability: 0.004 ppm---安定するまでは結構時間がかかりますので、注意が必要です。
pps jitter: 119 us
calibration interval: 256 s
calibration cycles: 139
jitter exceeded: 2
stability exceeded: 9
calibration errors: 6
xntpdc> kern ---1日以上が経過すると
pll offset: -1148 us
pll frequency: 39.969 ppm
maximum error: 10192 us
estimated error: 992 us---たまたまでしょうか?1msを切る場合もあります。
status: 0107
pll time constant: 2
precision: 1 us
frequency tolerance: 200 ppm
pps frequency: 41.883 ppm
pps stability: 0.004 ppm
pps jitter: 70 us
calibration interval: 256 s
calibration cycles: 586
jitter exceeded: 4
stability exceeded: 9
calibration errors: 8
server01:~# tail -10 /var/log/xntp/loopstats
52101 60383.602 -0.000651 40.5664 6
52101 60447.604 -0.000314 40.3384 6
52101 60575.598 0.001293 40.6212 6
52101 60639.601 0.000988 40.5744 6
52101 60703.593 0.001058 40.4271 6
52101 60767.595 0.001628 40.7152 6
52101 60831.599 0.000949 40.7829 6
52101 60895.592 0.000518 40.6748 6
52101 60959.594 0.000839 41.0409 6
52101 61151.595 -0.002040 40.1205 6
server01:~# ntptrace
localhost: stratum 1, offset 0.000052, synch distance 0.00179, refid 'JUPI'
(2)tac32(http://www.cnssys.com/tac32/)
オンラインで登録できる時刻あわせ用のシェアウェアです。ntp機能があるTAC32plusというソフトもあります。
tapr(http://www.tapr.org)の会員だと、約半額の値段で登録できます(ただし非商用利用限定)。なお、tapr経由で登録すると、registration passwordを入力してもUNREGISTEREDのままですが、有効期間が適宜31日にリセットされる?ようです。
お試しバージョンもあるので、実験用にもいいです。
tac32がサポートしているGPSは以下のとおりです。MOT = motorola
status barでは、1PPSを信号を受信した場合、赤く点灯します。
GGA,RMC,GSVセンテンスを出力させていたら、tac32では、なぜか、時計が1秒進んでしまいます。FreeBSD MLでもOffset -1する必要があるとの投稿がありました。
そこで、
$PFEC,GPint,ZDA00,VTG00,GLL00,GSA00,GSV00,GGA00,RMC01
とコマンドを送信してRMCだけ出力させて、NTT117番と比べたところ、時刻予告型の出力のようです。
あんまり正確な測定方法ではないですが、tac32で1秒ごとにPCの時刻あわせをおこなった上で、桜時計でntpサーバー(jupiter利用、1PPSあり)との時刻差をみると、0.000sから0.002sとなります。時刻を変えて10回ぐらいやっても同じ結果です。
(3)satk(http://www2.synapse.ne.jp/uchukan/data/occult/gpsradio/satk.html)
GN-74/GT-74の後継機種であるGT-77及びジュピターに対応しているようです。
web pageをみると、GGAセンテンスを使って時刻同期するようです。
GPSを使ったTimeServer機能だけでなく、sntpクライアント機能も実装されています。
私自身は、現在のところ、利用したことがありません。
(作成中)
コールドスタート時の測位時間
まず注意しないといけないのは、FURUNO系は、最初はまんべんなく衛星を捕捉しないとなかなか測位開始に至りません(経験上)。
つまり、ベランダとか東半分の衛星しか捕捉できない場合は、結構、測位開始まで時間がかかります。
上記に気をつければ、数分で測位開始します。
1PPSの詳細---Pico scopeで計測予定
<出力センテンス>---詳しくは、GM38のページを参照してください。
電源を入れたところ、GGA,ZDA,GSV,VTGセンテンスが出力されていました。
RMC以外のセンテンスにはチェックサムが付加されない仕様なので、各種ソフトを利用する際は注意が必要です。
1衛星だけ捕捉しているだけでもPPSを出力させるコマンドを受け付けるか?試してみるのも価値があると思われるのですが、そのコマンドが分かりません。
<コマンド制御>---GM38のページも参照してください。
コマンドで各種設定を細かくいじれます。GM38のコマンドレファレンスを参考にしてください。
コマンドは、テキストデータをwindows付属のハイパーターミナルなどを使って送信してやればよいようになっています。
例えば、NMEAセンテンスの出力間隔を制御したり、出力するセンテンスを取捨選択できます。
(例)
$PFEC,GPsrqと送信すると、以下のように現在設定されているパラメーター一覧が出力されてきます。
$PFEC,GPssd,A1,D06,E05,G001,H000000.0,M05,S01,T+0000,U00000000,W2,X2,Z1
D,G,H,M,S,U,W,Xについては、gm38のマニュアルにも掲載されています。
A,E,T,Zのうち@nifty FGPS mes3-#2226を参照すると、Tは1PPS出力のタイミング調整だそうです。また、A,E,Zは「T」モデル特有の設定らしいです。ということは、時刻同期用のGT-74か?
Tokyo(Japan)測地系への変更は以下のようなセンテンスを送信します。
$PFEC,GPset,G157
その後
$PFEC,GPsrqと送信すると、以下のとおり測地系が変更されたことが確認できます。
$PFEC,GPssd,A1,D06,E05,G157,H000000.0,M05,S01,T+0000,U00000000,W2,X2,Z1
$PFEC,GPirqと送信すると、以下のように現在設定されているセンテンスの出力間隔一覧が出力されてきます。
$PFEC,GPisd,GGA01,ZDA01,GLL00,GSA00,GSV01,VTG01,RMC00,alt00,anc00,acc00,ast00
$PFEC,GPisd,tst00,die00,tlp00,tps00,gpt00,rrm00
出力間隔を設定するには以下のようなセンテンスを送信します。00とすると当該センテンスは出力されません。
$PFEC,GPint,ZDA00,VTG00,GLL00,GSA01,GSV01,GGA01,RMC01
初期化スタートをするには以下のようなコマンドを送信します。
$PFEC,GPclr,2(バックアップ値利用)
$PFEC,GPclr,1
コントロールウェアのバージョンを確認方法(@nifty mes2-#5426参照)
$PFEC,GPint,tst00と送信すると以下のように出力されてきます。
$PFEC,GPtst,0,4850102009,0,0
アルマナックデータの表示(@nifty mes2-#5469参照)
$PFEC,GPspe,ANCOUTと送信すると以下のように出力されてきます。GN-74/GT-74系であることが分かります。
#GP,TYP=GP74,0301285F4506285F4506285F450604600F000000FFFF00000000000000060000FEF
D03880000B0124600FE9C02A2E0000008A10DDD000F00000082DD33000000275306660000BAF78C0
0FFFFA9C000069E020301285F4524285F4524285F452404600F000000FFFF00000000FFC0FFFEE00
0FEFDFCFC0000347EC80001080AE3A0000008A10CD2000F000000D433B200000025FFB6660000AD2
1F100FFFFA6000006232C0301285F4542285F4542285F454204600F000000FFFF000000000020000
16000FEFD0A9AFFFFFA20010001CA011660000008A10D08000F000000002C21000000262CB666000
01A304900FFFFA7E000063F020301285F4560285F4560285F456004600F000000FFFF00000000FFA
00015F000FEFD0398FFFF91116C00FE6002C5D0000008A10D8F000F0000002DA89A00000027AB866
60000EF6D1E00FFFFAB200006012C0102285F4188285F418E285F4194005F0301000001D0891CF70
0000F0009EDE3D0D0FF2D3D771A6DC830FF07016FDF620AD1A10D2F6C891C000ED9FC8F580009261
F740C21E00FF19C02FFFFA2AAFEC67E000301285F459C285F459C285F459C04600F000000FFFF000
000000000FFFFF000FEFD0998FFFFB556AE00027A037700000008A10D67000F0000000202BE00000
0267BB6660000A238C000FFFFA9400006E92C0401285F45BA285F45BA285F45BA04600F000000FFF
F00000000FF6000111000FEFD00000000075E45000080060B90005AAEA10D6D000F005ABF00C8190
00080268E166601FCADB31D00FFFFA98000062E020401285F45D8285F45D8285F45D804600F00000
0FFFF000000000120000B7800FEFDF49AFFFFC195990001300406D0000008A10D94000F000000ADE
3A2000000270D666600005244D900FFFFAB8000064F2C0102285F41A6285F41AC285F4194005F020
100000174891CF400FFF1FFFE5785747400FE35043D17E77600CF060D2E26148AA10DBF0A891CFF8
DB0B2A3890027267C8E8116E91D06F4F7FFFFA66B064071000201285F4326285F4326285F4326046
00F000000FFFF00000000000000003000FEFD03DA000035335F00003E0255A0000008A10C5B000F0
0000057682900000027DB6666000003203200FFFFA7200006C2020201285F4344285F4344285F434
404600F000000FFFF00000000000000001800FEFD1202000035CD4A0000B20087B0000008A10D520
00F0000002AAE5F000000258C7666000091709300FFFFA6200006CC2C00000000000000000000000
00000FFFFBFFF7EFFFF7FFFFFEFB7FFFDFFFFFFFFFFFFFF5FBFFFFFFF3FFF9FFFBF7FFFFBFDFF7FF
FBFF7FFFFFFBFFFBEF37BBFBDFBFFF7BFF7FFFFFBFFF77FFFFFD7FDFF07F90201285F4380285F438
0285F438004600F000000FFFF000000000000FFFFE800FEFD0000000054F994000080010AE0005AA
EA10DA2000F005ACA81FD96000080277EC66601FCFDFB1000FFFFAA200006BD2C0102285F41A6285
F41AC285F41B2005F020100000019891CEA00FFF0FFFC40F81919EDCB2B33582A1B43F0A0015F5BF
C15D4A10D3DAC891CFFDD86C7A69D000427477D9F16BBEC4ABFF5FFFFAB8BFECF2A000201285F43B
C285F43BC285F43BC04600F000000FFFF0000000000200001A000FEFD0000002AD0B728000000043
B9000005FA10D0D000F0000002F7EFF00008027ED96665AB144C2DF00FFFFABA00006F12C0000000
000000000000000000000020000400082001080008400402204A0208000810000000020000404000
00200208020000409810440000402000000004000108010001000000004000100E10000402801020
1285F43F8285F43F8285F43F804600F000000FFFF00000000028000048800FEFDFE38FFFFA2F6EE0
000CE06AE80000008A10D2F000F0000003120420000002800366601FE7E96E300FFFFABA00006F02
C0201285F4416285F4416285F441604600F000000FFFF000000000020FFFD8000FEFDF9FE00008A6
5E100FEDE010030000008A10CA2000F000000596A1A0000002726F66600006AA3D200FFFFA560000
6A9020201285F4434285F4434285F443404600F0000DCFFFF0000000000800012E800FEFD07BAFFF
FA1627C00FFB2038E30000008A10CB6000F000000A9130E00000025D6366600009988D500FFFFA84
00006D02C0201285F4452285F4452285F445204600F000000FFFF00000000FFE0FFFD6800FEFD000
000004205200000800126D0005AAFA10BE3000F005AD1574A19000080272E966601FC54D94400FFF
FA540000664020201285F4470285F4470285F447004600F000000FFFF00000000000000002000FEF
D00000000411C7E00008008D480005AB0A10CA6000F005AC957A61500008027D7766601FC9CE2580
0FFFFA72000066F2C0301285F448E285F448E285F448E04600F000000FFFF0000000000000013400
0FEFDF3DCFFFF27CC7B00FFCE073E70000008A10DAC000F000000D4C0EA00000025FB066600001BD
7E500FFFFA5A00006D9020202285F434A285F4332285F4338005F010100000190891CFA000006000
07F7B9090F7B3310CDADDCA53F92707DE458E01E9A10A6E47891CFFB55E4E9F2F007627F92BAA2EA
8B5857C8BFFFFA28DFCE0FD000301285F44CA285F44CA285F44CA04600F000000FFFF00000000002
00001F800FEFDFC7EFFFFA911FA00FD1804B310000008A10DFF000F0000002E4EA20000002814966
60000BD44D500FFFFAC400006CF020301285F451E285F451E285F451E04600F000000FFFF0000000
0000000008000FEFD03620000CD304900FF2204A400000008A10D5E000F000000AA0A42000000263
236660000B0180B00FFFFA9800006D0020301285F453C285F453C285F453C04600F000000FFFF000
00000006000111000FEFD00C40000F6AEBD0000BA06AAC0000008A10D2A000F0000008231CB00000
027712666000009D1AB00FFFFAA000006E32C0301285F455A285F455A285F455A04600F000000FFF
F0000000000000000D000FEFDF99600008E2F3300034E07BF30000008A10D23000F000000AAFC020
0000026610666000097635200FFFFA9E000062B020301285F4578285F4578285F457804600F00000
0FFFF00000000FFE000000000FEFD0468FFFF6FD2960000E802A7E0000008A116BD000F000000D75
5CA0000002717166600009E777A00FFFFA9000006BB2C0202285F42F0285F42F6285F42FC005F000
10000005A891BF100003D0013E16E5A5AECE12A658861720DEFC604428172159BA10F0785891B001
885F18CB7FFF5275097C1168AB4B601F2FFFFACC8FF5583000102285F42D2285F42D8285F42DE005
F0001000000D8891CF000FFF3FFFF2F44D8D8FE9B3BE1DD35A8AFFF0702E3D3B40B41A10D8327891
CFFD6DB5DD83E0023266A448E21E5380A7853FFFFA339FE7B52000201285F4302285F4302285F430
204600F000000FFFF0000000000000001A000FEFD00000000D9C19B0000800536500058C2A10CBF0
00F00129200C8AC00008026884666000223677800FFFFA8A00006740200000000000000000000000
00000FFFFFDFFFFFFFFFFFFBFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFF
FFFFFFFBFFFFFFFFFFFFFFFFFDFFFFEFEFFDFFFFDFFFFFFFFFFFFDFFF47FF06FF0101285F41FA285
F41F40000000000000000000000003F0000003F00003C0000000000000000000000003F860001000
00000285F41F400000000000000000000000000000000000000000000000000000000000000003F0
30680285F4410011403FEFF3F0AFDFCCD000000000000400000000080003F46B1285F44100130045
F0000000E0000000024600DDE050D0100000000000000045F00000008FFFFEF000F600DDE050D3B
#GP,END
ライトスタッフさんのジャンクコーナーの画像をみると、「GT-74」と書いてありました。ということは、時刻同期用にチューンナップされたGPSということでしょう。。。と思っていたら最近は「????」となっています。違ったのかな・・・。