(57)【特許請求の範囲】
【請求項１】
処理装置に内蔵されるリアルタイムクロックの温度に起因する時間誤差の補正方法であって、
リアルタイムクロック近辺の内部温度を測定するとともに、処理装置外の外部温度を測定し、
処理装置の電源が投入されているときには、上記内部温度に基づき、リアルタイムクロックの時間誤差の補正値を求めて、リアルタイムクロックの誤差補正を行い、
処理装置の電源切断時には、上記内部温度センサにより測定される内部温度と、処理装置外の温度を測定する外部温度センサにより測定される外部温度の差から、装置内外の温度が同一となる温度と経過時間の積の積算値を求め、
装置電源切断中の時間、上記積算値、および、上記外部温度の値から、処理装置の電源切断中における補正値を算出し、電源切断中、該補正値によりリアルタイムクロックの誤差補正を行う
ことを特徴とするリアルタイムクロックの温度補正方法。
【請求項２】
リアルタイムクロックを備えた処理装置であって、
上記処理装置は、温度に起因するリアルタイムクロックの時間誤差を補正する補正値を求める補正値算出手段を備え、
上記補正値算出手段は、上記処理装置の電源が投入されている時には、リアルタイムクロック近辺の温度を測定する内部温度センサにより測定される装置内温度に基づき、第１の補正値を求め、
通常処理が終了し、上記処理装置の電源を切断する際には、上記内部温度センサにより測定される内部温度と、処理装置外の温度を測定する外部温度センサにより測定される外部温度の差から、装置内外の温度が同一となる温度と経過時間の積の積算値を求め、
装置電源切断中の時間、上記積算値、および、上記外部温度の値から、処理装置の電源切断中における補正値を算出し、該補正値に基づき第２の補正値を求め、
上記リアルタイムクロックは、上記処理装置の電源が投入されている時、上記第１の補正値に基づき時間誤差を補正し、装置電源切断中、上記第２の補正値に基づき時間誤差を補正する
ことを特徴とするリアルタイムクロックを備えた処理装置。
【請求項３】
リアルタイムクロックを備えた処理装置であって、
上記リアルタイムクロックは、内蔵するカウント手段による基本クロックのカウント数を増減することにより装置製造時の周波数誤差に起因する時間誤差を補正するカウント数補正手段と、該カウント数の補正値を記憶する記憶手段を備え、
上記処理装置は、温度に起因するリアルタイムクロックの時間誤差を補正するための補正値を求め、該補正値と、予め設定された周波数誤差を補正するための補正値に基づき、上記記憶手段に記憶された補正値を書き換える補正値算出手段を備え、
上記補正値算出手段は、上記処理装置の電源が投入されている時には、リアルタイムクロック近辺の温度を測定する内部温度センサにより測定される装置内温度に基づき、リアルタイムクロックのカウント数を補正するための第１の補正値を求め、
また、上記処理装置の電源を切断する際には、上記内部温度センサにより測定される内部温度と、処理装置外の温度を測定する外部温度センサにより測定される外部温度の差から、装置内外の温度が同一となる温度と経過時間の積の積算値を求め、
装置電源切断中の時間、上記積算値、および、上記外部温度の値から、処理装置の電源切断中における補正値を算出し、該算出された補正値と上記記憶装置に記憶された装置製造時に設定された補正値に基づき、リアルタイムクロックのカウント数を補正するための第２の補正値を求め
上記リアルタイムクロックは、上記処理装置の電源が投入されている時、上記第１の補正値によりリアルタイムクロックのカウント数の補正を行い、装置電源切断中、第２の補正値によりリアルタイムクロックのカウント数の補正を行う
ことを特徴とするリアルタイムクロックを備えた処理装置。
【請求項４】
リアルタイムクロックの温度に起因する時間誤差を補正する補正値を算出するためのプログラムであって、
上記プログラムは、上記処理装置の電源が投入されている時には、リアルタイムクロック近辺の温度を測定する内部温度センサにより測定される装置内温度に基づき補正値を算出し、該算出された補正値と、予め設定された周波数誤差を補正するための補正値に基づき、リアルタイムクロックのカウント数を補正するための第１の補正値を求め、リアルタイムクロックに設定する処理と、
上記処理装置の電源を切断する際には、上記内部温度センサにより測定される内部温度と、処理装置外の温度を測定する外部温度センサにより測定される外部温度の差から、装置内外の温度が同一となる温度と経過時間の積の積算値を求め、装置電源切断中の時間、上記積算値、および、上記外部温度の値から、処理装置の電源切断中における補正値を算出し、該算出された補正値と予め設定された周波数誤差を補正するための補正値に基づき、リアルタイムクロックのカウント数を補正する第２の補正値を求め、リアルタイムクロックに設定する処理をコンピュータに実行させる
ことを特徴とするリアルタイムクロックの温度に起因する時間誤差を補正する補正値を算出するためのプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パソコン、携帯電話、複写機、ＰＤＡ、サーバ等の各種装置に内蔵され、且つ該装置の動作中にプログラムにより、温度に起因する時間誤差をダイナミックに補正することができるリアルタイムクロック（以下ＲＴＣという）の温度補正方法および上記ＲＴＣを備えた処理装置に関するものである。
【０００２】
【従来の技術】
図１０にＲＴＣを使用する一般的なシステムの構成を示す。
同図において、１０はＲＴＣ制御部、１１はＣＰＵから構成される処理部、１２はメモリ部、１３はファイル部、１４はそれぞれの装置に応じた制御を行う各種制御部、１５は装置電源部、１６はＲＴＣをバッテリバックアップするためのバッテリである。
ＲＴＣ制御部１０は水晶振動子、ＲＴＣ等を内蔵し、水晶振動子（例えば３２．７６８ｋＨｚで発振）の出力周波数をカウントして時刻情報を出力する。
上記ＲＴＣは多くの装置に採用されており、その構成は多様であるがＲＴＣに関する構成には大きな差がなく、図１０に示すようにＣＰＵによりアクセス可能となっている点、バッテリバックアップされている点等共通の構成を備えている。
【０００３】
ＲＴＣの時間誤差の発生する大きな要因には、ハードウェアの特性差（水晶振動子および静電容量等) によるものと、温度変化によるものがある。
ハードウェアの特性差としては、個々の部品及び周辺回路で定まるものであり、例えば端末装置等で一般的に使用されている時計用の振動子は３２．７６８ＫＨｚの周波数品が良く採用されるが、これは１秒間に３２７６８回をカウントするのが基準（誤差０）であるのに対し、実際にはその部品固有の特性差、周辺回路の静電容量差等により、無補正の状態では例えば３２７６８±１Ｈｚ（＝３０．５ｐｐｍ）程度の誤差が発生してしまうものである。
もう一つの誤差の要因としては、温度変動による誤差がある。
一般的に水晶振動子は常温（２５°Ｃ近辺）で最も高い周波数になり、ここから±１０°Ｃ離れると３．５ｐｐｍ程度の割合で誤差（遅れ）が発生すると言われており、装置の使用環境あるいは装置内で受ける温度の影響によっては大きな誤差要因となる。
【０００４】
従来、これら誤差の補正方法としては以下の手段を用いていた。
（１）一番多いと思われる手段としては、製造工場で出荷時のみ調整する方法である。これは主にハードウェアの特性差による誤差を調整するものであり、ＲＴＣ周辺回路に同時に付加している可変コンデンサ等により、可能な限り基本周波数に近づけて（例えば３２．７６８００００ｋＨｚ程度まで）調整して、更にペイントで物理的にロックするものである。
図１１に水晶振動子の出力周波数そのものを可変コンデンサにより補正する方式の概念図を示す。本方式は水晶振動子及びＲＴＣの特性からくる周波数のズレ（誤差）を、容量性の特性を合わせることにより、標準周波数３２７６８Ｈｚに可能な限り近づけるものである。
同図において、２１は水晶振動子、２２はＲＴＣ部であり、ＲＴＣ部２２は水晶振動子２１の出力周波数をカウントし、時間情報を出力する。
水晶振動子２１の出力にはコンデンサＣ１と可変コンデンサＣＶ１が接続されており、出荷時、周波数測定用端子にて出力周波数を測定しながら、上記可変コンデンサＣＶ１を調整し、最適な周波数に合わせた後に可変コンデンサＣＶ１をペイントにて固定する。本補正作業は装置の製造過程において1 回のみ行われ、以降の変更は出来ない。また本設定作業は装置の標準的な温度（２０〜２５°Ｃ）環境で行われるため、装置出荷後の運用環境の温度が異なると誤差が大きくなる欠点がある。
この対応として定期保守時（例えば１年毎) にマニュアルによる時刻の書き替えによる補正を行っていた。すなわち、出荷後の補正は１〜２年毎の定期保守時に、ＲＴＣの時計情報を直接書き替えて補正するのが一般的な方法であった。
この方式は単純で良いが、製品出荷後に調整変更することは困難であり、環境温度の変化には容易に対応出来ない。このため、比較的誤差が大きくても許されるような用途範囲で使用されていた。
【０００５】
（２）従来使用されている別の補正方法は、水晶振動子の出力周波数はそのままとし、ＲＴＣ内でカウント数を調整し補正する方法である。
ＲＴＣの中には、上記ＲＴＣ内でカウント数を調整する機能を備えたものもあり、このような機能を備えたＲＴＣにより、基本クロックの単位時間当たり（例えば１秒間）のカウント数そのものを増減して補正する。例えば、３２７６８Ｈｚの基準に対し、３２７６８．１Ｈｚ（＝＋３．０５ｐｐｍ）の誤差があれば、ＲＴＣ内で１０秒に１回、カウント値を増やし、３２７９６回カウントして１秒を刻むようにする。
図１２に上記のようにＲＴＣ内でカウント数を調整し補正する方式の構成を示す。図１１と異なるところは、水晶振動子の補正用の可変コンデンサＣＶ１が削除された一方ＲＴＣ内に補正回路が追加された点である。
図１１に示したものが、水晶振動子の特性を変えて出力周波数そのものを補正しようとしていたのに対し、図１２のものでは、出力周波数をカウントする位置に補正回路を追加して、一定周期間あたりの周波数のカウント数を調整して補正する。そして、図１１の可変コンデンサによる補正に相当する補正値は、工場製造時に上位より設定され、ＲＴＣの時計情報と同様にバッテリバックアップされている。
【０００６】
同図において、２１は水晶振動子、２２はＲＴＣ部であり、ＲＴＣ部２２はクロックドライバ２２ａと、クロックドライバ２２ａが出力するクロックをカウントする秒桁上げカウンタ２２ｂと、補正回路２２ｃと、秒桁上げカウンタ２２ｂが出力する１Ｈｚのクロックをカウントし、時刻情報を出力する時刻カウンタ２２ｄから構成される。
補正回路２２ｃは、予め工場調整作業で設定された補正値を保持する補正保持レジスタ２２ｄと、この補正値を秒桁上げカウンタ２２ｂに反映させるためのロード制御部２２ｅを備え、ロード制御部２２ｅは、例えば１０秒毎に出力される時刻カウンタ２２ｄのパルス信号に応じて、桁上げカウンタ２２ｂに補正値をロードする。
この場合も工場出荷時に基本周波数に対する誤差より補正値を算出し、バッテリバックアップのＲＴＣに設定して出荷していた。
このような補正方法もハードウェア固有の誤差については考慮しているものの、製品出荷以降の温度環境変動による誤差については考慮されておらず、定期的な補正作業が必要となっていた。
【０００７】
（３）更に従来方式でも一歩進んだ補正方式として、温度センサを搭載し、プログラムにより、一定周期で上記温度センサの値を読み取り、その温度情報より予め計算された補正値に変換してＲＴＣより読み取った時刻情報を変更または時刻情報を直接書き替える方式がある。
これはプログラムが、ＲＴＣより読み取った時間情報（秒、分、時間、日、月、年）を、温度センサで読み取った温度情報から予め定められた方法により補正値に変換して、直接時間情報の変更（またはＲＴＣの書き替え) を行うものである。
しかしながらこの方式は温度補正のみであり、前記工場製造時のハードウェアの特性差の補正機能及び作業は省略できない。またプログラムによる時間情報（一般的には秒単位）の直接変更方式であることから、補正回数が増えるほど誤差が大きくなる。すなわち、補正の単位が少なくとも秒単位であることから、１回の設定変更時に最大で１秒の誤差が発生することである。そして補正の繰り返しにより、ＲＴＣの書き替えを重ねると誤差が大きく膨らんでしまうことになる。
また、更なる欠点は補正作業をプログラムにより行うため、電源切断時には補正できない点である。勿論、補正プログラム用のＣＰＵ自体をバッテリバックアップすれば、電源切断中も補正することはできるが、ハードウエアのコストが増大する。
【０００８】
【発明が解決しようとする課題】
以上の通り、従来の補正方式では、製品出荷後の装置周辺の環境温度変化、更に装置自身の電源状態（電源オン中、オフ中）の変化に伴うＲＴＣ近辺の温度変化に対して考慮されていないため、出荷後の誤差が大きくなる傾向にあった。
従って、人手による定期的な時間補正（時刻の変更）作業が発生していた。
また、運用中の温度変化に対する補正方式は存在していたものの、製造時のハードウェア特性の補正の場合に使用する精度の高い基本クロックの補正とは関係なく、時間情報（通常秒単位）の変更という荒い補正方式であり、補正回数を重ねるほど誤差が大きくなること、更に電源切断中に補正出来ないという欠点があった。
本発明は上記従来技術の問題点を解決するためになされたものであって、本発明の目的は、温度変化によるリアルタイムクロックの時間誤差を高精度に補正することができ、さらに、装置の電源投入時に限らず、電源切断時においても、精度の高い補正を可能とし、人手による定期的な時間補正作業の省略または頻度を減らすことである。
【０００９】
【課題を解決するための手段】
本発明は、装置の電源投入時に限らず、プログラムの走行出来ない且つ、大きな温度差の発生する電源切断状態に移行する場合についても可能な限り補正値を反映させて、精度の高い補正を実現する。
更に、ハードウェア製造時に行っている基本クロックのカウント数の補正（水晶振動子および周辺静電容量等に起因する周波数誤差の補正）という精度の高い補正方式を、装置稼働後の温度変化に対応する補正の場合にもプログラムでダイナミックに使用する。これにより、なめらかで且つ精度の高い温度補正を実現することができ、人手による定期的な時間補正（時刻の変更) 作業の省略または頻度を減らすことができる。
図１に本発明の概要を示す。
同図において、１はリアルタイムクロック（ＲＴＣ）であり、ＲＴＣ１は基本クロックをカウントする手段１ａと、補正値を記憶する補正手段１ｂを備え、補正手段１ｂに記憶された補正値に基づき、カウント手段１ａにおける、基本単位時間当たり（例えば１秒）の基本クロック（例えば３２７６８Ｈｚ）のカウント数を変更することにより、ＲＴＣ１の時間誤差を補正する。
処理部２は、上記補正値を算出するための補正値算出手段２ａを備え、補正値算出手段２ａは、温度に起因するＲＴＣの時間誤差を補正するための補正値を求め、該補正値と、不揮発性記憶部５に予め設定された周波数誤差を補正するための補正値に基づき、上記補正手段１ｂの補正値を書き換える機能を備えている。
そして、上記装置の電源が投入されている時には、ＲＴＣ近辺の温度を測定する内部温度センサ３により測定される装置内温度に基づき、ＲＴＣ１のカウント数を補正するための第１の補正値を求めて上記補正手段１ｂに設定し、また、装置電源を切断する際には、装置外の温度を測定する外部温度センサ４により測定される装置外温度に基づき、ＲＴＣ１のカウント数を補正するための第２の補正値を求め、上記補正手段１ｂに設定する。
上記ＲＴＣ１は、バッテリバックアップされており、装置電源が投入されている時には、上記第１の補正値によりＲＴＣのカウント数の補正を行い、装置電源切断中には、第２の補正値によりＲＴＣのカウント数の補正を行う。
また、本発明は次のように構成することもできる。
（１）上記補正値算出手段は、装置電源を切断する際、内部温度センサと外部温度センサにより測定される内部温度と外部温度の差から、装置内外の温度が同一となる温度と経過時間の積の積算値を求め、装置電源切断中の時間、上記積算値、および、上記外部温度の値から、処理装置の電源切断中における補正値を算出し、該算出された補正値と上記記憶装置に記憶された装置製造時に設定された補正値に基づき、リアルタイムクロックのカウント数を補正するための第２の補正値を求める。
上記のように構成することにより、電源投入中と電源切断時の温度差が大きく、かつ、装置温度が環境温度に移行するまでの時間が大きい場合であっても、精度よくＲＴＣの補正を行うことができる。
（２）上記（１）において、過去の運用データから自動的に得た時間値、或いは、予め設定された固定の時間、或いは装置内蔵の電源スケジュールタイマに設定された値の何れかを用いて電源投入時間を求め、電源投入時間と電源切断時間の差から電源切断中の時間を求める。
本発明においては、上記のように構成したので、装置の電源投入時に限らず、プログラムの走行出来ない且つ、大きな温度差の発生する電源切断状態に移行する場合についても可能な限り補正値を反映させて、精度の高い補正を実現することができる。
更にハードウェア製造時に行っている基本クロックのカウント数の補正という精度の高い方式を装置稼働後の温度変化に対応する補正の場合にも使用しているので、なめらか且つ精度の高い温度補正を実現することができる、これにより、人手による定期的な時間補正（時刻の変更）作業の省略または頻度を減らすことも可能となる。
【００１０】
【発明の実施の形態】
次に本発明の実施例について説明する。
図２に本発明の実施例のシステムの構成を示す。同図において、１０はＲＴＣ制御部、１１はＣＰＵから構成される処理部、１２はメモリ部、１３はファイル部、１４はそれぞれの装置に応じた制御を行う各種制御部、１５は装置電源部、１６はＲＴＣをバッテリバックアップするためのバッテリである。
ＲＴＣ制御部１０は前記したように水晶振動子、ＲＴＣ等を内蔵し、水晶振動子（例えば３２．７６８ｋＨｚで発振）の出力周波数をカウントして時刻情報を出力する。また、本実施例においては、図２に示すように、バッテリでバックアップされたバックアップメモリ１７を備え、ここに後述するように装置製造時の補正値を記憶させる。
【００１１】
さらに、ＲＴＣの近辺に内部温度センサ１８が設けられ、装置の運用プログラム（ファームウェアでもよい）で、一定周期（例えば３０分サイクル) で内部温度センサ１８で測定された内部温度を読み出す。そして、装置の通常運用中は、後述するように内部温度センサ１８により測定された温度に基づき補正値を算出し、ＲＴＣの温度に起因する時間誤差を補正する。
また、装置の環境温度（装置外温度）を測定可能な外部温度センサ１９が設けられ、処理業務が終了し装置の電源を切断する際、外部温度センサ１９で測定された外部温度を読み出す。そして、装置電源が切断中は、後述するように外部温度センサにより測定された外部温度に基づき算出された補正値により、ＲＴＣの温度に起因する時間誤差を補正する。
【００１２】
本実施例のＲＴＣ制御部１０としては、先に説明した図１２に示した補正回路を備えたものを用いる。そこで、まず、本実施例の前提となる前記図１２に示したＲＴＣ部における補正方法の原理について、さらに詳細に説明する。
図１２において、秒桁上げカウンタ２２ｂでは水晶振動子２１からの３２７６８Ｈｚ±Ｘの入力クロックをカウントして、１秒を刻む。本来、この入力クロックが標準周波数（３２７６８Ｈｚ）と完全に等しく、誤差０であるならば３２７６８回カウントして１秒を刻むが、実際の周波数は多少のずれがある。例えば実際の入力周波数が３２７６８．１Ｈｚだとすると、その誤差は以下の通り計算される。
誤差（ＰＰＭ）＝〔（実際の周波数(32768.1) −標準周波数(32768) ）÷（標準の周波数(32768) 〕×１０6 ＝＋３．０５ＰＰＭ
この３．０５ＰＰＭは、１０秒に１Ｈｚ（＝約９１時間に１秒）進むことになる。そして、この誤差を補正するためには、１０秒に一度、３２７６８回より1 多い３２７９６回をカウントして桁上げすれば良く、これを１０秒毎に繰り返すことにより誤差０を維持することが出来る。
逆に実際の入力周波数が３２７６７．９（−３．０５ＰＰＭ）だとすると、この場合は10秒毎に１度、１少ない３２７６７回をカウントすれば誤差０を維持することが出来る。なお、補正するタイミングが１０秒間に１回であるため、各１０秒間のサイクルの中では最大１／３２７６８秒の誤差が発生しているが、この誤差は拡大することは無く、また秒単位で扱う時計情報としては無視できる。
【００１３】
前記図１２に示したように、補正回路２２ｃには予め工場調整作業で設定された補正値を保持する補正値保持レジスタ２２ｄと、この補正値を秒桁上げカウンタに反映させるためのロード制御回路２２ｅが設けられている。
通常、秒桁上げカウンタ２２ｂは１秒間に３２７６８回をカウントし、最後にリロードすることを繰り返している。
一方、補正回路２２ｃ側のロード制御部２２ｄでは一定周期毎（この例では１０秒毎) に１回、補正値をロードパルスにより、秒桁上げカウンタ２２ｂに渡す。これを受けた秒桁上げカウンタ２２ｂでは、前記リロードタイミングに同期をとって、秒桁上げカウンタに１回のみロードする。
このように通常カウントしている秒桁上げカウンタのカウント周期を乱すこと無く、本来のリロードタイミングに同期をとって補正値を適用するため、確実且つ精度の高い補正が可能となる。
補正値は、予め装置の製造工場にて各装置毎にＲＴＣの周波数測定用端子２３を使用して出力周波数を測定し、その結果より補正値を算出して補正値保持レジスタ２２ｄに設定する。なお、ここで補正できる範囲は、ハードウェアの特性差（水晶振動子及びＲＴＣ等のバラツキ）による誤差のみであり、温度誤差については考慮されない。補正時の温度は一般的な使用環境（２０〜２５°Ｃ）で設定される。
【００１４】
図３に上記補正値と補正内容の一例を示す。
例えば、周波数測定端子で測定した結果が、例えば、３２７６８．１（＋３．０５ＰＰＭ）であるならば、図３に示すように補正値保持レジスタ２２ｄに”０１”を設定する。これは補正回路２２ｃから１０秒毎に１回のみ、秒桁上げカウンタ２２ｂにロードする値を３２７６８＋１（３２７６９回）とすることを意味する。
また、周波数測定端子で測定した結果が、例えば、３２７６７．９（−３．０５ＰＰＭ）であるならば補正値保持レジスタ２２ｄに”８１”を設定する。これは補正回路から１０秒毎に１回のみ、秒桁上げカウンタ２２ｂにロードする値を３２７６８−１（３２７６７回）にすれば良いことを意味する。
ここで補正値の最上位ビットは補正値の正負号を意味し、このビットが０の場合は基本カウント値（この例では３２７６８）に加算することを、またこのビットが１の場合は基本カウント値より減算することを示す。
【００１５】
秒桁上げカウンタ２２ｂとしては、３２７６８Ｈｚの周波数をカウントしているわけであるから、最少補正機能としては１／３２７６８（＝約３０．５ＰＰＭ）までの補正が可能であるが、更に１０秒毎に１回のみ補正することにより、１／（３２７６８×１０）で、約３．０５ＰＰＭまで補正精度を向上することができる。
さらに補正間隔を２０秒毎に広げることにより、３．０５／２ＰＰＭまで最少補正精度を向上させることができる。
また補正機能の最大側としては、レジスタのビット構成の制約で決まる。例えば、７ビットの場合は２７×３．０５ＰＰＭ＝３９０ＰＰＭ程度まで可能となる。
【００１６】
以下、前記図２により本発明の第１の実施例について説明する。
本実施例では、前記図１２で説明したＲＴＣ制御部を採用し、製造工場における出荷時の補正作業は、上記したように予め装置の製造工場にて、ＲＴＣの周波数測定用端子を使用して出力周波数を測定し、その結果より補正値を算出することにより行う。
そして、上述した製造時に設定された補正値は、装置固有のハードウェア特性補正用の基準補正値として、バックアップメモリ１７に記憶される。なお、磁気デイスク装置等の不揮発性記憶部に上記基準補正値を記憶させてもよい。
【００１７】
次に、図２および前記図１２を参照しながら本実施例によるＲＴＣの誤差補正について説明する。
仮に、工場での周波数測定結果が、３２７６８．２Ｈｚ（＋６．１０ＰＰＭ：進みの誤差）であったとしてＲＴＣ制御部１０内の補正値保持レジスタ２２ｄおよびバックアップメモリ１７に”０２”設定して出荷する。
また、新たな考慮として、図２に示したように、ＲＴＣ近辺に内部温度センサ１８を追加し、前記したように、装置の運用プログラムで、一定周期( 例えば３０分サイクル) で内部温度センサを読み出す様にする。
そしてプログラムで読み取った温度データは図４に示す水晶振動子の温度と誤差の関係図から、予め予測される補正値を求め、図５に示す「温度変動に対する補正値保持レジスタ設定」に対応付けて、ＲＴＣ制御部１０の補正値保持レジスタ２２ｄに再設定すべき補正値を引き出す。
【００１８】
ここで図４は水晶振動子の温度と誤差の関係を示しており、採用する水晶振動子のタイプにより異なるが、本実施例が対象とする一般的な水晶振動子では常温といわれる２５°Ｃが一番周波数が高く、ここから±１０°Ｃ離れると、図４に示すように例えば約−３．５ＰＰＭ程度の誤差が発生する。
また図５は実際の温度変動に対する補正値と、更に工場出荷時に設定されたハードウェア特性補正のための補正値を基準に再設定すべき最終補正値を示している。図５においては、測定温度２１〜（２５）〜３０における”０２”が工場出荷時に設定される補正値である。
【００１９】
図６は本実施例における補正処理を示すフローチャートであり、以下、電源投入時および３０分間隔割込みの場合の処理について説明する。
電源投入時、あるいは、３０分間隔で割り込みが入ると、処理部１１で実行されるプログラムは、温度センサ１８の温度を読み取る（ステップＳ１）。
例えばプログラムが読み取った温度センサの温度が１５°Ｃを示すとした場合、図５に照らし合わせて、温度データ（１５°Ｃ）における温度補正値を求める（ステップＳ２）。この場合、温度補正値は”０１”である。
【００２０】
そして、予めバックアップメモリ１７（または磁気ディスク等の不揮発性記憶部）に保持しておいた工場出荷時の基準補正値（この例では”０２”）を読み取り（ステップＳ３）、この基準補正値に対して、前記温度補正値”０１”を加減し、補正値保持レジスタ２２ｄ（図１２）に最終的に設定する新たな補正値（最終補正値）を求める（ステップＳ４）。この場合、最終補正値は、０２−０１＝０１である。
次いで、ＲＴＣ部内の補正値保持レジスタ２２ｄに、最終的に設定する補正値”０１”を書き込む（ステップＳ５）。
これによりＲＴＣ部は少なくとも次に温度センサ１８を読むまでの３０分間はこの補正値”０１”でカウントを始める。すなわち、秒桁上げカウンタ２２ｂは前記図３に示したように、１０秒に一回３２７６８＋１カウントで桁上げする（入力周波数誤差＋３．０５ＰＰＭ）。
なお、以上の一連の計算作業は、工場出荷時の基準補正値を定数として、温度センサからの読取値を基にした一定の計算式でも良いし、図５に示した対応表を基に変換して抽出しても良い。
そして、温度センサ１７の読取からはじまる上記処理を３０分毎に繰り返すことにより、運用中の温度変化に対して、ダイナミックな温度補正が可能となる。
【００２１】
なお、本実施例で採用する水晶振動子の温度に対する誤差特性は１０°Ｃの場合で約３．５ＰＰＭと説明しているのに対し、実際の補正値は０１（＝３．０５ＰＰＭ）で、若干の差があるが、本実施例の補正値の最少単位０１は３．０５ＰＰＭであり、また、本実施例での温度差の範囲（１〜５０°Ｃ程度）では大きな影響は無いため、許容内として扱っている。
また、図５では、センサ温度を例えば１〜１０°Ｃの範囲で温度補正値”−０２”とするように１０°Ｃ間隔でまとめているが、これも本例での最少補正可能値が３．０５ＰＰＭであり、これ以上、温度を細かく刻んでも意味がないためである。
勿論、ＲＴＣの補正機能をもっと細かくできる場合には、温度も細かくできる。更に温度範囲についても１〜５０°Ｃとしているが、これも実環境に合わせて広げることができる。
【００２２】
次に装置の通常処理が終了し、装置電源切断中におけるＲＴＣの温度に起因する時間誤差の補正について説明する。
前記したように、処理業務が終了し装置の電源を切断する際、外部温度センサ１９で測定された外部温度を読み出す。そして以下に説明するように、温度に起因するＲＴＣの誤差補正を行う。
なお、本実施例では、図７に示すように、装置の電源切断後はＲＴＣの雰囲温度が外気（外部温度センサ１９で読み取った温度) と同じになると過程している。例えば電源投入中のＲＴＣ近辺の温度は装置内の発熱体の影響を受け、４５°Ｃ程度になる場合もあるが、電源を切断すると図７に示すように室内の温度（一般的には２５°Ｃ程度) まで落ち込む。
そして、通常は、室内の温度は温度調節されており、概ね一定に保たれているため、上記のように装置電源切断時に読み取った外部温度によりＲＴＣの時間誤差の補正を行っても大きな誤差は生じない。
また、装置運用中の温度と装置電源切断中の温度差が２０°Ｃの場合、この温度差による誤差は図４に示す通り６．１ＰＰＭ程度あり、装置電源切断中の補正値を、電源投入時の補正値のままにしておくと誤差に大きく影響することになる。したがって、装置電源切断中は以下のようにして温度に起因する時間誤差の補正値を求めＲＴＣの誤差補正を行う。
【００２３】
以下、前記図６のフローチャートにより上記処理について説明する。なお、電源切断時に外部温度センサ１９で測定された温度を読み取る点を除き、以下で説明する処理は、前記した装置の通常処理中の処理と同様である。
電源切断時、処理部１１で実行されるプログラムは、外部温度センサ１９の温度を読み取る（ステップＳ６）。
そして、図５に照らし合わせて、上記外部温度データにおける温度補正値を求め（ステップＳ２）、予めバックアップメモリ１７に保持しておいた工場出荷時の基準補正値を読み取る（ステップＳ３）。
【００２４】
この基準補正値に対して、上記外部温度データによる温度補正値を加減し、補正値保持レジスタ２２ｄ（図１２）に最終的に設定する新たな補正値（最終補正値）を求める（ステップＳ４）。
次いで、ＲＴＣ部内の補正値保持レジスタ２２ｄに、最終的に設定する補正値を書き込む（ステップＳ５）。
ＲＴＣ部は前記したように、バッテリバックアップされているので、補正値保持レジスタ２２ｄに書き込まれた上記補正値は、装置電源切断中も保持され、装置電源切断中、ＲＴＣ部は上記補正値により前記したように、温度に起因する時間誤差を補正する。
これにより、装置電源切断中も、外部温度を反映させたＲＴＣの誤差補正が可能となる。
なお、以上の一連の計算作業は、前記したように工場出荷時の基準補正値を定数として、温度センサからの読取値を基にした一定の計算式でも良いし、図５に示した対応表を基に変換して抽出しても良い。
【００２５】
以上の通り、本実施例では、製造時のハードウェア補正のために使用される精度の高い補正値を基準として、更に温度補正値を加えてＲＴＣの再補正を行うようにしたので、ハードウェア特性差および運用中の温度差に起因する誤差補正を加えて、ダイナミックに補正することができる。また本実施例で算出された新たな補正値の適用は、ＲＴＣ内でもつ補正タイミング（例えば１０秒毎に一回）に同期をとって適用されるため、補正回数が増えても、これによる誤差増大の心配が無い。
さらに、装置電源切断する際、外部温度を測定し、装置電源切断中はこの外部温度に基づき、上記と同様にＲＴＣの補正を行うことにより、装置運用中と電源切断時の温度差を考慮したＲＴＣ補正を行うことができる。
【００２６】
以上説明した実施例では、装置電源切断後、ＲＴＣの温度が直ちに外部温度に等しくなるとして、ＲＴＣの補正値を求める実施例について説明したが、通常、装置電源を切断した後、装置内外の温度が同一になるまで（冷えきるまで) には一定の時間を要する。
以下では、上記時間を考慮して、装置電源切断中のＲＴＣの温度に起因する誤差補正を行う本発明の第２の実施例について説明する。
装置運用中および装置電源切断後の装置内外の温度は、例えば図８に示すように遷移する。同図に示すように装置運用中、装置の温度は例えば４５°Ｃ程度まで上昇するが、装置電源切断後は装置温度がしだいに低下し、例えば２時間経過後に装置外温度（２５°Ｃ）に略等しくなる。そして、装置電源を投入すると装置温度は再び４５°Ｃ程度まで上昇し、以下同様な温度遷移を繰り返す。
【００２７】
本実施例では、装置の電源切断処理の際に、装置動作停止直前の内部温度センサの値（図８では４５°Ｃ）と外部温度センサの値（図８では２５°Ｃ）の差から、装置内外の温度が同一になるまで（冷えきるまで) の温度を経過時間との積で積算値として得る。
さらに次の電源投入時間までの電源停止時間（図８では２．５時間）と電源切断直前の外部温度センサの値（２５°Ｃ）から次に電源投入するでの平均温度（図８では３３°Ｃ）を総合的に求める。
そして、その結果より、予め用意された手法で補正値を求め、この補正値によりＲＴＣの再補正を行った後に電源を切断する。
本実施例は、電源投入中と電源切断時の温度差が大きく、かつ、装置温度が環境温度に移行するまでの時間が大きい場合であっても、精度よくＲＴＣの補正を行うことができる。また、図８に示すように電源投入／切断のサイクルが比較的短い場合（例えば１日に複数回の電源投入、切断を繰り返す場合) に更なる効果を持つ。
【００２８】
図９は本実施例の処理を示すフローチャートであり、以下、図８、図９を参照しながら、電源切断時における本実施例の処理について、さらに詳細に説明する。なお、本実施例において、装置運用中におけるＲＴＣの補正処理は前記第１の実施例と同じである。
本実施例では、以下の順番で総合平均温度を求める。
(1) 電源切断開始直前の温度から外気温度に達するまでの時間および積算温度値の算出する。
(2) 温度差が無くなってから次に電源投入するまでの温度の算出
(3) 前記、(1) と(2) の総合平均温度の算出
【００２９】
先ず、上記(1) の電源切断開始直前の温度から外気温度に達するまでの時間（図８の網かけ部分）及び積算温度値の算出について説明する。
まず、内部温度センサ１８と外部温度センサ１９の温度測定値を処理部１１のプログラムが読み取り、ＲＴＣ近辺と、装置外部の温度差を求める（図９のステップＳ１）。
ついで、電源断後、温度差が０となるまでの時間を求める（ステップＳ２）。これは、仮に温度の勾配が直線的と仮定すると以下の簡単な式により求めることができる。なお、本来、温度変化の勾配は非直線であるが、本実施例では説明の簡略化のため、また直線的勾配でも結果的に大きく変わらないことから、下記の通り比例的な直線で求めている。
これらを求めるに当たり、温度勾配度を現す係数Ｋが必要となるが、これは装置内の比熱係数等で異なるが、簡単には実測により求めれば良く、予め用意される。上記係数Ｋが定まると、温度差が無くなるまでの時間（Ｔ）は以下の式で求まる。
・係数（Ｋ）＝温度差( °Ｃ) ／温度差が無くなる迄の時間（Ｔ）
・温度差が無くなる迄の時間（Ｔ）＝温度差（°Ｃ）／温度変化係数（Ｋ）
上記温度差と温度差が無くなる迄の時間（Ｔ）から総合積算温度を求める（ステップＳ３）。
上記総合積算温度は以下の式で求めることができる。
・積算温度（°ＣＨ）＝Ｔ×温度差（°Ｃ）／２
【００３０】
図８においては、２０°Ｃ変化するのに２時間かかっているため、上記係数Ｋは" １０" となる。
また電源切断前の温度が４５°Ｃ、外気温度が２５°Ｃとすると、温度差は２０°Ｃであるので、温度差が無くなる迄の時間Ｔは、以下のようになる。
・温度差が無くなる迄の時間（Ｔ）＝２０( °Ｃ) ／１０  ＝２（時間）
したがって温度差が無くなる迄の積算温度（°ＣＨ）は以下のようになる。
・温度差が無くなる迄の積算温度（°ＣＨ）＝２Ｈ×２０( °Ｃ) ／２＝２０（°ＣＨ）
【００３１】
次に、(2) の温度差が無くなってから次に電源投入するまでの温度を算出するが、これは、装置内温度が外気と同じになった温度であるため、前記実施例と同様に温度センサ１９の温度データをそのまま使用する。
次いで、上記(3) の(1) と(2) の総合平均温度の算出する。
まず、電源停止時間を算出する（図９のステップＳ４）。これは、〔次回電源投入時間〕−〔電源切断開始時間〕から求めることができる。
次に、上記電源停止時間を用いて総合平均変化温度を算出する（ステップＳ５）。総合平均変化温度は次の式で求めることができる。
・総合平均変化温度（°Ｃ）＝  〔総合積算温度（＝温度差が無くなる迄の積算温度）〕／〔総合経過時間（＝電源切断開始〜次の投入時までの時間）〕
なお、次に電源投入する時間は後述するように、過去の運用データ等から求めることができる。
【００３２】
図８の例では、温度が下がりきった所から次の電源投入迄は０．５時間であり、そのときの温度は２５°Ｃである。また、図８のように電源切断開始時点からから次の電源投入時間までが２．５Ｈだとすると上記総合平均変化温度は次のようになる。
・総合平均変化温度（°Ｃ）＝２０（°ＣＨ）／２．５Ｈ＝８°Ｃ
上記温度は外気温度に対する差分であるため、上記総合平均変化温度に外気温度を加えて実温度を求める（ステップＳ６）。
図８の例では、外気温度が２５°Ｃとすると、外気温度２５°Ｃに総合平均変化温度＋８°Ｃを加えて、総合平均温度は約３３°Ｃとなる。
【００３３】
以上のようにして、総合平均温度が求まったら、この総合平均温度を用いて、前記した実施例と同様な計算を行うことにより、最終補正値を算出する。
すなわち、図５に照らし合わせて、上記外部温度データにおける温度補正値を求める（ステップＳ７）。これにより、例えば温度補正値”−０１”が求まる。
次に、予めバックアップメモリ１７に保持しておいた工場出荷時の基準補正値（０２）を読み取る（ステップＳ８）。
この基準補正値に対して、上記外部温度データによる温度補正値を加減し、補正値保持レジスタ２２ｄに最終的に設定する新たな補正値（最終補正値）を求める（ステップＳ９）。その結果、最終補正値として、０１（＝０２−０１）が得られることとなる。
以上のようにして最終補正値が求まったら、最終補正値をＲＴＣ内の補正値保持レジスタ２２ｄに書き込み、新たな補正値でＲＴＣ内のカウントをスタートする（ステップＳ１０）。
ＲＴＣ部はバッテリバックアップされているので、補正値保持レジスタ２２ｄに書き込まれた上記補正値は、装置電源切断中も保持され、装置電源切断中、ＲＴＣ部は上記補正値により前記したように、温度に起因する時間誤差を補正する。
【００３４】
以上のように、本実施例によれば、装置内外の温度が同一になるまでの温度を経過時間との積で積算値として得て、次の電源投入時間までの電源停止時間と電源切断直前の外部温度から次に電源投入するまでの平均温度を総合的に求め、その結果より補正値を求め、この補正値によりＲＴＣの再補正を行った後に電源を切断しているので、電源投入中と電源切断時の温度差が大きく、かつ、装置温度が環境温度に移行するまでの時間が大きい場合であっても、精度よくＲＴＣの補正を行うことができる。また、電源投入／切断サイクルの多い場合であっても、より精度の高い補正を行うことができる。
【００３５】
次に、上述した、「次に電源投入する時間」の取得方法について説明する。
「次に電源投入する時間」は、以下の（１）〜（３）の何れかの時間情報を使用して取得することができる。
（１）過去の運用データから自動的に得る。
これは、電源投入毎にその時間を記憶しておくようにすることにより達成される。投入時間が複数ある場合には統計的（回数的) にため込み、電源切断時間から、一番近い投入時間を選択する等の方法を用いることができる。
例えば過去の投入時間の設定が８：３０、１２：３０、１６：３０、２０：３０であり、１０：００に電源切断する場合には、１２：３０の電源投入時間を採用する。
（２）予め設定された固定の時間を用いる。
これは説明するまでも無く、固定的な時間（例えば８：３０）を設定する。
（３）装置内蔵の電源スケジュールタイマに設定された時間を用いる。
これは、内蔵タイマ、又は内蔵ＡＰＣ（自動電源コントローラ）等による、スケジュール運用の場合であり、本スケジュールは一般的に、予め１年間程度までスケジュール設定が可能であり、この設定情報を読取ることにより、次に電源投入すべき時間がわかる。
以上の通り、通常使用されている前記電源投入手段の時間情報を得て、電源切断開始時点から次の投入時間迄の時間幅を求めて、この間の温度補正値を算出することにより、更に補正精度を向上することができる。
【００３６】
（付記１）  処理装置に内蔵されるリアルタイムクロックの温度に起因する時間誤差の補正方法であって、
リアルタイムクロック近辺の内部温度を測定するとともに、処理装置外の外部温度を測定し、
処理装置の電源が投入されているときには、上記内部温度に基づき、リアルタイムクロックの時間誤差の補正値を求めて、リアルタイムクロックの誤差補正を行い、
処理装置の電源切断時には、上記外部温度に基づきリアルタイムクロックの時間誤差の補正値を求め、電源切断中、該補正値によりリアルタイムクロックの誤差補正を行う
ことを特徴とするリアルタイムクロックの温度補正方法。
（付記２）  リアルタイムクロックを備えた処理装置であって、
上記処理装置は、温度に起因するリアルタイムクロックの時間誤差を補正する補正値を求める補正値算出手段を備え、
上記補正値算出手段は、上記処理装置の電源が投入されている時には、リアルタイムクロック近辺の温度を測定する内部温度センサにより測定される装置内温度に基づき、第１の補正値を求め、
通常処理が終了し、上記処理装置の電源を切断する際には、処理装置外の温度を測定する外部温度センサにより測定される装置外温度に基づき第２の補正値を求め、
上記リアルタイムクロックは、上記処理装置の電源が投入されている時、上記第１の補正値に基づき時間誤差を補正し、装置電源切断中、上記第２の補正値に基づき時間誤差を補正する
ことを特徴とするリアルタイムクロックを備えた処理装置。
（付記３）  リアルタイムクロックを備えた処理装置であって、
上記リアルタイムクロックは、内蔵するカウント手段による基本クロックのカウント数を増減することにより装置製造時の周波数誤差に起因する時間誤差を補正するカウント数補正手段と、該カウント数の補正値を記憶する記憶手段を備え、
上記処理装置は、温度に起因するリアルタイムクロックの時間誤差を補正するための補正値を求め、該補正値と、予め設定された周波数誤差を補正するための補正値に基づき、上記記憶手段に記憶された補正値を書き換える補正値算出手段を備え、
上記補正値算出手段は、上記処理装置の電源が投入されている時には、リアルタイムクロック近辺の温度を測定する内部温度センサにより測定される装置内温度に基づき、リアルタイムクロックのカウント数を補正するための第１の補正値を求め、
また、上記処理装置の電源を切断する際には、処理装置外の温度を測定する外部温度センサにより測定される装置外温度に基づき、リアルタイムクロックのカウント数を補正するための第２の補正値を求め、
上記リアルタイムクロックは、上記処理装置の電源が投入されている時、上記第１の補正値によりリアルタイムクロックのカウント数の補正を行い、装置電源切断中、第２の補正値によりリアルタイムクロックのカウント数の補正を行う
ことを特徴とするリアルタイムクロックを備えた処理装置。
（付記４）  上記補正値算出手段は、装置電源を切断する際、内部温度センサと外部温度センサにより測定される内部温度と外部温度の差から、装置内外の温度が同一となる温度と経過時間の積の積算値を求め、
装置電源切断中の時間、上記積算値、および、上記外部温度の値から、処理装置の電源切断中における補正値を算出し、該算出された補正値と上記記憶装置に記憶された装置製造時に設定された補正値に基づき、リアルタイムクロックのカウント数を補正するための第２の補正値を求める
ことを特徴とする付記３のリアルタイムクロックを備えた処理装置。
（付記５）  電源投入時間は、過去の運用データから自動的に得た時間値、或いは、予め設定された固定の時間、或いは装置内蔵の電源スケジュールタイマに設定された値の何れかを用いて電源投入時間を求め、電源投入時間と電源切断時間の差から電源切断中の時間を求める
ことを特徴とする付記４のリアルタイムクロックを備えた処理装置。
（付記６）  リアルタイムクロックの温度に起因する時間誤差を補正する補正値を算出するためのプログラムであって、
上記プログラムは、上記処理装置の電源が投入されている時には、リアルタイムクロック近辺の温度を測定する内部温度センサにより測定される装置内温度に基づき補正値を算出し、該算出された補正値と、予め設定された周波数誤差を補正するための補正値に基づき、リアルタイムクロックのカウント数を補正するための第１の補正値を求め、リアルタイムクロックに設定する処理と、
上記処理装置の電源を切断する際には、処理装置外の温度を測定する外部温度センサにより測定される装置外温度に基づき、処理装置の電源切断中における補正値を算出し、該算出された補正値と予め設定された周波数誤差を補正するための補正値に基づき、リアルタイムクロックのカウント数を補正する第２の補正値を求め、リアルタイムクロックに設定する処理をコンピュータに実行させることを特徴とするリアルタイムクロックの温度に起因する時間誤差を補正する補正値を算出するためのプログラム。
【００３７】
【発明の効果】
以上説明したように、本発明においては、ハードウェア製造時に行っている基本クロックのカウント数の補正という精度の高い補正方式を装置稼働後の温度変化に対応する補正の場合にも適用したので、なめらか且つ精度の高い温度補正を実現することができる。
さらに、装置の電源投入状態時に限らず、プログラムが走行出来ない、且つ、大きな温度差の発生する電源切断状態に移行する場合についても可能な限り補正値を反映させて、精度の高い補正を実現することができる。このため、人手による定期的な時間補正作業の省略または頻度を減らすことをが可能となる。
【図面の簡単な説明】
【図１】本発明の概要を示す図である。
【図２】本発明の実施例のシステムの構成を示す図である。
【図３】補正レジスタの補正値と補正内容の関係を示す図である。
【図４】水晶振動子の温度と周波数誤差の関係を示す図である。
【図５】温度変動に対する補正レジスタ設定値を示す図である。
【図６】第１の実施例における補正処理を示すフローチャートである。
【図７】装置内／装置外の温度変化を示す図である。
【図８】電源切断過程及び切断中の平均温度を示す図である。
【図９】第２の実施例の処理を示すフローチャートである。
【図１０】ＲＴＣを使用する一般的にシステムの構成を示す図である。
【図１１】従来の可変コンデンサの調整による補正方式を示す図である。
【図１２】従来の基本クロックのカウント数の補正による補正方式を示す図である。
【符号の説明】
１    リアルタイムクロック（ＲＴＣ）
１ａ  カウント手段
１ｂ  補正手段
２    処理部
２ａ  補正値算出手段
３    内部温度センサ
４    外部温度センサ
１０  ＲＴＣ制御部
１１  処理部
１２  メモリ部
１３  ファイル部
１４  各種制御部
１５  装置電源部
１６  バッテリ
２１  水晶振動子
２２  ＲＴＣ部
２２ａ  クロックドライバ
２２ｂ  秒桁上げカウンタ
２２ｃ  補正回路
２２ｄ  時刻カウンタ
２２ｅ  ロード制御部
【図１】
0004711546.tif 000002
【図２】
0004711546.tif 000003
【図３】
0004711546.tif 000004
【図４】
0004711546.tif 000005
【図５】
0004711546.tif 000006
【図６】
0004711546.tif 000007
【図７】
0004711546.tif 000008
【図８】
0004711546.tif 000009
【図９】
0004711546.tif 000010
【図１０】
0004711546.tif 000011
【図１１】
0004711546.tif 000012
【図１２】
0004711546.tif 000013