(57)【要約】【課題】メモリの一部に生じた異常に由来してアクチュエータの制御ができなくなってしまう可能性を低減できる電子制御装置を提供する。【解決手段】メモリ異常検出部１１Ｅは、誤り訂正符号を用いてメモリ１１Ｃから読み出したデータのビット誤りを検出する。初期状態においては、メモリ異常検出部１１Ｅは、メモリ１１Ｃの全領域を対象としてデータのビット誤りを検出する処理を行う。一方、メモリ１１Ｃの何れかのアドレスにおいて２ビット誤りを検出した場合には、ＣＰＵ１１Ｄが、当該異常発生箇所が動作監視用領域Ｍ２に属するアドレスであるか否かを判定する。異常発生箇所が動作監視用領域Ｍ２である場合にはスロットルモータ２２への通電を遮断する一方、異常発生箇所が動作監視用領域Ｍ２以外の場合には、診断範囲を動作監視用領域Ｍ２へと縮退させる。【選択図】図２
2018010362.tif 000002
【特許請求の範囲】
【請求項１】
中央演算装置及びメモリを備える演算ユニット（１１）と、前記メモリの異常を検出するメモリ異常検出部（１１Ｅ）と、を備え、車両に搭載されたセンサから入力されるデータに基づいて前記車両に搭載された所定のアクチュエータの動作を制御する電子制御装置であって、
前記演算ユニットは、
前記センサから入力されるデータに基づいて前記アクチュエータの制御量を算出する制御演算部（Ｆ１）と、
前記メモリが備える記憶領域の一部である動作監視用領域を用いて前記制御演算部が正常に動作しているか否かを判定する動作監視部（Ｆ２）と、
前記メモリ異常検出部によって前記メモリの異常が検出された場合、及び、前記動作監視部によって前記制御演算部の異常動作が検出された場合に、その検出された異常事象に応じた処理を実行するエラー処理部（Ｆ３）と、を備え、
前記メモリが備える記憶領域において前記メモリ異常検出部による異常検出が行われる範囲である診断範囲は、変更可能に構成されており、
前記エラー処理部は、前記メモリ異常検出部によって前記メモリの異常が検出された場合には、異常発生箇所が前記動作監視用領域であるか否かを判定し、前記異常発生箇所が前記動作監視用領域ではない場合には、当該異常発生箇所を前記診断範囲から除外する診断範囲縮退処理を実行することを特徴とする電子制御装置。
【請求項２】
請求項１において、
前記エラー処理部は、前記異常発生箇所が前記動作監視用領域ではない場合には、前記診断範囲を前記動作監視用領域に限定することを特徴とする電子制御装置。
【請求項３】
請求項１又は２において、
前記エラー処理部は、前記異常発生箇所が前記動作監視用領域である場合には、前記アクチュエータの出力を停止させるフェールセーフ処理を実行することを特徴とする電子制御装置。
【請求項４】
請求項１から３の何れか１項において、
前記メモリ異常検出部は、所定の誤り訂正符号を用いて前記メモリに保存されているデータの誤りを検出するものであり、
前記誤り訂正符号は、前記メモリに保存されているデータの１ビット誤り及び２ビット誤りを検出可能とする符号であって、
前記メモリ異常検出部は、前記メモリに保存されているデータに２ビット誤りを検出した場合には、２ビット誤りを検出したデータの保存場所を前記異常発生箇所として取り扱うことを特徴とする電子制御装置。
【請求項５】
請求項４において、
前記メモリ異常検出部は、１ビット誤りについては前記メモリの異常として取り扱わないことを特徴とする電子制御装置。
【請求項６】
請求項４において、
前記メモリ異常検出部は、前記メモリから読み出したデータに１ビット誤りを検出した場合には、当該データの保存場所を前記異常発生箇所として取り扱うことを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子制御装置に関する。
【背景技術】
【０００２】
車両に搭載されたアクチュエータの動作を制御するための装置（以降、電子制御装置）は、車載センサから入力されるデータに基づいて種々の演算処理が実行するマイクロコンピュータ（以降、制御用マイコン）を主体として構成されている。この種の電子制御装置が備える制御用マイコンとしては、アクチュエータの動作を制御するための演算処理を実行する機能（以降、制御演算部）のほかに、動作監視機能やメモリ異常検出機能を備えるものがある。
【０００３】
動作監視機能は、制御演算部が正常に動作しているか否かを監視するとともに、制御演算部の異常動作を検出した場合には、アクチュエータの駆動を停止させる機能である。メモリ異常検出機能は、メモリに異常が生じているか否かを判定するとともに、メモリの異常を検出した場合には、ＣＰＵに所定の割込み処理（以降、メモリ異常割込み処理）を実行させる機能である。
【０００４】
メモリ異常割込み処理の内容は、適宜設計されればよい。例えば電子制御装置の中には、メモリ異常検出機能がメモリ異常を検出した場合には、制御用マイコンをリセットさせるものもある。なお、メモリの異常を検出する方法としては、例えば特許文献１に開示されているように、エラー検出訂正（ＥＣＣ：Error Checking and Correcting）という技術が知られている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１４−４８７４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
メモリが備える記憶領域の一部に半恒常的な異常が生じた場合には、当該異常に起因してメモリ異常検出機能がメモリ異常検出割込みを繰り返し、アクチュエータの制御を継続できなくなってしまう恐れがある。なお、ここでの半恒常的な異常とは、例えば、隣接するメモリビット線間のショートなどといった、リセット処理を実行しても修復が困難な異常を指す。
【０００７】
本発明は、この事情に基づいて成されたものであり、その目的とするところは、メモリの一部に生じた異常に由来してアクチュエータの制御ができなくなってしまう可能性を低減できる電子制御装置を提供することにある。
【課題を解決するための手段】
【０００８】
その目的を達成するための本発明は、演算ユニット及びメモリを備える演算ユニット（１１）と、メモリの異常を検出するメモリ異常検出部（１１Ｅ）と、を備え、車両に搭載されたセンサから入力されるデータに基づいて車両に搭載された所定のアクチュエータの動作を制御する電子制御装置であって、演算ユニットは、センサから入力されるデータに基づいてアクチュエータの制御量を算出する制御演算部（Ｆ１）と、メモリが備える記憶領域の一部である動作監視用領域を用いて制御演算部が正常に動作しているか否かを判定する動作監視部（Ｆ２）と、メモリ異常検出部によってメモリの異常が検出された場合、及び、動作監視部によって制御演算部の異常動作が検出された場合に、その検出された異常事象に応じた処理を実行するエラー処理部（Ｆ３）と、を備え、メモリが備える記憶領域においてメモリ異常検出部による異常検出が行われる範囲である診断範囲は変更可能に構成されており、エラー処理部は、メモリ異常検出部によってメモリの異常が検出された場合には、その異常発生箇所が動作監視用領域であるか否かを判定し、異常発生箇所が動作監視用領域ではない場合には、当該異常発生箇所を診断範囲から除外する監視領域縮退処理を実行することを特徴とする。
【０００９】
上記構成では、メモリにおいて異常が発生した領域（以降、異常発生箇所）が動作監視用領域以外の場合には、当該異常発生箇所を診断範囲から除外する。このような構成によれば、動作監視用領域以外の領域で半恒常的な異常が発生した場合であっても、その異常に起因してメモリ異常検出部がメモリ異常検出割込みを繰り返すことはない。その結果、メモリの一部に生じた異常に由来してアクチュエータの制御ができなくなってしまう可能性を低減できる。
【００１０】
なお、特許請求の範囲に記載した括弧内の符号は、一つの態様として後述する実施形態に記載の具体的手段との対応関係を示すものであって、本発明の技術的範囲を限定するものではない。
【図面の簡単な説明】
【００１１】
【図１】ＥＣＵ１を含むシステムの概略的な構成を示すブロック図である。
【図２】ＥＣＵ１の概略的な構成を示すブロック図である。
【図３】マイコン１１が実施するデータ読出関連処理について説明するためのフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明が適用された電子制御装置（以降、ＥＣＵ：Electronic Control Unit）１について図を用いて説明する。ＥＣＵ１は、エンジンを駆動源として備える車両に搭載されており、図１に示すように、同一車両に搭載されている電子スロットル２、アクセルセンサ３、スロットルセンサ４、及び警告灯５のそれぞれと接続されている。
【００１３】
なお、本実施形態では一例として、ＥＣＵ１は、エンジンを駆動源として備える車両に搭載されている態様とするが、これに限らない。ＥＣＵ１が搭載された車両（以降、搭載車両）は、モータのみを駆動源として備える車両（いわゆる電気自動車）であってもよいし、エンジンとモータの両方を駆動源として備える車両（いわゆるハイブリッドカー）であってもよい。
【００１４】
電子スロットル２は、搭載車両のエンジンへの吸入空気量を調節するスロットル弁２１と、スロットル弁２１を動かすためのアクチュエータとしてのモータ（以降、スロットルモータ）２２とを、１つの製品としてまとめたものである。スロットルモータ２２の出力トルクは、ＥＣＵ１によって制御される。なお、電子スロットル２は、スロットルモータ２２の駆動が停止された場合、スロットル弁２１の開度が予め設定された中間開度となるように構成されている。中間開度は、エンジンのアイドリング運転や、搭載車両の退避走行などを可能とする開度である。
【００１５】
アクセルセンサ３は、運転者によるアクセルペダルの操作位置をアクセル操作量として検出するセンサである。スロットルセンサ４は、スロットル弁２１の位置（換言すれば回転角度）をスロットル開度として検出するセンサである。アクセルセンサ３やスロットルセンサ４の検出結果はＥＣＵ１に逐次提供される。
【００１６】
警告灯５は、電子スロットル２の制御系統に所定の不具合が生じていることを乗員に通知するための装置であって、例えばＬＥＤ等を用いて実現されている。警告灯５は、ＥＣＵ１からの指示に基づき動作（すなわち点灯）する。
【００１７】
ＥＣＵ１は、アクセルセンサ３やスロットルセンサ４から入力されるデータに基づいてスロットルモータ２２を制御する装置である。ＥＣＵ１は、図２に示すように、マイクロコンピュータ（以降、マイコン）１１、駆動回路１２、及び監視ＩＣ１３を備える。
【００１８】
マイコン１１は、より細かい構成要素として、入力回路１１Ａ、ＲＯＭ１１Ｂ、メモリ１１Ｃ、ＣＰＵ１１Ｄ、メモリ異常検出部１１Ｅ、エラー制御部１１Ｆ、割込機能設定レジスタ１１Ｇ、診断範囲設定レジスタ１１Ｈ、出力回路１１Ｊ、通信インターフェース（以降、通信ＩＦ）１１Ｋ、及びバス１１Ｌを備える。割込機能設定レジスタ１１Ｇ及び診断範囲設定レジスタ１１Ｈは、後述する種々の設定情報が登録されているレジスタである。マイコン１１が請求項に記載の演算ユニットに相当する。
【００１９】
入力回路１１Ａは、アクセルセンサ３やスロットルセンサ４から入力されるデータを取得する回路モジュールである。入力回路１１Ａは、アクセルセンサ３やスロットルセンサ４からの入力信号に対して所定の信号処理（例えばアナログデジタル変換処理等）を実施する。入力回路１１Ａが取得したデータは、バス１１Ｌを介してＣＰＵ１１Ｄ等に提供される。
【００２０】
ＲＯＭ１１Ｂは、不揮発性の記憶媒体である。ＲＯＭ１１Ｂには、制御演算プログラムＰｍ１、動作監視プログラムＰｍ２、及びエラー処理プログラムＰｍ３が格納されている。制御演算プログラムＰｍ１は、ＣＰＵ１１Ｄが後述する制御演算部Ｆ１として機能するためのプログラムである。動作監視プログラムＰｍ２は、ＣＰＵ１１Ｄが後述する動作監視部Ｆ２として機能するためのプログラムである。エラー処理プログラムＰｍ３は、ＣＰＵ１１Ｄが後述するエラー処理部Ｆ３として機能するためのプログラムである。
【００２１】
メモリ１１Ｃは、揮発性の書き換え可能な記憶媒体である。メモリ１１Ｃは、ＣＰＵ１１Ｄが種々の演算処理を実行するためのアドレス空間を提供する。制御演算部Ｆ１、動作監視部Ｆ２、及びエラー処理部Ｆ３のそれぞれには、図示しないオペレーティングシステム（ＯＳ：Operating System）によって、所定の大きさを有するアドレス空間（いわゆる仮想アドレス空間）が割り当てられる。或る機能ブロックに割り当てられたアドレス空間は、その機能ブロックが使用可能なメモリ領域に相当する。
【００２２】
便宜上、制御演算部Ｆ１に割り当てられたアドレス空間を制御演算用領域Ｍ１、動作監視部Ｆ２に割り当てられたアドレス空間を動作監視用領域Ｍ２、エラー処理部Ｆ３に割り当てられたアドレス空間をエラー処理用領域Ｍ３とする。各領域Ｍ１〜Ｍ３は、対応する機能ブロックの演算結果や、演算処理に用いるデータ等を保持する。
【００２３】
ＣＰＵ１１Ｄは、ＲＯＭ１１Ｂに格納されたプログラムを実行する中央演算装置である。ＣＰＵ１１Ｄによるメモリ１１Ｃへのデータの読み出し及び書き込みは、後述するメモリ異常検出部１１Ｅを介して実行される。ＣＰＵ１１Ｄは、ＲＯＭ１１Ｂに格納されたプログラムを実行することによって発現する機能ブロックとして、制御演算部Ｆ１と、動作監視部Ｆ２と、エラー処理部Ｆ３と、を備える。
【００２４】
制御演算部Ｆ１は、ＣＰＵ１１Ｄが制御演算プログラムＰｍ１を実行することで発現する機能ブロックである。制御演算部Ｆ１は、アクセルセンサ３によって検出されるアクセル操作量から、スロットル弁２１の目標開度（換言すれば目標位置）を演算する。そして、スロットルセンサ４によって検出される実際のスロットル開度がその目標開度とするためのスロットルアクチュエータ６の制御量を算出し、当該制御量に応じた制御信号を出力回路１１Ｊに生成させる。出力回路１１Ｊによって生成された制御信号は、駆動回路１２へと出力される。
【００２５】
動作監視部Ｆ２は、ＣＰＵ１１Ｄが動作監視プログラムＰｍ２を実行することで発現する機能ブロックである。動作監視部Ｆ２は、制御演算部Ｆ１が正常に動作しているか否かを判定（換言すれば監視）する。制御演算部Ｆ１が正常に動作しているか否かの判定方法は周知の方法を援用することができる。
【００２６】
例えば、動作監視部Ｆ２は、アクセルセンサ３によって検出されているアクセル操作量から、エンジンの許容トルクを算出するとともに、スロットルセンサ４によって検出されているスロットル開度から、現在エンジンが発生しているトルクの推定値である推定トルクを算出する。そして、許容トルクと推定トルクとを比較した結果、推定トルクが許容トルクを超過している場合に、制御演算部Ｆ１が異常動作していると判定する。なお、許容トルクは、例えば、アクセル操作量から考えられるエンジンの出力トルクの最大値とすればよい。
【００２７】
また、動作監視部Ｆ２は、複数のコアで同じ演算処理を実施させた結果、それらの演算結果が一致しなかった場合に、制御演算部Ｆ１が異常動作していると判定してもよい。その他、動作監視部Ｆ２は公知となっている種々の方法によって、制御演算部Ｆ１が正常に動作しているか否かを判定する。
【００２８】
動作監視部Ｆ２は、制御演算部Ｆ１が正常に動作していないと判定した場合には、その旨をエラー処理部Ｆ３に通知する。なお、制御演算部Ｆ１は正常に動作していないと判定することは、制御演算部Ｆ１の異常動作を検出することに相当する。また、制御演算部Ｆ１が正常に動作しているか否かを判定することは、ＥＣＵ１と電子スロットル２を含むシステム全体の動作が、予め定義された安全状態に該当するか否かを判定することに相当する。
【００２９】
エラー処理部Ｆ３は、ＣＰＵ１１Ｄがエラー処理プログラムＰｍ３を実行することで発現する機能ブロックである。エラー処理部Ｆ３は、動作監視部Ｆ２や、後述するメモリ異常検出部１１Ｅによって所定の異常事象が検出された場合に、その検出された異常事象に応じた処理を実行する機能ブロックである。
【００３０】
例えばエラー処理部Ｆ３は、動作監視部Ｆ２によって制御演算部Ｆ１の異常動作が検出された場合、リセット処理やフェールセーフ処理を実施する。また、後述するメモリ異常検出部１１Ｅによってメモリ１１Ｃの異常が検出された場合には、異常通知処理などを実行する。
【００３１】
リセット処理は、マイコン１１を所定の初期状態に戻す（つまりリセットする）処理である。フェールセーフ処理は、駆動回路１２に対して遮断信号を出力し、スロットルモータ２２の出力を停止させる処理である。遮断信号は、制御演算部Ｆ１による制御信号を無効化するための信号であって、出力回路１１Ｊによって生成される。つまり、出力回路１１Ｊは、エラー処理部Ｆ３からの指示に基づいて駆動回路１２に遮断信号を出力する。
【００３２】
なお、本実施形態では一例として、駆動回路１２に遮断信号を出力するものとするが、遮断信号の出力先は、電子スロットル２であってもよい。何れにしても遮断信号の出力に伴って、スロットルモータ２２の出力が停止するように構成されていればよい。
【００３３】
異常通知処理は、警告灯５を点灯させる処理である。エラー処理部Ｆ３は、警告灯５を点灯させる信号（以降、点灯信号）を、出力回路１１Ｊから警告灯５へと出力させる。このエラー処理部Ｆ３の作動の詳細については別途後述する。
【００３４】
メモリ異常検出部１１Ｅは、ＣＰＵ１１Ｄから要求されたアドレスのデータを読みだしてＣＰＵ１１Ｄに提供するとともに、ＣＰＵ１１Ｄから要求されたアドレスへのデータの書き込みを実行する。つまり、ＣＰＵ１１Ｄによるメモリ１１Ｃへのアクセスはメモリ異常検出部１１Ｅを介して実行される。
【００３５】
また、メモリ異常検出部１１Ｅは、誤り訂正符号（ＥＣＣ：Error Correcting Code）を用いて、メモリ１１Ｃに保存されたデータの誤りを訂正及び検出する機能（いわゆるＥＣＣ機能）を提供する。具体的には、メモリ異常検出部１１Ｅは、データをメモリ１１Ｃに書き込む場合、書き込み対象とするデータをメモリ１１Ｃの所定のアドレスに書き込むとともに、その書き込んだデータに対応するＥＣＣを算出してメモリ１１Ｃ或いは図示しない他の記憶媒体に書き込む。
【００３６】
ＥＣＣとしては、例えばハミング符号などの、周知の誤り訂正符号を採用することができる。ＥＣＣによれば２ビットの誤りまでは検出可能であり、さらに、１ビットの誤りは正しいビットへ修正可能となる。便宜上、データ書き込み時に生成したＥＣＣを書込ＥＣＣと称する。
【００３７】
また、メモリ異常検出部１１Ｅは、データをメモリ１１Ｃから読み出す時には、読み出し対象のデータを読み出し、その読み出したデータに対応するＥＣＣ（以降、読出ＥＣＣ）を算出する。そして、メモリ異常検出部１１Ｅは、その読み出したデータに対応する書込ＥＣＣを読み出して、読出ＥＣＣと比較し、データの誤りが発生したか否かを判定する。メモリ異常検出部１１Ｅは、１ビットの誤りを検出した場合には、当該誤りをＥＣＣに基づいて訂正する処理（以降、誤り訂正処理）を実施して、その誤り訂正済みのデータをＣＰＵ１１Ｄに提供する。
【００３８】
また、メモリ異常検出部１１Ｅは、読み出したデータに２ビット誤りを検出した場合には、その旨をエラー制御部１１Ｆに通知する。エラー制御部１１Ｆは、メモリ異常検出部１１Ｅが検出したエラー内容に対応する割込み処理をＣＰＵ１１Ｄに実行させる機能ブロックである。エラー制御部１１Ｆは、メモリ異常検出部１１Ｅが２ビット誤りを検出した場合、所定の割込み処理をエラー処理部Ｆ３に実行させる。２ビット誤りが検出された場合のエラー処理部Ｆ３の作動については別途後述する。
【００３９】
以降では、メモリ異常検出部１１Ｅが実施する、ＥＣＣによるデータの誤りを検出する処理のことをデータ診断処理と称する。メモリ異常検出部１１Ｅは、ＩＣなどのハードウェア部材を用いて実現されれば良い。なお、メモリ異常検出部１１Ｅはソフトウェアとして実現されてもよい。
【００４０】
メモリ１１Ｃが備えるアドレス空間のうち、メモリ異常検出部１１Ｅによるデータ診断処理の対象とするアドレス範囲（以降、診断範囲）は、診断範囲設定レジスタ１１Ｈに登録されている。つまり、メモリ異常検出部１１Ｅは、ＣＰＵ１１Ｄからの要求に基づいて読み出そうとしているアドレスが、診断範囲設定レジスタ１１Ｈに登録されている診断範囲に属する場合に、上述したデータ診断処理を実施する。
【００４１】
診断範囲設定レジスタ１１Ｈに設定される診断範囲は、エラー処理部Ｆ３によって動的に変更される。本実施形態におけるマイコン１１は、動作モードとして、メモリ１１Ｃが備えるアドレス空間の全領域（以降、全メモリ領域）を診断範囲とするデフォルトモードと、動作監視用領域Ｍ２のみを診断範囲とするフォールバックモードの２種類の動作モードを備えている。
【００４２】
デフォルトモードとは、診断範囲設定レジスタ１１Ｈに、メモリ１１Ｃが備えるアドレス空間の全領域が診断範囲として設定されている状態に相当する。前述のフォールバックモードとは、診断範囲設定レジスタ１１Ｈに、動作監視用領域Ｍ２のみが診断範囲として設定されている状態に相当する。動作モードの遷移条件については別途後述する。ただし、マイコン１１の起動直後においてはデフォルトモードに設定されているものとする。
【００４３】
割込機能設定レジスタ１１Ｇは、エラー制御部１１Ｆを動作させるか否かの設定が登録されている。換言すれば、エラー制御部１１Ｆによる割込み要求を有効とするか、無効とするかの設定が登録されている。エラー制御部１１Ｆによる割込み要求を有効／無効は、フラグ等によって表現されればよい。エラー制御部１１Ｆによる割込み要求が無効化されている場合、当然、エラー制御部１１Ｆによる割り込み要求は破棄される。初期状態において割込機能設定レジスタ１１Ｇには、エラー制御部１１Ｆによる割込み要求を有効とする設定が登録されている。診断範囲設定レジスタ１１Ｈは、前述のとおり、診断範囲とするアドレス範囲を記憶するレジスタである。
【００４４】
出力回路１１Ｊは、種々の信号を生成してマイコン１１の外部に出力する回路モジュールである。例えば出力回路１１Ｊは、エラー処理部Ｆ３からの指示に基づいて制御信号を生成して駆動回路１２に出力する。また、出力回路１１Ｊは、エラー処理部Ｆ３からの指示に基づいて遮断信号を生成して駆動回路１２に出力し、スロットルモータ２２への通電を遮断させる。さらに、出力回路１１Ｊは、エラー処理部Ｆ３からの指示に基づいて点灯信号を生成して警告灯５へ出力し、警告灯５を点灯させる。
【００４５】
通信ＩＦ１１Ｋは、マイコン１１と監視ＩＣ１３とが相互通信するためのインターフェースとして機能するモジュールである。バス１１Ｌは、マイコン１１内部で各部がデータをやり取りするための伝送路である。
【００４６】
駆動回路１２は、マイコン１１から入力される制御信号に応じた電流（以降、駆動電流）を生成する回路である。駆動回路１２が生成した駆動電流は、スロットルモータ２２に入力される。スロットルモータ２２は、駆動電流に応じたトルクを出力する。また、駆動回路１２は、マイコン１１や後述する監視ＩＣ１３から遮断信号が入力された場合には、スロットルモータ２２への駆動電流の出力を停止するように（つまり通電を遮断するように）構成されている。通電の遮断はリレー等を用いて実現されれば良い。
【００４７】
監視ＩＣ１３は、マイコン１１が正常に動作しているか否かを監視するＩＣである。マイコン１１が正常に動作しているか否かは、ウォッチドッグタイマ方式や宿題回答方式などといった、周知の方法を用いて判定することができる。ウォッチドッグタイマ方式とは、ウォッチドッグタイマがマイコン１１から入力されるウォッチドッグパルスによってクリアされずに満了した場合に、マイコン１１が異常動作していると判定する方式である。
【００４８】
また、宿題回答方式とは、外部監視装置３０が予め定められた監視用の信号をマイコン１１に送るとともに、マイコン１１から返送されてきた回答が正解であるか否かによってマイコン１１が正常であるか否かを判定する方式である。宿題回答方式においてマイコン１１は、外部監視装置３０から入力される監視用信号に基づいて所定の演算を行い、その演算結果を外部監視装置３０に返送する。外部監視装置３０は、マイコン１１から受け取った演算結果が正常値と異なる場合、あるいは所定の制限時間内でマイコン１１から演算結果が回答されない場合に、マイコン１１は正常に動作していない（つまり異常動作している）と判定する。そして、マイコン１１の異常動作を検知した場合には、遮断信号を駆動回路１２に出力する。
【００４９】
＜データ読出関連処理について＞
次に、メモリ１１Ｃに保存されているデータに対するＣＰＵ１１Ｄの読み出し要求をトリガとしてマイコン１１が実施する一連の処理（以降、データ読出関連処理）について、図３に示すフローチャートを用いて説明する。図３に示すフローチャートは、前述のとおり、ＣＰＵ１１Ｄによる読み出し要求が発生した場合に開始されればよい。また、このフローチャートは、各アドレスを対象として、所定の時間間隔で定期的に実行されても良い。
【００５０】
なお、本フロー開始時における診断範囲は、全メモリ領域に設定されているものとする。つまり、本フロー開始時におけるマイコン１１の動作モードは、デフォルトモードである。
【００５１】
まず、ステップＳ１ではメモリ異常検出部１１Ｅが、ＣＰＵ１１Ｄによって指定されているアドレスのデータと、そのデータに対応する書込ＥＣＣを読みだしてステップＳ２に移る。ステップＳ２ではメモリ異常検出部１１Ｅが、読み出したデータを元にＥＣＣ（すなわち読出ＥＣＣ）を算出してステップＳ３に移る。
【００５２】
ステップＳ３ではステップＳ１で読みだした書込ＥＣＣとステップＳ２で算出した読出ＥＣＣとを比較することによって、読み出したデータに誤りが生じているか否かを判定する。誤りが生じている場合にはステップＳ３が肯定判定されてステップＳ４に移る。一方、誤りが生じていない場合には、ステップＳ３が否定判定されて、読み出したデータをＣＰＵ１１Ｄに提供して本フローを終了する。なお、読み出したデータにビット誤りが生じていない場合とは、換言すれば書込ＥＣＣと読出ＥＣＣとが一致した場合である。
【００５３】
ステップＳ４ではメモリ異常検出部１１Ｅが、読み出したデータに生じているビット誤りの内容が１ビット誤りであるか否かを判定する。読み出したデータに生じているビット誤りの内容が１ビット誤りである場合にはステップＳ４が肯定判定されてステップＳ５に移る。
【００５４】
一方、読み出したデータに生じているビット誤りの内容が１ビット誤りではない場合にはステップＳ４が否定判定されてステップＳ６に移る。なお、読み出したデータに生じているビット誤りの内容が１ビット誤りではない場合とは、２ビット誤りが生じていることに相当する。したがって、読み出したデータに生じているビット誤りの内容が１ビット誤りではない場合にはメモリ異常検出部１１Ｅはエラー制御部１１Ｆに対して２ビット誤りが生じていることを通知する。
【００５５】
ステップＳ５ではメモリ異常検出部１１Ｅが誤り訂正処理を実行し、誤り訂正済みのデータをＣＰＵ１１Ｄに提供して本フローを終了する。ステップＳ６ではメモリ異常検出部１１Ｅが、メモリ異常が発生している箇所（以降、異常発生箇所）が、動作監視用領域Ｍ２であるか否かを判定する。なお、異常発生箇所は、ステップＳ１で読み出したデータが保存されているアドレス（つまり保存場所）である。したがって、ステップＳ６での判定処理は、本フローで対象としているアドレスが、動作監視用領域Ｍ２に属するアドレスであるか否かを判定する処理に相当する。
【００５６】
異常発生箇所が動作監視用領域Ｍ２である場合にはステップＳ６が肯定判定されてステップＳ７に移る。一方、異常発生箇所が動作監視用領域Ｍ２ではない場合にはステップＳ６が否定判定されてステップＳ９に移る。
【００５７】
ステップＳ７ではエラー処理部Ｆ３が出力回路１１Ｊと協働して、遮断信号を駆動回路１２に出力する。すなわちフェールセーフ処理を実行してステップＳ８に移る。ステップＳ８では割込機能設定レジスタ１１Ｇの登録内容を、エラー制御部１１Ｆによる割込み要求を無効とする内容に書き換えて本フローを終了する。つまり、ステップＳ８ではエラー制御部１１Ｆを無効化する。割込機能設定レジスタ１１Ｇの登録内容の変更は、例えばＯＳやエラー処理部Ｆ３によって実施されれば良い。
【００５８】
ステップＳ９ではエラー処理部Ｆ３が、診断範囲を全メモリ領域から動作監視用領域Ｍ２へと縮退させる。このステップＳ９が請求項に記載の診断範囲縮退処理に相当する。このステップＳ９での処理が完了するとステップＳ１０に移る。ステップＳ１０ではエラー処理部Ｆ３が、出力回路１１Ｊと協働して、警告灯５に対して点灯信号を出力する。つまり、異常通知処理を実施する。ステップＳ１０での処理の実行をもって本フローを終了する。なお、いったん診断範囲を縮退させた後は、マイコン１１が初期化されるまでその状態を維持するものとする。
【００５９】
＜実施形態のまとめ＞
以上の構成において、マイコン１１が起動してから２ビット誤りが検出されるまでは、診断範囲は全メモリ領域に設定されているため、メモリ異常検出部１１Ｅは、メモリ１１Ｃの全領域を診断対象としてデータ診断処理を実行する。例えば制御演算用領域Ｍ１に格納されているデータを読み出す場合にもメモリ異常検出部１１Ｅは、データ診断処理を実施する。これによって、種々の領域に生じた１ビット誤りは正しいビット状態へと訂正されて、種々の演算に用いられる。
【００６０】
また、メモリ１１Ｃの何れかのアドレスにおいて２ビット誤りが検出された場合には、当該ビット誤りが検出されたアドレスである異常発生箇所が、動作監視用領域Ｍ２に属するか否かを判定する。ここで、異常発生箇所が動作監視用領域Ｍ２以外の場合には、診断範囲を全メモリ領域から動作監視用領域Ｍ２へと縮退させる。すなわち、動作監視用領域Ｍ２以外のメモリ領域（以降、除外領域）を診断範囲から外し、除外領域に保存されているデータが正常であるか否かの診断を行わなくする。
【００６１】
このような構成によれば、除外領域において、例えば隣接するメモリビット線間のショート等の半恒常的な異常が発生した場合であっても、その異常に起因してメモリ異常検出割込みを繰り返されることはない。その結果、単一のメモリ異常に由来してアクチュエータの制御ができなくなってしまう可能性を低減できる。
【００６２】
一方、異常発生箇所が動作監視用領域Ｍ２である場合には、フェールセーフ処理を実施し、スロットルモータ２２への通電を遮断する。仮に異常発生箇所が動作監視用領域Ｍ２である場合には、制御演算部Ｆ１が正常に駆動しているか否か、換言すればＥＣＵ１を含むシステムの作動が予め定義された安全状態に該当するか否かを正常に判定できなくなっている可能性がある。
【００６３】
そのような懸念に対して、本実施形態のように異常発生箇所が動作監視用領域Ｍ２である場合には、スロットルモータ２２への通電を遮断する態様を採用することで、安全性を担保することができる。
【００６４】
以上、本発明の実施形態を説明したが、本発明は上述の実施形態に限定されるものではなく、以降で述べる種々の変形例も本発明の技術的範囲に含まれ、さらに、下記以外にも要旨を逸脱しない範囲内で種々変更して実施することができる。もちろん、以下に示す種々の変形例は互いに矛盾が生じない範囲において組み合わせて実施することができる。
【００６５】
なお、前述の実施形態で述べた部材と同一の機能を有する部材については、同一の符号を付し、その説明を省略する。また、構成の一部のみに言及している場合、他の部分については先に説明した実施形態の構成を適用することができる。
【００６６】
［変形例１］
上述した実施形態では、１ビット誤りについてはメモリの異常として取り扱わずに、２ビット誤りのみをメモリ異常として取り扱う態様を開示したがこれに限らない。１ビット誤りも、メモリ異常として取り扱ってもよい。すなわち、１ビット誤りを検出した場合にも、その異常発生箇所に応じてフェールセーフ処理を実行したり、診断範囲を縮退させたりしても良い。
【００６７】
［変形例２］
動作監視用領域Ｍ２にメモリエラーが生じた場合（Ｓ６  ＹＥＳ）にエラー処理部Ｆ３が実施する処理の内容は上述した態様に限らない。フェールセーフ処理と合わせて異常通知処理を実行してもよい。
【００６８】
［変形例３］
上述した実施形態では、異常発生箇所が動作監視用領域Ｍ２である場合に、フェールセーフ処理等を実施する態様を開示したが、これに限らない。異常発生箇所がエラー処理用領域Ｍ３である場合にも、フェールセーフ処理等を実施してもよい。つまり、エラー処理用領域Ｍ３を、前述の実施形態における動作監視用領域Ｍ２と同様に扱ってもよい。便宜上、前述の実施形態における動作監視用領域Ｍ２と同様に扱う領域を、保護対象領域と称する。
【００６９】
そのような構成では、異常発生箇所が動作監視用領域Ｍ２又はエラー処理用領域Ｍ３である場合に、ステップＳ６が肯定判定されてステップＳ７に移る。また、異常発生箇所が動作監視用領域Ｍ２及びエラー処理用領域Ｍ３の何れでもない場合に、ステップＳ６からステップＳ９に移って診断範囲を縮退させることになる。縮退後の診断範囲は、動作監視用領域Ｍ２及びエラー処理用領域Ｍ３を含む範囲とすればよい。
【００７０】
また、メモリ１１Ｃが備える記憶領域のうち、ＯＳに割り当てられた領域（以降、ＯＳ用領域とする）で異常が発生した場合にも、診断範囲を縮退させるのではなく、フェールセーフ処理等を実施する態様としてもよい。つまり、ＯＳ用領域を保護対象領域に含めてもよい。
【００７１】
さらには、制御演算用領域Ｍ１以外の全領域を保護対象領域としてもよい。何れの態様においても、異常発生箇所が制御演算用領域Ｍ１である場合には、当該領域を診断範囲から除外するように作動する。
【００７２】
［変形例４］
以上では、診断範囲を２パターンのどちらかに設定する態様を開示したが、これに限らない。診断範囲として設定可能なパターンは３パターン以上であってもよい。
【００７３】
また、機能ブロックに対応する領域単位で診断対象から除外していってもよい。さらには、異常発生箇所としてのアドレスのみを診断対象から除外していく態様としてもよい。ただし、異常発生箇所が、動作監視用領域Ｍ２などの保護対象領域として定義されている領域である場合には、診断範囲の縮退ではなく、フェールセーフ処理などを実行するものとする。
【００７４】
［変形例５］
上述した実施形態ではＥＣＣを用いてメモリ１１Ｃの異常を検出する態様を開示したが、これに限らない。その他の公知となっている方法によってメモリ１１Ｃの異常を検出してもよい。例えば、或るアドレスに格納されているパラメータの値が、そのパラメータが取りうる値の範囲を逸脱している場合に、メモリ１１Ｃに異常が生じていると判定してもよい。或るパラメータが取りうる値の範囲は、パラメータ毎に予め定義されていればよい。また、その定義ファイルはＲＯＭ１１Ｂに保存されていればよい。
【００７５】
［変形例６］
以上ではＥＣＵ１の制御対象を電子スロットル２が備えるスロットルモータ２２とする態様を開示したが、これに限らない。ＥＣＵ１の制御対象は、その他のアクチュエータであっても良い。
【符号の説明】
【００７６】
１  ＥＣＵ（電子制御装置）、２  電子スロットル、２１  スロットル弁、２２  スロットルモータ（アクチュエータ）、３  アクセルセンサ、４  スロットルセンサ、５  警告灯、１１  マイコン（演算装置）、１２  駆動回路、１３  監視ＩＣ、１１Ａ  入力回路、１１Ｂ  ＲＯＭ、１１Ｃ  メモリ、１１Ｄ  ＣＰＵ（演算ユニット）、１１Ｅ  メモリ異常検出部、１１Ｆ  エラー制御部、１１Ｇ  割込機能設定レジスタ、１１Ｈ  診断範囲設定レジスタ、１１Ｊ  出力回路、１１Ｋ  通信ＩＦ、１１Ｌ  バス、Ｆ１  制御演算部、Ｆ２  動作監視部、Ｆ３  エラー処理部、Ｍ１  制御演算用領域、Ｍ２  動作監視用領域、Ｍ３  エラー処理用領域
【図１】
2018010362.tif 000003
【図２】
2018010362.tif 000004
【図３】
2018010362.tif 000005