説明

カウントデータ記録装置、および、カウントデータ記録方法

【課題】本発明は、カウントデータ記録装置を提供する。
【解決手段】本発明は、記憶部と、データ書込部と、データ読出部と、データ修復部と、を有し、記憶部は、識別子で特定されるカウント記憶部と、カウント記憶部と関連付けされた極性情報データ記憶部とを備え、データ書込部は、循環的にカウント値を書き込むカウント書込部と、極性情報データ記憶部が記憶するデータの内容を反転させる極性情報データ反転部と、を備え、データ修復部は、カウント値の大きさで、識別子を並べるカウントソート部と、並べた識別子の順に沿って隣接するカウント値間の差分値を算出するカウント差分算出部と、識別子の並び方、差分値の並び方、および、極性情報データの並び方、に基づいて、カウント値の破損を検出して当該破損を修復する修復処理実行部と、を備える、カウントデータ記録装置である。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、メモリ等で構成される記憶領域へカウントデータを記録する装置、および、カウントデータ記録方法に関し、特に、該記憶領域に記録されたカウントデータにおいて生じた破損を検出し、当該検出にかかる破損したカウントデータを正常な状態へ修復するカウントデータ記録装置、および、記録方法に関する。
【背景技術】
【0002】
従来、データの記録および保持には、メモリが利用される。特に、長期にわたって、データをメモリ内に保持する用途には、不揮発性メモリが用いられる。ここで、不揮発性メモリとは、電源を供給しなくても記憶を保持するメモリの総称である。
【0003】
しかしながら、不揮発性メモリ(例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory))は、一般に、データの書き込みに関する繰り返し耐性が小さい。例えば、不揮発性メモリの書き込み繰り返し耐性は、その種類によって様々だが、例えば、100万回程度である。
【0004】
特許文献1は、上記のような、書き込み繰り返し耐性が比較的小さいメモリへデータを書き込む方法、および、その装置を開示する。当該特許文献1においては、メモリのメモリアドレスを3つまとめて1組とし、当該1組を構成するメモリアドレスA、B、および、Cに対し、データの書き込みを循環的に、つまり、A→B→C→A→B→・・・、のように、実行することで、メモリの書き込み繰り返し耐性を超えた回数のデータ書き込みを可能とする。特許文献1の方法においては、上記循環的なデータの書き込みにおける「循環」を管理するため、各メモリアドレスについて、実データ部へのデータの書き込みが行われる毎に所定値が書き込まれるアクセス情報部が、実データを記録する実データ部と別に、設けられる。そして、特許文献1の方法においては、アクセス情報部に書き込まれた情報にもとづいて、次に、データが書き込まれるべきメモリアドレスが決定される。そうすることで、特許文献1は、メモリに対し、その書き込み繰り返し耐性を超えた回数のデータ書き込みを可能にする。
【0005】
特許文献1が開示する発明は、当該発明が適用されるメモリに書き込まれるデータの内容について、特に、規定したり、あるいは、限定したりはしない。
【0006】
従来、特定のデータのみを記録する用途にメモリが用いられることもある。このような特定のデータの例としては、カウントデータがある。カウントデータとは、特定の値から所定値ずつインクリメントされて記録されることによって、何らかの回数をカウントするために用いられるデータである。(上記所定値が負の数であれば、カウントデータは、上記特定の値からデクリメントされつつ、順次、記録されるデータである。)カウントデータは、例えば、特定のデバイス(例えば、画像処理装置の感光体ユニット)が動作した回数を記録する用途に用いられる。
【0007】
このようなカウントデータを、書き込み繰り返し耐性が比較的小さいメモリに記録する場合には、以下に記すようにしてカウントデータをメモリへ記録し、また、データが破壊されたときにはその修復を行っている。
【0008】
例えば、メモリの1つのアドレスに対する書き込み繰り返し耐性が100万回であるメモリを用いて、300万回のカウントデータの書き込みを行う場合、3つのアドレスを用いて、3つのアドレスに対し、順次的に、カウントデータの書き込みを行う。カウントデータは、所定値ずつ増加(あるいは減少)するため、上記3つのアドレスには、所定値ずつ増加(あるいは減少)する3つの値が、記録される。
【0009】
カウントデータには、所定値ずつ増加(あるいは減少)するという性質が備わっているため、記録されたカウントデータが破壊された場合であっても、破壊されていないカウントデータの値を用いて、当該値に所定値あるいは所定値の2倍の値を加算(あるいは減算)して得られる値を、破壊されたアドレスに書き込むことで、破壊されたカウントデータを修復することができる。
【0010】
このように、メモリの1つのアドレスに対する書き込み繰り返し耐性が100万回であるメモリを用いる場合、3つのアドレスを用いることで300万回のカウントデータの書き込み、および、その修復が可能である。
【0011】
上記例と少し異なり、メモリの1つのアドレスに対する書き込み繰り返し耐性が100万回であるメモリを用いて、350万回のカウントデータの書き込みを行う用途の場合、次のようにして、350万回のカウントデータの記録を実現している。
【0012】
先ず、所定の回数(例えば、97万回)までは、先の別例と同様に、3つのアドレスに対し、順次的に、カウントデータの書き込みを行う。ここからは、先の別例とは異なり、上記3つのアドレスとは別の3つのアドレスに対し、順次的に、カウントデータの書き込みが開始される。
【0013】
このような方法論によれば、350万回のカウントデータの書き込みを行うためには、カウントデータが書き込まれる6つのアドレスと、上記3つのアドレスそれぞれに対する書き込み回数を保持するための3つのアドレスと、上記3つのアドレス群および上記別の3つのアドレス群のいずれのアドレス群をカウントデータとして使用するかを示すデータが保持されるための1つのアドレスと、の総計10個のアドレスが必要になる。
【0014】
理論上、350万回の書き込みがなされるカウントデータの記録は、100万回のデータ書き込みが可能なアドレスを4つ使えば足りる。にも拘わらず、上記従来例においては、10個のアドレスを用いて、カウントデータの記録(および破損されたカウントデータの修復)を行っていた。このことは、メモリの利用効率の観点から好ましいこととは言えない。
【特許文献1】特開平10−247165号公報
【発明の開示】
【発明が解決しようとする課題】
【0015】
上記従来の問題点を鑑み、本発明は、メモリの利用効率が向上され、かつ、破損を受けたカウントデータを修復できるカウントデータ記録装置を提供することを目的とする。
【課題を解決するための手段】
【0016】
本発明は、所定値から所定幅で単調に変化するカウント値をカウントデータとして記録装置に記録するカウントデータ記録装置であって、カウントデータを記憶する記憶部と、カウントデータを記憶部に書き込むデータ書込部と、カウントデータを記憶部から読み出すデータ読出部と、記憶部に記憶されたカウントデータの破損を検出し、該破損を修復するデータ修復部と、を有し、記憶部は、位置特定識別子によって特定され、カウントデータを記憶するカウントデータ記憶部を複数個と、カウントデータ記憶部のそれぞれと関連付けされ、第1値および第2値を示す2種類のデータから1つを択一的に記憶する極性情報データ記憶部をカウントデータ記憶部の個数と同数だけ備え、データ書込部は、複数個のカウントデータ記憶部のうちから所定の順序で循環的に1つのカウントデータ記憶部に対してカウントデータを書き込むカウントデータ書込部と、カウントデータ書込部がカウントデータを書き込んだカウントデータ記憶部と関連付けされた極性情報データ記憶部が記憶するデータの内容を、第1値と第2値との間で反転させる極性情報データ反転部と、を備え、データ修復部は、データ読出部が記憶部から読み出した、複数個のカウントデータ記憶部に記憶された複数のカウントデータについて、カウントデータの大きさで、カウントデータ記憶部の位置特定識別子を並べるカウントデータソート部と、カウントデータソート部が並べた位置特定識別子の順に沿って、互いに隣接するカウントデータ間の差分値を算出するカウントデータ差分算出部と、カウントデータソート部が並べた順に沿った位置特定識別子の並び方、カウントデータソート部が並べた順に沿ったカウントデータ間の差分値の並び方、および、カウントデータソート部が並べた順に沿った極性情報データの並び方、に基づいて、記憶部に記憶された複数のカウントデータの破損を検出して当該破損を修復する修復処理実行部と、を備える、カウントデータ記録装置である。
【0017】
本発明においては、1つの位置特定識別子が特定するカウントデータ記憶部は、2つのメモリアドレスによって特定される2つの記憶領域を有し、カウントデータは、2つの記憶領域へ分割して記憶される、ことが好ましい。
【0018】
本発明においては、所定値は、ゼロであり、所定幅は、プラス1である、ことが好ましい。
【0019】
本発明においては、所定値は、ゼロを含まない自然数であり、所定幅は、マイナス1である、ことが好ましい。
【0020】
本発明においては、カウントデータソート部は、カウントデータの大きさの降順で、カウントデータ記憶部の位置特定識別子を並べる、ことが好ましい。
【0021】
本発明においては、カウントデータソート部は、カウントデータの大きさの昇順で、カウントデータ記憶部の位置特定識別子を並べる、ことが好ましい。
【0022】
本発明においては、修復処理実行部は、カウントデータソート部が並べた順に沿って並べた極性情報データにおいて、極性情報データの値が変化する箇所の数を求め、求めた変化する箇所の数に基づいて、記憶部に記憶された複数のカウントデータの破損を検出して当該破損を修復する、ことが好ましい。
【発明の効果】
【0023】
本発明によるカウントデータ記録装置およびカウントデータ記録方法は、メモリの利用効率に優れ、かつ、記録されたカウントデータが破損を受けた場合には、当該破損を修復し、正確なカウントデータに戻すことが可能である。
【発明を実施するための最良の形態】
【0024】
本発明にかかるカウントデータ記録装置は、記憶装置の書き込み繰り返し耐性を超えてカウントデータを記録することが可能である。
【0025】
また、本発明にかかるカウントデータ記録装置は、カウントデータの破損を検出し、検出した破損を修復することが可能である。
【0026】
<カウントデータ記録装置の構成>
図1は、本発明にかかる実施の形態によるカウントデータ記録装置を示す斜視図である。本実施の形態においては、カウントデータ記録装置は、デジタル複合機(MFP)1である。MFP1は、所謂、画像形成装置であり、画像形成のためにトナーカートリッジ3、および、感光体ユニット5を、内部に備える。
【0027】
図2は、感光体ユニット5の斜視図である。感光体ユニット5は、その使用回数をカウントするカウントデータを記録するための記憶装置7を備える。記憶装置7は、データ書き込みについて、記憶領域に繰り返し書き込むことができる回数が規定されており、規定された繰り返し回数を超えて、データを書き込むことは、データ記録の安定性を損なう。
【0028】
図3は、本発明にかかる実施の形態によるカウントデータ記録装置であるMFP1のハードウェア構成を示すブロック図である。MFP1は、データ処理や装置全体の動作の制御をする中央処理装置(CPU)11、プログラムやデータを保持するランダム・アクセス・メモリ(RAM)13、プログラムやデータを保持するリード・オンリ・メモリ(ROM)15を備え、これらはデータバスにより接続され、MFP1内においてコンピュータを構成する。当該コンピュータは、カウントデータ記録用プログラムを実行することにより、カウントデータ記録装置として機能する。
【0029】
また、MFP1のコンピュータ21は、カウントデータを記録するための記憶装置7、各種デバイスとのデータ送受信をするためのI/OLSI17と接続される。I/OLSI17を介し、コンピュータ21は、出力デバイス19および入力デバイス21と接続される。
【0030】
図4は、本発明の実施の形態によるカウントデータ記録装置にかかる機能を実現するためにMFP1が備える機能を表すブロック図である。コンピュータ21は、カウントデータ記録用プログラムを実行することにより、本図に示される機能を実現する。
【0031】
コンピュータ21は、各機能ブロックを制御する制御部23、記憶装置7に対しデータを所定のアドレスに書き込むデータ書込部25、記憶装置7に記録されているカウントデータ等の破損を検出し、当該破損を修復するデータ修復部27、記憶装置7から所定のアドレスに記録されたデータを読み出すデータ読出部29、および、カウントデータ記録用プログラムの実行に必要な設定データを保持する設定データ保持部31を実現する。
【0032】
データ書込部25は、記憶装置7の所定のアドレスを有する記憶領域に、所定の形式でカウントデータを記録するカウントデータ書込部25a、および、記憶装置7の所定のアドレスを有する記憶領域に、所定の形式で極性情報データを記録する極性情報データ反転部25bを備える。
【0033】
カウントデータは、カウントデータ書込部25aによって、記憶装置7の、複数のアドレスで指定される複数の記憶領域を用いて、循環的に記録される。例えば、カウントデータは、アドレス[A]、アドレス[B]、アドレス[C]、アドレス[D]、アドレス[E]の5つのアドレスで指定される記憶領域を循環するようにして、記録される。アドレス[A]にカウントデータが記録された次の記録においては、アドレス[B]に対しカウントデータの記録が行われる。このようにして、順にアドレス[E]まで使用されると、次は、アドレス[A]にカウントデータが記録される。以下同様にして、所定数(N個)のアドレスについて、循環的に、カウントデータの記録が行われる。ここで、Nは、任意の自然数である。本発明は、Nの値について特に限定しない。但、繰り返し書き込み可能な回数がR[回](自然数)である記憶装置において、数Cminから数Cmaxまで、インクリメント幅S(負数Sは、そのSの絶対値がデクリメント幅を表す。)でカウントデータを記録する場合、少なくとも、(Cmax−Cmin+1)/S/R以上の自然数だけアドレスが必要である。記憶装置7の記憶領域の効率的使用の観点からは、(Cmax−Cmin+1)/S/R以上の最小の自然数が最も有利である。なお、1つのカウントデータが、1つのアドレスによって指定される記憶領域に記録できない場合、1つのカウントデータの記録に複数のアドレスを使用する必要が生じるが、その場合に最低限必要な、アドレスの数(N)については、当業者にとって明らかであろう。
【0034】
極性情報データとは、カウントデータが記録されるアドレスと関連付けられ、カウントデータの破損および修復に用いられるデータである。極性情報データとカウントデータの関連付けは、設定データ保持部31に保持されればよい。この、極性情報データは、第1値および第2値(例えば「1」および「0」。)の2種類の値を取り得るデータであり、通常の、(つまり、データ破損の修復でない、)カウントデータの書き込みにおいて、極性情報データ反転部25bによって、当該書き込みがなされたアドレスと関連付けられた極性情報データが、第1値と第2値との間で、書き込み直前の値から反転するように変更されて記録される。1つの極性情報データは、1ビットの記憶領域に記録できる大きさにすることができる。極性情報データは、例えば、カウントデータが記録されるアドレスの記憶領域と同一の記憶領域の先頭Pビット(Pは1以上の整数。)を用いて記録すればよい。また、極性情報データは、カウントデータが記録されるアドレスの記憶領域とは別の記憶領域を用いて記録してもよい。但、カウントデータの記録と同一のアドレス内に極性情報データを記録するほうが、メモリ使用効率の観点から有利である。
【0035】
データ修復部27は、データ読出部29が読み出した複数の所定のアドレスに記録されたカウントデータを所定の規則(降順または昇順)で並べ替え、並べ替えた結果を出力するカウントデータソート部27a、カウントデータソート部27aが並べ替えた複数のカウントデータについて互いに隣接するカウントデータ間の差分を算出するカウントデータ差分算出部27b、ならびに、カウントデータソート部27aがしたカウントデータの並べ替え、カウントデータ差分算出部27bが算出したカウントデータ差分値、および、各カウントデータ(のアドレス)と関連付けされた極性情報データに基づいて、カウントデータの破損を検出し検出された破損を修復する修復処理実行部27cを備える。
【0036】
修復処理実行部27cは、データ破損の検出のための処理、および、検出されたデータ破損の修復のための処理、を実行する。
【0037】
データ破損の検出処理は、上記並べ替えされたカウントデータの並び方とそれらに関連付けられた極性情報データの並び方とそれらの上記カウントデータ差分値の並び方との組み合わせを、正常な(データ破損が含まれない)カウントデータを上記並べ替えした場合に起こり得る、カウントデータの並び方とそれらと関連付けられた極性情報データの並び方とデータ差分値の並び方との組み合わせと比較することで、データ破損の生じているカウントデータおよびそれと関連付けられた極性情報データを特定する。上記正常なカウントデータについて起こり得る組み合わせは、データ破損の検出処理を実行する前に、予め求めておき、装置に保持されている。上記起こり得る組み合わせの数は、カウントデータの記録に用いるアドレスの数によって変化するが、用いるアドレスの数によらず有限である。
【0038】
データ破損の修復処理は、データ破損の検出処理が検出した破損を含むカウントデータについて、上記正常なカウントデータを上記並べ替えした場合に起こり得る、上記カウントデータと極性情報データとデータ差分値の並び方の組み合わせに基づいて、正常なカウントデータ値を求め、修復処理実行部27cがデータ修復の指示を出力し、当該指示にもとづいて、データ書込部25のカウントデータ書込部25aが、正常なカウントデータ値を該当する記憶領域に書き込むことによって行われる。このとき、当該修復にかかるカウントデータと関連付けられた極性情報データも修復の必要が有る場合、データ書込部25の極性情報データ反転部25bが、上記データ修復の指示に基づいて、修復されたカウントデータと関連付けられた極性情報データを反転させる。
【0039】
設定データ保持部31は、記憶装置7の、カウントデータを記録するために用意されている複数のアドレス、当該複数のアドレスに記録されるカウントデータそれぞれに関連付けて記録される極性情報データの記録されているアドレス、次回のカウントデータの記録においてカウントデータを記録するべきアドレス等を保持する。
【0040】
<記憶装置7が保持するデータの構成>
図5は、記憶装置7において、1つのアドレスによって指定される記憶領域のデータ構成を示す図である。
【0041】
アドレスとは、一般に、情報処理において、その処理の対象が存在する場所を規定する識別子である。本明細書においては、アドレスは、記憶装置7における記憶領域の位置の特定のために用いる識別子を含む。
【0042】
1つのアドレス(アドレス[X])によって特定される記憶領域は、さらに極性情報データを保持する極性情報部33pと、カウントデータを保持するカウントデータ部33と、に区分される。
【0043】
ここでは、1つのアドレスによって指定される記憶領域は、Mビット幅を有する。ここでMは、自然数である。本発明は、この自然数Mについて、特に限定しない。アドレス[X]によって指定される記憶領域は、極性情報データを記憶するための、Pビット幅を有する極性情報データ記憶部33pと、カウントデータを記憶するための、M−Pビット幅を有するカウントデータ記憶部33とで構成される。
【0044】
なお、1つのカウントデータに関連付けて記憶される1つ極性情報データは、当該1つのカウントデータが記憶されるアドレスとは異なるアドレスに記憶されてもよい。
【0045】
1つのアドレスによって特定される記憶位置の記憶容量が、1つのカウントデータを記憶するのに必要な記憶容量に満たない場合には、複数のアドレスによって特定される複数の記憶位置に、当該1つのカウントデータを分割して記憶すればよい。その場合、該複数の記憶位置に分割して記憶される1つのカウントデータに関連付けて1つの極性情報データを、任意のアドレスに記憶すればよい。このとき、該1つの極性情報データが記憶されるアドレスは、該極性情報データと関連付けられたカウントデータを記憶する複数の記憶位置のいずれかに含まれてよい。あるいは、該1つの極性情報データは、上記の複数の記憶位置とは別の記憶位置であってもよい。
【0046】
<カウントデータ記録動作>
図6は、本発明にかかる実施の形態によるカウントデータ記録装置(MFP1)がする、記憶装置7に対するカウントデータの記録の例を示す図である。
【0047】
本例では、各カウントデータは、1つのアドレスが指定する記憶領域に記録される。各カウントデータと関連付けられた極性情報データは、カウントデータと同一のアドレスに記録される。また、本例では、カウントデータを記録するために設定されるアドレスは、5つに設定される。つまり、本例では、5つのアドレス([A]、[B]、[C]、[D]、[E])それぞれに、カウントデータと、極性情報データとが記録される。カウントデータの記録は、アドレスに関し、[A]→[B]→[C]→[D]→[E]→[A]→[B]→・・・の順に、循環的に行われる。
【0048】
初期状態において、アドレス[A]、アドレス[B]、アドレス[C]、アドレス[D]、アドレス[E]、のカウントデータは、それぞれ、−4、−3、−2、−1、0である。これは、カウント値の開始値が1である場合の初期状態である。極性情報データは、全てのアドレスにおいて、0(第2値)である。初期状態において、極性情報データは、全てのアドレスにおいて、同一である必要がある。但、その値は、1(第1値)であってもかまわない。
【0049】
第1回目のカウントデータの書き込みは、アドレス[A]に対して行われる。カウント数「1」の行は、第1回目のカウントデータの書き込みが完了した時点の、各アドレスにおいて保持されるデータの値を示す。第1回目のカウントデータの書き込みにおいては、カウントデータ書込部25aが、アドレス[A]に、カウントデータ「1」を書き込み、極性情報データ反転部25bが、その極性情報データを反転させて「1」にする。
【0050】
本例においては、以降、インクリメント幅「1」で、カウントデータの書き込みが行われる。
【0051】
カウント数「5」が、アドレス[E]に対して書き込まれた次の書き込みでは、アドレス[A]にカウントデータ「6」が書き込まれ、極性情報データは、再度反転されることにより「0」に戻る。
【0052】
以下同様にして、カウントデータは、5つのアドレスに対して、循環的に書き込まれて保持される。
【0053】
<カウントデータ修復動作>
≪破損検出の原理≫
図7は、図6における各行(各カウント値)について、カウントデータの値の大きさで降順にアドレスを並べ替えたときのアドレスの並び方を示す図である。なお、インクリメント幅が負の数である場合、アドレスを、カウントデータの大きさの昇順に並べ替えることになる。いずれの場合も、破損検出の原理は、同一である。
【0054】
例えば、カウント数「6」の場合を見れば、アドレスの並び方は、
[A]→[E]→[D]→[C]→[B]となり、その並び方において、
極性情報データの並び方は、
「0」→「1」→「1」→「1」→「1」となる。
【0055】
また、例えば、カウント数「11」の場合を見れば、アドレスの並び方は、
[A]→[E]→[D]→[C]→[B]となるが、その並び方において、
極性情報データの並び方は、
「1」→「0」→「0」→「0」→「0」となる。
【0056】
一般に、5つのアドレス([A][B][C][D][E])を用いてカウントデータを循環的に記録する場合、正常なカウントデータが記録されている状態でカウントデータの大きさの降順でアドレスを並び替えると、
[E]→[D]→[C]→[B]→[A]、
[A]→[E]→[D]→[C]→[B]、
[B]→[A]→[E]→[D]→[C]、
[C]→[B]→[A]→[E]→[D]、
[D]→[C]→[B]→[A]→[E]、の5通りが、カウント値順に現れる。
【0057】
各並び方について、極性情報データの並び方は、2通り現れる。
例えば、
[B]→[A]→[E]→[D]→[C]の順にアドレスが並ぶときは(例えば、カウント値「12」やカウント値「17」のときは)、極性情報データの並び方は、
「1」→「1」→「0」→「0」→「0」、または、
「0」→「0」→「1」→「1」→「1」、の2通りが交代的に現れる。
【0058】
ここでは、アドレスの並び方[B]→[A]→[E]→[D]→[C]について例示したが、他の並び方についても同様のことがいえる。
【0059】
つまり、アドレスをN個用いて、循環的にカウントデータを書き込むと、正常なカウントデータが記録されている状況では、カウントデータの大きさでアドレスを並び替えた場合、アドレスの並び方は、N通り存在する。そして、各アドレスの並び方について、極性情報データの並び方は、常に、2通り存在するから、正常なカウントデータが記録されている状況では、アドレスの並び方と極性情報データの並び方との組み合わせは、2×N通り存在する。
【0060】
次に、図8を参照し、アドレスをカウントデータの降順に並べ替えたときに隣接するアドレスに記録されたカウントデータ間の差分値について考察する。
【0061】
図8は、正常なカウントデータが記録されている状況における、アドレスをカウントデータの降順に並べ替えたときに隣接するアドレスに記録されたカウントデータ間の差分値を示す図である。このように、正常なカウントデータが記録され続ける限り、アドレスをカウントデータの降順に並べ替えたときに隣接するアドレスに記録されたカウントデータ間の差分値は、全て、常に、インクリメント幅(本例における「1」)と一致する。
【0062】
図9は、アドレスをカウントデータの降順で並べ替えた時に起こり得るアドレスの並び方の一覧である。このように、起こり得る、アドレスの並び方は、5通り(N通り)である。
【0063】
図10は、アドレスをカウントデータの降順で並べ替えた時に起こり得る、各アドレスと関連付けられた極性情報データの並び方の一覧である。このように、起こり得る、極性情報データの並び方は、10通り(2×N通り)である。
【0064】
また、アドレスの並び方(図9)と、極性情報データの並び方(図10)とは、相互に関連して現れる。
【0065】
図11は、アドレスの並び方(「アドレス組み合わせ」)と、その並び方において起こり得る極性情報の並び方(「極性情報組み合わせ」)についてまとめた表である。このように、起こり得る『「アドレス組み合わせ」と「極性情報組み合わせ」との組み合わせ』は、2×N通り存在する。
【0066】
≪破損検出処理および破損修復処理の流れ≫
これより、図12、図13、図14AおよびB、図15AおよびB、図16AおよびB、図17AおよびB、図18AおよびBを参照し、破損検出処理および破損修復処理について説明する。
図12は、カウントデータ破損の検出および修復のメインフローのフローチャートである。
図13は、図12においてステップS201としたカウントデータ修復処理選択処理のフローチャートである。
図14AおよびBないし図18AおよびBは、それぞれ、図13において、ステップS301a、ステップS301b、ステップS301c、ステップS301d、ステップS301e、とした、カウントデータ修復処理A、カウントデータ修復処理B、カウントデータ修復処理C、カウントデータ修復処理D、カウントデータ修復処理E、のフローチャートである。
【0067】
先ず、図12を参照する。
【0068】
ステップS101において、カウントデータ記録装置(MFP1)のカウントデータソート部27aは、アドレスを、各アドレスに記録されているカウントデータの値の降順に、並び替えする。
【0069】
ステップS103において、カウントデータ差分算出部27bは、ステップS101で並び替えされたアドレスの並び方において隣接し合うアドレスに記録されたカウントデータ間の差分を算出する。
【0070】
ステップS105において、修復処理実行部27cは、各アドレスに関連付けられた極性情報データをステップS101で並び替えされたアドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。つまり、上記した並び方において隣接した極性情報データにおいてその値が、第1値から第2値へ(「1」から「0」へ)、および、第2値から第1値へ(「0」から「1」へ)変化している箇所の数を求める。
【0071】
ステップS107において、修復処理実行部27cは、ステップS105で求めた極性情報データ値変化回数にもとづき、以降の処理を分岐させる。極性情報データ値変化回数が、0回の場合(ステップS107における「極性情報変化回数0回」)、処理は、ステップS109へ移行する。極性情報データ値変化回数が、1回の場合(ステップS107における「極性情報変化回数1回」)、処理は、ステップS201へ移行する。極性情報データ値変化回数が、2回以上の場合(ステップS107における「極性情報変化回数2回以上」)、処理は、ステップS111へ移行する。
【0072】
{極性情報データ値変化回数が0回の場合の処理}
ステップS109において、修復処理実行部27cは、カウントデータ値間差分値が全て1(インクリメント幅S)であり、かつ、ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[5](図9参照。)であるか、否か、について判定する。
カウントデータ値間差分値が全て1(インクリメント幅S)であり、かつ、ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[5](図9参照。)である場合(ステップS109における「YES」)、処理は、終了する。つまり、データ破損は生じていないと判断され、破損検出処理は終了される。
1(インクリメント幅S)でないカウントデータ値間差分値が存在する場合、および、ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[5](図9参照。)でない場合のいずれかに該当する場合(ステップS109における「NO」)、処理は、ステップS301e(カウントデータ修復処理E(詳細は図18AおよびB))へ移行する。
【0073】
{極性情報データ値変化回数が1回の場合の処理}
処理は、ステップS201(カウントデータ修復処理選択処理)へ移行する。カウントデータ修復処理選択処理ステップS201については、後で図13を参照して詳述する。
【0074】
{極性情報データ値変化回数が2回の場合の処理}
ステップS111において、修復処理実行部27cは、カウントデータ値間差分値が全て1(インクリメント幅S)である場合、ならびに、ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[1]、[2]、[3]、[4]、および、[5](図9参照。)のいずれかである場合、のいずれかに該当するか、否か、について判定する。
カウントデータ値間差分値が全て1(インクリメント幅S)である場合、ならびに、ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[1]、[2]、[3]、[4]、および、[5](図9参照。)のいずれかである場合、のいずれかに該当する場合(ステップS111における「YES」)、処理は、ステップS201(カウントデータ修復処理選択処理)へ移行する。
1(インクリメント幅S)でないカウントデータ値間差分値が存在し、かつ、ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[1]、[2]、[3]、[4]、および、[5](図9参照。)のいずれにも該当しない場合(ステップS111における「NO」)、処理は、ステップS113へ移行する。
【0075】
ステップS113において、修復処理実行部27cは、正しく修復できないデータ破損が生じていると判断し、その旨を示唆する情報を出力し、処理を終了する。
【0076】
{カウントデータ修復処理選択処理の流れ(ステップS201詳細)}
これより、図13を参照し、カウントデータ修復処理選択処理(図12におけるステップS201)について説明する。カウントデータ修復処理選択処理は、修復処理実行部27cが行うデータ破損検出のための処理の一部である。
【0077】
ステップS203において、修復処理実行部27cは、ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[1]、[2]、[3]、[4]、および、[5](図9参照。)のいずれかに該当するか、否か、判定する。
ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[1]、[2]、[3]、[4]、および、[5](図9参照。)のいずれかに該当する、と判定した場合(ステップS203における「YES」)、処理は、ステップS205へ移行する。
ステップS101で並び替えられたアドレスの並び方が、アドレス組み合わせGr.[1]、[2]、[3]、[4]、および、[5](図9参照。)のいずれにも該当しない、と判定した場合(ステップS203における「NO」)、処理は、ステップS209へ移行する。
【0078】
ステップS205において、修復処理実行部27cは、カウントデータ値間差分値が全て1(インクリメント幅S)であるか、否か、について判定する。
カウントデータ値間差分値が全て1(インクリメント幅S)である、と判定した場合(ステップS205における「YES」)、カウントデータ修復処理選択処理は終了し、メインフロー(図12)へ戻る。
1(インクリメント幅S)でないカウントデータ値間差分値が存在する、と判定した場合(ステップS205における「NO」)、処理は、ステップS207へ移行する。
【0079】
ステップS207において、修復処理実行部27cは、ステップS101で並び替えられたアドレスの並び方にもとづき、以降の処理を分岐させる。
該並び方が、アドレス組み合わせGr.[1](図9参照。)である場合、処理は、ステップS301a(カウントデータ修復処理A)へ移行する。
該並び方が、アドレス組み合わせGr.[2](図9参照。)である場合、処理は、ステップS301b(カウントデータ修復処理B)へ移行する。
該並び方が、アドレス組み合わせGr.[3](図9参照。)である場合、処理は、ステップS301c(カウントデータ修復処理C)へ移行する。
該並び方が、アドレス組み合わせGr.[4](図9参照。)である場合、処理は、ステップS301d(カウントデータ修復処理D)へ移行する。
該並び方が、アドレス組み合わせGr.[5](図9参照。)である場合、処理は、ステップS301e(カウントデータ修復処理E)へ移行する。
カウントデータ修復処理A、B、C、D、E(ステップS301a、b、c、d、e)の詳細については、それぞれ、図14AおよびB、図15AおよびB、図16AおよびB、図17AおよびB、図18AおよびBを参照し、後述する。
【0080】
次に、処理が、ステップS203から、ステップS209へ移行した後の処理について説明する。
【0081】
ステップS209において、修復処理実行部27cは、アドレス[A]、[B]、[C]、[D]、[E]に記録されているカウントデータのなかで、最大のカウントデータを保持しているアドレスを求める。具体的には、ステップS101で並び替えられたアドレスの並びの先頭にあるアドレスを特定する。(インクリメント幅が、負数の場合には、最小のカウントデータを保持しているアドレスを求める。)
【0082】
ステップS211において、修復処理実行部27cは、ステップS209で求めた最大のカウントデータを保持するアドレスにもとづいて、以降の処理を分岐させる。
該アドレスが、アドレス[A]である場合、処理は、ステップS301a(カウントデータ修復処理A)へ移行する。
該アドレスが、アドレス[B]である場合、処理は、ステップS301b(カウントデータ修復処理B)へ移行する。
該アドレスが、アドレス[C]である場合、処理は、ステップS301c(カウントデータ修復処理C)へ移行する。
該アドレスが、アドレス[D]である場合、処理は、ステップS301d(カウントデータ修復処理D)へ移行する。
該アドレスが、アドレス[E]である場合、処理は、ステップS301e(カウントデータ修復処理E)へ移行する。
カウントデータ修復処理A、B、C、D、E(ステップS301a、b、c、d、e)の詳細については、それぞれ、図14AおよびB、図15AおよびB、図16AおよびB、図17AおよびB、図18AおよびBを参照し、以下に説明する。
【0083】
{カウントデータ修復処理A(ステップS301a)}
図14AおよびBは、カウントデータ修復処理A(図13におけるステップS301a)の処理の詳細を示すフローチャートである。カウントデータ修復処理Aは、主として修復処理実行部27cが行う処理である。ただし、カウントデータの修復(正しいカウントデータの書き込み)は、修復処理実行部27cの出力に基づいてデータ書込部25が行う。
【0084】
ステップS303aにおいて、修復処理実行部27cは、アドレス[A]の極性情報データ(表現に正確を期すならば、アドレス[A]に関連付けられた極性情報データ)が、「1」(第1値)であるか、否かについて判定する。
アドレス[A]の極性情報データが、「1」(第1値)である場合(ステップS303aにおける「YES」)、処理は、ステップS305aへ移行する。
アドレス[A]の極性情報データが、「1」(第1値)でない場合(ステップS303aにおける「NO」)、処理は、ステップS331aへ移行する。
【0085】
ステップS305aにおいて、修復処理実行部27cは、現在記録されている全てのカウントデータが正常であるなら、ステップS101で並び替えられたアドレスの並び方は、アドレス組み合わせGr.[1](図9)に一致し、かつ、ステップS101で並び替えられたアドレスの並び方に沿って見た極性情報データの並び方は、極性情報組み合わせGr.[1](図10)に一致する、と認識する。
修復処理実行部27cは、以下の処理においては、アドレス組み合わせGr.[1](図9)および極性情報組み合わせGr.[1](図10)に従ってカウントデータの修復を行う。
【0086】
ステップS307aにおいて、修復処理実行部27cは、現在アドレス[A]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0087】
ステップS309aにおいて、修復処理実行部27cは、ステップS307aで求めた修復用カウントデータ(アドレス[A]のカウントデータから1を引いた値)と、現在アドレス[E]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[E]に関連付けられた極性情報データの値が0(第2値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS305aに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[1](図9)、および、極性情報組み合わせGr.[1](図10)に従う、との認識にもとづく。
ステップS307aで求めた修復用カウントデータ(アドレス[A]のカウントデータから1を引いた値)と、現在アドレス[E]に記録されているカウントデータの値とが一致し、かつ、アドレス[E]に関連付けられた極性情報データの値が0(第2値)である、と判定された場合(ステップS309aにおける「YES」)、処理は、ステップS313aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[E]に記録されたカウントデータおよびアドレス[E]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[E]に記録されているカウントデータの値とが一致しないか、または、アドレス[E]に関連付けられた極性情報データの値が0(第2値)でない、場合(ステップS309aにおける「NO」)、処理は、ステップS311aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[E]に記録されたカウントデータおよびアドレス[E]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0088】
ステップS311aにおいて、修復処理実行部27cは、アドレス[E]のカウントデータの値を、ステップS307aで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[E]の極性情報データを、「0」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25aに、アドレス[E]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[E]に関連付けられた極性情報データが「0」になるように、適宜動作させる。
【0089】
ステップS313aにおいて、修復処理実行部27cは、現在アドレス[E]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0090】
ステップS315aにおいて、修復処理実行部27cは、ステップS313aで求めた修復用カウントデータ(アドレス[E]のカウントデータから1を引いた値)と、現在アドレス[D]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[D]に関連付けられた極性情報データの値が0(第2値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS305aに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[1](図9)、および、極性情報組み合わせGr.[1](図10)に従う、との認識にもとづく。
ステップS313aで求めた修復用カウントデータ(アドレス[E]のカウントデータから1を引いた値)と、現在アドレス[D]に記録されているカウントデータの値とが一致し、かつ、アドレス[D]に関連付けられた極性情報データの値が0(第2値)である、と判定された場合(ステップS315aにおける「YES」)、処理は、ステップS313aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[D]に記録されたカウントデータおよびアドレス[D]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[D]に記録されているカウントデータの値とが一致しないか、または、アドレス[D]に関連付けられた極性情報データの値が0(第2値)でない、場合(ステップS315aにおける「NO」)、処理は、ステップS317aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[D]に記録されたカウントデータおよびアドレス[D]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0091】
ステップS317aにおいて、修復処理実行部27cは、アドレス[D]のカウントデータの値を、ステップS313aで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[D]の極性情報データを、「0」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25aに、アドレス[D]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[D]に関連付けられた極性情報データが「0」になるように、適宜動作させる。
【0092】
ステップS319aにおいて、修復処理実行部27cは、現在アドレス[D]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0093】
ステップS321aにおいて、修復処理実行部27cは、ステップS319aで求めた修復用カウントデータ(アドレス[D]のカウントデータから1を引いた値)と、現在アドレス[C]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[C]に関連付けられた極性情報データの値が0(第2値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS305aに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[1](図9)、および、極性情報組み合わせGr.[1](図10)に従う、との認識にもとづく。
ステップS319aで求めた修復用カウントデータ(アドレス[D]のカウントデータから1を引いた値)と、現在アドレス[C]に記録されているカウントデータの値とが一致し、かつ、アドレス[C]に関連付けられた極性情報データの値が0(第2値)である、と判定された場合(ステップS321aにおける「YES」)、処理は、ステップS313aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[C]に記録されたカウントデータおよびアドレス[C]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[C]に記録されているカウントデータの値とが一致しないか、または、アドレス[C]に関連付けられた極性情報データの値が0(第2値)でない、場合(ステップS321aにおける「NO」)、処理は、ステップS321aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[C]に記録されたカウントデータおよびアドレス[C]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0094】
ステップS323aにおいて、修復処理実行部27cは、アドレス[C]のカウントデータの値を、ステップS319aで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[C]の極性情報データを、「0」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25aに、アドレス[C]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[C]に関連付けられた極性情報データが「0」になるように、適宜動作させる。
【0095】
ステップS325aにおいて、修復処理実行部27cは、現在アドレス[C]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0096】
ステップS327aにおいて、修復処理実行部27cは、ステップS325aで求めた修復用カウントデータ(アドレス[C]のカウントデータから1を引いた値)と、現在アドレス[B]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[B]に関連付けられた極性情報データの値が0(第2値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS305aに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[1](図9)、および、極性情報組み合わせGr.[1](図10)に従う、との認識にもとづく。
ステップS325aで求めた修復用カウントデータ(アドレス[C]のカウントデータから1を引いた値)と、現在アドレス[B]に記録されているカウントデータの値とが一致し、かつ、アドレス[B]に関連付けられた極性情報データの値が0(第2値)である、と判定された場合(ステップS327aにおける「YES」)、処理は、ステップS313aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[B]に記録されたカウントデータおよびアドレス[B]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[B]に記録されているカウントデータの値とが一致しないか、または、アドレス[B]に関連付けられた極性情報データの値が0(第2値)でない、場合(ステップS327aにおける「NO」)、処理は、ステップS329aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[B]に記録されたカウントデータおよびアドレス[B]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0097】
ステップS329aにおいて、修復処理実行部27cは、アドレス[B]のカウントデータの値を、ステップS325aで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[B]の極性情報データを、「0」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25aに、アドレス[B]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[B]に関連付けられた極性情報データが「0」になるように、適宜動作させる。
【0098】
次に、処理が、ステップS303aから、ステップS331aへ移行した後の処理について説明する。
【0099】
ステップS331aにおいて、修復処理実行部27cは、現在記録されている全てのカウントデータが正常であるなら、ステップS101で並び替えられたアドレスの並び方は、アドレス組み合わせGr.[1](図9)に一致し、かつ、ステップS101で並び替えられたアドレスの並び方に沿って見た極性情報データの並び方は、極性情報組み合わせGr.[2](図10)に一致する、と認識する。
修復処理実行部27cは、以下の処理においては、アドレス組み合わせGr.[1](図9)および極性情報組み合わせGr.[2](図10)に従ってカウントデータの修復を行う。
【0100】
ステップS333aにおいて、修復処理実行部27cは、現在アドレス[A]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0101】
ステップS335aにおいて、修復処理実行部27cは、ステップS333aで求めた修復用カウントデータ(アドレス[A]のカウントデータから1を引いた値)と、現在アドレス[E]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[E]に関連付けられた極性情報データの値が1(第1値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS331aに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[1](図9)、および、極性情報組み合わせGr.[2](図10)に従う、との認識にもとづく。
ステップS333aで求めた修復用カウントデータ(アドレス[A]のカウントデータから1を引いた値)と、現在アドレス[E]に記録されているカウントデータの値とが一致し、かつ、アドレス[E]に関連付けられた極性情報データの値が1(第1値)である、と判定された場合(ステップS335aにおける「YES」)、処理は、ステップS339aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[E]に記録されたカウントデータおよびアドレス[E]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[E]に記録されているカウントデータの値とが一致しないか、または、アドレス[E]に関連付けられた極性情報データの値が1(第1値)でない、場合(ステップS335aにおける「NO」)、処理は、ステップS337aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[E]に記録されたカウントデータおよびアドレス[E]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0102】
ステップS337aにおいて、修復処理実行部27cは、アドレス[E]のカウントデータの値を、ステップS333aで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[E]の極性情報データを、「1」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25aに、アドレス[E]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[E]に関連付けられた極性情報データが「1」になるように、適宜動作させる。
【0103】
ステップS339aにおいて、修復処理実行部27cは、現在アドレス[E]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0104】
ステップS341aにおいて、修復処理実行部27cは、ステップS339aで求めた修復用カウントデータ(アドレス[E]のカウントデータから1を引いた値)と、現在アドレス[D]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[D]に関連付けられた極性情報データの値が1(第1値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS331aに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[1](図9)、および、極性情報組み合わせGr.[2](図10)に従う、との認識にもとづく。
ステップS339aで求めた修復用カウントデータ(アドレス[E]のカウントデータから1を引いた値)と、現在アドレス[D]に記録されているカウントデータの値とが一致し、かつ、アドレス[D]に関連付けられた極性情報データの値が1(第1値)である、と判定された場合(ステップS341aにおける「YES」)、処理は、ステップS339aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[D]に記録されたカウントデータおよびアドレス[D]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[D]に記録されているカウントデータの値とが一致しないか、または、アドレス[D]に関連付けられた極性情報データの値が1(第1値)でない、場合(ステップS341aにおける「NO」)、処理は、ステップS343aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[D]に記録されたカウントデータおよびアドレス[D]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0105】
ステップS343aにおいて、修復処理実行部27cは、アドレス[D]のカウントデータの値を、ステップS339aで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[D]の極性情報データを、「1」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25aに、アドレス[D]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[D]に関連付けられた極性情報データが「1」になるように、適宜動作させる。
【0106】
ステップS345aにおいて、修復処理実行部27cは、現在アドレス[D]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0107】
ステップS347aにおいて、修復処理実行部27cは、ステップS345aで求めた修復用カウントデータ(アドレス[D]のカウントデータから1を引いた値)と、現在アドレス[C]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[C]に関連付けられた極性情報データの値が1(第1値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS331aに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[1](図9)、および、極性情報組み合わせGr.[2](図10)に従う、との認識にもとづく。
ステップS345aで求めた修復用カウントデータ(アドレス[D]のカウントデータから1を引いた値)と、現在アドレス[C]に記録されているカウントデータの値とが一致し、かつ、アドレス[C]に関連付けられた極性情報データの値が1(第1値)である、と判定された場合(ステップS347aにおける「YES」)、処理は、ステップS339aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[C]に記録されたカウントデータおよびアドレス[C]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[C]に記録されているカウントデータの値とが一致しないか、または、アドレス[C]に関連付けられた極性情報データの値が1(第1値)でない、場合(ステップS347aにおける「NO」)、処理は、ステップS347aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[C]に記録されたカウントデータおよびアドレス[C]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0108】
ステップS349aにおいて、修復処理実行部27cは、アドレス[C]のカウントデータの値を、ステップS345aで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[C]の極性情報データを、「1」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25aに、アドレス[C]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[C]に関連付けられた極性情報データが「1」になるように、適宜動作させる。
【0109】
ステップS351aにおいて、修復処理実行部27cは、現在アドレス[C]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0110】
ステップS353aにおいて、修復処理実行部27cは、ステップS351aで求めた修復用カウントデータ(アドレス[C]のカウントデータから1を引いた値)と、現在アドレス[B]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[B]に関連付けられた極性情報データの値が1(第1値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS331aに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[1](図9)、および、極性情報組み合わせGr.[2](図10)に従う、との認識にもとづく。
ステップS351aで求めた修復用カウントデータ(アドレス[C]のカウントデータから1を引いた値)と、現在アドレス[B]に記録されているカウントデータの値とが一致し、かつ、アドレス[B]に関連付けられた極性情報データの値が1(第1値)である、と判定された場合(ステップS353aにおける「YES」)、処理は、ステップS339aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[B]に記録されたカウントデータおよびアドレス[B]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[B]に記録されているカウントデータの値とが一致しないか、または、アドレス[B]に関連付けられた極性情報データの値が1(第1値)でない、場合(ステップS353aにおける「NO」)、処理は、ステップS355aへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[B]に記録されたカウントデータおよびアドレス[B]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0111】
ステップS355aにおいて、修復処理実行部27cは、アドレス[B]のカウントデータの値を、ステップS351aで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[B]の極性情報データを、「1」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25aに、アドレス[B]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[B]に関連付けられた極性情報データが「1」になるように、適宜動作させる。
【0112】
このように、カウントデータ修復処理Aにおいては、アドレス[A]のカウントデータおよびアドレス[A]に関連付けられた極性情報データを基準として、アドレス[E]、アドレス[D]、アドレス[C]、アドレス[B]のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせGr.[1](図9)ならびに極性情報組み合わせGr.[1]もしくは極性情報組み合わせGr.[2](図10)に一致するように、カウントデータの値および極性情報データの値を修正する。
【0113】
{カウントデータ修復処理B(ステップS301b)}
図15AおよびBは、カウントデータ修復処理B(図13におけるステップS301b)の処理の詳細を示すフローチャートである。カウントデータ修復処理Bは、主として修復処理実行部27cが行う処理である。ただし、カウントデータの修復(正しいカウントデータの書き込み)は、修復処理実行部27cの出力に基づいてデータ書込部25が行う。
【0114】
ステップS303bにおいて、修復処理実行部27cは、アドレス[B]の極性情報データ(表現に正確を期すならば、アドレス[B]に関連付けられた極性情報データ)が、「1」(第1値)であるか、否かについて判定する。
アドレス[B]の極性情報データが、「1」(第1値)である場合(ステップS303bにおける「YES」)、処理は、ステップS305bへ移行する。
アドレス[B]の極性情報データが、「1」(第1値)でない場合(ステップS303bにおける「NO」)、処理は、ステップS331bへ移行する。
【0115】
ステップS305bにおいて、修復処理実行部27cは、現在記録されている全てのカウントデータが正常であるなら、ステップS101で並び替えられたアドレスの並び方は、アドレス組み合わせGr.[2](図9)に一致し、かつ、ステップS101で並び替えられたアドレスの並び方に沿って見た極性情報データの並び方は、極性情報組み合わせGr.[3](図10)に一致する、と認識する。
修復処理実行部27cは、以下の処理においては、アドレス組み合わせGr.[2](図9)および極性情報組み合わせGr.[3](図10)に従ってカウントデータの修復を行う。
【0116】
ステップS307bにおいて、修復処理実行部27cは、現在アドレス[B]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0117】
ステップS309bにおいて、修復処理実行部27cは、ステップS307bで求めた修復用カウントデータ(アドレス[B]のカウントデータから1を引いた値)と、現在アドレス[A]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[A]に関連付けられた極性情報データの値が1(第1値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS305bに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[2](図9)、および、極性情報組み合わせGr.[3](図10)に従う、との認識にもとづく。
ステップS307bで求めた修復用カウントデータ(アドレス[B]のカウントデータから1を引いた値)と、現在アドレス[A]に記録されているカウントデータの値とが一致し、かつ、アドレス[A]に関連付けられた極性情報データの値が1(第1値)である、と判定された場合(ステップS309bにおける「YES」)、処理は、ステップS313bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[A]に記録されたカウントデータおよびアドレス[A]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[A]に記録されているカウントデータの値とが一致しないか、または、アドレス[A]に関連付けられた極性情報データの値が1(第1値)でない、場合(ステップS309bにおける「NO」)、処理は、ステップS311bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[A]に記録されたカウントデータおよびアドレス[A]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0118】
ステップS311bにおいて、修復処理実行部27cは、アドレス[A]のカウントデータの値を、ステップS307bで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[A]の極性情報データを、「1」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25bに、アドレス[A]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[A]に関連付けられた極性情報データが「1」になるように、適宜動作させる。
【0119】
ステップS313bにおいて、修復処理実行部27cは、現在アドレス[A]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0120】
ステップS315bにおいて、修復処理実行部27cは、ステップS313bで求めた修復用カウントデータ(アドレス[A]のカウントデータから1を引いた値)と、現在アドレス[E]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[E]に関連付けられた極性情報データの値が0(第2値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS305bに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[2](図9)、および、極性情報組み合わせGr.[3](図10)に従う、との認識にもとづく。
ステップS313bで求めた修復用カウントデータ(アドレス[A]のカウントデータから1を引いた値)と、現在アドレス[E]に記録されているカウントデータの値とが一致し、かつ、アドレス[E]に関連付けられた極性情報データの値が0(第2値)である、と判定された場合(ステップS315bにおける「YES」)、処理は、ステップS313bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[E]に記録されたカウントデータおよびアドレス[E]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[E]に記録されているカウントデータの値とが一致しないか、または、アドレス[E]に関連付けられた極性情報データの値が0(第2値)でない、場合(ステップS315bにおける「NO」)、処理は、ステップS317bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[E]に記録されたカウントデータおよびアドレス[E]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0121】
ステップS317bにおいて、修復処理実行部27cは、アドレス[E]のカウントデータの値を、ステップS313bで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[E]の極性情報データを、「0」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25bに、アドレス[E]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[E]に関連付けられた極性情報データが「0」になるように、適宜動作させる。
【0122】
ステップS319bにおいて、修復処理実行部27cは、現在アドレス[E]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0123】
ステップS321bにおいて、修復処理実行部27cは、ステップS319bで求めた修復用カウントデータ(アドレス[E]のカウントデータから1を引いた値)と、現在アドレス[D]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[D]に関連付けられた極性情報データの値が0(第2値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS305bに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[2](図9)、および、極性情報組み合わせGr.[3](図10)に従う、との認識にもとづく。
ステップS319bで求めた修復用カウントデータ(アドレス[E]のカウントデータから1を引いた値)と、現在アドレス[D]に記録されているカウントデータの値とが一致し、かつ、アドレス[D]に関連付けられた極性情報データの値が0(第2値)である、と判定された場合(ステップS321bにおける「YES」)、処理は、ステップS313bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[D]に記録されたカウントデータおよびアドレス[D]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[D]に記録されているカウントデータの値とが一致しないか、または、アドレス[D]に関連付けられた極性情報データの値が0(第2値)でない、場合(ステップS321bにおける「NO」)、処理は、ステップS321bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[D]に記録されたカウントデータおよびアドレス[D]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0124】
ステップS323bにおいて、修復処理実行部27cは、アドレス[D]のカウントデータの値を、ステップS319bで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[D]の極性情報データを、「0」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25bに、アドレス[D]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[D]に関連付けられた極性情報データが「0」になるように、適宜動作させる。
【0125】
ステップS325bにおいて、修復処理実行部27cは、現在アドレス[D]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0126】
ステップS327bにおいて、修復処理実行部27cは、ステップS325bで求めた修復用カウントデータ(アドレス[D]のカウントデータから1を引いた値)と、現在アドレス[C]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[C]に関連付けられた極性情報データの値が0(第2値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS305bに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[2](図9)、および、極性情報組み合わせGr.[3](図10)に従う、との認識にもとづく。
ステップS325bで求めた修復用カウントデータ(アドレス[D]のカウントデータから1を引いた値)と、現在アドレス[C]に記録されているカウントデータの値とが一致し、かつ、アドレス[C]に関連付けられた極性情報データの値が0(第2値)である、と判定された場合(ステップS327bにおける「YES」)、処理は、ステップS313bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[C]に記録されたカウントデータおよびアドレス[C]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[C]に記録されているカウントデータの値とが一致しないか、または、アドレス[C]に関連付けられた極性情報データの値が0(第2値)でない、場合(ステップS327bにおける「NO」)、処理は、ステップS329bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[C]に記録されたカウントデータおよびアドレス[C]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0127】
ステップS329bにおいて、修復処理実行部27cは、アドレス[C]のカウントデータの値を、ステップS325bで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[C]の極性情報データを、「0」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25bに、アドレス[C]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[C]に関連付けられた極性情報データが「0」になるように、適宜動作させる。
【0128】
次に、処理が、ステップS303bから、ステップS331bへ移行した後の処理について説明する。
【0129】
ステップS331bにおいて、修復処理実行部27cは、現在記録されている全てのカウントデータが正常であるなら、ステップS101で並び替えられたアドレスの並び方は、アドレス組み合わせGr.[2](図9)に一致し、かつ、ステップS101で並び替えられたアドレスの並び方に沿って見た極性情報データの並び方は、極性情報組み合わせGr.[4](図10)に一致する、と認識する。
修復処理実行部27cは、以下の処理においては、アドレス組み合わせGr.[2](図9)および極性情報組み合わせGr.[4](図10)に従ってカウントデータの修復を行う。
【0130】
ステップS333bにおいて、修復処理実行部27cは、現在アドレス[B]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0131】
ステップS335bにおいて、修復処理実行部27cは、ステップS333bで求めた修復用カウントデータ(アドレス[B]のカウントデータから1を引いた値)と、現在アドレス[A]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[A]に関連付けられた極性情報データの値が0(第2値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS331bに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[2](図9)、および、極性情報組み合わせGr.[4](図10)に従う、との認識にもとづく。
ステップS333bで求めた修復用カウントデータ(アドレス[B]のカウントデータから1を引いた値)と、現在アドレス[A]に記録されているカウントデータの値とが一致し、かつ、アドレス[A]に関連付けられた極性情報データの値が0(第2値)である、と判定された場合(ステップS335bにおける「YES」)、処理は、ステップS339bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[A]に記録されたカウントデータおよびアドレス[A]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[A]に記録されているカウントデータの値とが一致しないか、または、アドレス[A]に関連付けられた極性情報データの値が0(第2値)でない、場合(ステップS335bにおける「NO」)、処理は、ステップS337bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[A]に記録されたカウントデータおよびアドレス[A]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0132】
ステップS337bにおいて、修復処理実行部27cは、アドレス[A]のカウントデータの値を、ステップS333bで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[A]の極性情報データを、「0」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25bに、アドレス[A]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[A]に関連付けられた極性情報データが「0」になるように、適宜動作させる。
【0133】
ステップS339bにおいて、修復処理実行部27cは、現在アドレス[A]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0134】
ステップS341bにおいて、修復処理実行部27cは、ステップS339bで求めた修復用カウントデータ(アドレス[A]のカウントデータから1を引いた値)と、現在アドレス[E]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[E]に関連付けられた極性情報データの値が1(第1値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS331bに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[2](図9)、および、極性情報組み合わせGr.[4](図10)に従う、との認識にもとづく。
ステップS339bで求めた修復用カウントデータ(アドレス[A]のカウントデータから1を引いた値)と、現在アドレス[E]に記録されているカウントデータの値とが一致し、かつ、アドレス[E]に関連付けられた極性情報データの値が1(第1値)である、と判定された場合(ステップS341bにおける「YES」)、処理は、ステップS339bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[E]に記録されたカウントデータおよびアドレス[E]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[E]に記録されているカウントデータの値とが一致しないか、または、アドレス[E]に関連付けられた極性情報データの値が1(第1値)でない、場合(ステップS341bにおける「NO」)、処理は、ステップS343bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[E]に記録されたカウントデータおよびアドレス[E]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0135】
ステップS343bにおいて、修復処理実行部27cは、アドレス[E]のカウントデータの値を、ステップS339bで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[E]の極性情報データを、「1」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25bに、アドレス[E]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[E]に関連付けられた極性情報データが「1」になるように、適宜動作させる。
【0136】
ステップS345bにおいて、修復処理実行部27cは、現在アドレス[E]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0137】
ステップS347bにおいて、修復処理実行部27cは、ステップS345bで求めた修復用カウントデータ(アドレス[E]のカウントデータから1を引いた値)と、現在アドレス[D]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[D]に関連付けられた極性情報データの値が1(第1値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS331bに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[2](図9)、および、極性情報組み合わせGr.[4](図10)に従う、との認識にもとづく。
ステップS345bで求めた修復用カウントデータ(アドレス[E]のカウントデータから1を引いた値)と、現在アドレス[D]に記録されているカウントデータの値とが一致し、かつ、アドレス[D]に関連付けられた極性情報データの値が1(第1値)である、と判定された場合(ステップS347bにおける「YES」)、処理は、ステップS339bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[D]に記録されたカウントデータおよびアドレス[D]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[D]に記録されているカウントデータの値とが一致しないか、または、アドレス[D]に関連付けられた極性情報データの値が1(第1値)でない、場合(ステップS347bにおける「NO」)、処理は、ステップS347bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[D]に記録されたカウントデータおよびアドレス[D]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0138】
ステップS349bにおいて、修復処理実行部27cは、アドレス[D]のカウントデータの値を、ステップS345bで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[D]の極性情報データを、「1」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25bに、アドレス[D]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[D]に関連付けられた極性情報データが「1」になるように、適宜動作させる。
【0139】
ステップS351bにおいて、修復処理実行部27cは、現在アドレス[D]に記録されているカウントデータの値から1を引いた(インクリメント幅Sで減算した)値を求め、それを、現在の「修復用カウントデータ」とする。
【0140】
ステップS353bにおいて、修復処理実行部27cは、ステップS351bで求めた修復用カウントデータ(アドレス[D]のカウントデータから1を引いた値)と、現在アドレス[C]に記録されているカウントデータの値とを比較し、一致するか、否かを判定するとともに、アドレス[C]に関連付けられた極性情報データの値が1(第1値)であるか、否かを判定する。
本ステップにおける上記2つの事項に関する判断は、ステップS331bに関する説明の段において述べたように、データが正常であれば、そのデータの並び方は、アドレス組み合わせGr.[2](図9)、および、極性情報組み合わせGr.[4](図10)に従う、との認識にもとづく。
ステップS351bで求めた修復用カウントデータ(アドレス[D]のカウントデータから1を引いた値)と、現在アドレス[C]に記録されているカウントデータの値とが一致し、かつ、アドレス[C]に関連付けられた極性情報データの値が1(第1値)である、と判定された場合(ステップS353bにおける「YES」)、処理は、ステップS339bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[C]に記録されたカウントデータおよびアドレス[C]に関連付けられた極性情報データは、修復する必要がないと、判断する。
修復用カウントデータと、現在アドレス[C]に記録されているカウントデータの値とが一致しないか、または、アドレス[C]に関連付けられた極性情報データの値が1(第1値)でない、場合(ステップS353bにおける「NO」)、処理は、ステップS355bへ移行する。つまり、この場合に修復処理実行部27cは、アドレス[C]に記録されたカウントデータおよびアドレス[C]に関連付けられた極性情報データは、修復する必要があると、判断する。
【0141】
ステップS355bにおいて、修復処理実行部27cは、アドレス[C]のカウントデータの値を、ステップS351bで求めた修復用カウントデータの値に変更する指示を出力する。また、アドレス[C]の極性情報データを、「1」にする指示を出力する。
当該指示にもとづいて、データ書込部25は、カウントデータ書込部25bに、アドレス[C]のカウントデータ記憶部33へ修復用カウントデータの値を書き込ませ、また、極性情報データ反転部25bに、アドレス[C]に関連付けられた極性情報データが「1」になるように、適宜動作させる。
【0142】
このように、カウントデータ修復処理Bにおいては、アドレス[B]のカウントデータおよびアドレス[B]に関連付けられた極性情報データを基準として、アドレス[A]、アドレス[E]、アドレス[D]、アドレス[C]のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせGr.[2](図9)ならびに極性情報組み合わせGr.[3]もしくは極性情報組み合わせGr.[4](図10)に一致するように、カウントデータの値および極性情報データの値を修正する。
【0143】
{カウントデータ修復処理C(ステップS301c)}
図16AおよびBは、カウントデータ修復処理C(図13におけるステップS301c)の処理の詳細を示すフローチャートである。カウントデータ修復処理Cは、主として修復処理実行部27cが行う処理である。ただし、カウントデータの修復(正しいカウントデータの書き込み)は、修復処理実行部27cの出力に基づいてデータ書込部25が行う。
【0144】
カウントデータ修復処理AおよびB(図14AおよびBならびに図15AおよびB)と同様に、カウントデータ修復処理Cにおいては、アドレス[C]のカウントデータおよびアドレス[C]に関連付けられた極性情報データを基準として、アドレス[B]、アドレス[A]、アドレス[E]、アドレス[D]のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせGr.[3](図9)ならびに極性情報組み合わせGr.[5]もしくは極性情報組み合わせGr.[6](図10)に一致するように、カウントデータの値および極性情報データの値を修正する。
【0145】
{カウントデータ修復処理D(ステップS301d)}
図17は、カウントデータ修復処理D(図13におけるステップS301d)の処理の詳細を示すフローチャートである。カウントデータ修復処理Dは、主として修復処理実行部27cが行う処理である。ただし、カウントデータの修復(正しいカウントデータの書き込み)は、修復処理実行部27cの出力に基づいてデータ書込部25が行う。
【0146】
カウントデータ修復処理A、B、およびC(図14AおよびB、図15AおよびB、ならびに、図16AおよびB)と同様に、カウントデータ修復処理Dにおいては、アドレス[D]のカウントデータおよびアドレス[D]に関連付けられた極性情報データを基準として、アドレス[C]、アドレス[B]、アドレス[A]、アドレス[E]のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせGr.[4](図9)ならびに極性情報組み合わせGr.[7]もしくは極性情報組み合わせGr.[8](図10)に一致するように、カウントデータの値および極性情報データの値を修正する。
【0147】
{カウントデータ修復処理E(ステップS301e)}
図18AおよびBは、カウントデータ修復処理E(図13におけるステップS301e)の処理の詳細を示すフローチャートである。カウントデータ修復処理Eは、主として修復処理実行部27cが行う処理である。ただし、カウントデータの修復(正しいカウントデータの書き込み)は、修復処理実行部27cの出力に基づいてデータ書込部25が行う。
【0148】
カウントデータ修復処理A、B、C、およびD(図14AおよびB、図15AおよびB、図16AおよびB、ならびに、図17AおよびB)と同様に、カウントデータ修復処理Eにおいては、アドレス[E]のカウントデータおよびアドレス[E]に関連付けられた極性情報データを基準として、アドレス[D]、アドレス[C]、アドレス[B]、アドレス[A]のカウントデータの値、ならびに、それらアドレスに関連付けられた極性情報データの値が、アドレス組み合わせGr.[5](図9)ならびに極性情報組み合わせGr.[9]もしくは極性情報組み合わせGr.[10](図10)に一致するように、カウントデータの値および極性情報データの値を修正する。
【0149】
≪カウントデータ破損の検出および修復の具体例≫
これより、上で述べたカウントデータ破損の検出および修復について、具体例を示す。
【0150】
{具体例1}
図19は、具体例1におけるカウントデータの値、および、極性情報データの値の一覧である。
【0151】
ステップS101(図12)に示したように、カウントデータソート部27aは、カウントデータの大きさでアドレスを並べ替える。
【0152】
図20は、並べ替えられたアドレスの並び方、ならびに、各アドレスに記録されているカウントデータの値および各アドレスに関連付けられた極性情報データの値の一覧である。
【0153】
ステップS103(図12)に示したように、カウントデータ差分算出部27bは、ステップS101で並べ替えられたアドレスの並び方に沿って、隣接するカウントデータの値の間の差分値を算出する。
【0154】
図21は、算出されたカウントデータ差分値の一覧である。
【0155】
ステップS105(図12)に示したように、修復処理実行部27cは、各アドレスに関連付けられた極性情報データをステップS101で並び替えされたアドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。具体例1においては、変化箇所数は、0である(図20参照。)。
【0156】
従って、処理は、ステップS109(図12)へ移行する。ステップS109においては、カウントデータ差分値が全て0でないことより、データの破損が存在すると判定され、処理は、ステップS301eへ移行する。
【0157】
ステップS303e(図18AおよびB)において、アドレス[E]の極性情報データの値に基づく判定が行われ、該判定の結果により、処理はステップS305eへ移行する。
【0158】
ステップS305e(図18AおよびB)に示したように、これ以降、修復処理実行部27cは、アドレス[E]のカウントデータおよびアドレス[E]に関連付けられた極性情報データを基準として、アドレス組み合わせGr.[5](図9)および極性情報組み合わせGr.[9](図10)に従って、カウントデータの値および極性情報データの値を修正する。
【0159】
図22は、アドレス[D]に対する破損検出および破損修復の結果を示す図である。
【0160】
ステップS307eないしステップS311e(図18AおよびB)に示したようにして、アドレス[D]のカウントデータの値が、24に修正される。
【0161】
図23は、アドレス[C]に対する破損検出および破損修復の結果を示す図である。
【0162】
ステップS313eないしステップS317e(図18AおよびB)に示したようにして、アドレス[C]のカウントデータの値が、23に修正される。
【0163】
図24は、アドレス[B]に対する破損検出および破損修復の結果を示す図である。
【0164】
ステップS319eないしステップS321e(図18AおよびB)に示したようにして、アドレス[B]は、修正不要であると判断される。
【0165】
図25は、アドレス[A]に対する破損検出および破損修復の結果を示す図である。
【0166】
ステップS323eないしステップS327e(図18AおよびB)に示したようにして、アドレス[A]のカウントデータの値が、21に修正され、カウントデータ修復処理は終了する。
【0167】
{具体例2}
図26は、具体例2におけるカウントデータの値、および、極性情報データの値の一覧である。
【0168】
ステップS101(図12)に示したように、カウントデータソート部27aは、カウントデータの大きさでアドレスを並べ替える。
【0169】
図27は、並べ替えられたアドレスの並び方、ならびに、各アドレスに記録されているカウントデータの値および各アドレスに関連付けられた極性情報データの値の一覧である。
【0170】
ステップS103(図12)に示したように、カウントデータ差分算出部27bは、ステップS101で並べ替えられたアドレスの並び方に沿って、隣接するカウントデータの値の間の差分値を算出する。
【0171】
図28は、算出されたカウントデータ差分値の一覧である。
【0172】
ステップS105(図12)に示したように、修復処理実行部27cは、各アドレスに関連付けられた極性情報データをステップS101で並び替えされたアドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。具体例2においては、変化箇所数は、1である(図27参照。)。
【0173】
従って、処理は、ステップS201(図12)へ移行する。ステップS201(図12および図13)においては、アドレスの並び方(図27)が、アドレス組み合わせGr.[3](図9)と一致し、かつ、カウントデータ間の差分値(図28)が、全て1ではないから、処理は、ステップS301cへ移行する。
【0174】
ステップS303c(図16AおよびB)において、アドレス[C]の極性情報データの値に基づく判定が行われ、該判定の結果により、処理はステップS305cへ移行する。
【0175】
ステップS305c(図16AおよびB)に示したように、これ以降、修復処理実行部27cは、アドレス[C]のカウントデータおよびアドレス[C]に関連付けられた極性情報データを基準として、アドレス組み合わせGr.[3](図9)および極性情報組み合わせGr.[5](図10)に従って、カウントデータの値および極性情報データの値を修正する。
【0176】
図29は、アドレス[B]に対する破損検出および破損修復の結果を示す図である。
【0177】
ステップS307cないしステップS311c(図16AおよびB)に示したようにして、アドレス[C]は、修正不要であると判断される。
【0178】
図30は、アドレス[A]に対する破損検出および破損修復の結果を示す図である。
【0179】
ステップS313cないしステップS317c(図16AおよびB)に示したようにして、アドレス[A]のカウントデータの値が、52に修正される。
【0180】
図31は、アドレス[E]に対する破損検出および破損修復の結果を示す図である。
【0181】
ステップS319cないしステップS321c(図16AおよびB)に示したようにして、アドレス[E]のカウントデータの値が、51に修正され、加えて、アドレス[E]に関連付けられた極性情報データの値が0に反転される。
【0182】
図32は、アドレス[D]に対する破損検出および破損修復の結果を示す図である。
【0183】
ステップS323cないしステップS327c(図16AおよびB)に示したようにして、アドレス[D]のカウントデータの値が、50に修正され、カウントデータ修復処理は終了する。
【0184】
{具体例3}
具体例3は、2つのアドレスで指定される記憶領域を用いてカウントデータを記録するカウントデータの記録形態について、説明する。
【0185】
図33は、記憶装置7において、2つのアドレスによって指定される記憶領域のデータ構成を示す図である。
【0186】
2つのアドレス(アドレス[X1]とアドレス[X2])で特定される記憶領域は、さらに極性情報データを保持する極性情報部33pと、カウントデータの上位ビットを保持するカウントデータ上位部分記憶部33uと、カウントデータの下位ビットを保持するカウントデータ下位部分記憶部33lと、に区分される。極性情報データ記憶部33pは、Pビットのビット幅を有し、カウントデータ上位部分記憶部33uは、M−Pビットのビット幅を有し、カウントデータ下位部分記憶部33lは、Mビットのビット幅を有する。
【0187】
図34は、具体例3におけるカウントデータ下位部分の値およびカウントデータ上位部分の値ならびに極性情報データの値の一覧である。
【0188】
図35は、具体例3におけるカウントデータの値、および、極性情報データの値の一覧である。このように、各カウントデータの値は、2つのアドレスに記憶されたデータを組み合わせて1つのカウントデータとして取り扱い、各カウントデータの値に(各2つずつのアドレスに)1つの極性情報データが関連付けられている。
【0189】
ステップS101(図12)に示したように、カウントデータソート部27aは、カウントデータの大きさでアドレスを並べ替える。
【0190】
図36は、並べ替えられた統合アドレスの並び方、ならびに、各統合アドレスに記録されているカウントデータの値および各統合アドレスに関連付けられた極性情報データの値の一覧である。ここでは、1つのカウントデータを構成するデータが保持される2つのアドレスを纏めて統合アドレスと称する。
【0191】
ステップS103(図12)に示したように、カウントデータ差分算出部27bは、ステップS101で並べ替えられた統合アドレスの並び方に沿って、隣接するカウントデータの値の間の差分値を算出する。
【0192】
図37は、算出されたカウントデータ差分値の一覧である。
【0193】
ステップS105(図12)に示したように、修復処理実行部27cは、各統合アドレスに関連付けられた極性情報データをステップS101で並び替えされた統合アドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。具体例3においては、変化箇所数は、3である(図36参照。)。
【0194】
従って、処理は、ステップS111(図12)へ移行する。ステップS111においては、カウントデータ間差分値が全て1であることから、ステップS201(図12および図13)へ移行する。ステップS201においては、アドレスの並び方(図36)が、アドレス組み合わせGr.[1]〜[5](図9)のいずれとも一致せず、かつ、最も大きなカウントデータが記録されている統合アドレスが[B]であるから、処理は、ステップS301bへ移行する。
【0195】
ステップS303b(図15AおよびB)において、アドレス[B]の極性情報データの値に基づく判定が行われ、該判定の結果により、処理はステップS305bへ移行する。
【0196】
ステップS305b(図15AおよびB)に示したように、これ以降、修復処理実行部27cは、アドレス[B]のカウントデータおよびアドレス[B]に関連付けられた極性情報データを基準として、アドレス組み合わせGr.[2](図9)および極性情報組み合わせGr.[3](図10)に従って、カウントデータの値および極性情報データの値を修正する。
【0197】
図38は、アドレス[A]に対する破損検出および破損修復の結果を示す図である。
【0198】
ステップS307bないしステップS311b(図15AおよびB)に示したようにして、統合アドレス[A]のカウントデータの値が、65536に修正され、加えて、統合アドレス[A]に関連付けられた極性情報データの値が1に反転される。
【0199】
図39は、アドレス[E]に対する破損検出および破損修復の結果を示す図である。
【0200】
ステップS313bないしステップS317b(図15AおよびB)に示したようにして、アドレス[E]のカウントデータの値が、65535に修正される。
【0201】
図40は、アドレス[D]に対する破損検出および破損修復の結果を示す図である。
【0202】
ステップS319bないしステップS321b(図15AおよびB)に示したようにして、アドレス[D]のカウントデータの値が、65534に修正され、加えて、アドレス[D]に関連付けられた極性情報データの値が0に反転される。
【0203】
図41は、アドレス[C]に対する破損検出および破損修復の結果を示す図である。
【0204】
ステップS323bないしステップS327b(図15AおよびB)に示したようにして、アドレス[C]のカウントデータの値が、65533に修正され、カウントデータ修復処理は終了する。
【0205】
{具体例4}
図42は、具体例4におけるカウントデータの値、および、極性情報データの値の一覧である。本具体例4は、カウントデータの破損が、修復不可能な場合の例である。この場合、修復処理実行部27cは、修復処理を実行せずに、カウントデータの異常を通知する出力を行って、処理を終了する。
【0206】
ステップS101(図12)に示したように、カウントデータソート部27aは、カウントデータの大きさでアドレスを並べ替える。
【0207】
図43は、並べ替えられたアドレスの並び方、ならびに、各アドレスに記録されているカウントデータの値および各アドレスに関連付けられた極性情報データの値の一覧である。
【0208】
ステップS103(図12)に示したように、カウントデータ差分算出部27bは、ステップS101で並べ替えられたアドレスの並び方に沿って、隣接するカウントデータの値の間の差分値を算出する。
【0209】
図44は、算出されたカウントデータ差分値の一覧である。
【0210】
ステップS105(図12)に示したように、修復処理実行部27cは、各アドレスに関連付けられた極性情報データをステップS101で並び替えされたアドレスの並び方に沿って見た場合に隣接した極性情報データ値間で変化が生じている箇所の数を求める。具体例4においては、変化箇所数は、4である(図43参照。)。
【0211】
従って、処理は、ステップS111(図12)へ移行する。ステップS111においては、1でないカウントデータ間差分値が存在し、アドレスの並び方(図36)が、アドレス組み合わせGr.[1]〜[5](図9)のいずれとも一致しないから、処理は、ステップS113へ移行する。
【0212】
ステップS113において、修復処理実行部27cは、正しく修復できないデータ破損が生じていると判断し、その旨を示唆する情報を出力し、処理を終了する。
【0213】
<まとめ>
以上、本発明にかかるカウントデータ記録装置について、カウントデータの記録に用いるアドレスを5個として説明した。だが、本発明は、5個以外の個数のアドレスをもちいてカウントデータを記録することも可能である。その場合も、カウントデータの記録の方法、カウントデータの破損の検出の方法、カウントデータの破損の修復の方法は、上で述べた方法と同様にすればよい。当業者にとってその具体的態様は、上で述べた5個のアドレスをもちいた場合の説明から明らかであろう。
【0214】
本発明において、カウントデータを記憶する記憶装置7は、特に限定されない。記憶装置7は、例えば、EEPROMである。
【0215】
記憶装置7においては、極性情報データを記録することなしに、通常のデータ記録を行うマスクエリアを設けてよい。
マスクエリアとは、カウントデータを記憶するための記憶領域とは別の記憶領域であって、極性情報データと関連付けされない記憶領域を指す。
記憶装置のマスクエリアにおいては、極性情報データの反転を伴わない、データの書き込みがなされる。このように、本発明においては、記憶装置は、カウントデータを、極性情報データと関連付けて記憶するための記憶領域と、通常のデータの読み出しおよび書き込みのための記憶領域を備えることができ、記憶装置内の記憶領域を余すところなしに、効率的に利用することも可能である。本発明においては、マスクエリアは、記憶装置内にアドレスを単位として設定可能である。
【産業上の利用可能性】
【0216】
本発明は、記憶装置を用いたカウントデータの記録を行う装置に関する。本発明は、特に、記憶装置の繰り返し書き込み可能な回数を超えてカウントデータの記録を行う上で有用である。
【図面の簡単な説明】
【0217】
【図1】本発明の実施の形態によるカウントデータ記録装置(MFP1)の斜視図
【図2】感光体ユニット5の斜視図
【図3】MFP1のハードウェア構成を示すブロック図
【図4】MFP1の機能的構成を示すブロック図
【図5】記憶装置7の、1つのアドレスで指定される記憶領域のデータ構成図
【図6】カウントデータの記録の例図
【図7】カウントデータの値の大きさで降順に並べ替えたアドレスの並び方の図
【図8】正常なカウントデータについて、その値の降順で並べたときのカウントデータ間の差分値を示す図
【図9】アドレスをカウントデータの降順で並べ替えた時に起こり得るアドレスの並び方の一覧
【図10】アドレスをカウントデータの降順で並べ替えた時に起こり得る各アドレスと関連付けられた極性情報データの並び方の一覧
【図11】アドレス組み合わせと、極性情報組み合わせとの組み合わせを示す図
【図12】カウントデータ破損の検出および修復のメインフローのフローチャート
【図13A】カウントデータ修復処理選択処理のフローチャート
【図13B】カウントデータ修復処理選択処理のフローチャート
【図14A】カウントデータ修復処理Aのフローチャート
【図14B】カウントデータ修復処理Aのフローチャート
【図15A】カウントデータ修復処理Bのフローチャート
【図15B】カウントデータ修復処理Bのフローチャート
【図16A】カウントデータ修復処理Cのフローチャート
【図16B】カウントデータ修復処理Cのフローチャート
【図17A】カウントデータ修復処理Dのフローチャート
【図17B】カウントデータ修復処理Dのフローチャート
【図18A】カウントデータ修復処理Eのフローチャート
【図18B】カウントデータ修復処理Eのフローチャート
【図19】カウントデータ修復処理具体例1における修復処理前のカウントデータおよび極性情報データの表
【図20】並び替えられたカウントデータおよび極性情報データの表
【図21】カウントデータ差分値の表
【図22】カウントデータ修復処理の過程を示す図
【図23】カウントデータ修復処理の過程を示す図
【図24】カウントデータ修復処理の過程を示す図
【図25】カウントデータ修復処理の過程を示す図
【図26】カウントデータ修復処理具体例2における修復処理前のカウントデータおよび極性情報データの表
【図27】並び替えられたカウントデータおよび極性情報データの表
【図28】カウントデータ差分値の表
【図29】カウントデータ修復処理の過程を示す図
【図30】カウントデータ修復処理の過程を示す図
【図31】カウントデータ修復処理の過程を示す図
【図32】カウントデータ修復処理の過程を示す図
【図33】記憶装置7の、2つのアドレスで指定される記憶領域のデータ構成図
【図34】カウントデータ修復処理具体例3における修復処理前のカウントデータおよび極性情報データの表
【図35】カウントデータ修復処理具体例3における修復処理前のカウントデータおよび極性情報データの表
【図36】並び替えられたカウントデータおよび極性情報データの表
【図37】カウントデータ差分値の表
【図38】カウントデータ修復処理の過程を示す図
【図39】カウントデータ修復処理の過程を示す図
【図40】カウントデータ修復処理の過程を示す図
【図41】カウントデータ修復処理の過程を示す図
【図42】カウントデータ修復処理具体例4における修復処理前のカウントデータおよび極性情報データの表
【図43】並び替えられたカウントデータおよび極性情報データの表
【図44】カウントデータ差分値の表
【符号の説明】
【0218】
1・・・ カウントデータ記録装置(デジタル複合機)
3・・・ トナーカートリッジ
5・・・ 感光体ユニット
7・・・ 記憶装置
11・・・ 中央処理装置
13・・・ ランダム・アクセス・メモリ
15・・・ リード・オンリ・メモリ
17・・・ I/O LSI
19o・・ 出力デバイス
19i・・ 入力デバイス
21・・・ コンピュータ
23・・・ 制御部
25・・・ データ書込部
25a・・ カウントデータ書込部
25b・・ 極性情報データ反転部
27・・・ データ修復部
27a・・ カウントデータソート部
27b・・ カウントデータ差分算出部
27c・・ 修復処理実行部
29・・・ データ読出部
31・・・ 設定データ保持部
33・・・ カウントデータ記憶部
33l・・ カウントデータ下位部分記憶部
33p・・ 極性情報データ記憶部
33u・・ カウントデータ上位部分記憶部

【特許請求の範囲】
【請求項1】
所定値から所定幅で単調に変化するカウント値をカウントデータとして記録装置に記録するカウントデータ記録装置であって、
前記カウントデータを記憶する記憶部と、
前記カウントデータを前記記憶部に書き込むデータ書込部と、
前記カウントデータを前記記憶部から読み出すデータ読出部と、
前記記憶部に記憶されたカウントデータの破損を検出し、該破損を修復するデータ修復部と、を有し、
前記記憶部は、
位置特定識別子によって特定され、カウントデータを記憶するカウントデータ記憶部を複数個と、前記カウントデータ記憶部のそれぞれと関連付けされ、第1値および第2値を示す2種類のデータから1つを択一的に記憶する極性情報データ記憶部を前記カウントデータ記憶部の個数と同数だけ備え、
前記データ書込部は、
前記複数個のカウントデータ記憶部のうちから所定の順序で循環的に1つのカウントデータ記憶部に対して前記カウントデータを書き込むカウントデータ書込部と、前記カウントデータ書込部がカウントデータを書き込んだカウントデータ記憶部と関連付けされた極性情報データ記憶部が記憶するデータの内容を、前記第1値と第2値との間で反転させる極性情報データ反転部と、を備え、
前記データ修復部は、
前記データ読出部が前記記憶部から読み出した、前記複数個のカウントデータ記憶部に記憶された複数のカウントデータについて、カウントデータの大きさで、カウントデータ記憶部の位置特定識別子を並べるカウントデータソート部と、
前記カウントデータソート部が並べた位置特定識別子の順に沿って、互いに隣接するカウントデータ間の差分値を算出するカウントデータ差分算出部と、
前記カウントデータソート部が並べた順に沿った位置特定識別子の並び方、前記カウントデータソート部が並べた順に沿った前記カウントデータ間の差分値の並び方、および、前記カウントデータソート部が並べた順に沿った前記極性情報データの並び方、に基づいて、前記記憶部に記憶された複数のカウントデータの破損を検出して当該破損を修復する修復処理実行部と、を備える、カウントデータ記録装置。
【請求項2】
1つの前記位置特定識別子が特定する前記カウントデータ記憶部は、2つのメモリアドレスによって特定される2つの記憶領域を有し、前記カウントデータは、前記2つの記憶領域へ分割して記憶される、請求項1に記載のカウントデータ記録装置。
【請求項3】
前記所定値は、ゼロであり、前記所定幅は、プラス1である、請求項2に記載のカウントデータ記録装置。
【請求項4】
前記所定値は、ゼロを含まない自然数であり、前記所定幅は、マイナス1である、請求項2に記載のカウントデータ記録装置。
【請求項5】
前記カウントデータソート部は、カウントデータの大きさの降順で、カウントデータ記憶部の位置特定識別子を並べる、請求項3に記載のカウントデータ記録装置。
【請求項6】
前記カウントデータソート部は、カウントデータの大きさの昇順で、カウントデータ記憶部の位置特定識別子を並べる、請求項4に記載のカウントデータ記録装置。
【請求項7】
前記修復処理実行部は、前記カウントデータソート部が並べた順に沿って並べた前記極性情報データにおいて、極性情報データの値が変化する箇所の数を求め、求めた変化する箇所の数に基づいて、前記記憶部に記憶された複数のカウントデータの破損を検出して当該破損を修復する、請求項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

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13A】
image rotate

【図13B】
image rotate

【図14A】
image rotate

【図14B】
image rotate

【図15A】
image rotate

【図15B】
image rotate

【図16A】
image rotate

【図16B】
image rotate

【図17A】
image rotate

【図17B】
image rotate

【図18A】
image rotate

【図18B】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate


【公開番号】特開2010−3074(P2010−3074A)
【公開日】平成22年1月7日(2010.1.7)
【国際特許分類】
【出願番号】特願2008−160756(P2008−160756)
【出願日】平成20年6月19日(2008.6.19)
【出願人】(303000372)コニカミノルタビジネステクノロジーズ株式会社 (12,802)
【Fターム(参考)】