(57)【要約】【課題】データ記録領域に記録されたデータの異常を検出する異常検出装置において、効率的かつ確実にデータの異常を検出できるようにする。【解決手段】異常検出ＥＣＵは、ＲＡＭへのデータの書き込み時およびＲＡＭからのデータの読み出し時に、所定の同様のアルゴリズムに従って書き込むデータの内容に応じた値であるＣＲＣ値を生成させ、これらのＣＲＣ値を比較し、この比較結果が不一致であればデータに異常がある旨の判定をする（Ｓ３３０，Ｓ３４０，Ｓ３７０）。この異常検出ＥＣＵによれば、ＲＡＭへデータを記録するとき（書き込み時）と利用するとき（読み出し時）とでデータが変化していないかどうかを確認するので、確実にデータの異常を検出することができ、周期的にデータの異常を検出する構成と比較して、データの異常を検出する処理を実施する回数を少なくすることができるので、効率的にデータの異常を検出する処理を行うことができる。【選択図】図５
2012174198.tif 000002
【特許請求の範囲】
【請求項１】
データ記録領域に記録されたデータの異常を検出する異常検出装置であって、
前記データ記録領域へのデータの書き込み時に、所定のアルゴリズムに従って該書き込むデータの内容に応じた値である基準値を生成する基準値生成手段と、
前記データ記録領域からのデータの読み出し時に、前記基準値を生成する際に利用した同様のアルゴリズムに従って該読み出すデータの内容に応じた値である比較値を生成する比較値生成手段と、
前記比較値が生成されると、前記基準値と前記比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする異常判定手段と、
を備えたことを特徴とする異常検出装置。
【請求項２】
請求項１に記載の異常検出装置において、
前記基準値生成手段は、生成した基準値を、前記データ記録領域とは隣接しない領域に設定された基準値記録領域に記録すること
を特徴とする異常検出装置。
【請求項３】
請求項２に記載の異常検出装置において、
前記基準値生成手段は、生成した基準値を、前記データ記録領域とは異なるハードウェアとして構成された基準値記録領域に記録すること
を特徴とする異常検出装置。
【請求項４】
請求項１〜請求項３の何れか１項に記載の異常検出装置において、
前記基準値生成手段は、前記書き込むデータおよび既にデータ記録領域に記録されているデータを含む複数のデータに基づいて前記基準値を生成し、
前記比較値生成手段は、前記基準値を生成したときに利用した複数のデータを利用して前記比較値を生成すること
を特徴とする異常検出装置。
【請求項５】
請求項１〜請求項４の何れか１項に記載の異常検出装置において、
前記異常判定手段によって異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる割込実行手段、を備えたこと
を特徴とする異常検出装置。
【請求項６】
コンピュータを、請求項１〜請求項５の何れか１項に記載の異常検出装置を構成する各手段として機能させるための異常検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記録領域に記録されたデータの異常を検出する異常検出装置、および異常検出プログラムに関する。
【背景技術】
【０００２】
上記異常検出装置として、データ記録領域を定期的に監視することでデータ記録領域におけるビットの反転（いわゆるＲＡＭ化け）等の異常を検出するものが知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００４−１３３６３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、ビットの反転等の異常が問題となるのは、異常のあるデータを利用する場合であり、データ記録領域に記録されたままの状態でデータが利用されない場合には問題は生じない。しかしながら、上記異常検出装置においては、データ記録領域に記録されたままになっているデータに対しても、繰り返し異常を検出しており、異常を検出する処理の多くが無駄になっている可能性が高い。
【０００５】
また、上記異常検出装置においては、定期的に異常の有無を監視するが、データ記録領域にデータが記録された直後に異常の有無を検出するとは限らないため、データが記録された後、異常の有無を監視するまでにビットの反転等の異常が生じた場合に、この異常を検出できない虞がある。
【０００６】
そこで、このような問題点を鑑み、データ記録領域に記録されたデータの異常を検出する異常検出装置、および異常検出プログラムにおいて、効率的かつ確実にデータの異常を検出できるようにすることを本発明の目的とする。
【課題を解決するための手段】
【０００７】
かかる目的を達成するために成された第１の構成の異常検出装置において、基準値生成手段は、データ記録領域へのデータの書き込み時に、所定のアルゴリズムに従って書き込むデータの内容に応じた値である基準値を生成し、比較値生成手段は、データ記録領域からのデータの読み出し時に、基準値を生成する際に利用した同様のアルゴリズムに従って読み出すデータの内容に応じた値である比較値を生成する。そして、異常判定手段は、比較値が生成されると、基準値と比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする。
【０００８】
すなわち、本発明で生成される基準値と比較値とは、同じ値になるべきであるが、データ記録領域へのノイズ等の影響によってデータが書き換えられると同じ値にならなくなる。このため本発明では、このようにデータが書き換えられ、基準値と比較値とが不一致となると、データに異常がある旨を出力する。
【０００９】
このような異常検出装置によれば、データ記録領域へデータを記録するとき（書き込み時）と利用するとき（読み出し時）とでデータが変化していないかどうかを確認するので、確実にデータの異常を検出することができる。また、このような異常検出装置によれば、周期的にデータの異常を検出する構成と比較して、データの異常を検出する処理を実施する回数を少なくすることができるので、効率的にデータの異常を検出する処理を行うことができる。
【００１０】
さらに、上記異常検出装置においては、第２の構成のように、基準値生成手段は、生成した基準値を、データ記録領域とは隣接しない領域に設定された基準値記録領域に記録するようにしてもよい。特に、第３の構成のように、基準値生成手段は、生成した基準値を、データ記録領域とは異なるハードウェアとして構成された基準値記録領域に記録するようにしてもよい。
【００１１】
一般的に、データ記録領域にノイズ等の影響を受けたときには隣接する領域にも同様の影響を受けやすいが、本発明の異常検出装置によれば、データ記録領域と基準値記録領域とが隣接しないように配置されているので、データ記録領域にノイズ等の影響を受けた場合であっても、基準値記録領域がノイズ等の影響を受け難くすることができる。
【００１２】
よって、異常を検出する精度を向上させることができる。
ところで、上記異常検出装置においては、第４の構成のように、基準値生成手段は、書き込むデータおよび既にデータ記録領域に記録されているデータを含む複数のデータに基づいて基準値を生成し、比較値生成手段は、基準値を生成したときに利用した複数のデータを利用して比較値を生成するようにしてもよい。
【００１３】
このような異常検出装置によれば、複数のデータについて１つの基準値を生成するので、一時的に記録しておく基準値の数）を少なくすることができる。よって、基準値を記録するための記録領域（基準値記録領域）を節約することができる。
【００１４】
また、上記異常検出装置においては、第５の構成のように、異常判定手段によって異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる割込実行手段、を備えていてもよい。
【００１５】
このような異常検出装置によれば、割込処理によって速やかに異常用プログラムを実行させることができる。
次に、上記目的を達成するために成された第６の構成としての異常検出プログラムは、コンピュータを、上記に記載の異常検出装置を構成する各手段として機能させるためのプログラムであることを特徴とする。
【００１６】
このような異常検出プログラムによれば、少なくとも請求項１に記載の異常検出装置と同様の効果を享受することができる。
【図面の簡単な説明】
【００１７】
【図１】実施形態における異常検出ＥＣＵ１の概略構成を示すブロック図である。
【図２】記録時処理を示すフローチャートである。
【図３】ＲＡＭ１３における記録領域を示す説明図である。
【図４】利用処理を示すフローチャートである。
【図５】読出処理および異常割込処理を示すフローチャートである。
【図６】変形例における読出処理を示すフローチャートである。
【図７】変形例における異常検出ＥＣＵ２の概略構成を示すブロック図である。
【発明を実施するための形態】
【００１８】
以下に本発明にかかる実施の形態を図面と共に説明する。
［本実施形態の構成］
図１は、本発明が適用された異常検出ＥＣＵ（電子制御装置）１（異常検出装置）の概略構成を示すブロック図である。異常検出ＥＣＵ１は、例えば乗用車等の車両に搭載されており、車両を制御するプログラムの実行中において、ＲＡＭ１３に記録されたデータの異常を検出する機能、およびデータの異常が検出された場合に、異常用のプログラムを実施する機能を備えている。
【００１９】
詳細には、異常検出ＥＣＵ１は、図１に示すようにＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３（データ記録領域、基準値記録領域）と、ＣＲＣ（巡回冗長検査）計算回路１４（基準値生成手段、比較値生成手段）と、割込コントローラ１５と、通信部１６とを備えている。ＣＰＵ１１は、ＲＯＭ１２に格納されたプログラム（異常検出プログラムを含む）や、ＲＡＭ１３にロードされたプログラムに基づき、後述する記録時処理、利用処理等の各種処理を実行する。
【００２０】
ＲＡＭ１３は、ＣＰＵ１１の作業領域として機能するが、特に、データを記録するためのデータ記録領域と、ＣＲＣ値を記録するためのＣＲＣ値記録領域とが分離されており（図３参照）、データとＣＲＣ値とがＲＡＭ１３において離れた領域に記録される（つまり、隣接する領域に記録されない）ようにＣＰＵ１１が記録領域を設定する。
【００２１】
ＣＲＣ計算回路１４は、ＲＡＭ１３に記録されるデータ、およびＲＡＭ１３から読み出されるデータについて周知のＣＲＣを実施し、この値を出力する。なお、ＣＲＣ計算回路１４の詳細な作動については後述する。
【００２２】
割込コントローラ１５は、所定のフラグ（ＣＲＣ破壊フラグ）が立てられると、ＣＰＵ１１に対して割込信号を送り、ＣＰＵ１１に所定のプログラムを実行させる。
通信部１６は、周知の車内ＬＡＮを介して他のＥＣＵ等の他の装置と通信を行う。
【００２３】
［本実施形態の処理］
上記のような異常検出ＥＣＵ１においては、以下に示す処理が実施される。図２はＣＰＵ１１が実行する記録時処理を示すフローチャートである。
【００２４】
記録時処理は、ＣＰＵ１１がＲＡＭ１３にデータを記録しようとする都度開始され、データをＲＡＭ１３に記録させる際の処理である。記録時処理では、図２に示すように、まず、割込を禁止するよう設定する（Ｓ１１０）。このように割込を禁止することで、割込を許可するまで本処理が中断されることなく実施される。
【００２５】
続いて、記録しようとするデータをＲＡＭ１３に記録させる（Ｓ１２０）。このとき、ＲＡＭ１３において予め設定されたデータ記録領域のうちの空いている領域にデータを記録させる。
【００２６】
そして、書き込んだデータを含むデータを指定して、ＣＲＣ計算回路１４にＣＲＣ値を計算させるようデータの位置（アドレスおよびビット番号の範囲）を指定して指示する（Ｓ１３０）。この指示を受けると、ＣＲＣ計算回路１４は、指定された位置のデータについて、所定のアルゴリズムに基づいてＣＲＣ値を演算する。
【００２７】
ここで、本処理では、図３（ａ）に示すように、アドレス「０ｘ００００  ＸＸ１０」のＥビットに存在するデータを書き込んだ場合、「０ｘ００００  ＸＸ１０」に存在する複数のデータを１つのデータとみなしてＣＲＣ値（基準値）を演算させる。つまり、新たに書き込まれたデータおよび既に書き込まれていたデータを含む複数のデータに基づいて基準値を生成する。
【００２８】
なお、この処理では、書き込んだデータのみについてＣＲＣ値を演算するようにしてもよい。この場合には例えば、アドレス「０ｘ００００  ＸＸ３０」の０〜３ビットの範囲内に存在するデータを書き込んだ場合、このデータのみについてＣＲＣ値を演算させるようにすればよい。
【００２９】
続いて、ＲＡＭ１３のＣＲＣ値記録領域にＣＲＣ計算回路１４によって演算されたＣＲＣ値を書き込む（Ｓ１４０：基準値生成手段）。ここで、ＣＲＣ値記録領域には、図３（ｂ）に示すように、ＣＲＣ値を求めたデータが記録されていたデータ記録領域のアドレスに対応するアドレスが割り振られており、この処理では、対応するアドレスにＣＲＣ値を記録させる。そして、割込許可を設定し（Ｓ１５０）、記録時処理を終了する。
【００３０】
次に、ＲＡＭ１３に記録されたデータを読み出して利用する処理について図４を用いて説明する。図４は、ＣＰＵ１１が実行する利用処理を示すフローチャートである。利用処理は、ＲＡＭ１３内のデータを読み出そうとする都度開始され、読み出そうとするデータに異常があるか否かを確認し、異常があれば異常に対する処置を行う処理である。
【００３１】
利用処理では、図４に示すように、まず、ＣＲＣ破壊フラグをＯＦＦに設定する（Ｓ２１０）。この処理は、ＣＲＣ破壊フラグを初期値としてＯＦＦに設定する処理である。
続いて、読出処理を実施する（Ｓ２２０）。読出処理については図５（ａ）に示すフローチャートを用いて説明する。読出処理では、図５（ａ）に示すように、まず、Ｓ１１０の処理と同様に、割込を禁止するよう設定する（Ｓ３１０）。そして、読み出すデータの位置に応じて、ＣＲＣ計算回路１４にＣＲＣ値を計算させるようデータの位置（アドレスおよびビット番号の範囲）を指定して指示する（Ｓ３２０）。
【００３２】
この指示を受けると、ＣＲＣ計算回路１４は、指定された位置のデータについて、所定のアルゴリズムに基づいてＣＲＣ値（比較値）を演算する。このとき、ＣＲＣ値の計算対象とするデータは、Ｓ１３０の処理でＣＲＣ値を演算したときのデータと同一の範囲のものとし、ＣＲＣ値を演算するアルゴリズムも同様とする。
【００３３】
続いて、ＣＲＣ値（比較値）が生成されると、読み出すデータに対応するＣＲＣ値記録領域におけるＣＲＣ値（基準値）と、生成されたＣＲＣ値（比較値）とを比較し（Ｓ３３０：異常判定手段）、この比較結果が一致しているか否かを判定する（Ｓ３４０：異常判定手段）。この結果が等しければ（Ｓ３４０：ＹＥＳ）、読み出そうとしたデータを正常時の処理と同様に読み出し（Ｓ３５０）、割込許可を設定し（Ｓ３６０）、読出処理を終了する。
【００３４】
また、各ＣＲＣ値が不一致であれば（Ｓ３４０：ＮＯ）、データに異常があるものとして、ＣＲＣ値異常割込を実施させる（Ｓ３７０：異常判定手段、割込実行手段）。この処理では、割込コントローラ１５に異常信号を送り、この異常信号を受けた割込コントローラ１５がＣＰＵ１１に割込信号を送る。
【００３５】
すると、ＣＰＵ１１は、読出処理とは並列する処理として異常割込処理を実施する。異常割込処理では、図５（ｂ）のフローチャートに示すように、ＣＲＣ破壊フラグをＯＮに設定する（Ｓ４１０）。続いて、図５（ａ）の読出処理にて、ＣＲＣ値異常割込を実施させると、割込許可を設定し（Ｓ３８０）、読出処理を終了する。
【００３６】
このような読出処理が終了すると図４に戻り、ＣＲＣ破壊フラグの状態を判定する（Ｓ２３０）。なお、Ｓ２１０〜Ｓ２３０の処理の間で異常割込処理が実施されていれば、ＣＲＣ破壊フラグはＯＮになっている。
【００３７】
ＣＲＣ破壊フラグがＯＦＦであれば（Ｓ２３０：ＯＦＦ）、ＲＡＭ１３のデータを利用した正常な処理を実施し（Ｓ２４０）、利用処理を終了する。また、ＣＲＣ破壊フラグがＯＮであれば（Ｓ２３０：ＯＮ）、別途設けられた異常用プログラムを実施することでフェールセーフ処理を実施し（Ｓ２５０：割込実行手段）、利用処理を終了する。
【００３８】
ここで、フェールセーフ処理とは、車両の駆動系や制御系に負担をかけないように安全側に制御を設定した状態で、必要最低限の作動のみを許可する処理を示す。例えば、車両を低速での移動のみを許可したり、出力（駆動力や電流）を制限したりする。
【００３９】
［本実施形態による効果］
以上のように詳述した異常検出ＥＣＵ１においてＣＰＵ１１は、ＲＡＭ１３へのデータの書き込み時に、所定のアルゴリズムに従ってＣＲＣ計算回路１４に書き込むデータの内容に応じた値である基準値を生成させ、ＲＡＭ１３からのデータの読み出し時に、基準値を生成する際に利用した同様のアルゴリズムに従ってＣＲＣ計算回路１４に読み出すデータの内容に応じた値である比較値を生成させる。そして、ＣＰＵ１１は、比較値が生成されると、基準値と比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする。
【００４０】
すなわち、上記実施形態で生成される基準値と比較値とは、同じ値になるべきであるが、ＲＡＭ１３へのノイズ等の影響によってデータが書き換えられると同じ値にならなくなる。このため上記実施形態では、このようにデータが書き換えられ、基準値と比較値とが不一致となると、データに異常がある旨を出力する。
【００４１】
このような異常検出ＥＣＵ１によれば、ＲＡＭ１３へデータを記録するとき（書き込み時）と利用するとき（読み出し時）とでデータが変化していないかどうかを確認するので、確実にデータの異常を検出することができる。また、このような異常検出ＥＣＵ１によれば、周期的にデータの異常を検出する構成と比較して、データの異常を検出する処理を実施する回数を少なくすることができるので、効率的にデータの異常を検出する処理を行うことができる。また、ＣＰＵ１１の処理によってデータの異常を検出するので、処理を高速化することができる。
【００４２】
さらに、異常検出ＥＣＵ１においてＣＰＵ１１は、生成した基準値を、ＲＡＭ１３におけるデータ記録領域とは隣接しない領域に設定されたＲＡＭ１３におけるＣＲＣ値記録領域に記録する。
【００４３】
一般的に、ＲＡＭ１３にノイズ等の影響を受けたときには隣接する領域にも同様の影響を受けやすいが、本実施形態の異常検出ＥＣＵ１によれば、ＲＡＭ１３におけるデータ記録領域とＣＲＣ値記録領域とが隣接しないように配置されているので、ＲＡＭ１３におけるデータ記録領域にノイズ等の影響を受けた場合であっても、ＣＲＣ値記録領域がノイズ等の影響を受け難くすることができる。よって、異常を検出する精度を向上させることができる。
【００４４】
また、異常検出ＥＣＵ１においてＣＰＵ１１は、書き込むデータおよび既にＲＡＭ１３に記録されているデータを含む複数のデータに基づいて基準値を生成させ、この基準値を生成したときに利用した複数のデータを利用して比較値を生成させる。
【００４５】
このような異常検出ＥＣＵ１によれば、複数のデータについて１つの基準値を生成するので、一時的に記録しておく基準値の数）を少なくすることができる。よって、基準値を記録するための記録領域（ＲＡＭ１３のうちのＣＲＣ値を格納する領域）を節約することができる。
【００４６】
また、異常検出ＥＣＵ１においてＣＰＵ１１は、異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる。
このような異常検出ＥＣＵ１によれば、割込処理によって速やかに異常用プログラムを実行させることができる。
【００４７】
［その他の実施形態］
本発明の実施の形態は、上記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【００４８】
例えば、読出処理においては、図６に示すように、Ｓ３４０の処理とＳ３７０の処理との間で、Ｓ５１０の処理を行うようにしてもよい。すなわち、書き込み時のＣＲＣ値と読出し時のＣＲＣ値とが異なる場合、データ記録領域に所定のフェール値（制御を安全に行うことができるように予め設定された値）を書き込み、この値を読み出して使用するようにしてもよい（Ｓ５１０）。
【００４９】
このような処理を行う場合には、ＣＲＣ値異常割込を行う処理（Ｓ２３０〜Ｓ２５０，Ｓ３７０，Ｓ４１０の処理を不要とすることができる。
また、上記実施形態では、生成した基準値を、ＲＡＭ１３におけるデータ記録領域とは隣接しない領域に設定されたＲＡＭ１３におけるＣＲＣ値記録領域に記録するようにしたが、図７に示す異常検出ＥＣＵ２のように、ＲＡＭ１３とは異なるハードウェアとして構成されたＣＲＣ値用専用ＲＡＭ１７を備えておき、ＣＰＵ１１は、生成した基準値を、このＣＲＣ値用専用ＲＡＭ１７に記録するようにしてもよい。
【００５０】
このようにすれば、ＲＡＭ１３にノイズ等の影響を受けた場合であっても、ＣＲＣ値用専用ＲＡＭ１７がノイズ等の影響を受け難くすることができる。
さらに、上記実施形態においては、ＣＲＣ計算回路１４を用いてＣＲＣ値を算出したが、ＣＰＵ１１による処理としてＣＲＣ値を算出してもよい。また、上記実施形態では、ＣＲＣによる手法を利用して書き込み時のデータと読み出し時のデータとの違いを検出したが、ＣＲＣに限らず、例えばミラーリングやチェックサム等による手法を利用して書き込み時のデータと読み出し時のデータとの違いを検出してもよい。
【符号の説明】
【００５１】
１，２…異常検出ＥＣＵ、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…ＣＲＣ計算回路、１５…割込コントローラ、１６…通信部、１７…ＣＲＣ値用専用ＲＡＭ。
【図１】
2012174198.tif 000003
【図２】
2012174198.tif 000004
【図４】
2012174198.tif 000005
【図５】
2012174198.tif 000006
【図６】
2012174198.tif 000007
【図７】
2012174198.tif 000008
【図３】
2012174198.tif 000009