(57)【特許請求の範囲】
【請求項１】
車両用内燃機関の吸気経路に設けられたスロットル弁の開閉を制御する電子装置と、
所定のデータ記憶領域に格納されたデータに基づき、前記電子装置の動作が正常であるか否かを監視するための処理を実行する処理手段と、
外部からの入力データを前記データ記憶領域に格納して前記処理手段を作動させる処理実行制御手段と、
を備えた電子制御装置において、
前記処理手段が正常であるか否かを検査するべく予め値の設定された疑似入力データと、該疑似入力データに基づき前記電子装置の動作が正常であるか否かを監視するための処理を行った場合の処理結果を表す期待値データとを予め記憶する検査データ記憶手段と、
前記処理実行制御手段が前記処理手段を作動させていない期間中の所定時に、前記検査データ記憶手段に記憶された前記疑似入力データを前記データ記憶領域に格納して前記処理手段を作動させ、その処理結果と前記検査データ記憶手段に記憶された前記期待値データとが一致していない場合に、前記処理手段が異常であると判定する検査実行手段と、
を備えたことを特徴とする電子制御装置。
【請求項２】
請求項１に記載の電子制御装置において、
前記電子装置は、
前記スロットル弁の開閉を制御するために必要な所定のデータを入力して、該入力したデータに基づき前記スロットル弁の開閉の制御目標値を算出し、該算出した制御目標値に応じて前記スロットル弁の開閉を制御すると共に、前記算出した制御目標値を表す算出データを外部へ出力するように構成されており、
前記処理手段が実行する処理は、
前記所定のデータに基づき前記電子装置が前記制御目標値を算出するのと同じ手順で前記制御目標値を算出する演算処理と、前記電子装置が出力する前記算出データの表す制御目標値と前記演算処理にて算出した制御目標値とを比較して、両制御目標値が一致していない場合に前記電子装置の動作が異常であると判定する判定処理とからなり、
前記処理実行制御手段は、
前記電子装置に入力される前記所定のデータと、前記電子装置から出力される前記算出データとを、前記入力データとして前記データ記憶領域に格納して前記処理手段を作動させ、
更に、前記検査データ記憶手段には、
前記疑似入力データとして、前記所定のデータに対応するものと、前記算出データに対応するものとが記憶されていると共に、前記期待値データとして、前記判定処理による判定結果に対応するものが記憶されており、
前記検査実行手段は、
前記処理手段が前記疑似入力データに基づき前記判定処理を実行したことによる判定結果と、前記検査データ記憶手段に記憶された前記判定結果に対応する期待値データとが一致していない場合に、前記処理手段が異常であると判定すること、
を特徴とする電子制御装置。
【請求項３】
請求項２に記載の電子制御装置において、
前記検査データ記憶手段には、更に、
前記期待値データとして、前記演算処理により算出される制御目標値に対応するものが記憶されており、
前記検査実行手段は、更に、
前記処理手段が前記疑似入力データに基づき前記演算処理を実行して算出した制御目標値と、前記検査データ記憶手段に記憶された前記制御目標値に対応する期待値データとが一致していない場合に、前記処理手段が異常であると判定すること、
を特徴とする電子制御装置。
【請求項４】
請求項１に記載の電子制御装置において、
前記電子装置は、
前記スロットル弁の開閉を制御するために必要な所定のデータを入力して、該入力したデータに基づき前記スロットル弁の開閉の制御目標値を算出し、該算出した制御目標値に応じて前記スロットル弁の開閉を制御すると共に、前記算出した制御目標値を表す算出データを外部へ出力するように構成されており、
前記処理手段が実行する処理は、
前記所定のデータに基づき前記電子装置が前記制御目標値を算出するのと同じ手順で前記制御目標値を算出する演算処理と、前記電子装置が出力する前記算出データの表す制御目標値と前記演算処理にて算出した制御目標値とを比較して、両制御目標値が一致していない場合に前記電子装置の動作が異常であると判定する判定処理とからなり、
前記処理実行制御手段は、
前記電子装置に入力される前記所定のデータと、前記電子装置から出力される前記算出データとを、前記入力データとして前記データ記憶領域に格納して前記処理手段を作動させ、
更に、前記検査データ記憶手段には、
前記疑似入力データとして、前記所定のデータに対応するものと、前記算出データに対応するものとが記憶されていると共に、前記期待値データとして、前記演算処理により算出される制御目標値に対応するものが記憶されており、
前記検査実行手段は、
前記処理手段が前記疑似入力データに基づき前記演算処理を実行して算出した制御目標値と、前記検査データ記憶手段に記憶された前記制御目標値に対応する期待値データとが一致していない場合に、前記処理手段が異常であると判定すること、
を特徴とする電子制御装置。
【請求項５】
請求項２又は請求項３に記載の電子制御装置において、
前記検査データ記憶手段には、前記処理手段が前記判定処理により分岐される全ての経路の処理を実行するように夫々設定された複数の疑似入力データと、該各疑似入力データに夫々対応する複数の期待値データとが記憶されており、
前記検査実行手段は、前記各疑似入力データのそれぞれを前記データ記憶領域に順次格納して、その度毎に前記処理手段を作動させ、その各処理結果と該各処理結果に夫々対応する前記期待値データとが一致していない場合に、前記処理手段が異常であると判定すること、
を特徴とする電子制御装置。
【請求項６】
請求項１ないし請求項５の何れか１項に記載の電子制御装置において、
前記検査実行手段は、所定時間毎に、前記疑似入力データを前記データ記憶領域に格納して前記処理手段を作動させると共に、前記処理手段が正常であるか否かを判定すること、を特徴とする電子制御装置。
【請求項７】
請求項１ないし請求項６の何れか１項に記載の電子制御装置において、
前記処理手段による処理結果に基づき、前記電子装置へ信号を出力する信号出力手段を備えていることを特徴とする電子制御装置。
【請求項８】
請求項７に記載の電子制御装置において、
前記処理実行制御手段は、外部からの入力データを前記データ記憶領域に格納して前記処理手段を作動させた際の該処理手段による処理結果を、前記データ記憶領域とは異なる特定の記憶領域に格納するように構成されており、
前記信号出力手段は、前記特定の記憶領域に格納された前記処理手段による処理結果に基づき、前記電子装置へ信号を出力するように構成されていること、
を特徴とする電子制御装置。
【請求項９】
請求項７又は請求項８に記載の電子制御装置において、
前記信号出力手段は、前記処理手段による処理結果が、前記電子装置の動作が異常であることを示す場合に、前記信号として、前記電子装置の動作モードを異常発生時の動作モードに移行させるための指令信号を出力するように構成されており、
更に、前記検査実行手段は、前記処理手段が異常であると判定すると、少なくとも前記信号出力手段の動作を停止させること、
を特徴とする電子制御装置。
【請求項１０】
車両用内燃機関の吸気経路に設けられたスロットル弁の開閉を制御するための処理を少なくとも実行する第１の処理装置と、
該第１の処理装置によるスロットル弁の開閉制御が停止された場合に、前記内燃機関の吸入空気を確保するフェールセーフ手段と、
前記内燃機関に対する燃料噴射及び点火を制御するための処理を少なくとも実行すると共に、前記第１の処理装置が正常であるか否かを監視する第２の処理装置と、
該第２の処理装置が正常であるか否かを監視して、異常であると判断すると前記第２の処理装置に代わって前記内燃機関に対する燃料噴射及び点火を制御する第３の処理装置とを備え、
前記第２の処理装置により前記第１の処理装置が異常であると判断された場合には、前記第１の処理装置がリセットされ、前記第３の処理装置により前記第２の処理装置が異常であると判断された場合には、前記第２の処理装置と前記第１の処理装置とが両方共にリセットされるように構成された車両用の電子制御装置であって、
更に、前記第１及び第２の処理装置のうちの少なくとも何れか一方は、自己が外部からの入力データに応じて実行する特定の処理を、予め用意された疑似入力データに基づき所定のタイミングで実行し、その処理結果と予め用意された期待値データとが一致していない場合に、自分自身が異常であると判定して、自己を監視する前記処理装置へ自分自身が異常であることを報知するように構成されていること、
を特徴とする電子制御装置。
【請求項１１】
請求項１０に記載の電子制御装置において、
前記第１の処理装置にて前記スロットル弁の開閉を制御するための処理が正確に実行されているか否かを検査する検査手段と、
該検査手段により前記処理が正確に実行されていないと判断されると、前記第１の処理装置によるスロットル弁の開閉制御だけを停止させる制御停止手段と、
を備えたことを特徴とする電子制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、外部からの入力データに基づき所定の処理を実行し、その処理結果に基づき他の装置へ信号を出力するデータ処理装置及び電子制御装置に関する。
【０００２】
【従来の技術】
従来より、例えば車両の内燃機関等を制御する電子制御装置には、データ処理装置として、ＣＰＵ，ＲＯＭ，ＲＡＭ等からなるマイクロコンピュータが設けられており、マイクロコンピュータでは、ＣＰＵが、予めＲＯＭに書き込まれたプログラムに従って、外部からの入力データに基づき所定の制御処理を実行し、その処理結果に基づいてアクチュエータを駆動する出力回路等へ制御信号を出力するようにしている。
【０００３】
ここで、この種の電子制御装置において、制御対象を制御するための制御処理が確実に実行されるようにするためには、まず、ＲＯＭにプログラムを書き込む工程にて、ＲＯＭに本来のプログラムデータが正確に書き込まれたか否かを、例えばチェックサムによってチェック（所謂サムチェック）するようにしている。
【０００４】
そして更に、電子制御装置内に、ＣＰＵから所謂ウォッチドックパルスが定期的に出力されているか否かを監視する監視回路を設け、ウォッチドックパルスの出力が停止すると、上記監視回路が、何等かの異常が発生したと判断してＣＰＵの動作をリセットするようにしている。
【０００５】
【発明が解決しようとする課題】
しかしながら、上記前者のチェックサムによるチェックでは、複数の書き込みエラーがあった場合に、そのエラーを発見することができない場合があるため、ＲＯＭに本来のプログラムが正確に書き込まれなかったことを検出できないまま、電子制御装置が使用されてしまう可能性がある。そして、そのプログラム異常が通常動作時に現象として顕著に現れないようなものである場合には、その異常を発見することは難しい。
【０００６】
一方、上記後者のウォッチドックパルスによる異常検出を行っても、ＣＰＵがウォッチドックパルスを出力するための出力処理を定期的に実行しさえすれば、監視回路は異常が発生したことを検知することができない。よって、実際の制御処理に関するサブルーチン等のプログラムデータやＣＰＵの機能に異常が生じて、予め定められた処理が正確に実行されていない場合であっても、そのことを検出できない可能性がある。
【０００７】
本発明は、このような問題に鑑みなされたものであり、予め定められた所定の処理を実行する際の異常を確実に検出可能なデータ処理装置と、信頼性の高い電子制御装置を提供することを目的としている。
【０００８】
【課題を解決するための手段、及び発明の効果】
上記目的を達成するためになされた請求項１に記載の電子制御装置では、処理実行制御手段が、外部からの入力データを所定のデータ記憶領域に格納して処理手段を作動させる。すると、処理手段は、データ記憶領域に格納されたデータ（つまり、この場合には外部からの入力データ）に基づき、車両用内燃機関の吸気経路に設けられたスロットル弁の開閉を制御する電子装置の動作が正常であるか否かを監視するための処理を実行する。
【０００９】
ここで特に、請求項１に記載の電子制御装置は、検査データ記憶手段と検査実行手段とを備えており、検査データ記憶手段には、前記処理手段が正常であるか否かを検査するべく予め値の設定された疑似入力データと、その疑似入力データに基づき電子装置の動作が正常であるか否かを監視するための処理を行った場合の処理結果を表す期待値データとが、予め記憶されている。そして、検査実行手段は、処理実行制御手段が処理手段を作動させていない期間中の所定時に、検査データ記憶手段に記憶された疑似入力データを前記データ記憶領域に格納して処理手段を作動させ、その処理結果と検査データ記憶手段に記憶された期待値データとが一致していない場合に、処理手段が異常であると判定する。
【００１０】
つまり、請求項１に記載の電子制御装置では、基本的には、処理実行制御手段が、外部からの入力データをデータ記憶領域に格納して処理手段を作動させることにより、外部からの入力データに基づき電子装置の動作が正常であるか否かを監視するための処理が実行される。
【００１１】
そして特に、予め値の設定された疑似入力データと、その疑似入力データに基づき処理手段が処理を実行した場合に得られるべきである処理結果としての期待値データとを、予め検査データ記憶手段に記憶させておき、処理実行制御手段が処理手段を作動させていない期間中の所定時に、検査実行手段が、処理手段に上記疑似入力データに基づき処理を実行させて、その処理結果（疑似入力データに基づく処理結果）と上記期待値データとが一致していなければ、処理手段が異常であると判定するようにしている。
【００１２】
このような電子制御装置によれば、処理手段を実際に作動させることで、処理手段が正常であるか否かを判定することができるため、処理手段に異常が生じて電子装置の動作が正常であるか否かを監視するための処理を正確に実行できなくなったことを、確実に検出することができる。即ち、処理手段が、ハードウェアによる論理回路によって構成されている場合には、その回路に異常が生じていることを確実に検出することができ、また、処理手段が、プログラムに従って処理を実行するＣＰＵによって構成されている場合には、プログラム及びＣＰＵの何れかに異常が生じていることを確実に検出することができるのである。
【００１３】
次に、請求項２に記載の電子制御装置では、請求項１に記載の電子制御装置において、上記電子装置は、スロットル弁の開閉を制御するために必要な所定のデータを入力して、該入力したデータに基づきスロットル弁の開閉の制御目標値を算出し、該算出した制御目標値に応じてスロットル弁の開閉を制御すると共に、その算出した制御目標値を表す算出データを外部へ出力するように構成されている。
【００１４】
そして、請求項２に記載の電子制御装置においては、処理手段の実行する処理が、前記所定のデータに基づき電子装置が制御目標値を算出するのと同じ手順で制御目標値を算出する演算処理と、電子装置が出力する前記算出データの表す制御目標値と前記演算処理にて算出した制御目標値とを比較して、両制御目標値が一致していない場合に電子装置の動作が異常であると判定する判定処理とからなっており、処理実行制御手段は、電子装置に入力される前記所定のデータと、電子装置から出力される前記算出データとを、前記入力データとして前記データ記憶領域に格納して処理手段を作動させる。
【００１５】
このように処理実行制御手段が処理手段を作動させることにより、電子装置の動作が正常であるか否かが監視される。そして、請求項２に記載の電子制御装置において、検査データ記憶手段には、疑似入力データとして、前記所定のデータに対応するものと、前記算出データに対応するものとが記憶されていると共に、期待値データとして、前記判定処理による判定結果に対応するものが記憶されており、検査実行手段は、検査データ記憶手段に記憶された前記疑似入力データを前記データ記憶領域に格納して処理手段を作動させ、処理手段が前記判定処理を実行したことによる判定結果と、検査データ記憶手段に記憶された前記判定結果に対応する期待値データとが一致していない場合に、処理手段が異常であると判定する。このような請求項２に記載の電子制御装置によれば、請求項１の効果を確実に得ることができる。
【００１６】
一方、請求項３に記載の電子制御装置では、検査データ記憶手段には、更に、期待値データとして、前記演算処理により算出される制御目標値に対応するものが記憶されており、検査実行手段は、更に、処理手段が疑似入力データに基づき前記演算処理を実行して算出した制御目標値と、検査データ記憶手段に記憶された前記制御目標値に対応する期待値データとが一致していない場合に、処理手段が異常であると判定する。
【００１７】
このような請求項３に記載の電子制御装置によれば、上記の制御処理が正確に実行されていないということがより確実に検出されることとなるため、請求項１の効果をより一層確実に得ることができる。
【００１８】
また、請求項４に記載の電子制御装置では、請求項１に記載の電子制御装置において、処理手段の実行する処理が、請求項２と同じ演算処理と判定処理とからなっていると共に、請求項２と同じ処理実行制御手段が備えられている。
【００１９】
そして、請求項４に記載の電子制御装置では、検査データ記憶手段には、疑似入力データとして、前記所定のデータに対応するものと、前記算出データに対応するものとが記憶されていると共に、期待値データとして、前記演算処理により算出される制御目標値に対応するものが記憶されており、検査実行手段は、検査データ記憶手段に記憶された前記疑似入力データを前記データ記憶領域に格納して処理手段を作動させ、処理手段が前記演算処理を実行して算出した制御目標値と、検査データ記憶手段に記憶された前記制御目標値に対応する期待値データとが一致していない場合に、処理手段が異常であると判定する。このような請求項４に記載の電子制御装置によっても、請求項２と同様に、請求項１の効果を確実に得ることができる。
【００２０】
次に、請求項５に記載の電子制御装置は、請求項２又は請求項３に記載の電子制御装置において、検査データ記憶手段には、処理手段が前記判定処理により分岐される全ての経路の処理を実行するように夫々設定された複数の疑似入力データと、その各疑似入力データに夫々対応する複数の期待値データとが記憶されている。そして、検査実行手段は、前記各疑似入力データのそれぞれを前記データ記憶領域に順次格納して、その度毎に処理手段を作動させ、その各処理結果と該各処理結果に夫々対応する期待値データとが一致していない場合に、処理手段が異常であると判定する。
【００２１】
つまり、請求項５に記載の電子制御装置では、処理手段が実行する処理の分岐経路を全て検査して、処理手段が正常であるか否かを判定するようにしており、この電子制御装置によれば、電子装置の動作が正常であるか否かを監視するための処理を正確に実行できなくなったことを、一層確実に検出することができる。
【００２２】
ここで、請求項１ないし請求項５の何れか１項に記載の電子制御装置において、検査実行手段は、例えば、当該電子制御装置が初期状態から動作を開始した時の１回だけ、疑似入力データを前記データ記憶領域に格納して処理手段を作動させると共に、処理手段が正常であるか否かを判定するようにしても良いが、請求項６に記載のように構成すれば、処理手段に異常が発生したことをより確実に検出できる。
【００２３】
即ち、請求項６に記載の電子制御装置では、検査実行手段が、所定時間毎に、疑似入力データを前記データ記憶領域に格納して処理手段を作動させると共に、処理手段が正常であるか否かを判定するようにしている。そして、この電子制御装置によれば、当該電子制御装置が動作している途中で処理手段に異常が発生したことを確実に検出できる。
【００２４】
次に、請求項７に記載の電子制御装置は、処理手段の処理結果に基づき、電子装置へ信号を出力する信号出力手段を備えている。そして、このような請求項７に記載の電子制御装置において、処理実行制御手段が処理手段を作動させた直後にだけ、信号出力手段が、処理手段による処理結果に基づき電子装置へ信号を出力するのであれば、その出力される信号は、常に外部からの入力データに応じたものとなるため問題はない。
【００２５】
しかし、信号出力手段が様々なタイミングで上記信号を出力するように構成すると、その出力される信号は、擬似入力データに応じたものとなってしまう可能性がある。つまり、検査実行手段が処理手段を作動させた直後に、信号出力手段が、処理手段による処理結果に基づいて電子装置へ信号を出力すると、その時点の処理結果は擬似入力データに基づくものであるため、信号出力手段によって出力される信号は、外部からの入力データに応じたものではなく、擬似入力データに応じたものとなってしまうのである。
【００２６】
そこで、請求項８に記載の電子制御装置では、請求項７に記載の電子制御装置において、処理実行制御手段が、外部からの入力データをデータ記憶領域に格納して処理手段を作動させた際の該処理手段による処理結果を、データ記憶領域とは異なる特定の記憶領域に格納するようにしており、更に、信号出力手段は、上記特定の記憶領域に格納された処理手段による処理結果に基づいて、電子装置へ信号を出力するようにしている。
【００２７】
このような請求項８に記載の電子制御装置によれば、信号出力手段が如何なるタイミングで電子装置へ信号を出力するように構成しても、その出力される信号は、外部からの入力データに基づき処理手段が処理を実行した場合の処理結果に基づくものとなり、電子装置へ常に適切な信号を出力することができるようになる。
【００２８】
次に、請求項９に記載の電子制御装置では、請求項７又は請求項８に記載の電子制御装置において、信号出力手段は、処理手段による処理結果が、前記電子装置の動作が異常であることを示す場合に、前記信号として、電子装置の動作モードを異常発生時の動作モードに移行させるための指令信号を出力する。そして更に、検査実行手段は、処理手段が異常であると判定すると、少なくとも信号出力手段の動作を停止させる。尚、上記指令信号としては、電子装置の動作を強制的に停止させるような信号でも良い。
【００２９】
つまり、請求項９に記載の電子制御装置では、処理手段が処理を実行することにより、電子装置の動作が正常であるか否かを監視し、異常であると判定すると、電子装置の動作モードを異常発生時の動作モードに移行させるための指令信号を出力して、その電子装置が異常な動作を継続してしまうことを防止するようにしている。そして特に、請求項９に記載の電子制御装置では、検査実行手段が、電子装置の正常／異常を監視するための処理を実行する処理手段が異常であると判定すると、少なくとも信号出力手段の動作を停止させて、上記指令信号が出力されないようにしている。
【００３０】
このような請求項９に記載の電子制御装置によれば、前述したように、処理手段が電子装置の動作が正常であるか否かを監視するための処理を正確に実行できなくなったことを、確実に検出することができるため、電子装置が正常であるにもかかわらず、その電子装置へ上記指令信号を誤って出力してしまうことを防止することができ、電子装置の動作状態を監視する際の信頼性を向上させることができる。
【００３１】
また、上記電子装置は制御対象（スロットル弁）を制御するものであり、請求項９に記載の電子制御装置によれば、電子装置の動作モードを誤って異常発生時の動作モードに移行させてしまうことを防止できるため、制御対象に対する制御の信頼性を向上させることができる。
【００３６】
次に、請求項１０に記載の電子制御装置では、第１の処理装置が、車両用内燃機関の吸気経路に設けられたスロットル弁の開閉を制御するための処理を実行し、フェールセーフ手段が、第１の処理装置によるスロットル弁の開閉制御が停止された場合に、内燃機関の吸入空気を確保する。また、第２の処理装置が、内燃機関に対する燃料噴射及び点火を制御するための処理を実行すると共に、第１の処理装置が正常であるか否かを監視し、第３の処理装置が、第２の処理装置が正常であるか否かを監視して、異常であると判断すると、第２の処理装置に代わって内燃機関に対する燃料噴射及び点火を制御する。
【００３７】
そして、この電子制御装置では、第２の処理装置により第１の処理装置が異常であると判断された場合には、第１の処理装置がリセットされ、第３の処理装置により第２の処理装置が異常であると判断された場合には、第２の処理装置と第１の処理装置とが両方共にリセットされる。
【００３８】
つまり、スロットル弁の開閉度合は内燃機関の出力に直接的に反映されるため、その制御には高い安全性が要求される。そこで、スロットル弁を制御する第１の処理装置が正常であるか否かを監視する第２の処理装置が異常であると判断された場合には、第２の処理装置だけではなく第１の処理装置をもリセットするようにしている。換言すれば、当該電子制御装置に少しでも異常があるとみなされる場合には、安全性を最優先して第１の処理装置をリセットするようにしているのである。
【００３９】
そして、この電子制御装置では、第１の処理装置によるスロットル弁の開閉制御が停止されても、フェールセーフ手段により内燃機関の吸入空気が確保され、また、第２の処理装置が異常となっても、第３の処理装置により、内燃機関に対する燃料噴射及び点火が行われて内燃機関の運転が可能となる。
【００４０】
よって、この電子制御装置によれば、異常に対する安全性と内燃機関の最低限の運転（延いては、車両の最低限の走行）とを、高い次元で両立させることができるのであるが、特に、第１及び第２の処理装置のうちの少なくとも何れか一方は、自己が外部からの入力データに応じて実行する特定の処理を、予め用意された疑似入力データに基づき所定のタイミングで実際に実行し、その処理結果と予め用意された期待値データとが一致していない場合に、自分自身が異常であると判定して、自己を監視する処理装置へ自分自身が異常であることを報知するように構成されている。
【００４１】
このため、請求項１０に記載の電子制御装置によれば、第１の処理装置及び／又は第２の処理装置に異常が生じていることをより確実に検出して、スロットル弁の制御を担う第１の処理装置をリセットすることができるようになり、車両用の内燃機関を制御する際の安全性・信頼性を一層向上させることができる。
【００４２】
また、このような電子制御装置に対し、第１の処理装置にてスロットル弁の開閉を制御するための処理が正確に実行されているか否かを検査する検査手段を設け、更に、その検査手段により前記処理が正確に実行されていないと判断されると、制御停止手段が、第１の処理装置によるスロットル弁の開閉制御だけを停止させる、というように構成すれば、スロットル弁を不適当に制御してしまうことを防止しつつ、第１の処理装置では他の処理を継続して実行できるようになり、安全性を確保しながら最大限の処理を実施できる。
【００４３】
【発明の実施の形態】
以下、本発明が適用された実施例について図面を用いて説明する。尚、本発明の実施の形態は、下記の実施例に何ら限定されることなく、本発明の技術的範囲に属する限り、種々の形態を採り得ることは言うまでもない。
【００４４】
［第１実施例］
まず図１は、車両に搭載された内燃機関を制御する、第１実施例のエンジン制御装置２及びその周辺装置の構成を表す構成図である。尚、本実施例のエンジン制御装置２は、内燃機関の点火時期や内燃機関の吸気経路（以下、吸気系という）４に設けられたスロットル弁６等を制御するものであるが、ここでは、スロットル弁６の制御に関する部分について説明する。
【００４５】
図１に示すように、本実施例のエンジン制御装置（以下単に、制御装置という）２は、アクセルペダル８の開度（以下、ペダル開度という）を検出するペダル開度センサ１０からの信号，車両の自動変速機を制御するトランスミッション制御装置（トランスミッションＥＣＵ）１２からの自動変速機のギア位置を示す信号，及び，内燃機関の冷却水温を検出する水温センサ１４からの信号等を入力し、それら各信号をデジタル処理可能な信号に夫々変換して出力する入力回路１６を備えている。
【００４６】
そして、制御装置２は、内燃機関を制御するためのプログラムが予め内蔵されたＲＯＭ１８と、ＲＯＭ１８に内蔵されたプログラムに従って、内燃機関を制御するための様々な制御処理を実行するメインＣＰＵ２０と、メインＣＰＵ２０の処理結果を一時記憶するためのＲＡＭ２２と、メインＣＰＵ２０からの駆動指令に応じて、スロットル弁６の開度を調節するためのスロットルモータ２４を作動させる出力回路２６とを備えている。
【００４７】
また更に、制御装置２は、メインＣＰＵ２０の動作が正常であるか否かを監視するためのプログラムが予め内蔵されたＲＯＭ２８と、ＲＯＭ２８に内蔵されたプログラムに従って、メインＣＰＵ２０の動作を監視するための処理を実行するサブＣＰＵ３０と、サブＣＰＵ３０の処理結果を一時記憶するためのＲＡＭ３２と、サブＣＰＵ３０からウォッチドックパルスＷ／Ｄ２が定期的に出力されているか否かを監視し、ウォッチドックパルスＷ／Ｄ２の出力が停止すると、サブＣＰＵ３０にリセット信号ＲＳＴ２を出力する監視ＩＣ３４とを備えている。
【００４８】
そして、本実施例の制御装置２においては、メインＣＰＵ２０が、後述する図２の処理を実行することにより、入力回路１６からの上記各信号に基づきスロットル弁６の制御開度（以下、スロットル開度という）を算出し、その算出したスロットル開度に応じた駆動指令を出力回路２６に出力する。すると、出力回路２６によってスロットルモータ２４が作動され、その駆動力により開度調節器３６が作動して、スロットル弁６の開度が変化するようになっている。
【００４９】
尚、開度調節器３６は、アクセルペダル８とスロットル弁６とをワイヤやリンク機構等を介して機械的に連結するメカ駆動系と、スロットルモータ２４の作動に応じてスロットル弁６の開度を調節する電子制御系とを形成し、更に、スロットルモータ２４の作動によるスロットル弁６の最大開度をアクセルペダル８の踏込量に応じた開度以下に規制するガード機能を備えた周知のものである。よって、スロットル弁６の開度は、当該制御装置２によって、アクセルペダル８の踏込量に応じた開度の範囲内で制御されることとなる。また、当該制御装置２がスロットル弁６に対する開度制御を停止しても、スロットル弁６の開度は、運転者によるアクセルペダル８の踏込量に応じて調節可能である。
【００５０】
また、本実施例の制御装置２においては、入力回路１６からメインＣＰＵ２０に入力される上記各信号が、サブＣＰＵ３０にも入力されており、更に、サブＣＰＵ３０とメインＣＰＵ２０とは、シリアル通信ライン３８によって、通信可能に接続されている。
【００５１】
そして、サブＣＰＵ３０は、メインＣＰＵ２０からウォッチドックパルスＷ／Ｄ１が定期的に出力されているか否かを監視して、ウォッチドックパルスＷ／Ｄ１の出力が停止するとメインＣＰＵ２０にリセット信号ＲＳＴ１を出力する、通常のウォッチドックパルスによる監視を行うと共に、後述する図４の監視処理を実行することにより、メインＣＰＵ２０が正常に動作しているか否かを詳細に監視する。そして更に、サブＣＰＵ３０は、後述する図５のロジック判定処理を実行することにより、自分自身が上記監視処理を正確に実行できているか否かをチェックするようにしている。
【００５２】
尚、図１に示すように、サブＣＰＵ３０が処理を実行する際にアクセスするＲＡＭ３２は、処理の最終結果を格納するための制御データＲＡＭ３２ｃと、上記最終結果を導出する際の途中の処理結果を格納するためのワークＲＡＭ３２ｗとに区別されている。
【００５３】
次に、メインＣＰＵ２０とサブＣＰＵ３０とが夫々実行する処理について説明する。
まず図２は、メインＣＰＵ２０が実行する処理（メインＣＰＵ処理）を表すフローチャートである。尚、このメインＣＰＵ処理は、車両のイグニッションスイッチ（図示省略）がオンされると実行が開始される。また、図２において、ステップ１２０〜ステップ１５０の処理は、常時繰り返して実行されるように表されているが、実際には予め定められた所定時間毎に実行される。
【００５４】
図２に示すように、メインＣＰＵ２０が当該処理の実行を開始すると、まず、ステップ（以下単に「Ｓ」と記す）１１０にて、内部の諸データを初期化するための初期化処理を実行する。
そして、続くＳ１２０にて、入力回路１６からの信号に基づき、内燃機関の冷却水温（以下単に、水温ともいう），ペダル開度，及び自動変速機のギア位置を検出し、その各検出値を表すデータを所定の演算式ｆに代入することにより、制御目標値であるスロットル開度を算出する。
【００５５】
そして、次のＳ１３０にて、シリアル通信ライン３８を介してサブＣＰＵ３０から指令信号としての制御停止指令が送信されて来たか否か（換言すれば、制御停止指令を受信したか否か）を判定し、制御停止指令を受信していなければ、Ｓ１４０に進む。そして、このＳ１４０にて、Ｓ１２０で算出したスロットル開度に応じた駆動指令を出力回路２６に出力して、スロットル弁６の実際の開度が上記算出したスロットル開度となるようにスロットルモータ２４を制御し、その後Ｓ１２０へ戻る。
【００５６】
これに対し、Ｓ１３０にて、サブＣＰＵ３０からの制御停止指令を受信したと判定した場合には、Ｓ１５０に移行して、スロットルモータ２４の制御を停止し、その後Ｓ１２０へ戻る。
つまり、メインＣＰＵ２０は、内燃機関の冷却水温，ペダル開度，及び自動変速機のギア位置に基づきスロットル開度を算出し（Ｓ１２０）、通常時には、スロットル弁６の開度が上記算出したスロットル開度となるようにスロットルモータ２４を制御するのであるが（Ｓ１４０）、サブＣＰＵ３０からの制御停止指令を受けると（Ｓ１３０：ＹＥＳ）、スロットルモータ２４の制御を停止して（Ｓ１５０）、スロットル弁６の開度がアクセルペダル８の踏込量だけに応じて調節される無制御状態の動作モード（異常発生時の動作モード）に移行するようにしている。
【００５７】
一方、メインＣＰＵ２０は、上記Ｓ１２０で算出したスロットル開度を、図示しない一定時間毎の割り込み処理により、シリアル通信ライン３８を介してサブＣＰＵ３０へ送信するようにしている。尚、サブＣＰＵ３０からの上記制御停止指令も、この割り込み処理によって受信する。
【００５８】
次に、図３は、サブＣＰＵ３０が実行する処理（サブＣＰＵ処理）を表すフローチャートである。尚、このサブＣＰＵ処理も、車両のイグニッションスイッチがオンされると実行が開始される。また、図３において、Ｓ３００〜Ｓ５００の処理は、常時繰り返して実行されるように表されているが、実際には予め定められた所定時間毎に実行される。
【００５９】
図３に示すように、サブＣＰＵ３０は、当該処理の実行を開始すると、まずＳ２００にて、内部の諸データを初期化するための初期化処理を実行する。そして、続くＳ３００にて、メインＣＰＵ２０が正常に動作しているか否かを監視するための図４に示す監視処理（メインＣＰＵの監視処理）を実行する。
【００６０】
即ち、図４に示す如く監視処理の実行が開始されると、まずＳ３１０にて、入力回路１６からの信号に基づき、内燃機関の冷却水温，ペダル開度，及び自動変速機のギア位置を検出し、その各検出値を表すデータと、メインＣＰＵ２０から前述の如く送信されて来るスロットル開度（以下、メインＣＰＵスロットル開度という）とを、外部からの入力データとして、ワークＲＡＭ３２ｗ内の記憶領域ＷＴ，ＷＰ，ＷＧ，ＷＭＳに夫々格納する。尚、本実施例では、上記各記憶領域ＷＴ，ＷＰ，ＷＧ，ＷＭＳが、データ記憶領域に相当しており、水温を示すデータが記憶領域ＷＴに格納され、ペダル開度を示すデータが記憶領域ＷＰに格納され、ギア位置を示すデータが記憶領域ＷＧに格納され、メインＣＰＵスロットル開度を示すデータが記憶領域ＷＭＳに格納される。
【００６１】
そして、次のＳ３２０にて、メインＣＰＵ２０の動作が正常であるか否かを判定するための監視サブルーチンをコールして実行する。
この監視サブルーチンの実行が開始されると、まずＳ３２２にて、ワークＲＡＭ３２ｗの記憶領域ＷＴ，ＷＰ，ＷＧに夫々格納されているデータ（つまり、水温，ペダル位置，及びギア位置を夫々示すデータ）を、メインＣＰＵ２０が図２のＳ１２０でスロットル開度を算出するのに用いる式と全く同じ演算式ｆに代入して、制御目標値であるスロットル開度を算出し、その算出したスロットル開度を、ワークＲＡＭ３２ｗ内の記憶領域ＷＳＳに格納する。
【００６２】
そして、続くＳ３２４にて、記憶領域ＷＳＳに格納したスロットル開度（即ち、自己が算出したスロットル開度）と、記憶領域ＷＭＳに格納されているメインＣＰＵスロットル開度（即ち、メインＣＰＵ２０が算出したスロットル開度）とが一致しているか否かを判定し、両スロットル開度が一致していると判定した場合には、続くＳ３２６にて、ワークＲＡＭ３２ｗ内の記憶領域ＷＨに、メインＣＰＵ２０が正常であることを示す判定データを格納して、当該監視サブルーチンの実行を終了する。
【００６３】
一方、Ｓ３２４にて、２つの記憶領域ＷＳＳ，ＷＭＳに格納された両スロットル開度が一致していないと判定した場合には、Ｓ３２８に移行して、上記記憶領域ＷＨに、メインＣＰＵ２０が異常であることを示す判定データを格納して、当該監視サブルーチンの実行を終了する。
【００６４】
このようにして監視サブルーチンの実行が終わると、メインＣＰＵの監視処理では、次のＳ３３０に進み、監視サブルーチンを実行したことによりワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納されたスロットル開度の算出結果を、制御データＲＡＭ３２ｃ内の記憶領域ＣＳＳに格納すると共に、監視サブルーチンを実行したことによりワークＲＡＭ３２ｗの記憶領域ＷＨに格納された判定データ（以下、判定結果という）を、制御データＲＡＭ３２ｃ内の記憶領域ＣＨに格納する。尚、本実施例では、制御データＲＡＭ３２ｃ内の上記各記憶領域ＣＳＳ，ＣＨが、特定の記憶領域に相当している。
【００６５】
そして、続くＳ３４０にて、制御データＲＡＭ３２ｃの記憶領域ＣＨに格納された判定結果が、異常を示しているか否かを判定し、異常を示していない場合には、当該監視処理をそのまま終了する。
また、Ｓ３４０にて肯定判定した場合、即ち上記記憶領域ＣＨに格納された判定結果が異常を示していると判定した場合には、Ｓ３５０に進み、Ｓ３４０での肯定判定が所定回数だけ継続したか否かを判定する。そして、所定回数だけ継続していなければ、当該監視処理をそのまま終了するが、所定回数継続した場合には、Ｓ３６０に進んで、メインＣＰＵ２０へ前述した制御停止指令を送信して、その後、当該監視処理を終了する。
【００６６】
つまり、この監視処理では、ワークＲＡＭ３２ｗの記憶領域ＷＴ，ＷＰ，ＷＧ，ＷＭＳに、夫々、水温，ペダル位置，ギア位置，及びメインＣＰＵスロットル開度を示すデータを格納して（Ｓ３１０）、監視サブルーチンをコールすることにより（Ｓ３２０）、メインＣＰＵ２０と全く同様に制御目標値であるスロットル開度を算出すると共に、その算出したスロットル開度とメインＣＰＵ２０が算出したスロットル開度（メインＣＰＵスロットル開度）とを比較して、メインＣＰＵ２０の動作が正常であるか否かを判定するようにしている。
【００６７】
そして、監視サブルーチンを実行したことによる処理結果であるスロットル開度の算出結果と、メインＣＰＵ２０の動作が正常であるか否かの判定結果とを、制御データＲＡＭ３２ｃ内の記憶領域ＣＳＳ，ＣＨに夫々格納し（Ｓ３３０）、記憶領域ＣＨに格納された判定結果が所定回数継続して異常を示している場合には（Ｓ３４０及びＳ３５０：ＹＥＳ）、メインＣＰＵ２０へ制御停止指令を送信して、メインＣＰＵ２０の動作モードを、スロットル弁６に対する無制御状態の動作モードに移行させるようにしている（Ｓ３６０）。
【００６８】
このようにして監視処理の実行が終了すると、図３に示すようにサブＣＰＵ処理では、Ｓ４００に進む。そして、このＳ４００にて、本実施例に特有の図５に示すロジック判定処理を実行する。
即ち、図５に示す如くロジック判定処理の実行が開始されると、まずＳ４１０にて、ＲＯＭ２８に予め内蔵されたダミーデータマップを読み込む。
【００６９】
ここで、このダミーデータマップは、当該サブＣＰＵ３０によって所定のサブルーチンが正確に実行されるか否かをチェックするために設けられたものであり、図６に示すように、予め値が設定された疑似入力データとしてのダミー入力データと、チェック対象のサブルーチン（チェックサブルーチン）を示すチェックサブルーチン名と、ダミー入力データに基づきチェックサブルーチンを実行した場合に得られるべきである処理結果としての期待値データとから構成されている。
【００７０】
そして、本実施例では、当該ロジック判定処理によって、図４の監視処理でコールされる監視サブルーチンの実行状態をチェックするようにしているため、図６に示すように、ダミーデータマップのチェックサブルーチン名は、「監視サブルーチン」となっている。そして、ダミー入力データとしては、水温のダミー入力データであるダミー値１と、ペダル開度のダミー入力データであるダミー値２と、ギア位置のダミー入力データであるダミー値３と、メインＣＰＵスロットル開度のダミー入力データであるダミー値４とが用意されており、これらに対応して、期待値データとしては、スロットル開度の期待値データである期待値１と、メインＣＰＵ２０が正常であるか否かの判定結果の期待値データである期待値２とが用意されている。
【００７１】
また、本実施例では、監視サブルーチンの実行時にＳ３２４で肯定判定されてＳ３２６の処理が正確に行われるか否かを検査するための図６（Ａ）に示すダミーデータマップ１と、逆にＳ３２４で否定判定されてＳ３２８の処理が正確に行われるか否かを検査するための図６（Ｂ）に示すダミーデータマップ２との、２つのダミーデータマップがＲＯＭ２８に内蔵されており、上記Ｓ４１０では、その実行毎に、ダミーデータマップ１，２を１つずつ読み込むようにしている。
【００７２】
そして、ロジック判定処理では、Ｓ４１０でダミーデータマップを読み込むと、続くＳ４２０にて、Ｓ４１０で読み込んだダミーデータマップに用意された４つのダミー値１，２，３，４を、夫々、ワークＲＡＭ３２ｗ内の記憶領域ＷＴ，ＷＰ，ＷＧ，ＷＭＳに格納し、続くＳ４３０にて、Ｓ４１０で読み込んだダミーデータマップのチェックサブルーチン名に対応するサブルーチン（即ち、本実施例では図４に示したＳ３２２〜Ｓ３２８の監視サブルーチン）をコールして実行する。
【００７３】
すると、この場合の監視サブルーチンの実行においては、まずＳ３２２にて、ワークＲＡＭ３２ｗの記憶領域ＷＴ，ＷＰ，ＷＧに夫々格納されたダミー値１，２，３に基づきスロットル開度を算出して、その算出値をワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納することとなり、続くＳ３２４では、上記記憶領域ＷＳＳに格納したダミー値１，２，３に基づくスロットル開度と、ワークＲＡＭ３２ｗの記憶領域ＷＭＳに格納されたダミー値４とが一致しているか否かを判定することとなる。そして、Ｓ３２４の分岐判定に応じてＳ３２６或いはＳ３２８の処理を実行し、ワークＲＡＭ３２ｗの記憶領域ＷＨに、メインＣＰＵ２０が正常或いは異常であることを示す判定結果を格納することとなる。
【００７４】
このようにして監視サブルーチンの実行が終わると、次のＳ４４０にて、Ｓ４１０で読み込んだダミーデータマップに用意された２つの期待値１，２を、ワークＲＡＭ３２ｗ内の２つの記憶領域ＷＫＳ，ＷＫＨに夫々格納する。
そして、続くＳ４５０にて、上記記憶領域ＷＫＳに格納された値（即ち、スロットル開度の期待値データである期待値１）と、ワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納されている値（即ち、監視サブルーチンのＳ３２２でダミー値１，２，３に基づき算出されたスロットル開度）とが一致しているか否かを判定し、２つの記憶領域ＷＫＳ，ＷＳＳに格納されている値が一致していると判定した場合には、Ｓ４６０に進む。
【００７５】
Ｓ４６０では、上記記憶領域ＷＫＨに格納された値（即ち、メインＣＰＵ２０が正常であるか否かの判定結果の期待値データである期待値２）と、ワークＲＡＭ３２ｗの記憶領域ＷＨに格納されている値（即ち、監視サブルーチンにおけるＳ３２４の分岐判定に応じて記憶領域ＷＨに格納された判定結果）とが一致しているか否かを判定し、２つの記憶領域ＷＫＨ，ＷＨに格納されている値が一致していると判定した場合には、そのままＳ４７０進む。
【００７６】
そして、Ｓ４７０では、ＲＯＭ２８内に他のダミーデータマップが有るか否かを判定し、他のダミーデータマップが有る場合には、Ｓ４１０に戻って、そのダミーデータマップを読み込む。また、Ｓ４７０で他のダミーデータマップが無いと判定した場合には、当該ロジック判定処理を終了する。
【００７７】
一方、Ｓ４５０にて、２つの記憶領域ＷＫＳ，ＷＳＳに格納されている値が一致していないと判定するか、或いは、Ｓ４６０にて、２つの記憶領域ＷＫＨ，ＷＨに格納されている値が一致していないと判定した場合には、監視サブルーチンが正確に実行されていないと判断して、Ｓ４８０に移行する。そして、このＳ４８０にて、制御データＲＡＭ３２ｃ内のフェールセーフ実施フラグをセット（オン）し、その後、前述したＳ４７０に進んで、他のダミーデータマップが有ればＳ４１０に戻り、他のダミーデータマップが無ければ当該ロジック判定処理を終了する。
【００７８】
このようにしてロジック判定処理の実行が終了すると、図３に示すようにサブＣＰＵ処理では、Ｓ５００に進む。そして、このＳ５００にて、フェールセーフ実施フラグがセット（オン）されているか否かを判定し、フェールセーフ実施フラグがセットされていなければ、Ｓ３００に戻って、メインＣＰＵの監視処理を再び実行する。
【００７９】
これに対し、Ｓ５００でフェールセーフ実施フラグがセットされていると判定した場合には、Ｓ３００に戻ることなくＳ６００に移行して、監視ＩＣ３４へ定期的に出力しているウォッチドックパルスＷ／Ｄ２を停止する。すると、当該サブＣＰＵ３０は、やがて監視ＩＣ３４から出力されるリセット信号ＲＳＴ２によってリセットされ、その後、図３のサブＣＰＵ処理を最初のＳ２００から再度実行することとなる。
【００８０】
次に、図５のロジック判定処理により、図４に示した監視サブルーチンの実行状態がどの様にチェックされるかについて、具体的に説明する。
まず、ロジック判定処理のＳ４１０で、図６（Ａ）のダミーデータマップ１が読み込まれた場合について説明する。
【００８１】
この場合には、Ｓ４２０にて、ワークＲＡＭ３２ｗの記憶領域ＷＴに、水温のダミー入力データとして「４０℃」が格納され、ワークＲＡＭ３２ｗの記憶領域ＷＰに、ペダル開度のダミー入力データとして「２．０ｄｅｇ」が格納され、ワークＲＡＭ３２ｗの記憶領域ＷＧに、ギア位置のダミー入力データとして「パーキング」が格納され、ワークＲＡＭ３２ｗの記憶領域ＷＭＳに、メインＣＰＵスロットル開度のダミー入力データとして「２．５ｄｅｇ」が格納される。
【００８２】
ここで、図６（Ａ）のダミーデータマップ１にて、スロットル開度の期待値データ（期待値１）が「２．５ｄｅｇ」に設定されていることから分かるように、メインＣＰＵ処理のＳ１２０及び監視サブルーチンのＳ３２２で用いられている演算式ｆに、ダミーデータマップ１で用意された水温＝「４０℃」，ペダル開度＝「２．０ｄｅｇ」，ギア位置＝「パーキング」のダミー入力データを代入すると、算出されるスロットル開度は「２．５ｄｅｇ」となるはずである。
【００８３】
よって、Ｓ４３０で監視サブルーチンがコールされて、監視サブルーチンのＳ３２２が正確に実行されたならば、そのＳ３２２でワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納されるスロットル開度は「２．５ｄｅｇ」となる。また更に、監視サブルーチンのＳ３２４以降も正確に実行されたならば、この時、ワークＲＡＭ３２ｗの記憶領域ＷＭＳには、メインＣＰＵスロットル開度のダミー入力データとして「２．５ｄｅｇ」が格納されているため、Ｓ３２４にて、ワークＲＡＭ３２ｗの記憶領域ＷＳＳと記憶領域ＷＭＳとに夫々格納されているスロットル開度が一致していると肯定判定され、Ｓ３２６にて、ワークＲＡＭ３２ｗの記憶領域ＷＨに、メインＣＰＵ２０が正常であることを示す判定結果が格納されることとなる。
【００８４】
一方、監視サブルーチンを実行した後のＳ４４０では、ワークＲＡＭ３２ｗの記憶領域ＷＫＳに、スロットル開度の期待値データとして「２．５ｄｅｇ」が格納され、また、ワークＲＡＭ３２ｗの記憶領域ＷＫＨに、判定結果の期待値データとして「正常」が格納される。
【００８５】
従って、前述したように監視サブルーチンの全ステップが正確に実行されたならば、ロジック判定処理では、Ｓ４５０にて、ワークＲＡＭ３２ｗの記憶領域ＷＫＳに格納された値（スロットル開度の期待値データ＝「２．５ｄｅｇ」）と、ワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納されている値（監視サブルーチンのＳ３２２で算出されたスロットル開度＝「２．５ｄｅｇ」）とが一致していると肯定判定され、続く４６０にて、ワークＲＡＭ３２ｗの記憶領域ＷＫＨに格納された値（判定結果の期待値データ＝「正常」）と、ワークＲＡＭ３２ｗの記憶領域ＷＨに格納されている値（監視サブルーチンのＳ３２４で肯定判定されてＳ３２６で記憶領域ＷＨに格納された判定結果＝「正常」）とが一致していると肯定判定され、この結果、監視サブルーチンが正確に実行されていると判断される。
【００８６】
これに対して、例えば監視サブルーチンのＳ３２２が正確に実行されなければ、そのＳ３２２でワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納されるスロットル開度が「２．５ｄｅｇ」とならないため、ロジック判定処理のＳ４５０で否定判定される。また、監視サブルーチンのＳ３２２が正確に実行されたとしても、Ｓ３２４の判定処理で正確に肯定判定されなかったり、Ｓ３２６の処理が確実に実行されなければ、ワークＲＡＭ３２ｗの記憶領域ＷＨに、メインＣＰＵ２０が正常であることを示す判定結果が格納されないため、ロジック判定処理のＳ４６０で否定判定される。
【００８７】
そして、上記Ｓ４５０或いはＳ４６０で否定判定されると、監視サブルーチンが正確に実行されていないと判断されて、Ｓ４８０でフェールセーフ実施フラグがセットされ、前述したように、当該サブＣＰＵ３０が監視ＩＣ３４によってリセットされる。
【００８８】
つまり、ダミーデータマップ１に用意されたダミー入力データは、監視サブルーチンにおいてＳ３２４で肯定判定される場合の処理経路（Ｓ３２２→Ｓ３２４：ＹＥＳ→Ｓ３２６）が実行されるように設定されており、ロジック判定処理のＳ４１０でダミーデータマップ１を読み込んだ場合には、Ｓ３２４で肯定判定される場合の上記処理経路が全て正確に実行されて初めて、監視サブルーチンが正確に実行されたと判断される。
【００８９】
次に、ロジック判定処理のＳ４１０で、図６（Ｂ）のダミーデータマップ２が読み込まれた場合には、Ｓ４２０にて、ワークＲＡＭ３２ｗの記憶領域ＷＴに、水温のダミー入力データとして「６０℃」が格納され、ワークＲＡＭ３２ｗの記憶領域ＷＰに、ペダル開度のダミー入力データとして「７．０ｄｅｇ」が格納され、ワークＲＡＭ３２ｗの記憶領域ＷＧに、ギア位置のダミー入力データとして「３速」が格納され、ワークＲＡＭ３２ｗの記憶領域ＷＭＳに、メインＣＰＵスロットル開度のダミー入力データとして「１０．０ｄｅｇ」が格納される。
【００９０】
ここで、図６（Ｂ）のダミーデータマップ２にて、スロットル開度の期待値データ（期待値１）が「８．０ｄｅｇ」に設定されていることから分かるように、メインＣＰＵ処理のＳ１２０及び監視サブルーチンのＳ３２２で用いられている演算式ｆに、ダミーデータマップ２で用意された水温＝「６０℃」，ペダル開度＝「７．０ｄｅｇ」，ギア位置＝「３速」のダミー入力データを代入すると、算出されるスロットル開度は「８．０ｄｅｇ」となるはずである。
【００９１】
よって、Ｓ４３０で監視サブルーチンがコールされて、監視サブルーチンのＳ３２２が正確に実行されたならば、そのＳ３２２でワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納されるスロットル開度は「８．０ｄｅｇ」となる。また更に、監視サブルーチンのＳ３２４以降も正確に実行されたならば、この時、ワークＲＡＭ３２ｗの記憶領域ＷＭＳには、メインＣＰＵスロットル開度のダミー入力データとして「１０．０ｄｅｇ」が格納されているため、Ｓ３２４にて、ワークＲＡＭ３２ｗの記憶領域ＷＳＳと記憶領域ＷＭＳとに夫々格納されているスロットル開度が一致していないと否定判定され、Ｓ３２８にて、ワークＲＡＭ３２ｗの記憶領域ＷＨに、メインＣＰＵ２０が異常であることを示す判定結果が格納されることとなる。
【００９２】
一方、監視サブルーチンを実行した後のＳ４４０では、ワークＲＡＭ３２ｗの記憶領域ＷＫＳに、スロットル開度の期待値データとして「８．０ｄｅｇ」が格納され、また、ワークＲＡＭ３２ｗの記憶領域ＷＫＨに、判定結果の期待値データとして「異常」が格納される。
【００９３】
従って、前述したように監視サブルーチンの全ステップが正確に実行されたならば、ロジック判定処理では、Ｓ４５０にて、ワークＲＡＭ３２ｗの記憶領域ＷＫＳに格納された値（スロットル開度の期待値データ＝「８．０ｄｅｇ」）と、ワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納されている値（監視サブルーチンのＳ３２２で算出されたスロットル開度＝「８．０ｄｅｇ」）とが一致していると肯定判定され、続く４６０にて、ワークＲＡＭ３２ｗの記憶領域ＷＫＨに格納された値（判定結果の期待値データ＝「異常」）と、ワークＲＡＭ３２ｗの記憶領域ＷＨに格納されている値（監視サブルーチンのＳ３２４で否定判定されてＳ３２８で記憶領域ＷＨに格納された判定結果＝「異常」）とが一致していると判定され、この結果、監視サブルーチンが正確に実行されていると判断される。
【００９４】
これに対して、例えば監視サブルーチンのＳ３２２が正確に実行されなければ、そのＳ３２２でワークＲＡＭ３２ｗの記憶領域ＷＳＳに格納されるスロットル開度が「８．０ｄｅｇ」とならないため、ロジック判定処理のＳ４５０で否定判定される。また、監視サブルーチンのＳ３２２が正確に実行されたとしても、Ｓ３２４の判定処理で正確に否定判定されなかったり、Ｓ３２８の処理が確実に実行されなければ、ワークＲＡＭ３２ｗの記憶領域ＷＨに、メインＣＰＵ２０が異常であることを示す判定結果が格納されないため、ロジック判定処理のＳ４６０で否定判定される。
【００９５】
そして、ダミーデータマップ１の場合と全く同様に、上記Ｓ４５０或いはＳ４６０で否定判定されると、監視サブルーチンが正確に実行されていないと判断されて、Ｓ４８０でフェールセーフ実施フラグがセットされ、当該サブＣＰＵ３０が監視ＩＣ３４によってリセットされる。
【００９６】
つまり、ダミーデータマップ２に用意されたダミー入力データは、監視サブルーチンにおいてＳ３２４で否定判定される場合の処理経路（Ｓ３２２→Ｓ３２４：ＮＯ→Ｓ３２８）が実行されるように設定されており、ロジック判定処理のＳ４１０でダミーデータマップ２を読み込んだ場合には、Ｓ３２４で否定判定される場合の上記処理経路が全て正確に実行されて初めて、監視サブルーチンが正確に実行されたと判断される。
【００９７】
そして、このようにロジック判定処理のＳ４１０でダミーデータマップ２を読み込んだ場合と、前述の如くダミーデータマップ１を読み込んだ場合との、２通りのチェックにより、監視サブルーチンの全経路の処理が正確に実行されるか否かが検査されるのである。
【００９８】
尚、本実施例では、ＲＯＭ２８に内臓された監視サブルーチン（Ｓ３２２〜Ｓ３２８）を構成するプログラムデータとサブＣＰＵ３０自体が、予め定められた処理を実行する処理手段に相当しており、サブＣＰＵ３０が実行する監視処理中のＳ３１０，Ｓ３２０，及びＳ３３０が、処理実行制御手段に相当し、サブＣＰＵ３０が実行する監視処理中のＳ３４０，Ｓ３５０，及びＳ３６０が、信号出力手段に相当している。そして、ダミーデータマップ１，２を内臓するＲＯＭ２８が、検査データ記憶手段に相当し、サブＣＰＵ３０が実行するロジック判定処理（Ｓ４１０〜Ｓ４８０）及びサブＣＰＵ処理中のＳ５００，Ｓ６００が、検査実行手段に相当している。
【００９９】
以上詳述したように、本実施例の制御装置２では、内燃機関を実際に制御するメインＣＰＵ２０とは別にサブＣＰＵ３０を設けており、このサブＣＰＵ３０が、メインＣＰＵの監視処理（図４）にて、監視サブルーチンをコールして実行することにより、メインＣＰＵ２０の動作が正常であるか否かを監視し、メインＣＰＵ２０の動作が異常であると判断すると、メインＣＰＵ２０へ制御停止指令を送信して、メインＣＰＵ２０が不適当な制御を行うことを防止している。
【０１００】
そして特に、本実施例の制御装置２では、サブＣＰＵ３０が監視サブルーチンを実行する際のパラメータである水温，ペダル位置，ギア位置，及びメインＣＰＵスロットル開度のダミー入力データと、そのダミー入力データに基づき監視サブルーチンを実行した場合に得られるべきである処理結果としての期待値データとを、ダミーデータマップ１，２として予めＲＯＭ２８に内臓しており、サブＣＰＵ３０が、上記監視処理と交互に実行するロジック判定処理（図５）にて、ワークＲＡＭ３２ｗの記憶領域ＷＴ，ＷＰ，ＷＧ，ＷＭＳにダミー入力データを格納して（Ｓ４２０）、監視サブルーチンをコールし（Ｓ４３０）、その処理結果と上記期待値データとが一致していなければ、監視サブルーチンが正確に実行されていないと判断するようにしている（Ｓ４５０：ＮＯ，Ｓ４６０：ＮＯ）。
【０１０１】
このような本実施例の制御装置２によれば、監視サブルーチンを実際にコールして実行することで、監視サブルーチンが正確に実行されているか否かを判定することができるため、監視サブルーチンを構成するＲＯＭ２８内のプログラムデータやサブＣＰＵ３０の機能に異常が生じてメインＣＰＵ２０を監視するための処理を正確に実行できなくなったことを、確実に検出することができる。
【０１０２】
そして、本実施例のサブＣＰＵ３０では、監視サブルーチンが正確に実行されていないと判断すると、監視処理の実行を止めてメインＣＰＵ２０へ制御停止指令を送信しないようにすると共に、監視ＩＣ３４へのウォッチドックパルスＷ／Ｄ２を停止して、自分（サブＣＰＵ３０）が監視ＩＣ３４によってリセットされるようにしている（Ｓ４８０，Ｓ５００：ＹＥＳ，Ｓ６００）。
【０１０３】
従って、本実施例の制御装置２によれば、メインＣＰＵ２０が正常であるにもかかわらず、メインＣＰＵ２０へ制御停止指令を誤って送信してしまうことを防止でき、メインＣＰＵ２０の動作状態を監視する際の信頼性を向上させることができる。
【０１０４】
また、本実施例のサブＣＰＵ３０では、既述したように、図４の監視処理において、監視サブルーチンの処理結果であるスロットル開度の算出結果とメインＣＰＵ２０の動作が正常であるか否かの判定結果とを、ワークＲＡＭ３２ｗとは異なる制御データＲＡＭ３２ｃ内の記憶領域ＣＳＳ，ＣＨに夫々格納し（Ｓ３３０）、その制御データＲＡＭ３２ｃ内の記憶領域ＣＨに格納された判定結果に基づいて、メインＣＰＵ２０へ制御停止指令を送信するか否かを決定するようにしている（Ｓ３４０〜Ｓ３６０）。
【０１０５】
このような本実施例のサブＣＰＵ３０によれば、監視処理におけるＳ３４０〜Ｓ３６０の処理を、どの様なタイミングで実行するようにしても、制御停止指令は、外部からの本来の入力データに基づき監視サブルーチンが実行された場合の処理結果だけに基づいて送信されることとなり、ダミー入力データを用いて監視サブルーチンを実行することによる影響を完全に無くすことができる。また、例えば、制御データＲＡＭ３２ｃ内の記憶領域ＣＳＳに格納されたスロットル開度の算出結果に基づき、図示しない他の処理を実行して所定の信号を出力する場合には、その処理をどの様なタイミングで実行するようにしても、出力される信号は、外部からの本来の入力データに応じたものとなり、ダミー入力データを用いて監視サブルーチンを実行することによる影響を完全に無くすことができる。
【０１０６】
一方更に、本実施例では、監視サブルーチンにおいてＳ３２４で肯定判定される場合の処理経路が実行されるように設定されたダミー入力データを有するダミーデータマップ１と、監視サブルーチンにおいてＳ３２４で否定判定される場合の処理経路が実行されるように設定されたダミー入力データを有するダミーデータマップ２との、２種類のダミーデータマップをＲＯＭ２８内に用意して、監視サブルーチンの全経路の処理が正確に実行されるか否かを検査するようにしている。よって、監視サブルーチンを正確に実行できなくなったことを、一層確実に検出することができる。
【０１０７】
また、本実施例のサブＣＰＵ３０では、図５のロジック判定処理を所定時間毎に実行するようにしているため、当該サブＣＰＵ３０が動作している途中で、監視サブルーチンのプログラムデータやサブＣＰＵ３０の機能に異常が生じこと、即ち、メインＣＰＵ２０を監視するための処理を正確に実行できなくなったことを、確実に検出できる。
【０１０８】
尚、上記実施例では、メインＣＰＵ２０が正常か否かを監視するための監視サブルーチンの実行状態をチェックするようにしたが、チェックする対象のサブルーチンは、当然、他の処理を行うものでも良い。
また、メインＣＰＵ２０で制御対象を制御するために実行される所定のサブルーチンの実行状態をチェックするために、メインＣＰＵ２０が、図５のロジック判定処理と同様の処理を実行するようにしても良い。そして、このように構成すれば、制御処理が正確に実行されなくなったことを確実に検出することができ、制御の信頼性を大幅に向上させることができる。
【０１０９】
一方、チェック対象であるサブルーチンが、制御対象を制御する上などで非常に重要なものであれば、図５のロジック判定処理は、ＣＰＵが初期状態から動作を開始した直後に実行するようにしても良い。そして、このようにすれば、不適当な制御を行ってしまうことを、事前に且つ確実に防止することができる。
【０１１０】
また、上記実施例では、図５のＳ４５０にて、ダミー入力データに基づき算出されたスロットル開度（記憶領域ＷＳＳ内の値）と、スロットル開度の期待値データ（記憶領域ＷＫＳ内の値）とが、完全に一致しているか否かを判定するようにしたが、演算誤差を考慮して、両値の差が所定範囲内ならば正常と判定するようにしても良い。
【０１１１】
［第２実施例］
次に、図７は、第２実施例のエンジン制御装置４０及びその周辺装置の構成を表す構成図であり、この制御装置４０は、前述した第１実施例の制御装置２と比較して、ハードウェア上、主に以下の（１）〜（７）の点が異なっている。
【０１１２】
（１）入力回路１６には、ペダル開度センサ１０及び水温センサ１４以外にも、内燃機関の排気経路に設けられたＯ2 センサ４２，内燃機関のクランク軸が所定角度回転する毎にパルス信号を出力する回転角センサ４４，内燃機関に生じたノッキングを検出するノックセンサ４６，及び内燃機関の排気温度を検出する排気温センサ４８などの、各種センサからの信号が入力されている。尚、これら各種センサからの信号は、第１実施例の場合と同様に、入力回路１６を介して、メインＣＰＵ２０とサブＣＰＵ３０の両方に入力される。
【０１１３】
（２）トランスミッションＥＣＵ１２を始め、アンチスキッド制御を行う制御装置（以下、ＡＢＳ・ＥＣＵという）５０や、運転席正面のメータパネルの表示を制御する制御装置（以下、インパネＥＣＵという）５２などの、他の電子制御装置と通信を行うための通信ＩＣ５４を備えており、この通信ＩＣ５４は、車両内でＬＡＮを構築するための通信ライン５６を介して上記他の電子制御装置に接続されている。そして、メインＣＰＵ２０が、通信ＩＣ５４を介して、上記他の電子制御装置との間で情報交換を行い、その通信で取得した情報は、メインＣＰＵ２０からシリアル通信ライン３８を介してサブＣＰＵ３０へも提供されるようになっている。
【０１１４】
（３）サブＣＰＵ３０は、メインＣＰＵ２０が正常に動作しているか否かを監視すると共に、内燃機関に対する燃料噴射制御や点火制御を行う。このため、当該制御装置４０には、サブＣＰＵ３０からの噴射指令に応じてインジェクタなどの燃料噴射装置６０を駆動する出力回路５８と、サブＣＰＵ３０からの点火指令に応じてイグナイタなどの点火装置６４を駆動する出力回路６２とが設けられている。
【０１１５】
（４）監視ＩＣ３４は、ウォッチドックパルスＷ／Ｄ２によるサブＣＰＵ３０の監視を行うだけではなく、サブＣＰＵ３０からのウォッチドックパルスＷ／Ｄ２が途絶えた場合に、サブＣＰＵ３０に代わり上記両出力回路５８，６２へ予め定められた固定の噴射指令と点火指令をハードウェア的に出力して、車両の最低限の走行を確保するバックアップ機能を備えている。
【０１１６】
（５）制御装置４０は、当該装置４０に異常があるか否かを診断するための診断装置６６と着脱自在に接続されるようになっており、このため上記診断装置６６との間で通信を行うための通信回路６８が設けられている。
（６）内燃機関の吸気系４には、スロットル弁６をバイパスするバイパス経路４ａが設けられており、このバイパス経路４ａにより所定量の空気が常に内燃機関へ供給されるようになっている。そして、このバイパス経路４ａにより、スロットル弁６が全閉状態で停止するような異常が生じた場合でも、内燃機関を継続して動作させることが可能である。
【０１１７】
（７）サブＣＰＵ３０の出力ポートのうち、メインＣＰＵ２０へリセット信号ＲＳＴ１を出力するための出力ポートは、当該サブＣＰＵ３０が監視ＩＣ３４からのリセット信号ＲＳＴ２によってリセットされると、メインＣＰＵ２０をリセットする側のレベルに初期化される。このため、サブＣＰＵ３０がリセットされると、メインＣＰＵ２０もリセットされることとなる。
【０１１８】
次に、本第２実施例の制御装置４０においては、メインＣＰＵ２０が、車両の運転性や安全性を向上させるための付加的な制御を実施し、サブＣＰＵ３０が、車両を走行させるための基本的な制御を実施している。
そこで、メインＣＰＵ２０とサブＣＰＵ３０が夫々行う処理の内容について説明する。
【０１１９】
まず、メインＣＰＵ２０は、第１実施例で説明した図２の処理を実行することで、内燃機関の冷却水温，ペダル開度，及び自動変速機のギア位置に基づき、スロットル弁６の開度を制御するが、この処理において、ペダル開度が「０」のとき、即ちアクセルペダル８が操作されていないときには、内燃機関のアイドル回転数が最適な回転数となるようにスロットル弁６の開度を制御する、いわゆるアイドルスピード制御（ＩＳＣ）も行っている。
【０１２０】
また、メインＣＰＵ２０は、通信ライン５６及び通信ＩＣ５４を介して、トランスミッションＥＣＵ１２から自動変速機のギア位置などの変速情報を取得すると共に、ＡＢＳ・ＥＣＵ５０から車速情報を取得している。そして、その取得した情報に基づき、車両の運転状態に適したエンジントルクを発生するように（具体的には、例えば変速時のショックを和らげるように）スロットル弁６の開度を制御する、いわゆるトラクション制御も行っている。
【０１２１】
また更に、メインＣＰＵ２０は、図示されないオートクルーズスイッチがオンされた場合に、ＡＢＳ・ＥＣＵ５０からの車速情報に基づき、実際の車速が車両運転者により設定された目標車速となるようにスロットル弁６の開度を制御する、いわゆるオートクルーズ制御も行っている。
【０１２２】
一方、メインＣＰＵ２０は、スロットル弁６に関する制御以外に、通信ＩＣ５４を介してトランスミッションＥＣＵ１２などの他の電子制御装置と通信を行うための通信制御と、内燃機関の排気ガスを吸気系４に再循環させて排気ガスに含まれるＮＯx を低減する、いわゆるＥＧＲ（Exhaust Gas Recirculation ）制御と、内燃機関の全回転域でトルク出力を有効に発生できるように内燃機関の吸排気バルブの開閉タイミングを制御する、いわゆる可変バルブタイミング（ＶＶＴ：Variable Valve Timing ）制御と、各種センサからのセンサ信号やサブＣＰＵ３０からの情報などに基づき車両各部の状態を監視して異常がある場合にその異常情報を記憶し、前述した診断装置６６が接続された場合に上記記憶した異常情報を通信回路６８を介して診断装置６６へ出力する、いわゆるダイアグノシス処理とを実施している。
【０１２３】
尚、ＥＧＲ制御は、内燃機関の排気経路と吸気系４とを結ぶ連絡通路に設けられたＥＧＲ弁７０を、所定条件の成立時に開弁駆動することにより行われる。また、ＶＶＴ制御は、内燃機関の回転数や負荷に応じてＶＶＴ制御用のアクチュエータ７２を駆動することにより行われるが、何等かの原因でメインＣＰＵ２０の動作が停止した場合には、図示されないメカニカルな機構により、吸排気バルブの開閉タイミングは、走行に支障をきたさない所定のタイミングに設定されるようになっている。一方、メインＣＰＵ２０は、サブＣＰＵ３０からの制御停止指令を受けてスロットル弁６に対する制御を停止した場合には、通信ＩＣ５４から通信ライン５６を介してインパネＥＣＵ５２へ警告信号を出力し、その警告信号を受けたインパネＥＣＵ５２がメータパネルに配置された所定の警告灯Ｌを点灯させて、車両運転者に対し異常の発生を報知するようになっている。
【０１２４】
次に、サブＣＰＵ３０は、図８に示す如く通常の燃料噴射制御処理（Ｓ７００）と点火制御処理（Ｓ７１０）を繰り返し実行することにより、内燃機関に対する燃料噴射制御と点火制御を行っている。尚、サブＣＰＵ３０は、点火制御を行う際に、ノックセンサ４６からの信号に基づき内燃機関のノッキングを検出し、その検出結果に応じてノッキングが抑制されるように点火時期を補正する、いわゆるノック補正制御も行っている。そして、これらの制御と並行して、ウォッチドックパルスＷ／Ｄ１の有無によりメインＣＰＵ２０の動作を監視する処理と、第１実施例で説明した図４及び図５の処理を含んだ図３の処理を実行している。
【０１２５】
そして更に、本第２実施例のサブＣＰＵ３０は、メインＣＰＵ２０がトラクション制御とオートクルーズ制御を夫々行うために実行する各処理に対しても、図３の処理と同様の処理を実行している。
つまり、サブＣＰＵ３０は、メインＣＰＵ２０にてトラクション制御用の処理が正確に実行されているか否かを監視する図４と同様の監視処理（以下、監視処理Ａという）、及び、その監視処理Ａを自分自身が正確に実行できているか否かを判定する図５と同様のロジック判定処理（以下、ロジック判定処理Ａという）と、メインＣＰＵ２０にてオートクルーズ制御用の処理が正確に実行されているか否かを監視する図４と同様の監視処理（以下、監視処理Ｂという）、及び、その監視処理Ｂを自分自身が正確に実行できているか否かを判定する図５と同様のロジック判定処理（以下、ロジック判定処理Ｂという）とを実行している。そして、図４の監視処理と同様に、上記各監視処理Ａ，Ｂの何れかで異常の発生を判定すると、メインＣＰＵ２０へ制御停止指令を送信してスロットル弁６に対する制御を中止させ、また、図５のロジック判定処理と同様に、上記各ロジック判定処理Ａ，Ｂの何れかで監視処理Ａ，Ｂを正確に実行できていないと判定すると、監視ＩＣ３４へのウォッチドックパルスＷ／Ｄ２の出力を停止して、当該サブＣＰＵ３０自身に異常が生じたことを報知する。
【０１２６】
以上のような本第２実施例の制御装置４０においては、メインＣＰＵ２０が、高い安全性が要求されるスロットル弁６の制御と、他の電子制御装置との通信制御，ＥＧＲ制御，ＶＶＴ制御，及びダイアグノシス処理といった付加価値向上のための制御を行っており、しかも、このようなメインＣＰＵ２０の動作が停止しても、車両には大きな支障が無いようにフェールセーフのための手段が設けられている。
例えば、スロットル弁６の制御が停止しても、既述した開度調節器３６のメカ駆動系により、アクセルペダル８の操作に応じてスロットル弁６を開閉させることができ、また、アクセルペダル８が操作されていない時には、吸気系４のバイパス経路４ａにより、内燃機関をアイドル運転させることができる。一方、ＶＶＴ制御が停止しても、前述したように、図示されないメカニカルな機構により、吸排気バルブの開閉タイミングは走行に支障をきたさない所定のタイミングに設定される。尚、通信制御，ＥＧＲ制御，及びダイアグノシス処理といった制御が停止しても、内燃機関の動作に支障は無い。
【０１２７】
そして、本第２実施例の制御装置４０においては、メインＣＰＵ２０の動作を監視するサブＣＰＵ３０が、燃料噴射制御及び点火制御といった内燃機関を動作させる上で必須の制御を行っており、このサブＣＰＵ３０の動作を監視する監視ＩＣ３４が、サブＣＰＵ３０の異常時に出力回路５８，６２へ固定の噴射指令と点火指令を出力して、内燃機関の最低限の運転を確保するように構成されている。
【０１２８】
そして更に、本第２実施例の制御装置４０においては、メインＣＰＵ２０からサブＣＰＵ３０へのウォッチドックパルスＷ／Ｄ１が停止すると、メインＣＰＵ２０はサブＣＰＵ３０からのリセット信号ＲＳＴ１によりリセットされる。また、サブＣＰＵ３０から監視ＩＣ３４へのウォッチドックパルスＷ／Ｄ２が停止すると、サブＣＰＵ３０は監視ＩＣ３４からのリセット信号ＲＳＴ２によりリセットされ、更にサブＣＰＵ３０がリセットされると、上記（７）で述べたようにメインＣＰＵ２０も数珠つなぎ的にリセットされる。
【０１２９】
つまり、スロットル弁６の制御には高い安全性が要求されるため、スロットル弁制御を行うメインＣＰＵ２０を監視するサブＣＰＵ３０が異常であると判断された場合には、サブＣＰＵ３０だけではなくメインＣＰＵ２０をもリセットするようにしている。換言すれば、当該制御装置４０内に少しでも異常があるとみなされる場合には、安全性を最優先してメインＣＰＵ２０をリセットするようにしているのである。
【０１３０】
そして、本第２実施例の制御装置４０では、前述したように、メインＣＰＵ２０によるスロットル弁６の制御が停止しても、開度調節器３６のメカ駆動系と吸気系４のバイパス経路４ａとにより、内燃機関の吸入空気が確保され、また、サブＣＰＵ３０の動作が停止しても、監視ＩＣ３４の機能により内燃機関の最低限の運転が可能となる。
【０１３１】
従って、この制御装置４０によれば、異常に対する安全性と内燃機関の最低限の運転（車両の最低限の走行）とを、高い次元で両立させることができる。
即ち、本第２実施例のように、メインＣＰＵ２０，サブＣＰＵ３０，及び監視ＩＣ３４からなる複数の処理装置を直列に接続すると共に、後段の処理装置が前段の処理装置の動作を監視して、異常を検出した時には、その異常を検出した処理装置よりも前段側の全ての処理装置がリセットされるように構成し、更に、高い安全性が要求されるスロットル弁６の制御処理を、最も前段側の処理装置に分担させると共に、内燃機関を動作させるために必要な制御処理を、より後段側の処理装置に分担させることで、異常発生時における安全性と最低限の運転性能とを確実に両立させることができるのである。
【０１３２】
そして特に、本第２実施例の制御装置４０によれば、サブＣＰＵ３０が実行する図５のロジック判定処理や、それと同様のロジック判定処理Ａ，Ｂにより、当該制御装置４０内の異常（この実施例ではサブＣＰＵ３０自身の異常）をより確実に検出できるため、内燃機関を制御する際の安全性・信頼性を一層向上させることができる。
【０１３３】
また、本第２実施例の制御装置４０では、サブＣＰＵ３０が、図４の監視処理及び前述した監視処理Ａ，Ｂを実行することにより、メインＣＰＵ２０がスロットル弁６を正常に制御しているか否かを監視し、異常を検知した場合には、メインＣＰＵ２０へ制御停止指令を送信してスロットル弁６に対する制御だけを停止させるようにしている。よって、メインＣＰＵ２０にて通信制御やＥＧＲ制御などの他の制御は継続して実行されることとなり、安全性を確保しつつ最大限の処理を実行できる。
【０１３４】
尚、本第２実施例では、メインＣＰＵ２０が第１の処理装置に相当し、サブＣＰＵ３０が第２の処理装置に相当し、監視ＩＣ３４が第３の処理装置に相当し、開度調節器３６のメカ駆動系と吸気系４のバイパス経路４ａがフェールセーフ手段に相当している。また、図４の監視処理におけるＳ３６０が、制御停止手段に相当し、図４の監視処理におけるＳ３６０以外が、検査手段に相当している。
【０１３５】
ところで、本第２実施例及び前述した第１実施例の制御装置２，４０によれば、メインＣＰＵ２０が図２のＳ１２０で算出するスロットル開度と、サブＣＰＵ３０が監視サブルーチン（図４）のＳ３２２で算出するスロットル開度とが、両方共に同じ値であるが実際には不適切な値である、といった異常がある場合にも、その異常を確実に検出することができる。例えば、万一、メインＣＰＵ２０とサブＣＰＵ３０の各々でスロットル開度を算出するために用いられる演算式ｆのプログラムに、共通の誤りが含まれているような場合でも、その誤りをダミー入力データ及び期待値データを用いたロジック判定処理により検出できるのである。
【０１３６】
一方、本第２実施例でも、第１実施例と同様に、メインＣＰＵ２０が正常か否かを監視するための監視サブルーチンの実行状態を、ロジック判定処理によりチェックするようにしたが、チェックする対象のサブルーチンは、当然、他の処理を行うものでも良い。
【０１３７】
また、メインＣＰＵ２０で実行される所定のサブルーチンの実行状態をチェックするために、メインＣＰＵ２０が、図５のロジック判定処理と同様の処理を実行し、その処理で異常を判定した場合に、サブＣＰＵ３０へのウォッチドックパルスＷ／Ｄ１の出力を停止して、メインＣＰＵ２０に異常が生じたことをサブＣＰＵ３０へ報知するようにしても良い。
【図面の簡単な説明】
【図１】  第１実施例のエンジン制御装置及びその周辺装置の構成を表す構成図である。
【図２】  図１のメインＣＰＵが実行する処理（メインＣＰＵ処理）を表すフローチャートである。
【図３】  図１のサブＣＰＵが実行する処理（サブＣＰＵ処理）を表すフローチャートである。
【図４】  サブＣＰＵが実行するメインＣＰＵの監視処理及び監視サブルーチンを表すフローチャートである。
【図５】  サブＣＰＵが実行するロジック判定処理を表すフローチャートである。
【図６】  サブＣＰＵがロジック判定処理を実行する際に用いるダミーデータマップを説明する説明図である。
【図７】  第２実施例のエンジン制御装置及びその周辺装置の構成を表す構成図である。
【図８】  図７のサブＣＰＵがエンジン制御のために実行する基本的な処理を説明するフローチャートである。
【符号の説明】
２，４０…エンジン制御装置（制御装置）    ４…吸気経路（吸気系）
４ａ…バイパス経路    ６…スロットル弁
８…アクセルペダル    １０…ペダル開度センサ
１２…トランスミッション制御装置（トランスミッションＥＣＵ）
１４…水温センサ    １６…入力回路    １８，２８…ＲＯＭ
２０…メインＣＰＵ    ３０…サブＣＰＵ    ２２，３２…ＲＡＭ
３２ｃ…制御データＲＡＭ    ３２ｗ…ワークＲＡＭ
２４…スロットルモータ    ２６，５８，６２…出力回路    ３４…監視ＩＣ
３６…開度調節器    ３８…シリアル通信ライン
４２…Ｏ2 センサ    ４４…回転角センサ    ４６…ノックセンサ
４８…排気温センサ    ５０…ＡＢＳ・ＥＣＵ    ５２…インパネＥＣＵ
５４…通信ＩＣ    ５６…通信ライン    ６０…燃料噴射装置
６４…点火装置    ６６…診断装置    ６８…通信回路    ７０…ＥＧＲ弁
７２…ＶＶＴ制御用アクチュエータ
【図１】
0003991384.tif 000002
【図２】
0003991384.tif 000003
【図３】
0003991384.tif 000004
【図４】
0003991384.tif 000005
【図５】
0003991384.tif 000006
【図６】
0003991384.tif 000007
【図７】
0003991384.tif 000008
【図８】
0003991384.tif 000009