(57)【特許請求の範囲】
【請求項１】
複数のコア（２１，２２，２３）を有するマイクロコンピュータ（２０）を搭載し、車両の原動機（１００）の制御を行う電子制御装置（１０）であって、
前記マイクロコンピュータは、
前記原動機を通常走行モードで制御するための演算を行う第１コア（２１）と、
前記第１コアと同一の演算を行う第２コア（２２）と、
前記第１コアによる演算結果と前記第２コアによる演算結果とを比較する演算結果比較部（２４）と、
前記第１コア及び前記第２コアと異なる演算を行う第３コア（２３）と、を有し、
前記第１コアによる演算結果と前記第２コアによる演算結果とが不一致である場合、前記第１コアによる演算結果と前記第２コアによる演算結果とが不一致となった回数が所定値となるまでは、該演算結果が不一致となる毎に前記マイクロコンピュータのリセット処理を実行するとともに、前記リセット処理において前記第１コア、前記第２コア及び前記第３コアを起動させ、前記原動機を前記通常走行モードで制御して前記車両を走行させる一方で、
前記第１コアによる演算結果と前記第２コアによる演算結果とが不一致となった回数が前記所定値を超えた場合は、前記マイクロコンピュータのリセット処理を実行するとともに、前記リセット処理において前記第１コア及び前記第２コアを起動させることなく前記第３コアを起動させ、前記通常走行モードよりも前記原動機の出力を抑制する退避走行モードで前記原動機を制御するための演算を前記第３コアによって行うことを特徴とする電子制御装置。
【請求項２】
複数のコア（２１，２２，２３）を有するマイクロコンピュータ（２０）を搭載し、車両の原動機（１００）の制御を行う電子制御装置（１０）であって、
前記マイクロコンピュータは、
前記原動機を通常走行モードで制御するための演算を行う第１コア（２１）と、
前記第１コアと同一の演算を行う第２コア（２２）と、
前記第１コアによる演算結果と前記第２コアによる演算結果とを比較する演算結果比較部（２４）と、
前記第１コア及び前記第２コアと異なる演算を行う第３コア（２３）と、を有し、
前記第１コア、前記第２コア及び前記演算結果比較部は、それぞれ自己の異常の有無を診断するＢＩＳＴ機能を有し、
前記第１コアによる演算結果と前記第２コアによる演算結果とが不一致である場合は、前記マイクロコンピュータのリセット処理を実行するとともに、前記リセット処理において前記ＢＩＳＴ機能による診断を実行し、
前記ＢＩＳＴ機能による診断において前記第１コア、前記第２コア及び前記演算結果比較部のいずれにも異常が発生していないと診断された場合は、前記リセット処理において前記第１コア、前記第２コア及び前記第３コアを起動させ、前記原動機を前記通常走行モードで制御して前記車両を走行させる一方で、
前記ＢＩＳＴ機能による診断において前記第１コア、前記第２コア及び前記演算結果比較部の少なくとも１つに異常が発生していると診断された場合は、前記リセット処理において前記第１コア及び前記第２コアを起動させることなく前記第３コアを起動させ、前記通常走行モードよりも前記原動機の出力を抑制する退避走行モードで前記原動機を制御するための演算を前記第３コアによって行うことを特徴とする電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のコアを有するマイクロコンピュータを搭載し、車両の原動機の制御を行う電子制御装置に関する。
【背景技術】
【０００２】
車両の安全性の確保は、高性能化、高機能化と並んで重要な社会的ニーズとなっている。車両の機能安全に関し導入された国際規格（ＩＳＯ２６２６２）においても、車両に異常が発生してから所定時間が経過するまでの間に、車両を安全な状態に移行させることが求められている。その一例として、走行中の車両に異常が発生した場合に、車両を路肩に寄せる退避走行が可能な程度まで、エンジンの出力を正常時よりも抑制すること等が検討されている。
【０００３】
車両のエンジンの制御を行う電子制御装置では、異常の検出のために、コアの演算結果の妥当性の確認を行うものが知られている。例えば、下記特許文献１には、２つのコアを備えることで、このような確認を可能とする電子制御装置が記載されている。当該電子制御装置は、２つのコアが同一の演算を行うとともに、その演算結果に基づいて電子制御装置の異常の有無を判定するロックステップ方式のものである。詳細には、２つのコアの演算結果を比較部で比較し、両演算結果が不一致となった場合に異常が発生したと判定するものである。当該電子制御装置では、異常が発生したと判定された場合にリセット処理（初期化）を実行することで、正常状態への復帰を図っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−６５２２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上記特許文献１に記載の電子制御装置では、少なくとも一方のコアや比較部に、リセット処理を実行しても正常状態に復帰できないような故障が生じている場合に、車両を安全な状態に移行させることが困難となるおそれがあった。つまり、この場合、リセット処理を実行しても２つのコアの演算結果が不一致となる状態が解消されないため、リセット処理が無限に繰り返し実行されてしまい、その結果、車両のエンジンを適切に制御できなくなるというおそれがあった。
【０００６】
本発明はこのような課題に鑑みてなされたものであり、その目的は、複数のコアを有するマイクロコンピュータを搭載し、車両の原動機の制御を行う電子制御装置であって、コアの異常の有無をロックステップ方式によって判定しながらも、異常が発生した際に車両を安全な状態に移行させることができる電子制御装置を提供することにある。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、本発明に係る電子制御装置は、複数のコアを有するマイクロコンピュータを搭載し、車両の原動機の制御を行う電子制御装置であって、前記マイクロコンピュータは、前記原動機を通常走行モードで制御するための演算を行う第１コアと、前記第１コアと同一の演算を行う第２コアと、前記第１コアによる演算結果と前記第２コアによる演算結果とを比較する演算結果比較部と、前記第１コア及び前記第２コアと異なる演算を行う第３コアと、を有する。前記第１コアによる演算結果と前記第２コアによる演算結果とが不一致である場合、前記第１コアによる演算結果と前記第２コアによる演算結果とが不一致となった回数が所定値となるまでは、該演算結果が不一致となる毎に前記マイクロコンピュータのリセット処理を実行するとともに、前記リセット処理において前記第１コア、前記第２コア及び前記第３コアを起動させ、前記原動機を前記通常走行モードで制御して前記車両を走行させる一方で、前記第１コアによる演算結果と前記第２コアによる演算結果とが不一致となった回数が前記所定値を超えた場合は、前記マイクロコンピュータのリセット処理を実行するとともに、前記リセット処理において前記第１コア及び前記第２コアを起動させることなく前記第３コアを起動させ、前記通常走行モードよりも前記原動機の出力を抑制する退避走行モードで前記原動機を制御するための演算を前記第３コアによって行う。
また、上記課題を解決するために、本発明に係る電子制御装置は、複数のコアを有するマイクロコンピュータを搭載し、車両の原動機の制御を行う電子制御装置であって、前記マイクロコンピュータは、前記原動機を通常走行モードで制御するための演算を行う第１コアと、前記第１コアと同一の演算を行う第２コアと、前記第１コアによる演算結果と前記第２コアによる演算結果とを比較する演算結果比較部と、前記第１コア及び前記第２コアと異なる演算を行う第３コアと、を有し、前記第１コア、前記第２コア及び前記演算結果比較部は、それぞれ自己の異常の有無を診断するＢＩＳＴ機能を有し、前記第１コアによる演算結果と前記第２コアによる演算結果とが不一致である場合は、前記マイクロコンピュータのリセット処理を実行するとともに、前記リセット処理において前記ＢＩＳＴ機能による診断を実行し、前記ＢＩＳＴ機能による診断において前記第１コア、前記第２コア及び前記演算結果比較部のいずれにも異常が発生していないと診断された場合は、前記リセット処理において前記第１コア、前記第２コア及び前記第３コアを起動させ、前記原動機を前記通常走行モードで制御して前記車両を走行させる一方で、前記ＢＩＳＴ機能による診断において前記第１コア、前記第２コア及び前記演算結果比較部の少なくとも１つに異常が発生していると診断された場合は、前記リセット処理において前記第１コア及び前記第２コアを起動させることなく前記第３コアを起動させ、前記通常走行モードよりも前記原動機の出力を抑制する退避走行モードで前記原動機を制御するための演算を前記第３コアによって行う。
【０００８】
本発明によれば、第１コアによる演算結果と第２コアによる演算結果とが不一致である場合、すなわち、第１コア、第２コア及び演算結果比較部の少なくも１つに異常が発生している場合に、車両の原動機を退避走行モードで制御する。この退避走行モードは、通常走行モードよりも原動機の出力を抑制して車両を走行させるものである。また、この退避走行モードで原動機を制御するための演算は、ロックステップ方式に関与しない第３コアによって行われる。したがって、第１コア、第２コア及び演算結果比較部の少なくとも１つが正常状態に復帰困難な事態となっても、車両を安全な状態に移行させることが可能となる。
【発明の効果】
【０００９】
本発明によれば、複数のコアを有するマイクロコンピュータを搭載し、車両の原動機の制御を行う電子制御装置であって、コアの異常の有無をロックステップ方式によって判定しながらも、異常が発生した際に車両を安全な状態に移行させることができる電子制御装置を提供することが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る電子制御装置の構成を示すブロック図である。
【図２】図１に示すマイクロコンピュータの動作を示すフローチャートである。
【図３】図１に示す第１コア及び第２コアによる処理を示すフローチャートである。
【図４】図１に示す第３コアによる処理を示すフローチャートである。
【図５】図２に示すマイクロコンピュータのリセット処理を示すフローチャートである。
【図６】図２に示す第３コアによる退避走行モードを示すフローチャートである。
【図７】図２に示すマイクロコンピュータのリセット処理の変形例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照しながら本発明の実施形態について説明する。説明の理解を容易にするため、各図面において同一の構成要素に対しては可能な限り同一の符号を付して、重複する説明は省略する。
【００１２】
まず、図１を参照しながら、本発明の実施形態に係る電子制御装置１０の構成について説明する。電子制御装置１０は、車両の各種センサ（不図示）と電気的に接続されており、それらから伝達される情報等を用いながら車両の原動機であるエンジン１００を制御する。エンジン１００は、複数の気筒を有するガソリンエンジンである。
【００１３】
電子制御装置１０は、マイクロコンピュータ２０と、監視ＩＣ３０と、出力回路４１，４２、４３を搭載している。電子制御装置１０は、通常運転モード及び退避走行モードの２つの運転モードを有しており、各運転モードを実行してエンジン１００を制御することで車両を走行させる。
【００１４】
マイクロコンピュータ２０（以下、「マイコン２０」とも称する）は、所謂マルチコアの電子機器であり、第１コア２１と、第２コア２２と、第３コア２３と、を有している。また、マイコン２０は、演算結果比較部２４と、割り込み処理部２５と、ＲＯＭ２６と、ＲＡＭ２７と、リセット回路２８と、周辺Ｉ／Ｏ２９と、を有している。
【００１５】
第１コア２１は、マイコン２０の主プロセッサである。第１コア２１は、バス２００に接続されており、各種センサからマイコン２０に伝達される情報を適宜用いて、所定のプログラムに従って演算を行う。第１コア２１は、主にマイコン２０が正常な場合に、通常走行モードで車両のエンジン１００を制御するための演算を行う制御用コアである。第１コア２１は、自己の異常の有無を診断するＢＩＳＴ（Built In Self Test）機能を有している。
【００１６】
第２コア２２は、マイコン２０の副プロセッサである。第２コア２２は、バス２００と接続されておらず、各種センサからマイコン２０に伝達される情報を適宜用いて、所定のプログラムに従って演算を行う。第２コア２２は、第１コア２１と同一クロックで同期して第１コア２１と同一の演算を行い、後述するロックステップ方式の異常判定に用いられるチェック用コアである。第２コア２２は、自己の異常の有無を診断するＢＩＳＴ機能を有している。
【００１７】
第３コア２３は、マイコン２０の汎用プロセッサである。第３コア２３は、バス２００に接続されており、各種センサからマイコン２０に伝達される情報を適宜用いて、所定のプログラムに従って演算を行う。第３コア２３は、車両のエンジン１００が前述した通常走行モードで制御されている場合に、エンジン１００の制御以外の挙動に関する演算を行う汎用コアである。この汎用コアは、マイコン２０に複数設けられていてもよい。
【００１８】
演算結果比較部２４は、第１コア２１及び第２コア２２と通信可能とされたコンパレータである。演算結果比較部２４は、通知された複数の演算結果の比較を行い、バス２００を介してその比較結果を通知する。第１コア２１による演算結果と第２コア２２による演算結果とは、第１コア２１、第２コア２２及び演算結果比較部２４がいずれも正常である場合は常に一致するように設定されている。演算結果比較部２４は、自己の異常の有無を診断するＢＩＳＴ機能を有している。
【００１９】
割り込み処理部２５は、各種センサ等の異常発生時に、割り込み処理を行う部分である。各種センサからマイコン２０に伝達される情報に基づいて、車両に異常が発生したと判断された場合に、割り込み処理部２５は適宜割り込み信号をバス２００に送信する。
【００２０】
ＲＯＭ２６は、第１コア２１等とバス２００を介して相互に通信可能とされた記憶領域である。ＲＯＭ２６は、エンジン１００の制御を行うための複数のプログラムや各種データを記憶している。詳細には、通常走行モードと退避走行モードのそれぞれに対応するプログラム等がＲＯＭ２６に記憶されている。
【００２１】
ＲＡＭ２７は、第１コア２１等とバス２００を介して通信可能とされた記憶領域である。ＲＡＭ４０は、後述するロックステップ方式の異常有無判定において、第１コア２１による演算結果と第２コア２２による演算結果とが不一致となった回数を一時的に記憶する。さらに、ＲＡＭ４０は、電子制御装置１０が実行している運転モードが、通常走行モードと退避走行モードのいずれであるかを示すデータを一時的に記憶する。マイコン２０への電力供給が断たれた場合、ＲＡＭ２７が記憶しているデータは消去される。
【００２２】
リセット回路２８は、第１コア２１等とバス２００を介して通信可能とされた電子回路である。リセット回路２８は、第１コア２１、第２コア２２及び演算結果比較部２４のＢＩＳＴを実行するリセット処理と、当該ＢＩＳＴを実行しないリセット処理とを行うことができる。リセット回路２８は、監視ＩＣ３０から入力されるリセット信号に基づいてマイコン２０のリセット処理を実行する。
【００２３】
周辺Ｉ／Ｏ２９は、マイコン２０とその周辺機器との間で、通信を行うためのインターフェイスである。マイコン２０は、この周辺Ｉ／Ｏを介して、制御対象である電子スロットル５１用の出力回路４１や、燃料噴射装置５２用の出力回路４２や、点火装置５３用の出力回路４３に制御信号（制御指令）を送信する。また、マイコン２０が正常である場合には、マイコン２０は、周辺Ｉ／Ｏを介してＷＤＣ（Watch Dog Counter）信号とマイコン２０の診断結果に関する信号とを監視ＩＣ３０に送信する。
【００２４】
監視ＩＣ３０は、マイコン２０から受信するマイコン診断結果とＷＤＣ信号とを監視するＩＣである。監視ＩＣ３０は、マイコン２０から受信するマイコン診断結果が正常ではない場合に、電子スロットル５１の出力回路４１に遮断信号を送信する。また、監視ＩＣ３０は、マイコン２０が正常である場合に定期的に送信するＷＤＣ信号が所定時間途切れた場合に、マイコン２０にリセット信号を送信する。
【００２５】
出力回路４１，４２，４３は、それぞれ電子スロットル５１、燃料噴射装置５２、点火装置５３に制御信号を送信する電子回路である。当該制御信号の送信は、マイコン２０が正常である場合は第１コア２１によって制御され、マイコン２０に異常が発生している場合は第３コア２３によって制御される。電子スロットル５１、燃料噴射装置５２、点火装置５３は、この制御信号に基づいて動作し、エンジン１００を駆動させる。電子スロットル５１に制御信号を送信する出力回路４１は、マイコン２０に異常が発生している場合は、マイコン２０から受信する制御信号を無視する。
【００２６】
続いて、図２乃至図６を参照しながら、マイコン２０において行われる処理について説明する。以下、図２のフローチャートを主として参照するとともに、当該フローチャートの各ステップで行われている処理の詳細については図３乃至図６を適宜参照しながら説明する。
【００２７】
マイコン２０に異常が発生していない場合、図２のステップＳ１１で示されるように、マイコン２０では第１コア２１、第２コア２２及び第３コア２３による並列処理が行われている。
【００２８】
このステップＳ１１において、第１コア２１及び第２コア２２は、図３に示される処理を行っている。尚、前述したように、第２コア２２は第１コア２１と同一の演算を行うものであるから、ここでは第１コア２１が行う処理について説明し、第２コア２２が行う処理については説明を省略する。
【００２９】
図３にステップＳ２１で示されるように、第１コア２１は、まずマイコン２０の診断を行う。具体的には、ＲＯＭ２６、ＲＡＭ２７によるデータの記憶や、マイコン２０が有するタイマ機能等の状態を診断する。第１コア２１は、当該診断結果をＲＡＭ２７に記憶させる。
【００３０】
次に、第１コア２１は、ステップＳ２２で、ステップＳ２１で行った診断の結果に基づいてマイコン２０が正常か否かを判定する。診断の結果からマイコン２０の状態が正常であると判定された場合（Ｓ２２：ＹＥＳ）、第１コア２１は、ステップＳ２３の処理に進む。
【００３１】
次に、第１コア２１は、ステップＳ２３で、マイコン２０が正常であったことを示す信号を監視ＩＣ３０に送信する。当該信号を受信した監視ＩＣ３０が、出力回路４１に遮断信号を送信することはない。
【００３２】
次に、第１コア２１は、ステップＳ２４で、車両のエンジン１００を通常走行モードで制御するための演算を行う。当該通常走行モードは、エンジン１００の運転モードの１つであり、マイコン２０が正常である場合のみ実行が許可されるものである。通常走行モードでは、出力を抑制することなくエンジン１００を駆動させるように、出力回路４１，４２，４３から電子スロットル５１、燃料噴射装置５２、点火装置５３に制御信号を送信する。このとき、ＲＡＭ２７には、エンジン１００が通常走行モードで制御されていることを示す情報が一時的に記憶されている。
【００３３】
一方、ステップＳ２２で、診断の結果からマイコン２０に異常が発生していると判定された場合（Ｓ２２：ＮＯ）、第１コア２１は、ステップＳ２５の処理に進む。
【００３４】
次に、第１コア２１は、ステップＳ２５で、マイコン２０に異常が発生していることを示す信号を監視ＩＣ３０に送信する。
【００３５】
続いて、図２のステップＳ１１において第３コア２３が行う処理について、図４を参照しながら説明する。
【００３６】
図４のステップＳ３１に示されるように、第３コア２３は、現在の運転モードが通常走行モードであるか否かを判定する。具体的には、運転モードが通常走行モードであることを示すデータがＲＡＭ２７に記憶されているか否かを判定する。現在の運転モードが通常走行モードである場合（Ｓ３１：ＹＥＳ）、第３コア２３は、ステップＳ３２の処理に進む。
【００３７】
次に、第３コア２３は、ステップＳ３２で、前述したステップＳ２１で行われた診断の結果に基づいて、マイコン２０が正常か否かを判定する。第３コア２３は、ＲＡＭ２７に記憶されている診断結果を読み込むことで、当該判定を行う。マイコン２０が正常であると判定された場合（Ｓ３２：ＹＥＳ）、第３コア２３は、ステップＳ３３の処理に進む。
【００３８】
次に、第３コア２３は、ステップ３３で、汎用制御のための演算を行う。この汎用制御は、エンジン１００以外の挙動に関する制御である。
【００３９】
一方、ステップＳ３１で、現在の運転モードが通常走行モードではないと判定された場合（Ｓ３１：ＮＯ）、すなわち、運転モードが退避走行モードである場合は、第３コア２３は、ステップＳ３４の処理に進む。また、ステップＳ３２で、マイコン２０が正常ではないと診断された場合（Ｓ３２：ＮＯ）、すなわち、マイコン２０に異常が発生している場合も、ステップＳ３４の処理に進む。
【００４０】
次に、第３コア２３は、ステップ３４で、運転モードを退避走行モードに設定する。すなわち、ステップＳ３１で運転モードが既に退避走行モードであると判定された場合（Ｓ３１：ＮＯ）は、ステップＳ３４で継続して運転モードを退避走行モードとする。また、ステップＳ３１で運転モードが通常走行モードであると判定された場合（Ｓ３１：ＹＥＳ）であってマイコン２０が正常ではないと診断された場合（Ｓ３２：ＮＯ）は、ステップＳ３４で運転モードを退避走行モードに移行させる。これにより、ＲＡＭ２７は、運転モードが退避走行モードであることを示すデータを記憶した状態となる。
【００４１】
この退避走行モードは、通常走行モードよりも出力を抑制してエンジン１００を駆動させる運転モードである。すなわち、マイコン２０に異常が発生している場合に、車両を路肩に寄せる退避走行が可能な程度まで、エンジン１００の出力を抑制するものである。このため、車両の運転者は、マイコン２０に異常が発生した場合に、安全が確保できる状態に移行することが可能となる。
【００４２】
再び図２を参照しながら説明を続ける。次に、マイコン２０は、ステップＳ１２で、演算結果比較部２４により、第１コア２１による演算結果と、第２コア２２による演算結果との比較を行う。
【００４３】
次に、マイコン２０は、ステップＳ１３で、第１コア２１による演算結果と、第２コア２２による演算結果とが不一致である否かを判定する。両演算結果が不一致ではないと判定された場合（Ｓ１３：ＮＯ）、すなわち、両演算結果が一致している場合、マイコン２０は再びステップＳ１１に戻り、前述した処理を行う。
【００４４】
一方、ステップＳ１３で、第１コア２１による演算結果と、第２コア２２による演算結果とが不一致であると判定された場合（Ｓ１３：ＹＥＳ）、マイコン２０は、ステップＳ１４の処理に進む。
【００４５】
次に、マイコン２０は、ステップＳ１４で、マイコン２０のリセット処理を実行する。このステップＳ１４における処理について、図５を参照しながら説明する。
【００４６】
マイコン２０の第１コア２１は、図５に示されるステップＳ４１で、第１コア２１による演算結果と、第２コア２２による演算結果とが不一致となった回数をカウントアップする。当該回数は、ＲＡＭ２７に一時的に記憶されており、第１コア２１は両演算結果が不一致と判定される毎に、当該回数を１つ増加させる。
【００４７】
次に、ステップＳ４２で、第１コア２１による演算結果と、第２コア２２による演算結果とが不一致となった回数が、所定値以下であるか否かを第１コア２１が判定する。当該判定は、マイコン２０への電力供給の開始から、電力供給が断たれるまでの１サイクル内の所定時間内において、第１コア２１による演算結果と第２コア２２による演算結果とが不一致となった回数が所定値以下であるか否かに基づいて判定する。当該回数が所定値以下である場合（Ｓ４２：ＹＥＳ）、ステップＳ４３の処理に進む。
【００４８】
次に、ステップＳ４３で、リセット回路２８によって第１コア２１、第２コア２２及び第３コア２３を停止させる。すなわち、第１コア２１、第２コア２２及び第３コア２３への電力供給が断たれ、演算が停止される。
【００４９】
次に、ステップＳ４４で、現在の運転モードが通常走行モードであるか否かを判定する。具体的には、運転モードが通常走行モードであることを示すデータがＲＡＭ２７に記憶されているか否かを判定する。現在の運転モードが通常走行モードである場合（Ｓ４４：ＹＥＳ）、ステップＳ４５の処理に進む。
【００５０】
次に、ステップＳ４５で、それまで停止させていた第１コア２１及び第２コア２２を起動させる。すなわち、第１コア２１及び第２コア２２への電力供給が再開され、第１コア２１及び第２コア２２が演算を開始する。現在の運転モードは通常走行モードであるため、起動した第１コア２１は車両のエンジン１００を通常走行モードで制御するための演算を行い、第２コア２２はこの第１コア２１と同一の演算を行う。
【００５１】
次に、ステップＳ４６で、それまで停止させていた第３コア２３を起動させる。すなわち、第３コア２３への電力供給が再開され、第３コア２３が演算を開始する。現在の運転モードが通常走行モードである場合（Ｓ４４：ＹＥＳ）、起動した第３コア２３は前述した汎用制御のための演算を行う。
【００５２】
一方、ステップＳ４２で、第１コア２１による演算結果と、第２コア２２による演算結果とが不一致となった回数が、所定値以下ではないと判定された場合（Ｓ４２：ＮＯ）、ステップＳ４７の処理に進む。
【００５３】
次に、ステップＳ４７で、運転モードを退避走行モードに設定する。すなわち、運転モードが既に退避走行モードである場合は、ステップＳ４７で継続して運転モードを退避走行モードとする。また、運転モードが通常走行モードである場合は、ステップＳ４７で運転モードを退避走行モードに移行させる。これにより、ＲＡＭ２７は、運転モードが退避走行モードであることを示すデータを記憶した状態となる。
【００５４】
次に、ステップＳ４３で、前述したように、リセット回路２８によって第１コア２１、第２コア２２及び第３コア２３を停止させる。
【００５５】
次に、ステップＳ４４で、前述したように、現在の運転モードが通常走行モードであるか否かを判定する。ステップＳ４７の処理によって運転モードが退避走行モードに移行しており、現在の運転モードが通常走行モードではない場合（Ｓ４４：ＮＯ）、ステップ４６の処理に進む。
【００５６】
次に、ステップＳ４６で、前述したように、停止させていた第３コア２３を起動させる。ステップＳ４２で、第１コア２１による演算結果と、第２コア２２による演算結果とが不一致となった回数が所定値を超えている場合（Ｓ４２：ＮＯ）、運転モードは退避走行モードに設定され（Ｓ４７）、ステップＳ４５の処理が行われない。したがって、第１コア２１及び第２コア２２を起動させることなく第３コア２３のみが起動され、マイコン２０のリセット処理が終了する。運転モードは退避走行モードに設定されているため、起動した第３コア２３のみによって、車両のエンジン１００を退避走行モードで制御するための演算を行う。
【００５７】
再び図２を参照しながら説明を続ける。次に、マイコン２０は、ステップＳ１５で、第３コア２３による退避走行モードを実行する。このステップＳ１５における処理について、図６を参照しながら説明する。
【００５８】
マイコン２０の第３コア２３は、図６に示されるステップＳ５１で、現在の運転モードが通常走行モードであるか否かを判定する。具体的には、運転モードが通常走行モードであることを示すデータがＲＡＭ２７に記憶されているか否かを判定する。現在の運転モードが通常走行モードである場合（Ｓ５１：ＹＥＳ）、第３コア２３は、ステップＳ５２の処理に進む。
【００５９】
次に、ステップＳ５２で、既に行ったマイコン２０の診断の結果に基づいて、マイコン２０が正常であるか否かを判定する。マイコン２０の状態が正常であると判定された場合（Ｓ５２：ＹＥＳ）、第３コア２３は、次にステップＳ５３の処理に進む。
【００６０】
次に、第３コア２３は、ステップＳ５３で、汎用制御のための演算を行う。この汎用制御は、エンジン１００以外の挙動に関する制御である。
【００６１】
一方、ステップＳ５１で、現在の運転モードが通常走行モードではないと判定された場合（Ｓ５１：ＮＯ）、すなわち、運転モードが退避走行モードである場合は、第３コア２３は、ステップＳ５４の処理に進む。また、ステップＳ５２で、マイコン２０が正常ではないと診断された場合（Ｓ５２：ＮＯ）、すなわち、マイコン２０に異常が発生している場合も、ステップＳ５４の処理に進む。
【００６２】
次に、第３コア２３は、ステップ５４で、車両のエンジン１００を退避走行モードで制御するための演算を行う。すなわち、ステップＳ５１で運転モードが既に退避走行モードであると判定された場合（Ｓ５１：ＮＯ）は、ステップＳ５４で継続して運転モードを退避走行モードとし、退避走行モードを実行する。また、ステップＳ５１で運転モードが通常走行モードであると判定された場合（Ｓ５１：ＹＥＳ）であってマイコン２０が正常ではないと診断された場合（Ｓ５２：ＮＯ）は、運転モードを退避走行モードに移行させ、退避走行モードを実行する。これにより、エンジン１００は、第１コア２１及び第２コア２２によることなく、第３コア２３のみによって制御され、車両が走行する。第３コア２３は、通常走行モードと比べて、エンジン１００が出力を抑制されるように演算を行う。具体的には、電子スロットル５１によってエンジン１００に供給される空気の流量が、通常走行モードと比べて少なくなるように演算を行う。また、この空気の流量の変化に伴い、燃料噴射装置５２による燃料噴射量や点火装置５３による点火タイミングも調整し、エンジン１００における燃料の燃焼が適切なものとなるようにしている。
【００６３】
以上のように、本実施形態に係る電子制御装置１０によれば、第１コア２１による演算結果と第２コア２２による演算結果とが不一致である場合、すなわち、第１コア２１、第２コア２２及び演算結果比較部２４の少なくもいずれかに異常が発生している場合に、車両のエンジン１００を退避走行モードで制御する。この退避走行モードは、通常走行モードよりも車両のエンジン１００の出力を抑制して車両を走行させるものである。また、この退避走行モードで車両のエンジン１００を制御するための演算は、ロックステップ方式に関与しない第３コア２３によって行われる。したがって、第１コア２１、第２コア２２及び演算結果比較部２４の少なくとも１つが正常状態に復帰困難な事態となっても、車両を安全な状態に移行させることが可能となる。
【００６４】
また、本実施形態に係る電子制御装置１０では、第１コア２１による演算結果と第２コア２２による演算結果とが不一致となった回数が所定値となるまでは、該演算結果が不一致となる毎にリセット処理を実行し、車両のエンジン１００を通常走行モードで制御する。一方、第１コア２１による演算結果と第２コア２２による演算結果とが不一致となった回数が所定値を超えた場合は、エンジン１００を退避走行モードに移行させた後にリセット処理を実行する。
【００６５】
これにより、所謂ＲＡＭ化け等のように、第１コア２１による演算結果と第２コア２２による演算結果とが一時的に不一致となった場合に、リセット処理によって正常な状態に復帰できるにもかかわらず、運転モードが直ちに退避モードに移行されてしまうという実用上の不都合を防止することができる。
【００６６】
また、本実施形態に係る電子制御装置１０では、第１コア２１による演算結果と第２コア２２による演算結果とが不一致となった回数が所定値となるまでは、リセット処理において第１コア２１、第２コア２２及び第３コア２３を起動させる。一方、第１コア２１による演算結果と第２コア２２による演算結果とが不一致となった回数が所定値を超えた場合は、リセット処理において第１コア２１及び第２コア２２を起動させることなく第３コア２３を起動させる。
【００６７】
このように、第１コア２１による演算結果と第２コア２２による演算結果とが不一致となった回数が所定値を超え、第３コア２３による退避走行モードを実行する場合は、第１コア２１及び第２コア２２を起動させない。したがって、例えば、異常が発生している第１コア２１から、誤ってマイコン２０が正常であることを示す信号を監視ＩＣ３０に送信してしまい、エンジン１００の制御を適切に行えなくなるような事態を防止することができる。すなわち、第３コア２３によって退避走行モードを確実に実行することが可能となる。
【００６８】
次に、図７を参照しながら、本実施形態の変形例について説明する。前述した電子制御装置１０では、図２に示すフローチャートのステップＳ１４において、図５に示すフローチャートの処理が行われていた。本変形例は、図５に代えて図７に示すフローチャートの処理が行われる点のみ、前述した電子制御装置１０と異なる。したがって、ここでは図７に示すフローチャートのみについて説明し、他の処理に関する説明を省略する。
【００６９】
図７のステップＳ６１に示されるように、マイコン２０のリセット処理において、まず、リセット回路２８によって第１コア２１、第２コア２２及び第３コア２３を停止させる。すなわち、第１コア２１、第２コア２２及び第３コア２３への電力供給が断たれ、演算が停止される。
【００７０】
次に、ステップＳ６２で、ＢＩＳＴ機能による診断を実行する。具体的には、第１コア２１、第２コア２２及び演算結果比較部２４が、それぞれが有しているＢＩＳＴ機能により、自己の異常の有無を診断する。
【００７１】
次に、ステップＳ６３で、ＢＩＳＴ機能による診断の結果が正常であったか否かを判定する。すなわち、第１コア２１、第２コア２２及び演算結果比較部２４のいずれにも異常が無く、正常な状態であるか否かを判定する。ＢＩＳＴ機能による診断の結果が正常である場合（Ｓ６３：ＹＥＳ）、ステップＳ６４の処理に進む。
【００７２】
次に、ステップＳ６４で、それまで停止させていた第１コア２１及び第２コア２２を起動させる。すなわち、第１コア２１及び第２コア２２への電力供給が再開され、第１コア２１及び第２コア２２が演算を開始する。第１コア２１及び第２コア２２に異常が発生しておらず、現在の運転モードは通常走行モードであるため、起動した第１コア２１は車両のエンジン１００を通常走行モードで制御するための演算を行い、第２コア２２はこの第１コア２１と同一の演算を行う。
【００７３】
次に、ステップＳ６５で、それまで停止させていた第３コア２３を起動させる。すなわち、第３コア２３への電力供給が再開され、第３コア２３が演算を開始する。現在の運転モードが通常走行モードであるため、起動した第３コア２３は前述した汎用制御のための演算を行う。
【００７４】
一方、ステップＳ６３で、ＢＩＳＴ機能による診断の結果が正常ではなかった場合（Ｓ６３：ＮＯ）、すなわち、第１コア２１、第２コア２２及び演算結果比較部２４のいずれかに異常が発生している場合、ステップＳ６６の処理に進む。
【００７５】
次に、ステップＳ６６で、運転モードを退避走行モードに設定する。すなわち、運転モードが既に退避走行モードである場合は、ステップＳ６６で継続して運転モードを退避走行モードとする。また、運転モードが通常走行モードである場合は、ステップＳ６６で運転モードを退避走行モードに移行させる。これにより、ＲＡＭ２７は、運転モードが退避走行モードであることを示すデータを記憶した状態となる。
【００７６】
次に、ステップＳ６５で、前述したように、停止させていた第３コア２３を起動させる。ステップＳ６３で、ＢＩＳＴ機能による診断結果が正常ではなかった場合（Ｓ６３：ＮＯ）、運転モードは退避走行モードに設定され（Ｓ６６）、ステップＳ６４の処理が行われない。したがって、第１コア２１及び第２コア２２を起動させることなく第３コア２３のみが起動され、マイコン２０のリセット処理を終了する。運転モードは退避走行モードに設定されているため、起動した第３コア２３のみによって、車両のエンジン１００を退避走行モードで制御するための演算を行う。
【００７７】
ところで、ロックステップ方式に関与する第１コア２１、第２コア２２及び演算結果比較部２４に異常が発生していると、第１コア２１及び第２コア２２の両演算結果の比較によって異常判定を行うことに妥当性が無くなる場合がある。例えば、第１コア２１及び第２コア２２の両演算結果が一致していないにもかかわらず、演算結果比較部２４に異常が発生していることで、両演算結果が一致すると誤って判定されてしまうと、適切に退避走行モードに移行することができなくなるおそれがある。
【００７８】
そこで、本変形例では、第１コア２１、第２コア２２及び演算結果比較部２４のＢＩＳＴ機能による診断を実施し、その診断結果が正常ではなかった場合（Ｓ６３：ＮＯ）は退避走行モードを実行して、車両を安全が確保できる状態に移行させることが可能となる。そして、診断結果が正常である場合（Ｓ６３：ＹＥＳ）に限り、第１コア２１及び第２コア２２を起動させて、第１コア２１による演算結果と第２コア２２による演算結果との比較によってマイコン２０の異常判定が行えるように構成している。このように、第１コア２１、第２コア２２及び演算結果比較部２４のＢＩＳＴ機能による診断を実行することで、さらに信頼性の高い退避走行モードを実行することが可能となる。
【００７９】
以上、具体例を参照しつつ本発明の実施の形態について説明した。しかし、本発明はこれらの具体例に限定されるものではない。すなわち、これら具体例に、当業者が適宜設計変更を加えたものも、本発明の特徴を備えている限り、本発明の範囲に包含される。例えば、前述した各具体例が備える各要素およびその配置などは、例示したものに限定されるわけではなく適宜変更することができる。また、前述した各実施の形態が備える各要素は、技術的に可能な限りにおいて組み合わせることができ、これらを組み合わせたものも本発明の特徴を含む限り本発明の範囲に包含される。
【符号の説明】
【００８０】
１０：電子制御装置
２０：マイクロコンピュータ
２１：第１コア
２２：第２コア
２３：第３コア
２４：演算結果比較部
１００：エンジン（原動機）
【図１】
0006380141.tif 000002
【図２】
0006380141.tif 000003
【図３】
0006380141.tif 000004
【図４】
0006380141.tif 000005
【図５】
0006380141.tif 000006
【図６】
0006380141.tif 000007
【図７】
0006380141.tif 000008