JP2004019457A - 車両用電子制御装置 - Google Patents
車両用電子制御装置 Download PDFInfo
- Publication number
- JP2004019457A JP2004019457A JP2002171504A JP2002171504A JP2004019457A JP 2004019457 A JP2004019457 A JP 2004019457A JP 2002171504 A JP2002171504 A JP 2002171504A JP 2002171504 A JP2002171504 A JP 2002171504A JP 2004019457 A JP2004019457 A JP 2004019457A
- Authority
- JP
- Japan
- Prior art keywords
- program
- calculation
- processing
- programs
- normal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】プログラム異常が検出された場合にも、可能な限り通常通りの車両制御が可能となるようなフェールセーフ処理を実現することを目的とする。
【解決手段】アクセル開度を演算するための、同一演算内容の2つのプログラムが設けられている。アクセル開度演算の実行時は、これら2つのプログラムをそれぞれ実行し(S120,S130)、各プログラムの演算結果ACCP1及びACCP2が一致するか否か判断する(S140)。一致した場合は、両プログラムが共に正常であるためACCP1を実アクセル開度ACCP0として有効化するが(S150)、一致しなかった場合は(S140:NO)、処理1プログラムについてチェックサム方式によるチェックを行う(S160,S170)。その結果、正常であったならば処理1プログラムの演算結果ACCP1を有効化し(S190)、異常であったならば、処理2プログラムの演算結果ACCP2を有効化する(S210)。
【選択図】 図3
【解決手段】アクセル開度を演算するための、同一演算内容の2つのプログラムが設けられている。アクセル開度演算の実行時は、これら2つのプログラムをそれぞれ実行し(S120,S130)、各プログラムの演算結果ACCP1及びACCP2が一致するか否か判断する(S140)。一致した場合は、両プログラムが共に正常であるためACCP1を実アクセル開度ACCP0として有効化するが(S150)、一致しなかった場合は(S140:NO)、処理1プログラムについてチェックサム方式によるチェックを行う(S160,S170)。その結果、正常であったならば処理1プログラムの演算結果ACCP1を有効化し(S190)、異常であったならば、処理2プログラムの演算結果ACCP2を有効化する(S210)。
【選択図】 図3
Description
【0001】
【発明の属する技術分野】
本発明は、演算内容が同一である2つのプログラムをそれぞれ実行して、両者の演算結果が一致したときにその演算結果を有効化する車両用電子制御装置に関する。
【0002】
【従来の技術】
従来より、車両において各種車載機器を制御するために、マイクロコンピュータ(以下「マイコン」と略す)を用いた制御処理がなされている。マイコンによる制御は、ROMやフラッシュメモリ等の記憶媒体に予め記憶されたプログラムに従って行われるものである。
【0003】
ところで、ROM等の記憶媒体に記憶される各種プログラムや制御パラメータ等にデータ化け等の異常が生じると、異常プログラム或いは異常パラメータに基づいた演算・制御がなされて正常な動作が行われなくなり、車両走行に支障を来すおそれがある。そのため、記憶媒体に記憶中のプログラムに異常が生じた場合にそれを迅速に検出して、異常に対する何らかの措置を採る必要がある。
【0004】
プログラムの異常を検出する方法としては、例えば特表平10−507805号公報に開示された方法が知られている。これは、各演算毎にプログラムをただ一つ設けてそれを実行するといったごく一般的な方法ではなく、ある演算に対応したプログラムを2つ(つまり同一演算を行う2つのプログラムを)別々の領域に設けて、各々の演算結果を比較し、一致した場合は正常であるとしてその演算結果を有効化するが、不一致の場合はプログラム異常と判断するのである。
【0005】
そして、プログラム異常と判断された場合、従来は、マイコンにリセットをかけるか、或いは出力制限(例えば車載機器の動作を制限又は停止)するといったフェールセーフ処理を実施するようにしている。
このように、演算内容が同一のプログラムを2つ設けて両者の演算結果を比較することで異常検出を行う方法は、特に、例えば燃料噴射量算出,燃料噴射時期算出,アクセル開度算出などの、車両のエンジン制御を行う上で十分な信頼性が要求されるデータを演算するプログラム(以下これを「クリティカル領域のプログラム」ともいう)に対してなされているのが一般的である。
【0006】
つまり、エンジンを制御する上で非常に重要なクリティカル領域のプログラムについては、同一プログラムを2つ設けて両者の演算結果を比較することで常にプログラムの異常検出を行い、データ(演算結果)の信頼性を高めているのである。
【0007】
【発明が解決しようとする課題】
しかしながら、上記公報に開示された方法では、データの信頼性は向上するものの、演算結果不一致によりプログラム異常と判定されると、マイコンのリセット或いは出力制限といったフェールセーフ処理をかけるため、車両の通常走行が困難になる可能性がある。
【0008】
即ち、例えば上記クリティカル領域のプログラムについて異常が検出されてマイコンリセット或いは出力制限がかかると、車両走行が停止する方向にフェールセーフがかかる(例えば速度制限或いはエンジン停止等)ことになるため、通常走行ができなくなるのである。
【0009】
一方、例えばトラック等の商用車(特にディーゼルエンジン車)では、たとえプログラムに異常が生じても、最低限の安全を確保した上で可能な限り通常走行させたいというニーズがあり、上記のようなフェールセーフ処理は商用車系のニーズには沿わない。そのため、プログラム異常が検出された後も、できる限り通常通りの走行が可能となるようなフェールセーフ処理の実施が望まれていた。
【0010】
本発明は上記課題に鑑みなされたものであり、プログラム異常が検出された場合にも、可能な限り通常通りの車両制御が可能となるようなフェールセーフ処理を実現することを目的とする。
【0011】
【課題を解決するための手段及び発明の効果】
上記課題を解決するためになされた請求項1記載の車両用電子制御装置は、車両制御に必要な所定の演算を行うためのプログラムであって演算内容が同一である2つのプログラムが、演算毎に記憶媒体に記憶されており、演算を実行する際、プログラム実行手段が、実行しようとする演算に対応した2つのプログラム(演算内容が同一)をそれぞれ実行し、演算結果判定手段が、プログラム実行手段により得られた各プログラムの演算結果が一致するか否かを判断して、演算結果が一致すると判断したとき、演算結果有効化手段がその演算結果を有効化する。
【0012】
そして、本発明では、演算結果判定手段にて一致しないと判断されたとき、プログラム判定手段が、2つのプログラムのうち一方について正常であるか否かを判断し、演算結果有効化手段は、プログラム判定手段にてその一方のプログラムが正常と判断された場合はそのプログラムによる演算結果を有効化し、プログラム判定手段にてその一方のプログラムが異常と判断された場合は、他方のプログラムによる演算結果を有効化する。
【0013】
即ち、2つのプログラムの演算結果が一致しなかった場合は、いずれか一方のプログラムについて正常か否かの判断を行い、正常であればそのプログラムによる演算結果も正常であるものとして有効化するが、逆に異常であれば、そのプログラムとは別の他方のプログラムは正常であってそれによる演算結果も正常であるものとみなして、その他方のプログラムによる演算結果を有効化するのである。
【0014】
尚、プログラム判定手段によるプログラムの具体的判断方法は、例えば判断対象のプログラム全体のチェックサム値を求め、予め記憶していたチェックサム値(正常値)と比較して、チェックサム値が一致したならばそのプログラムは正常であると判断する、といった方法を採ることができる。ただし、上記のようなチェックサム方式に限定されることはなく、プログラムが正常か否かを判断できる限り種々の方法を採用できることはいうまでもない。
【0015】
従って、請求項1記載の発明によれば、2つのプログラムの演算結果が不一致であっても、どちらのプログラムが正常であるか否かを判断し、正常なプログラムによる演算結果を有効化するため、その演算結果を用いて車両制御を通常通り行うことができる。つまり、いずれか一方のプログラムの異常が検出されても他の正常なプログラムによって通常走行を可能とするようなフェールセーフ処理が実現できるのである。
【0016】
ここで、請求項1記載の発明では、上記のように、プログラム判定手段により異常と判断された場合にその異常判断されたプログラムとは別のもう一つのプログラムについては正常であるものとみなしている。しかし、2つのプログラムがいずれも異常となったことによって演算結果が不一致となる場合も起こりうるため、一方が異常と判断されたことのみをもって無条件に他方のプログラムは正常であるものとみなすようにすると、車両制御を正常に行われなくなるおそれがある。
【0017】
そこで、例えば請求項2に記載のように、プログラム判定手段は、一方のプログラムが異常であると判断したとき、更に、他方のプログラムについても正常か否か判断し、演算結果有効化手段は、その他方のプログラムが正常と判断された場合にそのプログラムによる演算結果を有効化するようにするとよい。
【0018】
つまり、一方のプログラムが異常であった場合は、他方のプログラムについても正常か否か判断し、正常と判断されたときにはじめて、そのプログラムの正常性がより確かなものとなるため、そのプログラムの演算結果も正常であるとして有効化するのである。
【0019】
そのため、請求項1記載の発明よりも更に信頼性の高いフェールセーフ処理、延いてはより信頼性の高い車両制御の実現が可能となり、プログラム異常時の車両の通常走行をより安全に行うことが可能となる。
また、車両制御において各種演算が行われる中で、ある所定の演算実行時に、その演算に対応した2つのプログラムの演算結果が不一致となったことによりプログラム判定手段による判断が行われた場合、以後再びその演算が実行される際も、当然ながら2つのプログラムの演算結果が不一致となることが予想される。
【0020】
その際(つまり演算結果が不一致と判断された以後)、再びその演算を実行する度に2つのプログラムを共に実行してその演算結果を比較し、不一致ならばプログラム判定手段による判断を行うといった、一連の処理を繰り返してもいいのだが、上記のように一旦プログラムに異常が生じて演算結果が不一致となると、プログラム修正等の何らかの改善策を施さない限り、以後も引き続きその演算については演算結果が不一致となるのは当然に予想されることである。
【0021】
そこで、例えば請求項3に記載のように、プログラム実行手段は、プログラム判定手段にて一方のプログラムが正常と判断された場合、その後は該一方のプログラムのみを実行し、プログラム判定手段にて一方のプログラムが異常と判断された場合、その後はその他方のプログラムのみを実行して、演算結果有効化手段は、プログラム実行手段により実行されたいずれか一つのプログラムの演算結果をそのまま有効化するようにするとよい。
【0022】
つまり、ある演算に対応した2つのプログラムのいずれか一方に異常が生じた場合に、以後その演算を実行する際は、異常と判断されたプログラムは実行せず、正常なプログラムのみを実行するのである。そのため、請求項1又は2記載のように、2つのプログラムの演算結果を比較するといったことは行わず、演算結果有効化手段は、プログラム実行手段にて実行された一つのプログラムの演算結果をそのまま有効化するのである。
【0023】
このように、一旦プログラム異常が検出された以後は正常なプログラムのみを実行することにより、プログラム異常検出時の車両制御(フェールセーフ処理)をより効率的に行うことが可能となる。
尚この場合も、一方のプログラムが異常と判断されたときにそのまま他方のプログラムは正常であるものとみなすのではなく、請求項2に記載したように、他方のプログラムについても正常か否かを判断して、正常であると判断された場合に、以後のその演算実行時にその正常判断された他方のプログラムを実行するようにしてもよい。
【0024】
更にその場合、再びその演算が実行される毎に、その演算に対応したいずれかのプログラム(正常判断されたもの)をそのまま実行してもよいのだが、時間経過に伴って何らかの要因でその正常プログラムまでが異常となってしまう可能性もある。そのため、請求項3記載の発明において、プログラム実行手段がいずれかのプログラムを実行する度に、そのプログラムが正常であるか否かの判断を実行するようにしてもよい。このようにすれば、プログラム異常時の車両制御(フェールセーフ処理)の信頼性をより向上できる。
【0025】
ところで、プログラム判定手段によるプログラムの正常か否かの判断は、例えばプログラム全体のチェックサム値に基づいて行うことができることは既に述べた通りだが、プログラムが正常か否かの判断に長時間を要してしまうと、その判断中は車両制御が正常に行われなくなるおそれがある。
【0026】
具体的には、例えば燃料噴射量を演算する場合において、その演算に対応した2つのプログラムの演算結果が一致しなかった場合、プログラム判定手段による判断が行われるわけだが、その判断中に、前回演算実行時の演算結果(燃料噴射量)がそのまま有効化されたままだと、引き続きその前回の演算結果に応じた燃料噴射が継続され、結果としてユーザの意図に反した車両制御(ここでは燃料噴射量制御)が行われてしまうことになる。
【0027】
そこで、例えば請求項4に記載のように、演算結果有効化手段は、プログラム判定手段による判断の実行中は、該判断対象のプログラムに対応して予め設定されたデフォルト演算値を演算結果として有効化するとよい。
また、上記例示した燃料噴射量制御のように、プログラム判定手段にて判断されるプログラムが車両の内燃機関の動作を制御するのに必要な所定の演算を行うためのプログラムであって、車両の走行中にプログラム判断が実行される場合、上記デフォルト演算値は、例えば請求項5に記載のように、プログラム判定手段による判断の実行直前の走行速度より低速で車両が走行するように内燃機関が制御される値であるとよい。
【0028】
尚、これにより、プログラム判断中はユーザの意図に反して車両速度が低速化することになるが、デフォルト演算値が有効化されるのはあくまでもプログラム判定手段による判断実行中であって、判断終了後は、正常と判断されたプログラムの演算結果が有効化されるため、実用上支障が生じるものではない。逆に言えば、車両走行の安全性を考慮しつつ、且つ走行上明らかに支障が出る(例えば急激に減速する等)ことがないようなデフォルト演算値に設定する必要はある。
【0029】
【発明の実施の形態】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
[第1実施形態]
図1は、本実施形態の燃料噴射制御システムの概略構成を示す説明図である。本実施形態の燃料噴射制御システムは、内燃機関としてディーゼルエンジンを搭載した車両に設けられ、ディーゼルエンジンの各気筒(図示略)に燃料を噴射供給するためのものである。
【0030】
図1に示す如く、車両の運転者がアクセルペダル20を踏み込むと、その踏み込み量をアクセルセンサ21が検出して、踏み込み量に応じたアナログ電圧値をエンジン制御ECU10へ出力する。エンジン制御ECU10は、外部から入力される各種アナログ量をデジタルデータに変換(A/D変換)してマイコン11へ出力するアナログ入力回路13と、外部から入力される各種デジタルデータをマイコン11へ出力するデジタル入力回路14と、これら各回路13,14からの入力に基づいて各種制御・演算を実行するマイコン11と、マイコン11にて実行される制御・演算処理のプログラムやパラメータ等が記憶されたフラッシュメモリ12と、マイコン11による制御・演算結果に基づいて図示しない各種アクチュエータを動作させるための信号を出力する出力回路15と、により構成される。
【0031】
アナログ入力回路13には、アナログ入力値として上記のアクセル踏み込み量に応じた電圧値の他、吸入空気量や冷却水温などの各種アナログ量が入力され、デジタル入力回路14には、エンジン回転速度やスタータ信号或いは車速信号などの各種デジタルデータが入力される。これらの各種アナログ量及びデジタルデータに基づいて、マイコン11は最適な燃料噴射量や燃料噴射時期などを演算し、その演算結果に基づいた出力信号が出力回路15から各種アクチュエータ(インジェクタなど)へ出力される。
【0032】
尚、燃料噴射量や燃料噴射時期などを演算するにあたっては、アクセルペダル20の踏み込み量(以下単に「アクセル開度」ともいう)も必要となるため、マイコン11では、後述するようにアクセルセンサ21からの出力電圧に基づいてアクセル開度を算出する演算処理も行われる。
【0033】
マイコン11は、CPU31、ROM32、RAM33、I/O34を備えた周知の構成のものであり、ROM32或いはフラッシュメモリ12に格納された各種プログラムをCPU31が実行する。本実施形態では、燃料噴射量,燃料噴射時期及びアクセル開度を演算するための各プログラムが、クリティカル領域のプログラムとしていずれもフラッシュメモリ12に格納されている。
【0034】
図2に、本実施形態のエンジン制御ECU10におけるメモリマップを示す。図示の如く、フラッシュメモリ12のメモリ領域にはクリティカル領域が設定され、そのクリティカル領域において、アクセル開度を算出するためのプログラムが格納されている。より具体的には、演算内容が全く同一のプログラムが2つ(アクセル開度算出処理1プログラム及びアクセル開度算出処理2プログラム)、格納されている。
【0035】
また、RAM33のメモリ領域には、アクセル開度算出処理1プログラム(以下「処理1プログラム」と略す)の実行結果(演算結果)であるACCP1を一時的に記憶する領域と、アクセル開度算出処理2プログラム(以下「処理2プログラム」と略す)の実行結果(演算結果)であるACCP2を一時的に記憶する領域とが設けられている。また、ACCP1又はACCP2のいずれかを実アクセル開度ACCP0としてそのまま設定(記憶)するための領域も設けられており、他のプログラムがその実行過程でアクセル開度を用いる際は、このACCP0のデータを用いることになる。
【0036】
即ち、本実施形態では、アクセル開度を算出する演算処理実行時に、まず処理1プログラム及び処理2プログラムの2つのプログラムを共に実行して、各プログラムの演算結果ACCP1及びACCP2をそれぞれRAM33に記憶する。そして、ACCP1とACCP2とを比較し、両者が一致したときに、両者はいずれも正常な演算結果(換言すれば各プログラムはいずれも正常)として、その演算結果を実アクセル開度ACCP0として記憶することにより有効化する。その詳細については後述する。
【0037】
このように、同じ演算(上記例ではアクセル開度算出)を行うプログラムを2つ設け、各プログラムを実行させて演算結果が一致した場合にそれを正しい演算結果として有効化するようにしているのは、従来技術の説明においても述べた通り、このアクセル開度を用いた制御・演算処理の信頼性を向上させ、延いてはエンジン制御全体の信頼性を向上させるためである。なお、燃料噴射量を演算するプログラム、及び、燃料噴射時期を演算するプログラムについても、図2では図示しなかったものの、アクセル開度算出処理プログラムと同様、クリティカル領域のプログラムとしてそれぞれ同一演算を行うプログラムが2つ、フラッシュメモリ12に格納されている。
【0038】
また本実施形態では、アクセル開度として、上記のようにアクセルセンサ21にて検出されたアクセル開度をそのまま用いずに、それを基に演算により実アクセル開度を算出するようにしているが、この主な目的は、アクセル開度が急激に変化した場合にそれをダイレクトに制御(アクセル開度を用いる制御)に反映させないようにするためである。
【0039】
即ち、例えば運転者による急激なアクセル踏み込みや外部ノイズ等の何らかの要因によって、アクセルセンサ21からの出力電圧が急激に変化した場合、その変化をそのままアクセル開度の変化として制御に取り込むと、車両走行に支障(例えば急加速による車輪空転など)が生じるおそれがある。
【0040】
そのため、アクセルセンサ21からの出力電圧値をダイレクトに用いるのではなく、急激な変化が起こってもそれをなまして滑らかに変化させるような処理(なまし処理)を施している。即ち、処理1プログラム及び処理2プログラムが、このなまし処理を実行するものであり、アクセルセンサ21による検出信号をこれら各プログラムによりなまし処理してそれぞれアクセル開度ACCP1,ACCP2を算出する。そして、そのなまし処理後のACCP1又はACCP2を実アクセル開度ACCP0として有効化するようにしている。
【0041】
上記のように構成された本実施形態の燃料噴射制御システムにおいて、フラッシュメモリ12に格納された処理1・処理2プログラムを実行していずれか一方の演算結果を実アクセル開度として有効化するために、マイコン11にて実行されるアクセル開度演算有効化処理について、図3に基づいて説明する。図3は、マイコン11内のCPU31にて実行されるアクセル開度演算有効化処理を表すフローチャートである。マイコン11では、CPU31がROM32からアクセル開度演算有効化処理プログラムを読み出し、このプログラムに従って処理を実行する。このアクセル開度演算有効化処理は、図示しない車両のイグニションスイッチのオン後、所定の周期(例えば8msec.毎)で継続して行われるものである。
【0042】
この処理が開始されると、まずステップ(以下「S」と略す)110にて、処理1プログラム及び処理2プログラムがいずれも正常であるか否か判断される。この判断は、各プログラムについての異常フラグ(後述するS180,S200でセットされる)に基づいて行われるものであり、最初のS110実行時には当然ながらまだいずれの異常フラグもセットされていないため、各プログラム共に正常であるものとしてS120に移行する。
【0043】
S120では、フラッシュメモリ12においてクリティカル領域のプログラムとして格納されている処理1プログラム(図2参照)を実行して、アクセル開度ACCP1を算出し、RAM33における所定の領域(ACCP1記憶領域)に記憶する。続くS130では、同じくフラッシュメモリ12においてクリティカル領域のプログラムとして格納されている、処理2プログラム(図2参照)を実行して、アクセル開度ACCP2を算出し、RAM33における所定の領域(ACCP2記憶領域)に記憶する。
【0044】
そして、S140にて、処理1プログラム及び処理2プログラムの2つのプログラムの演算結果(つまりACCP1及びACCP2)を比較して、両者が一致するか否かを判断する。両者が一致すれば、2つのプログラムは正常であるものと判断できるため、S150に進み、ACCP1のデータを実アクセル開度ACCP0としてACCP0記憶領域に記憶(つまり有効化)し、一旦この処理を終了する。以後、アクセル開度を必要とする他の処理の実行にあたっては、この実アクセル開度ACCP0が用いられることになる。
【0045】
一方、例えばデータ化け等の何らかの異常が生じて処理1プログラム又は処理2プログラムのいずれか一方に異常が生じた場合は、これら2つの演算結果も異なったものとなるため、S140にて否定判定されてS160に進む。S160では、処理1プログラムが格納された領域についてチェックサム値を算出し、続くS170にて、その算出したチェックサム値が予め記憶されたチェックサム値(処理1プログラム領域に対応したチェックサム値の正常値)と一致するか否かを判断する。
【0046】
ここで一致した場合は、処理1プログラムは正常であって処理2プログラムが異常であると判断し、S180に進んで処理2プログラムについての異常フラグをセットする。そしてS190にて、S150と全く同様、ACCP1(つまり正常と判断された処理1プログラムの演算結果)を実アクセル開度ACCP0として記憶し、一旦この処理を終了する。
【0047】
S170にてチェックサムが一致しないと判断された場合は、処理1プログラムが異常であると判断すると共に、他方の処理2プログラムは正常であるものとみなして、S200にて処理1プログラムについての異常フラグをセットする。そしてS210にて、ACCP2(つまり正常とみなした処理2プログラムの演算結果)を実アクセル開度ACCP0として記憶し、一旦この処理を終了する。
【0048】
そして、上記周期(本実施形態では8msec.)で本アクセル開度演算有効化処理が実行されることにより再びS110の処理が実行されたとき、処理1プログラム及び処理2プログラムがいずれも正常であればS120以降の処理が繰り返されることになるが、S180又はS200によりいずれか一方のプログラムが異常と判断されて異常フラグがセットされている場合は、S110で否定判定されてS220に進む。
【0049】
S220では、2つのプログラムのどちらが正常(或いは異常)であるかを知るために、処理2プログラムについて異常フラグがセットされているか否かを判断する。そして、S180にて処理2プログラムに対する異常フラグがセットされているならば、S220で肯定判定されてS230に移行し、処理1プログラムを実行してその演算結果ACCP1をRAM33における所定の記憶領域に記憶する。尚、このS230の処理(処理1プログラムの実行)はS120と全く同様である。そして、続くS240にて、S150と全く同様にACCP1のデータを実アクセル開度ACCP0としてACCP0記憶領域に記憶し、一旦この処理を終了する。
【0050】
一方、S200にて処理1プログラムに対する異常フラグがセットされているならば、S220で否定判定されてS250に移行し、処理2プログラムを実行してその演算結果ACCP2をRAM33における所定の記憶領域に記憶する。尚、このS250の処理(処理2プログラムの実行)はS130と全く同様である。そして、続くS260にて、S210と全く同様にACCP2のデータを実アクセル開度ACCP0としてACCP0記憶領域に記憶し、一旦この処理を終了する。
【0051】
以上詳述したように、本実施形態の燃料噴射制御システムでは、アクセル開度を演算するための2つのプログラムの演算結果が一致しなかった場合、いずれか一方のプログラムについてチェックサム方式によるプログラムチェックを行って、正常であればそのプログラムによる演算結果を実アクセル開度ACCP0として有効化し、異常であれば他方のプログラムは正常であるものとみなしてその演算結果を有効化する。
【0052】
そのため、2つのプログラムのどちらかにデータ化け等の異常が生じてしまっても、他方の正常なプログラムによる演算結果を用いて車両制御を通常通り行うことができる。つまり、いずれか一方のプログラムの異常が検出されても他の正常なプログラムによって通常走行を可能とするようなフェールセーフ処理が実現できるのである。
【0053】
しかも、一旦プログラム異常が検出された以後は、2つのプログラムを共に実行してその演算結果を比較することはせず、正常なプログラムのみを実行(S220以降の処理を実行)するため、上記フェールセーフ処理をより効率的に行うことができる。
【0054】
ここで、本実施形態の構成要素と本発明の構成要素の対応関係を明らかにする。本実施形態において、フラッシュメモリ12は本発明の記憶媒体に相当する。また、図3のアクセル開度演算有効化処理において、S120,S130の各処理はいずれも本発明のプログラム実行手段が実行する処理に相当し、S140の処理は本発明の演算結果判定手段が実行する処理に相当し、S160,S170の各処理はいずれも本発明のプログラム判定手段が実行する処理に相当し、S150,S190,S210の各処理はいずれも本発明の演算結果有効化手段が実行する処理に相当する。
【0055】
また、S230,S250の各処理は請求項3のプログラム実行手段が実行する処理に相当し、S240,S260の各処理は請求項3の演算結果有効化手段が実行する処理に相当する。
[第2実施形態]
本実施形態でも、図1に示した燃料噴射制御システムが構成され、マイコン11にて、アクセル開度の演算・有効化等の各種処理が行われる。つまり、本実施形態の燃料噴射制御システムのハード構成自体は第1実施形態の燃料噴射制御システム(図1)と全く同じである。
【0056】
上記第1実施形態におけるアクセル開度演算有効化処理(図3参照)では、処理1プログラムと処理2プログラムの演算結果が一致しなかったとき、どちらのプログラムが正常であるか判断するために、いずれか一方のプログラムについてのみチェックサム方式による判断を行うようにした(図3のS160〜S170参照)。
【0057】
そして、チェックサム値の算出終了後に、そのチェックサム値が正規のチェックサム値と一致するか否かによってそのプログラムが正常か否かを判断し、その判断結果に従っていずれか一方の演算結果を実アクセル開度ACCP0として有効化した。
【0058】
しかしこのようにすると、S160のチェックサム値算出実行中は、S120,S130にて得られた最新のアクセル開度データ(ACCP1又はACCP2)は有効化されず、それまで有効化されていた実アクセル開度ACCP0がそのまま継続して有効化され続けている状態となる。そして、チェックサム値の算出が終了してどちらのプログラムが正常であるか判断できたときにはじめて、その最新のACCP1又はACCP2のいずれかが新たな実アクセル開度ACCP0として有効化されることになる。
【0059】
そのため、チェックサム値算出が終了してどちらのプログラムが正常であるか判断されるまでの間に他の制御プログラム等がアクセル開度データを用いる必要がある場合は、それまで有効化されていた実アクセル開度ACCP0(いわば古いデータ)を引き続き用いることになり、そのACCP0の値によっては、車両制御の精度・信頼性に影響が生じるおそれがある。
【0060】
具体的には、例えば直前の演算によりアクセル全開状態を示す値のACCP0が有効化されたときに、再びアクセル開度の演算を行った結果、演算結果が不一致となってチェックサム値の算出(S160)が開始されると、算出が終了するまでは、たとえアクセルを全く踏み込んでない場合であっても、そのアクセル全開状態を示すACCP0が有効化され続けるわけである。しかもその間は、CPU31は他の処理を実行することができない。そのため、チェックサム算出中は運転者の意図に反した車両制御(走行制御)が行われてしまうおそれがあるのである。
【0061】
そこで本実施形態では、チェックサム算出中は、予め設定したデフォルト値(本発明のデフォルト演算値)を実アクセル開度ACCP0として有効化すると共に、チェックサム算出自体も、連続的に行わずに時分割的に実行するようにしている。図4に、本実施形態のアクセル開度演算有効化処理のフローチャートを示す。図4のアクセル開度演算有効化処理も、図3のアクセル開度演算有効化処理と同様、所定周期(例えば8msec.毎)で実行されるものである。
【0062】
尚、本実施形態のアクセル開度演算有効化処理において、S120〜S150の処理は第1実施形態のアクセル開度演算有効化処理(図3)のS120〜S150と全く同じであるため、これら各処理については図3と同じ符号を付し、その詳細説明を省略する。また、後述するS340〜S380の処理も、第1実施形態のアクセル開度演算有効化処理(図3)のS220〜S260と全く同じであるため、これら各処理についてもその詳細説明は省略する。
【0063】
本アクセル開度演算有効化処理が開始されると、まずS300にて、処理1プログラム及び処理2プログラムがいずれも正常であるか否かを判断する。この判断は、基本的には図3のS110と同様であるが、本実施形態のS300では更に、処理1プログラム領域に対するチェックサムの算出要求フラグ(後述のS310でセット)がセットされているか否かも判断し、セットされていればS330に進むことになるがセットされていなければS120に進む。
【0064】
S120,S130では、それぞれACCP1,ACCP2が算出され、S140で両者の比較が行われる。そして、両者が一致した場合はS150に進んでACCP1が実アクセル開度ACCP0として有効化されるわけだが、両者が一致せずにS140で否定判定されると、S310に移行する。
【0065】
S310では、処理1プログラム領域についてチェックサム値を算出(延いては処理1プログラムが正常か否かを判断)すべき旨のチェックサム算出要求フラグをセットする。つまり、第1実施形態のようにここですぐにチェックサム値の算出を実行するのではなく、あくまでもチェックサム値を算出するようフラグのセットを行うだけである。
【0066】
そして、フラグのセット後はS320に進み、予め設定したアクセル開度のデフォルト値を実アクセル開度ACCP0として有効化する。このデフォルト値は、例えば、十分に低い速度で走行するように燃料噴射制御される値にしてもいいし、また例えば、少なくともその直前までの車両走行速度より減速して走行するように燃料噴射制御される値にする(つまりそのときの車両速度に応じてデフォルト値が変化する)ようにするなど、車両走行の安全性を考慮しつつ適宜決めることができる。
【0067】
以後、再びこのアクセル開度演算有効化処理が実行されると、チェックサム算出要求フラグがセットされているためS300では否定判定され、S330に移行する。S330では、処理1プログラムのチェックサム値の算出が終了したことを示すチェックサム算出済みフラグ(後述する図5のS600でセット)がセットされているか否かを判断し、セットされていない場合、即ちチェックサム値の算出がまだ終了していない場合は、否定判定されてS320に移行し、既述の如くデフォルト値の有効化が行われる。
【0068】
次に、処理1プログラムのチェックサム値算出について、図5に基づいて説明する。図5は、処理1プログラム領域のチェックサム値を算出して正常か否か判定するするために実行される、チェックサム算出・判定処理を示すフローチャートである。この処理も、図示しない車両のイグニションスイッチがオンされると所定周期(例えば4msec.毎)に繰り返し実行されるものである。
【0069】
この処理が開始されると、まずS510にて、処理1プログラム領域に対するチェックサム算出要求フラグがセットされているか否かを判断する。このフラグは、既述の通り、図4のアクセル開度演算有効化処理におけるS310の処理によりセットされるものである。
【0070】
このフラグがセットされていない場合(つまり処理1,処理2プログラムがいずれも正常の場合)はS510で否定判定されてそのままこの処理を終了することになるが、フラグがセットされている場合はS520に進む。S520では、iが2以上か否かが判断されるが、ここではまだiについては何ら設定されていないため、S530に移行して、ここで初めてiを1とする。
【0071】
S540では、n個の領域に分割された処理1プログラム領域のうち、i番目(ここでは1番目)の領域についてチェックサム値Ci(ここではC1)を算出する。続くS550では、S540にて算出されたi番目領域のチェックサム値Ciを、それまで累積されているチェックサム累積値Cに加えることにより、新たなチェックサム累積値Cを算出する。
【0072】
そして、S560では、処理1プログラムの全領域についてチェックサム値の算出がなされたかどうか判断し、まだ全領域終了していない場合はS620にてiをインクリメント(ここではiを1から2にインクリメント)して、一旦この処理を終了する。
【0073】
以後、所定周期(本例では4msec.毎)で再び本処理が実行されると、S520では肯定判定されてS540に進み、i番目(ここでは2番目)のチェックサム値C2を算出する。そして、続くS550にて、それまでのチェックサム累積値C(ここでは前回算出した1番目領域のチェックサム値C1)に2番目領域のチェックサム値C2を加算した新たなチェックサム累積値Cを得て、S560に移行する。
【0074】
以下、n分割された処理1プログラムの全領域のチェックサム値算出が終了するまでは、S560で否定判定されてS620の処理(iのインクリメント)が行われることになるが、i=nとなってn番目のチェックサム値Cnを算出することにより全領域のチェックサム値(つまり処理1プログラム全体のチェックサム値)が得られた場合、S560で肯定判定されてS570に進み、そのチェックサム値Cが予め記憶した正常値と一致するか否か判断する。
【0075】
ここで一致すれば、処理1プログラムは正常であるため、S580にて処理2プログラムについての異常フラグをセットするが、一致しなかった場合は、処理1プログラムは異常であって処理2プログラムは正常であるものとみなして、S590にて処理1プログラムについての異常フラグをセットする。
【0076】
S580又はS590の処理の終了後はS600に進み、処理1プログラム領域のチェックサム値算出が終了したことを示すチェックサム算出済みフラグをセットする。そして、続くS610にて、処理1プログラム領域についてのチェックサム算出要求フラグ(図4のS310でセット)及びiを共にリセットして、一旦この処理を終了する。そのため、以後再びS510の処理が行われた場合、S610でフラグリセットされているため、図4のS310実行にて再びフラグセットされない限り、このS510では否定判定され続けることになる。
【0077】
つまり、本実施形態では、図4のアクセル開度演算有効化処理の過程でチェックサム値算出を行うのではなく、図4の処理とは別個独立して、しかも処理1プログラムを複数(n個)の領域に分割して各領域毎に時分割でチェックサム算出を行うようにしているのである。
【0078】
一方、図5のチェックサム算出・判定処理におけるS600の処理によりチェックサム算出済みフラグがセットされた後は、図4のアクセル開度演算有効化処理におけるS330の判断処理では肯定判定され、S340に移行することになる。S340〜S380の処理は、既述の通り第1実施形態(図3)のアクセル開度演算有効化処理におけるS220〜S260と全く同様である。そして、このS340以降の処理がなされることで、ACCP1又はACCP2のいずれかが、それまで有効化されていたデフォルト値に代わって新たに有効化されることになる。
【0079】
以上詳述した通り、本実施形態の燃料噴射制御システムでは、2つのプログラムの演算結果が一致しなかった場合、まずは処理1プログラムのチェックサム算出要求フラグをセットして、実アクセル開度ACCP0としてデフォルト値を有効化しておく。このデフォルト値は、車両走行の安全性を考慮して決められる値である。そのため、チェックサム算出に長時間を要する場合であっても、その間の車両制御の精度・信頼性の低下を抑制することが可能となる。また、
しかも、処理1プログラムのチェックサム値算出は、プログラムをn個の領域に分割して各領域毎に時分割で行うようにしているため、チェックサム値算出のために他の各種制御の実行を大きく妨げてしまうといったおそれもない。
【0080】
ここで、図4のアクセル開度演算有効化処理において、S320の処理は請求項4の演算結果有効化手段が実行する処理に相当し、S360,S380の各処理はいずれも請求項3の演算結果有効化手段が実行する処理に相当し、S350,S370の各処理はいずれも請求項3のプログラム実行手段が実行する処理に相当する。また、図5のチェックサム算出・判定処理は、本発明のプログラム判定手段が実行する処理である。
【0081】
尚、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
例えば、上記第1実施形態のアクセル開度演算有効化処理(図3参照)では、2つのプログラムの演算結果が一致しなかったときに(S140:NO)、処理1プログラムについてのみチェックサム値を算出して正常か否か判断して、異常であった場合は処理2プログラムは正常であるものとみなしていたが、処理1プログラムだけでなく処理2プログラムも異常となってしまっていることも考えられないわけではない。
【0082】
そこで、例えば図6に示したアクセル開度演算有効化処理のように、処理1プログラムが異常と判断された場合に、処理2プログラムについてもチェックサム方式によるプログラムチェックを行って、その結果正常と判断されたときにはじめてその処理2プログラムによる演算結果ACCP2を実アクセル開度ACCP0として有効化するようにしてもよい。
【0083】
以下、図6のアクセル開度演算有効化処理について概略説明するが、S110〜S190の処理は、図3(第1実施形態)のS110〜S190と全く同じであるため、図3と同じ符号を付してその説明を省略する。また、S760〜S810の処理(但しS790を除く)も、図3のS220〜S260と全く同様であるため、これについても詳細説明は省略する。
【0084】
図6のアクセル開度演算有効化処理では、S170にてチェックサムが不一致と判断(つまり処理1プログラムが異常と判断)されると、S710に進んで、処理2プログラムのチェックサム値を算出する。そして、続くS715にてチェックサム値が正常であるか否かを判断し、正常(一致)と判断されたときにはじめて処理2プログラムが正常であると判断して、処理1プログラムについて異常フラグをセットすると共に(S720)、処理2プログラムの演算結果ACCP2を実アクセル開度ACCP0として有効化する(S730)。
【0085】
一方、S715にてチェックサム値が不一致(つまり処理2プログラムも異常)と判断された場合は、S740に進んで、処理1プログラム・処理2プログラムが共に異常である旨のフラグをセットする。そして、S750にて実アクセル開度ACCP0としてデフォルト値を設定する。尚、このデフォルト値は、第2実施形態のアクセル開度演算有効化処理(図4)のS320で有効化されるデフォルト値とは異なり、アクセルを全く踏み込んでいない状態を示す値、即ち車両走行を完全に停止させる方向に制御するための値である。S820のデフォルト値も同様である。
【0086】
このように、処理1プログラムだけでなく処理2プログラムについてもチェックサム方式による判定を行うことにより、第1実施形態よりも更に信頼性の高いフェールセーフ処理、延いてはより信頼性の高い車両制御の実現が可能となり、プログラム異常時の車両の通常走行をより安全に行うことが可能となる。尚、S710及びS715の処理は請求項2のプログラム判定手段が実行する処理に相当する。
【0087】
また、図6のアクセル開度演算有効化処理におけるS160,S710のチェックサム値算出にあたっては、図4,5で説明した第2実施形態の場合と同様に、とりあえずチェックサム算出要求フラグをセットするだけにしておいて算出自体は別途時分割で行い、その間は実アクセル開度ACCP0としてデフォルト値(図4のS320と同様)を有効化するようにしてもよい。
【0088】
また、上記各実施形態では、本発明の適用例としてアクセル開度を算出・有効化する場合を例に挙げて説明したが、他のプログラム領域においても本発明を適用できることはいうまでもなく、同一演算内容のプログラムを2つ備え、各プログラムの演算結果が同一のときにそれを有効化するよう構成されたあらゆる車両用電子制御装置に適用することができる。
【図面の簡単な説明】
【図1】第1実施形態及び第2実施形態の燃料噴射制御システムの概略構成を示す説明図である。
【図2】エンジン制御ECUにおけるメモリマップを示す説明図である。
【図3】第1実施形態のアクセル開度演算有効化処理を表すフローチャートである。
【図4】第2実施形態のアクセル開度演算有効化処理を表すフローチャートである。
【図5】第2実施形態のチェックサム算出・判定処理を表すフローチャートである。
【図6】第1実施形態のアクセル開度演算有効化処理の、他の例を表すフローチャートである。
【符号の説明】
10…エンジン制御ECU、11…マイコン、12…フラッシュメモリ、13…アナログ入力回路、14…デジタル入力回路、15…出力回路、20…アクセルペダル、21…アクセルセンサ、31…CPU、32…ROM、33…RAM、34…I/O
【発明の属する技術分野】
本発明は、演算内容が同一である2つのプログラムをそれぞれ実行して、両者の演算結果が一致したときにその演算結果を有効化する車両用電子制御装置に関する。
【0002】
【従来の技術】
従来より、車両において各種車載機器を制御するために、マイクロコンピュータ(以下「マイコン」と略す)を用いた制御処理がなされている。マイコンによる制御は、ROMやフラッシュメモリ等の記憶媒体に予め記憶されたプログラムに従って行われるものである。
【0003】
ところで、ROM等の記憶媒体に記憶される各種プログラムや制御パラメータ等にデータ化け等の異常が生じると、異常プログラム或いは異常パラメータに基づいた演算・制御がなされて正常な動作が行われなくなり、車両走行に支障を来すおそれがある。そのため、記憶媒体に記憶中のプログラムに異常が生じた場合にそれを迅速に検出して、異常に対する何らかの措置を採る必要がある。
【0004】
プログラムの異常を検出する方法としては、例えば特表平10−507805号公報に開示された方法が知られている。これは、各演算毎にプログラムをただ一つ設けてそれを実行するといったごく一般的な方法ではなく、ある演算に対応したプログラムを2つ(つまり同一演算を行う2つのプログラムを)別々の領域に設けて、各々の演算結果を比較し、一致した場合は正常であるとしてその演算結果を有効化するが、不一致の場合はプログラム異常と判断するのである。
【0005】
そして、プログラム異常と判断された場合、従来は、マイコンにリセットをかけるか、或いは出力制限(例えば車載機器の動作を制限又は停止)するといったフェールセーフ処理を実施するようにしている。
このように、演算内容が同一のプログラムを2つ設けて両者の演算結果を比較することで異常検出を行う方法は、特に、例えば燃料噴射量算出,燃料噴射時期算出,アクセル開度算出などの、車両のエンジン制御を行う上で十分な信頼性が要求されるデータを演算するプログラム(以下これを「クリティカル領域のプログラム」ともいう)に対してなされているのが一般的である。
【0006】
つまり、エンジンを制御する上で非常に重要なクリティカル領域のプログラムについては、同一プログラムを2つ設けて両者の演算結果を比較することで常にプログラムの異常検出を行い、データ(演算結果)の信頼性を高めているのである。
【0007】
【発明が解決しようとする課題】
しかしながら、上記公報に開示された方法では、データの信頼性は向上するものの、演算結果不一致によりプログラム異常と判定されると、マイコンのリセット或いは出力制限といったフェールセーフ処理をかけるため、車両の通常走行が困難になる可能性がある。
【0008】
即ち、例えば上記クリティカル領域のプログラムについて異常が検出されてマイコンリセット或いは出力制限がかかると、車両走行が停止する方向にフェールセーフがかかる(例えば速度制限或いはエンジン停止等)ことになるため、通常走行ができなくなるのである。
【0009】
一方、例えばトラック等の商用車(特にディーゼルエンジン車)では、たとえプログラムに異常が生じても、最低限の安全を確保した上で可能な限り通常走行させたいというニーズがあり、上記のようなフェールセーフ処理は商用車系のニーズには沿わない。そのため、プログラム異常が検出された後も、できる限り通常通りの走行が可能となるようなフェールセーフ処理の実施が望まれていた。
【0010】
本発明は上記課題に鑑みなされたものであり、プログラム異常が検出された場合にも、可能な限り通常通りの車両制御が可能となるようなフェールセーフ処理を実現することを目的とする。
【0011】
【課題を解決するための手段及び発明の効果】
上記課題を解決するためになされた請求項1記載の車両用電子制御装置は、車両制御に必要な所定の演算を行うためのプログラムであって演算内容が同一である2つのプログラムが、演算毎に記憶媒体に記憶されており、演算を実行する際、プログラム実行手段が、実行しようとする演算に対応した2つのプログラム(演算内容が同一)をそれぞれ実行し、演算結果判定手段が、プログラム実行手段により得られた各プログラムの演算結果が一致するか否かを判断して、演算結果が一致すると判断したとき、演算結果有効化手段がその演算結果を有効化する。
【0012】
そして、本発明では、演算結果判定手段にて一致しないと判断されたとき、プログラム判定手段が、2つのプログラムのうち一方について正常であるか否かを判断し、演算結果有効化手段は、プログラム判定手段にてその一方のプログラムが正常と判断された場合はそのプログラムによる演算結果を有効化し、プログラム判定手段にてその一方のプログラムが異常と判断された場合は、他方のプログラムによる演算結果を有効化する。
【0013】
即ち、2つのプログラムの演算結果が一致しなかった場合は、いずれか一方のプログラムについて正常か否かの判断を行い、正常であればそのプログラムによる演算結果も正常であるものとして有効化するが、逆に異常であれば、そのプログラムとは別の他方のプログラムは正常であってそれによる演算結果も正常であるものとみなして、その他方のプログラムによる演算結果を有効化するのである。
【0014】
尚、プログラム判定手段によるプログラムの具体的判断方法は、例えば判断対象のプログラム全体のチェックサム値を求め、予め記憶していたチェックサム値(正常値)と比較して、チェックサム値が一致したならばそのプログラムは正常であると判断する、といった方法を採ることができる。ただし、上記のようなチェックサム方式に限定されることはなく、プログラムが正常か否かを判断できる限り種々の方法を採用できることはいうまでもない。
【0015】
従って、請求項1記載の発明によれば、2つのプログラムの演算結果が不一致であっても、どちらのプログラムが正常であるか否かを判断し、正常なプログラムによる演算結果を有効化するため、その演算結果を用いて車両制御を通常通り行うことができる。つまり、いずれか一方のプログラムの異常が検出されても他の正常なプログラムによって通常走行を可能とするようなフェールセーフ処理が実現できるのである。
【0016】
ここで、請求項1記載の発明では、上記のように、プログラム判定手段により異常と判断された場合にその異常判断されたプログラムとは別のもう一つのプログラムについては正常であるものとみなしている。しかし、2つのプログラムがいずれも異常となったことによって演算結果が不一致となる場合も起こりうるため、一方が異常と判断されたことのみをもって無条件に他方のプログラムは正常であるものとみなすようにすると、車両制御を正常に行われなくなるおそれがある。
【0017】
そこで、例えば請求項2に記載のように、プログラム判定手段は、一方のプログラムが異常であると判断したとき、更に、他方のプログラムについても正常か否か判断し、演算結果有効化手段は、その他方のプログラムが正常と判断された場合にそのプログラムによる演算結果を有効化するようにするとよい。
【0018】
つまり、一方のプログラムが異常であった場合は、他方のプログラムについても正常か否か判断し、正常と判断されたときにはじめて、そのプログラムの正常性がより確かなものとなるため、そのプログラムの演算結果も正常であるとして有効化するのである。
【0019】
そのため、請求項1記載の発明よりも更に信頼性の高いフェールセーフ処理、延いてはより信頼性の高い車両制御の実現が可能となり、プログラム異常時の車両の通常走行をより安全に行うことが可能となる。
また、車両制御において各種演算が行われる中で、ある所定の演算実行時に、その演算に対応した2つのプログラムの演算結果が不一致となったことによりプログラム判定手段による判断が行われた場合、以後再びその演算が実行される際も、当然ながら2つのプログラムの演算結果が不一致となることが予想される。
【0020】
その際(つまり演算結果が不一致と判断された以後)、再びその演算を実行する度に2つのプログラムを共に実行してその演算結果を比較し、不一致ならばプログラム判定手段による判断を行うといった、一連の処理を繰り返してもいいのだが、上記のように一旦プログラムに異常が生じて演算結果が不一致となると、プログラム修正等の何らかの改善策を施さない限り、以後も引き続きその演算については演算結果が不一致となるのは当然に予想されることである。
【0021】
そこで、例えば請求項3に記載のように、プログラム実行手段は、プログラム判定手段にて一方のプログラムが正常と判断された場合、その後は該一方のプログラムのみを実行し、プログラム判定手段にて一方のプログラムが異常と判断された場合、その後はその他方のプログラムのみを実行して、演算結果有効化手段は、プログラム実行手段により実行されたいずれか一つのプログラムの演算結果をそのまま有効化するようにするとよい。
【0022】
つまり、ある演算に対応した2つのプログラムのいずれか一方に異常が生じた場合に、以後その演算を実行する際は、異常と判断されたプログラムは実行せず、正常なプログラムのみを実行するのである。そのため、請求項1又は2記載のように、2つのプログラムの演算結果を比較するといったことは行わず、演算結果有効化手段は、プログラム実行手段にて実行された一つのプログラムの演算結果をそのまま有効化するのである。
【0023】
このように、一旦プログラム異常が検出された以後は正常なプログラムのみを実行することにより、プログラム異常検出時の車両制御(フェールセーフ処理)をより効率的に行うことが可能となる。
尚この場合も、一方のプログラムが異常と判断されたときにそのまま他方のプログラムは正常であるものとみなすのではなく、請求項2に記載したように、他方のプログラムについても正常か否かを判断して、正常であると判断された場合に、以後のその演算実行時にその正常判断された他方のプログラムを実行するようにしてもよい。
【0024】
更にその場合、再びその演算が実行される毎に、その演算に対応したいずれかのプログラム(正常判断されたもの)をそのまま実行してもよいのだが、時間経過に伴って何らかの要因でその正常プログラムまでが異常となってしまう可能性もある。そのため、請求項3記載の発明において、プログラム実行手段がいずれかのプログラムを実行する度に、そのプログラムが正常であるか否かの判断を実行するようにしてもよい。このようにすれば、プログラム異常時の車両制御(フェールセーフ処理)の信頼性をより向上できる。
【0025】
ところで、プログラム判定手段によるプログラムの正常か否かの判断は、例えばプログラム全体のチェックサム値に基づいて行うことができることは既に述べた通りだが、プログラムが正常か否かの判断に長時間を要してしまうと、その判断中は車両制御が正常に行われなくなるおそれがある。
【0026】
具体的には、例えば燃料噴射量を演算する場合において、その演算に対応した2つのプログラムの演算結果が一致しなかった場合、プログラム判定手段による判断が行われるわけだが、その判断中に、前回演算実行時の演算結果(燃料噴射量)がそのまま有効化されたままだと、引き続きその前回の演算結果に応じた燃料噴射が継続され、結果としてユーザの意図に反した車両制御(ここでは燃料噴射量制御)が行われてしまうことになる。
【0027】
そこで、例えば請求項4に記載のように、演算結果有効化手段は、プログラム判定手段による判断の実行中は、該判断対象のプログラムに対応して予め設定されたデフォルト演算値を演算結果として有効化するとよい。
また、上記例示した燃料噴射量制御のように、プログラム判定手段にて判断されるプログラムが車両の内燃機関の動作を制御するのに必要な所定の演算を行うためのプログラムであって、車両の走行中にプログラム判断が実行される場合、上記デフォルト演算値は、例えば請求項5に記載のように、プログラム判定手段による判断の実行直前の走行速度より低速で車両が走行するように内燃機関が制御される値であるとよい。
【0028】
尚、これにより、プログラム判断中はユーザの意図に反して車両速度が低速化することになるが、デフォルト演算値が有効化されるのはあくまでもプログラム判定手段による判断実行中であって、判断終了後は、正常と判断されたプログラムの演算結果が有効化されるため、実用上支障が生じるものではない。逆に言えば、車両走行の安全性を考慮しつつ、且つ走行上明らかに支障が出る(例えば急激に減速する等)ことがないようなデフォルト演算値に設定する必要はある。
【0029】
【発明の実施の形態】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
[第1実施形態]
図1は、本実施形態の燃料噴射制御システムの概略構成を示す説明図である。本実施形態の燃料噴射制御システムは、内燃機関としてディーゼルエンジンを搭載した車両に設けられ、ディーゼルエンジンの各気筒(図示略)に燃料を噴射供給するためのものである。
【0030】
図1に示す如く、車両の運転者がアクセルペダル20を踏み込むと、その踏み込み量をアクセルセンサ21が検出して、踏み込み量に応じたアナログ電圧値をエンジン制御ECU10へ出力する。エンジン制御ECU10は、外部から入力される各種アナログ量をデジタルデータに変換(A/D変換)してマイコン11へ出力するアナログ入力回路13と、外部から入力される各種デジタルデータをマイコン11へ出力するデジタル入力回路14と、これら各回路13,14からの入力に基づいて各種制御・演算を実行するマイコン11と、マイコン11にて実行される制御・演算処理のプログラムやパラメータ等が記憶されたフラッシュメモリ12と、マイコン11による制御・演算結果に基づいて図示しない各種アクチュエータを動作させるための信号を出力する出力回路15と、により構成される。
【0031】
アナログ入力回路13には、アナログ入力値として上記のアクセル踏み込み量に応じた電圧値の他、吸入空気量や冷却水温などの各種アナログ量が入力され、デジタル入力回路14には、エンジン回転速度やスタータ信号或いは車速信号などの各種デジタルデータが入力される。これらの各種アナログ量及びデジタルデータに基づいて、マイコン11は最適な燃料噴射量や燃料噴射時期などを演算し、その演算結果に基づいた出力信号が出力回路15から各種アクチュエータ(インジェクタなど)へ出力される。
【0032】
尚、燃料噴射量や燃料噴射時期などを演算するにあたっては、アクセルペダル20の踏み込み量(以下単に「アクセル開度」ともいう)も必要となるため、マイコン11では、後述するようにアクセルセンサ21からの出力電圧に基づいてアクセル開度を算出する演算処理も行われる。
【0033】
マイコン11は、CPU31、ROM32、RAM33、I/O34を備えた周知の構成のものであり、ROM32或いはフラッシュメモリ12に格納された各種プログラムをCPU31が実行する。本実施形態では、燃料噴射量,燃料噴射時期及びアクセル開度を演算するための各プログラムが、クリティカル領域のプログラムとしていずれもフラッシュメモリ12に格納されている。
【0034】
図2に、本実施形態のエンジン制御ECU10におけるメモリマップを示す。図示の如く、フラッシュメモリ12のメモリ領域にはクリティカル領域が設定され、そのクリティカル領域において、アクセル開度を算出するためのプログラムが格納されている。より具体的には、演算内容が全く同一のプログラムが2つ(アクセル開度算出処理1プログラム及びアクセル開度算出処理2プログラム)、格納されている。
【0035】
また、RAM33のメモリ領域には、アクセル開度算出処理1プログラム(以下「処理1プログラム」と略す)の実行結果(演算結果)であるACCP1を一時的に記憶する領域と、アクセル開度算出処理2プログラム(以下「処理2プログラム」と略す)の実行結果(演算結果)であるACCP2を一時的に記憶する領域とが設けられている。また、ACCP1又はACCP2のいずれかを実アクセル開度ACCP0としてそのまま設定(記憶)するための領域も設けられており、他のプログラムがその実行過程でアクセル開度を用いる際は、このACCP0のデータを用いることになる。
【0036】
即ち、本実施形態では、アクセル開度を算出する演算処理実行時に、まず処理1プログラム及び処理2プログラムの2つのプログラムを共に実行して、各プログラムの演算結果ACCP1及びACCP2をそれぞれRAM33に記憶する。そして、ACCP1とACCP2とを比較し、両者が一致したときに、両者はいずれも正常な演算結果(換言すれば各プログラムはいずれも正常)として、その演算結果を実アクセル開度ACCP0として記憶することにより有効化する。その詳細については後述する。
【0037】
このように、同じ演算(上記例ではアクセル開度算出)を行うプログラムを2つ設け、各プログラムを実行させて演算結果が一致した場合にそれを正しい演算結果として有効化するようにしているのは、従来技術の説明においても述べた通り、このアクセル開度を用いた制御・演算処理の信頼性を向上させ、延いてはエンジン制御全体の信頼性を向上させるためである。なお、燃料噴射量を演算するプログラム、及び、燃料噴射時期を演算するプログラムについても、図2では図示しなかったものの、アクセル開度算出処理プログラムと同様、クリティカル領域のプログラムとしてそれぞれ同一演算を行うプログラムが2つ、フラッシュメモリ12に格納されている。
【0038】
また本実施形態では、アクセル開度として、上記のようにアクセルセンサ21にて検出されたアクセル開度をそのまま用いずに、それを基に演算により実アクセル開度を算出するようにしているが、この主な目的は、アクセル開度が急激に変化した場合にそれをダイレクトに制御(アクセル開度を用いる制御)に反映させないようにするためである。
【0039】
即ち、例えば運転者による急激なアクセル踏み込みや外部ノイズ等の何らかの要因によって、アクセルセンサ21からの出力電圧が急激に変化した場合、その変化をそのままアクセル開度の変化として制御に取り込むと、車両走行に支障(例えば急加速による車輪空転など)が生じるおそれがある。
【0040】
そのため、アクセルセンサ21からの出力電圧値をダイレクトに用いるのではなく、急激な変化が起こってもそれをなまして滑らかに変化させるような処理(なまし処理)を施している。即ち、処理1プログラム及び処理2プログラムが、このなまし処理を実行するものであり、アクセルセンサ21による検出信号をこれら各プログラムによりなまし処理してそれぞれアクセル開度ACCP1,ACCP2を算出する。そして、そのなまし処理後のACCP1又はACCP2を実アクセル開度ACCP0として有効化するようにしている。
【0041】
上記のように構成された本実施形態の燃料噴射制御システムにおいて、フラッシュメモリ12に格納された処理1・処理2プログラムを実行していずれか一方の演算結果を実アクセル開度として有効化するために、マイコン11にて実行されるアクセル開度演算有効化処理について、図3に基づいて説明する。図3は、マイコン11内のCPU31にて実行されるアクセル開度演算有効化処理を表すフローチャートである。マイコン11では、CPU31がROM32からアクセル開度演算有効化処理プログラムを読み出し、このプログラムに従って処理を実行する。このアクセル開度演算有効化処理は、図示しない車両のイグニションスイッチのオン後、所定の周期(例えば8msec.毎)で継続して行われるものである。
【0042】
この処理が開始されると、まずステップ(以下「S」と略す)110にて、処理1プログラム及び処理2プログラムがいずれも正常であるか否か判断される。この判断は、各プログラムについての異常フラグ(後述するS180,S200でセットされる)に基づいて行われるものであり、最初のS110実行時には当然ながらまだいずれの異常フラグもセットされていないため、各プログラム共に正常であるものとしてS120に移行する。
【0043】
S120では、フラッシュメモリ12においてクリティカル領域のプログラムとして格納されている処理1プログラム(図2参照)を実行して、アクセル開度ACCP1を算出し、RAM33における所定の領域(ACCP1記憶領域)に記憶する。続くS130では、同じくフラッシュメモリ12においてクリティカル領域のプログラムとして格納されている、処理2プログラム(図2参照)を実行して、アクセル開度ACCP2を算出し、RAM33における所定の領域(ACCP2記憶領域)に記憶する。
【0044】
そして、S140にて、処理1プログラム及び処理2プログラムの2つのプログラムの演算結果(つまりACCP1及びACCP2)を比較して、両者が一致するか否かを判断する。両者が一致すれば、2つのプログラムは正常であるものと判断できるため、S150に進み、ACCP1のデータを実アクセル開度ACCP0としてACCP0記憶領域に記憶(つまり有効化)し、一旦この処理を終了する。以後、アクセル開度を必要とする他の処理の実行にあたっては、この実アクセル開度ACCP0が用いられることになる。
【0045】
一方、例えばデータ化け等の何らかの異常が生じて処理1プログラム又は処理2プログラムのいずれか一方に異常が生じた場合は、これら2つの演算結果も異なったものとなるため、S140にて否定判定されてS160に進む。S160では、処理1プログラムが格納された領域についてチェックサム値を算出し、続くS170にて、その算出したチェックサム値が予め記憶されたチェックサム値(処理1プログラム領域に対応したチェックサム値の正常値)と一致するか否かを判断する。
【0046】
ここで一致した場合は、処理1プログラムは正常であって処理2プログラムが異常であると判断し、S180に進んで処理2プログラムについての異常フラグをセットする。そしてS190にて、S150と全く同様、ACCP1(つまり正常と判断された処理1プログラムの演算結果)を実アクセル開度ACCP0として記憶し、一旦この処理を終了する。
【0047】
S170にてチェックサムが一致しないと判断された場合は、処理1プログラムが異常であると判断すると共に、他方の処理2プログラムは正常であるものとみなして、S200にて処理1プログラムについての異常フラグをセットする。そしてS210にて、ACCP2(つまり正常とみなした処理2プログラムの演算結果)を実アクセル開度ACCP0として記憶し、一旦この処理を終了する。
【0048】
そして、上記周期(本実施形態では8msec.)で本アクセル開度演算有効化処理が実行されることにより再びS110の処理が実行されたとき、処理1プログラム及び処理2プログラムがいずれも正常であればS120以降の処理が繰り返されることになるが、S180又はS200によりいずれか一方のプログラムが異常と判断されて異常フラグがセットされている場合は、S110で否定判定されてS220に進む。
【0049】
S220では、2つのプログラムのどちらが正常(或いは異常)であるかを知るために、処理2プログラムについて異常フラグがセットされているか否かを判断する。そして、S180にて処理2プログラムに対する異常フラグがセットされているならば、S220で肯定判定されてS230に移行し、処理1プログラムを実行してその演算結果ACCP1をRAM33における所定の記憶領域に記憶する。尚、このS230の処理(処理1プログラムの実行)はS120と全く同様である。そして、続くS240にて、S150と全く同様にACCP1のデータを実アクセル開度ACCP0としてACCP0記憶領域に記憶し、一旦この処理を終了する。
【0050】
一方、S200にて処理1プログラムに対する異常フラグがセットされているならば、S220で否定判定されてS250に移行し、処理2プログラムを実行してその演算結果ACCP2をRAM33における所定の記憶領域に記憶する。尚、このS250の処理(処理2プログラムの実行)はS130と全く同様である。そして、続くS260にて、S210と全く同様にACCP2のデータを実アクセル開度ACCP0としてACCP0記憶領域に記憶し、一旦この処理を終了する。
【0051】
以上詳述したように、本実施形態の燃料噴射制御システムでは、アクセル開度を演算するための2つのプログラムの演算結果が一致しなかった場合、いずれか一方のプログラムについてチェックサム方式によるプログラムチェックを行って、正常であればそのプログラムによる演算結果を実アクセル開度ACCP0として有効化し、異常であれば他方のプログラムは正常であるものとみなしてその演算結果を有効化する。
【0052】
そのため、2つのプログラムのどちらかにデータ化け等の異常が生じてしまっても、他方の正常なプログラムによる演算結果を用いて車両制御を通常通り行うことができる。つまり、いずれか一方のプログラムの異常が検出されても他の正常なプログラムによって通常走行を可能とするようなフェールセーフ処理が実現できるのである。
【0053】
しかも、一旦プログラム異常が検出された以後は、2つのプログラムを共に実行してその演算結果を比較することはせず、正常なプログラムのみを実行(S220以降の処理を実行)するため、上記フェールセーフ処理をより効率的に行うことができる。
【0054】
ここで、本実施形態の構成要素と本発明の構成要素の対応関係を明らかにする。本実施形態において、フラッシュメモリ12は本発明の記憶媒体に相当する。また、図3のアクセル開度演算有効化処理において、S120,S130の各処理はいずれも本発明のプログラム実行手段が実行する処理に相当し、S140の処理は本発明の演算結果判定手段が実行する処理に相当し、S160,S170の各処理はいずれも本発明のプログラム判定手段が実行する処理に相当し、S150,S190,S210の各処理はいずれも本発明の演算結果有効化手段が実行する処理に相当する。
【0055】
また、S230,S250の各処理は請求項3のプログラム実行手段が実行する処理に相当し、S240,S260の各処理は請求項3の演算結果有効化手段が実行する処理に相当する。
[第2実施形態]
本実施形態でも、図1に示した燃料噴射制御システムが構成され、マイコン11にて、アクセル開度の演算・有効化等の各種処理が行われる。つまり、本実施形態の燃料噴射制御システムのハード構成自体は第1実施形態の燃料噴射制御システム(図1)と全く同じである。
【0056】
上記第1実施形態におけるアクセル開度演算有効化処理(図3参照)では、処理1プログラムと処理2プログラムの演算結果が一致しなかったとき、どちらのプログラムが正常であるか判断するために、いずれか一方のプログラムについてのみチェックサム方式による判断を行うようにした(図3のS160〜S170参照)。
【0057】
そして、チェックサム値の算出終了後に、そのチェックサム値が正規のチェックサム値と一致するか否かによってそのプログラムが正常か否かを判断し、その判断結果に従っていずれか一方の演算結果を実アクセル開度ACCP0として有効化した。
【0058】
しかしこのようにすると、S160のチェックサム値算出実行中は、S120,S130にて得られた最新のアクセル開度データ(ACCP1又はACCP2)は有効化されず、それまで有効化されていた実アクセル開度ACCP0がそのまま継続して有効化され続けている状態となる。そして、チェックサム値の算出が終了してどちらのプログラムが正常であるか判断できたときにはじめて、その最新のACCP1又はACCP2のいずれかが新たな実アクセル開度ACCP0として有効化されることになる。
【0059】
そのため、チェックサム値算出が終了してどちらのプログラムが正常であるか判断されるまでの間に他の制御プログラム等がアクセル開度データを用いる必要がある場合は、それまで有効化されていた実アクセル開度ACCP0(いわば古いデータ)を引き続き用いることになり、そのACCP0の値によっては、車両制御の精度・信頼性に影響が生じるおそれがある。
【0060】
具体的には、例えば直前の演算によりアクセル全開状態を示す値のACCP0が有効化されたときに、再びアクセル開度の演算を行った結果、演算結果が不一致となってチェックサム値の算出(S160)が開始されると、算出が終了するまでは、たとえアクセルを全く踏み込んでない場合であっても、そのアクセル全開状態を示すACCP0が有効化され続けるわけである。しかもその間は、CPU31は他の処理を実行することができない。そのため、チェックサム算出中は運転者の意図に反した車両制御(走行制御)が行われてしまうおそれがあるのである。
【0061】
そこで本実施形態では、チェックサム算出中は、予め設定したデフォルト値(本発明のデフォルト演算値)を実アクセル開度ACCP0として有効化すると共に、チェックサム算出自体も、連続的に行わずに時分割的に実行するようにしている。図4に、本実施形態のアクセル開度演算有効化処理のフローチャートを示す。図4のアクセル開度演算有効化処理も、図3のアクセル開度演算有効化処理と同様、所定周期(例えば8msec.毎)で実行されるものである。
【0062】
尚、本実施形態のアクセル開度演算有効化処理において、S120〜S150の処理は第1実施形態のアクセル開度演算有効化処理(図3)のS120〜S150と全く同じであるため、これら各処理については図3と同じ符号を付し、その詳細説明を省略する。また、後述するS340〜S380の処理も、第1実施形態のアクセル開度演算有効化処理(図3)のS220〜S260と全く同じであるため、これら各処理についてもその詳細説明は省略する。
【0063】
本アクセル開度演算有効化処理が開始されると、まずS300にて、処理1プログラム及び処理2プログラムがいずれも正常であるか否かを判断する。この判断は、基本的には図3のS110と同様であるが、本実施形態のS300では更に、処理1プログラム領域に対するチェックサムの算出要求フラグ(後述のS310でセット)がセットされているか否かも判断し、セットされていればS330に進むことになるがセットされていなければS120に進む。
【0064】
S120,S130では、それぞれACCP1,ACCP2が算出され、S140で両者の比較が行われる。そして、両者が一致した場合はS150に進んでACCP1が実アクセル開度ACCP0として有効化されるわけだが、両者が一致せずにS140で否定判定されると、S310に移行する。
【0065】
S310では、処理1プログラム領域についてチェックサム値を算出(延いては処理1プログラムが正常か否かを判断)すべき旨のチェックサム算出要求フラグをセットする。つまり、第1実施形態のようにここですぐにチェックサム値の算出を実行するのではなく、あくまでもチェックサム値を算出するようフラグのセットを行うだけである。
【0066】
そして、フラグのセット後はS320に進み、予め設定したアクセル開度のデフォルト値を実アクセル開度ACCP0として有効化する。このデフォルト値は、例えば、十分に低い速度で走行するように燃料噴射制御される値にしてもいいし、また例えば、少なくともその直前までの車両走行速度より減速して走行するように燃料噴射制御される値にする(つまりそのときの車両速度に応じてデフォルト値が変化する)ようにするなど、車両走行の安全性を考慮しつつ適宜決めることができる。
【0067】
以後、再びこのアクセル開度演算有効化処理が実行されると、チェックサム算出要求フラグがセットされているためS300では否定判定され、S330に移行する。S330では、処理1プログラムのチェックサム値の算出が終了したことを示すチェックサム算出済みフラグ(後述する図5のS600でセット)がセットされているか否かを判断し、セットされていない場合、即ちチェックサム値の算出がまだ終了していない場合は、否定判定されてS320に移行し、既述の如くデフォルト値の有効化が行われる。
【0068】
次に、処理1プログラムのチェックサム値算出について、図5に基づいて説明する。図5は、処理1プログラム領域のチェックサム値を算出して正常か否か判定するするために実行される、チェックサム算出・判定処理を示すフローチャートである。この処理も、図示しない車両のイグニションスイッチがオンされると所定周期(例えば4msec.毎)に繰り返し実行されるものである。
【0069】
この処理が開始されると、まずS510にて、処理1プログラム領域に対するチェックサム算出要求フラグがセットされているか否かを判断する。このフラグは、既述の通り、図4のアクセル開度演算有効化処理におけるS310の処理によりセットされるものである。
【0070】
このフラグがセットされていない場合(つまり処理1,処理2プログラムがいずれも正常の場合)はS510で否定判定されてそのままこの処理を終了することになるが、フラグがセットされている場合はS520に進む。S520では、iが2以上か否かが判断されるが、ここではまだiについては何ら設定されていないため、S530に移行して、ここで初めてiを1とする。
【0071】
S540では、n個の領域に分割された処理1プログラム領域のうち、i番目(ここでは1番目)の領域についてチェックサム値Ci(ここではC1)を算出する。続くS550では、S540にて算出されたi番目領域のチェックサム値Ciを、それまで累積されているチェックサム累積値Cに加えることにより、新たなチェックサム累積値Cを算出する。
【0072】
そして、S560では、処理1プログラムの全領域についてチェックサム値の算出がなされたかどうか判断し、まだ全領域終了していない場合はS620にてiをインクリメント(ここではiを1から2にインクリメント)して、一旦この処理を終了する。
【0073】
以後、所定周期(本例では4msec.毎)で再び本処理が実行されると、S520では肯定判定されてS540に進み、i番目(ここでは2番目)のチェックサム値C2を算出する。そして、続くS550にて、それまでのチェックサム累積値C(ここでは前回算出した1番目領域のチェックサム値C1)に2番目領域のチェックサム値C2を加算した新たなチェックサム累積値Cを得て、S560に移行する。
【0074】
以下、n分割された処理1プログラムの全領域のチェックサム値算出が終了するまでは、S560で否定判定されてS620の処理(iのインクリメント)が行われることになるが、i=nとなってn番目のチェックサム値Cnを算出することにより全領域のチェックサム値(つまり処理1プログラム全体のチェックサム値)が得られた場合、S560で肯定判定されてS570に進み、そのチェックサム値Cが予め記憶した正常値と一致するか否か判断する。
【0075】
ここで一致すれば、処理1プログラムは正常であるため、S580にて処理2プログラムについての異常フラグをセットするが、一致しなかった場合は、処理1プログラムは異常であって処理2プログラムは正常であるものとみなして、S590にて処理1プログラムについての異常フラグをセットする。
【0076】
S580又はS590の処理の終了後はS600に進み、処理1プログラム領域のチェックサム値算出が終了したことを示すチェックサム算出済みフラグをセットする。そして、続くS610にて、処理1プログラム領域についてのチェックサム算出要求フラグ(図4のS310でセット)及びiを共にリセットして、一旦この処理を終了する。そのため、以後再びS510の処理が行われた場合、S610でフラグリセットされているため、図4のS310実行にて再びフラグセットされない限り、このS510では否定判定され続けることになる。
【0077】
つまり、本実施形態では、図4のアクセル開度演算有効化処理の過程でチェックサム値算出を行うのではなく、図4の処理とは別個独立して、しかも処理1プログラムを複数(n個)の領域に分割して各領域毎に時分割でチェックサム算出を行うようにしているのである。
【0078】
一方、図5のチェックサム算出・判定処理におけるS600の処理によりチェックサム算出済みフラグがセットされた後は、図4のアクセル開度演算有効化処理におけるS330の判断処理では肯定判定され、S340に移行することになる。S340〜S380の処理は、既述の通り第1実施形態(図3)のアクセル開度演算有効化処理におけるS220〜S260と全く同様である。そして、このS340以降の処理がなされることで、ACCP1又はACCP2のいずれかが、それまで有効化されていたデフォルト値に代わって新たに有効化されることになる。
【0079】
以上詳述した通り、本実施形態の燃料噴射制御システムでは、2つのプログラムの演算結果が一致しなかった場合、まずは処理1プログラムのチェックサム算出要求フラグをセットして、実アクセル開度ACCP0としてデフォルト値を有効化しておく。このデフォルト値は、車両走行の安全性を考慮して決められる値である。そのため、チェックサム算出に長時間を要する場合であっても、その間の車両制御の精度・信頼性の低下を抑制することが可能となる。また、
しかも、処理1プログラムのチェックサム値算出は、プログラムをn個の領域に分割して各領域毎に時分割で行うようにしているため、チェックサム値算出のために他の各種制御の実行を大きく妨げてしまうといったおそれもない。
【0080】
ここで、図4のアクセル開度演算有効化処理において、S320の処理は請求項4の演算結果有効化手段が実行する処理に相当し、S360,S380の各処理はいずれも請求項3の演算結果有効化手段が実行する処理に相当し、S350,S370の各処理はいずれも請求項3のプログラム実行手段が実行する処理に相当する。また、図5のチェックサム算出・判定処理は、本発明のプログラム判定手段が実行する処理である。
【0081】
尚、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
例えば、上記第1実施形態のアクセル開度演算有効化処理(図3参照)では、2つのプログラムの演算結果が一致しなかったときに(S140:NO)、処理1プログラムについてのみチェックサム値を算出して正常か否か判断して、異常であった場合は処理2プログラムは正常であるものとみなしていたが、処理1プログラムだけでなく処理2プログラムも異常となってしまっていることも考えられないわけではない。
【0082】
そこで、例えば図6に示したアクセル開度演算有効化処理のように、処理1プログラムが異常と判断された場合に、処理2プログラムについてもチェックサム方式によるプログラムチェックを行って、その結果正常と判断されたときにはじめてその処理2プログラムによる演算結果ACCP2を実アクセル開度ACCP0として有効化するようにしてもよい。
【0083】
以下、図6のアクセル開度演算有効化処理について概略説明するが、S110〜S190の処理は、図3(第1実施形態)のS110〜S190と全く同じであるため、図3と同じ符号を付してその説明を省略する。また、S760〜S810の処理(但しS790を除く)も、図3のS220〜S260と全く同様であるため、これについても詳細説明は省略する。
【0084】
図6のアクセル開度演算有効化処理では、S170にてチェックサムが不一致と判断(つまり処理1プログラムが異常と判断)されると、S710に進んで、処理2プログラムのチェックサム値を算出する。そして、続くS715にてチェックサム値が正常であるか否かを判断し、正常(一致)と判断されたときにはじめて処理2プログラムが正常であると判断して、処理1プログラムについて異常フラグをセットすると共に(S720)、処理2プログラムの演算結果ACCP2を実アクセル開度ACCP0として有効化する(S730)。
【0085】
一方、S715にてチェックサム値が不一致(つまり処理2プログラムも異常)と判断された場合は、S740に進んで、処理1プログラム・処理2プログラムが共に異常である旨のフラグをセットする。そして、S750にて実アクセル開度ACCP0としてデフォルト値を設定する。尚、このデフォルト値は、第2実施形態のアクセル開度演算有効化処理(図4)のS320で有効化されるデフォルト値とは異なり、アクセルを全く踏み込んでいない状態を示す値、即ち車両走行を完全に停止させる方向に制御するための値である。S820のデフォルト値も同様である。
【0086】
このように、処理1プログラムだけでなく処理2プログラムについてもチェックサム方式による判定を行うことにより、第1実施形態よりも更に信頼性の高いフェールセーフ処理、延いてはより信頼性の高い車両制御の実現が可能となり、プログラム異常時の車両の通常走行をより安全に行うことが可能となる。尚、S710及びS715の処理は請求項2のプログラム判定手段が実行する処理に相当する。
【0087】
また、図6のアクセル開度演算有効化処理におけるS160,S710のチェックサム値算出にあたっては、図4,5で説明した第2実施形態の場合と同様に、とりあえずチェックサム算出要求フラグをセットするだけにしておいて算出自体は別途時分割で行い、その間は実アクセル開度ACCP0としてデフォルト値(図4のS320と同様)を有効化するようにしてもよい。
【0088】
また、上記各実施形態では、本発明の適用例としてアクセル開度を算出・有効化する場合を例に挙げて説明したが、他のプログラム領域においても本発明を適用できることはいうまでもなく、同一演算内容のプログラムを2つ備え、各プログラムの演算結果が同一のときにそれを有効化するよう構成されたあらゆる車両用電子制御装置に適用することができる。
【図面の簡単な説明】
【図1】第1実施形態及び第2実施形態の燃料噴射制御システムの概略構成を示す説明図である。
【図2】エンジン制御ECUにおけるメモリマップを示す説明図である。
【図3】第1実施形態のアクセル開度演算有効化処理を表すフローチャートである。
【図4】第2実施形態のアクセル開度演算有効化処理を表すフローチャートである。
【図5】第2実施形態のチェックサム算出・判定処理を表すフローチャートである。
【図6】第1実施形態のアクセル開度演算有効化処理の、他の例を表すフローチャートである。
【符号の説明】
10…エンジン制御ECU、11…マイコン、12…フラッシュメモリ、13…アナログ入力回路、14…デジタル入力回路、15…出力回路、20…アクセルペダル、21…アクセルセンサ、31…CPU、32…ROM、33…RAM、34…I/O
Claims (5)
- 車両制御に必要な所定の演算を行うためのプログラムであって演算内容が同一である2つのプログラムが、前記演算毎に記憶媒体に記憶されており、
前記演算を実行する際、該演算に対応した前記2つのプログラムをそれぞれ実行するプログラム実行手段と、
該プログラム実行手段により得られた前記各プログラムの演算結果が一致するか否かを判断する演算結果判定手段と、
該演算結果判定手段により一致すると判断されたときに、該判断された演算結果を有効化する演算結果有効化手段と、
を備えた車両用電子制御装置において、
前記演算結果判定手段にて一致しないと判断されたときに、前記2つのプログラムの一方について正常であるか否か判断するプログラム判定手段
を備え、
前記演算結果有効化手段は、
前記プログラム判定手段にて前記一方のプログラムが正常と判断された場合は、該一方のプログラムによる演算結果を有効化し、前記プログラム判定手段にて前記一方のプログラムが異常と判断された場合は、他方のプログラムによる演算結果を有効化する
ことを特徴とする車両用電子制御装置。 - 前記プログラム判定手段は、前記一方のプログラムが異常であると判断したとき、更に、前記他方のプログラムについても正常か否か判断し、
前記演算結果有効化手段は、前記プログラム判定手段にて前記他方のプログラムが正常と判断された場合に、該他方のプログラムによる演算結果を有効化する
ことを特徴とする請求項1記載の車両用電子制御装置。 - 前記プログラム実行手段は、前記プログラム判定手段にて前記一方のプログラムが正常と判断された場合、その後は該一方のプログラムのみを実行し、前記プログラム判定手段にて前記一方のプログラムが異常と判断された場合、その後は前記他方のプログラムのみを実行して、
前記演算結果有効化手段は、前記プログラム実行手段により実行されたプログラムの演算結果を有効化する
ことを特徴とする請求項1記載の車両用電子制御装置。 - 前記演算結果有効化手段は、前記プログラム判定手段による判断の実行中は、該判断対象のプログラムに対応して予め設定されたデフォルト演算値を前記演算結果として有効化する
ことを特徴とする請求項1〜3いずれかに記載の車両用電子制御装置。 - 前記プログラムは、車両の内燃機関の動作を制御するのに必要な所定の演算を行うためのものであり、
前記車両の走行中に前記プログラム判定手段による判断が実行される場合、前記デフォルト演算値は、前記車両が、前記プログラム判定手段による判断の実行直前の走行速度より低速で走行するように前記内燃機関が制御される値である
ことを特徴とする請求項4記載の車両用電子制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002171504A JP2004019457A (ja) | 2002-06-12 | 2002-06-12 | 車両用電子制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002171504A JP2004019457A (ja) | 2002-06-12 | 2002-06-12 | 車両用電子制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004019457A true JP2004019457A (ja) | 2004-01-22 |
Family
ID=31171349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002171504A Pending JP2004019457A (ja) | 2002-06-12 | 2002-06-12 | 車両用電子制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004019457A (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009238068A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 通信制御装置、通信制御方法 |
JP2010221771A (ja) * | 2009-03-23 | 2010-10-07 | Hitachi Automotive Systems Ltd | パワーステアリング装置の異常診断装置 |
JP2011020544A (ja) * | 2009-07-15 | 2011-02-03 | Hitachi Automotive Systems Ltd | 車両搭載機器の制御装置のメモリ診断装置 |
JP2012068198A (ja) * | 2010-09-27 | 2012-04-05 | Ngk Spark Plug Co Ltd | 車両用電装部品の制御装置 |
JP2016084050A (ja) * | 2014-10-27 | 2016-05-19 | トヨタ自動車株式会社 | 車載制御装置 |
-
2002
- 2002-06-12 JP JP2002171504A patent/JP2004019457A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2009238068A (ja) * | 2008-03-28 | 2009-10-15 | Fujitsu Ltd | 通信制御装置、通信制御方法 |
JP2010221771A (ja) * | 2009-03-23 | 2010-10-07 | Hitachi Automotive Systems Ltd | パワーステアリング装置の異常診断装置 |
JP2011020544A (ja) * | 2009-07-15 | 2011-02-03 | Hitachi Automotive Systems Ltd | 車両搭載機器の制御装置のメモリ診断装置 |
JP2012068198A (ja) * | 2010-09-27 | 2012-04-05 | Ngk Spark Plug Co Ltd | 車両用電装部品の制御装置 |
US9020686B2 (en) | 2010-09-27 | 2015-04-28 | Ngk Spark Plug Co., Ltd. | Control apparatus for vehicular electric component |
JP2016084050A (ja) * | 2014-10-27 | 2016-05-19 | トヨタ自動車株式会社 | 車載制御装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4873378B2 (ja) | 吸入空気量センサの異常診断装置 | |
JP3855877B2 (ja) | 空燃比検出装置の劣化検出装置 | |
JP2007120334A (ja) | 車両駆動システムの異常診断装置 | |
KR100704322B1 (ko) | 자동차 내 연산 소자를 모니터링하기 위한 방법 및 장치 | |
US6513496B2 (en) | Fuel injection controller of engine | |
JP2020106028A (ja) | 内燃機関の制御装置 | |
JP2004019457A (ja) | 車両用電子制御装置 | |
JP2005188309A (ja) | スロットル系の異常判定装置 | |
JP2007154737A (ja) | 車両用エンジンの制御装置 | |
KR101008446B1 (ko) | Ecu 동작 제어 방법 | |
JP2010163932A (ja) | 内燃機関の触媒劣化診断装置 | |
JP2005307782A (ja) | エンジン制御装置 | |
JP3134712B2 (ja) | メタノールエンジン用グロープラグの制御装置 | |
JP3541111B2 (ja) | 内燃機関の運転制御装置 | |
JP6593160B2 (ja) | ハイブリッド式車両の駆動制御装置 | |
JP2002106399A (ja) | 内燃機関の制御方法及び装置 | |
JP2010019186A (ja) | 酸素濃度センサの異常診断装置 | |
KR0176721B1 (ko) | 내연기관용 연료공급 제어장치 | |
JPH09287544A (ja) | 内燃機関の点火時期制御装置 | |
JP3659171B2 (ja) | エンジンの制御装置 | |
JP2581033B2 (ja) | 内燃機関の燃料噴射量制御方法 | |
JPH0783104A (ja) | 点火時期制御方法 | |
JP5316103B2 (ja) | 内燃機関の制御装置及び内燃機関の制御方法 | |
JP2007099225A (ja) | 車両の自動走行制御装置 | |
JP3966177B2 (ja) | 内燃機関の空燃比制御装置 |