説明

異常検出装置、および異常検出プログラム

【課題】データ記録領域に記録されたデータの異常を検出する異常検出装置において、効率的かつ確実にデータの異常を検出できるようにする。
【解決手段】異常検出ECUは、RAMへのデータの書き込み時およびRAMからのデータの読み出し時に、所定の同様のアルゴリズムに従って書き込むデータの内容に応じた値であるCRC値を生成させ、これらのCRC値を比較し、この比較結果が不一致であればデータに異常がある旨の判定をする(S330,S340,S370)。この異常検出ECUによれば、RAMへデータを記録するとき(書き込み時)と利用するとき(読み出し時)とでデータが変化していないかどうかを確認するので、確実にデータの異常を検出することができ、周期的にデータの異常を検出する構成と比較して、データの異常を検出する処理を実施する回数を少なくすることができるので、効率的にデータの異常を検出する処理を行うことができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データ記録領域に記録されたデータの異常を検出する異常検出装置、および異常検出プログラムに関する。
【背景技術】
【0002】
上記異常検出装置として、データ記録領域を定期的に監視することでデータ記録領域におけるビットの反転(いわゆるRAM化け)等の異常を検出するものが知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2004−133635号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、ビットの反転等の異常が問題となるのは、異常のあるデータを利用する場合であり、データ記録領域に記録されたままの状態でデータが利用されない場合には問題は生じない。しかしながら、上記異常検出装置においては、データ記録領域に記録されたままになっているデータに対しても、繰り返し異常を検出しており、異常を検出する処理の多くが無駄になっている可能性が高い。
【0005】
また、上記異常検出装置においては、定期的に異常の有無を監視するが、データ記録領域にデータが記録された直後に異常の有無を検出するとは限らないため、データが記録された後、異常の有無を監視するまでにビットの反転等の異常が生じた場合に、この異常を検出できない虞がある。
【0006】
そこで、このような問題点を鑑み、データ記録領域に記録されたデータの異常を検出する異常検出装置、および異常検出プログラムにおいて、効率的かつ確実にデータの異常を検出できるようにすることを本発明の目的とする。
【課題を解決するための手段】
【0007】
かかる目的を達成するために成された第1の構成の異常検出装置において、基準値生成手段は、データ記録領域へのデータの書き込み時に、所定のアルゴリズムに従って書き込むデータの内容に応じた値である基準値を生成し、比較値生成手段は、データ記録領域からのデータの読み出し時に、基準値を生成する際に利用した同様のアルゴリズムに従って読み出すデータの内容に応じた値である比較値を生成する。そして、異常判定手段は、比較値が生成されると、基準値と比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする。
【0008】
すなわち、本発明で生成される基準値と比較値とは、同じ値になるべきであるが、データ記録領域へのノイズ等の影響によってデータが書き換えられると同じ値にならなくなる。このため本発明では、このようにデータが書き換えられ、基準値と比較値とが不一致となると、データに異常がある旨を出力する。
【0009】
このような異常検出装置によれば、データ記録領域へデータを記録するとき(書き込み時)と利用するとき(読み出し時)とでデータが変化していないかどうかを確認するので、確実にデータの異常を検出することができる。また、このような異常検出装置によれば、周期的にデータの異常を検出する構成と比較して、データの異常を検出する処理を実施する回数を少なくすることができるので、効率的にデータの異常を検出する処理を行うことができる。
【0010】
さらに、上記異常検出装置においては、第2の構成のように、基準値生成手段は、生成した基準値を、データ記録領域とは隣接しない領域に設定された基準値記録領域に記録するようにしてもよい。特に、第3の構成のように、基準値生成手段は、生成した基準値を、データ記録領域とは異なるハードウェアとして構成された基準値記録領域に記録するようにしてもよい。
【0011】
一般的に、データ記録領域にノイズ等の影響を受けたときには隣接する領域にも同様の影響を受けやすいが、本発明の異常検出装置によれば、データ記録領域と基準値記録領域とが隣接しないように配置されているので、データ記録領域にノイズ等の影響を受けた場合であっても、基準値記録領域がノイズ等の影響を受け難くすることができる。
【0012】
よって、異常を検出する精度を向上させることができる。
ところで、上記異常検出装置においては、第4の構成のように、基準値生成手段は、書き込むデータおよび既にデータ記録領域に記録されているデータを含む複数のデータに基づいて基準値を生成し、比較値生成手段は、基準値を生成したときに利用した複数のデータを利用して比較値を生成するようにしてもよい。
【0013】
このような異常検出装置によれば、複数のデータについて1つの基準値を生成するので、一時的に記録しておく基準値の数)を少なくすることができる。よって、基準値を記録するための記録領域(基準値記録領域)を節約することができる。
【0014】
また、上記異常検出装置においては、第5の構成のように、異常判定手段によって異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる割込実行手段、を備えていてもよい。
【0015】
このような異常検出装置によれば、割込処理によって速やかに異常用プログラムを実行させることができる。
次に、上記目的を達成するために成された第6の構成としての異常検出プログラムは、コンピュータを、上記に記載の異常検出装置を構成する各手段として機能させるためのプログラムであることを特徴とする。
【0016】
このような異常検出プログラムによれば、少なくとも請求項1に記載の異常検出装置と同様の効果を享受することができる。
【図面の簡単な説明】
【0017】
【図1】実施形態における異常検出ECU1の概略構成を示すブロック図である。
【図2】記録時処理を示すフローチャートである。
【図3】RAM13における記録領域を示す説明図である。
【図4】利用処理を示すフローチャートである。
【図5】読出処理および異常割込処理を示すフローチャートである。
【図6】変形例における読出処理を示すフローチャートである。
【図7】変形例における異常検出ECU2の概略構成を示すブロック図である。
【発明を実施するための形態】
【0018】
以下に本発明にかかる実施の形態を図面と共に説明する。
[本実施形態の構成]
図1は、本発明が適用された異常検出ECU(電子制御装置)1(異常検出装置)の概略構成を示すブロック図である。異常検出ECU1は、例えば乗用車等の車両に搭載されており、車両を制御するプログラムの実行中において、RAM13に記録されたデータの異常を検出する機能、およびデータの異常が検出された場合に、異常用のプログラムを実施する機能を備えている。
【0019】
詳細には、異常検出ECU1は、図1に示すようにCPU11と、ROM12と、RAM13(データ記録領域、基準値記録領域)と、CRC(巡回冗長検査)計算回路14(基準値生成手段、比較値生成手段)と、割込コントローラ15と、通信部16とを備えている。CPU11は、ROM12に格納されたプログラム(異常検出プログラムを含む)や、RAM13にロードされたプログラムに基づき、後述する記録時処理、利用処理等の各種処理を実行する。
【0020】
RAM13は、CPU11の作業領域として機能するが、特に、データを記録するためのデータ記録領域と、CRC値を記録するためのCRC値記録領域とが分離されており(図3参照)、データとCRC値とがRAM13において離れた領域に記録される(つまり、隣接する領域に記録されない)ようにCPU11が記録領域を設定する。
【0021】
CRC計算回路14は、RAM13に記録されるデータ、およびRAM13から読み出されるデータについて周知のCRCを実施し、この値を出力する。なお、CRC計算回路14の詳細な作動については後述する。
【0022】
割込コントローラ15は、所定のフラグ(CRC破壊フラグ)が立てられると、CPU11に対して割込信号を送り、CPU11に所定のプログラムを実行させる。
通信部16は、周知の車内LANを介して他のECU等の他の装置と通信を行う。
【0023】
[本実施形態の処理]
上記のような異常検出ECU1においては、以下に示す処理が実施される。図2はCPU11が実行する記録時処理を示すフローチャートである。
【0024】
記録時処理は、CPU11がRAM13にデータを記録しようとする都度開始され、データをRAM13に記録させる際の処理である。記録時処理では、図2に示すように、まず、割込を禁止するよう設定する(S110)。このように割込を禁止することで、割込を許可するまで本処理が中断されることなく実施される。
【0025】
続いて、記録しようとするデータをRAM13に記録させる(S120)。このとき、RAM13において予め設定されたデータ記録領域のうちの空いている領域にデータを記録させる。
【0026】
そして、書き込んだデータを含むデータを指定して、CRC計算回路14にCRC値を計算させるようデータの位置(アドレスおよびビット番号の範囲)を指定して指示する(S130)。この指示を受けると、CRC計算回路14は、指定された位置のデータについて、所定のアルゴリズムに基づいてCRC値を演算する。
【0027】
ここで、本処理では、図3(a)に示すように、アドレス「0x0000 XX10」のEビットに存在するデータを書き込んだ場合、「0x0000 XX10」に存在する複数のデータを1つのデータとみなしてCRC値(基準値)を演算させる。つまり、新たに書き込まれたデータおよび既に書き込まれていたデータを含む複数のデータに基づいて基準値を生成する。
【0028】
なお、この処理では、書き込んだデータのみについてCRC値を演算するようにしてもよい。この場合には例えば、アドレス「0x0000 XX30」の0〜3ビットの範囲内に存在するデータを書き込んだ場合、このデータのみについてCRC値を演算させるようにすればよい。
【0029】
続いて、RAM13のCRC値記録領域にCRC計算回路14によって演算されたCRC値を書き込む(S140:基準値生成手段)。ここで、CRC値記録領域には、図3(b)に示すように、CRC値を求めたデータが記録されていたデータ記録領域のアドレスに対応するアドレスが割り振られており、この処理では、対応するアドレスにCRC値を記録させる。そして、割込許可を設定し(S150)、記録時処理を終了する。
【0030】
次に、RAM13に記録されたデータを読み出して利用する処理について図4を用いて説明する。図4は、CPU11が実行する利用処理を示すフローチャートである。利用処理は、RAM13内のデータを読み出そうとする都度開始され、読み出そうとするデータに異常があるか否かを確認し、異常があれば異常に対する処置を行う処理である。
【0031】
利用処理では、図4に示すように、まず、CRC破壊フラグをOFFに設定する(S210)。この処理は、CRC破壊フラグを初期値としてOFFに設定する処理である。
続いて、読出処理を実施する(S220)。読出処理については図5(a)に示すフローチャートを用いて説明する。読出処理では、図5(a)に示すように、まず、S110の処理と同様に、割込を禁止するよう設定する(S310)。そして、読み出すデータの位置に応じて、CRC計算回路14にCRC値を計算させるようデータの位置(アドレスおよびビット番号の範囲)を指定して指示する(S320)。
【0032】
この指示を受けると、CRC計算回路14は、指定された位置のデータについて、所定のアルゴリズムに基づいてCRC値(比較値)を演算する。このとき、CRC値の計算対象とするデータは、S130の処理でCRC値を演算したときのデータと同一の範囲のものとし、CRC値を演算するアルゴリズムも同様とする。
【0033】
続いて、CRC値(比較値)が生成されると、読み出すデータに対応するCRC値記録領域におけるCRC値(基準値)と、生成されたCRC値(比較値)とを比較し(S330:異常判定手段)、この比較結果が一致しているか否かを判定する(S340:異常判定手段)。この結果が等しければ(S340:YES)、読み出そうとしたデータを正常時の処理と同様に読み出し(S350)、割込許可を設定し(S360)、読出処理を終了する。
【0034】
また、各CRC値が不一致であれば(S340:NO)、データに異常があるものとして、CRC値異常割込を実施させる(S370:異常判定手段、割込実行手段)。この処理では、割込コントローラ15に異常信号を送り、この異常信号を受けた割込コントローラ15がCPU11に割込信号を送る。
【0035】
すると、CPU11は、読出処理とは並列する処理として異常割込処理を実施する。異常割込処理では、図5(b)のフローチャートに示すように、CRC破壊フラグをONに設定する(S410)。続いて、図5(a)の読出処理にて、CRC値異常割込を実施させると、割込許可を設定し(S380)、読出処理を終了する。
【0036】
このような読出処理が終了すると図4に戻り、CRC破壊フラグの状態を判定する(S230)。なお、S210〜S230の処理の間で異常割込処理が実施されていれば、CRC破壊フラグはONになっている。
【0037】
CRC破壊フラグがOFFであれば(S230:OFF)、RAM13のデータを利用した正常な処理を実施し(S240)、利用処理を終了する。また、CRC破壊フラグがONであれば(S230:ON)、別途設けられた異常用プログラムを実施することでフェールセーフ処理を実施し(S250:割込実行手段)、利用処理を終了する。
【0038】
ここで、フェールセーフ処理とは、車両の駆動系や制御系に負担をかけないように安全側に制御を設定した状態で、必要最低限の作動のみを許可する処理を示す。例えば、車両を低速での移動のみを許可したり、出力(駆動力や電流)を制限したりする。
【0039】
[本実施形態による効果]
以上のように詳述した異常検出ECU1においてCPU11は、RAM13へのデータの書き込み時に、所定のアルゴリズムに従ってCRC計算回路14に書き込むデータの内容に応じた値である基準値を生成させ、RAM13からのデータの読み出し時に、基準値を生成する際に利用した同様のアルゴリズムに従ってCRC計算回路14に読み出すデータの内容に応じた値である比較値を生成させる。そして、CPU11は、比較値が生成されると、基準値と比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする。
【0040】
すなわち、上記実施形態で生成される基準値と比較値とは、同じ値になるべきであるが、RAM13へのノイズ等の影響によってデータが書き換えられると同じ値にならなくなる。このため上記実施形態では、このようにデータが書き換えられ、基準値と比較値とが不一致となると、データに異常がある旨を出力する。
【0041】
このような異常検出ECU1によれば、RAM13へデータを記録するとき(書き込み時)と利用するとき(読み出し時)とでデータが変化していないかどうかを確認するので、確実にデータの異常を検出することができる。また、このような異常検出ECU1によれば、周期的にデータの異常を検出する構成と比較して、データの異常を検出する処理を実施する回数を少なくすることができるので、効率的にデータの異常を検出する処理を行うことができる。また、CPU11の処理によってデータの異常を検出するので、処理を高速化することができる。
【0042】
さらに、異常検出ECU1においてCPU11は、生成した基準値を、RAM13におけるデータ記録領域とは隣接しない領域に設定されたRAM13におけるCRC値記録領域に記録する。
【0043】
一般的に、RAM13にノイズ等の影響を受けたときには隣接する領域にも同様の影響を受けやすいが、本実施形態の異常検出ECU1によれば、RAM13におけるデータ記録領域とCRC値記録領域とが隣接しないように配置されているので、RAM13におけるデータ記録領域にノイズ等の影響を受けた場合であっても、CRC値記録領域がノイズ等の影響を受け難くすることができる。よって、異常を検出する精度を向上させることができる。
【0044】
また、異常検出ECU1においてCPU11は、書き込むデータおよび既にRAM13に記録されているデータを含む複数のデータに基づいて基準値を生成させ、この基準値を生成したときに利用した複数のデータを利用して比較値を生成させる。
【0045】
このような異常検出ECU1によれば、複数のデータについて1つの基準値を生成するので、一時的に記録しておく基準値の数)を少なくすることができる。よって、基準値を記録するための記録領域(RAM13のうちのCRC値を格納する領域)を節約することができる。
【0046】
また、異常検出ECU1においてCPU11は、異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる。
このような異常検出ECU1によれば、割込処理によって速やかに異常用プログラムを実行させることができる。
【0047】
[その他の実施形態]
本発明の実施の形態は、上記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【0048】
例えば、読出処理においては、図6に示すように、S340の処理とS370の処理との間で、S510の処理を行うようにしてもよい。すなわち、書き込み時のCRC値と読出し時のCRC値とが異なる場合、データ記録領域に所定のフェール値(制御を安全に行うことができるように予め設定された値)を書き込み、この値を読み出して使用するようにしてもよい(S510)。
【0049】
このような処理を行う場合には、CRC値異常割込を行う処理(S230〜S250,S370,S410の処理を不要とすることができる。
また、上記実施形態では、生成した基準値を、RAM13におけるデータ記録領域とは隣接しない領域に設定されたRAM13におけるCRC値記録領域に記録するようにしたが、図7に示す異常検出ECU2のように、RAM13とは異なるハードウェアとして構成されたCRC値用専用RAM17を備えておき、CPU11は、生成した基準値を、このCRC値用専用RAM17に記録するようにしてもよい。
【0050】
このようにすれば、RAM13にノイズ等の影響を受けた場合であっても、CRC値用専用RAM17がノイズ等の影響を受け難くすることができる。
さらに、上記実施形態においては、CRC計算回路14を用いてCRC値を算出したが、CPU11による処理としてCRC値を算出してもよい。また、上記実施形態では、CRCによる手法を利用して書き込み時のデータと読み出し時のデータとの違いを検出したが、CRCに限らず、例えばミラーリングやチェックサム等による手法を利用して書き込み時のデータと読み出し時のデータとの違いを検出してもよい。
【符号の説明】
【0051】
1,2…異常検出ECU、11…CPU、12…ROM、13…RAM、14…CRC計算回路、15…割込コントローラ、16…通信部、17…CRC値用専用RAM。

【特許請求の範囲】
【請求項1】
データ記録領域に記録されたデータの異常を検出する異常検出装置であって、
前記データ記録領域へのデータの書き込み時に、所定のアルゴリズムに従って該書き込むデータの内容に応じた値である基準値を生成する基準値生成手段と、
前記データ記録領域からのデータの読み出し時に、前記基準値を生成する際に利用した同様のアルゴリズムに従って該読み出すデータの内容に応じた値である比較値を生成する比較値生成手段と、
前記比較値が生成されると、前記基準値と前記比較値とを比較し、この比較結果が不一致であればデータに異常がある旨の判定をする異常判定手段と、
を備えたことを特徴とする異常検出装置。
【請求項2】
請求項1に記載の異常検出装置において、
前記基準値生成手段は、生成した基準値を、前記データ記録領域とは隣接しない領域に設定された基準値記録領域に記録すること
を特徴とする異常検出装置。
【請求項3】
請求項2に記載の異常検出装置において、
前記基準値生成手段は、生成した基準値を、前記データ記録領域とは異なるハードウェアとして構成された基準値記録領域に記録すること
を特徴とする異常検出装置。
【請求項4】
請求項1〜請求項3の何れか1項に記載の異常検出装置において、
前記基準値生成手段は、前記書き込むデータおよび既にデータ記録領域に記録されているデータを含む複数のデータに基づいて前記基準値を生成し、
前記比較値生成手段は、前記基準値を生成したときに利用した複数のデータを利用して前記比較値を生成すること
を特徴とする異常検出装置。
【請求項5】
請求項1〜請求項4の何れか1項に記載の異常検出装置において、
前記異常判定手段によって異常がある旨の判定がされると割込処理によって異常用プログラムを実行させる割込実行手段、を備えたこと
を特徴とする異常検出装置。
【請求項6】
コンピュータを、請求項1〜請求項5の何れか1項に記載の異常検出装置を構成する各手段として機能させるための異常検出プログラム。

【図1】
image rotate

【図2】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図3】
image rotate


【公開番号】特開2012−174198(P2012−174198A)
【公開日】平成24年9月10日(2012.9.10)
【国際特許分類】
【出願番号】特願2011−38452(P2011−38452)
【出願日】平成23年2月24日(2011.2.24)
【出願人】(000004260)株式会社デンソー (27,639)
【Fターム(参考)】