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