説明

制御装置

【課題】不揮発性メモリのデータの不正な変化によりシステムプログラムがブートできなくなる事態が発生しにくい制御装置を得ること。
【解決手段】ブートプログラムに基づいて動作する制御手段は、システム用不揮発性メモリから第1のブートプログラムを読み出し、読み出した第1のブートプログラムが不正に変化していると判定したとき、バックアップ用不揮発性メモリから第2のブートプログラムを読み出す第1の手段と、バックアップ用不揮発性メモリから第2のブートプログラムを読み出した際、読み出した第2のブートプログラムが不正に変化していると判定したとき、エラーを出力する第2の手段と、を有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、不揮発性メモリにブートプログラムを記憶する制御装置に関する。
【背景技術】
【0002】
従来、システムの起動データ記憶場所を不揮発性メモリとしている数値制御装置(以下、NC装置という)において、不揮発性メモリのウェハ製造過程で発生する結晶欠陥などにより、経時的に電荷が抜けることで不正にビット変化が発生した場合、該不揮発性メモリに記憶されたプログラムのデータが不正に変化し、システムが起動できない、あるいは起動したあとに正しい処理を実行できないという不具合が生じる。
【0003】
不揮発性メモリのデータ復元方法としては、不揮発性メモリに記憶されたデータが本来意図するデータ値と異なった値になった場合、同じデータをバックアップ領域に記憶しておき、演算処理時に両者のデータ値を比較しデータの正当性を確認しながら動作する技術が開示されている(例えば、特許文献1参照)。
【0004】
また、不揮発性メモリに記憶されたデータの書き換えを行う際に、当該データの書き換えに先立って、書き換え対象データを複製したものをバックアップデータとして保存し、書き換え実施状況を示すフラグを用いることで、書き換えが行なわれたデータが正常に処理されたものか否かを判断し正当性を確認してから動作する方法が開示されている(例えば、特許文献2参照)。
【0005】
【特許文献1】特開2004−220580号公報
【特許文献2】特開2007−328438号公報
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、上記特許文献1および2に示されるデータ復元方法は、システムに障害を及ぼすデータの変化が、システムによる不揮発性メモリ上へのデータ書き換え行為による誤作動やデータ書き換え中の電源遮断による書き換え処理異常の結果として捉えられていることから、不揮発性メモリ上で発生するユーザーパラメータなどシステム起動に影響しないデータ領域の破損に対する方策であり、システムが正常に起動することを前提とした処置であるため、ブートプログラムや該ブートプログラムによりブートされるシステムプログラムなどシステム起動に関係するデータが破損した場合の処置ができない、という問題があった。
【0007】
本発明は、上記に鑑みてなされたものであって、不揮発性メモリのデータの不正な変化によりシステムプログラムがブートできなくなる事態が発生しにくい制御装置を得ることを目的とする。
【課題を解決するための手段】
【0008】
上述した課題を解決し、目的を達成するために、本発明は、初期化処理と、この初期化処理の実行後、システムプログラムの記憶先にジャンプするブート処理と、を含む第1のブートプログラムが記憶されるシステム用不揮発性メモリと、前記第1のブートプログラムと同一内容の第2のブートプログラムが記憶されるバックアップ用不揮発性メモリと、前記第1または第2のブートプログラムを読み出し、該読み出したブートプログラムに基づいて動作する制御手段と、を備え、前記制御手段は、前記システム用不揮発性メモリから第1のブートプログラムを読み出し、該読み出した第1のブートプログラムに対して誤り検出演算をすることによって前記読み出した第1のブートプログラムが不正に変化しているか否かを判定し、不正に変化していないと判定したとき、前記読み出した第1のブートプログラムを用いて前記初期化処理およびブート処理を行い、不正に変化していると判定したとき、前記バックアップ用不揮発性メモリから前記第2のブートプログラムを読み出す第1の手段と、前記バックアップ用不揮発性メモリから前記第2のブートプログラムを読み出した際、該読み出した第2のブートプログラムに対して誤り検出演算をすることによって前記読み出した第2のブートプログラムが不正に変化しているか否かを判定し、不正に変化していないと判定したとき、前記読み出した第2のブートプログラムを用いて前記初期化処理およびブート処理を行い、不正に変化していると判定したとき、エラーを出力する第2の手段と、を有することを特徴とする。
【発明の効果】
【0009】
この発明によれば、不揮発性メモリのデータの不正な変化によりシステムプログラムがブートできなくなる事態が発生しにくい制御装置を得る、という効果を奏する。
【発明を実施するための最良の形態】
【0010】
本発明は、ブートプログラムを不揮発性メモリに記憶する一般的な制御装置に適用できるものであるが、以下においては本発明をNC装置に適用した場合の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【0011】
実施の形態1.
図1は、本発明にかかるNC装置の実施の形態1の構成を示す図である。図1において、NC装置1は、HMI(Human Machine Interface)および工作機械を制御する制御手段であるCPU100と、ブートプログラムおよび該ブートプログラムにより起動される、OS、アプリケーションプログラムなど、NC装置1の動作を制御(以降、制御処理という)する基本プログラムであるシステムプログラムを含むデータを記憶する不揮発性メモリからなるフラッシュメモリであるシステム用ROM101と、バックアップとしてシステム用ROM101に記憶される前記するブートプログラムおよびシステムプログラムと同一のプログラムを記憶する不揮発性メモリからなるフラッシュメモリであるバックアップ用ROM102と、ユーザの各種パラメータを記憶する揮発性メモリからなるSRAMなどであるパラメータ格納用RAM103と、システムプログラムの展開と各種演算処理を行うワークメモリ104と、HMI用のモニター105と、工作機械上の各種I/Oと通信するためのI/Oインターフェース106と、これらのメモリ制御およびI/O制御をするためのASIC107とから構成される。
【0012】
なお、HMIの制御を、工作機械制御用CPU100とは別のHMI専用のCPUで実現するように構成してもよい。また、システム用ROM101とバックアップ用ROM102は、同一のチップ上で実現してもよいし、個別のチップとして基板上に実装し構成するようにしてもよい。さらに、バックアップ用ROM102は、バックアップ用領域として、バッテリーなどで常時バックアップされ、揮発性メモリで構成されるSRAMを用いたパラメータ格納用RAM103の一部を用いるようにしても良い。これらバックアップ用領域にいずれのデバイスを用いるかは、システムとしてのコスト、実装面積などを考慮して構成するようにすればよい。
【0013】
次に、システム用ROM101およびバックアップ用ROM102のメモリ構成を説明する。図2は、システム用ROM101およびバックアップ用ROM102のメモリ構成を説明する図である。図2において、システム用ROM101には、ブートプログラムを構成するブートデータ群200、該ブートデータ群200のチェックサム値201、システムプログラムを構成するシステムデータ群202および該システムデータ群202のチェックサム値203を記憶している。また、バックアップ用ROM102には、各データ群と同一のデータ群およびチェックサム値として、ブートデータ群207、チェックサム値208、システムデータ群209およびチェックサム値210を記憶している。
【0014】
続いて、システム用ROM101およびバックアップ用ROM102に記憶されているブートデータ群200、207が構成するブートプログラムの主要な仕様を述べる。ブートプログラムは、CPU100に、自身および自身と同じROMに記憶されている自身に関するチェックサム値201、208をCPU100の内部レジスタに転送させ、該転送されたブートデータ群204についてチェックサム演算し、演算結果のチェックサム値206と転送されてきたチェックサム値205とを比較して誤り検出を行うブートデータチェック処理を行うよう、プログラムされている。すなわち、ブートプログラムは、不揮発性メモリに経時的に発生する電荷抜けによる不正なビット変化により、自身のデータにデータが不正に変化(以下、データ不正変化という)していないことを確認する。また、該ブートプログラムは、該ブートデータチェック処理の後、NC装置1の初期化処理を行い、該初期化処理の後、システムデータ群にCPU100の読み出し先をジャンプさせるブート処理を行うよう、プログラムされている。
【0015】
さらに、該ブートプログラムは、第1の起動回数カウンタを用いてブート回数をカウントし、該ブート回数が所定の値に到達したか否かを判定する第1のカウント処理をブート処理直前に行い、該ブート回数が所定の回数に到達したとき、ブートデータ群207およびチェックサム値208でブートデータ群200およびチェックサム値201を上書きする第1の上書き処理を、ブート処理直前またはシステムの終了処理時のうちの予め設定されているタイミングで行うよう、プログラムされている。この上書き処理により、システム用ROMにおける電荷を再チャージし、システム用ROMにおける電荷抜けの発生を抑えることができる。ここで、第1の起動回数カウンタを設ける位置については特に限定しないが、例えばシステム用ROM101の各種データの記憶に使用されていない部分に設けるようにしてもよい。
【0016】
システム用ROM101およびバックアップ用ROM102に記憶されているシステムデータ群202、209が構成するシステムプログラムの主要な仕様を述べる。システムプログラムは、CPU100に、自身および自身と同じROMに記憶されている自身に関するチェックサム値203、210をワークメモリ104に転送させ、前記するブートプログラムと同様に、転送されたシステムデータ群211についてチェックサム演算し、演算結果のチェックサム値213と転送されてきたチェックサム値212とを比較して誤り検出を行うシステムデータチェック処理を行うよう、プログラムされている。該システムプログラムは、該システムデータチェック処理の後、制御処理を開始する。
【0017】
さらに、該システムプログラムは、前記するブートプログラムと同様に、制御処理開始直後に、第2の起動回数カウンタを用いて制御処理開始回数をカウントし、該制御処理開始回数が所定の値に到達したか否かを判定する第2のカウント処理を行い、該制御処理開始回数が所定の回数に到達したとき、システムデータ群209およびチェックサム値210でシステムデータ群202およびチェックサム値203を上書きする第2の上書き処理を、該カウント処理の直後またはシステムの終了処理時のうちの予め設定されているタイミングで行うよう、プログラムされている。第2の起動回数カウンタを設ける位置については、前記する第1の起動回数カウンタと同様に、特に限定しない。
【0018】
次に、以上のように構成された本発明の実施の形態1のNC装置1の動作を説明する。最初に、動作の概略を説明する。図3は、NC装置1の動作の概略を説明するフローチャートである。
【0019】
図3において、電源投入後、CPU100は、システム用ROM101に記憶されているブートデータ群200またはバックアップ用ROM102に記憶されているブートデータ群207を読み出し、読み出したブートデータ群のブートプログラムに基づいて、読み出し元のブートデータ群についてチェックサム演算を実行し、データ不正変化があるか否かを確認するブートデータチェック処理を行う(ステップS301)。そして、CPU100は、データ不正変化がないことが確認されたブートデータ群のブートプログラムに基づいてNC装置1の初期化処理を行う(ステップS302)。この直後、CPU100は、ブートプログラムに基づいて、第1のカウント処理と、設定内容によっては第1の上書き処理と、を実行する。そして、CPU100は、ブートプログラムに基づいて、システムデータ群202にジャンプするブート処理を実行し、ブートプログラムからシステムプログラムに制御を移す(ステップS303)。
【0020】
続いて、CPU100は、システムデータ群202またはシステムデータ群209を読み出し、読み出したシステムデータ群によるシステムプログラムに基づいて、読み出し元のシステムデータ群についてチェックサム演算を実行し、データ不正変化があるか否かを確認するシステムデータチェック処理を行う(ステップS304)。そして、CPU100は、データ不正変化がないことが確認されたシステムデータ群のシステムプログラムに基づいて、制御処理を実行開始する(ステップS305)。この直後、CPU100は、システムプログラムに基づいて、第2のカウント処理と、設定内容によっては第2の上書き処理と、を実行する。そして、NC装置1は、システム稼動状態となる(ステップS306)。
【0021】
次に、CPU100は、所定のタイミングで、制御処理の終了を開始する(ステップS307)。ここで、第1および第2の上書き処理を終了処理時に行う設定になっている場合、CPU100は、システム用ROM101に記憶されている該当データ群と該当チェックサム値とをバックアップ用ROM102に記憶されている該当データ群と該当チェックサム値とで上書きコピーする。そして、終了処理が終わると、電源off状態となる。
【0022】
次に、図3に示したフローチャートの各動作ステップをさらに詳しく説明する。図4は、ステップS301〜303の動作を詳しく説明するフローチャートである。なお、以降の説明において、CPU100の各動作を制御するプログラムは、特に記述しない限りCPU100がその時点で読んでいるデータ群により構成されるプログラムであるとする。
【0023】
図4において、CPU100は、ASIC107の設定により、ブートデータ群200が記憶されている領域の先頭番地から該ブートデータ群200を読み出す。そして、CPU100は、ブートデータ群200およびチェックサム値201をCPU100の内部レジスタに転送する。そして、CPU100は、転送されたブートデータ群204についてチェックサム演算を行う(ステップS401)。そして、CPU100は、算出したチェックサム値206と内部レジスタに転送されたチェックサム値205とを比較し、一致するか否かを判定する(ステップS402)。
【0024】
双方のチェックサム値が一致した場合(ステップS402、Yes)、ブートデータ群200は正常なデータである、すなわちデータ不正変化が起こっていないとし、CPU100はシステム用ROM101から転送されてきたブートデータ群204から成るブートプログラムに基づいて初期化処理を実行する(ステップS403)。双方のチェックサム値が一致しない場合(ステップS402、No)、ブートデータ群200は異常である、すなわちデータ不正変化が起こっているとし、CPU100の読み出し先がバックアップ用ROM102のブートデータ群207が記憶されている領域の先頭番地にジャンプし、CPU100は、ブートデータ群207およびチェックサム値208をCPU100の内部レジスタに転送し、転送されたブートデータ群204についてチェックサム演算を行う(ステップS404)。そして、CPU100は、算出したチェックサム値206と内部レジスタに転送されたチェックサム値205とを比較し、一致するか否かを判定する(ステップS405)。
【0025】
双方のチェックサム値が一致した場合(ステップS405、Yes)、バックアップ用ROM102に記憶されているブートデータ群207は正常なデータであるとし、CPU100はバックアップ用ROM102から転送されてきたブートデータ群204から成るブートプログラムに基づいて初期化処理を実行する(ステップS403)。双方のチェックサム値が一致しない場合(ステップS405、No)、バックアップ用ROM102に記憶されているブートデータ群207も異常であるとし、CPU100は初期化処理およびブート処理を行わずに終了する(ステップS406)。このとき、モニター105にデータ値不正を示す表示を行い、ユーザに対する情報の開示を行う。
【0026】
ステップS403においてブート処理が実行されたあと、第1のカウント処理に移行する。CPU100は、まず、第1の起動回数カウンタの値と予め設定されているブート処理の実行回数である第1の設定回数とが等しいか否か判定し(ステップS407)、第1の起動回数カウンタの値が第1の設定回数未満であるとき(ステップS407、No)、第1の起動回数カウンタの値をインクリメントし(ステップS411)、ブート処理を実行する(ステップS412)。
【0027】
第1の起動回数カウンタの値が第1の設定回数と等しいとき(ステップS407、Yes)、CPU100は、第1の上書き処理を終了時に行う設定になっているか否かを判定し(ステップS408)、終了時に行う設定である場合(ステップS408、Yes)、第1の起動回数カウンタをクリアし(ステップS410)、ステップS412に移行する。終了時に上書き処理を行う設定になっていない場合(ステップS408、No)、CPU100は、バックアップ用ROM102に記憶されているブートデータ群207およびチェックサム値208でシステム用ROM101に記憶されているブートデータ群200およびチェックサム値201を上書きコピーし(ステップS409)、ステップS410に移行する。
【0028】
次に、図2におけるステップS304およびステップS305に関する詳細な説明を行う。図5は、ステップS304およびステップS305の動作を詳しく説明するフローチャートである。
【0029】
図5において、CPU100は、システム用ROM101のシステムデータ群202が記憶されている領域の先頭番地から読み出し、システムデータ群202およびチェックサム値203をASIC107経由でワークメモリ104に転送し、転送されたシステムデータ群211についてチェックサム演算を行う(ステップS501)。そして、CPU100は、算出したチェックサム値213と転送されたチェックサム値212とを比較し、一致するか否かを判定する(ステップS502)。
【0030】
双方のチェックサム値が一致した場合(ステップS502、Yes)、システムデータ群202は正常なデータであるとし、CPU100はシステム用ROM101から転送されてきたシステムデータ群211から成るシステムプログラムに基づいて、制御処理を実行開始する(ステップS503)。双方のチェックサム値が一致しない場合(ステップS502、No)、システムデータ群202は異常であるとし、CPU100の読み出し先がバックアップ用ROM102のシステムデータ群209が記憶されている領域の先頭番地にジャンプし、CPU100は、バックアップ用ROM102に記憶されるシステムデータ群209およびチェックサム値210をASIC107経由でワークメモリ104に転送し、転送されたシステムデータ群211についてチェックサム演算を行う(ステップS504)。そして、CPU100は、算出したチェックサム値213と転送されたチェックサム値212とを比較し、一致するか否かを判定する(ステップS505)。
【0031】
双方のチェックサム値が一致した場合(ステップS505、Yes)、バックアップ用ROM102に記憶されているシステムデータ群202は正常なデータであるとし、CPU100はバックアップ用ROM102から転送されてきたシステムデータ群211から成るシステムプログラムを実行する(ステップS503)。双方のチェックサム値が一致しない場合(ステップS505、No)、バックアップ用ROM102に記憶されているシステムデータ群209も異常であるとし、CPU100は処理を終了する(ステップS506)。このとき、モニター105にデータ値不正を示す表示を行い、ユーザに対する情報の開示を行う。
【0032】
ステップS503において制御処理が実行開始されたあと、第2のカウント処理に移行する。CPU100は、まず、第2の起動回数カウンタの値と予め設定されている制御処理開始回数である第2の設定回数とを比較して等しいか否かを判定し(ステップS507)、第2の起動回数カウンタの値が第2の設定回数未満であるとき(ステップS507、No)、第2の起動回数カウンタの値をインクリメントし(ステップS511)、システムが起動状態に移行する。
【0033】
第2の起動回数カウンタの値が第2の設定回数と等しいとき(ステップS507、Yes)、CPU100は、第2の上書き処理を終了処理時に行う設定になっているか否かを判定し(ステップS508)、終了処理時に行う設定である場合(ステップS508、Yes)、第2の起動回数カウンタをクリアし(ステップS510)、システムが起動状態に移行する。終了処理時に上書き処理を行う設定になっていない場合(ステップS508、No)、CPU100は、バックアップ用ROM102に記憶されているシステムデータ群209およびチェックサム値210でシステム用ROM101に記憶されているシステムデータ群202およびチェックサム値203を上書きコピーし(ステップS509)、ステップS510に移行する。
【0034】
ここで、第1および第2の上書き処理は、該当するデータを複数に分割し、一回の電源onから電源offまでの動作で分割された一部のみ上書き処理し、分割された数だけ電源onから電源offまでの動作が行われることによって該当するデータ群が完全に上書きされるようにしてもよい。
【0035】
次に、図2におけるステップS307の動作を詳しく説明する。図6はステップS307の動作を詳しく説明するフローチャートである。ステップS307の動作の説明においては、m回の電源on〜電源offの動作で完全に上書きが完了するように設定されており、第1および第2の設定回数が同値に設定されており、NC装置1のシステムが稼動状態になっている時点で第1の起動回数カウンタの値と第2の起動回数カウンタの値とが同じ値をとる設定となっていることとして説明する。すなわち、第1の上書き処理と第2と上書き処理とを同時に実行するとしている。なお、図6に示す動作は、システムプログラムに基づいて行われる。
【0036】
図6において、終了処理が開始されると、CPU100は、工作機械を正常に終了させるためのパラメータ退避など各種終了処理であるNC終了処理を実行する(ステップS601)。そして、CPU100は、終了処理時に第1または第2の上書き処理を実行する設定になっているか否かを判定し(ステップS602)、終了処理時に上書き処理する設定になっていない場合(ステップS602、No)、上書きコピーを行うことなく電源offとなる。終了時に上書き処理する設定になっている場合(ステップS602、Yes)、ステップS603に移行する。
【0037】
図7は、不揮発性メモリ上のデータ分割、分割サイズ、および書き換え回数カウンタレジスタを説明する図である。図7において、m個に分割される場合、700に示すように、領域がm等分されている。分割数mは、分割サイズレジスタ701に保持されるようにしておく。また、各上書きコピー処理時に分割されたシステム用ROM101のどの領域を上書きコピーするかを算出するために、書き換え回数カウンタレジスタ702を設ける。分割サイズレジスタ701および書き換え回数カウンタレジスタ702を設ける場所は特に限定しないが、たとえば前記する第1および第2の起動回数カウンタと同様に、システム用ROM101の使用されていない部分に設けるようにしてよい。書き換え回数カウンタレジスタ702の値をi(初期値はi=m)ということとする。システム用ROM101に第1および第2の起動回数カウンタ、分割サイズレジスタ701、および書き換え回数カウンタレジスタ702を設ける場合、値を以降に引き継ぐために、これらが設けられている領域は上書き処理しないようにする。
【0038】
図6に戻り、終了時に上書き処理する設定になっている場合(ステップS602、Yes)、CPU100は、第1または第2の起動回数カウンタの値からmを引いた値が0以上か否かを判定する(ステップS603)。第1または第2の起動回数カウンタの値からmを引いた値が0以上である場合(ステップS603、Yes)、CPU100は上書きコピーを行うことなくシステム終了となる。第1または第2の起動回数カウンタの値からmを引いた値が0以上ではない場合(ステップS603、No)、CPU100は、書き換え回数カウンタレジスタ702の値iが0を超えるか否かをさらに判定する(ステップS604)。nが0を超えない場合(ステップS604、No)、CPU100は書き換え回数カウンタレジスタ702の値iを初期値のmとし、上書き処理を行うことなくシステム終了となる。
【0039】
iが0を超える場合(ステップS604、Yes)、CPU100はシステム用ROM101のベースアドレスからm−i分だけオフセットされた番地のm等分されたデータを上書きコピー対象とし、該当する部分のデータをバックアップ用ROM102から読み出してシステム用ROM101に上書きコピーする(ステップS606)。例えばi=mの場合、分割サイズレジスタ701で設定されたm等分設定により、システム用ROM101においてm等分に分割された領域のベースアドレスから1つ目の領域のデータが上書きコピーされることにより、システム用ROM101に再度電荷チャージが実行される。そして、CPU100は、書き換え回数カウンタレジスタ702の値iをデクリメントし(ステップS607)、システム終了となる。
【0040】
上書きの動作は、書き換え回数カウンタレジスタの値が0になるまで繰り返されることで、m等分されたシステム用ROM101領域のデータをm回の終了処理で上書きを実施することができる。ただし、この上書き回数設定は、一回の終了処理時間に影響の出ない程度に任意に設定するものとし、特に終了処理時間に規定が無い場合には、分割サイズレジスタ701および書き換え回数カウンタレジスタ702を1に設定することにより一回の終了処理で上書き処理を完了させることができる。
【0041】
ところで、以上の説明においては、データの異常を検出する誤り検出方法にサムチェック演算を行うとして説明したが、誤り検出方法はサムチェック演算に限定しない。例えば、サムチェック演算の替わりに巡回冗長検査を行うようにしてもよい。
【0042】
このように、実施の形態1によれば、システムデータ群をブートするブートプログラムを構成するブートデータ群をシステム用ROMおよびバックアップ用ROMに記憶し、ブートプログラムは、システム用ROMに記憶されているブートデータ群が不正に変化している場合はバックアップ用ROMに記憶されているブートデータ群を用いてシステムの初期化とシステムデータのブートをできるようにしたので、ブートデータの不正な変化によりシステムプログラムがブートできなくなる事態を起こりにくくすることができる。また、システムプログラムについても、上述のブートプログラムと同様に、構成するシステムデータ群がシステム用ROMおよびバックアップ用ROMに記憶されるとともに、システム用ROMに記憶されているシステムデータ群が不正に変化している場合はバックアップ用ROMに記憶されているシステムデータ群からシステムを起動できるようにしたので、システムデータの不正な変化によりシステムが起動できなくなる事態を発生しにくくすることができる。また、ブートプログラムおよびシステムプログラムは、予め設定された回数だけブート処理およびシステム起動を行ったとき、バックアップ用ROMに記憶されている自身のデータでシステム用ROMに記憶されている自身のデータを上書き処理、すなわちシステム用ROMにおける電荷を再チャージをするようにしたので、データの不正変化の発生確率を低減することができる。また、ブートデータ群およびシステムデータ群を夫々分割し、一回の上書き処理で分割された一部を上書き処理し、複数の電源onから電源offまでの動作で全データ群の上書きを完了するようにもできるようにしたので、ブートデータ群およびシステムデータ群のデータ量が多くなっても、上書き一回当たりにかかる時間を少なくすることができ、システム終了時に上書きする場合、システム終了処理にかかる時間を短縮することができる。
【0043】
実施の形態2.
実施の形態1においては、起動回数をトリガー条件として上書き処理によって電荷再チャージを行うようにしたが、異なるさらに別の実施の形態2として、電荷再チャージのトリガー条件を累積時間としたNC装置について説明する。
【0044】
本実施の形態2のNC装置1には、第1、第2の起動回数カウンタの替わりに第1、第2の累積時間レジスタが設けられている。さらに、ブートプログラムは、ブートプログラムの上書き処理を実行したとき、第1の累積時間レジスタに処理時の時刻を書き込む。システムプログラムは、システムプログラムの上書き処理が実行されたとき、第2の累積時間レジスタに処理時の時刻を書き込む。
【0045】
図8および図9に実施の形態2のNC装置のシステム起動までの動作を説明するフローチャートを示す。図8において、ステップS801〜ステップS806の動作は、図4におけるステップS401〜ステップS406のNC装置1の動作と同様であるので、説明を省略する。ステップS803において、CPU100が初期化処理を実行すると、CPU100は、図示しないRTC(Real Time Clock)などから現在時刻を取得して第1の累積時間レジスタの値を引くことによって最後にブートデータ群の上書き処理を行ってからの累積時間を算出し、累積時間が予め設定された設定時間以上の値であるか否かを判定する処理を行う(ステップS807)。ここで、設定時間に、不揮発性メモリに電荷が印加されてからデータ不正変化発生の増加する時間を考慮して適切に設定するようにするとよい。累積時間が設定時間未満の値である場合(ステップS807、No)、ブート処理を実行する(ステップS810)。累積時間が設定時間以上の値である場合(ステップS807、Yes)、CPU100は、システム用ROM101に記憶されているブートデータ群200およびチェックサム値201を上書きコピーし(ステップS808)、改めて現在時刻を取得して取得した現在時刻で第1の累積時間レジスタを上書きし(ステップS809)、ステップS810に移行する。
【0046】
図8においてブート処理が実行された後、図9のステップS901に移行する。図9におけるステップS901〜ステップS906の動作は、図5におけるステップS501〜ステップS506のNC装置1の動作と同様であるので、説明を省略する。ステップS903において制御処理を実行開始すると、CPU100は、現在時刻を取得して第2の累積時間レジスタの値を引くことによって最後にシステムデータ群の上書き処理を行ってからの累積時間を算出し、累積時間が予め設定された設定時間以上の値であるか否かを判定する処理を行う(ステップS907)。ここでの設定時間は、ステップS807において使用される設定時間と同じであっても異なっていてもかまわない。
【0047】
累積時間が設定時間未満の値である場合(ステップS907、No)、システムが起動される。累積時間が設定時間以上の値である場合(ステップS907、Yes)、CPU100は、システム用ROM101に記憶されているシステムデータ群202およびチェックサム値203を上書きコピーし(ステップS908)、改めて現在時刻を取得して取得した現在時刻で第2の累積時間レジスタを上書きし(ステップS909)、システムが起動される。
【0048】
このように、実施の形態2によれば、不揮発性メモリに対して電荷を印加してからの累積時間を把握することで、ある程度予測可能なデータ不正変化の発生時間が経つ前に上書き処理を行い、データ不正変化の発生を低減することができる。
【産業上の利用可能性】
【0049】
以上のように、本発明にかかる制御装置は、不揮発性メモリにブートプログラムを記憶する制御装置に適用して好適である。
【図面の簡単な説明】
【0050】
【図1】本発明にかかるNC装置の実施の形態1の構成を示す図である。
【図2】システム用ROMおよびバックアップ用ROMのメモリ構成を説明する図である。
【図3】NC装置の動作の概略を説明するフローチャートである。
【図4】本発明にかかるNC装置の実施の形態1の動作を説明するフローチャートである。
【図5】本発明にかかるNC装置の実施の形態1の動作を説明するフローチャートである。
【図6】ステップS307の動作を詳しく説明するフローチャートである。
【図7】不揮発性メモリ上のデータ分割、分割サイズ、および書き換え回数カウンタレジスタを説明する図である。
【図8】本発明にかかるNC装置の実施の形態2の動作を詳細に説明するフローチャートである。
【図9】本発明にかかるNC装置の実施の形態2の動作を詳細に説明するフローチャートである。
【符号の説明】
【0051】
1 NC装置
100 CPU
101 システム用ROM
102 バックアップ用ROM
103 パラメータ格納用RAM
104 ワークメモリ
105 モニター
106 I/Oインターフェース
107 ASIC
200 ブートデータ群
201 チェックサム値
202 システムデータ群
203 チェックサム値
204 ブートデータ群
205 チェックサム値
206 チェックサム値
207 ブートデータ群
208 チェックサム値
209 システムデータ群
210 チェックサム値
211 システムデータ群
212 チェックサム値
213 チェックサム値
701 分割サイズレジスタ
702 書き換え回数カウンタレジスタ

