(57)【要約】【課題】  ＧＰＳ衛星からの時刻データを取得できない状況でも、コンピュータの内部時刻を簡易且つ高精度に調整できるようにする。【解決手段】  ＧＰＳ信号を受信するＧＰＳ受信機２２と、受信信号の時刻データに基づいてＲＴＣ３６の時刻を周期的に修正するＲＴＣタスクと３６を備えたので、ＲＴＣ３６の第１の発振器よりも高精度のＯＣＸＯ３５からの発振信号に基づくタイマ３３のカウント動作によってＧＰＳ衛星からの同期信号と同期した内部同期信号を生成し、ＧＰＳ信号から時刻データを抽出できない場合には、ＲＴＣ３７の更新タイミングと内部同期信号とを周期的に同期させ、これによりＧＰＳ衛星より時刻データを長時間取得できない場合であっても、ＲＴＣ３７の内部時計が計時する時刻を高精度に維持することができる。また、内部同期信号を生成するタイマ３３のカウント値を制御することにより、閏秒等の時刻のずれを吸収した時刻進度の調整処理を行うことができる。【選択図】          図３
2006010638.tif 000002
【特許請求の範囲】
【請求項１】
測位衛星より受信した信号に含まれる時刻データ、同期信号、及び受信状態の良否を示すデータを抽出する受信機と、
第１の発振器からの発振出力に基づいて内部時刻データを更新して計時を行う計時装置と、
前記第１の発振器よりも高精度な第２の発振器からの発振出力に基づくカウント動作により前記同期信号と同期する内部同期信号を発生させるタイマと、
前記受信機により抽出された受信状態データが良好である場合は、前記受信機により抽出した同期信号を選択して出力し、前記受信機により抽出された受信状態データが良好でない場合は、前記タイマにより発生させた内部同期信号を選択して出力する同期信号選択処理手段と、
前記受信機により抽出された時刻データに基づいて前記計時装置の内部時刻データを周期的に修正する際に、前記受信機により抽出された受信状態データが良好である場合は、前記同期信号選択処理手段により選択された同期信号に同期した前記抽出された時刻データを前記内部時刻データに設定し、前記受信機により抽出された受信状態データが良好でない場合は、前記同期信号選択処理手段により選択された内部同期信号に更新タイミングを同期させて前記内部時刻データの更新処理を行う内部時刻データ更新手段とを備えることを特徴とする時刻データ取得装置。
【請求項２】
前記内部同期信号を発生させるタイマは、前記受信機により抽出された受信状態データが良好である場合は、前記測位衛星より取得した同期信号によってリセット状態になり、前記受信機により抽出された受信状態データが良好でない場合は、所定のカウント値でリセット後、前記第２の発振器からの発振出力に基づいてカウント動作を繰り返すことを特徴とする請求項１に記載の時刻データ取得装置。
【請求項３】
前記内部時刻データ更新手段は、前記受信機により抽出された受信状態データが良好である場合に行う動作を中止して、前記計時装置の内部時刻データの補正量と、当該補正量の補正に要する所望の補正期間とを関係付ける補間処理を行う際に、所定の整数演算に基づいて前記カウント値を制御することにより、前記内部時刻データとして計時される時刻の進度を補正することを特徴とする請求項２に記載の時刻データ取得装置。
【請求項４】
前記内部時刻データの進度を補正する補間処理のアルゴリズムは、デジタル微分解析器で実行される処理手順であることを特徴とする請求項３に記載の時刻データ取得装置。
【請求項５】
前記計時装置の内部時刻データに関する補正量は、閏秒であることを特徴とする請求項３又は４に記載の時刻データ取得装置。
【請求項６】
測位衛星より受信した信号に含まれる時刻データ、同期信号、及び受信状態の良否を示すデータを抽出する受信機と、第１の発振器からの発振出力に基づいて内部時刻データを更新して計時を行う計時装置と、前記第１の発振器よりも高精度な第２の発振器とに接続されたコンピュータ上で動作するコンピュータプログラムであって、
前記第２の発信機からの発振出力に基づくカウント動作により前記同期信号と同期する内部同期信号を発生させるタイマ処理と、
前記受信機により抽出された受信状態データが良好である場合は、前記受信機により抽出した同期信号を選択して出力し、前記受信機により抽出された受信状態データが良好でない場合は、前記タイマにより発生させた内部同期信号を選択して出力する同期信号選択処理と、
前記受信機により抽出された時刻データに基づいて前記計時装置の内部時刻データを周期的に修正する際に、前記受信機により抽出された受信状態データが良好である場合は、前記同期信号選択処理で選択された同期信号に同期した前記抽出された時刻データを前記内部時刻データに設定し、前記受信機により抽出された受信状態データが良好でない場合は、前記同期信号選択処理で選択された内部同期信号に更新タイミングを同期させて前記内部時刻データの更新処理を行う内部時刻データ更新処理とを実行させるためのコンピュータプログラム。
【請求項７】
前記内部同期信号を発生させるタイマ処理は、前記受信機により抽出された受信状態データが良好である場合は、前記測位衛星より取得した同期信号によってリセット状態になり、前記受信機により抽出された受信状態データが良好でない場合は、所定のカウント値でリセット後、前記第２の発振器からの発振出力に基づいてカウント動作を繰り返すことを特徴とする請求項６に記載のコンピュータプログラム。
【請求項８】
前記内部時刻データ更新処理は、前記受信機により抽出された受信状態データが良好である場合に行う動作を中止して、前記計時装置の内部時刻データの補正量と、当該補正量の補正に要する所望の補正期間とを関係付ける補間処理を行う際に、所定の整数演算に基づいて前記カウント値を制御することにより、前記内部時刻データとして計時される時刻の進度を補正することを特徴とする請求項７に記載のコンピュータプログラム。
【請求項９】
前記内部時刻データの進度を補正する補間処理のアルゴリズムは、デジタル微分解析器で実行される処理手順であることを特徴とする請求項８に記載のコンピュータプログラム。
【請求項１０】
前記計時装置の内部時刻データに関する補正量は、閏秒であることを特徴とする請求項８又は９に記載のコンピュータプログラム。
【請求項１１】
請求項１乃至５の何れか一つに記載の時刻データ取得装置、又は請求項６乃至１０の何れか一つに記載のコンピュータプログラムを使用して、前記測位衛星からの受信信号から抽出した時刻データと、前記測位衛星からの受信信号から抽出した同期信号又は前記タイマで発生させた内部同期信号とに基づいて配信用の時刻データを生成し、通信回線を介して前記生成した時刻データを配信することを特徴とするサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＧＰＳ（Global Positioning System）衛星等の高精度の計時装置を有する測位衛星からの信号を受信して時刻データ及び同期信号を抽出する受信機に接続し、この受信機からの時刻データ及び同期信号に基づいて生成した提供用の時刻データを、ネットワークを介して提供するサーバに関するものであり、特に当該サーバに用いられる時刻データ取得装置及びコンピュータプログラムに用いて好適なものである。
【背景技術】
【０００２】
近年、ＮＴＰ（Network Time Protocol）により、ネットワーク上のクライアントやサーバ等に高精度の時刻データを提供するＮＴＰサーバが利用されている。ＮＴＰとは、ネットワーク上のコンピュータやルータなどの機器の正確な位置合わせに用いられるプロトコルである。ＮＴＰサーバは階層構造化されていて、上位のＳｔｒａｔｕｍ−１サーバが、高精度な時刻信号をネットワーク以外から参照して時刻合わせを行い、その下位のＳｔｒａｔｕｍ−２サーバはＳｔｒａｔｕｍ−１サーバを参照して時刻合わせを行い、さらにその下位のＳｔｒａｔｕｍ−３サーバはＳｔｒａｔｕｍ−２サーバを参照して時刻合わせを行うというように、各サーバは上位サーバの時刻データを順次参照して自機の時刻合わせを行う。
【０００３】
Ｓｔｒａｔｕｍ−１サーバが参照する時刻データとしては、ＵＴＣ（協定世界時：Universal Time Coordinated）に同期した原子時計の時刻データであることが求められる。このため、例えば、ＧＰＳ衛星を時刻信号の発生源（時刻源）として、このＧＰＳ衛星から発生される信号に含まれる時刻データが使用される。ＧＰＳ衛星からの時刻データは、時刻源として従来から広く利用されており、例えば、特許文献１には、コンピュータに内蔵された時計を修正するために、時刻源であるＧＰＳ衛星から捕捉した信号の時刻データを用いる技術が開示されている。
【０００４】
【特許文献１】特開平１０−３１０８３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
前述したように、他のサーバやクライアントに時刻データを提供するＳｔｒａｔｕｍ−１サーバであるコンピュータは、ＧＰＳ衛星からの時刻データを定期的に取得することで内部時計の時刻修正を行うが、ＧＰＳ衛星からの時刻信号を常に良好に捕捉しているとは限らない。したがって、時刻信号を捕捉できない場合は、その間、コンピュータの内部時計が計時する時刻に依存する状態が続くことになる。一般に、コンピュータの内部時計の発振源には水晶発振器が使用されるので、リアルタイムクロックやソフトタイマの時刻精度があまり高くない。例えば、リアルタイムクロック等の一般的な時刻精度は日差８００ミリ秒であり、高精度のものでも日差１００ミリ秒程度と低い場合が殆どである。しかも、ネットワーク上での通信時間の揺らぎ、サーバ自身のハードウェア特性、又は室温変化など、精度低下につながる各種の要因が存在し、時刻精度はこれらの要因の影響を受けると更に低下してしまう。このため、一旦、ＧＰＳ衛星から取得した時刻データによってコンピュータの内部時刻を修正したとしても、時刻の経過とともにその内部時刻は徐々にずれが生じてしまうという問題があった。
【０００６】
また、ＧＰＳ衛星からの時刻データは閏秒調整され、これに合わせてＮＴＰサーバも閏秒調整を行い、ネットワークを介したクライアントに調整後の時刻データを提供する。しかしながら、時刻データの供給を受けるクライアントのアプリケーションの中には、この閏秒に対する調整処理を適切に行っていないものもあるため、１秒分の閏秒調整を瞬間的に行うことによって前後の時刻データとのつながりが極端に非線形になってしまう問題もあった。この問題を避けるためには、時刻データを提供するＮＴＰサーバ側が、長時間、例えば、１時間程度の時間幅間で時刻進度のずれが補正される線形的な調整処理を行い、閏秒分を吸収することが必要である。しかしながら、一般的なＮＴＰサーバが、このような調整処理を行うようには必ずしもなっておらず、そのような場合は個々のＮＴＰサーバに前述した線形的な調整処理をカスタマイズしなければならず、非常に煩雑な手間が生じてしまうという不都合があった。
しかも、この調整処理が行われる間は、内部時計の時刻とＧＰＳ衛星の時刻との同期を図ることができないので、必然的にコンピュータの内部時計の時刻精度に頼らざるを得ない状態になるが、前述したとおり内部時計の時刻精度があまり高くないので、この間はＧＰＳ衛星から捕捉した時刻と内部時計の時刻のずれが累積してしまうことになる。
【０００７】
また、時刻進度の調整処理は、閏秒等で必要となる補正量をごく微少な補正単位量になるよう除算処理によって分割し、周期的にこの単位補正量分だけ補正することを繰り返すことで実現できるが、前記除算処理においては小数点以下の値を伴なう数値演算（実数演算）が必要になるので処理コストが増大してしまうという問題があった。
【０００８】
そこで、本発明は前述した問題点に鑑み、ＧＰＳ衛星等の測位衛星からの時刻データを取得できない状況でも、コンピュータの内部時刻を簡易且つ高精度に調整できることを目的としている。
【課題を解決するための手段】
【０００９】
本発明の時刻データ取得装置は、測位衛星より受信した信号に含まれる時刻データ、同期信号、及び受信状態の良否を示すデータを抽出する受信機と、第１の発振器からの発振出力に基づいて内部時刻データを更新して計時を行う計時装置と、前記第１の発振器よりも高精度な第２の発振器からの発振出力に基づくカウント動作により前記同期信号と同期する内部同期信号を発生させるタイマと、前記受信機により抽出された受信状態データが良好である場合は、前記受信機により抽出した同期信号を選択して出力し、前記受信機により抽出された受信状態データが良好でない場合は、前記タイマにより発生させた内部同期信号を選択して出力する同期信号選択処理手段と、前記受信機により抽出された時刻データに基づいて前記計時装置の内部時刻データを周期的に修正する際に、前記受信機により抽出された受信状態データが良好である場合は、前記同期信号選択処理手段により選択された同期信号に同期した前記抽出された時刻データを前記内部時刻データに設定し、前記受信機により抽出された受信状態データが良好でない場合は、前記同期信号選択処理手段により選択された内部同期信号に更新タイミングを同期させて前記内部時刻データの更新処理を行う内部時刻データ更新手段とを備えることを特徴としている。
【００１０】
また、前記内部同期信号を発生させるタイマは、前記受信機により抽出された受信状態データが良好である場合は、前記測位衛星より取得した同期信号によってリセット状態になり、前記受信機により抽出された受信状態データが良好でない場合は、所定のカウント値でリセット後、前記第２の発振器からの発振出力に基づいてカウント動作を繰り返すことを特徴としている。
また、前記内部時刻データ更新手段は、前記受信機により抽出された受信状態データが良好である場合に行う動作を中止して、前記計時装置の内部時刻データの補正量と、当該補正量の補正に要する所望の補正期間とを関係付ける補間処理を行う際に、所定の整数演算に基づいて前記カウント値を制御することにより、前記内部時刻データとして計時される時刻の進度を補正することを特徴としている。
また、前記内部時刻データの進度を補正する補間処理のアルゴリズムは、デジタル微分解析器で実行される処理手順であることを特徴としている。
また、前記計時装置の内部時刻データに関する補正量は、閏秒であることを特徴としている。
【００１１】
本発明のコンピュータプログラムは、測位衛星より受信した信号に含まれる時刻データ、同期信号、及び受信状態の良否を示すデータを抽出する受信機と、第１の発振器からの発振出力に基づいて内部時刻データを更新して計時を行う計時装置と、前記第１の発振器よりも高精度な第２の発振器とに接続されたコンピュータ上で動作するコンピュータプログラムであって、前記第２の発信機からの発振出力に基づくカウント動作により前記同期信号と同期する内部同期信号を発生させるタイマ処理と、前記受信機により抽出された受信状態データが良好である場合は、前記受信機により抽出した同期信号を選択して出力し、前記受信機により抽出された受信状態データが良好でない場合は、前記タイマにより発生させた内部同期信号を選択して出力する同期信号選択処理と、前記受信機により抽出された時刻データに基づいて前記計時装置の内部時刻データを周期的に修正する際に、前記受信機により抽出された受信状態データが良好である場合は、前記同期信号選択処理で選択された同期信号に同期した前記抽出された時刻データを前記内部時刻データに設定し、前記受信機により抽出された受信状態データが良好でない場合は、前記同期信号選択処理で選択された内部同期信号に更新タイミングを同期させて前記内部時刻データの更新処理を行う内部時刻データ更新処理とを実行させることを特徴としている。
【００１２】
本発明のサーバは、前記何れか一つに記載の時刻データ取得装置、又は前記何れか一つに記載のコンピュータプログラムを使用して、前記測位衛星からの受信信号から抽出した時刻データと、前記測位衛星からの受信信号から抽出した同期信号又は前記タイマで発生させた内部同期信号とに基づいて配信用の時刻データを生成し、通信回線を介して前記生成した時刻データを配信することを特徴としている。
【発明の効果】
【００１３】
本発明によれば、測位衛星からの受信信号より取得した時刻データに基づいて内部時計としての計時装置の時刻を周期的に修正するとともに、計時装置の第１の発振器よりも高精度の第２の発振器からの発振信号に基づくカウント動作によって測位衛星より取得した同期信号と同期した内部同期信号を生成し、測位衛星との受信状態が良好でないために受信信号から時刻データを抽出できない（受信状態データが有効でない）場合には、計時装置の更新タイミングを、生成した内部同期信号と周期的に同期させるように構成した。このため、測位衛星より時刻データを長時間取得できない場合であっても、計時装置が計時する時刻を高精度に維持することができる。
また、本発明によれば、内部同期信号を生成するタイマのカウント値を制御することにより、閏秒等の時刻のずれ、すなわち、補正量を吸収する時刻進度の調整処理を行うようにしたので、高精度の時刻進度調整を行うことができる。
さらに、補正量と、当該補正量の補正に要する所望の補正期間とを関係付ける補間処理では、所定の整数演算に基づいて前記カウント値を制御するようにしたので（例えば、デジタル微分解析器と称されるアルゴリズムによる補間処理）、所望の補正期間の調整処理を実数演算なしに行うことが可能となり、これにより低コストかつ高精度の閏秒調整処理を実現できる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の好適な実施の形態について図面を参照しながら詳細に説明する。
本発明の時刻データ取得装置は、図１に示すようなサーバシステム１００に適用される。サーバシステム１００の構成は、本発明の時刻データ取得装置の機能を有するサーバ１と、他のサーバ３ａ，３ｂと、Ｗｅｂクライアント４と、その他のクライアント６とが、イーサネット（登録商標）２，５を介して互いに通信可能になるように接続されている。
【００１５】
サーバ１が前述したＳｔｒａｔｕｍ−１サーバであり、またサーバ３ａ，３ｂがＳｔｒａｔｕｍ−２サーバである。サーバ１は、ＧＰＳアンテナ７で受信したＧＢＰ信号に含まれる時刻データをイーサネット（登録商標）２を介してサーバ３ａ，３ｂ及びＷｅｂクライアント４へ提供する。さらに、サーバ３ａ，３ｂは、受信した時刻データをイーサネット５を介して他のクライアント６へ提供する。
【００１６】
図２は、サーバ１の構成を示すブロック図である。図２に示すように、サーバ１は、ＧＰＳ衛星２３からの信号を受信するＧＰＳ受信機２２と、且つ後述するリアルタイムクロック処理基板２４と、各種操作用のスイッチ２８Ａと、その制御基板であるＳＷコントロール２８Ｂと、表示用のＶＦＤ(Vacuum Fluorescence Display)２９Ａと、その制御基板であるＶＦＤコントロール２９Ｂと、サーバ基板２５とを備えている。スイッチ２８ＡとＳＷコントロール２８Ｂ、及びＶＦＤ２９ＡとＶＦＤコントロール２９Ｂは、それぞれ双方向に通信可能に接続されているとともに、ＳＷコントロール２８Ｂ及びＶＦＤコントロール２９Ｂは、ＲＣＵ基板２４とに接続されている。
【００１７】
ＧＰＳ受信機２２は、ＧＰＳアンテナ７が捕捉した少なくとも４つのＧＰＳ衛星２３ａ，２３ｂ，２３ｃ，２３ｄからの信号を受信すると、これら複数の受信信号に基づいて測位処理を行うことにより、自機の位置データ、時刻データ、及びＵＴＣ（協定世界時：Universal Time Coordinated）の秒位に同期した１ＰＰＳ（Pulse Per Second）信号を抽出する。
【００１８】
ＧＰＳ受信機２２は、自機の位置データを取得した後は、当該位置データを用いて、１つのＧＰＳ衛星（例えば、ＧＰＳ衛星２３ａ）より捕捉した信号からの時刻データ及び１ＰＰＳ信号を生成する動作モードとなる。本実施形態では、このときの動作モードを「固定モード」と呼び、また自機の位置を測位する動作モードを「測位モード」と呼ぶこととする。ＧＰＳ受信機２２が一旦、１ＰＰＳ信号の生成を行うようになると、再びＧＰＳ衛星２３ａからの信号を捕捉して次の１ＰＰＳ信号を生成するまで、ＧＰＳ受信機２２は、内部のタイマ（不図示）によって１ＰＰＳ信号に同期した１Ｈｚの信号を生成し、かつこれを１ＰＰＳ信号として、後述するリアルタイムクロック処理基板２４（以下、ＲＣＵ基板２４と称する）に出力することを繰り返す。
【００１９】
ＲＣＵ基板２４は、ＧＰＳ受信機２２と双方向の通信が可能なように接続される。このＲＣＵ基板２４は、図示しないが、計時装置としてのリアルタイムクロックと、その計時のために用いる第１の発振信号を供給する水晶発振器と、当該水晶発振器よりも高精度な第２の発振信号を提供するＯＣＸＯ（Oven Controlled Crystal Oscillator）とを備える。このＯＣＸＯの時刻精度は日差±１０ミリ秒程度であり、通常の水晶発振器の時刻精度である日差±数１００ミリ秒程度に比べて高いことが特徴である。また、ＯＣＸＯによる発振信号は、後述するＯＣＸＯタイマ３３のカウント値を更新するための源振となる。なお、ＲＣＵ基板２４が備えるマイクロコンピュータの動作クロックとしては、ＯＣＸＯとは別の図示しない発振器にて発生される発振信号を用いる。
なお、本実施形態ではＯＣＸＯを使用しているがこれに限定するものでもなく、例えばルビジウム発振器等のさらに高精度発振器を用いても良いことは言うまでもない。
【００２０】
また、ＲＣＵ基板２４は、ＧＰＳ受信機２２と、リアルタイムクロックと、ＯＣＸＯとをそれぞれ通信可能に接続されたＲＣＵ基板用マイクロコンピュータ（不図示）を更に備える。前記マイクロコンピュータは、全体動作を司るＣＰＵと、ＲＡＭと、ＣＰＵが適切に動作するためのプログラム及びＯＳを格納したＲＯＭ等から構成されている。そして、前記マイクロコンピュータは、例えば、時刻データのフォーマット変換、リアルタイムクロックの時刻修正、秒位の調整、第２の発振信号に基づくカウント動作、後述するサーバ基板２５又はその他の入出力部との通信に関する処理を行う。
なお、ＲＣＵ基板２４及びＧＰＳ受信機２２により、本発明の時刻データ取得装置が構成され、前記ＲＣＵ基板用マイクロコンピュータにより、本発明のコンピュータプログラムが実行される。
【００２１】
サーバ基板２５も、全体動作を司るＣＰＵと、ＲＡＭと、ＣＰＵが適切に動作するためのプログラム及びＯＳを格納したＲＯＭ等から構成されたサーバ基板用マイクロコンピュータ（不図示）を備える。ＲＣＵ基板２４と双方向に通信可能に接続される前記サーバ基板用マイクロコンピュータにより、ＮＴＰ処理２５Ａ、ＳＮＭＰ（Simple Network Management Protocol）処理２５Ｂ、ＵＤＰ（User Datagram Protocol）処理２５Ｃ、ＴＣＰ／ＩＰ（Transmission Control Protocol/Internet Protocol）処理２５Ｄ、イーサネットドライバ処理２５Ｅ、制御用コマンド処理２５Ｆ、及び各種のユーティリティ処理２５Ｇ等が実行される。また、サーバ基板２５は、外部に接続して通信を行うために、イーサネットポート２６及びＣＯＭポート２７を備える。
【００２２】
＜高い時刻精度の１ＰＰＳ信号の生成について＞
次に、ＲＣＵ基板２４における１ＰＰＳ信号の生成処理の流れ及びその各処理内容を詳細に説明する。図３は、ＲＣＵ基板２４に備わるＲＣＵ基板用マイクロコンピュータの処理手順を示している。ＧＰＳ受信機２２がＧＰＳ信号を受信すると、ＧＰＳ受信機２２との通信によりＧＰＳタスク３１が実行される。具体的には、米国海洋電子機器協会のＮＭＥＡ−０１８３規格に準ずるＧＰＳ信号から時刻データを取得する処理を行う。このＧＰＳタスク３１により取得される時刻データには、ＵＴＣ、時、分、秒のデータが含まれている。そこで、ＧＰＳタスク３１は、これらの各データをそれぞれ変数値にしてＲＣＵ基板２４のＲＡＭにおける所定のレジスタに設定し、他のタスク処理では、レジスタに設定されたこれら変数値を読み出して時刻データを算出し、所定の処理を行うようにしている。なお、ＧＰＳ受信機２２としては、ＮＭＥＡ−０１８３規格外の独自のバイナリフォーマットでＧＰＳ信号を出力するものも使用でき、ＧＰＳ受信機の仕様に応じて時刻データの抽出処理は適宜に変更可能である。
【００２３】
また、ＧＰＳ受信機２２で受信される信号の中には、ＧＰＳアンテナ７がＧＰＳ衛星からの信号を良好に受信できたか否かといった受信状態に関するフラグを含んでいる。このフラグは、ＧＰＳ受信機２２が生成する１ＰＰＳ信号の良否を示すので、時刻修正の判断に用いることが可能となる。そこで、ＧＰＳ受信機２２が、固定モード及び測位モードのそれぞれにおいて、必要な数のＧＰＳ衛星２３ａ〜ｄから信号を捕捉し、これに基づいて１ＰＰＳ信号を生成した場合は、有効な１ＰＰＳ信号であることを示す値をフラグに設定する。ＧＰＳタスク３１は、受信信号からこのフラグを抽出して、これをＵＴＣ、時、分、秒のデータとともに前記ＲＡＭの所定のレジスタに設定する。
【００２４】
さらにＧＰＳタスク３１は、前述した時刻データ及び１ＰＰＳ信号の有効性に関するデータをレジスタへ設定する他に、所定の処理又はスイッチ２８Ａの操作に従ってＧＰＳ受信機２２の動作を制御する処理を行う。例えば、ＧＰＳ受信機２２の動作モードを切替える指示を受信した場合、固定モード又は測位モードを指定するコマンドをＧＰＳ受信機２２側に送信して切替え可能なように制御する。
【００２５】
ＧＰＳ受信機２２は、前記フラグを含んだ受信信号をＧＰＳ割り込み３２へ出力し、ＧＰＳ割り込み３２は、この１ＰＰＳ信号をトリガとして所定の処理を実行する。具体的には、１ＰＰＳ信号の良否を示すフラグの値を確認し、有効な１ＰＰＳ信号であれば、ＧＰＳ受信機２２からの１ＰＰＳ信号をサーバ基板２５へ出力する。図４はその処理手順を示している。
【００２６】
図４に示すように、ＧＰＳ割り込み３２は、先ず、後述する閏秒調整中か否か判定し（ステップＳ４１）、前記判定の結果、閏秒調整中でなければ、受信した１ＰＰＳ信号の良否を示すフラグを確認する（ステップＳ４２）。ＧＰＳ割り込み３２は、当該フラグの値が有効、すなわち１ＰＰＳ信号が良好であった場合、ＧＰＳ受信機２２より順次送られる１ＰＰＳ信号に同期して信号を生成し（ステップＳ４３）、これを１ＰＰＳ信号としてサーバ基板２５に出力する。また、ＧＰＳ割り込み３２は、サーバ基板２５に対する１ＰＰＳ信号の出力とともに、後述の図５に示すＯＣＸＯ割り込み３４によるＯＣＸＯタイマ３３を用いた１ミリ秒毎にカウント値を増加させるカウント処理をリスタートさせてＯＣＸＯタイマ３３のカウント値を零にする（ステップＳ４４）。このリスタート処理により、ＧＰＳ受信機２２から送られた１ＰＰＳ信号とＯＣＸＯタイマ３３を用いたカウント処理にて生成される出力とが同期する。
【００２７】
ＯＣＸＯ割り込み３４は、ＧＰＳ割り込み３２によりＧＰＳ受信機２２からの１ＰＰＳ信号が有効でないと判断された場合に、ＯＣＸＯ３５からの発振信号に基づいて後述する手順で高精度な１Ｈｚ信号を１ＰＰＳ信号として生成し、サーバ基板２５に出力する。
【００２８】
図５に、ＯＣＸＯ割り込み３４による処理手順の概略を示す。
図５に示すように、ＯＣＸＯ割り込み３４は、まず、ＯＣＸＯ３５からの発振信号に基づき１ミリ秒毎にＯＣＸＯタイマ３３のカウント値を１増加させ（ステップＳ５１）、すなわち、上述のカウント処理を行い、そのカウント値が１０００を超えたか否かを判断する（ステップＳ５２）。前記判断の結果、カウント値が１０００を超えているときのみカウント値を零にクリアし、カウント処理をリスタートする（ステップＳ５３）。次に、閏秒調整中か否かを判断する（ステップＳ５４）。前記判断の結果、閏秒調整中でないときにのみ出力を発生し、１Ｈｚの信号を発生させる。この１Ｈｚの信号を１ＰＰＳ信号としてサーバ基板２５に出力する（ステップＳ５５）。なお、ステップＳ５２でのカウント値として１０００を基準にしているのは、本実施形態では後述する１ミリ秒単位での調整を想定しているためである。したがって、調整単位に応じたカウント値が設定されるのは言うまでもない。
【００２９】
ＲＴＣタスク３６は、ＧＰＳ受信機２２で捕捉した信号から抽出した時刻データを基に、リアルタイムクロック（ＲＴＣ）３７に時刻データの書き込み（更新）を行なってリアルタイムクロック３７の時刻データを修正し、当該修正された時刻データをＲＴＣから読み出して出力する。これは、ＧＰＳ割り込み３２にて生成される１ＰＰＳ信号、又はＯＣＸＯ割り込み３４にて生成される１ＰＰＳ信号によって、１秒毎にトリガされて開始されて処理する。なお、リアルタイムクロック３７は、内部に水晶発振器３７Ａを備え、これを源振として時刻データを更新する。
【００３０】
図６に、ＲＴＣタスク３６による処理手順の概略を示す。ＧＰＳタスク３１にて設定された変数値を用いて、１０秒毎にリアルタイムクロック３７の時、分、秒データを更新し、時刻データの修正を行う（ステップＳ６１）。本実施形態では、ＧＰＳタスク３１による時、分、秒データの変数の設定処理が確実に完了してから更新されるようにするため、およそ数ミリ秒〜１０ミリ秒の間待機した後にリアルタイムクロック３７の更新を行う。
【００３１】
次に、リアルタイムクロック３７の更新処理の完了を待つためにおよそ５０ミリ秒待機した後、リアルタイムクロック３７から必要な時刻データを読み出す（ステップＳ６２）。次に、読み出した時刻データ３８より、ＮＭＥＡ−０１８３規格に準ずるデータを生成する（ステップＳ６３）。生成したデータは、送信タスク３９によりサーバ基板２５に送信される。ＲＴＣタスク３６は、毎分５９秒の後、次に、ＧＰＳ割り込み３２にて生成される１ＰＰＳ信号、又はＯＣＸＯタイマ３３にて生成される１ＰＰＳ信号によって、リアルタイムクロック３７を０秒アジャスト処理して分の値を進める（ステップＳ６４）。これにより、リアルタイムクロック３７の秒位を１ＰＰＳ信号に同期させることができる。
【００３２】
また、ステップＳ６２で読み出された時刻データ３８は、表示等のその他の処理を行うメインタスク４０に送られる。メインタスク４０は、図２に示したＶＦＤ２９Ａの時刻表示を更新する。
【００３３】
また、サーバ基板２５のサーバ基板用マイクロコンピュータは、ＮＴＰ処理２５Ａ（図２参照）により、ＲＣＵ基板２４からのＮＭＥＡ−０１８３規格に準ずるデータと、１ＰＰＳ信号とに基づいて内部時計の時刻を修正及び補正する。ＮＴＰ処理２５Ａは、例えば、ＦｒｅｅＢＳＤのＮＴＰ  Ｄａｅｍｏｎのようなプログラムで実現される。サーバ基板２５のサーバ基板用マイクロコンピュータは、イーサネット２を介してＷｅｂクライアント４等からＮＴＰにて時刻データの要求を受けると、内部時刻から時刻データを生成してＮＴＰ経由で応答する。
【００３４】
なお、ＯＣＸＯ割り込み３４によるＯＣＸＯタイマ３３のカウント処理が特許請求の範囲に記載したタイマに相当し、ＧＰＳ割り込み３２及びＯＣＸＯ割り込み３４が同期信号選択処理手段に相当している。また、ＲＴＣタスク３６により特許請求の範囲に記載した内部時刻データ更新手段が構成されている。
【００３５】
以上のように本実施形態の時刻データ取得装置は、ＲＣＵ基板２４において、ＧＰＳ受信機２２の受信状態を監視し、受信状態が良好のときは１ＰＰＳ信号をサーバ基板２５に出力するとともに、日差±１０ミリ秒と高い時刻精度のＯＣＸＯ３５からの発振信号をカウントするＯＣＸＯタイマ３３を１ＰＰＳ信号に同期させ、これに対して受信状態が良好でないときは、ＯＣＸＯタイマ３３のカウントによって生成される１ＰＰＳ信号をサーバ基板２５に出力するように構成している。このため、ＧＰＳ衛星２３が捕捉できていないようなときでも、高い時刻精度の１ＰＰＳ信号をサーバ基板２５に出力することができるようになる。
【００３６】
また、受信状態が良好のときにＧＰＳ受信機２２で取得した時刻データに基づいてリアルタイムクロック３７を定期的に修正し、このときにリアルタイムクロック３７の秒位をサーバ基板２５に出力する１ＰＰＳ信号と同期させるように構成している。このため、リアルタイムクロック３７の時刻精度を高く保つことができる。このようなリアルタイムクロック３７からの時刻データがサーバ基板２５へ送信されるようにしているので、サーバ基板２５はＧＰＳ衛星２３を捕捉した受信機２２からの時刻データ及び１ＰＰＳ信号に準ずる、高精度の時刻データ及び１ＰＰＳ信号を得ることができる。
【００３７】
＜閏秒調整について＞
次に、本実施の形態のサーバ１による閏秒調整に関する処理について説明する。図７は、ＲＣＵ基板２４においてマイクロコンピュータが閏秒調整を行う処理ブロック構成図を示しており、同図を参照しながら、閏秒調整処理７０を説明する。
【００３８】
閏秒調整処理７０は、閏秒という時刻進度のずれを長時間の幅で調整（吸収）する処理であり、スイッチ２８Ａの所定の操作によって起動が可能な状態に設定される。なお、スイッチ操作に限らず、Ｗｅｂクライアント等からネットワークを介して設定するようにしても良い。前述したＲＣＵ基板２４におけるＧＰＳタスク３１は、ＧＰＳ受信機２２を介してＧＰＳ衛星２３ａ〜２３ｄより閏秒予告を予め受けるので、閏秒の調整時刻をレジスタ（不図示）に格納しておく。そこで、閏秒調整処理７０は、格納された閏秒の調整時刻と、ＲＴＣタスク３６から取得した内部時刻とを比較して、調整時刻であるか否かを判断する。前記判断の結果、内部時刻が調整時刻となると、閏秒調整処理７０は閏秒の調整処理を開始する。また、この調整処理の間、ＧＰＳ割り込み３２の処理は休止し、ＧＰＳタスク３１により設定された変数値を用いたＲＴＣタスク３６による時刻修正処理が休止する。
【００３９】
また、図７に示すように、閏秒調整処理７０は、補正量レジスタ７２及び経過時間レジスタ７３を介した、レジスタ設定タスク７１と補間処理タスク７４とを実行する。レジスタ設定タスク７１は、補正量レジスタ７２に補正量、すなわち、閏秒を１ミリ秒単位で調整するための値としての１０００を設定する。また、レジスタ設定タスク７１は、調整処理に要する時間を表す値を経過時間レジスタ７３に設定する。本実施形態の場合、３６００秒かけて閏秒調整するものとして、経過時間レジスタ７３に３６００を設定する。
【００４０】
補間処理タスク７４は、補正量と、当該補正量の補正に要する所望の補正期間との関係に対応する直線の整数演算による補間処理を行う。本実施形態において、その補間処理のアルゴリズムはデジタル微分解析器である。詳しくは後述するが、経過時間レジスタ７３の１／２量（＋１８００）を誤差レジスタ（不図示）に設定して、１秒毎にこの値から補正量レジスタの値１０００を減算する処理し、誤差レジスタの値が零以下になったときに１ミリ秒の補正を行う。
例えば、閏秒を＋１秒とすれば、ＯＣＸＯ割り込み３４におけるＯＣＸＯタイマ３３のカウント値が１０００となったか否かの判定処理を、１００１となったか否かの判定処理に切り替えて１ミリ秒の補正を行う。また、閏秒を−１秒とすれば、９９９となったか否かの判定処理に切り替えて１ミリ秒の補正を行う。以降、閏秒を＋１秒として説明する。本実施形態においては、この１ミリ秒の補正処理を計時補正処理という。そして、この補正が行われる度に現在の誤差レジスタの値に経過時間レジスタ７３の値（＋３６００）を加算し、同様の処理を繰り返すものである。この一連の繰り返し処理を補間計算処理という。
【００４１】
次に、閏秒調整処理７０の手順について説明する。図８は、閏秒調整処理７０の全体的な手順を示したフローチャートである。図９は、図８に示すステップＳ３７の処理内容、すなわち、補間計算及び計時補正処理に関する動作手順を詳細に示したフローチャートである。
図８のフローチャートに示すように、ステップＳ３０で、レジスタ設定タスク７１は、前述した経過時間レジスタ７３、補正量レジスタ７２、及び図示しない補正カウンタに初期値として０を設定する。補正カウンタは補正済みの補正量をカウントする。
次にステップＳ３１で、ＲＴＣタスク３６にて読み出された内部時刻と閏秒の調整時刻とを比較し、一致していれば調整処理を開始し、補正量レジスタ７２に閏秒（１０００ミリ秒）を示す１０００を設定する（ステップ３２）。次に、ステップＳ３３で、補正カウンタに値として０を設定する。次に、ステップＳ３４で、閏秒調整に要する経過時間を秒単位で経過時間レジスタ７３に記憶する。前述したように、本実施形態の場合、経過時間レジスタ７３には３６００が設定される。
【００４２】
この場合、３６００秒経過する間に内部時刻の１０００ミリ秒の進みを補正することから、一般的には、ＲＴＣタスク２４の内部時刻を１０００ミリ秒／３６００秒の割合で遅らせる方向に補正する必要があるということが直感的に理解できる。つまり、１／３．６＝０．２７７７…であることから、１秒で０．２７７７…ミリ秒を補正する必要がある。しかし、０．２７７７…という値から明らかなように、浮動小数点表現される値が得られるような除算を行い、そしてこの値を１秒ごとに加算（又は減算）して補正量を求める計算をしなければならない。
【００４３】
このため、ＲＣＵ基板２４には、浮動小数点ユニットを内蔵したマイクロコンピュータを採用することが必要となるが、必然的にＣＰＵ価格が高くなってしまうので、組み込み機器用の低価格なマイクロコンピュータにはこのような浮動小数点ユニットが搭載されることが少ないかまたは殆ど存在しない。したがって、このような場合は、浮動小数点ユニットを内蔵する代わりにソフトウェア処理で浮動小数点処理（実数処理）を行うことになる。実際にソフトウェアによって処理することは可能であるが、一般に、計算時間が長く、計算誤差が大きくなるといった問題が生じてしまう。
そこで、本実施形態の閏秒調整処理７０では、外部時刻と内部時刻との誤差を整数処理によって補間処理することが可能なアルゴリズムを用いて前述した問題点を解決することを特徴としている。
このアルゴリズムは、ラスタグラフィックスの処理で一般的に使用されている線形補間アルゴリズムであり、デジタル微分解析器とも呼ばれている手法である。具体的には、コンピュータ画面上の直線や円弧の座標を高速に計算するために用いて、真の直線から最短距離にある画素を加算のみの計算で求めることができることから処理速度を高速にすることができる。図１０は、点（１，１）から点（８，４）を結ぶ線分を表現する際に、前記アルゴリズムによって選択される画素を網掛けで示した図である。
【００４４】
前記線形補間アルゴリズムを閏秒調整処理７０に適用した場合、閏秒に関する誤差単位量として例えば１ミリ秒のような整数値を設定し、この誤差単位量分の補正を経過時間の何秒のときに実行していくかを決定することを意味する。これを図１０を用いて説明すれば、例えば、８秒（横軸に相当）で計４ミリ秒（縦軸に相当）の誤差を補正しなければならないとすれば、経過時間１秒目で１ミリ秒補正して２秒目で補正せず、３秒目で再び１ミリ秒補正して４秒目で補正しないとすると４秒間での補正の累積が２ミリ秒になる。５秒目以降も同じように補正すると、結局、８秒間で補正の累積が４ミリ秒になる。このように、目標の誤差補正量４ミリ秒が経過時間８秒内で平均して施されるように、計算処理上、整数の加算のみを用いながら、誤差単位量分の補正量を段階的に行い、線形補間することができるものである。なお、実質的な誤差と内部時刻との関係は直線で表されるものに限らず曲線で表されるものであってもよい。このような処理をステップＳ３６〜ステップＳ３７で実行する。
【００４５】
ステップＳ３６の前に、ステップＳ３５では、後述するステップＳ３９で用いる誤差レジスタの初期値を設定するため、シフト演算によって経過時間レジスタ７３に設定されている値（３６００）の１／２の値（１８００）をレジスタ設定タスク７１に設定する。そして、ＯＣＸＯ３５からの発振信号をカウントする図示しないタイマにより１秒のカウントが完了したか否かを判断し（ステップＳ３６）、つまり１秒毎にステップＳ３９の補間計算及び計時補正処理を行う。ステップＳ３６において用いるタイマは、ＯＣＸＯタイマ３３とは別に処理されるもので時刻進度調整されず、ＯＣＸＯ３５からの発振信号に基づき１ミリ秒毎に１つカウント値を加算する。このタイマのカウント値が１０００となったときにステップＳ３６では１秒のカウントが完了したとしている。また、このタイマはタイマ３３のリスタートとともにリスタートされる。
【００４６】
ステップＳ３７の処理の詳細な手順を示したのが、図９に示すフローチャートである。
図９に示すように、まず、ステップＳ４１で、レジスタ設定タスク７１は、現在の誤差レジスタの値から補正量レジスタ７２に設定されている値である１０００を減算する。具体的には、ステップＳ３５で誤差レジスタには初期値として１８００が設定されているので、誤差レジスタ＝１８００−１０００＝８００となる。
【００４７】
次に、誤差レジスタの値が０以下であるかを判断し（ステップＳ４２）、前記判断の結果、０以下の場合はステップＳ４３に進み、これに対して誤差レジスタの値が０より大きい場合は図８に示すステップＳ３７を終了してステップＳ３８へ進む。ステップＳ４３では、減算された誤差レジスタの値に経過時間レジスタ７３の値（３６００）を加算する。
つまり、ステップＳ４１〜４３での処理は、１秒毎に誤差レジスタから補正量レジスタの値（１０００）を減算する演算を繰り返し行って、誤差レジスタの値が０以下になった時点が１ミリ秒分の補正するタイミングとして決定する。そして、次の補正タイミングを決定するため、現在の誤差レジスタの値に経過時間レジスタ値（３６００）を加算して、同様な減算処理を行えるようにしている。
【００４８】
そして、ステップＳ４４で、決定した補正タイミングのときにのみ、ＯＣＸＯタイマ３３のカウント値を制御し、例えば、ＲＴＣタスク３６の内部時刻の更新タイミングを１ミリ遅らせる処理を行う。すなわち、ＯＣＸＯ割り込み３４によるＯＣＸＯタイマ３３のカウント値が１０００となったか否かの判定処理を、１００１となったか否かの判定処理に切り替えて１ミリ秒の補正を行う。これとともに、レジスタ設定タスク７１により補正回数を設定する補正カウンタの値を１増加している。
【００４９】
この結果、図１１に示すように、経過時間３６００秒の間で、１０００回の補正タイミング（例えば、閏秒調整処理の開始から２秒、６秒、９秒、１３秒・・・）のときに１ミリ秒の補正を行うこととなり、結局、ＲＴＣ３７の内部時刻を１時間あたり１秒遅らせることが可能となる。すなわち、図１１は、閏秒挿入時における内部時刻がａ秒としたとき、（ａ＋０〜ａ＋３６００）秒であらわされる経過時間に対する閏秒（誤差時間）との関係を破線の直線で示したものである。この直線に基づく補間処理によって閏秒調整正が行われるようにしている。
【００５０】
ステップＳ３８では、補正カウンタの値が１０００となったか否か、すなわち、閏秒調整が終了したか否か判断する。閏秒調整が終了していなければ、ステップＳ３６に戻り、ステップＳ３６〜ステップＳ３７に示すように、内部時刻の進度調整をすべきかを１秒毎に判断して必要に応じて１ミリ秒の補正を施すようにしている。この間、１ＰＰＳ信号としては、時刻進度調整されたＯＣＸＯタイマ３３からの信号が用いられる。これに基づいてＲＴＣタスク３６は時刻データを読み出し、また、リアルタイムクロック３７のアジャスト処理を行う。補正カウンタの値が１０００となって閏秒調整が終了すると閏秒調整処理７０を終了し、前述した通常動作に戻る。
【００５１】
なお、本実施形態では、経過時間レジスタ７３の１／２量（＋１８００）を誤差レジスタに設定して、ステップＳ４１で１秒毎に誤差レジスタの値から補正量レジスタの値を減算する処理を説明したが、例えば、前記値（＋１８００）の符号を反転した−１８００を使用してもよい。この場合、ステップＳ４１では１秒ごとの減算処理ではなく加算処理を行うこととなり、ステップＳ４２で誤差レジスタの値が０以上か否かを判断するように変更すればよい。そして、ステップＳ４２で誤差レジスタの値が０以上になったときは、ステップＳ４３で経過時間レジスタ７３の値（３６００）を減算するように処理する。つまり、誤差レジスタ＝誤差レジスタ−経過時間レジスタにする。以上の処理を繰り返すことで前述した処理結果と同様の結果を得ることが出来る。
【００５２】
本実施形態の閏秒調整処理７０では、高い時刻精度のＯＣＸＯ３５からの発振信号をカウントするＯＣＸＯタイマ３３のカウント値を制御して閏秒のずれ、すなわち、補正量を吸収する時刻進度の調整処理を行うので、高精度の時刻進度調整が可能となる。
さらに、本実施形態の閏秒調整処理７０は、補正量と、当該補正量の補正に要する所望の補正期間との関係に対応する直線の整数演算による補間処理、例えば、デジタル微分解析器と称されるアルゴリズムによる補間処理により時刻進度の調整を行うように構成しているので、所望の補正期間の調整処理を実数演算なしに行うことが可能となり、これにより低コストかつ高精度の閏秒調整処理を実現できる。
【００５３】
また、本発明の目的は、本実施の形態の時刻データ取得装置の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読みだして実行することによっても、達成されることは言うまでもない。
【００５４】
さらに、コンピュータが読みだしたプログラムコードを実行することにより、本実施の形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳ等が実際の処理の一部又は全部を行い、その処理によって本実施の形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５５】
【図１】本発明の時刻データ取得装置を適用したサーバを用いたシステムの一実施形態を示す構成図である。
【図２】本発明の一実施形態であるサーバの構成を示すハード構成図である。
【図３】ＲＣＵ基板に備わるマイクロコンピュータの処理手順を示すフローチャートである。
【図４】本発明の一実施形態であるサーバにおけるＧＰＳ割り込みの処理手順を示すフローチャートである。
【図５】本発明の一実施形態であるサーバにおけるＯＣＸＯ割り込みの処理手順を示すフローチャートである。
【図６】本発明の一実施形態であるサーバにおけるＲＴＣタスクの処理手順を示すフローチャートである。
【図７】本発明の一実施形態であるサーバによる閏秒調整を行う処理ブロック構成図である。
【図８】本発明の一実施形態であるサーバによる閏秒調整の全体的な処理手順を示すフローチャートである。
【図９】本発明の一実施形態であるサーバによる閏秒調整処理のうち、特に補間計算及び計時調整処理に関する処理手順を示すフローチャートである。
【図１０】本発明の一実施形態であるサーバによる閏秒調整処理で行う補間計算のアルゴリズムを説明するための図である。
【図１１】本発明の一実施形態であるサーバによる閏秒調整処理を実行したときの補正タイミング及び補正時間の累計の推移を模式的に示す図である。
【符号の説明】
【００５６】
１    サーバ
２    イーサネット
５    イーサネット
６    クライアント
７    ＧＰＳアンテナ
２２    ＧＰＳ受信機
２３ａ〜２３ｄ    ＧＰＳ衛星
２４    ＲＣＵ基板
２５    サーバ基板
３１    ＧＰＳタスク
３２    ＧＰＳ割り込み
３３    ＯＣＸＯタイマ
３４    ＯＣＸＯ割り込み
３５    ＯＣＸＯ
３６    ＲＴＣタスク
３７    ＲＴＣ
３８    ＲＴＣ時刻データ
３９    送信タスク
４０    メインタスク
【図１】
2006010638.tif 000003
【図２】
2006010638.tif 000004
【図３】
2006010638.tif 000005
【図４】
2006010638.tif 000006
【図５】
2006010638.tif 000007
【図６】
2006010638.tif 000008
【図７】
2006010638.tif 000009
【図８】
2006010638.tif 000010
【図９】
2006010638.tif 000011
【図１０】
2006010638.tif 000012
【図１１】
2006010638.tif 000013