(57)【特許請求の範囲】
【請求項１】
内燃機関の機関状態を検出するために設けられ、正常状態では、大小関係を有する複数の基準値の内大きい方の第１の基準値を越す極大値と、小さい方の第２の基準値を下回る極小値とを有する出力波形を出力するセンサを備えた内燃機関の故障有無判定方法において、
ダイアグノーシス実行条件が成立している状態にあって、前記センサの出力値が第１の基準値を越えた時、及び第２の基準値を下回った時にカウント手段のカウント数をそれぞれ歩進し、
前記カウント数が所定回数に達したときには、センサが正常であると判定するとともに、
前記カウント数が所定回数に達するまでに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、センサが異常であると判定し、
前記ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、前記カウント数は所定回数に達していないものの、前記ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、前記センサを正常とも異常とも判定しない
内燃機関の故障有無判定方法。
【請求項２】
内燃機関の機関状態を検出するために設けられ、正常状態では、大小関係を有する複数の基準値の内大きい方の第１の基準値を越す極大値と、小さい方の第２の基準値を下回る極小値とを有する出力波形を出力するセンサを備えた内燃機関の故障有無判定方法において、
ダイアグノーシス実行条件が成立している状態にあって、故障判定が開始された時のセンサの出力値が第２の基準値を下回っているとき、或いは第１の基準値を越えているときにカウント手段のカウント数を歩進し、以後、センサの出力値が第１の基準値を越えた時、及び第２の基準値を下回った時に前記カウント手段のカウント数をそれぞれ歩進し、
前記カウント数が所定回数に達したときには、センサが正常であると判定するとともに、
前記カウント数が所定回数に達するまでに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、センサが異常であると判定し、
前記ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、前記カウント数は所定回数に達していないものの、前記ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、前記センサを正常とも異常とも判定しない
内燃機関の故障有無判定方法。
【請求項３】
カウント手段は第１の基準値をセンサからの出力値が越えたときカウントする第１カウンタと、第２の基準値をセンサからの出力値が下回ったときカウントする第２カウンタとからなり、両カウンタのカウント数がそれぞれ所定回数に達したとき、センサが正常であると判定する請求項１又は請求項２に記載の内燃機関の故障有無判定方法。
【請求項４】
センサは、内燃機関の排気系に配設される触媒コンバータの上流側及び下流側に配設された空燃比を検出するための空燃比センサである請求項１乃至請求項３のうちいずれかに記載の内燃機関の故障有無判定方法。
【請求項５】
内燃機関の機関状態を検出するために設けられ、正常状態では、大小関係を有する複数の基準値の内大きい方の第１の基準値を越す極大値と、小さい方の第２の基準値を下回る極小値とを有する出力波形を出力するセンサを備えた内燃機関の故障有無判定方法において、
ダイアグノーシス実行条件が成立している状態にあって、前記センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出したときには、前記センサが正常であると判定するとともに、
ダイアグノーシス実行条件が成立している状態にあって、前記センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出するまでに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、前記センサが異常であると判定し、
前記ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、前記センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出していないものの、前記ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、前記センサを正常とも異常とも判定しない
内燃機関の故障有無判定方法。
【請求項６】
請求項１乃至５のうちいずれかに記載の内燃機関の故障有無判定方法において、
故障有無判定に要する時間をはるかに越えるときに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過するとする内燃機関の故障有無判定方法。
【請求項７】
請求項１乃至５のうちいずれかに記載の内燃機関の故障有無判定方法において、
前記センサの出力電圧が安定化する条件が長い時間成立するときに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過するとする内燃機関の故障有無判定方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、内燃機関の故障有無判定方法に係り、詳しくは内燃機関に設けられる機関状態を検出するセンサの故障有無判定方法に関するものである。
【０００２】
【従来の技術】
従来から内燃機関においては、ダイアグノーシス検出が行われており、いくつかのダイアグノーシス検出項目の内１箇所でも異常が検出された場合、ウォーニングランプが点灯するようになっている。法規制では、いくつかのダイアグノーシス検出項目の内１箇所でも異常が検出されてウォーニングランプが点灯した場合、ウォーニングランプを消灯させるには、全ての箇所が正常であることを判定する必要がある。そのため正常な動作をしている時には、できるだけ早く正常判定を行いたいという要求がある。
【０００３】
いくつかのダイアグノーシス検出項目の中の１つにはＯ2 センサがある。Ｏ2 センサにおいては、正常又は異常と判定した判定期間内のＯ2 センサ波形の最大電圧値、最小電圧値を出力することを行うことがある。最大値、最小値を求める理由は、正常判定した時に判定レベル（異常／正常）にどれだけ近いかとか、すなわち、異常ギリギリで正常と判定しているのではないか等、Ｏ2 センサの劣化度合を市場で故障解析するために有効な手段として用意しておくためである。
【０００４】
その従来方法として、ある程度の時間が（例えば１０分間）が経過した後、異常でなければ正常と判定し、その中での最大値、最小値をとっていた。
【０００５】
【発明が解決しようとする課題】
ところが、この方法では正常に動作しているにもかかわらず正常と判定するのに時間を要する問題がある。そこで、最も早く正常と判定をするには、正常と判定できる所定レベルを越えた時に判定することも考えられるが、これでは真の最大値、最小値を得ることができない問題がある。又、最大値＝極大値、最小値＝極小値と考えればよいが、この方法として（前回ＡＤ値）−（今回ＡＤ値）＝ｄとし、ｄの符合が反転した時と考えると、ノイズなどにより１ｂｉｔでもずれた時に極値と判定してしまう虞がある。
【０００６】
又、図１３に示すように判定開始時Ｔ１から判定終了時Ｔ２までの所定時間で最大値、最小値を上記極大値、極小値とし、市場解析情報として提供した場合、極大値αは確実にとれているが、所定時間の終了時刻Ｔ２で極小値が確定していないものを極小値β１として提供してＥＣＵ交換される虞がある。なお、図１３において真の極小値はβであり、Ｖ１及びＶ２は基準レベルを示す。
【０００７】
この発明は前述した事情に鑑みてなされたものであって、その目的は、正常判定を早く行うことができる内燃機関の故障有無判定方法を提供することにある。又、確実に極大値、極小値を市場解析情報として提供することができる内燃機関の故障有無判定方法を提供することにある。
【０００８】
【課題を解決するための手段】
上記の目的を達成するために請求項１の発明は、内燃機関の機関状態を検出するために設けられ、正常状態では、大小関係を有する複数の基準値の内大きい方の第１の基準値を越す極大値と、小さい方の第２の基準値を下回る極小値とを有する出力波形を出力するセンサを備えた内燃機関の故障有無判定方法において、ダイアグノーシス実行条件が成立している状態にあって、前記センサの出力値が第１の基準値を越えた時、及び第２の基準値を下回った時にカウント手段のカウント数をそれぞれ歩進し、前記カウント数が所定回数に達したときには、センサが正常であると判定するとともに、前記カウント数が所定回数に達するまでに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、センサが異常であると判定し、前記ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、前記カウント数は所定回数に達していないものの、前記ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、前記センサを正常とも異常とも判定しないことを要旨としている。
【０００９】
請求項２の発明は、内燃機関の機関状態を検出するために設けられ、正常状態では、大小関係を有する複数の基準値の内大きい方の第１の基準値を越す極大値と、小さい方の第２の基準値を下回る極小値とを有する出力波形を出力するセンサを備えた内燃機関の故障有無判定方法において、ダイアグノーシス実行条件が成立している状態にあって、故障判定が開始された時のセンサの出力値が第２の基準値を下回っているとき、或いは第１の基準値を越えているときにカウント手段のカウント数を歩進し、以後、センサの出力値が第１の基準値を越えた時、及び第２の基準値を下回った時に前記カウント手段のカウント数をそれぞれ歩進し、前記カウント数が所定回数に達したときには、センサが正常であると判定するとともに、前記カウント数が所定回数に達するまでに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、センサが異常であると判定し、前記ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、前記カウント数は所定回数に達していないものの、前記ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、前記センサを正常とも異常とも判定しないことを要旨としている。
【００１０】
請求項３の発明は、請求項１又は請求項２において、カウント手段は第１の基準値をセンサからの出力値が越えたときカウントする第１カウンタと、第２の基準値をセンサからの出力値が下回ったときカウントする第２カウンタとからなり、両カウンタのカウント数がそれぞれ所定回数に達したとき、センサが正常であると判定することを要旨としている。
【００１１】
請求項４の発明は、請求項１乃至請求項３のうちいずれかに記載の請求項において、センサは、内燃機関の排気系に配設される触媒コンバータの上流側及び下流側に配設された空燃比を検出するための空燃比センサであることを要旨としている。
【００１２】
請求項５の発明は、内燃機関の機関状態を検出するために設けられ、正常状態では、大小関係を有する複数の基準値の内大きい方の第１の基準値を越す極大値と、小さい方の第２の基準値を下回る極小値とを有する出力波形を出力するセンサを備えた内燃機関の故障有無判定方法において、ダイアグノーシス実行条件が成立している状態にあって、前記センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出したときには、前記センサが正常であると判定するとともに、ダイアグノーシス実行条件が成立している状態にあって、前記センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出するまでに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、前記センサが異常であると判定し、前記ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、前記センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出していないものの、前記ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、前記センサを正常とも異常とも判定しないことを要旨としている。
【００１３】
請求項６の発明は、請求項１乃至５のうちいずれかにおいて、故障有無判定に要する時間をはるかに越えるときに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過するとすることを要旨としている。
【００１４】
請求項７の発明は、請求項１乃至５のうちいずれかにおいて、前記センサの出力電圧が安定化する条件が長い時間成立するときに、前記ダイアグノーシス実行条件が成立している時間がはるかに経過するとすることを要旨としている。
【００１５】
【作用】
上記の構成によれば、請求項１の発明は、ダイアグノーシス実行条件が成立している状態にあって、センサの出力値が第１の基準値を越えた時、及び第２の基準値を下回った時、カウント手段のカウント数をそれぞれ歩進する。そして、このカウント数が所定回数に達したときには、センサが正常であると判定する。一方、上記カウント数が所定回数に達するまでに、ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、センサが異常であると判定する。他方、ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、上記カウント数は所定回数に達していないものの、ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、センサを正常とも異常とも判定しない。
【００１６】
請求項２の発明は、ダイアグノーシス実行条件が成立している状態にあって、故障判定が開始された時のセンサの出力値が第２の基準値を下回っているとき、或いは第１の基準値を越えているときにカウント手段のカウント数を歩進し、以後、センサの出力値が第１の基準値を越えた時、及び第２の基準値を下回った時に前記カウント手段のカウント数を歩進する。そして、上記カウント数が所定回数に達したときには、センサが正常であると判定する。一方、上記カウント数が所定回数に達するまでに、ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、センサが異常であると判定する。他方、ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、上記カウント数は所定回数に達していないものの、ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、センサを正常とも異常とも判定しない。
請求項３の発明は、第１の基準値をセンサからの出力値が越えたとき第１のカウンタはカウントを行う。又、第２の基準値をセンサからの出力値が下回ったとき第２のカウンタは、カウントを行う。そして、両カウンタのカウント数がそれぞれ所定回数に達したとき、センサが正常であると判定する。
【００１７】
請求項４の発明は、空燃比センサの出力波形に基づいて内燃機関の故障有無判定が行われる。
請求項５の発明では、ダイアグノーシス実行条件が成立している状態にあって、センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出したときには、センサが正常であると判定する。一方、ダイアグノーシス実行条件が成立している状態にあって、センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出するまでに、ダイアグノーシス実行条件が成立している時間がはるかに経過したときには、センサが異常であると判定する。他方、ダイアグノーシス実行条件が成立しておらず、故障有無判定を実施していないとき、並びに、上記センサの出力値が第１の基準値と第２の基準値との双方を横切った状態を検出していないものの、ダイアグノーシス実行条件が成立している時間がはるかに経過していないときには、センサを正常とも異常とも判定しない。
【００２０】
【実施例】
以下、この発明を具体化した一実施例を図１〜図５に基づいて説明する。
図１は、本発明に係る実施例の構成を示す図である。図１において、機関本体１の吸気通路２の上流側には図示しないアクセルペダルの操作に連動して開閉されるスロットルバルブ３が設けられている。又、吸気通路２の下流側には燃料供給系から機関本体１に加圧燃料を供給するための燃料噴射弁４が設けられている。排気通路５には、排気ガス中の３つの有害成分ＨＣ、ＣＯ，ＮＯX を同時に浄化する三元触媒を収容した触媒コンバータ６が配設されている。触媒コンバータ６の上流側および下流側の排気通路５には、空燃比センサとしての上流側Ｏ2 センサ７および下流側Ｏ2 センサ８がそれぞれ設けられている。同Ｏ2 センサ７，８は排気ガス中の酸素成分濃度に応じた電圧信号を出力する。そして、この出力値に応じて空燃比が制御される。
【００２１】
又、Ｏ2 センサ７，８には、Ｏ2 センサ７，８の活性化を促進するためのヒータ９，１０が設けられている。このヒータ９，１０は後述する制御回路１１による通電信号に応じて通電されて、発熱する。ウォーニングランプ１９はＯ2 センサ７，８の異常が検出された場合に、異常検出信号を受けて警告を表示するものである。
【００２２】
判定手段を構成する制御回路１１は、ＣＰＵ１２、ＲＯＭ１３、記憶手段及びカウント手段としてのＲＡＭ１４、バックアップＲＡＭ１５、基準クロック発生回路１６、Ａ／Ｄ変換器１７、及びＩ／Ｏポート１８を備えている。制御回路１１にはＯ2 センサ７，８からの検出信号が入力され、そのデータがＲＡＭ１４に一時記憶される。ＲＡＭ１４は後述する各種カウンタ、フラグを内臓している。ＲＯＭ１３には後述の図２〜４に示すプログラムを格納している。
【００２３】
次に、本実施例の異常検出装置の作用を説明する。なお、この実施例では、下流側Ｏ2 センサ８の異常検出について説明する。
Ｏ2 センサ８の故障診断は図２の判定ルーチンにより判定し、表示を行う。判定ルーチンは定期的なタイミング、例えば４０msにて処理を行う。従って、判定ルーチンのタイミングによりはじめに判定を行えるタイミングであるか否か、すなわちダイアグノーシス実行条件が成立しているか否かを判定する（ステップ２１０）。ダイアグノーシス実行条件としては、Ｏ2 センサがヒータ１０の発熱動作により活性化され出力電圧が安定化する条件（Ａ／Ｆフィードバック条件等）を満足しているか、又、誤判定をするような他のダイアグノーシスの異常を検出していないか等である。ステップ２１０においてダイアグノーシス実行条件が成立していないと判定すると、このルーチンを終了する。ダイアグノーシス実行条件成立と判定されると、その時のＯ2 センサ８の電圧ＡＤ（以下、ＯＸＡＤという）値と正常値と判定できる第２の基準値としてのＶ２レベルを比較する（ステップ２１１）。Ｖ２レベル以上であれば後記するステップ２１６に移行する。Ｖ２レベルより小さければ次にＣＯＸ＝０か否かを判定する（ステップ２１２）。なお、ここでＣＯＸ＝０か否かを判定するのは、ダイアグノーシス実行条件成立後１カウント目は、実行条件成立前のＯＸＡＤ値にかかわらずＯＸＡＤ＜Ｖ２ならば１カウントアップするためである。
【００２４】
ステップ２１２においてＣ０Ｘ＝０であれば、ステップ２１３をバイパスしてステップ２１４に移行する。又、ＣＯＸ≠０であればＯＸＡＤ値が第１の基準値としてのＶ１レベル（Ｖ１＞Ｖ２）を横切ったか否かをみるためにＸＯＸフラグ（以下、ＸＯＸという）＝０か否かをチエックする（ステップ２１３）。ＸＯＸ＝１であれば、ステップ２１４でＸＯＸ＝０とし、ＣＯＸカウンタ（以下、ＣＯＸという）をインクリメントし（ステップ２１５）、ステップ２１６へ移行する。前記ステップ２１３においてＸＯＸ＝０の場合は、Ｖ２レベルを越えずにＶ１レベルより小さくなったということであり、ＣＯＸをインクリメントしないでステップ２１６へ移行する。ステップ２１６では、ＲＡＭ１４に格納している今までのＯＸＡＤ値の最小値（以下、ＯＸＭＮという）と比較し、小さければ現在の０ＸＡＤ値をＲＡＭ１４に格納することによりＯＸＭＮを更新する（ステップ２１７）。反対に今までのＯＸＡＤ値の最小値よりも大きければＯＸＭＮの更新をせず、ステップ２１８に移行する。
【００２５】
次に上側Ｖ１レベルの判定について説明する。
まず、ステップ２１８でその時のＯＸＡＤ値と正常値と判定できる基準レベルとしてのＶ１レベルを比較し、Ｖ１レベル以下であればステップ２２３に移行し、Ｖ１レベルより大きければステップ２１９へ進む。ここではステップ２１２と同様にＣＯＸ＝０か否かを判定する。ここでＣＯＸ＝０か否かを判定するのは、ダイアグノーシス実行条件成立後におけるＣＯＸカウンタの１カウント目は、実行条件成立前のＯＸＡＤ値にかかわらずＯＸＡＤ＞Ｖ１ならば１カウントアップするためである。ステップ２１２とステップ２１９の２回行うのは、ダイアグノーシス実行条件が成立時のＯＸＡＤ値が分からないためである。ステップ２１９においてＣＯＸ＝０の場合は、ステップ２２０をバイパスしてステップ２２１においてＸＯＸ＝１とする。そして、次のステップ２２２において実行条件成立前の値にかかわらずＯＸＡＤ＞Ｖ１レベルのときは１カウントアップするのである。
【００２６】
ＣＯＸ≠０の場合には、ＯＸＡＤ値がＶ２レベルを横切ったか否かをステップ２２０で判定する。ＸＯＸ＝１であれば以前ＸＯＸ＝１としてからＶ２レベルを横切っていないということであるため、ＣＯＸの処理は行わず、ステップ２２３に移行する。ステップ２２０においてＸＯＸ＝０の場合は、ＯＸＡＤ値がＶ２レベルを横切って初めてＶ１レベルを越えたということであり、ＸＯＸ＝１（ステップ２２１）とし、ＣＯＸをインクリメントする（ステップ２２２）。そして、ステップ２２３でＲＡＭ１４に格納している今までのＯＸＡＤ値の最大値（以下、ＯＸＭＸという）と比較し、最大値よりそのときのＯＸＡＤ値が大きければＯＸＭＸを更新する（ステップ２２４）。又、最大値以下であれば、ステップ２２５に移行する。
【００２７】
次に正常か異常かの判定ルーチンの説明をする。
まず、ステップ２２５においてＣＯＸ≧４か否かを判定し、ＣＯＸ≧４であればステップ２２７において正常と判定し、ステップ２２９に移行する。ＣＯＸ＜４の場合はステップ２２６において異常としてよいかの判定をする異常検出条件をチェックする。異常検出条件としては、ダイアグノーシス実行条件が成立している時間がはるかに経過している（ＣＯＸ≧４となるために要する時間をはるかに越えている）等がある。ステップ２２６において異常検出条件が成立していた場合、ステップ２２８に移行して異常と判定し、ウォーニングランプ１９を表示作動させ、ステップ２２９に移行する。
【００２８】
ステップ２２７，２２８で異常か正常かの判定が終了したら、今までの最大値（ＯＸＭＸ）、最小値（ＯＸＭＮ）をバックアップＲＡＭ１５へ格納する（ステップ２２９，２３０）。異常とも正常とも判定できない場合には、上記各ステップを繰り返す。
【００２９】
上記説明中のＸＯＸフラグ、ＣＯＸカウンタを図６を参照して説明する。
図６（ｂ）、（ｃ）、（ｄ）は図６（ａ）に示すＯ2 センサ８からの出力電圧に対して判定開始時点がＡ，Ｂ，Ｃのように異なった場合のＸＯＸフラグ及びＣＯＸカウンタの動作状態を示している。
【００３０】
ＸＯＸフラグはダイアグノーシス実行条件成立かつＯＸＡＤ＞Ｖ１レベルの時（ステップ２１０、ステップ２１８乃至ステップ２２１）を１とし、ダイアグノーシス実行条件成立かつＯＸＡＤ＜Ｖ２レベルの時（ステップ２１０、ステップ２１１乃至ステップ２１４）を０とする。ＣＯＸカウンタは、初めＸＯＸ＝１，ＸＯＸ＝０とする条件成立時に１カウントし、その後ＸＯＸフラグが反転する時にカウントアップする。
【００３１】
ＸＯＸフラグを上記のように設定する理由は、ＯＸＡＤ値がＯＸＡＤ＜Ｖ２レベルになるまでにＯＸＡＤ＞Ｖ１レベルとなったか否かをチェックするためである。同様にＯＸＡＤ＞Ｖ１レベルになるまでＯＸＡＤ＜Ｖ２となったか否かをチェックするためである。
【００３２】
又、ＣＯＸカウンタを上記のように設定する理由は、判定開始時のＯＸＡＤ値が不明であり、そのため、１カウント目はＸＯＸフラグの反転を得ることができないことからＸＯＸ＝０，ＸＯＸ＝１の条件成立時としている。
【００３３】
その後、ＸＯＸが反転時カウントアップするのは図７に示すようにＶ２レベルを横切らず再びＶ１レベルを横切った場合は、正常な動作とはいえないため、カウントアップしないためである。
【００３４】
又、ＣＯＸ≧４で正常判定とした理由は、ＣＯＸ≧２ですでに正常判定は可能であるが、確実に極大値、極小値がとれるのは図５，図６（ａ）、（ｂ）、（ｃ）から明らかであるようにＣＯＸ≧３では判定開始Ｂのときはよいが、判定開始Ａのような場合には、極小値がとれないため，どのような場合で判定を開始されてもよいようにＣＯＸ≧４としているのである。
【００３５】
この方法で判定を行えば、極大値、極小値をつくる山、谷を数えて常に最大値、最小値の更新をしているため、正常判定が早くでき、かつ最大値、最小値も確実に得ることができる。
【００３６】
なお、図７に示すようにＶ１レベルを横切った後、Ｖ２レベルを横切らず再びＶ１レベルを横切った場合は、フラグが反転せずカウントアップされないので、正常判定値＝４となることはない。よって、判定レベルＶ１，Ｖ２を横切らずに振幅する特性の場合に正常と誤判定することはない。
【００３７】
次に第２実施例について図８及び図９に従って説明する。
この実施例では、判定ルーチンにおいて前記第１実施例と異なるところのみを説明し、第１実施例と同一ステップについては同一ステップ番号を付してその説明を省略する。
【００３８】
この実施例では、前記第１実施例のフローチャートのうち、ステップ２１３、ステップ２１４の代わりにステップ３１３、ステップ３１４が行われるとともに、ステップ２２０、ステップ２２１の代わりにステップ３２０、ステップ３２１が行われる。
【００３９】
すなわち、図８に示すようにステップ２１２においてＣ０Ｘ＝０であれば、ステップ３１３をバイパスしてステップ３１４に移行する。又、ＣＯＸ≠０であればＯＸＡＤ値がＶ１レベル（Ｖ１＞Ｖ２）を横切ったか否かをみるためにＸＯＸフラグ（以下、ＸＯＸという）＝１か否かをチエックする（ステップ３１３）。ＸＯＸ＝０であれば、ステップ３１４でＸＯＸ＝１とし、ＣＯＸカウンタ（以下、ＣＯＸという）をインクリメントし（ステップ２１５）、ステップ２１６へ移行する。前記ステップ３１３においてＸＯＸ＝１の場合は、Ｖ２レベルを越えずにＶ１レベルより小さくなったということであり、ＣＯＸをインクリメントしないでステップ２１６へ移行する。
【００４０】
又、ステップ２１９においてＣＯＸ＝０の場合は、ステップ３２０をバイパスしてステップ３２１においてＸＯＸ＝０とする。そして、次のステップ２２２において実行条件成立前の値にかかわらずＯＸＡＤ＞Ｖ１レベルのときは１カウントアップする。ステップ２１９においてＣＯＸ≠０の場合には、ＯＸＡＤ値がＶ２レベルを横切ったか否かをステップ３２０で判定する。ＸＯＸ＝０であれば以前ＸＯＸ＝０としてからＶ２レベルを横切っていないということであるため、ＣＯＸの処理は行わず、ステップ２２３に移行する。ステップ３２０においてＸＯＸ≠０の場合は、ＯＸＡＤ値がＶ２レベルを横切って初めてＶ１レベルを越えたということであり、ＸＯＸ＝０（ステップ３２１）とし、ＣＯＸをインクリメントする（ステップ２２２）。
【００４１】
従って、この第２実施例では、第１実施例のＸＯＸフラグのセット、リセットと逆の関係になるだけであるため、その作用効果は第１実施例と同様である。
次に第３実施例を図１０〜図１２に従って説明する。
【００４２】
この実施例においては、カウント手段としてのＲＡＭ１４には第１カウンタとしてのＣＯＸＨカウンタと、第２カウンタとしてのＣＯＸＬカウンタとが内蔵されている。
【００４３】
この実施例におけるＯ2 センサ８の故障診断は図１０及び図１１の判定ルーチンにより判定し、表示を行う。この実施例においても判定ルーチンは定期的なタイミング、例えば４０msにて処理を行う。まず、このルーチンに入ると、判定ルーチンのタイミングによりはじめに判定を行えるタイミングであるか否か、すなわちダイアグノーシス実行条件が成立しているか否かを判定する（ステップ４１０）。ダイアグノーシス実行条件は前記第１実施例と同様の条件である。
【００４４】
ステップ４１０においてダイアグノーシス実行条件が成立していないと判定すると、このルーチンを終了する。ダイアグノーシス実行条件成立と判定されると、その時のＯ2 センサ８の電圧ＡＤ（以下、ＯＸＡＤという）値とＶ２レベルを比較する（ステップ４１１）。Ｖ２レベル以上であれば後記するステップ４１６に移行する。
【００４５】
Ｖ２レベルより小さければ次にステップ４１２においてＸＦＩＲＳＴフラグ（以下、ＸＦＩＲＳＴという）＝１か否かを判定する。なお、ここでＸＦＩＲＳＴ＝１か否かを判定するのは、ダイアグノーシス実行条件成立後におけるＣＯＸＬカウンタの１カウント目は、実行条件成立前のＯＸＡＤ値にかかわらずＯＸＡＤ＜Ｖ２ならば１カウントアップするためである。ＸＦＩＲＳＴはこの内燃機関の制御回路１１が起動された後の初期設定で０にリセットされ、又、後のステップ４３３において正常と判定された後、或いはステップ４２８において異常と判定された後に０にリセットされる。
【００４６】
ステップ４１２においてＸＦＩＲＳＴ≠１であれば、ステップ４１３をバイパスしてステップ４３１でＸＦＩＲＳＴを１にセットし、ステップ４１４でＸＯＸ＝０とする。又、ＸＦＩＲＳＴ＝１であればＯＸＡＤ値がＶ１レベル（Ｖ１＞Ｖ２）を横切ったか否かをみるためにＸＯＸ＝０か否かをチエックする（ステップ４１３）。ＸＯＸ＝１であれば、ステップ４１４でＸＯＸ＝０とし、ＣＯＸＬカウンタ（以下、ＣＯＸＬという）をインクリメントし（ステップ４１５）、ステップ４１６へ移行する。前記ステップ４１３においてＸＯＸ＝０の場合は、Ｖ２レベルを越えずにＶ１レベルより小さくなったということであり、ＣＯＸＬをインクリメントしないでステップ４１６へ移行する。ステップ４１６〜４１８は第１実施例のステップ２１６〜２１８と同じであるので説明を省略する。
【００４７】
次に上側Ｖ１レベルの判定について説明する。
まず、ステップ４１８でその時のＯＸＡＤ値とＶ１レベルを比較し、Ｖ１レベル以下であればステップ４２３に移行し、Ｖ１レベルより大きければステップ４１９へ進む。ここではステップ４１２と同様にＸＦＩＲＳＴ＝１か否かを判定する。ここでＸＦＩＲＳＴ＝１か否かを判定するのは、ダイアグノーシス実行条件成立後におけるＣＯＸＨカウンタの１カウント目は、実行条件成立前のＯＸＡＤ値にかかわらずＯＸＡＤ＞Ｖ１ならば１カウントアップするためである。又、ステップ４１２とステップ４１９においてＸＦＩＲＳＴ＝１か否かの判定を２回行うのは、ダイアグノーシス実行条件が成立時のＯＸＡＤ値が分からないためである。ステップ４１９においてＸＦＩＲＳＴ≠１であれば、ステップ４２０をバイパスしてステップ４３２でＸＦＩＲＳＴを１にセットし、ステップ４２１に移行する。同ステップ４２１においてＸＯＸ＝１とする。そして、次のステップ４２２においてダイアグノーシス実行条件成立前の値にかかわらずＯＸＡＤ＞Ｖ１レベルのときは１カウントアップするのである。
【００４８】
又、ステップ４１９においてＸＦＩＲＳＴ＝１の場合には、ＯＸＡＤ値がＶ２レベルを横切ったか否かをステップ４２０で判定する。ステップ４２０においてＸＯＸ＝１であれば以前ＸＯＸ＝１としてからＶ２レベルを横切っていないということであるため、ＣＯＸの処理は行わず、ステップ４２３に移行する。ステップ４２０においてＸＯＸ＝０の場合は、ＯＸＡＤ値がＶ２レベルを横切って初めてＶ１レベルを越えたということであり、ＸＯＸ＝１（ステップ４２１）とし、ＣＯＸＨカウンタをインクリメントする（ステップ４２２）。そして、ステップ４２３でＲＡＭ１４に格納している今までのＯＸＡＤ値の最大値（ＯＸＭＸ）と比較し、最大値よりそのときのＯＸＡＤ値が大きければＯＸＭＸを更新する（ステップ４２４）。又、最大値以下であれば、ステップ４２５に移行する。
【００４９】
次に正常か異常かの判定ルーチンの説明をする。
まず、ステップ４２５においてＣＯＸＬ≧２か否かを判定し、ＣＯＸＬ≧２であればステップ４２６においてＣＯＸＨ≧２か否かを判定する。ステップ４２６においてＣＯＸＨ≧２であれば、ステップ４３３において正常と判定し、ステップ４２９に移行する。
【００５０】
ステップ４２５においてＣＯＸＬ＜２の場合はステップ４２７において異常としてよいかの判定をする異常検出条件をチェックする。又、ステップ４２６においてＣＯＸＨ＜２の場合は同じくステップ４２７において異常としてよいかの判定をする異常検出条件をチェックする。異常検出条件としては、ダイアグノーシス実行条件が成立している時間がはるかに経過している（ＣＯＸＬ≧２、かつＣＯＸＨ≧２となるために要する時間をはるかに越えている）等がある。ステップ２２６において異常検出条件が成立していた場合、ステップ４２８に移行して異常と判定し、ウォーニングランプ１９を表示作動させ、ステップ４２９に移行する。
【００５１】
ステップ４２７，４２８で異常か正常かの判定が終了したら、今までの最大値（ＯＸＭＸ）、最小値（ＯＸＭＮ）をバックアップＲＡＭ１５へ格納する（ステップ４２９，４３０）。異常とも正常とも判定できない場合には、上記各ステップを繰り返す。
【００５２】
上記説明中のＸＦＩＲＳＴフラグ、ＣＯＸＬカウンタ及びＣＯＸＨカウンタを図１２を参照して説明する。
図１２（ｂ）は、第３実施例におけるＸＯＸフラグの状態と、ＣＯＸＬカウンタ及びＣＯＸＨカウンタのカウントアップの状態が示されている。又、図１２（ａ）は第２実施例のＸＯＸフラグの状態とＣＯＸカウンタのカウントアップの状態が示されている。
【００５３】
ＸＯＸフラグはダイアグノーシス実行条件成立かつＯＸＡＤ＞Ｖ１レベルの時（ステップ４１０、ステップ４１８乃至ステップ４２１）を１とし、ダイアグノーシス実行条件成立かつＯＸＡＤ＜Ｖ２レベルの時（ステップ４１０、ステップ４１１乃至ステップ４１４）を０とする。ＣＯＸＬカウンタは初めＸＯＸ＝０とする条件成立時に１カウントし、その後ＸＯＸフラグが１から０に反転する時にカウントアップする。又，ＣＯＸＨカウンタは初めＸＯＸ＝１とする条件成立時に１カウントし、その後ＸＯＸフラグが０から１に反転する時にカウントアップする。
【００５４】
ＸＯＸフラグを上記のように設定する理由は、ＯＸＡＤ値がＯＸＡＤ＜Ｖ２レベルになるまでにＯＸＡＤ＞Ｖ１レベルとなったか否かをチェックするためである。同様にＯＸＡＤ＞Ｖ１レベルになるまでＯＸＡＤ＜Ｖ２となったか否かをチェックするためである。
【００５５】
又、ＣＯＸＬカウンタ及びＣＯＸＨカウンタを上記のように設定する理由は、判定開始時のＯＸＡＤ値が不明であり、そのため、１カウント目はＸＯＸフラグの反転を得ることができないことからＸＯＸ＝０，ＸＯＸ＝１の条件成立時としている。ＣＯＸＬ≧２かつＣＯＸＨ≧２で正常判定とした理由は、第１実施例と同様に確実に極大値、極小値をとるためである。
【００５６】
従って、この第３実施例の方法で判定においても、極大値、極小値をつくる山、谷を数えて常に最大値、最小値の更新をしているため、正常判定が早くでき、かつ最大値、最小値も確実に得ることができる。
【００５７】
なお，この発明は前記実施例に限定されるものではなく、下記のように実施してもよい。
（１）前記第３実施例のＸＦＩＲＳＴフラグの代わりに、ステップ４１２及びステップ４１９をＣＯＸＬカウンタとＣＯＸＨカウンタの合計値が０か否かを判定するステップに変更してもよい。この場合、ステップ４３１及びステップ４３２は省略され、ステップ４１２、４１９においてＣＯＸＬ＋ＣＯＸＨ＝０のときはステップ４１４、４２１にそれぞれ移行する。又、ステップ４１２、４１９においてＣＯＸＬ＋ＣＯＸＨ≠０のときはステップ４１３、４２０にそれぞれ移行する。
【００５８】
（２）前記第３実施例のＸＯＸフラグのセット、リセットを逆の関係にしてもよい。すなわち、第３実施例のステップ４１３，４１４の代わりにステップ４２０、４２１を行い、第３実施例のステップ４２０，４２１の代わりにステップ４１３、４１４を行う。
【００５９】
（３）前記第１実施例ではＣＯＸ≧４で正常判定をしたが、所定回数が５以上のカウント数で正常か否かを判定してもよい。ただし、所定回数が４に近づくほどより早い正常判定が可能となる。
【００６０】
（４）前記第３実施例ではＣＯＸＬ≧２、ＣＯＸＨ≧２のとき正常判定をしたが、例えばＣＯＸＬ≧２、ＣＯＸＨ≧３或いはＣＯＸＬ≧３、ＣＯＸＨ≧２のように又はＣＯＸＬとＣＯＸＨとの合計数が５以上のカウント数で正常か否かを判定してもよい。ただし、ＣＯＸＬとＣＯＸＨとの合計の所定回数が４に近づくほどより早い正常判定が可能となる。
【００６１】
（５）前記各実施例ではカウントを加算することによって行っていたが、減算することによって所定回数に達したか否かを判定するようにしてもよい。この場合においても、極大値、極小値をつくる山谷を越えて常に最大値、最小値の更新を行っているため、正常判定が早くでき、かつ最大値、最小値も確実に得ることができる。
【００６２】
（６）前記各実施例では、故障判定開始時において、そのときのセンサからの出力値がＶ２を下回っているとき、或いはＶ１を越えているときは、カウンタのカウント数を歩進したが、故障判定開始後において空燃比センサからの出力値がＶ１を越えた時、及びＶ２を下回った時に、カウンタのカウント数を歩進してもよい。この場合には、正常判定は前記各実施例よりは若干遅れるが、従来よりは十分に早いためこれでもよい。
【００６３】
【発明の効果】
以上詳述したように、この発明によれば、センサの正常判定を早く行うことができ、かつ極大値及び極小値をえることができる優れた効果を奏する。
【００６４】
特に請求項２の発明は、故障判定が開始された時のセンサの出力値によってもカウントするため、より早くセンサの正常判定を早く行うことができる。又、請求項４の発明によれば、空燃比センサの正常判定を早く行うことができる。
【図面の簡単な説明】
【図１】本発明を具体化した実施例の電気ブロック回路図である。
【図２】第１実施例における判定処理の実行条件を示すフローチャートである。
【図３】同じく判定処理の実行条件を示すフローチャートである。
【図４】同じく極大値・極小値を求めるフローチャートである。
【図５】Ｏ2 センサ、フラグ、カウンタの特性を示す波形図である。
【図６】（ａ）はＯ2 センサの出力電圧を表す波形図、（ｂ）は判定開始時Ａにおけるフラグ、カウンタの特性を示す波形図、（ｃ）は判定開始時Ｂにおけるフラグ、カウンタの特性を示す波形図、（ｄ）は判定開始時Ｃにおけるフラグ、カウンタの特性を示す波形図である。
【図７】Ｏ2 センサが正常でない場合のＯ2 センサの出力電圧、フラグ、カウンタの特性を示す波形図である。
【図８】第２実施例の判定処理の実行条件を示すフローチャートである。
【図９】同じく判定処理及び極大値・極小値を求めるフローチャートである。
【図１０】第３実施例の判定処理の実行条件を示すフローチャートである。
【図１１】同じく判定処理及び極大値・極小値を求めるフローチャートである。
【図１２】（ａ）、（ｂ）はそれぞれＯ2 センサの出力電圧、フラグ、カウンタの特性を示す波形図である。
【図１３】従来例における極大、極小値をとる場合の説明図である。
【符号の説明】
１…機関本体、５…排気通路、６…触媒コンバータ、７…上流側Ｏ2 センサ、８…下流側Ｏ2 センサ、１１…制御回路、１２…ＣＰＵ、１３…ＲＯＭ、１４…ＲＡＭ、１５…バックアップＲＡＭ、１９…ウォーニングランプ。
【図１】
0003711567.tif 000002
【図２】
0003711567.tif 000003
【図３】
0003711567.tif 000004
【図４】
0003711567.tif 000005
【図５】
0003711567.tif 000006
【図６】
0003711567.tif 000007
【図７】
0003711567.tif 000008
【図８】
0003711567.tif 000009
【図９】
0003711567.tif 000010
【図１０】
0003711567.tif 000011
【図１１】
0003711567.tif 000012
【図１２】
0003711567.tif 000013
【図１３】
0003711567.tif 000014