【特許請求の範囲】
【請求項1】
初期化処理と、この初期化処理の実行後、システムプログラムの記憶先にジャンプするブート処理と、を含む第1のブートプログラムが記憶されるシステム用不揮発性メモリと、
前記第1のブートプログラムと同一内容の第2のブートプログラムが記憶されるバックアップ用不揮発性メモリと、
前記第1または第2のブートプログラムを読み出し、該読み出したブートプログラムに基づいて動作する制御手段と、
を備え、
前記制御手段は、
前記システム用不揮発性メモリから第1のブートプログラムを読み出し、該読み出した第1のブートプログラムに対して誤り検出演算をすることによって前記読み出した第1のブートプログラムが不正に変化しているか否かを判定し、不正に変化していないと判定したとき、前記読み出した第1のブートプログラムを用いて前記初期化処理およびブート処理を行い、不正に変化していると判定したとき、前記バックアップ用不揮発性メモリから前記第2のブートプログラムを読み出す第1の手段と、
前記バックアップ用不揮発性メモリから前記第2のブートプログラムを読み出した際、該読み出した第2のブートプログラムに対して誤り検出演算をすることによって前記読み出した第2のブートプログラムが不正に変化しているか否かを判定し、不正に変化していないと判定したとき、前記読み出した第2のブートプログラムを用いて前記初期化処理およびブート処理を行い、不正に変化していると判定したとき、エラーを出力する第2の手段と、
を有することを特徴とする制御装置。
【請求項2】
前記システム用不揮発性メモリには第1のシステムプログラムが記憶され、
前記バックアップ用不揮発性メモリには、前記第1のシステムプログラムと同一内容の第2のシステムプログラムが記憶され、
前記ブート処理は、前記システム用不揮発性メモリに記憶されている前記第1のシステムプログラムを読み出す処理であって、
前記制御手段は、
前記第1のシステムプログラムを読み出し、該読み出した第1のシステムプログラムに対して誤り検出演算をすることによって前記読み出した第1のシステムプログラムが不正に変化しているか否かを判定し、不正に変化していないと判定したとき、前記読み出した第1のシステムプログラムを用いて自制御装置の制御を開始し、不正に変化していると判定したとき、前記バックアップ用不揮発性メモリから前記第2のシステムプログラムを読み出す第3の手段と、
前記バックアップ用不揮発性メモリから前記第2のシステムプログラムを読み出した際、該読み出した第2のシステムプログラムに対して誤り検出演算をすることによって前記読み出した第2のシステムプログラムが不正に変化しているか否かを判定し、不正に変化していないと判定したとき、前記読み出した第2のシステムプログラムを用いて自制御装置の制御を開始し、不正に変化していると判定したとき、エラーを出力する第4の手段と、
をさらに備えることを特徴とする請求項1に記載の制御装置。
【請求項3】
前記第1および第2のブートプログラムは、所定第1の条件が成立する毎に、前記バックアップ用不揮発性メモリに記憶されている第2のブートプログラムで前記システム用不揮発性メモリに記憶されている第1のブートプログラムを上書きする第1の上書き処理を行う命令をさらに含み、
前記第1の上書き処理は、
前記ブート処理を行う前または前記第1もしくは第2のシステムプログラムが前記制御処理を終了する際に実行される、
ことを特徴とする請求項2に記載の制御装置。
【請求項4】
前記第1および第2のシステムプログラムは、所定第2の条件が成立する毎に、前記バックアップ用不揮発性メモリに記憶されている第2のシステムプログラムで前記システム用不揮発性メモリに記憶されている第1のシステムプログラムを上書きする第2の上書き処理を行う命令をさらに含み、
前記第2の上書き処理は、
前記制御処理を行う前または前記制御処理を終了する際に実行される、
ことを特徴とする請求項2または3に記載の制御装置。
【請求項5】
前記所定第1の条件は、前記第1の上書き処理が行われてから前記ブート処理が所定の回数実行されるかまたは所定の時間が経過するか、であることを特徴とする請求項3に記載の制御装置。
【請求項6】
前記所定第2の条件は、前記第2の上書き処理が行われてから前記制御処理が所定の回数開始されるかまたは所定の時間が経過するか、であることを特徴とする請求項4に記載の制御装置。
【請求項7】
前記第1の上書き処理は、前記第1のブートプログラムの上書き領域を複数に分割し、一回の前記ブート処理につき前記分割された一つの領域を上書きすることを特徴とする請求項3または5に記載の制御装置。
【請求項8】
前記第2の上書き処理は、前記第1のシステムプログラムの上書き領域を複数に分割し、一回の前記制御処理実行開始につき前記分割された1つの領域を上書きすることを特徴とする請求項4または6に記載の制御装置。
【請求項9】
前記システム用不揮発性メモリは、シリコンウェハから作製された半導体メモリであって、記憶しているデータが経時的に不正に変化する可能性を有する、ことを特徴とする請求項1〜8の何れか1つに記載の制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2010−26650(P2010−26650A)
【公開日】平成22年2月4日(2010.2.4)
【国際特許分類】
【出願番号】特願2008−185076(P2008−185076)
【出願日】平成20年7月16日(2008.7.16)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】