(57)【特許請求の範囲】
【請求項１】
上書き不可能なメモリに順次発生する複数種類のデータを格納するデータ格納装置において、
前記メモリの領域内に複数のブロックを設け、前記複数のブロックの１つを最新ブロックとして設定する最新ブロック設定手段と、
前記データが発生する毎に前記最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納するデータ格納手段と、
前記最新ブロックに空き領域があるか否かを判定する空き領域判定手段と、
前記空き領域判定手段により空き領域がないと判定された場合、前記最新ブロックを除いた他のブロックのデータを全消去する消去手段と、
前記消去手段により全消去された後、前記最新ブロックの後ろから順にデータを読み取り、前記データの最後に付加されたデータ種類に基づいて種類毎に後ろから所定個づつのデータを抽出して、当該抽出したデータを前記他のブロックの先頭から順に書き込むデータ移動手段と、を備え、
前記最新ブロック設定手段が、前記データ移動手段による書き込み終了後、当該他のブロックを最新ブロックとして設定する
ことを特徴とするデータ格納装置。
【請求項２】
上書き不可能なメモリに順次発生する複数種類のデータを格納するデータ格納装置において、
前記メモリの領域内に複数のブロックを設け、前記複数のブロックの１つを最新ブロックとして設定する最新ブロック設定手段と、
前記データが発生する毎に前記最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納するデータ格納手段と、
前記データが発生する毎に上書き可能な第２メモリに前記発生したデータを上書きする第２データ格納手段と、
前記最新ブロックに空き領域があるか否かを判定する空き領域判定手段と、
前記空き領域判定手段により空き領域がないと判定された場合、前記最新ブロックを除いた他のブロックのデータを全消去する消去手段と、
前記消去手段により全消去された後、前記第２メモリに格納された最新のデータを前記他のブロックの先頭から順に書き込むデータ移動手段と、を備え、
前記最新ブロック設定手段が、前記データ移動手段による書き込み終了後、当該他のブロックを最新ブロックとして設定する
ことを特徴とするデータ格納装置。
【請求項３】
前記データとして、通電時間データが所定時間毎に発生するデータ格納装置において、
前記各ブロックの先頭に格納されている通電時間データを比較し、最大の通電時間データが書き込まれているブロックを最新ブロックとして判定する最新ブロック判定手段と、
前記最新ブロックの後ろから順にデータを読み取り、前記データの最後に付加されたデータ種類に基づいて種類毎に後ろから所定個づつのデータを最新データとして読み取る読取手段と、
を備えたことを特徴とする請求項１又は２に記載のデータ格納装置。
【請求項４】
前記読取手段及び前記データ移動手段が、前記データの最後に付加されているデータ種類からデータ長を判定し、そのデータ種類が書き込まれているエリアから判定したデータ長分前までのエリアのデータを、前記データ種類のデータであると判定する
ことを特徴とする請求項３に記載のデータ格納装置。
【請求項５】
上書き不可能なメモリに順次発生する複数種類のデータを格納するデータ格納方法において、
前記メモリの領域に複数のブロックを設け、前記複数のブロックの１つを最新ブロックとして設定する最新ブロック設定工程と、
前記データが発生する毎に前記最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納するデータ格納工程と、
前記最新ブロックに空き領域があるか否かを判定する空き領域判定工程と、
前記空き領域判定手段により空き領域がないと判定された場合、前記最新ブロックを除いた他のブロックのデータを全消去する消去工程と、
前記消去工程において全消去された後、前記最新ブロックの後ろから順にデータを読み取り、前記データの最後に付加されたデータ種類に基づいて各種類毎に後ろから所定個づつのデータを抽出して、当該抽出したデータを前記他のブロックの先頭から順に書き込むデータ移動工程と、を備え、
前記最新ブロック設定工程において、前記データ移動工程による書き込み終了後、当該他のブロックを最新ブロックとして設定する
ことを特徴とするデータ格納方法。
【請求項６】
上書き不可能なメモリに順次発生する複数種類のデータを格納するデータ格納方法において、
前記メモリの領域内に複数のブロックを設け、前記複数のブロックの１つを最新ブロックとして設定する最新ブロック設定工程と、
前記データが発生する毎に前記最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納するデータ格納工程と、
前記データが発生する毎に上書き可能な第２メモリに前記発生したデータを上書きする第２データ格納工程と、
前記最新ブロックに空き領域があるか否かを判定する空き領域判定工程と、
前記空き領域判定工程により空き領域がないと判定された場合、前記最新ブロックを除いた他のブロックのデータを全消去する消去工程と、
前記消去工程により全消去された後、前記第２メモリに格納された最新のデータを前記他のブロックの先頭から順に書き込むデータ移動工程と、を備え、
前記最新ブロック設定工程が、前記データ移動工程による書き込み終了後、当該他のブロックを最新ブロックとして設定する
ことを特徴とするデータ格納方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ格納装置及びデータ格納方法に係り、特に、上書き不可能なメモリに順次発生するデータを格納するデータ格納装置及びデータ格納方法に関するものである。
【背景技術】
【０００２】
ガス漏れや火災などの警報器では、工場出荷時に設定された設定データ（例えばガス濃度の警報値など）、警報発生時の警報履歴、故障発生時の故障履歴、通電時間などをＥＥＰＲＯＭに記録している。しかしながら、これらデータを格納するために、ＥＥＰＲＯＭの容量を大きくする必要がありコスト的に問題があった。
【０００３】
最近では、警報器を構成するマイコン内部のフラッシュメモリをＥＥＰＲＯＭの代わりに使用してこれらデータを格納することが考えられている。これにより、ＥＥＰＲＯＭが必要なくなり、コストダウンとなる。
【０００４】
しかしながら、上記フラッシュメモリは、ＥＥＰＲＯＭと異なりデータの上書きをすることができない。このため、従来では、データが発生する毎に、フラッシュメモリに全種類のデータ（即ち、設定データ、通電時間、警報履歴、故障履歴）を追記している。
【０００５】
図１０〜図１４を参照して詳しく説明する。即ち、まず、工場出荷時において、例えば出荷操作が行われると警報器内のＣＰＵは、図１０（Ａ）に示すように、フラッシュメモリの領域を２つのブロックＢ１と、ブロックＢ２と、に分け、両方のブロックＢ１、Ｂ２に格納されているデータを消去して、空き領域とする。
【０００６】
次に、警報器内のＣＰＵは、図１０（Ｂ）に示すように、外部からの通信により受信した設定データをブロックＢ１の先頭に書き込む。次に、警報器内のＣＰＵは、通電時間、警報履歴１〜３、故障履歴１〜３の順にブロックＢ１に書き込む。なお、このとき出荷時であるので、通電時間としては０が書き込まれる。また、警報も故障も発生していない状態であるため、警報履歴１〜３、故障履歴１〜３としては空のデータが書き込まれる。
【０００７】
また、これら通電時間、警報履歴１〜３、故障履歴１〜３は、全て同じデータ長となるように、これらのうち最大データ長よりも短いデータ長のものにはデータ長調整用のエリアが設けられている。例えば、通電時間として、数バイト書き込めばよいところを、警報履歴１〜３、故障履歴１〜３のような長いデータ合わせて、数十バイト書き込んでいる。
【０００８】
その後、警報が発生すると、警報器内のＣＰＵは、図１１に示すように、警報履歴２を警報履歴１へ、警報履歴３を警報履歴２へ移動し、新たな警報履歴を警報履歴３とする全種類のデータ（設定データ、通電時間データ、警報履歴１〜３、故障履歴１〜３）を追記する。
【０００９】
その後、故障が発生すると、警報器内のＣＰＵは、図１２に示すように、故障履歴２を故障履歴１へ、故障履歴３を故障履歴２へ移動し、新たな故障履歴を故障履歴３とする全種類のデータを追記する。
【００１０】
その後、設置してから所定時間毎の計時が終了すると、警報器内のＣＰＵは、図１３に示すように、所定時間を加算した新たな通電時間を通電時間とする全種類のデータを追記する。ブロックＢ１の最後まで書き込むと、警報器内のＣＰＵは、図１４（Ａ）に示すように、ブロックＢ２に格納したデータを全消去して空き領域にする。次に、警報器内のＣＰＵは、図１４（Ｂ）に示すように、消去したブロックＢ２の先頭に最新の全種類のデータ（即ち、ブロックＢ１に格納された全種類のデータのうち一番後ろの全種類のデータ）を書き込む。
【００１１】
この警報器にフラッシュメモリ内のデータを読み出す設定器を接続すると、警報器は、ブロックＢ２の後ろの領域からデータが書き込まれているか否かを判断し、データが書き込まれている領域に達すると、そこから通電時間、警報履歴１〜３、故障履歴１〜３の互いに等しいデータ長毎のデータを最新の故障履歴３〜１、最新の警報履歴３〜１、最新の通電時間として、設定器に送信する。
【００１２】
このように、従来では、データが発生する毎に、フラッシュメモリに全種類のデータ（即ち、設定データ、通電時間、警報履歴、故障履歴）を追記しているため、効率が悪い。また、フラッシュメモリは、消去可能回数がＥＥＰＲＯＭに比べて少ないため、データを書き込む回数を少なくする必要があり、警報器での使用には問題がある。
【発明の概要】
【発明が解決しようとする課題】
【００１３】
そこで、本発明は、データが発生する毎に、書き込むデータ量を少なくすることにより、消去回数が削減でき、効率良く上書き不可なメモリを使用することができるデータ格納装置及びデータ格納方法を提供することを課題とする。
【課題を解決するための手段】
【００１４】
上述した課題を解決するための請求項１記載の発明は、上書き不可能なメモリに順次発生する複数種類のデータを格納するデータ格納装置において、前記メモリの領域内に複数のブロックを設け、前記複数のブロックの１つを最新ブロックとして設定する最新ブロック設定手段と、前記データが発生する毎に前記最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納するデータ格納手段と、前記最新ブロックに空き領域があるか否かを判定する空き領域判定手段と、前記空き領域判定手段により空き領域がないと判定された場合、前記最新ブロックを除いた他のブロックのデータを全消去する消去手段と、前記消去手段により全消去された後、前記最新ブロックの後ろから順にデータを読み取り、前記データの最後に付加されたデータ種類に基づいて種類毎に後ろから所定個づつのデータを抽出して、当該抽出したデータを前記他のブロックの先頭から順に書き込むデータ移動手段と、を備え、前記最新ブロック設定手段が、前記データ移動手段による書き込み終了後、当該他のブロックを最新ブロックとして設定することを特徴とするデータ格納装置に存する。
【００１５】
請求項２記載の発明は、上書き不可能なメモリに順次発生する複数種類のデータを格納するデータ格納装置において、前記メモリの領域内に複数のブロックを設け、前記複数のブロックの１つを最新ブロックとして設定する最新ブロック設定手段と、前記データが発生する毎に前記最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納するデータ格納手段と、前記データが発生する毎に上書き可能な第２メモリに前記発生したデータを上書きする第２データ格納手段と、前記最新ブロックに空き領域があるか否かを判定する空き領域判定手段と、前記空き領域判定手段により空き領域がないと判定された場合、前記最新ブロックを除いた他のブロックのデータを全消去する消去手段と、前記消去手段により全消去された後、前記第２メモリに格納された最新のデータを前記他のブロックの先頭から順に書き込むデータ移動手段と、を備え、前記最新ブロック設定手段が、前記データ移動手段による書き込み終了後、当該他のブロックを最新ブロックとして設定することを特徴とするデータ格納装置に存する。
【００１６】
請求項３記載の発明は、前記データとして、通電時間データが所定時間毎に発生するデータ格納装置において、前記各ブロックの先頭に格納されている通電時間データを比較し、最大の通電時間データが書き込まれているブロックを最新ブロックとして判定する最新ブロック判定手段と、前記最新ブロックの後ろから順にデータを読み取り、前記データの最後に付加されたデータ種類に基づいて種類毎に後ろから所定個づつのデータを最新データとして読み取る読取手段と、を備えたことを特徴とする請求項１又は２に記載のデータ格納装置に存する。
【００１７】
請求項４記載の発明は、前記読取手段及び前記データ移動手段が、前記データの最後に付加されているデータ種類からデータ長を判定し、そのデータ種類が書き込まれているエリアから判定したデータ長分前までのエリアのデータを、前記データ種類のデータであると判定することを特徴とする請求項３に記載のデータ格納装置に存する。
【００１８】
請求項５記載の発明は、上書き不可能なメモリに順次発生する複数種類のデータを格納するデータ格納方法において、前記メモリの領域に複数のブロックを設け、前記複数のブロックの１つを最新ブロックとして設定する最新ブロック設定工程と、前記データが発生する毎に前記最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納するデータ格納工程と、前記最新ブロックに空き領域があるか否かを判定する空き領域判定工程と、前記空き領域判定手段により空き領域がないと判定された場合、前記最新ブロックを除いた他のブロックのデータを全消去する消去工程と、前記消去工程において全消去された後、前記最新ブロックの後ろから順にデータを読み取り、前記データの最後に付加されたデータ種類に基づいて各種類毎に後ろから所定個づつのデータを抽出して、当該抽出したデータを前記他のブロックの先頭から順に書き込むデータ移動工程と、を備え、前記最新ブロック設定工程において、前記データ移動工程による書き込み終了後、当該他のブロックを最新ブロックとして設定することを特徴とするデータ格納方法に存する。
【００１９】
請求項６記載の発明は、上書き不可能なメモリに順次発生する複数種類のデータを格納するデータ格納方法において、前記メモリの領域内に複数のブロックを設け、前記複数のブロックの１つを最新ブロックとして設定する最新ブロック設定工程と、前記データが発生する毎に前記最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納するデータ格納工程と、前記データが発生する毎に上書き可能な第２メモリに前記発生したデータを上書きする第２データ格納工程と、前記最新ブロックに空き領域があるか否かを判定する空き領域判定工程と、前記空き領域判定工程により空き領域がないと判定された場合、前記最新ブロックを除いた他のブロックのデータを全消去する消去工程と、前記消去工程により全消去された後、前記第２メモリに格納された最新のデータを前記他のブロックの先頭から順に書き込むデータ移動工程と、を備え、前記最新ブロック設定工程が、前記データ移動工程による書き込み終了後、当該他のブロックを最新ブロックとして設定することを特徴とするデータ格納方法に存する。
【発明の効果】
【００２０】
以上説明したように請求項１記載の発明によれば、データ格納手段が、データが発生する毎に最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納し、データ移動手段が、消去手段により全消去された後、最新ブロックの後ろから順にデータを読み取り、データの最後に付加されたデータ種類に基づいて種類毎に後ろから所定個づつのデータを抽出して、当該抽出したデータを他のブロックの先頭から順に書き込む。従って、データの最後にデータ種類を付加することにより、データが発生したとき、全種類のデータを追記することなく、その発生したデータだけ後ろに追記しても、最新ブロックから種類毎に後ろから所定個づつのデータ、即ち最新データを読み取ることができる。これにより、データが発生する毎に、書き込むデータ量を少なくすることができ、消去回数が削減でき、効率良く上書き不可なメモリを使用することができる。
【００２１】
請求項２記載の発明によれば、データ格納手段が、データが発生する毎に最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納し、データ移動手段が、消去手段により全消去された後、第２メモリに格納された最新のデータを他のブロックの先頭から順に書き込む。従って、データの最後にデータ種類を付加することにより、データが発生したとき、全種類のデータを追記することなく、その発生したデータだけ後ろに追記しても、最新ブロックから種類毎に後ろから最新データを読み取ることができる。しかも、最新ブロックの後ろから順に読み取ることなく、最新ブロックに格納されている最新のデータを他のブロックの先頭に移動することができる。これにより、データが発生する毎に、書き込むデータ量を少なくすることができ、消去回数が削減でき、効率良く上書き不可なメモリを使用することができる。
【００２２】
請求項３記載の発明によれば、最新ブロック判定手段が、各ブロックの先頭に格納されている通電時間データを比較し、最大の通電時間データが書き込まれているブロックを最新ブロックとして判定し、読取手段が、最新ブロックの後ろから順にデータを読み取り、データの最後に付加されたデータ種類に基づいて種類毎に後ろから所定個づつのデータを最新データとして読み取るので、最新ブロックに関する情報を持っていなくても、各ブロックの何れが最新ブロックであるかを判定できる。
【００２３】
請求項４記載の発明によれば、読取手段及びデータ移動手段が、データの最後に付加されているデータ種類からデータ長を判定し、そのデータ種類が書き込まれているエリアから判定したデータ長分前までのエリアのデータを、データ種類のデータであると判定する。従って、各種類のデータのデータ長を同じにしなくても、データを特定することができるので、各種類のデータのデータ長を同じに調整するためのデータ長調整エリアを設ける必要がなく、無駄なデータがメモリに格納されることがない。
【００２４】
請求項５記載の発明によれば、データ格納工程において、データが発生する毎に最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納し、データ移動工程において、消去工程において全消去された後、最新ブロックの後ろから順にデータを読み取り、データの最後に付加されたデータ種類に基づいて種類毎に後ろから所定個づつのデータを抽出して、当該抽出したデータを他のブロックの先頭から順に書き込む。従って、データの最後にデータ種類を付加することにより、データが発生したとき、全種類のデータを追記することなく、その発生したデータだけ後ろに追記しても、最新ブロックから種類毎に後ろから所定個づつのデータ、即ち最新データを読み取ることができる。これにより、データが発生する毎に、書き込むデータ量を少なくすることができ、消去回数が削減でき、効率良く上書き不可なメモリを使用することができる。
【００２５】
請求項６記載の発明によれば、データ格納工程において、データが発生する毎に最新ブロックの空き領域の先頭から順に当該発生したデータの最後にデータ種類を付加して格納し、データ移動工程において、消去工程により全消去された後、第２メモリに格納された最新のデータを他のブロックの先頭から順に書き込む。従って、データの最後にデータ種類を付加することにより、データが発生したとき、全種類のデータを追記することなく、その発生したデータだけ後ろに追記しても、最新ブロックから種類毎に後ろから最新データを読み取ることができる。これにより、データが発生する毎に、書き込むデータ量を少なくすることができ、消去回数が削減でき、効率良く上書き不可なメモリを使用することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明のデータ格納装置を組み込んだ警報器の一実施形態を示すブロック図である。
【図２】図１に示すデータ格納装置を構成するフラッシュメモリに書き込まれる通電時間、設定データ、警報履歴、故障履歴の構成を示す図である。
【図３】図１に示すデータ格納装置を構成するＣＰＵのデータ格納処理における処理手順を示すフローチャートである。
【図４】図１に示す警報器の工場出荷時におけるフラッシュメモリに格納されるデータを示す図である。
【図５】図１に示す警報器の通電時間書き込み時におけるフラッシュメモリに格納されるデータを示す図である。
【図６】図１に示す警報器の警報発生時におけるフラッシュメモリに格納されるデータを示す図である。
【図７】図１に示す警報器の故障発生時におけるフラッシュメモリに格納されるデータを示す図である。
【図８】図１に示す警報器のブロックＢ１の最後まで書き込んだときのフラッシュメモリに格納されるデータを示す図である。
【図９】図１に示す警報器の読み込み時の動作を説明するための説明図である。
【図１０】従来の工場出荷時におけるフラッシュメモリに格納されるデータを示す図である。
【図１１】従来の警報発生時におけるフラッシュメモリに格納されるデータを示す図である。
【図１２】従来の故障発生時におけるフラッシュメモリに格納されるデータを示す図である。
【図１３】従来の通電時間書き込み時におけるフラッシュメモリに格納されるデータを示す図である。
【図１４】従来のブロックＢ１の最後まで書き込んだときのフラッシュメモリに格納されるデータを示す図である。
【発明を実施するための形態】
【００２７】
以下、本発明のデータ格納装置及びデータ格納方法について図面を参照して説明する。図１は、本発明のデータ格納装置を組み込んだ警報器の一実施形態を示すブロック図である。同図に示すように、警報器１は、警報器１全体の制御を司るマイクロコンピュータ（以下μＣＯＭ）２と、ガス漏れや火災などの異常を検出するセンサ３と、後述する設定器４を接続するための入出力端子５と、を備えている。
【００２８】
上記μＣＯＭ２は、処理プログラムに従って各種の処理を行うＣＰＵ２Ａと、ＣＰＵ２Ａが行う処理のプログラムなどを格納したＲＯＭ２Ｂと、ＣＰＵ２Ａでの各種の処理過程で利用するワークエリア、各種データを格納するデータ記憶エリアなどを有する上書き可能な第２メモリとしてのＲＡＭ２Ｃと、上書き不可能な不揮発性のメモリであるフラッシュメモリ２Ｄと、を備えている。上記ＣＰＵ２Ａは、センサ３からの出力に基づいて警報を発生する警報発生処理や、故障を検出する故障検出処理などを行う。
【００２９】
上記フラッシュメモリ２Ｄは、メモリ領域に２つのブロックＢ１、Ｂ２が設けられている。このフラッシュメモリ２Ｄには、通電時間、設定値データ、警報履歴、故障履歴といったデータが順次書き込まれる。これら通電時間、設定データ、警報履歴、故障履歴といったデータは、図２（Ａ）〜（Ｄ）に示すように、先頭にチェックサムを書き込む領域、最後尾にデータ種類（即ち、通電時間、設定データ、警報履歴、故障履歴の何れであるかを示すデータ）を書き込む領域、チェックサムとデータ種類との間にデータ自体を書き込む領域が、設けられている。これらデータは、データ種類に応じてデータ長が異なり、設定データが一番長く、その次に警報履歴、故障履歴が長く、通電時間が一番短い。
【００３０】
次に、上述した構成のデータ格納装置の動作について図３〜図８を参照して説明する。図３は、図１に示すデータ格納装置を構成するＣＰＵ２Ａのデータ格納処理における処理手順を示すフローチャートである。図４は、図１に示す警報器１の工場出荷時におけるフラッシュメモリ２Ｄに格納されるデータを示す図である。図５は、図１に示す警報器１の通電時間書き込み時におけるフラッシュメモリ２Ｄに格納されるデータを示す図である。図６は、図１に示す警報器１の警報発生時におけるフラッシュメモリ２Ｄに格納されるデータを示す図である。図７は、図１に示す警報器１の故障発生時におけるフラッシュメモリ２Ｄに格納されるデータを示す図である。図８は、図１に示す警報器１のブロックＢ１の最後まで書き込んだときのフラッシュメモリ２Ｄに格納されるデータを示す図である。
【００３１】
まず、ＣＰＵ２Ａは、電源のオンに応じて上記データ格納処理を開始する。まず、最初のステップＳ１において、ＣＰＵ２Ａは、警報器１が出荷モードであるか否かを判定する。出荷モードであれば（ステップＳ１でＹ）、ＣＰＵ２Ａは、図４（Ａ）に示すように、フラッシュメモリ２Ｄ内の両ブロックＢ１、Ｂ２のデータを全消去して空き領域にする（ステップＳ２）。
【００３２】
次に、ＣＰＵ２Ａは、最新ブロック設定手段として働き、ブロックＢ１を最新ブロックとして設定する（ステップＳ３）。このステップＳ３が請求項中の最新ブロック設定工程に相当する。その後、ＣＰＵ２Ａ、図４（Ｂ）に示すように、データ格納手段として働き、ブロックＢ１の先頭に通電時間（通電時間データ）を格納し、その後ろに設定器４などの外部からの通信で得た設定データを格納する（ステップＳ４）。また、ステップＳ４において、ＣＰＵ２Ａは、第２データ格納手段として働き、通電時間をＲＡＭ２Ｃ内に格納する。ここでは、通電時間として０が書き込まれる。このステップＳ４が請求項中のデータ格納工程及び第２データ格納工程に相当する。
【００３３】
その後、ＣＰＵ２Ａは、出荷モードが解除されるのを待って（ステップＳ５でＮ）、次のステップＳ６に進む。出荷モードが解除されると、ＣＰＵ２Ａは、上述した警報発生処理、故障検出処理をこのデータ格納処理と並列に行う。
【００３４】
ステップＳ６では、ＣＰＵ２Ａは、空き領域判定手段として働き、最新ブロックが一杯であるか否かを判定する。具体的には、ＣＰＵ２Ａは、最新ブロックの最後尾からデータを読み込んで空データ「１」が所定バイト以上連続しているか否かを判定する。ＣＰＵ２Ａは、最後尾から空データが所定バイト以上連続していなければ最新ブロックが一杯であると判定し、最後尾から空データが所定バイト以上連続していれば最新ブロックが一杯でないと判定する。このステップＳ６が請求項中の空き領域判定工程に相当する。
【００３５】
最新ブロックが一杯ではないと判定すると（ステップＳ６でＮ）、次に、ＣＰＵ２Ａは、電源オンしてから開始させている所定時間毎の計時が終了したか否かを判定する（ステップＳ１２）。所定時間の計時が終了したと判定すると（ステップＳ１２でＹ）、ＣＰＵ２Ａは、図５に示すように、最新ブロック（図５の例ではブロックＢ１）の空き領域の先頭に前の通電時間に所定時間を加算した新たな通電時間２を書き込むと共に、ＲＡＭ２Ｃ内に格納された通電時間に新たな通電時間を上書きして（ステップＳ１３）、次のステップＳ１４に進む。ステップＳ１３により、ＲＡＭ２Ｃ内には最新の通電時間が常に保存される。所定時間の計時が終了していなければ（ステップＳ１２でＮ）、ＣＰＵ２Ａは、ステップＳ１３に進むことなく、直ちにステップ１４に進む。
【００３６】
ステップＳ１４において、ＣＰＵ２Ａは、警報や故障、設定器４による設定データの更新要求などが生じて、フラッシュメモリ２Ｄに格納すべきデータが発生しているか否かを判定する。フラッシュメモリ２Ｄに格納すべきデータが発生していなければ（ステップＳ１４でＮ）、ＣＰＵ２Ａは、直ちにステップＳ１に戻る。
【００３７】
一方、フラッシュメモリ２Ｄに格納すべきデータが発生していれば（ステップＳ１４でＹ）、ＣＰＵ２Ａは、発生したデータを最新ブロックの空き領域の先頭に書き込んだ後（ステップＳ１５）、ステップＳ１に戻る。
【００３８】
ステップＳ１５の詳細について説明すると、例えば、警報が発生すると、ＣＰＵ２Ａは、図６に示すように、新たな警報履歴２を最新ブロック（図６に示す例ではブロックＢ１）の空き領域の先頭に書き込む。また、故障が発生すると、ＣＰＵ２Ａは、図７に示すように、新たな故障履歴３を最新ブロック（図７に示す例ではブロックＢ１）の空き領域の先頭に書き込む。
【００３９】
上述したステップＳ１２〜Ｓ１５において、ＣＰＵ２Ａはデータ格納手段として働く。また、ステップＳ１２〜Ｓ１５が請求項中のデータ格納工程に相当する。
【００４０】
これに対して、最新ブロックが一杯であると判定すると（ステップＳ６でＹ）、次に、ＣＰＵ２Ａは、図８（Ａ）に示すように、消去手段として働き、最新ブロックを除いた他のブロック（図８の例ではブロックＢ２）に格納したデータを全消去して空き領域にする（ステップＳ７）。このステップＳ７が請求項中の消去工程に相当する。次に、ＣＰＵ２Ａは、ＲＡＭ２Ｃ内に格納された最新の通電時間を他のブロックの先頭に書き込む（ステップＳ８）。
【００４１】
次に、ＣＰＵ２Ａは、図８（Ｂ）に示すように、最新ブロックに格納された設定データのうち一番後ろに格納されているものを検索して、通電時間の後ろに書き込む（ステップＳ９）。その後、ＣＰＵ２Ａは、図８（Ｃ）に示すように、最新ブロックに格納された警報履歴のうち後ろから３つ目までの警報履歴を検索して、設定データの後ろに書き込み、その後、図８（Ｄ）に示すように、最新ブロックに格納された故障履歴のうち後ろから３つ目までの故障履歴を検索して、警報履歴の後ろに書き込んだ後（ステップＳ１０）、ステップＳ１１に進む。
【００４２】
上記検索について詳細に説明すると、ＣＰＵ２Ａは、まず最新ブロック（ブロックＢ１）の最後尾から読み込みを開始する。ＣＰＵ２Ａは、最後尾にはデータの最後に付加されたデータ種類が格納されている。ＣＰＵ２Ａは、このデータ種類からブロックＢ１の最後に書き込まれたデータの種類を判定する。図８（Ｃ）に示す例では、ＣＰＵ２Ａは、警報履歴７が最新ブロックの最後に書き込まれていると判定する。ＣＰＵ２Ａは、判定したデータ種類からそのデータのデータ長を判定し、データ種類が書き込まれているエリアから判定したデータ長だけ前までのエリアのデータを、そのデータ種類のデータであると判定する。
【００４３】
図８（Ｃ）に示す例で説明すると、最後尾から警報履歴のデータ長だけ前までのエリアのデータを警報履歴７であると判定する。さらに、ＣＰＵ２Ａは、最新ブロックの先頭に向かってデータを読み込み、警報履歴７よりも前のエリアに格納されているデータ種類から、警報履歴７の前に書き込まれたデータの種類を判定する。図８（Ｃ）に示す例では、警報履歴６が警報履歴７の前に書き込まれていると判定する。このように、ＣＰＵ２Ａは、後ろから前に向かって順にデータを読み取って最新ブロックに格納された警報履歴のうち後ろから３つ目までを検索する。
【００４４】
図８（Ｃ）に示す例では、警報履歴７、６、５が最新ブロックに格納された警報履歴のうち後ろから３つ目までの警報履歴として検索される。ＣＰＵ２Ａは、これら３つの警報履歴７、６、５のうち一番前から順にブロックＢ２に書き込んでいく。即ち、警報履歴５を警報履歴１、警報履歴６を警報履歴２、警報履歴７を警報履歴３へ移動して追記する。
【００４５】
また、図８（Ｄ）に示す例では、故障履歴６、５、４が最新ブロックに格納された故障履歴のうち後ろから３つ目までの故障履歴として検索される。ＣＰＵ２Ａは、これら３つの故障履歴６、５、４のうち一番前のものから順にブロックＢ２に書き込んでいく。即ち、故障履歴４を故障履歴１、故障履歴５を故障履歴２、故障履歴６を故障履歴３へ移動して追記する。
【００４６】
上述したステップＳ８〜Ｓ１０において、ＣＰＵ２Ａは、データ移動手段として働く。また、ステップＳ８〜Ｓ１０が請求項中のデータ移動工程に相当する。
【００４７】
ステップＳ１１において、ＣＰＵ２Ａは、最新ブロック設定手段として働き、上記他のブロック（図８に示す例ではブロックＢ２）を最新ブロックに設定し、次のステップＳ１２に進む。このステップＳ１１が請求項中の最新ブロック設定工程に相当する。
【００４８】
次に、設定器４により履歴の読み込み要求が行われたときの動作について説明する。まず、ＣＰＵ２Ａは、最新ブロック判定手段として働き、ブロックＢ１、Ｂ２の先頭に書き込まれている通電時間を比較し、最大値が書き込まれているブロックを最新ブロックとして判定する。その後、ＣＰＵ２Ａは、読取手段として働き、最新ブロックの後ろから読み出し、最初に見つかった通電時間を最新通電時間、最初に見つかった設定データを最新設定データ、後ろから３つ目までの警報履歴、故障履歴を最新警報履歴、最新故障履歴として、設定器４に送信する。
【００４９】
図９に示す例では、ＣＰＵ２Ａは、ブロックＢ２を最新ブロックとして判定し、通電時間３を最新通電時間、設定データ２を最新設定データ、警報履歴４、３、２を最新警報履歴、故障履歴３、２、１を最新故障履歴として、設定器４に対して送信する。
【００５０】
上述した実施形態によれば、ＣＰＵ２Ａが、フラッシュメモリ２Ｄの領域に２つのブロックＢ１、Ｂ２を設け、２つのブロックＢ１、Ｂ２の１つを最新ブロックとして設定し、データ（通電時間、設定データ、警報履歴、故障履歴）が発生する毎に最新ブロックの空き領域の先頭から順に発生したデータの最後にデータ種類を付加して格納している。また、ＣＰＵ２Ａが、最新ブロックに空き領域があるか判定し、空き領域がないと判定された場合、最新ブロックを除いた他のブロックのデータを消去した後に、最新ブロックの後ろから順にデータを読み取り、データの最後に付加されたデータ種類に基づいて種類毎に後ろから１個、又は、３個づつのデータを抽出して、抽出したデータを他のブロックの先頭から順に書き込む。その後、ＣＰＵ２Ａが、書き込み終了後に、その他のブロックを最新ブロックとして設定している。
【００５１】
このように、データの最後にデータ種類を付加することにより、データが発生したとき、従来例のように全種類のデータ（通電時間、設定データ、警報履歴１〜３、故障履歴１〜３）を追記することなく、その発生したデータだけ後ろに追記しても、最新ブロックから種類毎に後ろから３個づつのデータ、即ち最新データを読み取ることができる。これにより、データが発生する毎に、書き込むデータ量を少なくすることができ、消去回数が削減でき、効率良く上書き不可なメモリを使用することができる。
【００５２】
また、上述した実施形態によれば、ＣＰＵ２Ａは、通電時間に関してはＲＡＭ２Ｃに上書き保存して、全消去された後、ＲＡＭ２Ｃに格納された最新の通電時間を他のブロックの先頭から順に書き込む。これにより、最新ブロックの後ろから順に読み取ることなく、最新ブロックに格納されている最新の通電時間を他のブロックの先頭に移動することができる。
【００５３】
また、上述した実施形態によれば、ＣＰＵ２Ａが、各ブロックＢ１、Ｂ２の先頭に格納されている通電時間を比較し、最大の通電時間が書き込まれているブロックを最新ブロックとして判定し、最新ブロックの後ろから順にデータを読み取り、データの最後に付加されたデータ種類に基づいて種類毎に後ろから１個（通電時間、設定データの場合）、又は、３個づつ（警報履歴、故障履歴の場合）のデータを最新データとして読み取るので、最新ブロックに関する情報を持っていなくても、各ブロックの何れが最新ブロックであるかを判定できる。
【００５４】
上述した実施形態によれば、ＣＰＵ２Ａが、データの最後に付加されているデータ種類からデータ長を判定し、そのデータ種類が書き込まれているエリアから判定したデータ長分前までのエリアのデータを、データ種類のデータであると判定する。従って、従来のように、通電時間、警報履歴、故障履歴のデータ長を同じにしなくても、データを特定することができるので、各種類のデータのデータ長を同じに調整するためのデータ長調整用のエリアを設ける必要がなく、無駄なデータがフラッシュメモリ２Ｄに格納されることがない。
【００５５】
なお、上述した実施形態によれば、ＣＰＵ２Ａに、データの最後に付加されたデータ種類からそのデータ長を判定する機能を持たせて、通電時間、設定データ、警報履歴、故障履歴のデータ長をそれぞれ可変にしていたが、本発明はこれに限ったものではない。例えば、従来と同様にデータ長調整用のエリアを設け、通電時間、設定データ、警報履歴、故障履歴の互いのデータ長を同じに設ければ、データ長を判定する機能をＣＰＵ２Ａに持たせる必要がない。
【００５６】
また、上述した実施形態によれば、設定器４による読み込み時に、ＣＰＵ２Ａは、各ブロックＢ１、Ｂ２の先頭に格納されている通電時間から最新ブロックを判定していたが、本発明はこれに限ったものではない。例えば、フラッシュメモリ２ＤのブロックＢ１、Ｂ２とは別の領域に、最新ブロックを示すエリアを設け、そのエリアに格納されたブロックを最新ブロックとして判定するようにしてもよい。この場合、最新ブロックが一杯になったときに、他のブロックの先頭に通電時間を書き込む必要がない。
【００５７】
また、上述した実施形態によれば、フラッシュメモリ２Ｄには、２つのブロックＢ１、Ｂ２が設けられていたが、本発明はこれに限ったものではない。ブロックとしては、２つ以上のブロックを設ければよく、３つでも、４つでもよい。
【００５８】
また、上述した実施形態によれば、通電時間については、ＲＡＭ２Ｃ内にも上書き保存して、最新ブロックが一杯になったときに、ＲＡＭ２Ｃ内に保存された最新の通電時間を他のブロックの先頭に移動させていたが、本発明はこれに限ったものではない。例えば、警報履歴や故障履歴についてもＲＡＭ２Ｃ内にも上書き保存して、最新ブロックが一杯になったときに、ＲＡＭ２Ｃ内に保存された最新の警報履歴や故障履歴を他のブロックの先頭に移動させてもよい。
【００５９】
また、前述した実施形態は本発明の代表的な形態を示したに過ぎず、本発明は、実施形態に限定されるものではない。即ち、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。
【符号の説明】
【００６０】
１    警報器（データ格納装置）
２Ａ  ＣＰＵ（最新ブロック設定手段、データ格納手段、空き領域判定手段、消去手段、データ移動手段、最新ブロック判定手段、読取手段）
２Ｄ  フラッシュメモリ（メモリ）
Ｂ１  ブロック
Ｂ２  ブロック
【図１】
0005666273.tif 000002
【図２】
0005666273.tif 000003
【図３】
0005666273.tif 000004
【図４】
0005666273.tif 000005
【図５】
0005666273.tif 000006
【図６】
0005666273.tif 000007
【図７】
0005666273.tif 000008
【図８】
0005666273.tif 000009
【図９】
0005666273.tif 000010
【図１０】
0005666273.tif 000011
【図１１】
0005666273.tif 000012
【図１２】
0005666273.tif 000013
【図１３】
0005666273.tif 000014
【図１４】
0005666273.tif 000015