(57)【要約】【課題】車両の安全性を維持しつつ演算負荷を軽減することが可能な制御装置を提供する。【解決手段】ＥＣＵ２０は、アクセル開度センサ１２から入力されたアクセル開度に基づいて、エンジン３０を制御するためのエンジントルク要求値を逐次演算する。ＥＣＵ２０は、アクセル開度からエンジントルク要求値を演算するための一連の制御演算処理を実行する演算処理部１１０と、一連の制御演算処理のうち少なくとも一部を実行することなく、アクセル開度と過去に出力されたエンジントルク要求値とに基づいて、エンジントルク上限値を推定する推定処理部１２０と、演算処理部１１０により演算されたエンジントルク要求値と推定処理部１２０により推定されたエンジントルク上限値とを比較することにより演算処理部１１０の異常の有無を判定する異常判定部１３０と、を備える。【選択図】図３
2014234732.tif 000002
【特許請求の範囲】
【請求項１】
センサから入力された検出値に基づいて、制御対象を制御するための制御値を逐次演算して出力する制御装置であって、
前記検出値から前記制御値を演算するための一連の制御演算処理を実行する演算処理部と、
前記一連の制御演算処理のうち少なくとも一部を実行することなく、前記検出値と過去に出力された前記制御値とに基づいて、前記制御値の限界値を推定する推定処理部と、
前記演算処理部により演算された前記制御値と、前記推定処理部により推定された前記限界値とを比較することにより、前記演算処理部の異常の有無を判定する異常判定部と、
を備えることを特徴とする、制御装置。
【請求項２】
前記演算処理部は、
前記一連の制御演算処理のうち前段の処理を実行する前段処理部と、
前記前段処理部の処理結果に基づいて、前記一連の制御演算処理のうち後段の処理を実行することにより、前記制御値を演算する後段処理部と、
を有し、
前記推定処理部は、前記前段処理部により処理された前記検出値と、前記過去に出力された制御値とに基づいて、前記制御値の限界値を推定し、
前記異常判定部は、前記後段処理部により演算された前記制御値と、前記推定処理部により推定された前記限界値とを比較することにより、前記演算処理部の異常の有無を判定し、
前記異常判定部は、前記演算処理部に異常が無いと判定した場合、前記後段処理部により演算された前記制御値を、前記制御対象を制御するための制御値として逐次出力し、前記演算処理部に異常が有ると判定した場合、前記後段処理部により演算された前記制御値に代えて前記推定処理部により推定された前記限界値を、前記制御対象を制御するための制御値として出力することを特徴とする、請求項１に記載の制御装置。
【請求項３】
予め設定された前記検出値と前記制御値との相関情報を保持する記憶部をさらに備え、
前記推定処理部は、前記記憶部に記憶された前記相関情報に基づいて、前記検出値及び前記過去に出力された制御値から前記限界値を推定することを特徴とする、請求項１又は２に記載の制御装置。
【請求項４】
前記検出値はアクセル開度であり、前記制御値はトルク要求値であり、
前記推定処理部は、前記相関情報に基づいて、前記アクセル開度と過去に出力された過去のトルク要求値とから、前記トルク要求値の限界値を設定することを特徴とする、請求項３に記載の制御装置。
【請求項５】
前記記憶部は、前記アクセル開度または前記過去に出力された過去のトルク要求値のいずれか一方若しくは双方が大きいほど、前記トルク要求値の限界値が大きくなるように、前記アクセル開度および前記過去のトルク要求値と前記トルク要求値の限界値との相関が設定された前記相関情報を保持していることを特徴とする、請求項４に記載の制御装置。
【請求項６】
前記制御対象は、第１の制御対象および第２の制御対象を含み、
前記演算処理部は、
前記第１の制御対象を制御するための第１の制御値を算出する第１の演算処理部と、
前記第２の制御対象を制御するための第２の制御値を算出する第２の演算処理部と、
を有し、
前記推定処理部は、
前記第１の制御値の限界値を推定する第１の推定処理部と、
前記第２の制御値の限界値を推定する第２の推定処理部と、
を有し、
前記異常判定部は、
前記第１の演算処理部により演算された前記第１の制御値と、前記第１の推定処理部により推定された前記限界値とを比較することにより、前記第１の演算処理部の異常の有無を判定する第１の異常判定部と、
前記第２の演算処理部により演算された前記第２の制御値と、前記第２の推定処理部により推定された前記限界値とを比較することにより、前記第２の演算処理部の異常の有無を判定する第２の異常判定部と、
を有することを特徴とする、請求項１に記載の制御装置。
【請求項７】
前記制御対象は、車両に設けられた相異なる動力源であるエンジンおよびモータを含み、前記検出値はアクセル開度であり、前記制御値はトルク要求値であり、
前記演算処理部は、
前記エンジンを制御するためのエンジントルク要求値を算出する第１の演算処理部と、
前記モータを制御するためのモータトルク要求値を算出する第２の演算処理部と、
を有し、
前記推定処理部は、
前記エンジントルク要求値の限界値を推定する第１の推定処理部と、
前記モータトルク要求値の限界値を推定する第２の推定処理部と、
を有し、
前記異常判定部は、
前記第１の演算処理部により演算された前記エンジントルク要求値と、前記第１の推定処理部により推定された前記エンジントルク要求値の限界値とを比較することにより、前記第１の演算処理部の異常の有無を判定する第１の異常判定部と、
前記第２の演算処理部により演算された前記モータトルク要求値と、前記第２の推定処理部により推定された前記モータトルク要求値の限界値とを比較することにより、前記第２の演算処理部の異常の有無を判定する第２の異常判定部と、
を有することを特徴とする、請求項１に記載の制御装置。
【請求項８】
前記第１の演算処理部および前記第２の演算処理部は、
入力された入力信号であるアクセル開度の前処理を行う入力信号処理部と、
前記アクセル開度に基づいて前記２つの動力源に出力させる総トルク目標値を演算する総トルク演算処理部と、
前記総トルク目標値を、前記エンジンに出力させるエンジントルク目標値と前記モータに出力させるモータトルク目標値とに分配するトルク分配制御部と、
を共有し、
前記第１の演算処理部は、前記トルク分配制御部により演算された前記エンジントルク目標値に基づいて前記エンジントルク要求値を演算するエンジントルク要求値演算処理部をさらに有し、
前記第２の演算処理部は、前記トルク分配制御部により演算された前記モータトルク目標値に基づいて前記モータトルク要求値を演算するモータトルク要求値演算処理部をさらに有することを特徴とする、請求項７に記載の制御装置。
【請求項９】
前記異常判定部は、前記演算処理部に異常があると判定したとき、当該演算処理部をリセットすることを特徴とする、請求項１〜８のいずれか１項に記載の制御装置。
【請求項１０】
センサから入力された検出値に基づいて、制御対象を制御するための制御値を逐次演算して出力する制御装置の異常を検出する異常検出方法であって、
前記制御装置の演算処理部により、前記検出値から前記制御値を演算するための一連の制御演算処理を実行することにより、前記制御値を逐次演算し、
前記一連の制御演算処理のうち少なくとも一部を実行することなく、前記検出値と過去に出力された前記制御値とに基づいて、前記制御値の限界値を推定し、
前記制御値と前記限界値とを比較することにより、前記演算処理部の異常の有無を判定することを特徴とする、制御装置の異常検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両を制御するための制御値を演算して車両を制御する制御装置およびその異常検出方法に関する。
【背景技術】
【０００２】
車両に搭載されるマイクロコンピュータ（以下、「マイコン」という。）は、車両を走行させるための基本機能や、安全性や快適性といった付加機能を実現するための処理を行う。車両の基本機能および付加機能に対する性能向上の要求から、マイコンにも高い処理能力が求められている。
【０００３】
このようなマイコンに異常が生じると、車両の制御に支障が生じ、制御不能な事態になることもあり、極端な場合には車両が暴走することも想定される。このため、通常、マイコンで実行される処理のうち、特に車両制御不能に繋がる制御演算処理については、２重計算をして２つの演算結果を比較することで当該演算処理部の異常の有無を相互監視するマイコンの異常を検出するインストラクションチェックが行われている。
【０００４】
例えば特許文献１には、２つのコンピュータを備える電子制御装置において、一方のコンピュータにおける複数の診断処理が確実に実行されているかを他方のコンピュータによって直接的に監視する技術が開示されている。
【０００５】
また、特許文献２には、スロットルバルブの開度を調整するスロットルモータを制御する内燃機関の制御装置において、スロットルモータを含む内燃機関駆動機器へ制御信号を出力するとともに第一及び第二の遮断手段へ駆動信号を出力する第一の集積回路と、第一の集積回路と協動して第一及び第二の遮断手段へ駆動信号を出力する第二の集積回路と、を備える技術が開示されている。かかる技術では、第二の集積回路からも第一及び第二の遮断手段へ駆動信号を出力することができるため、第一の集積回路の異常により燃料噴射量や点火時期を正常に制御できない状態になっても、異常検出時に第二の集積回路から第二の遮断手段へ駆動信号を出力して、燃料噴射や点火動作を停止するフェイルセーフ処理を実行することができ、異常検出時の安全性を十分に確保することができる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−２２５６３５号公報
【特許文献２】特開２００８−８８８８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、上記特許文献１、２記載のように、制御演算処理を２重計算してインストラクションチェックを行うと、マイコンの演算負荷が増加してしまう。特に、近時における車両制御は多数の制御ロジックを含んでおり、当該制御ロジックを実行する制御演算処理を２重計算することとすると、マイコンにかかる演算負荷の増大を招来する。また、エンジンとモータとの２つの駆動源を備えるハイブリッド車両においては、アクセル開度に応じてエンジンまたはモータに要求するトルクを演算するための一連の制御演算処理はその数が多い。このため、アクセル開度等の入力信号処理から最終制御値計算処理までの一連の制御演算処理を逐次演算しインストラクションチェックを行うには、高い演算処理能力を備えるマイコンが必要となる。
【０００８】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、車両の安全性を確保しつつ、インストラクションチェックに要する演算負荷を軽減することが可能な、新規かつ改良された制御装置およびその異常検出方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明のある観点によれば、センサから入力された検出値に基づいて、制御対象を制御するための制御値を逐次演算して出力する制御装置が提供される。かかる制御装置は、検出値から制御値を演算するための一連の制御演算処理を実行する演算処理部と、一連の制御演算処理のうち少なくとも一部を実行することなく、検出値と過去に出力された制御値とに基づいて、制御値の限界値を推定する推定処理部と、演算処理部により演算された制御値と、推定処理部により推定された限界値とを比較することにより、演算処理部の異常の有無を判定する異常判定部と、を備えることを特徴とする。
【００１０】
演算処理部は、一連の制御演算処理のうち前段の処理を実行する前段処理部と、前段処理部の処理結果に基づいて、一連の制御演算処理のうち後段の処理を実行することにより、制御値を演算する後段処理部と、を有し、推定処理部は、前段処理部により処理された検出値と、過去に出力された制御値とに基づいて、制御値の限界値を推定し、異常判定部は、後段処理部により演算された制御値と、推定処理部により推定された限界値とを比較することにより、演算処理部の異常の有無を判定し、異常判定部は、演算処理部に異常が無いと判定した場合、後段処理部により演算された制御値を制御対象に逐次出力し、演算処理部に異常が有ると判定した場合、後段処理部により演算された制御値に代えて推定処理部により推定された限界値を制御対象に出力する。
【００１１】
また、制御装置は、予め設定された検出値と制御値との相関情報を保持する記憶部をさらに備えてもよい。このとき、推定処理部は、記憶部に記憶された相関情報に基づいて、検出値及び過去に出力された制御値から限界値を推定する。
【００１２】
ここで、検出値はアクセル開度であり、制御値はトルク要求値であってもよい。このとき、推定処理部は、相関情報に基づいて、アクセル開度と過去に出力された過去のトルク要求値とから、トルク要求値の限界値を設定する。
【００１３】
記憶部は、アクセル開度または過去に出力された過去のトルク要求値のいずれか一方若しくは双方が大きいほど、トルク要求値の限界値が大きくなるように、アクセル開度および過去トルク要求値とトルク要求値の限界値との相関が設定された相関情報を保持してもよい。
【００１４】
また、制御対象は、第１の制御対象および第２の制御対象を含み、演算処理部は、第１の制御対象を制御するための第１の制御値を算出する第１の演算処理部と、第２の制御対象を制御するための第２の制御値を算出するための第２の演算処理部と、を有し、推定処理部は、第１の制御値の限界値を推定する第１の推定処理部と、第２の制御値の限界値を推定する第２の推定処理部と、を有し、異常判定部は、第１の演算処理部により演算された第１の制御値と、第１の推定処理部により推定された限界値とを比較することにより、第１の演算処理部の異常の有無を判定する第１の異常判定部と、第２の演算処理部により演算された第２の制御値と、第２の推定処理部により推定された限界値とを比較することにより、第２の演算処理部の異常の有無を判定する第２の異常判定部と、を有してもよい。
【００１５】
あるいは、制御対象は、車両に設けられた相異なる動力源であるエンジンおよびモータを含み、検出値はアクセル開度としてもよい。このとき、演算処理部は、エンジンを制御するためのエンジントルク要求値を第１の制御値として算出する第１の演算処理部と、モータを制御するためのモータトルク要求値を第２の制御値として算出するための第２の演算処理部と、を有し、推定処理部は、エンジントルク要求値の限界値を推定する第１の推定処理部と、モータトルク要求値の限界値を推定する第２の推定処理部と、を有し、異常判定部は、第１の演算処理部により演算されたエンジントルク要求値と、第１の推定処理部により推定されたエンジントルク要求値の限界値とを比較することにより、第１の演算処理部の異常の有無を判定する第１の異常判定部と、第２の演算処理部により演算されたモータトルク要求値と、第２の推定処理部により推定されたモータトルク要求値の限界値とを比較することにより、第２の演算処理部の異常の有無を判定する第２の異常判定部と、を有してもよい。
【００１６】
第１の演算処理部および第２の演算処理部は、入力された入力信号であるアクセル開度の前処理を行う入力信号処理部と、検出されたアクセル開度に基づいて２つの動力源に出力させる総トルク目標値を演算する総トルク演算処理部と、総トルク目標値を、エンジンに出力させるエンジントルク目標値とモータに出力させるモータトルク目標値とに分配するトルク分配制御部と、を共有し、第１の演算処理部は、トルク分配制御部により演算されたエンジントルク目標値に基づいてエンジントルク要求値を演算するエンジントルク要求値演算処理をさらに有し、第２の演算処理部は、トルク分配制御部により演算されたモータトルク目標値に基づいてモータトルク要求値を演算するモータトルク要求値演算処理部をさらに有してもよい。
【００１７】
異常判定部は、演算処理部に異常があると判定したとき、当該演算処理部をリセットしてもよい。
【００１８】
また、上記課題を解決するために、本発明の別の観点によれば、センサから入力された検出値に基づいて、制御対象を制御するための制御値を逐次演算して出力する制御装置の異常を検出する異常検出方法が提供される。かかる異常検知方法は、制御装置の演算処理部により、検出値から制御値を演算するための一連の制御演算処理を実行することにより、制御値を逐次演算し、一連の制御演算処理のうち少なくとも一部を実行することなく、検出値と過去に出力された制御値とに基づいて、制御値の限界値を推定し、制御値と限界値とを比較することにより、演算処理部の異常の有無を判定することを特徴とする。
【００１９】
上記の本発明によれば、制御装置は、演算処理部により、センサから入力された検出値に基づき、制御対象の制御値を演算するための一連の制御演算処理を実行する。これとともに、制御装置は、推定処理部により、検出値と過去に出力された制御値とに基づいて、制御値を演算するための一連の制御演算処理のうち少なくとも一部を実行することなく制御値の限界値を推定する。そして、制御装置は、制御値と限界値とを比較することにより、演算処理部の異常の有無を判定する。このように、演算処理部の異常の有無を判定する際に用いる制御値の限界値を、一連の制御演算処理のうち少なくとも一部を実行せずに検出値と過去に出力された制御値とに基づき推定することにより、インストラクションチェックに要する制御装置の演算負荷を大幅に軽減できる。また、制御装置は、制御値と限界値とを比較することで、演算処理部における異常の発生を確実に検出することが可能となり、異常が発生したと判定した場合は、制御対象の制御値を制限値に制限することで、車両が制御不能となることを確実に抑止することが可能となる。
【発明の効果】
【００２０】
以上説明したように本発明によれば、車両の安全性を確保しつつ、インストラクションチェックに要する演算負荷を軽減することが可能となる。
【図面の簡単な説明】
【００２１】
【図１】本発明の第１の実施形態に係るエンジン制御システムの概略構成を示すブロック図である。
【図２】同実施形態に係るＥＣＵのソフトウェアの階層構造を示す説明図である。
【図３】同実施形態に係るＥＣＵによるインストラクションチェックを実行する機能部を示す機能ブロック図である。
【図４】同実施形態に係るＥＣＵによるインストラクションチェック方法を説明するフローチャートである。
【図５】同実施形態に係るアクセル開度と過去に出力された過去のトルク要求値との相関関係を表す相関情報の一例を示す説明図である。
【図６】本発明の第２の実施形態に係る制御システムの概略構成を示すブロック図である。
【図７】同実施形態に係るハイブリッドコントローラによるインストラクションチェックを実行する機能部を示す機能ブロック図である。
【図８】ハイブリッドコントローラによるインストラクションチェック方法を説明するフローチャートである。
【図９】インストラクションチェックを行わない場合のシミュレーション結果を示すグラフである。
【図１０】同第２の実施形態に係るインストラクションチェックを行った場合のシミュレーション結果を示すグラフである。
【発明を実施するための形態】
【００２２】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２３】
＜１．第１の実施形態＞
［１．１．エンジン制御システム］
まず、図１を参照して、本発明の第１の実施形態に係るエンジン制御システムの概略構成について説明する。図１は、本実施形態に係るエンジン制御システムの概略構成を示すブロック図である。
【００２４】
エンジン制御システムは、各種センサ１０からの入力信号に基づいて車両の動力源となるエンジン３０を統括的に制御する制御装置であるエンジン制御ユニット（以下、「ＥＣＵ(Engine Control Unit)」ともいう。）２０を備える制御システムである。
【００２５】
ＥＣＵ２０に対して入力信号を入力するセンサ１０としては、例えばアクセル開度センサ１２や速度センサ１４、加速度センサ１６、舵角センサ１８等がある。アクセル開度センサ１２は、アクセルペダルの操作量を検出するセンサである。
【００２６】
アクセル開度センサ１２の検出値に基づき、ＥＣＵ２０はエンジントルク要求値を演算し、エンジン３０の実出力トルクが演算したエンジントルク要求値に近づくようにスロットル開度や燃料噴射量、吸排気バルブタイミング、点火時期等を制御する。速度センサ１４は、車輪の回転速度に応じた車速パルス信号を出力する。速度センサ１４の検出値に基づいて、ＥＣＵ２０は車両の速度を演算する。加速度センサ１６は、車体に作用する加速度を検出するセンサであり、例えば車体の前後方向の加速度や横方向の加速度を検出する。舵角センサ１８は、車両の舵角を操作するステアリングホイールの回転操作により回転するステアリングシャフトの回転角を舵角として検出する。
【００２７】
ＥＣＵ２０は、これらのセンサ１０の検出値を入力信号として受け、入力信号に基づいてエンジン３０を駆動制御する。ＥＣＵ２０は、例えばセンサ１０からの入力信号が入力される入力回路と、入力信号に基づいて制御演算処理を実行する１または複数の演算器と、演算器による演算された制御値を表す出力信号を出力する出力回路とを備える。また、ＥＣＵ２０は、演算器により実行される演算処理に必要な各種情報を記憶する記憶部を備えてもよい。ＥＣＵ２０を構成する演算器は、以下に説明するインストラクションチェックを実行可能な性能を有しているものとする。以下では、ＥＣＵ２０の演算器が、１つのマイコンで構成される例について説明するが、複数のマイコン、又は、１つのマイコンに含まれる１又は２以上のコアで構成されてもよいし、その他の種類の１または複数のプロセッサで構成されてもよい。
【００２８】
［１．２．エンジン制御ユニットにおけるインストラクションチェック］
ＥＣＵ２０は、エンジン３０を統括的に制御する制御装置であり、演算処理結果によっては車両を制御不能にしてしまう可能性もあるため、自己の演算処理結果に異常がないかを診断する自己故障診断機能を備える。
【００２９】
本実施形態に係るＥＣＵ２０は、自己故障診断機能として、制御値の演算処理に異常があるか否かを検出するインストラクションチェックを実施する。なお、異常とは、例えば演算器の物理的エラーやＲＯＭ‐ＲＡＭデータエラー、ソフトウェアが規定された実行順序で実行されないソフトフローエラー等を含む。インストラクションチェックでは、このような演算器の各種の異常を検出することができる。ＥＣＵ２０は、インストラクションチェックにより異常が検出された場合、アラームの出力や演算器のリセット等を行ってもよい。
【００３０】
インストラクションチェックは、例えば、図２に示すようなソフトウェア構造を有するＥＣＵ２０のマイコンによって実行される。まず、インストラクションチェックの対象となる制御演算処理について予め定義された独立した関数を用いて、マイコンのミドルウェア２２により当該関数に所定の入力信号を入力したときの演算結果が演算される。また、ミドルウェア２２は、当該関数に所定の入力信号を入力したときの推定値を所定の方法により演算する。
【００３１】
そして、ミドルウェア２２は、関数の演算結果と推定値とが一致するか否かを判定する。ミドルウェア２２は、これらの値が一致する場合にはマイコンに異常はないと判定して演算処理を継続する。一方、これらの値が一致しない場合には、ミドルウェア２２はマイコンに異常が発生したと判定し、当該マイコンの基本ソフトウェア２４によりマイコンをリセットする。このとき、基本ソフトウェア２４は、運転者にマイコンの異常を通知するため、マイコンのアプリケーション２６に対して異常発生情報を送信する。異常発生情報を受信したアプリケーション２６は、フェイルセーフ機能を実行する。
【００３２】
本実施形態に係るＥＣＵ２０のインストラクションチェックでは、マイコンにより、センサ１０からの入力信号である検出値に基づいて、制御対象であるエンジン３０を制御するための制御値を演算する一連の制御演算処理を実行する。これとともに、マイコンは、この一連の制御演算処理のうち少なくとも一部を実行することなく制御値の限界値を推定し、一連の制御演算処理による演算結果と比較することで、マイコンによる一連の制御演算処理の異常を検出する。
【００３３】
このように、本実施形態に係るＥＣＵ２０のインストラクションチェックでは、一連の制御演算処理を二重に行って制御値を二重計算するのではなく、制御対象を制御するための制御値の限界値を推定することで、ＥＣＵ２０の演算負荷を大幅に軽減しつつ、ＥＣＵ２０による制御演算処理の演算結果の正当性を保障することができる。
【００３４】
以下、図３〜図５に基づいて、本実施形態に係るＥＣＵ２０によるインストラクションチェックについてより詳細に説明していく。以下では、制御対象をエンジン３０として、ＥＣＵ２０によりアクセル開度（検出値）からエンジントルク要求値（制御値）を演算する際に行われるインストラクションチェックを例として説明する。なお、図３は、本実施形態に係るＥＣＵ２０によるインストラクションチェックを実行する機能部を示す機能ブロック図である。図４は、ＥＣＵ２０によるインストラクションチェック方法を説明するフローチャートである。図５は、アクセル開度及び過去に出力された過去のトルク要求値と、エンジントルク要求値の限界値との相関関係を表す相関情報の一例を示す説明図である。
【００３５】
［１．３．制御装置の構成］
本実施形態に係るＥＣＵ２０は、図３に示すように、例えば演算処理部１１０と、推定処理部１２０と、異常判定部１３０と、記憶部１４０とを備える。
【００３６】
演算処理部１１０は、制御対象であるエンジン３０を制御するための制御値を演算する一連の制御演算処理を実行する。演算処理部１１０は、一連の制御演算処理のうち前段の処理を行う前段処理部１１２と、前段処理部１１２の処理結果に基づいて制御対象の制御値を演算する後段処理部１１４とからなる。
【００３７】
前段処理部１１２は、アクセル開度センサ１２から入力される入力信号の前処理を実行する。本実施形態に係る前段処理部１１２は、入力信号処理部１１２ａを有する。入力信号処理部１１２ａは、アクセル開度センサ１２により検出されたアクセル開度を受けて、Ａ／Ｄ変換処理や検出値のなまし処理、ノイズ除去処理等を行い、後段処理部１１４における演算処理の前処理を行う。入力信号処理部１１２ａは、前処理した入力信号を後段処理部１１４へ出力する。
【００３８】
後段処理部１１４は、前段処理部１１２から入力された入力信号に基づいて、制御対象を制御するための制御値、具体的にはエンジントルク要求値を演算する。本実施形態に係る後段処理部１１４は、ドライバ目標駆動力演算処理部１１４ａと、エネルギマネジメント処理部１１４ｂと、ドライバ目標エンジントルク演算処理部１１４ｃとを備える。
【００３９】
ドライバ目標駆動力演算処理部１１４ａは、アクセル開度に基づいて、ドライバがエンジン３０に対して要求している目標駆動力を演算し、エネルギマネジメント処理部１１４ｂへ出力する。エネルギマネジメント処理部１１４ｂは、ドライバ目標駆動力演算処理部１１４ａにて演算された目標駆動力を受けて、車両全体において燃費が良くなるようなエネルギの使用配分等を考慮し、エンジン３０のエンジントルク値を演算する。
【００４０】
エネルギマネジメント処理部１１４ｂは、演算したエンジン３０のエンジントルク値をドライバ目標エンジントルク演算処理部１１４ｃへ出力する。ドライバ目標エンジントルク演算処理部１１４ｃは、エネルギマネジメント処理部１１４ｂにより演算されたエンジントルク値に基づいて、当該エンジントルク値を出力するためにエンジン３０を制御する制御値として、エンジントルク要求値を演算する。ドライバ目標エンジントルク演算処理部１１４ｃは、演算した制御値を異常判定部１３０へ出力する。
【００４１】
以上のようにして、演算処理部１１０は、アクセル開度センサ１２により検出されたアクセル開度を入力信号として、前段処理部１１２、後段処理部１１４による一連の制御演算処理を実行し、制御値としてエンジントルク要求値を算出する。制御値の算出は、所定の制御周期毎（例えば、１０ｍｓ毎）に逐次行われる。
【００４２】
一方、推定処理部１２０は、演算処理部１１０の前段処理部１１２である入力信号処理部１１２ａからの入力信号と、後述する異常判定部１３０により過去に演算されて出力された制御値とから、制御対象であるエンジン３０の制御値の限界値を推定する。推定処理部１２０は、例えば演算処理部１１０の故障によってエンジン３０の制御値が誤って演算されたときに、実際にエンジン３０へ出力される制御値に制限をかけるための限界値を推定する。本実施形態では、推定処理部１２０は、制御値であるエンジントルク要求値の限界値として、エンジントルクの上限値（以下、「エンジントルク上限値」ともいう。）を推定する。
【００４３】
推定処理部１２０は、エンジントルク上限値を、前段処理部１１２からの入力信号であるアクセル開度と、異常判定部１３０より過去に演算されて出力された制御値であるエンジントルク要求値とから推定するため、制御値を演算するための一連の制御演算処理、特に後段処理部１１４による制御演算処理を実行することなくエンジントルク上限値を推定することができる。したがって、インストラクションチェックにおけるＥＣＵ２０の演算負荷を大幅に軽減することができる。なお、推定処理部１２０によるエンジントルク上限値の推定処理の詳細については後述する。推定処理部１２０により推定されたエンジントルク上限値は、異常判定部１３０へ出力される。推定処理部１２０によるエンジントルク上限値の推定処理は、演算処理部１１０と同様に、制御周期毎に逐次行われる。
【００４４】
異常判定部１３０は、演算処理部１１０により演算された制御対象の制御値と、推定処理部１２０により推定された制御値の限界値とに基づいて、演算処理部１１０の異常の有無を制御周期毎に判定する。本実施形態では、異常判定部１３０は、演算処理部１１０により演算されたエンジン３０の制御値であるエンジントルク要求値と、推定処理部１２０により推定されたエンジントルク上限値とを比較し、比較結果から演算処理部１１０に異常があるか否かを判定する。
【００４５】
異常判定部１３０は、演算処理部１１０に異常がないと判定した場合には演算処理部１１０により演算されたエンジントルク要求値をそのまま出力する。一方、異常判定部１３０は、演算処理部１１０に異常があると判定した場合には、推定処理部１２０により推定されたエンジントルク上限値を、演算処理部１１０により演算されたエンジントルク要求値の代わりにエンジントルク要求値として出力する。なお、異常判定部１３０は、システムが備える機器に何らかの異常が生じている場合に、エンジントルク要求値に制限をかける機能をも含んでいる。
【００４６】
異常判定部１３０は、最終的に決定したエンジントルク要求値を、ＥＣＵ２０内のスロットル開度や燃料噴射量、吸排気バルブタイミング、点火時期等を制御する制御量を演算する制御量演算部（図示せず。）に出力する。制御量演算部は、エンジン３０の実出力トルクが演算したエンジントルク要求値に近づくように各制御量を演算し、演算した制御量をエンジン３０へ出力する。
【００４７】
記憶部１４０は、推定処理部１２０が制御値の限界値を推定するために用いる情報を記憶する。本実施形態において、記憶部１４０には、例えばアクセル開度と異常判定部１３０から過去に出力された過去のエンジントルク要求値との相関関係に基づき予め設定されたエンジントルク上限値を表す相関情報が記憶されている。
【００４８】
インストラクションチェックのための演算処理部１１０による制御値の演算処理、推定処理部１２０による限界値の演算処理、および異常判定部１３０よる異常判定処理は、例えばＥＣＵ２０が備える複数のコアにより個別に実行してもよい。あるいは、インストラクションチェックのためのこれらの処理を、システムが備える複数のマイクロコンピュータによって個別に実行してもよく、若しくは、システムが備える１つのマイクロコンピュータによって各処理を順次実行してもよい。
【００４９】
［１．４．インストラクションチェック処理］
図３に示した機能を有するＥＣＵ２０は、図４に示す処理フローに基づきインストラクションチェックを実行する。まず、入力信号処理部１１２ａは、センサ１０からの検出値の入力を受け（Ｓ１００）、検出値の前処理を行う（Ｓ１１０）。エンジントルク要求値のインストラクションチェック処理では、アクセル開度センサ１２からアクセル開度が入力信号処理部１１２に入力され、入力信号処理部１１２にてＡ／Ｄ変換処理や検出値のなまし処理、ノイズ除去処理等が実行される。入力信号処理部１１２は、前処理したアクセル開度を、演算処理部１１０の後段処理部１１４および推定処理部１２０へ出力する。
【００５０】
次いで、演算処理部１１０の後段処理部１１４は、入力信号処理部１１２から入力されたアクセル開度に基づいて、一連の制御演算処理を実行し、エンジン３０の制御値であるエンジントルク要求値を演算する（Ｓ１２０）。ステップＳ１２０では、まず、ドライバ目標駆動力演算処理部１１４ａによりドライバがエンジン３０に対して要求している目標駆動力が演算され、この目標駆動力に基づいてエネルギマネジメント処理部１１４ｂによりエネルギの使用配分等を考慮したエンジン３０のエンジントルク値が演算される。そして、演算されたトルク値に基づいてドライバ目標エンジントルク演算処理部１１４ｃにより当該トルク値を出力するためのエンジン３０の制御値であるエンジントルク要求値が演算される。後段処理部１１４により演算されたエンジントルク要求値は、異常判定部１３０へ出力される。
【００５１】
一方、推定処理部１２０は、入力信号処理部１１２から入力されたアクセル開度と異常判定部１３０により過去に演算されて出力されたエンジントルク要求値とに基づいて、エンジントルク上限値を推定する（Ｓ１３０）。このとき、推定処理部１２０は、記憶部１４０に記憶された相関情報に基づいて、エンジントルク上限値を推定する。
【００５２】
ここで、アクセル開度とエンジントルク要求値との間には相関関係がある。また、エンジントルク要求値は、アクセル開度が一定条件にある場合には急激に変化しないという特性がある。より具体的には、アクセル開度とエンジントルク要求値との間には、アクセル開度または過去の制御周期において出力されたエンジントルク要求値のいずれか一方若しくは双方が大きいほど、今回（現在の）の制御周期におけるエンジントルク要求値が大きくなるという相関関係がある。このような相関関係に基づいて、今回検出されたアクセル開度と過去に出力されたエンジントルク要求値とを用いて、今回のエンジントルク要求値の限界値であるエンジントルク上限値を設定するための相関情報が予め規定される。
【００５３】
図５は、アクセル開度と過去に出力されたエンジントルク要求値とから今回の制御周期におけるエンジントルク上限値を推定するための相関情報（マップ）の一例を示す特性図である。図５に示す相関情報は、記憶部１４０に予め記憶されている。図５の相関情報では、縦軸にアクセル開度、横軸に過去のエンジントルク要求値として１つ前の制御周期に出力された前回エンジントルク要求値を示している。アクセル開度は、今回の制御周期で検出されたアクセル開度であり、全閉状態を０％、全開状態を１００％として、例えば１０％刻みに設定されている。一方、前回エンジントルク要求値については、０Ｎｍから所定の間隔、例えば２０〜２５Ｎｍ毎に値が設定されている。
【００５４】
図５のアクセル開度（縦軸）と前回エンジントルク要求値（横軸）との交点の値は、今回の制御周期で設定するエンジントルク上限値を示している。アクセル開度と前回エンジントルク要求値との相関関係から、アクセル開度または前回エンジントルク要求値のいずれか一方若しくは双方が大きくなるほど、今回のエンジントルク上限値は大きくなるように設定されている。
【００５５】
例えば、アクセル開度センサ１２により検出されたアクセル開度が大きくなるほどドライバの要求する駆動力は大きいと考えられるため、今回の制御周期でのエンジントルク上限値は、アクセル開度が大きくなるほど大きい値に設定される。また、アクセル開度を固定したとき、エンジントルク要求値はアクセル開度が一定条件にある場合には急激に変化しないことから、前回の制御周期でのエンジントルク要求値が大きいほど今回のエンジントルク上限値は大きい値に設定される。なお、アクセル開度センサ１２により検出されたアクセル開度が０であり、前回エンジントルク要求値が０の場合は、クリープ（アイドリング）に必要なエンジントルク要求値が設定されている。
【００５６】
ステップＳ１３０において、推定処理部１２０は、記憶部１４０に記憶された相関情報に基づき、入力信号処理部１１２から入力されたアクセル開度と異常判定部１３０により出力された前回エンジントルク要求値とから今回の制御周期におけるエンジントルク上限値を設定する。そして、推定処理部１２０は、設定したエンジントルク上限値を異常判定部１３０へ出力する。なお、ステップＳ１２０とＳ１３０の処理は、いずれを先に実行してもよく、並列して実行してもよい。
【００５７】
異常判定部１３０は、ステップＳ１２０にて演算された制御値であるエンジントルク要求値とステップＳ１３０にて設定された限界値である今回の制御周期におけるエンジントルク上限値とを比較する（Ｓ１４０）。異常判定部１３０は、エンジントルク要求値がエンジントルク上限値以下であるとき、演算制御部１１０に異常はないと判定し、演算制御部１１０による一連の制御演算処理によって演算されたエンジントルク要求値を出力する（Ｓ１５０）。エンジン３０は、異常判定部１３０から出力されたエンジントルク要求値に基づいて制御される。
【００５８】
一方、異常判定部１３０は、エンジントルク要求値がエンジントルク上限値より大きいとき、演算制御部１１０に異常があると判定し、演算処理部１１０によって演算されたエンジントルク要求値の代わりにエンジントルク上限値を出力する（Ｓ１６０）。エンジン３０は、出力されたエンジントルク上限値に基づいて制御される。このように、演算処理部１１０により演算されたエンジントルク要求値がエンジントルク上限値よりも大きい場合には、エンジントルク上限値をエンジントルク要求値として出力することで、演算処理部１１０に異常が生じて誤計算されたとしても、適正なリミットをかけることができる。これにより、車両の制御不能を確実に回避することができる。
【００５９】
ステップＳ１６０にてエンジントルク要求値の代わりにエンジントルク上限値が出力されると、異常判定部１３０は、演算処理部１１０に異常が生じていることをアラームにて通知する（Ｓ１７０）。例えば、異常通知は、例えば車両のメータに故障灯を点灯させる等の処置により行われる。これにより、ドライバは、車両を停止させる、またはサービスステーションへ車両を入庫させるなどの適切な対応をとることができる。
【００６０】
その後、異常判定部１３０は、演算処理部１１０に対してリセットをかけることで、異常からの復帰を図る（Ｓ１８０）。なお、演算処理部１１０のリセットは、例えばステップＳ１４０においてエンジントルク要求値がエンジントルク上限値以上である状態が所定の回数連続して生じた場合に行ってもよい。
【００６１】
なお、上述した例では、アクセル開度と異常判定部１３０から過去に出力されたエンジントルク要求値とから、図５の相関情報に基づいてエンジントルク上限値を推定したが、本発明はかかる例に限定されない。演算処理部１１０により演算されたエンジントルク要求値がエンジントルク上限値を上回っていない間は、アクセル開度と演算処理部１１０により演算されたエンジントルク要求値とから、相関情報に基づいてエンジントルク上限値を推定してもよい。そして、エンジントルク要求値がエンジントルク上限値を上回る状態が複数回連続して生じた場合は、アクセル開度と異常判定部１３０から過去に出力されたエンジントルク上限値とから、図５の相関情報に基づいて、エンジントルク上限値を推定してもよい。
【００６２】
［１．５．まとめ］
以上、本発明の第１の実施形態に係るエンジン制御システムの構成と、ＥＣＵ２０におけるインストラクションチェック処理について説明した。本発明の第１の実施形態によれば、アクセル開度に基づいてエンジントルク要求値を演算する演算制御部１１０を備えたＥＣＵ２０において、演算処理部１１０に異常が生じ、エンジントルク要求値が異常値を示した場合であっても、エンジントルク要求値と推定処理部１２０により推定されたエンジントルク上限値とを比較することによって演算処理部１１０における異常の発生を確実に検出することが可能となる。そして、異常判定部１３０は、異常が発生したと判定した場合は、エンジントルク要求値をエンジントルク上限値に制限することで、車両が制御不能となることを確実に抑止することが可能となる。
【００６３】
＜２．第２の実施形態＞
次に、図６〜図８に基づいて、本発明の第２の実施形態に係る制御システムの構成とこれによるインストラクションチェック処理について説明する。本実施形態に係る制御システムは、動力源としてエンジンおよびモータを備えるハイブリット車両に適用され、センサからの入力信号に基づいて車両のエンジンおよびモータの制御値をそれぞれ演算するハイブリッドコントローラを備える。以下、本実施形態に係る制御システムおよびハイブリッドコントローラの構成およびその機能について説明する。
【００６４】
［２．１．制御システム］
まず、図６を参照して、本実施形態に係る制御システムの概略構成について説明する。図６は、本実施形態に係る制御システムの概略構成を示すブロック図である。なお、図６において、図１に示した第１の実施形態に係るエンジン制御システムと同一の機能部に対しては図１と同一の符号を付し、詳細な説明を省略する。
【００６５】
第２の実施形態に係る制御システムは、ハイブリッドコントローラ４０を備える。ハイブリッドコントローラ４０は、各種センサ１０からの入力信号に基づいて、エンジン３０を統括的に制御するエンジン制御ユニット（ＥＣＵ）２０Ａ、モータ６０を統括的に制御するモータ制御ユニット（以下、「ＭＣＵ（Motor Control Unit）」ともいう。）５０およびトランスミッション制御ユニット（以下、「ＴＣＵ（Transmission Control Unit）」ともいう。）７０を制御する。センサ１０としては、第１の実施形態に係るエンジン制御システムと同様、例えばアクセル開度センサ１２や速度センサ１４、加速度センサ１６、舵角センサ１８等がある。
【００６６】
ＥＣＵ２０Ａは、ハイブリッドコントローラ４０により演算されたエンジン３０を制御するための制御値であるエンジントルク要求値に基づいて、エンジン３０を駆動する。ＭＣＵ５０は、ハイブリッドコントローラ４０により演算されたモータ６０を制御するための制御値であるモータトルク要求値に基づいて、モータ６０を駆動する。ＴＣＵ７０は、ハイブリッドコントローラ４０により演算されたトランスミッション制御値に基づいて、トランスミッションを制御する。
【００６７】
ハイブリッドコントローラ４０は、ＥＣＵ２０Ａ、ＭＣＵ５０およびＴＣＵ７０を制御する制御装置である。例えば、本実施形態に係るハイブリッドコントローラ４０は、センサ１０のうちアクセル開度センサ１２からの入力信号であるアクセル開度に基づいて、ＥＣＵ２０Ａへ出力するエンジントルク要求値およびＭＣＵ５０へ出力するモータトルク要求値をそれぞれ演算する。このとき、ハイブリッドコントローラ４０は、演算した各トルク要求値についてインストラクションチェックを実行し、ハイブリッドコントローラ４０の演算処理部に異常がないか否かを検出している。
【００６８】
ＥＣＵ２０Ａ、ＭＣＵ５０、ＴＣＵ７０およびハイブリッドコントローラ４０は、第１の実施形態に係るＥＣＵ２０と同様、入力信号が入力される入力回路と、入力信号に基づいて制御演算処理を実行する１または複数のマイコン（またはコア）と、マイコンによる演算結果である出力信号を出力する出力回路とを備える。これらはマイコンにより実行される演算処理に必要な各種情報を記憶する記憶部を備えてもよい。また、特にハイブリッドコントローラ４０を構成するマイコンは、以下に説明するインストラクションチェックを実行可能な性能を有しているものとする。
【００６９】
［２．２．ハイブリッドコントローラにおけるインストラクションチェック］
次に、図７に基づいて、本実施形態に係るハイブリッドコントローラ４０によるインストラクションチェックについて説明する。以下では、制御対象をエンジン３０およびモータ６０として、ハイブリッドコントローラ４０によってアクセル開度（検出値）からエンジントルク要求値およびモータトルク要求値（以上、制御値）を演算する際に行われるインストラクションチェックを例として説明する。なお、図７は、本実施形態に係るハイブリッドコントローラ４０によるインストラクションチェックを実行する機能部を示す機能ブロック図である。
【００７０】
ハイブリッドコントローラ４０は、当該ハイブリッドコントローラ４０に搭載されたマイコンの演算処理に異常があるか否かを検出するインストラクションチェックを実施する。本実施形態において、インストラクションチェックは、センサ１０から入力された検出値に基づいて、制御対象であるエンジン３０およびモータ６０を制御するためのエンジントルク要求値およびモータトルク要求値を演算する一連の制御演算処理を実行するとともに、この一連の制御演算処理のうち少なくとも一部を実行することなくエンジントルク要求値の限界値であるエンジントルク上限値およびモータトルク要求値の限界値であるモータトルク上限値を推定し、これらの演算値を比較することで行われる。
【００７１】
このように、一連の制御演算処理を実行することなく推定されたエンジントルク上限値およびモータトルク上限値を用いてインストラクションチェックを実行することで、インストラクションチェックにおけるハイブリッドコントローラ４０の演算負荷を大幅に軽減でき、ハイブリッドコントローラ４０による制御演算処理の演算結果の正当性を保障することができる。
【００７２】
［２．３．制御装置の構成］
ハイブリッドコントローラ４０は、図７に示すように、例えば演算処理部２１０と、エンジントルク上限値推定処理部２２０と、エンジントルク異常判定部２３０と、エンジントルク相関情報記憶部２４０とを備える。また、ハイブリッドコントローラ４０は、例えば、モータトルク上限値推定処理部２５０と、モータトルク異常判定部２６０と、モータトルク相関情報記憶部２７０とをさらに備える。
【００７３】
演算処理部２１０は、制御対象であるエンジン３０およびモータ６０を制御するための制御値を演算する一連の制御演算処理を実行する。演算処理部２１０は、前段処理部２１２である入力信号処理部２１２ａと、前段処理部２１２の処理結果に基づいて制御値を演算するエンジントルク用後段処理部２１４Ａおよびモータトルク用後段処理部２１４Ｂとからなる。
【００７４】
前段処理部２１２である入力信号処理部２１２ａは、アクセル開度センサ１２から入力される入力信号の前処理を実行する。本実施形態に係る入力信号処理部２１２ａは、第１の実施形態に係る入力信号処理部１１２ａと同様、アクセル開度に対するＡ／Ｄ変換処理や検出値のなまし処理、ノイズ除去処理等を行い、各後段処理部２１４Ａ、２１４Ｂにおける演算処理の前処理を行う。入力信号処理部２１２ａは、前処理した入力信号を各後段処理部２１４Ａ、２１４Ｂへ出力する。
【００７５】
エンジントルク用後段処理部２１４Ａは、前段処理部２１２から入力された入力信号であるアクセル開度に基づいて、制御対象であるエンジン３０を制御するためのエンジントルク要求値（第１の制御値）を演算する。また、モータトルク用後段処理部２１４Ｂは、前段処理部２１２から入力されたアクセル開度に基づいて、制御対象であるモータ６０を制御するためのモータトルク要求値（第２の制御値）を演算する。
【００７６】
エンジントルク用後段処理部２１４Ａおよびモータトルク用後段処理部２１４Ｂは、ドライバ目標駆動力演算処理部２１４ａと、エネルギマネジメント処理部２１４ｂと、トルク分配制御処理部２１４ｃとを共有する。そして、エンジントルク用後段処理部２１４Ａは、トルク分配制御処理部２１４ｃの演算結果に基づいてエンジントルク要求値を演算するドライバ目標エンジントルク演算処理部２１４ｄをさらに備え、モータトルク用後段処理部２１４Ｂは、トルク分配制御処理部２１４ｃの演算結果に基づいてモータトルク要求値を演算するドライバ目標モータトルク演算処理部２１４ｅをさらに備える。
【００７７】
ドライバ目標駆動力演算処理部２１４ａは、アクセル開度に基づいて、ドライバがエンジン３０およびモータ６０に対して要求している総目標駆動力を演算し、エネルギマネジメント処理部２１４ｂへ出力する。エネルギマネジメント処理部２１４ｂは、ドライバ目標駆動力演算処理部２１４ａにて演算された総目標駆動力を受けて、車両全体において燃費が良くなるようなエンジン３０およびモータ６０に対するエネルギの使用配分等を考慮し、エンジントルク値およびモータトルク値を演算する。
【００７８】
トルク分配制御処理部２１４ｃは、エネルギマネジメント処理部２１４ｂにより演算されたエネルギの配分に基づいて、エンジン３０又はモータ６０の動作にショックや振動等が生じないようにバランスをとり、エンジン３０を制御するためのエンジントルク値およびモータ６０を制御するためのモータトルク値を最終的に決定する。トルク分配制御処理部２１４ｃは、決定したエンジントルク値をドライバ目標エンジントルク演算処理部２１４ｄへ出力し、モータトルク値をドライバ目標モータトルク演算処理部２１４ｅへ出力する。
【００７９】
ドライバ目標エンジントルク演算処理部２１４ｄは、トルク分配制御処理部２１４ｃにより演算されたエンジントルク値に基づいて、当該エンジントルク値を出力するためにエンジン３０を制御する第１の制御値であるエンジントルク要求値を演算する。ドライバ目標エンジントルク演算処理部２１４ｄは、演算したエンジントルク要求値をエンジントルク異常判定部２３０へ出力する。
【００８０】
ドライバ目標モータトルク演算処理部２１４ｅは、トルク分配制御処理部２１４ｃにより演算されたモータトルク値に基づいて、当該モータトルク値を出力するためにモータ６０を制御する第２の制御値であるモータトルク要求値を演算する。ドライバ目標モータトルク演算処理部２１４ｅは、演算したモータトルク要求値をモータトルク異常判定部２６０へ出力する。
【００８１】
以上のようにして、演算処理部２１０は、アクセル開度センサ１２により検出されたアクセル開度を入力信号として、前段処理部２１２、エンジントルク用後段処理部２１４Ａおよびモータトルク用後段処理部Ｂによる一連の制御演算処理を実行し、制御値であるエンジントルク要求値およびモータトルク要求値を算出する。各制御値の算出は、所定の制御周期毎（例えば、１０ｍｓ毎）に逐次行われる。なお、本実施形態に係る前段処理部２１２およびエンジントルク用後段処理部２１４Ａにより特許請求の範囲における「第１の演算処理部」は構成されている。同様に、本実施形態に係る前段処理部２１２およびモータトルク用後段処理部２１４Ｂにより特許請求の範囲における「第２の演算処理部」は構成されている。
【００８２】
エンジントルク上限値推定処理部２２０は、演算処理部２１０の入力信号処理部２１２ａからのアクセル開度と、後述するエンジントルク異常判定部２３０により過去に演算されて出力されたエンジントルク要求値とに基づいて、制御対象であるエンジン３０を制御するための第１の制御値の限界値を推定する。エンジントルク限界推定処理部２２０は、例えば演算処理部２１０の故障によってエンジン３０を制御するための第１の制御値が誤って演算されたときに、実際にエンジン３０へ出力される第１の制御値に制限をかけるための限界値を推定する。本実施形態では、エンジントルク上限値推定処理部２２０は、エンジントルク要求値の限界値として、エンジントルクの上限値（以下、「エンジントルク上限値」ともいう。）を推定する。
【００８３】
第１の実施形態と同様に、エンジントルク上限値推定処理部２２０は、エンジントルク上限値を、エンジントルク要求値を演算するための一連の制御演算処理を実行することなく推定することで、インストラクションチェックにおけるハイブリットコントローラ４０の演算負荷を大幅に軽減している。なお、エンジントルク上限値推定処理部２２０によるエンジントルク上限値の推定処理の詳細については後述する。エンジントルク上限値推定処理部２２０により推定されたエンジントルク上限値は、エンジントルク異常判定部２３０へ出力される。エンジントルク上限値推定処理部２２０によるエンジントルク上限値の推定処理は、演算処理部２１０と同様に、制御周期毎に逐次行われる。
【００８４】
エンジントルク異常判定部２３０は、演算処理部２１０により演算されたエンジントルク要求値と、エンジントルク上限値推定処理部２２０により推定されたエンジントルク上限値とに基づいて、演算処理部２１０の異常の有無を制御周期毎に判定する。エンジントルク異常判定部２３０は、エンジントルク要求値とエンジントルク上限値とを比較し、比較結果から演算処理部２１０に異常があるか否かを判定する。
【００８５】
エンジントルク異常判定部２３０は、演算処理部２１０に異常がないと判定した場合には演算処理部２１０により演算されたエンジントルク要求値をそのまま出力する。一方、演算処理部２１０に異常があると判定した場合には、エンジントルク異常判定部２３０は、エンジントルク上限値を、演算処理部２１０により演算されたエンジントルク要求値の代わりにエンジントルク要求値として出力する。
【００８６】
エンジントルク相関情報記憶部２４０は、エンジントルク上限値推定処理部２２０がエンジントルク上限値を推定するために用いる情報を記憶する。本実施形態において、エンジントルク相関情報記憶部２４０には、例えばアクセル開度と前回エンジントルク要求値との相関関係に基づき予め設定されたエンジントルク上限値を表すエンジントルク相関情報が記憶されている。
【００８７】
モータトルク上限値推定処理部２５０は、演算処理部２１０の入力信号処理部２１２ａからのアクセル開度と、により過去に演算されて出力されたモータトルク要求値とに基づいて、制御対象であるモータ６０を制御するための第２の制御値の限界値を推定する。モータトルク限界値推定処理部２５０は、例えば演算処理部２１０の故障によってモータ６０を制御するための第２の制御値が誤って演算されたときに、実際にモータ６０へ出力される第２の制御値に制限をかけるための限界値を推定する。本実施形態では、モータトルク上限値推定処理部２５０は、モータトルク要求値の限界値として、モータトルクの上限値（以下、「モータトルク上限値」ともいう。）を推定する。
【００８８】
モータトルク上限値推定処理部２５０は、モータトルク上限値を、モータトルク要求値を演算するための一連の制御演算処理を実行することなく推定することで、インストラクションチェックにおけるハイブリットコントローラ４０の演算負荷を大幅に軽減している。なお、モータトルク上限値推定処理部２５０によるモータトルク上限値の推定処理の詳細については後述する。モータトルク上限値推定処理部２５０により推定されたモータトルク上限値は、モータトルク異常判定部２６０へ出力される。モータトルク上限値推定処理部２５０によるモータトルク上限値の推定処理は、演算処理部２１０と同様に、制御周期毎に逐次行われる。
【００８９】
モータトルク異常判定部２６０は、演算処理部２１０により演算されたモータトルク要求値と、モータトルク上限値推定処理部２５０により推定されたモータトルク上限値とに基づいて、演算処理部２１０の異常の有無を制御周期毎に判定する。モータトルク異常判定部２６０は、モータトルク要求値とモータトルク上限値とを比較し、比較結果から演算処理部２１０に異常があるか否かを判定する。
【００９０】
モータトルク異常判定部２６０は、演算処理部２１０に異常がないと判定した場合には演算処理部２１０により演算されたモータトルク要求値をそのまま出力する。一方、演算処理部２１０に異常があると判定した場合には、モータトルク異常判定部２６０は、モータトルク上限値を、モータトルク要求値の代わりにモータトルク要求値として出力する。
【００９１】
モータトルク相関情報記憶部２７０は、モータトルク上限値推定処理部２５０がモータトルク上限値を推定するために用いる情報を記憶する。本実施形態において、モータトルク相関情報記憶部２７０には、例えばアクセル開度とモータトルク異常判定部２６０から過去に出力された過去のモータトルク要求値との相関関係に基づき予め設定されたモータトルク上限値を表すモータトルク相関情報が記憶されている。
【００９２】
なお、エンジントルク異常判定部２３０およびモータトルク異常判定部２６０は、システムが備える機器に何らかの異常が生じている場合に、エンジントルク要求値に制限をかける機能をも含んでいる。
【００９３】
また、インストラクションチェックのための演算処理部２１０による各制御値の演算処理、エンジントルク上限値推定処理部２２０およびモータトルク上限値推定処理部２５０による限界値の演算処理、およびエンジントルク異常判定部２３０およびモータトルク異常判定部２６０による異常判定処理は、例えばハイブリッドコントローラ４０が備える複数のコアにより個別に実行してもよい。あるいは、インストラクションチェックのためのこれらの処理を、システムが備える複数のマイコンによって個別に実行してもよく、若しくは、システムが備える１つのマイコンによって各処理を順次実行してもよい。
【００９４】
さらに、エンジントルク相関情報記憶部２４０とモータトルク相関情報記憶部２７０とは、別個の記憶媒体としてそれぞれ設けられていてもよく、同一の記憶媒体であってもよい。
【００９５】
[２．４．インストラクションチェック処理］
図７に示した機能を有するハイブリッドコントローラ４０は、図８に示す処理フローに基づきインストラクションチェックを実行する。まず、入力信号処理部２１２ａは、センサ１０からの検出値の入力を受け（Ｓ２００）、検出値の前処理を行う（Ｓ２０２）。ステップＳ２００およびＳ２０２の処理は、第１の実施形態におけるステップ１００およびＳ１１０の処理と同様である。入力信号処理部２１２ａは、前処理したアクセル開度を、演算処理部２１０のエンジントルク用後段処理部２１４Ａ、モータトルク用後段処理部２１４Ｂ、エンジントルク上限値推定処理部２２０およびモータトルク上限値推定処理部２５０へ出力する。
【００９６】
次いで、演算処理部２１０のエンジントルク用後段処理部２１４Ａおよびモータトルク用後段処理部２１４Ｂは、入力信号処理部２１２ａから入力されたアクセル開度に基づいて、車両が備える２つの動力源であるエンジン３０およびモータ６０に対する総目標駆動力を演算し、総目標駆動力をエンジン３０およびモータ６０にそれぞれ分配する処理を行う（Ｓ２０４）。ステップＳ２０４は、エンジントルク用後段処理部２１４Ａおよびモータトルク用後段処理部２１４Ｂの共通処理である。
【００９７】
すなわち、まず、ドライバ目標駆動力演算処理部２１４ａによりドライバがエンジン３０およびモータ６０に対して要求している総目標駆動力が演算され、この総目標駆動力に基づいてエネルギマネジメント処理部２１４ｂによりエンジン３０およびモータ６０に対するエネルギの使用配分が演算される。そして、トルク分配制御処理部２１４ｃは、演算されたエネルギの配分に基づいてエンジン３０により出力するエンジントルク値およびモータ６０により出力するモータトルク値を決定する。エンジントルク値はドライバ目標エンジントルク演算処理部２１４ｄに出力され、モータトルク値はドライバ目標モータトルク演算処理部２１４ｅに出力される。
【００９８】
ステップＳ２０４の処理を終えると、ハイブリッドコントローラ４０は、次に、制御対象ごとの処理を実行する。まず、エンジントルク用後段処理部２１４Ａのドライバ目標エンジントルク演算処理部２１４ｄより当該エンジントルク値を出力するためのエンジン３０の第１の制御値であるエンジントルク要求値が演算される（Ｓ２０６）。エンジントルク用後段処理部２１４Ａにより演算されたエンジントルク要求値は、エンジントルク異常判定部２３０へ出力される。
【００９９】
また、エンジントルク上限値推定処理部２２０は、入力信号処理部２１２ａから入力されたアクセル開度と演算処理部２３０により過去に演算されて出力されたエンジントルク要求値とに基づいて、エンジントルク上限値を推定する（Ｓ２０８）。過去のエンジントルク要求値は、本実施形態では、前回の制御周期において出力された前回エンジントルク要求値である。エンジントルク上限値推定処理部２２０は、第１の実施形態と同様に、エンジントルク相関情報記憶部２４０に記憶されたエンジントルク相関情報に基づいて、エンジントルク上限値を推定する。エンジントルク相関情報は、例えば図４に示すように予め設定されている。なお、ステップＳ２０６とＳ２０８の処理は、いずれを先に実行してもよく、並列して実行してもよい。
【０１００】
エンジントルク異常判定部２３０は、ステップＳ２０６にて演算された制御値であるエンジントルク要求値とステップＳ２０８にて設定された限界値である今回の制御周期におけるエンジントルク上限値とを比較する（Ｓ２１０）。エンジントルク異常判定部２３０は、エンジントルク要求値がエンジントルク上限値以下であるとき、演算制御部２１０に異常はないと判定し、演算制御部２１０による一連の制御演算処理によって演算されたエンジントルク要求値でエンジン３０を出力する（Ｓ２１２）。エンジン３０は、エンジントルク異常判定部２３０から出力されたエンジントルク要求値に基づいて制御される。
【０１０１】
一方、エンジントルク異常判定部２３０は、エンジントルク要求値がエンジントルク上限値より大きいとき、演算制御部２１０に異常があると判定し、演算処理部２１０によって演算されたエンジントルク要求値の代わりにエンジントルク上限値を出力する（Ｓ２１４）。エンジン３０は、出力されたエンジントルク上限値に基づいて制御される。このように、演算処理部２１０により演算されたエンジントルク要求値がエンジントルク上限値よりも大きい場合には、エンジントルク上限値をエンジントルク要求値として出力することで、演算処理部２１０に異常が生じて誤計算されたとしても、適正なリミットをかけることができる。これにより、車両の制御不能を確実に回避することができる。
【０１０２】
ステップＳ２１４にてエンジントルク要求値の代わりにエンジントルク上限値が出力されると、エンジントルク異常判定部２３０は、演算処理部２１０に異常が生じていることをアラームにて通知する（Ｓ２１６）。その後、エンジントルク異常判定部２３０は、演算処理部２１０に対してリセットをかけることで、異常からの復帰を図る（Ｓ２１８）。なお、演算処理部２１０のリセットは、例えばステップＳ２１０においてエンジントルク要求値がエンジントルク上限値以上である状態が所定の回数連続して生じた場合に行ってもよい。ステップＳ２１６およびＳ２１８の処理は、第１の実施形態におけるステップ１７０およびＳ１８０の処理と同様にしてもよい。
【０１０３】
一方、モータ６０を制御するためのエンジントルク要求値の演算処理も、エンジントルク要求値の演算処理と同様に実行される。まず、モータトルク用後段処理部２１４Ｂのドライバ目標モータトルク演算処理部２１４ｅより当該モータトルク値を出力するためのモータ６０の第２の制御値であるモータトルク要求値が演算される（Ｓ２２０）。モータトルク用後段処理部２１４Ｂにより演算されたモータトルク要求値は、モータトルク異常判定部２６０へ出力される。
【０１０４】
また、モータトルク上限値推定処理部２５０は、入力信号処理部２１２ａから入力されたアクセル開度とモータトルク異常判定部２５０により過去に演算されて出力されたモータトルク要求値とに基づいて、モータトルク上限値を推定する（Ｓ２２２）。過去のモータトルク要求値は、本実施形態では、前回の制御周期において出力された前回モータトルク要求値である。
【０１０５】
モータトルク相関情報も、エンジントルク相関情報と同様に、例えば図４に示すように予め設定されている。モータトルクにおいても、アクセル開度とモータトルク要求値との間には、アクセル開度または過去の制御周期におけるモータトルク要求値のいずれか一方若しくは双方が大きいほど、今回の制御周期におけるモータトルク要求値が大きくなるという相関関係がある。また、モータトルク要求値も、アクセル開度が一定条件にある場合には急激に変化しないという特性がある。
【０１０６】
このような相関関係に基づいて、今回検出されたアクセル開度と過去に出力されたモータトルク要求値とを用いて、今回のモータトルク要求値の限界値を予め設定するための相関情報が規定される。なお、モータトルク相関情報は、図４に示すエンジントルク相関情報と同様に規定されるが、モータトルク相関情報中のモータトルク要求値の限界値は、エンジン３０およびモータ６０の仕様に応じてエンジントルク要求値の限界値とは異なる値に設定される。
【０１０７】
モータトルク上限値推定処理部２５０は、ステップＳ２０８の処理と同様に、モータトルク相関情報記憶部２７０に記憶されたモータトルク相関情報に基づいて、モータトルク上限値を推定し、推定したモータトルク上限値をモータトルク異常判定部２６０へ出力する。なお、ステップＳ２２０とＳ２２２の処理は、いずれを先に実行してもよく、並列して実行してもよい。
【０１０８】
モータトルク異常判定部２６０は、ステップＳ２２０にて演算された制御値であるモータトルク要求値とステップＳ２２２にて設定された限界値である今回の制御周期におけるモータトルク上限値とを比較する（Ｓ２２４）。モータトルク異常判定部２６０は、モータトルク要求値がモータトルク上限値以下であるとき、演算制御部２１０に異常はないと判定し、演算制御部２１０による一連の制御演算処理によって演算されたモータトルク要求値でモータ６０を出力する（Ｓ２２６）。モータ６０は、モータトルク異常判定部２６０から出力されたモータトルク要求値に基づいて制御される。
【０１０９】
一方、モータトルク異常判定部２６０は、モータトルク要求値がモータトルク上限値より大きいとき、演算制御部２１０に異常があると判定し、演算処理部２１０によって演算されたモータトルク要求値の代わりにモータトルク上限値を出力する（Ｓ２２８）。モータ６０は、出力されたモータトルク上限値に基づいて制御される。このように、演算処理部２１０により演算されたモータトルク要求値がモータトルク上限値よりも大きい場合には、モータトルク上限値をモータトルク要求値として出力することで、演算処理部２１０に異常が生じて誤計算されたとしても、適正なリミットをかけることができる。これにより、車両の制御不能を確実に回避することができる。
【０１１０】
ステップＳ２２８にてモータトルク要求値の代わりにモータトルク上限値が出力されると、モータトルク異常判定部２６０は、ステップ２１６と同様に、演算処理部２１０に異常が生じていることをアラームにて通知する（Ｓ２３０）。その後、モータトルク異常判定部２６０は、演算処理部２１０に対してリセットをかけることで、異常からの復帰を図る（Ｓ２３２）。なお、モータトルク要求値の演算処理にのみ異常が生じている場合は、システム全体の制御を停止させず、システムの制御をＥＣＵ２０Ａおよびエンジン３０によって行い、ＭＣＵ５０及びモータ６０を停止させるようにしてもよい。異常の内容によってリセットする対象は適宜決定される。
【０１１１】
[２．５．シミュレーション結果］
次に、第２の実施形態に係るインストラクションチェックを実施した場合における、車両の制御不能状態からの回避の可否を検討するために実施したシミュレーションについて説明する。本シミュレーションでは、トルク要求値に対して追加トルクを加算して車両の制御不能状態を模擬し、インストラクションチェックを行わない場合と本発明の第２の実施形態に係るインストラクションチェックを行った場合とについて、車両の制御不能状態からの回避の可否を確認した。
【０１１２】
図９に、インストラクションチェックを行わない場合のシミュレーション結果を示す。図９の縦軸は、上から順に、アクセル開度及びブレーキ開度（％）、車速（ｋｍ／ｈ）、エンジン回転数（ｒｐｍ）、エンジントルク要求値（Ｎｍ）、モータトルク要求値（Ｎｍ）をそれぞれ示している。また、図９の横軸は、車両が始動してからの経過時間を示している。
【０１１３】
図９に示すシミュレーションでは、アクセル開度を大きくして車速を加速させ、始動から３０秒経過時に演算処理部２１０により演算されたエンジントルク要求値に対してさらに約１００Ｎｍのトルクを入力して車両の制御不能状態を模擬した。車両が制御不能状態となった後、アクセル開度を０％にしているが、エンジントルク要求値は減少せず、車速は増加し続ける結果となった。
【０１１４】
これに対し、図１０に、本発明の第２の実施形態に係るインストラクションチェックを行った場合のシミュレーション結果を示す。図１０では、エンジントルク要求値、及びモータトルク要求値の特性に対し、エンジントルク上限値とモータトルク上限値がそれぞれ示されている。エンジントルク上限値は、アクセル開度が０よりも大きい場合は、図５のエンジントルク相関関係に従って、エンジントルク要求値よりも僅かに大きい値に設定される。
【０１１５】
図１０に示すシミュレーションでも図９と同様、アクセル開度を大きくして車速を加速させ、始動から３０秒経過時に演算処理部２１０により演算されたエンジントルク要求値に対してさらに約１００Ｎｍのトルクを入力して車両の制御不能状態を模擬した。車両が制御不能状態となった後、始動から３５秒経過時にアクセル開度が０％にされると、エンジントルク要求値は図５のエンジントルク相関関係から規定されるエンジントルク上限値によって制限されてトルクダウンした。これに伴い、車速も減少し、車両の制御不能状態が回避される結果となった。
【０１１６】
なお、図１０では、アクセル開度が０％とされた後にエンジントルク要求値がエンジントルク上限値によって制限されるものとしているが、アクセル開度が０％に到達する以前にエンジントルク要求値がエンジントルク上限値によって制限されるようにしてもよい。エンジントルク上限値による制限が加わるタイミングは、図５のエンジントルク相関情報を適宜設定することで可変にできる。
【０１１７】
また、モータトルクについては、モータトルク要求値が負の値の場合は回生制御が行われているため、モータ６０からトルクは発生していない。したがって、モータトルク要求値が負の値の場合は、モータトルク上限値は“０”に設定される。モータトルク要求値が正の値になり、モータ６０からトルクが発生すると、図５に示すエンジントルク相関情報と同等に設定されたモータトルク相関情報に従って、モータトルク要求値がモータトルク上限値以下に制御される。
【０１１８】
図１０に示す例では、車両の始動から５〜１０秒経過時にモータトルク要求値が正の値となり、この区間ではモータトルク要求値より僅かに大きな値にモータトルク上限値が設定される。そして、モータ６０に対して、始動から５５秒経過時にモータトルク要求値に対してさらに約１００Ｎｍのトルクを入力して車両の制御不能状態を模擬した。この場合にも、モータトルク要求値はモータトルク上限値によってゼロに制限され、車両を加速させることはなかった。
【０１１９】
以上のシミュレーション結果より、本実施形態に係るハイブリッドコントローラ４０によるインストラクションチェックを実施することによって、車両の制御不能状態を適切に回避できることがわかる。
【０１２０】
[２．６．まとめ］
以上、本発明の第２の実施形態に係るエンジン制御システムの構成と、ハイブリッドコントローラ４０におけるインストラクションチェック処理について説明した。本実施形態によれば、アクセル開度に基づいてエンジントルク要求値およびモータトルク要求値を演算する演算制御部２１０を備えたハイブリッドコントローラ４０において、演算処理部２１０に異常が生じてエンジントルク要求値またはモータトルク要求値が異常値を示した場合であっても、エンジントルク要求値とエンジントルク上限値とを比較し、また、モータトルク要求値とモータトルク上限値とを比較することによって演算処理部２１０における異常の発生を確実に検出することが可能となる。そして、異常が発生した場合は、エンジントルク要求値またはモータトルク要求値を各上限値に制限することで、車両が制御できなくなることを確実に抑止することが可能となる。
【０１２１】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【０１２２】
例えば、上記実施形態では、インストラクションチェックはアクセル開度からトルク要求値を演算する処理に対して実行されたが、本発明はかかる例に限定されない。例えば、決定されたエンジントルク要求値からＥＣＵ２０（あるいはＥＣＵ２０Ａ）にてスロットル開度または燃料噴射量を決定する一連の演算処理に対するインストラクションチェックにも適用できる。また、例えば、決定されたモータトルク要求値からＭＣＵ５０にてモータ６０の電流値を決定する一連の演算処理に対するインストラクションチェックにも適用できる。
【０１２３】
また、上記実施形態では、制御値の限界値の一例として、トルク要求値の上限値を用いたが、本発明はかかる例に限定されない。例えば、制御対象や制御値の種別等に応じて、制御値の限界値として、上限値に代えて下限値を用いてもよい。
【０１２４】
さらに、上記実施形態では、今回の検出値と演算処理部により過去に出力された制御値とに基づいて制御値の限界値を推定する処理において、過去に出力された制御値として前回の制御周期での制御値を用いたが、本発明はかかる例に限定されない。例えば「過去に出力された制御値」とは、前回の制御周期より過去である前々回の制御周期にて出力された制御値であってもよく、さらに過去である複数回前の制御周期にて出力された制御値であってもよい。また、「過去に出力された制御値」として出力される値は、過去に出力された制御値そのものの値であってもよく、例えば過去に出力された複数の制御値の平均値、最小値または最大値等であってもよい。制御値の限界値を推定する処理に用いる過去の制御値は、その推定する制御値の特性により適宜設定可能である。
【符号の説明】
【０１２５】
１０                  センサ
１２                  アクセル開度センサ
２０                  エンジン制御ユニット（ＥＣＵ）
３０                  エンジン
４０                  ハイブリッドコントローラ
５０                  モータ制御ユニット（ＭＣＵ）
６０                  モータ
７０                  トランスミッション制御ユニット（ＴＣＵ）
１１０、２１０        演算処理部
１１２、２１２        前段処理部
１１２ａ、２１２ａ    入力信号処理部
１１４                後段処理部
１２０                推定処理部
１３０                異常判定部
１４０                記憶部
２１４Ａ              エンジントルク用後段処理部
２１４Ｂ              モータトルク用後段処理部
２２０                エンジントルク上限値推定処理部
２３０                エンジントルク異常判定部
２４０                エンジントルク相関情報記憶部
２５０                モータトルク上限値推定処理部
２６０                モータトルク異常判定部
２７０                モータトルク相関情報記憶部
【図１】
2014234732.tif 000003
【図２】
2014234732.tif 000004
【図３】
2014234732.tif 000005
【図４】
2014234732.tif 000006
【図５】
2014234732.tif 000007
【図６】
2014234732.tif 000008
【図７】
2014234732.tif 000009
【図８】
2014234732.tif 000010
【図９】
2014234732.tif 000011
【図１０】
2014234732.tif 000012