(57)【要約】【課題】受信時刻適用上限誤差が設定可能な機器等であって、内部時計が初期状態になっても配信時刻により内部時刻が校正可能なプログラム及び機器を提供すること。【解決手段】内部時計１４０から取得した内部時刻を受け継いで計時するステップＳ１０と、内部時計が初期化されたか否かを判定するステップＳ２０と、サーバ３００から配信時刻を取得するステップ１１０と、記憶手段１０８から上限時間と内部時刻を読み出すステップＳ１５０と、内部時刻と配信時刻の差が前記上限時間を上回っていない場合に、配信時刻で前記内部時刻を校正するステップＳ１９０と、内部時計が初期化された場合、前記差が前記上限時間を上回っているか否かを判定せずに、前記配信時刻により前記内部時刻を校正するステップＳ１３０と、を実行させることを特徴とするプログラムを提供する。【選択図】図２
2011214937.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
内部時計から取得した内部時刻を受け継いで計時するステップと、
前記内部時計が初期化されたか否かを判定するステップと、
サーバから配信時刻を取得するステップと、
記憶手段から上限時間と内部時刻を読み出すステップと、
前記内部時刻と前記配信時刻の差が前記上限時間を上回っていない場合に、前記配信時刻で前記内部時刻を校正するステップと、
前記内部時計が初期化された場合、前記差が前記上限時間を上回っているか否かを判定せずに、前記配信時刻により前記内部時刻を校正するステップと、
を実行させることを特徴とするプログラム。
【請求項２】
前記内部時計が初期化された場合、フラグをオンに設定するステップをコンピュータに実行させ、
前記フラグに基づき前記内部時計が初期化されたか否かを判定する、
ことを特徴とする請求項１記載のプログラム。
【請求項３】
前記内部時計が初期化された場合、前記上限時間を初期化された前記内部時計と前記配信時刻との差より大きくなる予め設定された値に変更し、実質的に前記差が前記上限時刻を上回っているか否かを判定しないようにするステップを、コンピュータに実行させる、
ことを特徴とする請求項１記載のプログラム。
【請求項４】
前記内部時計が初期化された場合、前記内部時刻と前記配信時刻の差が前記上限時間を上回っている否かを判定する機能をオフに設定するステップを、コンピュータに実行させる、
ことを特徴とする請求項１記載のプログラム。
【請求項５】
前記内部時計が初期化されたと判定された場合、
強制的に、サーバから配信時刻を取得するステップ、をコンピュータに実行させる
ことを特徴とする請求項２〜４いずれか１項記載のプログラム。
【請求項６】
前記フラグがオンの状態で、前記差が前記上限時間を上回っているか否かを判定せずに、前記配信時刻により前記内部時刻を校正した場合、
前記フラグをオフに設定するステップをコンピュータに実行させる、
ことを特徴とする請求項２記載のプログラム。
【請求項７】
前記内部時計が初期化されたか否かを判定するステップでは、
前記内部時刻が、前記記憶手段に記憶された前記内部時刻の校正履歴の時刻情報よりも古い場合に、前記内部時計が初期化されたと判定する、
ことを特徴とする請求項１〜６いずれか１項記載のプログラム。
【請求項８】
前記内部時計が初期化されたか否かを判定するステップでは、
前記内部時刻が、予め既知の初期時刻から所定時間内の場合に、前記内部時計が初期化されたと判定する、
ことを特徴とする請求項１〜６いずれか１項記載のプログラム。
【請求項９】
内部時計から取得した内部時刻を受け継いで計時する計時手段と、
記憶手段から上限時刻と内部時刻を読み出し、前記内部時刻と前記配信時刻の差が前記上限時刻を上回っていない場合に、サーバから取得した配信時刻により前記内部時刻を校正する時刻校正手段と、を有する機器であって、
前記内部時計が初期化されたか否かを判定する初期化判定手段、を有し、
前記内部時計が初期化された場合、前記時刻校正手段は前記差が前記上限時刻を上回っているか否かを判定せずに、前記配信時刻により前記内部時刻を校正する、
ことを特徴とする機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器の時刻を校正するプログラムに関し、特に、受信時刻適用上限誤差を利用したプログラム及び機器に関するものである。
【背景技術】
【０００２】
多くの電子機器はそれぞれ時計の機能を有しており、何らかのイベントの発生時刻などを記録することができるようになっている。時計に要求される精度は電子機器によって様々であるが、時計には誤差が不可避なので、電子機器に時計の誤差を修正する機能が搭載されることがある（例えば、特許文献１参照。）。
【０００３】
特許文献１には、複数の原子時計のうち正確なものからパルスを計数することで、ＧＰＳ衛星から取得した時刻を校正する時刻サービス提供システムが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１７８３６３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されているようにＧＰＳ衛星であれば、時刻がずれることはまずないと考えることができるが、時刻の校正のため電子機器にＧＰＳ受信機を搭載することが必要になってしまう。また、ＧＰＳ衛星からの電波を補足可能な位置に電子機器を設置する必要が生じ、電子機器の設置場所に制約が生じる。これらのため、ＧＰＳ衛星から校正用の時刻を取得することは困難な場合が少なくない。
【０００６】
そこで、ネットワークを介して電子機器とタイムサーバを接続し、電子機器がタイムサーバから校正用の配信時刻を取得することが行われる。配信時刻の取得プロトコルとして、例えばＮＴＰやＳＮＴＰが採用されることがある。
【０００７】
図１は、時刻取得システムの概略構成図の一例を示す図である。電子機器１００は、定期的に又は所定のタイミングで、高精度な配信時刻をタイムサーバ３００から取得することができる。なお、図１では、電子機器１００が１つだが、タイムサーバ３００と電子機器１００の関係は、１対Ｎの関係になることが多い。
【０００８】
しかしながら、タイムサーバ３００は一般的なコンピュータを実体とするので、コンピュータに不具合が生じたり、ユーザ操作により時刻を変更したりすると、タイムサーバ３００が配信する配信時刻に大きな誤差が含まれることになる。このような場合、電子機器１００では、電子機器１００が保持している内部時刻と、配信時刻のどちらが正しいかの判定が困難である。その場合、例えば警備信号の履歴や出入管理のログ等を正確な時刻で記録することができない。
【０００９】
そこで、電子機器１００には、受信時刻適用上限誤差が設定されている。図１（ｂ）は、内部時刻と受信時刻適用上限誤差の関係を模式的に示す図の一例である。内部時計の誤差は少しずつ大きくなるものであることから、電子機器１００は、内部時刻と受信した配信時刻の差が、受信時刻適用上限誤差以下なら、配信時刻が信頼できるとして内部時刻を配信時刻で校正する。これに対し、内部時刻と受信した配信時刻の差が受信時刻適用上限誤差を上回ると、電子機器１００は配信時刻が信頼できないとして、配信時刻を破棄する。
【００１０】
受信時刻適用上限誤差は、通常のタイムサーバ３００がどの程度の誤差を含みうるか（どの程度の誤差ならタイムサーバ３００に異常があると推定できるか）に応じて、電子機器１００のメーカやユーザが設定することができる。よって、タイムサーバ３００が正常であれば、電子機器１００にとって必要な精度が保証される。
【００１１】
しかしながら、受信時刻適用上限誤差が設定されていることは、タイムサーバ３００が正常でも電子機器１００の内部時刻が大きく狂う状況が生じた場合に、内部時刻が配信時刻により校正されないという問題を生じさせる。内部時刻が大きく狂う状況は、例えば次のような、バックアップ電池で駆動される時計が初期化される状況が挙げられる。
・電子機器のメイン電源がオフにされた場合（バックアップ電池なし）
・電子機器のメイン電源がオフにされた場合（バックアップ電池があっても劣化している場合）
・電子機器のメイン電源が長時間オフにされた場合
ある地域に停電が起こったり、ビルやマンションの漏電点検の際には、電子機器１００のメイン電源も長時間オフになる。このような場合、バックアップ電池のバッテリ切れとなってしまうと、メイン電源が復帰した際、電子機器１００の内部時刻が大きく狂う（初期状態に戻る）おそれがあるが、上述した受信時刻適用上限誤差が作用するため、内部時刻を配信時計で校正することができない。
【００１２】
このような内部時計が狂った場合では、電子機器１００がイベントの発生時刻として内部時刻を記録しても信頼性のない時刻情報となってしまうため、内部時刻を早期に修正する必要があるが、内部時刻と配信時刻の差が大きいため更新されない。そのため、停電のようにある地域の電子機器１００の内部時刻が狂うと、電子機器１００のメーカは各ユーザを訪問して電子機器１００のＲＴＣ（Real Time Clock）等の時計を設定する必要があるため手間となる。
【００１３】
バックアップ電池の性能を向上させることで問題を解決することも考えられるが、電子機器１００によっては耐用年数が１０年を超えるものも少なくなく、このような耐用年数を想定して劣化が少ないバックアップ電池を全ての電子機器１００に搭載することは現実的ではない。
【００１４】
本発明は、上記課題に鑑み、受信時刻適用上限誤差が設定可能な電子機器であって、時計が初期化されても配信時刻により内部時刻が校正可能なプログラム及び機器を提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明は、コンピュータに、内部時計から取得した内部時刻を受け継いで計時するステップと、前記内部時計が初期化されたか否かを判定するステップと、サーバから配信時刻を取得するステップと、記憶手段から上限時間と内部時刻を読み出すステップと、前記内部時刻と前記配信時刻の差が前記上限時間を上回っていない場合に、前記配信時刻で前記内部時刻を校正するステップと、前記内部時計が初期化された場合、前記差が前記上限時間を上回っているか否かを判定せずに、前記配信時刻により前記内部時刻を校正するステップと、を実行させることを特徴とするプログラムを提供する。
【発明の効果】
【００１６】
受信時刻適用上限誤差が設定可能な電子機器であって、内部時計が初期化されても配信時刻により内部時刻が校正可能なプログラム及び機器を提供することができる。
【図面の簡単な説明】
【００１７】
【図１】時刻配信システムの概略構成図の一例を示す図である。
【図２】本実施形態の電子機器の概略的な動作手順の一例を示す図である。
【図３】電子機器のハードウェア構成図の一例である。
【図４】時刻管理プログラムにユーザ又はメーカの技術者が設定する設定パラメータの一例を示す図である。
【図５】時刻管理プログラムを中心とした電子機器の機能ブロック図の一例である。
【図６】初期化判定部がフラグをオンする手順を示すフローチャート図の一例である。
【図７】ＳＮＴＰクライアントによる内部時刻の校正手順を示すフローチャート図の一例である。
【図８】時刻管理プログラムを中心とした電子機器の機能ブロック図の一例を示す（実施例２）。
【図９】初期化判定部が「受信時刻適用上限誤差」の設定値を変更する手順を示すフローチャート図の一例である。
【図１０】初期化判定部が「受信時刻適用上限誤差」の機能をオン／オフする手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【００１８】
以下、本発明を実施するための形態について図面を参照しながら説明する。
〔概略〕
図２は、本実施形態の電子機器の概略的な動作手順の一例を示す。本実施形態の電子機器は、内部時計が初期化されたか否かを判定することが特徴の１つである。内部時計としては例えばＲＴＣ（Real-Time Clock）が知られているので、以下、内部時計をＲＴＣとして説明する。
【００１９】
ＲＴＣが初期化されない場合は、従来と同様、内部時刻と受信した配信時刻の差が、受信時刻適用上限誤差を上回ると、配信時刻が信頼できないとして、配信時刻を破棄し、内部時刻をそのまま適用する。内部時刻と受信した配信時刻の差が、受信時刻適用上限誤差以下であると、配信時刻により内部時刻を校正する。
【００２０】
これに対し、ＲＴＣが初期化された場合、受信時刻適用上限誤差に関係なく、電子機器は配信時刻により内部時刻を校正する。ＲＴＣが初期化された場合、内部時刻と配信時刻の差が、受信時刻適用上限誤差を上回っていると考えられるが、内部時刻と配信時刻の差と受信時刻適用上限誤差の比較を行わないので、配信時刻により内部時刻を校正することができる。
【００２１】
したがって、高性能なバックアップ電池を搭載することなく、ＲＴＣが初期化された場合でも、簡易な構成でタイムサーバ３００の配信時刻で内部時刻を校正することができる。また、ＲＴＣが初期化されなければ、受信時刻適用上限誤差により内部時刻の精度を保証することができる。
【実施例１】
【００２２】
〔電子機器１００について〕
図１（ａ）に示したように、電子機器１００はタイムサーバ３００とネットワークを介して接続されている。ネットワークは、主にインターネットやＬＡＮ等の有線式のＩＰネットワークであるが、携帯電話網等、所定の通信事業者の無線通信ネットワークが組み合わされていてもよい。
【００２３】
電子機器１００が具体的にどのようなものかは特に制約されないが、例えば、空間センサ、Ｗｅｂカメラ、開閉センサ等に接続されるコントローラ、入退室記録装置、警備ロボット、又は、ＡＴＭ総合管理システム等が挙げられる。
【００２４】
センサのコントローラであればいつセンサが作動したか、入退室記録装置であればいつ社員が入退室したか、警備ロボットであればいつ不審者と遭遇したか、ＡＴＭ総合管理システムであればいつ入出金があったか、等を正確な時刻で記録することが大変重要になる。本実施例の時刻の校正方法は、これら電子機器１００の時刻の記録の証拠能力をよりいっそう高めることができる。
【００２５】
図３は、電子機器１００のハードウェア構成図の一例を示す。図３は、各電子機器１００に共通のコンピュータとしてのハードウェアを示すものであり、この他、各電子機器１００に特有の構成を有していてもよい。
【００２６】
電子機器１００は、それぞれバスで相互に接続されているＣＰＵ１０１、ＲＡＭ１０２、ＲＯＭ１０３、記憶媒体装着部１０４、通信装置１０５、入力装置１０６、表示制御部１０７、フラッシュメモリ１０８及びＲＴＣ１４０を有する。ＣＰＵ１０１は、ＯＳ（Operating  System）、スタートアッププログラム及びアプリケーションプログラム１３０をフラッシュメモリ１０８から読み出して実行することで種々の機能を提供すると共に、電子機器１００が行う処理を統括的に制御する。アプリケーションプログラム１３０は、電子機器１００により異なる。本実施例の電子機器１００は、フラッシュメモリ１０８に時刻管理プログラム１１０、電子機器１００のメーカ又はユーザが設定した電子機器１００の設定ファイル１２０等が記憶されている。なお、フラッシュメモリ１０８は不揮発メモリの一例であり、ＨＤＤ等でもよい。
【００２７】
時刻管理プログラム１１０は、記憶媒体１１１に記憶された状態で配布されてもよいし、ネットワークを介して接続された不図示のコンピュータからダウンロードされ、フラッシュメモリ１０８にインストールされてもよい。
【００２８】
ＲＡＭ１０２はＣＰＵ１０１がアプリケーションプログラム１３０や時刻管理プログラム１１０を実行する際に必要なデータを一時保管する作業メモリ（主記憶メモリ）になり、ＲＯＭ１０３には出荷時に初期設定されたデータが記憶されている。
【００２９】
記憶媒体装着部１０４は記憶媒体１１１が着脱可能に構成されており、記憶媒体１１１に記録されたアプリケーションプログラム１３０や時刻管理プログラム１１０を読み込み、フラッシュメモリ１０８を更新する際に使用される。なお、記憶媒体１１１は、例えば、ＳＤカードやＵＳＢメモリなど不揮発性のメモリである。
【００３０】
通信装置１０５は、インターネットなどのネットワーク１３に接続するためのインターフェイス（例えば、イーサネット（登録商標）カード）であり、主に物理層とデータリンク層に対応する処理を提供する。なお、電子機器１００が無線でタイムサーバ３００と接続する場合、通信装置１０５はＧＳＭやＣＤＭＡ（携帯電話網）、IEEE 802.11a／g／n（無線ＬＡＮ）、又は、ＩＥＥＥ802.16e（ＷｉＭＡＸ）等の規格でデータ通信を提供する通信事業者のデータ通信端末である。
【００３１】
入力装置１０６は、タッチパネル、ハードキー、テンキー等、メーカの技術者やユーザの様々な操作指示を受け付けるユーザインターフェイスである。また、表示制御部１０７は、アプリケーションプログラム１３０や時刻管理プログラム１１０が指示する画面情報に基づき所定の解像度や色数等で液晶などのディスプレイ１０９の描画を制御する。
【００３２】
また、電子機器１００は時計として一般的なＲＴＣ１４０を有する。ＲＴＣ１４０は、計時専用のＩＣで、電子機器１００のメイン電源がオフの際、バッテリ１５０の電力を利用して内部時刻の計時動作を継続する。電子機器１００は、メイン電源がオンになると、ＲＴＣ１４０から時刻を取得して、その後は高振動数の水晶発振器により内部時刻の計時を受け継ぐ。
【００３３】
バッテリ１５０はそれほど大容量ではないので、建物の電気設備点検や工事に伴う長期停電などがあれば電子機器１００のメイン電源のオフの期間が長くなり、ＲＴＣ１４０がバックアップできず初期化されてしまう。また、バッテリ１５０は２次電池なので充放電を繰り返すと劣化し、ＲＴＣ１４０が計時できる時間が短くなる。このような理由で初期化されたＲＴＣ１４０は、初期状態の時刻として設定された初期時刻（例えば、2000年1月1日）を示すようになる。このため、電子機器１００がＲＴＣ１４０から時刻を取得して計時を受け継いでも、内部時刻が大きく狂ったままとなってしまう。
【００３４】
〔時刻管理プログラム１１０の設定パラメータ〕
図４は、ディスプレイ１０９に表示された、時刻管理プログラム１１０に設定パラメータを設定するためのパラメータ設定画面の一例を示す図である。この画面はユーザ又はメーカの技術者が入力装置１０６から所定の操作を入力することで表示される。ディスプレイ１０９を搭載することができない電子機器１００では、不図示の端末を電子機器１００に接続し、該端末から同じようにして設定パラメータを設定することができる。
【００３５】
「タイムサーバアドレス」はタイムサーバ３００のＩＰアドレスである。「時刻取得時刻」は時刻管理プログラム１１０がタイムサーバ３００に配信時刻を要求する時刻であり、「定期時間」は時刻管理プログラム１１０がタイムサーバ３００に配信時刻を要求する時間間隔である。「時刻取得時刻」と「定期時間」は少なくとも一方の選択ボックス２０１，２０２にチェックマークを設定することで選択できるようになっている。「オフセット時間」は、配信時刻に対するオフセットを意味し、内部時刻１７は「配信時刻＋オフセット時間」により校正される。オフセットを設定することで、通信時間等を考慮してより精度よく内部時刻の校正が可能になる。「受信時刻適用上限誤差」は、上記のように、配信時刻の信頼性を判断するための時間である。「起動時に時刻取得」の選択ボックス２０３にチェックマークを設定すると、電子機器１００の起動時に時刻管理プログラム１１０がタイムサーバ３００にアクセスするように設定することができる。  
これらの設定パラメータは設定ファイル１２０に登録され、フラッシュメモリ１０８などの不揮発メモリに記憶されており、時刻管理プログラム１１０は、設定ファイル１２０に従って時刻を管理する。
【００３６】
〔時刻管理プログラム１１０の機能〕
図５は、時刻管理プログラム１１０を中心とした電子機器１００の機能ブロック図の一例を示す。時刻管理プログラム１１０は、初期化判定部１１、フラグ１６、ＳＮＴＰクライアント１３及び計時部１２を有する。図５には、その他、通信のためのプロトコルスタック１４、デバイスドライバ１５、及び、通信装置１０５を図示した。
【００３７】
ＳＮＴＰクライアント１３より下位の層は公知の構成である。本実施例では時刻校正のプロトコルとしてＳＮＴＰを例に説明するが、ＮＴＰでもよいし、ＴＩＭＥやＤＡＹＴＩＭＥと呼ばれるプロトコルを用いてもよい。また、必ずしも公知のプロトコルを利用しなくてもよい。  
ＳＮＴＰクライアント１３が配信時刻を要求する際、ＳＮＴＰクライアント１３は、要求パケットを生成し、ソケットインターフェイスでＴＣＰ（ＵＤＰ）／ＩＰ等のプロトコルスタック１４を呼び出す。プロトコルスタック１４は通信装置１０５のデバイスドライバ１５を呼び出し、通信装置１０５から要求パケットを送信する。配信時刻の受信時、デバイスドライバ１５は通信装置１０５から割り込みを受け付け、通信装置１０５が自身のバッファに記憶した応答パケットを読み込みＲＡＭ１０２に記憶する。デバイスドライバ１５は、応答パケットのアドレスをプロトコルスタック１４に渡すので、ＳＮＴＰクライアント１３はプロトコルスタック１４がプロトコル処理した応答パケットを取得する。  
図５には、要求パケットと応答パケットを示した。要求パケットと応答パケットのフォーマットは共通なので、図では１つのフォーマットで兼用した。ＳＮＴＰの要求パケットでは各内容に「LI＝０ ： VN＝１〜４ ： MODE＝３ ： 階層＝０：ポーリング間隔＝０ ： 精度＝０ ： ルート遅延＝０  ： ルート拡散＝０ ： 参照識別子＝０：参照タイムスタンプ＝０： 開始タイムスタンプ＝０： 受信タイムスタンプ＝０ ： 送信タイムスタンプ＝送信時刻： 鍵識別子（任意）：メッセージダイジェスト（任意） 」が設定される。
【００３８】
ＳＮＴＰの応答パケットでは各内容に「LI＝０or３ ： VN＝要求パケットからコピー： MODE＝２or４ ： 階層＝１〜０：ポーリング間隔＝要求パケットからコピー ： 精度＝タイムサーバの精度 ： ルート遅延＝０  ： ルート拡散＝０ ： 参照識別子＝参照源識別コード：参照タイムスタンプ＝最後に時間を合わせた時刻： 開始タイムスタンプ＝要求パケットの送信タイムスタンプからコピー： 受信タイムスタンプ＝タイムサーバの受信時間 ： 送信タイムスタンプ＝サーバの送信時刻： 鍵識別子（任意）：メッセージダイジェスト（任意） 」が設定される。
【００３９】
応答パケットの「送信タイムスタンプ」がタイムサーバ３００が配信した配信時刻である。ＳＮＴＰクライアント１３は、応答パケットから「送信タイムスタンプ」を取り出し、内部時刻１７を校正する。
【００４０】
続いて、時刻管理プログラム１１０について説明する。上述したように、電子機器１００のメイン電源がオフからオンに切り替わると、計時部１２はＲＴＣ１４０から時刻を取得して、以降は内部時刻１７として計時を受け継ぐ。内部時刻１７は、例えばＲＡＭ１０２に記憶されており、計時部１２が内部時刻１７を更新する毎に上書きされる。
【００４１】
そして、ＳＮＴＰクライアント１３がタイムサーバ３００から配信時刻を取得すると、ＳＮＴＰクライアント１３はフラグ１６及び設定ファイル１２０を参照して、内部時刻１７を配信時刻で校正するか否かを判定する。設定ファイル１２０を参照するのは、従来と同様に、オフセット時間や受信時刻適用上限誤差を使用するためであるが、本実施例ではＳＮＴＰクライアント１３がフラグ１６を参照する点に特徴がある。
【００４２】
フラグ１６は、ＲＴＣ１４０が初期化された場合にオン（＝１）になり、フラグ１６がオンの状態でＳＮＴＰクライアント１３が内部時刻１７を配信時刻で校正するとオフ（＝０）になる。フラグ１６は、例えばフラッシュメモリ１０８又はＲＡＭ１０２に記憶される。
【００４３】
初期化判定部１１は、ＲＴＣ１４０が初期化されたか否かを判定し、ＲＴＣ１４０が初期化された場合に、フラグ１６をオンにする。ＲＴＣ１４０が初期化されたことを検出する方法はいくつかある。
【００４４】
例えば、ＳＮＴＰクライアント１３は、過去の数個の応答パケットをフラッシュメモリ１０８に記憶している。これは、タイムサーバ３００へのアクセス履歴の記録を取っておき、後の検証を可能にするためや、設定ファイル１２０にて「定期時間」が有効に設定されている場合に定期的に応答パケットを取得するためである。
【００４５】
ＲＴＣ１４０が初期化されると、ＲＴＣ１４０は予め設定されている初期時刻を示すようになる。この初期時刻は、最新のアクセス履歴の時刻よりも必ず古いとしてよい。したがって、初期化判定部１１は、フラッシュメモリ１０８から最新のアクセス履歴の時刻を読み出し、内部時刻と比較することで、ＲＴＣ１４０が初期化されたか否かを判定することができる。
【００４６】
また、ＲＴＣ１４０の初期時刻は既知である。したがって、最新のアクセス履歴の時刻を参照しなくても、内部時刻１７が初期時刻＋α以内であれば、ＲＴＣ１４０が初期化された直後であると推定できる。「α」は電子機器１００のメイン電源がオンになってから初期化判定部１１が初期化の有無を判定するまでの時間より多少長めであればよい。
【００４７】
初期化判定部１１は、このようにしてＲＴＣ１４０の初期化の有無を判定し、ＲＴＣ１４０が初期化されたと判定すると、フラグ１６をオンにする。ＳＮＴＰクライアント１３は、フラグ１６がオンの場合、設定ファイル１２０の受信時刻適用上限誤差と内部時刻１７の差を考慮することなく、配信時刻により内部時刻１７を校正する。また、ＳＮＴＰクライアント１３は、フラグ１６のオン／オフを参照しているので、フラグ１６のオンの状態で、配信時刻により内部時刻１７を校正するとフラグ１６をオフにする。
【００４８】
こうすることで、ＲＴＣ１４０が初期化され、内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回っても、ＳＮＴＰクライアント１３は、内部時刻１７と配信時刻の差と受信時刻適用上限誤差の比較を行わないので、配信時刻により内部時刻１７を確実に校正することができる。
【００４９】
〔動作手順〕
図６（ａ）は、初期化判定部１１がフラグ１６をオンする手順を示すフローチャート図の一例である。初期化は電子機器１００のメイン電源がオフの状態で生じ、初期化の有無はメイン電源が供給されないと判定できないので、図６（ａ）のフローチャート図はメイン電源がオンになるとスタートする。
【００５０】
メイン電源がオンになると計時部１２を含む時刻管理プログラム１１０が実行され、計時部１２がＲＴＣ１４０から時刻を取得する（Ｓ１０）。計時部１２はこのまま内部時刻１７の計時を受け継ぐ。
【００５１】
次に、初期化判定部１１はＲＴＣ１４０が初期化されか否かを判定する（Ｓ２０）。初期化の判定方法はどのような方法でもよい。
【００５２】
ＲＴＣ１４０が初期化されていた場合（Ｓ２０のＹｅｓ）、初期化判定部１１はフラグ１６をオンにする（Ｓ３０）。
【００５３】
図7は、ＳＮＴＰクライアント１３による内部時刻１７の校正手順を示すフローチャート図の一例である。
【００５４】
ＳＮＴＰクライアント１３は、設定ファイル１２０の設定に従って、内部時刻１７がある時刻になると（狂っていてもよい）又は定期的にタイムサーバ３００に要求パケットを送信し、受信した応答パケットから配信時刻を取得する（Ｓ１１０）。
【００５５】
ＳＮＴＰクライアント１３はフラグ１６がオンか否かを判定する（Ｓ１２０）。フラグ１６がオンでない場合（Ｓ１２０のＮｏ）、従来と同様に、受信時刻適用上限誤差に基づき、内部時刻１７を校正するか否かを判定する。このため、ＳＮＴＰクライアント１３はＲＡＭ１０２から内部時刻１７を読み出し、内部時刻１７と配信時刻の差を算出する（Ｓ１５０）。また、ＳＮＴＰクライアント１３は設定ファイル１２０から受信時刻適用上限誤差を読み出す（Ｓ１６０）。
【００５６】
そして、ＳＮＴＰクライアント１３は、内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回った否かを判定する（Ｓ１７０）。内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回る場合（Ｓ１７０のＹｅｓ）、配信時刻の信頼性が低いとして、ＳＮＴＰクライアント１３は配信時刻を破棄する（Ｓ１８０）。すなわち、ＳＮＴＰクライアント１３は内部時刻１７を校正しない。
【００５７】
内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回らない場合（Ｓ１７０のＮｏ）、配信時刻の信頼性が高いとして、ＳＮＴＰクライアント１３は内部時刻１７を配信時刻で校正する（Ｓ１９０）。
【００５８】
ステップＳ１２０に戻り、フラグ１６がオンである場合（Ｓ１２０のＹｅｓ）、ＲＴＣ１４０が初期化されたことになるので、ＳＮＴＰクライアント１３は内部時刻１７を配信時刻で校正する（Ｓ１３０）。こうすることで、初期化により大きく狂った内部時刻１７を校正することができる。
【００５９】
ついで、ＳＮＴＰクライアント１３はフラグ１６をオフにする（Ｓ１４０）。したがって、内部時刻１７が校正された後は、内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回らない範囲で、内部時刻１７を校正できる。
【００６０】
以上説明したように、本実施例の時刻管理プログラム１１０は、受信時刻適用上限誤差を利用して内部時刻１７を高精度に校正でき、かつ、ＲＴＣ１４０が初期化されても、内部時刻１７が大きな誤差を含んだままとなることを確実に防止することができる。
【００６１】
〔変形例〕
図６（ａ），（ｂ）の手順では、フラグ１６がオンになった後、ＳＮＴＰクライアント１３がタイムサーバ３００から配信時刻を取得するまでに待機時間が生じてしまう。仮に、ＳＮＴＰクライアント１３がタイムサーバ３００から配信時刻を取得するまでに、イベントが発生した場合は内部時刻１７の証拠能力が低下してしまう。
【００６２】
設定ファイル１２０における「起動時に時刻取得」の選択ボックス２０３にチェックマークが設定されている場合、フラグ１６のオンから短い待機時間で、ＳＮＴＰクライアント１３が配信時刻を取得できる。したがって、初期化判定部１１の判定の方が、ＳＮＴＰクライアント１３によるタイムサーバ３００からの配信時刻の取得よりも早い場合は、「起動時に時刻取得」がオンとされていることが有効である。
【００６３】
しかし、「起動時に時刻取得」が有効であるために、初期化判定部１１の判定よりも、ＳＮＴＰクライアント１３によるタイムサーバ３００からの配信時刻の取得の方が早い場合、配信時刻が破棄されてしまう（まだフラグがオンでないため）。この場合、次回の配信時刻の取得まで、待機時間が生じてしまう。
【００６４】
そこで、図６（ａ），（ｂ）の手順を連続して（待機時間を最少にして）実行することが好適となる。図７は、図６（ａ）の変形例のフローチャート図の一例である。ステップＳ１０〜Ｓ３０までの手順は図６（ａ）と同じであるが、図７ではフラグ１６がオンになった後、初期化判定部１１が、強制的に、ＳＮＴＰクライアント１３に配信時刻を取得させる（Ｓ４０）。
【００６５】
したがって、ＲＴＣ１４０が初期化されたことを検出し、フラグ１６がオンになった後、ほとんど待機時間がない状態で、ＳＮＴＰクライアント１３が配信時刻を取得できる。すなわち、ステップＳ４０の後、図７のステップＳ１１０以降のルーチンが実行され、ＳＮＴＰクライアント１３は内部時刻１７を配信時刻で校正することができる（Ｓ１３０）。
【実施例２】
【００６６】
実施例１では、ＲＴＣ１４０が初期化されたことをＳＮＴＰクライアント１３に通知する手段としてフラグ１６を利用した。本実施例では、フラグ１６を用いずに設定ファイル１２０を利用することで、ＳＮＴＰクライアント１３のロジックの修正を最小限に抑制できる時刻管理プログラム１１０について説明する。
【００６７】
図８は、時刻管理プログラム１１０を中心とした電子機器１００の機能ブロック図の一例を示す。図８において図５と同一部には同一の符号を付しその説明は省略する。図８の初期化判定部１１は、ＲＴＣ１４０が初期化されたか否かを判定すると共に、ＲＴＣ１４０が初期化された場合、設定ファイル１２０の「受信時刻適用上限誤差」に設定可能な最大値を設定する。設定可能な最大値は、時刻管理プログラム１１０の設計によるが、例えば１００年程度である。
【００６８】
「受信時刻適用上限誤差」に設定可能な最大値が設定されていれば、ＲＴＣ１４０が初期化されても、内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回らないとしてよい。したがって、ＲＴＣ１４０が初期化された場合、フラグ１６を用いることなく、ＳＮＴＰクライアント１３が配信時刻で内部時刻１７を校正することができる。すなわち、ＳＮＴＰクライアント１３のロジックを修正する必要がない。
【００６９】
なお、「受信時刻適用上限誤差」の設定値は、ユーザ等が設定した「元の値」に戻す必要があるので、初期化判定部１１は、「受信時刻適用上限誤差」に「設定可能な最大値」を設定する前に、「元の値」を退避しておく。
【００７０】
図９（ａ）は、初期化判定部１１が「受信時刻適用上限誤差」の設定値を変更する手順を示すフローチャート図の一例である。ステップＳ１０〜Ｓ２０までの手順は図６（ａ）と同じであるが、図９（ａ）では、初期化判定部１１が、ＲＴＣ１４０が初期化されたと判定すると、設定ファイル１２０の「受信時刻適用上限誤差」に設定可能な最大値を設定する（Ｓ３５）。
【００７１】
そして、初期化判定部１１は、強制的に、ＳＮＴＰクライアント１３に配信時刻を取得させる（Ｓ４０）。これにより、図９（ｂ）に示す、ＳＮＴＰクライアント１３の処理手順が実行される。図示するように、図９（ｂ）の手順は、従来のＳＮＴＰクライアント１３の処理手順と同じである。初期化判定部１１は、ＳＮＴＰクライアント１３が内部時刻１７を校正している間、待機している。
【００７２】
ＳＮＴＰクライアント１３は、図９（ｂ）の手順に従い、タイムサーバ３００に要求パケットを送信し、受信した応答パケットから配信時刻を取得する（Ｓ１１０）。次に、ＳＮＴＰクライアント１３はＲＡＭ１０２から内部時刻１７を読み出し、内部時刻１７と配信時刻の差を算出する（Ｓ１５０）。また、ＳＮＴＰクライアント１３は設定ファイル１２０から受信時刻適用上限誤差を読み出す（Ｓ１６０）。
【００７３】
そして、ＳＮＴＰクライアント１３は、内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回った否かを判定する（Ｓ１７０）。内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回る場合（Ｓ１７０のＹｅｓ）、配信時刻の信頼性が低いとして、ＳＮＴＰクライアント１３は配信時刻を破棄する（Ｓ１８０）。すなわち、ＳＮＴＰクライアント１３は内部時刻１７を校正しない。
【００７４】
内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回らない場合（Ｓ１７０のＮｏ）、配信時刻の信頼性が高いとして、ＳＮＴＰクライアント１３は内部時刻１７を配信時刻で校正する（Ｓ１９０）。図９（ａ）により「受信時刻適用上限誤差」に設定可能な最大値が設定されているので、ＳＮＴＰクライアント１３は内部時刻１７を配信時刻で校正する。
【００７５】
図９（ａ）に戻り、初期化判定部１１は、ＳＮＴＰクライアント１３が内部時刻１７を配信時刻で校正する充分な時間を待機した後（Ｓ５０のＹｅｓ）、設定ファイル１２０の「受信時刻適用上限誤差」に元の値を設定する（Ｓ６０）。こうすることで、ＲＴＣ１４０が初期化され内部時刻１７が校正された後は、内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回らない範囲で、内部時刻１７を校正できる。
【００７６】
なお、ステップＳ５０の待機時間は、ＳＮＴＰクライアント１３が次回、タイムサーバ３００に配信時刻を要求するまでの時間であればよいので、ＳＮＴＰクライアント１３が図９（ｂ）の処理を終了するまでの充分な時間を待機時間にすることができる。
【００７７】
また、ＳＮＴＰクライアント１３が内部時刻１７の校正が終了したことを、初期化判定部１１に通知するように設計してもよい。初期化判定部１１は、通知を受けることで、設定ファイル１２０の「受信時刻適用上限誤差」に元の値を設定できる。
【００７８】
〔「受信時刻適用上限誤差」の機能をオフにする〕
また、時刻管理プログラム１１０によっては、ユーザが「受信時刻適用上限誤差」の機能をオン／オフすることができる。この場合、「受信時刻適用上限誤差」に設定可能な最大値を設定する場合と同様の効果が得られる。
【００７９】
図１０（ａ）は、初期化判定部１１が「受信時刻適用上限誤差」の機能をオン／オフする手順を示すフローチャート図の一例である。ステップＳ１０〜Ｓ２０までの手順は図９（ａ）と同じであるが、図１０（ａ）では、初期化判定部１１が、ＲＴＣ１４０が初期化されたと判定すると、「受信時刻適用上限誤差」の機能をオフに設定する（Ｓ３７）。
【００８０】
そして、初期化判定部１１は、強制的に、ＳＮＴＰクライアント１３に配信時刻を取得させる（Ｓ４０）。ＳＮＴＰクライアント１３は、図１０（ｂ）の手順に従い、タイムサーバ３００に要求パケットを送信し、受信した応答パケットから配信時刻を取得する（Ｓ１１０）。
【００８１】
図１０（ｂ）では、「受信時刻適用上限誤差」の機能はオフなので、ＲＴＣ１４０が初期化されたため内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回っていても、ＳＮＴＰクライアント１３は内部時刻１７を配信時刻で校正する（Ｓ１９０）。
【００８２】
図１０（ａ）に戻り、初期化判定部１１は、ＳＮＴＰクライアント１３が内部時刻１７を配信時刻で校正する充分な時間を待機した後（Ｓ５０のＹｅｓ）、「受信時刻適用上限誤差」の機能をオンにする（Ｓ６２）。また、ＳＮＴＰクライアント１３が内部時刻１７の校正が終了したことを、初期化判定部１１に通知するように設計してもよい。図１０（ｂ）の場合も、ＳＮＴＰクライアント１３のロジックは修正の必要がない。このようにして内部時刻１７が校正された後は、内部時刻１７と配信時刻の差が受信時刻適用上限誤差を上回らない範囲で、内部時刻１７を校正できる。
【００８３】
以上説明したように、本実施例の時刻管理プログラム１１０は、フラグ１６を用いずに、受信時刻適用上限誤差を利用して内部時刻１７を高精度に校正でき、かつ、ＲＴＣ１４０が初期化されても、内部時刻１７が狂ったままとなることを確実に防止することができる。また、ＳＮＴＰクライアント１３のロジックの修正を最小限にすることができる。
【符号の説明】
【００８４】
１１      初期化判定部
１２      計時部
１３      ＳＮＴＰクライアント
１４      プロトコルスタック
１５      デバイスドライバ
１６      フラグ
１７      内示時刻
１００    電子機器
１１０    時刻管理プログラム
１２０    設定ファイル
１４０    内部時計（ＲＴＣ）
【図１】
2011214937.tif 000003
【図２】
2011214937.tif 000004
【図３】
2011214937.tif 000005
【図４】
2011214937.tif 000006
【図５】
2011214937.tif 000007
【図６】
2011214937.tif 000008
【図７】
2011214937.tif 000009
【図８】
2011214937.tif 000010
【図９】
2011214937.tif 000011
【図１０】
2011214937.tif 000012