以下、添付された図面を参照し、本発明を実施するための実施形態について詳述する。
[第1実施形態]
図1は、本発明の第1実施形態に係る自動車用電子制御装置の一例を示す。
自動車用電子制御装置1は、コンピュータを内蔵し、車載バッテリ2からイグニッションスイッチ(図中、「IGNSW」と略記する。以下同様)3を介して電源供給を受けることで、車載機器を制御するものである。車載機器として、エンジン4を例に挙げて説明するが、変速装置、制動装置、操舵装置等、他の車両システムを制御対象としても本発明の自動車用電子制御装置を適用可能である。
自動車用電子制御装置1は、エンジン4を制御する制御手段としての制御用マイクロコンピュータ(以下、「メインマイコン」という)10と、メインマイコン10の機能状態を監視する監視手段としての監視用マイクロコンピュータ(以下、「サブマイコン」という)20と、車載バッテリ2からイグニッションスイッチ3を介して供給される電源電圧を制御用電圧に調整してメインマイコン10及びサブマイコン20に供給する電源回路30と、車載バッテリ2と電源回路30との間でイグニッションスイッチ3と並列に設けられたリレースイッチ(図中、「リレーSW」と略記する。以下同様)40と、を有している。
(メインマイコン)
メインマイコン10は、信号の入出力を行うインタフェースであるI/O(Input/Output)ポート11と、各種演算処理を行うCPU(Central Processing Unit)12と、揮発性メモリであるRAM(Random Access Memory)13と、サブマイコン20と通信回線CLを介して通信を行うためのインタフェースである通信I/F14と、電気的に書換え可能であって電源遮断時にも記憶された情報を保持する不揮発性メモリであるEEPROM(Electrically Erasable Programmable Read-Only Memory)15と、を内部バス16によって相互接続して備えている。
I/Oポート11は、例えば、クランク角、水温、吸気量等のエンジン4の運転状態に関する検出信号Seiや、イグニッションスイッチ3の出力電圧Vignの検出信号Sviを入力する一方、燃料噴射弁、点火プラグ等といったエンジン4に付随する各種アクチュエータへの制御信号Seoや、リレースイッチ40への制御信号Sroを出力する。なお、I/Oポート11又はI/Oポート11の前若しくは後において、検出信号Sei,SviはA/D(Analog/Digital)変換によってデジタル値に変換され、制御信号Seo,SroはD/A(Digital/Analog)変換によりアナログ値に変換されてもよい。
CPU12は、I/Oポート11を介して入力したエンジン4からの検出信号Seiに基づいて、例えば、燃料噴射量、燃料噴射時期、点火時期等、各種アクチュエータの制御量を演算し、この制御量に応じた制御信号SeoをI/Oポート11を介してエンジン4の各種アクチュエータへ出力して、エンジン制御処理を行う。
また、CPU12は、エンジン4の故障診断処理及び学習制御処理を行って、故障診断の結果である故障診断情報、及び学習制御の結果である学習データを、内部バス16を介してRAM13に一時的に記憶する。
メインマイコン10のCPU12において、エンジン制御処理と、エンジン制御処理において所定のタイミングで行われるエンジン4の故障診断処理及び学習制御処理とは、イグニッションスイッチ3のオン状態に対応して定常処理として行われる。
自動車用電子制御装置1には、イグニッションスイッチ3のオフ操作後においてもメインマイコン10及びサブマイコン20への電源供給を継続させ、かつ、オフ操作から所定時間が経過したときに電源供給を自己遮断するセルフシャットオフ機能(電源制御手段)が備えられている。
具体的には、メインマイコン10において、CPU12が、I/Oポート11を介して入力された、イグニッションスイッチ3の出力電圧Vignの検出信号Sviに基づいて、イグニッションスイッチ3のオフ操作を検知したときに、リレースイッチ40に対してこれをオンにする制御信号SroをI/Oポート11を介して出力することで、イグニッションスイッチ3を迂回して車載バッテリ2から電源回路30へ電源供給を行う。そして、CPU12は、イグニッションスイッチ3のオフ操作を検知してから内蔵のタイマ(図示省略)によってカウントされた時間が所定時間に達したと判定したときに、リレースイッチ40に対してこれをオフにする制御信号Sroを出力することで、電源回路30への電源供給、ひいては、メインマイコン10及びサブマイコン20への電源供給を自己遮断する。
CPU12は、定常処理の実行中における所定のタイミングでメインマイコン10の機能状態について異常であるか否かの自己診断処理を行って、自己診断処理の結果である自己診断情報を、通信I/F14及び通信回線CLを介してサブマイコン20へ送信するとともに、内部バス16を介してRAM13に一時的に記憶する。
自己診断処理において、CPU12は、メインマイコン10の機能状態が正常であるという自己診断を行った場合、イグニッションスイッチ3のオフ操作が検知されてからセルフシャットオフ機能によってリレースイッチ40がオフにされるまでのセルフシャットオフ期間に、RAM13に一時的に記憶された、エンジン4の故障診断情報及び学習データ、並びにメインマイコン10の自己診断情報を、EEPROM15にバックアップデータとして書き込ませる(正常時書き込み)。
一方、自己診断処理において、CPU12は、メインマイコン10の機能状態が異常であると診断した場合、サブマイコン20からの信号に従って、メインマイコン10を停止して初期化を行う。そして、メインマイコン10は、初期化後、サブマイコン20からの信号に従って強制的に起動し、定常処理を行わずに、エンジン4に付随する各種アクチュエータの動作を制限する異常時処理を行う。また、メインマイコン10は、強制的に作動している時間(強制作動時間)中に、RAM13に一時的に記憶される情報を、正常時書き込みと異なるタイミングでEEPROM15に書き込む異常時書き込み処理を行う。
EEPROM15は、定常処理、異常時処理、自己診断処理及び異常時書き込み処理を含む各種制御処理を行うための制御処理プログラムを予め格納し、CPU12が、EEPROM15からRAM13に制御処理プログラムを適宜読み出してこれを実行することで各種制御処理を行う。なお、制御処理プログラムは、EEPROM15とは別のROM(Read Only Memory)に格納されていてもよい。
(サブマイコン)
サブマイコン20は、メインマイコン10と同様に、CPU21、RAM22、ROM23及び通信I/F24を、内部バス25によって相互接続して備えている。
ROM23は、メインマイコン10の機能状態を監視するための監視プログラムを予め格納し、CPU21は、ROM23から内部バス25を介してRAM22に監視プログラムを読み出してこれを実行することで、通信I/F24を介して受信したメインマイコン10の自己診断情報に基づいて、メインマイコン10の機能状態を監視する。そして、CPU21は、メインマイコン10の機能状態に異常が発生したことを検知したときに、メインマイコン10を停止させて初期化を行わせた後、メインマイコン10にEEPROM15への異常時書き込み処理を行わせるべく、通信I/F24を介してメインマイコン10へ各種信号を送信する。
(サブマイコンにおける監視処理)
図2は、サブマイコン20のCPU21が、監視プログラムに従って、イグニッションスイッチ3のオン操作(図3の時刻t0参照)によりサブマイコン20が起動した(図3の時刻t1参照)ことを契機として実行を開始する監視処理のフローチャートである。
ステップS101(図中では「S101」と略記する。以下同様)では、メインマイコン10の自己診断処理による自己診断情報に基づいて、メインマイコン10に異常が発生しているか否かを検知する。メインマイコン10に異常が発生していると検知した場合には、ステップS102へ進む(Yes)。一方、メインマイコン10に異常が発生していないと検知した場合には、ステップS106へ進む(No)。
ステップS102では、メインマイコン10の停止を要求するための停止要求信号を送信する(図3の時刻t3〜t8参照)。この信号は、サブマイコン20に対する電源供給が遮断されるまで(図3の時刻t8参照)連続的に送信される。
ステップS103では、サブマイコン20は、停止要求信号を送信してから、メインマイコン10の初期化が終了したと判断できるまでの時間が経過したときに、メインマイコン10を強制的に起動させるための強制起動指令信号をメインマイコン10へ送信する(図3の時刻t5参照)。
ステップS104では、強制起動指令信号の送信から経過した時間、すなわち強制作動時間が、設定時間Tに到達したか否かを判定する。
設定時間Tは、後述する図5のステップS305においてRAM13に記憶された機能状態フラグの情報をバックアップデータとしてEEPROM15に書き込むために必要な時間である。また、後述する図5のステップS305において、機能状態フラグの情報をEEPROM15へ書き込むことに加えて、定常処理のうちエンジン4の故障診断処理や学習制御処理を実行し、故障診断情報や学習データをRAM13に記憶させる場合や、あるいは、自己診断を行う場合には、設定時間Tは、各処理の実行時間及び情報・データの書き込み時間、あるいは自己診断に要する時間等に応じてより長く設定される。
ステップS104において、強制作動時間が設定時間Tに到達したと判定された場合にはステップS105へ進み(Yes)、一方、強制作動時間が設定時間Tに到達していない場合にはステップS104を繰り返す(No)。
ステップS105では、メインマイコン10を強制的に停止させるための強制停止指令信号を送信する(図3の時刻t6参照)。
ステップS106では、イグニッションスイッチ3のオフ操作が行われたか否かを判定する。イグニッションスイッチ3のオフ操作が行われたと判定した場合には、監視処理を終了し(Yes)、一方、イグニッションスイッチ3のオフ操作が行われていないと判定した場合には、ステップS101へ戻り、メインマイコン10に異常が発生しているか否かを検知する(No)。
(メインマイコンにおける定常処理及び異常時処理)
図4は、メインマイコン10のCPU12が、制御処理プログラムに従い、メインマイコン10の起動(図3の時刻t1又はt5)を契機として実行を開始する定常処理及び異常時処理のフローチャートである。
ステップS201では、通信I/F14を介して、サブマイコン20から送信される停止要求信号を受信したか否かを判定する。停止要求信号を受信したか否かを判定することで、後述するように、メインマイコン10が機能状態を異常とする自己診断を行って初期化され、かつ、初期化後にサブマイコン20によって強制的に起動したか否かを判定することができる。停止要求信号を受信していないと判定した場合には、メインマイコン10の機能状態が正常であるので、自己診断処理を行うべくステップS202へ進み(No)、一方、停止要求信号を受信したと判定した場合には、メインマイコン10の機能状態が異常である可能性があるので、ステップS204へ進む(Yes)。
ステップS202では、前述の定常処理を行う。すなわち、CPU12は、エンジン制御処理を行い、エンジン制御処理における所定のタイミングでエンジン4の故障診断処理及び学習制御処理を行う。エンジン4の故障診断処理及び学習制御処理により得られた故障診断情報及び学習データはRAM13に一時的に記憶される。
ステップS203では、イグニッションスイッチ3のオフ操作(図3の時刻t7参照)が行われたか否かを判定する。具体的には、I/Oポート11を介して入力された、イグニッションスイッチ3の出力電圧Vignの検出信号に基づいて、出力電圧Vignと閾値電圧との大小比較を行うことによって、イグニッションスイッチ3のオフ操作が行われたか否かを判定する。
イグニッションスイッチ3のオフ操作が行われたと判定した場合には、定常処理を終了する(Yes)。一方、イグニッションスイッチ3のオフ操作が行われていないと判定した場合には、ステップS202へ戻って定常処理を続行する(No)。
ステップS204では、定常処理を行わずに、エンジン4に付随する各種アクチュエータの動作を制限する異常時処理を行う(図3の時刻t5〜t6参照)。エンジン4に付随する各種アクチュエータの動作を制限するのは、メインマイコン10が自己診断処理によって異常の発生を検知しているため、異常の可能性があるメインマイコン10によって定常処理を実行すると、各種アクチュエータが不安定な動作をして車両運転に影響を及ぼす可能性があるからである。
各種アクチュエータの動作を制限する態様としては、例えば定常処理の強制終了等によって、各種アクチュエータの動作を停止させることができる。
各種アクチュエータの動作を制限する別の態様としては、例えばメインマイコン10の正常時における定常処理とは異なる演算方法で演算された制御量あるいは所定値に制限された制御量に応じた制御信号の出力等によって、各種アクチュエータの動作を抑制することができる。
例えば、燃料噴射弁(電磁弁)の制御量をメインマイコン10の正常時と異なる演算方法で演算してあるいは所定値に制限して、この制御量に応じた制御信号を出力することで、燃料噴射弁から噴射される燃料噴射量を抑制してもよい。また、例えば、エンジン4が圧縮可変機構(VCR:Variable Compression Ratio system)を備えている場合には、ピストンの上死点位置を変更する電動アクチュエータを初期位置に固定したり、あるいは、電動アクチュエータの変化量を意図的に制限したりしてもよい。さらに、例えば、メインマイコン10が電動アクチュエータを制御するアクチュエータ用コントローラ(EDU)と通信を行っている場合に、通信を停止したり、通信異常と判断される値を送信したりしてEDU側に異常となったことを認識させてもよい。
ステップS205において、通信I/F14を介して、サブマイコン20から送信される強制停止指令信号を受信した場合(図3の時刻t6参照)には異常時処理を終了する(Yes)。一方、強制停止指令信号を受信していない場合には、異常時処理を続行すべくステップS204へ戻る(No)。
(メインマイコンの自己診断処理)
図5は、メインマイコン10のCPU12が、制御処理プログラムに従い、メインマイコン10の起動(図3の時刻t1又はt5)を契機として実行を開始する自己診断処理のフローチャートである。
ステップS301では、通信I/F14を介して、サブマイコン20から送信される後述の停止要求信号を受信したか否かを判定する。停止要求信号を受信したか否かを判定することで、前述の図4のステップS201と同様に、メインマイコン10が異常と自己診断して初期化された後、サブマイコン20によって強制的に起動したか否かを判定することができる。停止要求信号を受信していないと判定された場合には、メインマイコン10は強制起動していないので、自己診断処理を行うべくステップS302へ進む(No)。一方、停止要求信号を受信したと判定された場合には、メインマイコン10がすでに異常であるという自己診断を行っているので、自己診断処理を行わずに終了する(Yes)。
ステップS302では、所定のタイミングでメインマイコン10の機能状態について自己診断処理を行う。自己診断処理によりメインマイコン10の機能状態に異常がないと診断した場合にはステップS303へ進み(No)、メインマイコン10の機能状態に異常があると診断した場合にはステップS306へ進む(Yes)。
ステップS303では、メインマイコン10の機能状態が正常である旨の自己診断情報をサブマイコン20へ送信するとともにRAM13に書き込む。RAM13に書き込まれた自己診断情報のうち、メインマイコン10の機能状態を示す機能状態フラグは、正常を示す初期値(例えば0)に保持される。
ステップS304では、前述の図4のステップS203と同様に、イグニッションスイッチ3のオフ操作が行われたか否かを判定する。イグニッションスイッチ3のオフ操作が行われたと判定した場合には、セルフシャットオフ期間(図3の時刻t7〜t8の期間)における正常時書き込みを行うべくステップS305へ進む(Yes)。一方、イグニッションスイッチ3のオフ操作が行われていないと判定した場合には、ステップS302へ戻り、所定のタイミングで再び自己診断処理を行う(No)。
ステップS305では、セルフシャットオフ期間における正常時書き込みとして、RAM13に一時的に記憶された、エンジン4の故障診断情報及び学習データ、並びにメインマイコン10の自己診断情報を、EEPROM15にバックアップデータとして書き込んで、自己診断処理を終了する。
ステップS306では、メインマイコン10の機能状態が異常である旨の自己診断情報をサブマイコン20へ送信するとともにRAM13に書き込む(図3の時刻t2〜t3参照)。RAM13に書き込まれた自己診断情報のうち機能状態フラグは、異常を示す設定値(例えば1)に書き換えられる。
ステップS307では、図4のステップS201と同様に、通信I/F14を介して、サブマイコン20から送信される後述の停止要求信号を受信しているか否かを判定する。停止要求信号を受信していると判定された場合にはステップS308へ進み(Yes)、一方、停止要求信号を受信していないと判定された場合には、ステップS307を繰り返す(No)。
ステップS308では、メインマイコン10は、正常状態へ復帰すべく、サブマイコン20からの停止要求信号に従って停止して初期化を行う(図3の時刻t4参照)。ただし、本ステップの実行によって停止したメインマイコン10は、サブマイコン20から後述の強制起動指令信号を受信できるように通信可能な状態となっている。
ステップS308の初期化によって、前述の図4のステップS202における定常処理によってRAM13に書き込まれたエンジン4の故障診断情報及び学習データ、並びに、ステップS303及びステップS306においてRAM13に書き込まれた自己診断情報は消去されてしまう。特に、ステップS306において異常を示す設定値に一旦書き換えられた機能状態フラグは、ステップS308において再び初期値(例えば0)に書き換えられてしまうため、メインマイコン10は、機能状態フラグを、異常を示す設定値のままRAM13に保持しておくことができず、セルフシャットオフ期間おいて、メインマイコン10に異常が発生したという情報をバックアップデータとしてEEPROM15に保持しておくことができない。このため、以下の異常時書き込み処理を実行することによって、少なくともメインマイコン10に異常が発生したという情報をEEPROM15へバックアップデータとして書き込めるようにしている。
(メインマイコンの異常時書き込み処理)
図6は、メインマイコン10のCPU12が、メインマイコン10がサブマイコン20から前述の強制起動指令信号を受信した(図3の時刻t5参照)ことを契機として、制御処理プログラムに従って実行を開始する異常時書き込み処理のフローチャートである。
ステップS401では、メインマイコン10は、強制起動指令信号に従って起動する(図3の時刻t5参照)。なお、ステップS401によるメインマイコン10の起動は、サブマイコン20による強制起動であるので、図4の処理の実行が開始されると、定常処理(ステップS202)ではなく、異常時処理(ステップS204)が行われる。これにより、後述のようにEEPROM15への書き込みが行われる際に、エンジン4に付随する各種アクチュエータが不安定な動作をして車両運転に影響を及ぼす可能性が低減される。
ステップS402では、メインマイコン10の起動に伴って、メインマイコン10の機能状態を示す機能状態フラグを、初期値から自動的に異常を示す設定値に書き換える(図3の時刻t5参照)。
メインマイコン10のCPU12は、ステップS401において、サブマイコン20から送信された強制起動指令信号を受信したうえでメインマイコン10を起動させているので、イグニッションスイッチ3のオン操作によって正常に起動したものでないことを認識でき、機能状態フラグを、初期値から自動的に異常を示す設定値に書き換えることができる。
ステップS403では、ステップS402において自動的に異常を示す設定値に書き換えられた機能状態フラグの情報をバックアップデータとしてEEPROM15に書き込む(図3の時刻t5〜t6参照)。これにより、メインマイコン10は、少なくともメインマイコン10に異常が発生したという情報を異常履歴として保持しておくことが可能となる。
ステップS404において、サブマイコン20から送信される後述の強制停止指令信号を受信した場合には、ステップS405へ進む(Yes)。一方、強制停止指令信号を受信していない場合には、ステップS403へ戻る(No)。
ステップS405では、メインマイコン10は強制停止指令信号に従って停止し、異常時書き込み処理を終了する(図3の時刻t6参照)。メインマイコン10の停止とともに、メインマイコン10のRAM13に格納された機能状態フラグの設定値は再び初期化される。
なお、ステップ403において、RAM13には、ステップS402によって異常を示す設定値に自動的に書き換えられた機能状態フラグの情報が記憶され、図5のステップS308の初期化によって消去されたエンジン4の故障診断情報や学習データは記憶されていない。しかし、ステップS403において、メインマイコン10の強制作動時間中に、定常処理のうちエンジン4の故障診断処理や学習制御処理を実行することで、故障診断情報や学習データをRAM13に記憶させてもよい。この場合、RAM13からEEPROM15には、メインマイコン10に異常が発生したという情報だけでなく、故障診断情報や学習データを書き込むことができる。
また、ステップS403において、メインマイコン10の強制作動時間中に、少なくともメインマイコン10に異常が発生したという情報をEEPROM15に書き込んだ後、メインマイコン10の自己診断処理を再度行うことができる。
メインマイコン10は、自己診断処理によりメインマイコン10の機能状態が再度異常と診断された場合、機能状態フラグの情報を含む自己診断情報をRAM13に一時的に記憶させた後、バックアップデータとしてEEPROM15へ書き込むことで、メインマイコン10の異常の有無だけでなく、異常態様に関する情報についても異常履歴として保持しておくことができる。
一方、メインマイコン10は、自己診断処理によりメインマイコン10の機能状態が正常と診断された場合、異常書き込み処理を終了して、図5の自己診断処理においてステップS303から実行を再開するとともに、図4におけるステップS204の異常時処理を終了して、ステップS202の定常処理を実行することができる。サブマイコン20は、メインマイコン10から正常である旨の自己診断情報を受信することで、停止要求信号の送信を停止する。
(イグニッションスイッチの再オン操作時における処理)
図3の時刻t7でイグニッションスイッチ3がオフ操作された後、時刻t9でイグニッションスイッチ3が再度オン操作されると、時刻t10において、メインマイコン10及びサブマイコン20が起動する。ここで、メインマイコン10のEEPROM15には、前述の図6のステップS403によりメインマイコン10に異常が発生したことを示す自己診断情報が保持されているので、メインマイコン10のCPU12は、EEPROM15に保持された自己診断情報に基づいて、定常処理を行わずに、エンジン4に付随する各種アクチュエータの動作を停止又は制限する。
また、メインマイコン10のCPU12は、時刻t9でイグニッションスイッチ3が再度オン操作されて、時刻t10において起動すると、EEPROM15に保持されている自己診断情報を参照して、メインマイコン10の異常解析を行う。
このような自動車用電子制御装置1によれば、メインマイコン10の異常によりメインマイコン10を停止して初期化を行った場合でも、初期化後、メインマイコン10の異常を監視するサブマイコン20がメインマイコン10を強制的に起動するとともに、RAM13に記憶された機能状態フラグを、自動的に異常を示す設定値に書き換えている。これにより、少なくともメインマイコン10に異常が発生したという情報をEEPROM15へ書き込むことができる。したがって、自動車用電子制御装置1は、少なくともメインマイコン10に異常が発生したという情報を異常履歴としてEEPROM15に保持しておくことができるので、メインマイコン10の異常解析精度を向上させることが可能となる。
また、メインマイコン10の強制作動時間中に、定常処理のうちエンジン4の故障診断処理や学習制御処理を実行する場合や、あるいは、自己診断を行う場合には、メインマイコン10は、故障診断情報及び学習データや、メインマイコン10の異常態様に関する情報についてもEEPROM15に履歴として保持しておくことができる。
さらに、初期化後、サブマイコン20がメインマイコン10を強制的に起動させる際に、メインマイコン10の定常処理による各種アクチュエータの動作を制限するので、強制作動時間中にEEPROM15への書き込みが行われても、車両運転に影響を及ぼす可能性を低減することができる。
なお、前述の実施形態において、サブマイコン20を、メインマイコン10の機能状態を監視するための特定用途向け集積回路(ASIC:Application Specific Integrated Circuit)に置き換えても本発明の適用は可能である。
[第2実施形態]
図7は、本発明の第2実施形態に係る自動車用電子制御装置の一例を示す。なお、第1実施形態と共通の構成については同一の符号を付すことで説明を省略又は簡略化する。
第1実施形態の自動車用電子制御装置1は、メインマイコン10の機能状態を監視するサブマイコン20を備えていたが、これに代えて、第2実施形態の自動車用電子制御装置1Aでは、サブマイコン20を省略した1つのマイクロコンピュータ10Aを備えており、このμコンピュータが、複数のコア、例えば第1コア12a及び第2コア12bを備えたマルチコアである点で異なる。
第1コア12aは、メインマイコン10と同様に、イグニッションスイッチ3のオン操作によりマイクロコンピュータ10Aに電源が供給されたことを契機として、定常処理、自己診断処理及び書き込み処理を行う(図2〜図5参照)。第2コア12bは、サブマイコン20と同様に、イグニッションスイッチ3のオン操作によりマイクロコンピュータ10Aに電源が供給されたことを契機として、第1コア12aの機能状態を監視する監視処理を開始する(図5参照)。
すなわち、第1コア12aは機能状態について自己診断を行い、異常と診断した場合には第2コアに内部バス16を介して送信し、第2コア12bは第1コア12aを停止させて初期化する。初期化後、第2コア12bは第1コア12aを強制的に起動させて、RAM13に記憶された機能状態フラグを、自動的に異常を示す設定値に書き換えさせる。これにより、少なくとも第1コア12aに異常が発生したという情報をEEPROM15へ書き込むことができる。
このような自動車用電子制御装置1Aによれば、第1コア10aの異常により第1コア10aを停止して初期化を行った場合でも、少なくとも第1コア10aに異常が発生したという情報をEEPROM15へ書き込むことができる。したがって、自動車用電子制御装置1Aは、少なくとも第1コア10aに異常が発生したという情報を異常履歴としてEEPROM15に保持しておくことができるので、メインマイコン10の異常解析精度を向上させることが可能となる。
また、第1実施形態と同様に、第1コア10aの強制作動時間中に、定常処理のうちエンジン4の故障診断処理や学習制御処理を実行する場合や、あるいは、自己診断を行う場合には、マイクロコンピュータ10Aは、故障診断情報及び学習データや、マイクロコンピュータ10Aの異常態様に関する情報についてもEEPROM15に履歴として保持しておくことができる。
さらに、第1実施形態と同様に、初期化後、第2コア10bが第1コア10aを強制的に起動させる際に、第1コア10aの定常処理による各種アクチュエータの動作を制限するので、強制作動時間中にEEPROM15への書き込みが行われても、車両運転に影響を及ぼす可能性を低減することができる。
なお、第1実施形態及び第2実施形態において、電気的に書換え可能であって電源遮断時にも記憶された情報を保持する不揮発性メモリとして、EEPROM15を一例に説明したが、これに代えてフラッシュメモリを用いてもよく、また、これらEEPROM15またはフラッシュメモリは、メインマイコン10に内蔵又は外付けのいずれであってもよい。
第1実施形態及び第2実施形態において、CPU12,21は、プロセッサ、マイクロプロセッサ、MPU(Micro Processing Unit)を含む概念であり、メインマイコン10及びサブマイコン20は、MCU(Microcontroller)を含む概念である。
第1実施形態及び第2実施形態において、強制作動時間中にイグニッションスイッチのオフ操作を行った場合であっても、セルフシャットオフ期間であればメインマイコン10又はマイクロコンピュータ10Aには電源が供給されているので、セルフシャットオフ期間に継続してEEPROMへの書き込みを行ってもよい。
第1実施形態及び第2実施形態において、異常時書き込みを行った場合には、セルフシャットオフ期間においてEEPROM15への書き込みは行わなくてもよいので、セルフシャットオフ機能を無効にすることができる。
第1実施形態において、メインマイコン10の機能状態の診断は、前述のようなメインマイコン10の自己診断処理に限らず、例えば、メインマイコン10及びサブマイコン20において行われた所定の演算処理の結果が一致するか否か等、メインマイコン10とサブマイコン20とが協働して行うことができる。同様に、第2実施形態において、第1コア12aの機能状態の診断についても、第1コア12aと第2コア12bとが協働して行うことができる。
第1実施形態において、セルフシャットオフ機能は、メインマイコン10とは別のデバイス(例えばサブマイコン20)に、イグニッションスイッチ3の出力電圧Vignの検出信号Sviが入力されて、この別のデバイスが検出信号Sviに基づいてリレースイッチ40に対してこれをオン又はオフにする制御信号Sroを出力するように構成されても実現可能である。
第1実施形態では、サブマイコン20から強制起動指令信号を受信したメインマイコン10が図3の時刻t5において強制的に起動して、強制停止指令信号を受信して時刻t6において動作を停止するまでの強制作動時間中に、メインマイコン10に異常が発生したことを示す自己診断情報をEEPROM15に書き込んでいた。しかし、最初の強制作動時間が終了した後、メインマイコン10が自己診断処理を繰り返し行って、異常が発生したと診断する度にサブマイコン20が停止要求信号をメインマイコン10に向けて送信する場合には、強制作動時間毎に、メインマイコン10に異常が発生したことを示す自己診断情報をEEPROM15に書き込むことになる。
そこで、メインマイコン10は、自己診断処理により異常が発生したと診断して、その旨の自己診断情報をサブマイコン20へ送信すると、サブマイコン20は、その自己診断情報をRAM22に保存し、イグニッションスイッチ3のオフ操作後におけるセルフシャットオフ期間中に、サブマイコン20のRAM22に保存された自己診断情報をメインマイコン10へ送信することで、メインマイコン10が自己診断情報をEEPROM15に書き込んでもよい。これにより、他の車載機器に影響を与えることなく、安定的な書き込み動作が可能となる。