(57)【要約】【課題】リニア空燃比センサの劣化と、リニア空燃比センサの劣化診断を行うコントロールユニット自体の不具合とを確実かつ正確に検出することを可能にする手段を提供する。【解決手段】エンジン１は、リニア空燃比センサ２４と、シミュレータ２６と、コントロールユニット３０とを備えている。シミュレータ２６は、リニア空燃比センサ２４の検出信号に基づいて空燃比の擬似信号を生成する。コントロールユニット３０には、リニア空燃比センサ２４の検出信号又は疑似信号が入力される。コントロールユニット３０は、リニア空燃比センサ２４の劣化診断を行う。さらに、コントロールユニット３０は、擬似信号が入力されたときにおける空燃比の劣化診断結果に基づいて、劣化診断が正常であるか否かを判断する。ここで、シミュレータ２４は、エンジン１の吸入空気量信号に基づいて、かつ空燃比の変更方向に対応して個別に擬似信号を生成する。【選択図】図１
2008248819.tif 000002
【特許請求の範囲】
【請求項１】
リニア空燃比センサと、
上記リニア空燃比センサの検出信号に基づいて、上記リニア空燃比センサが劣化した場合の検出信号に対応する擬似信号を生成するシミュレータと、
上記リニア空燃比センサの検出信号又は上記疑似信号が入力され該信号に基づいて上記リニア空燃比センサの劣化診断を行う空燃比センサ劣化診断手段と、上記擬似信号が入力されたときにおける上記空燃比センサ劣化診断手段の劣化診断結果に基づいて上記空燃比センサ劣化診断手段の動作を監視する診断動作監視手段とを有するコントロールユニットとが設けられているエンジンにおける空燃比センサの故障診断装置であって、
上記シミュレータは、空燃比がリーン側からリッチ側に変化する場合と、リッチ側からリーン側に変化する場合とで、上記擬似信号を個別に生成することができることを特徴とする空燃比センサの故障診断装置。
【請求項２】
上記コントロールユニットは、上記リニア空燃比センサの無駄時間劣化と１次遅れ時間劣化とを区別して劣化診断を行うようになっていて、
上記シミュレータは、上記両劣化診断に関してそれぞれ空燃比がリーン側からリッチ側に変化する場合と、リッチ側からリーン側に変化する場合で、上記擬似信号を個別に生成することができることを特徴とする、請求項１に記載の空燃比センサの故障診断装置。
【請求項３】
上記コントロールユニットは、空燃比を周期的に変動させ、その時の上記リニア空燃比センサの検出信号に基づいて劣化診断を行うことを特徴とする、請求項２に記載の空燃比センサの故障診断装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、空燃比センサの故障診断装置に関するものである。
【背景技術】
【０００２】
一般に、自動車用のエンジンにおいては、燃費性能あるいはエミッション性能の向上を図るために空燃比のフィードバック制御が行われる。そして、このような空燃比のフィードバック制御を行う上においては、制御情報として空燃比を検出することが必須であるが、従来のエンジンでは、通常、排気通路に設けられたリニア空燃比センサによって排気ガスの酸素濃度を検出し、この酸素濃度から空燃比を算出するようにしている。
【０００３】
また、一般に、センサにおいては、長期間の使用に伴って劣化あるいは故障が発生することがある。そして、リニア空燃比センサに劣化あるいは故障が発生したときには、空燃比のフィードバック制御を適切に行うことができないので、燃費性能あるいはエミッション性能が悪化する。そこで、ＯＢＤ（オン・ボード・ディアグノシス）を備えたコントロールユニットにより、リニア空燃比センサの劣化診断を行うようにしたエンジンが提案されている（例えば、特許文献１参照）。
【０００４】
しかし、リニア空燃比センサの劣化診断を行うＯＢＤないしはコントロールユニット自体に不具合ないしは故障が生じることもあり、この場合にも空燃比のフィードバック制御を適切に行うことはできない。そこで、例えば、特許文献１に開示されたエンジンでは、適宜、リニア空燃比センサ（酸素濃度センサ）の性能劣化時における出力特性に似せた擬似劣化信号をＯＢＤに送り、その診断結果からＯＢＤが正常に動作しているか否かを監視するようにしている。
【特許文献１】特開２００４−３０８４６６号公報（段落［００３５］、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ところで、ＯＢＤの劣化ないしは故障を監視するようにした従来のエンジンでは、予め準備された単純な擬似信号をＯＢＤに送るようにしている。しかしながら、リニア空燃比センサの出力特性ないしは検出特性、例えば空燃比のステップ状の変化あるいはインパルス状の変化に対する応答特性は、該リニア空燃比センサの環境に応じて変わるものである。このため、予め準備された単純な擬似劣化信号をＯＢＤに送るようにした従来のＯＢＤの監視システムないしはリニア空燃比センサの劣化診断装置では、ＯＢＤの監視、ひいてはリニア空燃比センサの劣化診断を確実かつ正確に行うことができないといった問題がある。
【０００６】
本発明は、上記従来の問題を解決するためになされたものであって、リニア空燃比センサの劣化と、該リニア空燃比センサの劣化診断を行うコントロールユニット（ＯＢＤ）自体の不具合とを確実かつ正確に検出することを可能にする手段を提供することを解決すべき課題とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するためになされた本発明に係る空燃比センサの故障診断装置は、（ａ）リニア空燃比センサと、（ｂ）リニア空燃比センサの検出信号に基づいて、リニア空燃比センサが劣化（又は故障）した場合の検出信号に対応する擬似信号を生成するシミュレータと、（ｃ）リニア空燃比センサの検出信号又は疑似信号が入力され該信号に基づいてリニア空燃比センサの劣化診断（又は故障診断）を行う空燃比センサ劣化診断手段と、擬似信号が入力されたときにおける空燃比センサ劣化診断手段の劣化診断結果に基づいて空燃比センサ劣化診断手段の動作を監視する診断動作監視手段とを有するコントロールユニットとが設けられているエンジンにおける空燃比センサの故障診断装置であって、（ｄ）シミュレータは、空燃比がリーン側からリッチ側に変化する場合と、リッチ側からリーン側に変化する場合とで、上記擬似信号を個別に生成することができることを特徴とするものである。
【０００８】
本発明に係る空燃比センサの故障診断装置においては、コントロールユニットは、リニア空燃比センサの無駄時間劣化と１次遅れ時間劣化とを区別して劣化診断を行い、シミュレータは、両劣化診断に関してそれぞれ空燃比がリーン側からリッチ側に変化する場合と、リッチ側からリーン側に変化する場合で、擬似信号を個別に生成することができるようになっているのが好ましい。このようにすれば、無駄時間劣化及び１次遅れ時間劣化に基づいてリニア空燃比センサの劣化判断を行う場合に、空燃比センサ劣化診断手段の動作を確実かつ正確に監視することができ、ひいてはリニア空燃比センサの劣化診断を確実かつ正確に行うことができる。
【０００９】
本発明に係る空燃比センサの故障診断装置においては、コントロールユニットは、空燃比を周期的に変動させ、その時のリニア空燃比センサの検出信号（出力）に基づいて劣化診断を行うようになっているのが好ましい。
【発明の効果】
【００１０】
リニア空燃比センサの出力特性ないしは検出特性、例えば無駄時間や１次遅れ時間は、空燃比がリーン側からリッチ側に変化する場合と、リッチ側からリーン側に変化する場合とのうち、一方のみについて応答性の劣化を示す場合がある。そして、本発明に係る空燃比センサの故障診断装置によれば、シミュレータは、空燃比がリーン側からリッチ側に変化する場合と、リッチ側からリーン側に変化する場合とで、擬似信号を個別に生成することができる。したがって、空燃比のリッチ側及びリーン側のうちの一方側だけの応答性の劣化を検出することができ、空燃比センサ劣化診断手段の動作を確実かつ正確に監視することができ、ひいてはリニア空燃比センサの劣化診断を確実かつ正確に行うことができる。
【００１１】
本発明に係る空燃比センサの故障診断装置において、コントロールユニットが空燃比を周期的に変動させて劣化診断を行うようになっている場合は、リーン側からリッチ側への劣化と、リッチ側からリーン側への劣化とを検出することができる。
【発明を実施するための最良の形態】
【００１２】
以下、添付の図面を参照しつつ本発明の実施の形態（本発明を実施するための最良の形態）を具体的に説明する。
図１及び図２に示すように、火花点火式の多気筒エンジン１の各気筒（１つの気筒のみ図示）においては、吸気弁２が開かれたときに、吸気ポート３から燃焼室４内に混合気を吸入するようになっている（吸気行程）。そして、燃焼室４内の混合気はピストン５によって圧縮され（圧縮行程）、所定のタイミングで点火プラグ６によって点火されて燃焼する（燃焼・膨張行程）。燃焼によって生じたガスすなわち排気ガスは、排気弁７が開かれたときに排気ポート８に排出される（排気行程）。
【００１３】
これらの行程が繰り返され、ピストン５は気筒内で連続的に往復運動を行う。このピストン５の往復運動は、コンロッド９やクランクアーム（図示せず）などを備えたリンク機構により、クランクシャフト（図示せず）の回転運動（トルク）に変換される。このクランクシャフトの回転運動は、エンジン出力として取り出され、該エンジン１が搭載された車両を駆動する。さらに、エンジン１には、クランクシャフトの回転角度すなわちクランク角、ひいてはエンジン回転数を検出する回転角度センサ１０が設けられている。
【００１４】
エンジン１の各燃焼室４に燃料燃焼用の空気（以下「吸入空気」という。）を供給するために吸気システム１１が設けられ、この吸気システム１１には、全気筒に共通な単一の共通吸気通路１２が設けられている。共通吸気通路１２の先端（上流端）は大気に開放され、その先端部近傍にエアクリーナ１３が設けられている。エアクリーナ１３内には、吸入空気中のダスト等を除去するエレメント１４（フィルタ）が収容されている。
【００１５】
さらに、共通吸気通路１２には、吸入空気の流れ方向（図１中ではおおむね左向き）にみて上流側から順に、吸入空気の流量（吸入空気量）を検出するエアフローセンサ１５と、アクセルペダル（図示せず）の踏み込み量（アクセル開度）に応じて共通吸気通路１２ないしは吸入空気の流れを絞るスロットル弁１６とが設けられている。スロットル弁１６は、アクセル開度に応じて駆動モータ（図示せず）によって開閉駆動されるいわゆるエレキスロットル弁である。そして、共通吸気通路１２の下流端は、吸入空気の脈動を減衰させてその流れを安定させるサージタンク１７に接続されている。なお、吸気システム１１には、スロットル弁１６の開度（スロットル開度）を検出するスロットルセンサ１８が設けられている。
【００１６】
サージタンク１７には、各気筒の燃焼室４に個別に吸入空気を供給する独立吸気通路１９が接続され、その下流端は、対応する気筒の吸気ポート３に接続されている。そして、各独立吸気通路１９には、それぞれ、該独立吸気通路１９内に燃料（例えば、ガソリン）を噴射して混合気を生成する燃料噴射弁２０が、噴射口が下流側に向くように配設されている。なお、このエンジン１は、燃料を吸気ポート３に噴射するポート噴射式エンジンであるが、燃料噴射弁２０から燃焼室４に直接燃料を噴射する直噴式エンジンを用いてもよい。
【００１７】
エンジン１の各燃焼室４から排出される排気ガスを大気中に排出するために排気システム２１が設けられ、この排気システム２１には、単一の排気通路２２が設けられている。ただし、排気ガスの流れ方向にみて、その上流端近傍部は気筒毎に分岐して、対応する気筒の排気ポート８に接続されている。そして、排気通路２２には、排気ガスを浄化するために、三元触媒を用いた排気ガス浄化装置２３（触媒コンバータ）が介設されている。
【００１８】
排気ガスの流れ方向にみて排気ガス浄化装置２３よりやや上流側の部位において、排気通路２２にはリニア空燃比センサ２４（以下、略して「空燃比センサ２４」という。）が設けられている。この空燃比センサ２４は、排気通路２２内の排気ガスの酸素濃度におおむね比例する信号を出力する。この酸素濃度から空燃比（Ａ／Ｆ）を検出することができる。
【００１９】
また、排気ガス浄化装置２３よりやや下流側に部位において、排気通路２２には、酸素濃度センサ２５が設けられている。この酸素濃度センサ２５は、理論空燃比（λ＝１）に相当する酸素濃度で出力電圧が急変し、理論空燃比に対し酸素濃度が多いか少ないか、すなわち混合気がリーンであるかリッチであるかを、二値的に検出するものであり、空燃比のフィードバック制御を実行するためのものである。
【００２０】
ここで、空燃比センサ２４は、フィードバック制御の空燃比（実空燃比）に相当する出力を演算するものであるのに対して、酸素濃度センサ２５は、浄化後の排気ガスの酸素濃度に相当する検出値を演算するものである。この実施の形態においては、エンジン１の目標空燃比は、基本的には理論空燃比（λ＝１）に設定される。また、エンジン１には、空燃比センサ２４によって検出された酸素濃度ないしは空燃比に基づいて、空燃比の疑似信号を生成するシミュレータ２６が設けられている。なお、シミュレータ２６の構成及び機能は後で詳しく説明する。
【００２１】
さらに、エンジン１には、コンピュータを備えたコントロールユニット３０が設けられている。このコントロールユニット３０は、本明細書の課題を解決するための手段の欄に記載された「空燃比センサ劣化診断手段」及び「診断動作監視手段」を含むエンジン１の総合的な制御装置である。ここで、コントロールユニット３０には、制御情報として、回転角度センサ１０によって検出されるクランク角ないしはエンジン回転数（エンジン回転速度）、エアフローセンサ１５によって検出される吸入空気量、スロットルセンサ１８によって検出されるスロットル開度、空燃比センサ２４によって検出される排気ガスの酸素濃度ないしは実空燃比、酸素濃度センサ２５の検出信号等が入力される。なお、空燃比センサ２４によって検出される排気ガスの酸素濃度ないしは空燃比はシミュレータ２６を介してコントロールユニット３０に入力される。また、コントロールユニット３０からシミュレータ２６には、ＣＡＮ通信により、吸入空気量等の制御情報が入力される。
【００２２】
そして、コントロールユニット３０は、これらの制御情報に基づいて、燃料噴射制御ないしは空燃比制御と、空燃比センサ２４の劣化ないしは故障の検出ないしは判定（以下「センサ劣化診断」という。）と、コントロールユニット３０によるセンサ劣化診断が正常に行われているか否かの検出ないしは判定（以下「ユニット診断監視」という。）とを行うようになっている。さらに、コントロールユニット３０は、エンジン１のその他の一般的なエンジン制御、例えば点火時期制御等を行うようになっている。しかしながら、このような一般的なエンジン制御は、当業者にはよく知られており、また本願発明の要旨とするところでもないので、その説明は省略する。
【００２３】
図３は、コントロールユニット３０の「センサ劣化診断」及び「ユニット診断監視」に関連する部分の制御回路を示す回路ブロック図であり、図４は、図３に示す制御回路によって実現されるセンサ劣化診断の制御特性を示す制御ブロック線図である。図４から明らかなとおり、各センサ１０、１５、１８、２４、２５と、燃料噴射弁２０とは、コントロールユニット３０に接続され、空燃比のフィードバック制御系を構成している。
【００２４】
図３に示すように、コントロールユニット３０は、ＣＰＵ３１と、ＲＯＭを備えた補助記憶装置３２と、ＲＡＭを備えた主記憶装置３３とを有している。そして、回転角度センサ１０とエアフローセンサ１５とスロットルセンサ１８と酸素濃度センサ２５とは、それぞれ、直接、ＣＰＵ３１に接続されている。他方、空燃比センサ２４は、シミュレータ２６を介して、ＣＰＵ３１に接続されている。ＣＰＵ３１は、補助記憶装置３２に記憶されている種々のプログラムに基づいて、各センサ１０、１５、１８、２４、２５の出力信号を処理し、燃料噴射弁２０を制御して燃料噴射量ないしは空燃比をフィードバック制御する。
【００２５】
補助記憶装置３２（ＲＯＭ）には、ＣＰＵ３１にセンサ劣化診断を行わせるためのプログラム（以下「センサ劣化診断プログラム」という。）と、ＣＰＵ３１にユニット診断監視を行わせるためのプログラム（以下「ユニット診断監視プログラム」という。）とが記憶されている。主記憶装置３３は、補助記憶装置３２に記憶されたプログラムを実行する過程で、各センサ１０、１５、１８、２４、２５が出力した信号や、これらの信号に基づいて演算された演算値などを記憶する。
【００２６】
図４に示すように、コントロールユニット３０は、フィードバック制御系４０を構成している。このフィードバック制御系４０は、目標空燃比（λ＝１）を目標値ＤＶとする基準入力要素４１と、基準入力要素４１から出力された基準入力ＩＰを補正するバイアス補正要素４２と、バイアス補正要素４２によって補正された動作信号ＡＳに基づいてエンジン１ないしは燃料噴射弁２０への操作量ＯＶを決定する主制御要素４４とを備えている。
【００２７】
バイアス補正要素４２と主制御要素４４との間には、空燃比センサ２４によって検出された空燃比に相当する出力ＰＦが人力される。ここで、基準入力要素４１の基準入力ＩＰからバイアス補正要素４２の補正量ＳＳが減算され、さらに空燃比センサ２４の出力ＰＦが減算される。そして、主制御要素４４は、ゲインＫＩを含む所定の伝達関数Ｇｐ（Ｓ）に基づいて操作量ＯＶを演算し出力する。
【００２８】
さらに、基準入力要素４１とバイアス補正要素４２との間には、副制御要素４５から出力された副補正量ＳｂＳが入力される。この副制御要素４５は、酸素濃度センサ２５から出力された検出値ＳＦを受けて、ゲインＫｓを含む所定の伝達関数Ｇｓ（Ｓ）に基づき、副補正量ＳｂＳを出力する。したがって、主制御要素４４には、この副補正量ＳｂＳが差し引かれた動作信号ＡＳが入力される。
【００２９】
さらに、フィードバック制御系４０には、リッチ側又はリーン側への外乱を交互に発生させる外乱発生手段４６を備えている。この外乱発生手段４６は、補助記憶装置３２（ＲＯＭ）に記憶されたプログラムを実行することにより、空燃比センサ２４に対してセンサ劣化診断を行う際に動作する。外乱発生手段４６は、燃料噴射量にステップ状ないしはインパルス状の外乱を与えることによって、過渡的に空燃比をリッチ側又はリーン側に変更する。なお、以下では便宜上、リーン側からリッチ側に空燃比を変化させるときの外乱を「ＬＲ」といい、リッチ側からリーン側に空燃比を変化させるときの外乱を「ＲＬ」ということにする。
【００３０】
外乱発生手段４６が出力した外乱ＬＲ及び外乱ＲＬの発生回数は、それぞれ主記憶装置３３（ＲＡＭ）に記憶されるようになっている。ここで、外乱発生手段４６は、予めセンサ劣化診断プログラムに設定されている出力回数だけ外乱ＬＲ及び外乱ＲＬを交互に同数出力するように設定されている。これにより、センサ劣化診断のために意図的に変更された空燃比が相殺され、主制御要素４４によって制御されている空燃比が必要以上に乱されてエミッションが低下するのが防止される。
【００３１】
以下、コントロールユニット３０によって行われるセンサ劣化診断の実行手順を説明する。このセンサ劣化診断では、エンジン１の運転状態がほぼ定常状態にあるときに、燃料噴射量をステップ状に増加又は減少させ、これに伴う空燃比の経時的変化における無駄時間Ｌと時定数τとに基づいて、空燃比センサ２４が劣化ないしは故障しているか否かを診断するようにしている。
【００３２】
図５に、燃料噴射弁２０の燃料噴射量をステップ状に増加させた場合における、空燃比センサ２４の出力信号（実空燃比）の経時変化（ステップ応答）の一例を示す。なお、燃料噴射弁２０の燃料噴射量をステップ状に減少させた場合は、出力信号は、図５と同様の特性で低下する（時間軸に対して線対称）。ここで、空燃比センサ２４の入力ｘ（ｔ）と出力ｙ（ｔ）との間には、一般的に、下記の式１で示す関係がある。
ｙ（ｔ）＝ｘ（ｔ−Ｌ）……………………………………………………式１
ｔ：時間
ｙ：リニア空燃比センサ出力
ｘ：リニア空燃比センサ入力
Ｌ：無駄時間（Ｌ≧０）
【００３３】
この場合の伝達関数Ｇ（ｓ）は、下記の式２であらわされる。
Ｇ（ｓ）＝Ｙ（ｓ）／Ｘ（ｓ）＝ｅ−Ｌｓ…………………………………式２
Ｇ（ｓ）：伝達関数
Ｙ（ｓ）：リニア空燃比センサ出力の複素関数
Ｘ（ｓ）：リニア空燃比センサ入力の複素関数
【００３４】
したがって、無駄時間要素としての空燃比センサ２４のステップ応答ｈ（ｔ）は、逆ラプラス変換により下記の式３であらわされる。
ｈ（ｔ）＝ｕ（ｔ−Ｌ）……………………………………………………式３
ｔ：時間
ｈ（ｔ）：ステップ応答
ｕ（ｔ）：単位ステップ関数（ｔ＜０では０；ｔ≧０では１）
【００３５】
他方、時定数τは、下記の式４で示す１次遅れ要素の伝達関数Ｇ（ｓ）における定数Ｋである。
Ｇ（ｓ）＝Ｙ（ｓ）／Ｘ（ｓ）＝Ｋ／（１−τ）…………………………式４
Ｇ（ｓ）：伝達関数
Ｙ（ｓ）：リニア空燃比センサ出力の複素関数
Ｘ（ｓ）：リニア空燃比センサ入力の複素関数
Ｋ：１次遅れ定数
τ：時定数
【００３６】
そして、式４の逆ラプラス変換によって得られるステップ応答は、下記の式５、式６であらわされる。
ｈ（ｔ）＝Ｋ（１−ｅ−ｔ／Ｍ）………………………………………………式５
ｈ（ｔ）│τ＝Ｍ＝０．６３２Ｋ……………………………………………式６
ｔ：時間
ｈ（ｔ）：ステップ応答
Ｋ：１次遅れ定数
Ｍ：定数
τ：時定数
【００３７】
式１〜式６及び図５により、時定数τが大きいときほど、ステップ応答の立ち上がりが緩やかとなり、最終値に達するまでの時間が長くなる。したがって、空燃比センサ２４の劣化が進むほど、時定数τは長くなる。また、空燃比センサ２４の劣化が進むほど、無駄時間Ｌは長くなる。そこで、この実施の形態では、基本的には、無駄時間Ｌ及び／又は時定数τが、予め設定されたしきい値よりも長いときには、空燃比センサ２４が劣化ないしは故障しているものと診断するようにしている。
【００３８】
以下、図６を参照しつつ、センサ劣化診断プログラムによって実行されるセンサ劣化診断の具体的な手順を説明する。なお、図６は、このようなセンサ劣化診断が実行される場合における、燃料噴射量ＤＶ、実空燃比ＰＦ（空燃比センサ２４の出力）、実空燃比ＰＦの時間についての微分値ＤＯ２等の経時変化を示している。
【００３９】
センサ劣化診断は、診断実行条件が成立しているとき、すなわち下記の３つの条件がすべて満たされているときに限り実行される。これらの条件がすべて満たされているときは、エンジン１はほぼ定常運転状態にあるといえるからである。なお、充填効率は、吸入空気量をエンジン回転数で割った値である。
（１）エンジン回転数の変化量が所定変化量以下である。
（２）スロットル開度の変化量が所定変化量以下である。
（３）充填効率の変化量が所定変化量以下である。
【００４０】
そして、センサ劣化診断は、空燃比変動が収束しているときに行われる。具体的には、外乱発生手段４６（図４参照）による外乱ＲＬ又は外乱ＬＲがリセットされている状態において、空燃比センサ２４の出力ＰＦの変動幅ＯＰが、予め設定されたしきい値ＴｈＣの範囲内であり、かつ、空燃比センサ２４の出力ＰＦの微分値ＤＯ２の変動幅が、予め設定されたしきい値ｄＴｈＣの範囲内にあるときに空燃比変動が収束していると判定される。
【００４１】
かくして、診断実行条件が成立し、かつ、空燃比変動が収束しているときにおいて、センサ劣化診断を実行する際には、まず燃料噴射量がステップ状に増量又は減量される。具体的には、センサ劣化診断を開始してからの外乱ＲＬの回数が外乱ＬＲの回数より多いとき、すなわち燃料噴射量をステップ状に減量した回数が増量した回数より多いときには、外乱ＬＲがフィードバック制御系４０に出力され、燃料噴射量がステップ状に増量される。逆に、外乱ＬＲの回数が外乱ＲＬの回数より多いとき、すなわち燃料噴射量をステップ状に増量した回数が減量した回数より多いときには、外乱ＲＬがフィードバック制御系４０に出力され、燃料噴射量がステップ状に減量される。なお、外乱ＲＬの回数と外乱ＬＲの回数とが等しい場合は、外乱ＲＬがフィードバック制御系４０に出力され、燃料噴射量がステップ状に減量される（増量でもよい）。このようにするのは、外乱ＲＬの回数と外乱ＬＲの回数とをほぼ同数にするためである。
【００４２】
燃料噴射量がステップ状に増量された場合は、増量された時点から、空燃比センサ２４の出力ＰＦの微分値ＤＯ２が予め設定されたしきい値＋ＴｈＤより大きくなった時点すなわち空燃比センサ２４の出力が実質的に変化し始めた時点までの経過時間が無駄時間Ｌとされる。なお、微分値ＤＯ２がしきい値＋ＴｈＤより大きくなった時点で、燃料噴射量は元に戻される（リセット）。逆に、燃料噴射量がステップ状に減量された場合は、減量された時点から、微分値ＤＯ２がしきい値−ＴｈＤより小さくなった時点までの経過時間が無駄時間Ｌとされる。なお、微分値ＤＯ２がしきい値−ＴｈＤより小さくなった時点で、燃料噴射量は元に戻される（リセット）。
【００４３】
この後、空燃比センサ２４の出力ＰＦの微分値ＤＯ２のピーク値ＤＯ２ＰＫないしは極大値（燃料噴射量をステップ状に増量した場合）又はピーク値−ＤＯ２ＰＫないしは極小値（燃料噴射量をステップ状に減量した場合）が演算される。そして、ピーク値ＤＯ２ＰＫ又は−ＤＯ２ＰＫに基づいて、時定数τが演算される。例えば、燃料噴射量がステップ状に増量された場合、ピーク値＋ＤＯ２ＰＫすなわち、微分値ＤＯ２の最大値は、図５中の直線Ｚに相当する。したがって、図５において、無駄時間Ｌが経過した時点から、直線Ｚが実空燃比がＫである直線と交差する点に対応する時点Ｍまでの時間を計算し、この時間を時定数τとする。なお、燃料噴射量がステップ状に減量された場合も、同様に時定数τを演算することができる。
【００４４】
この後、外乱ＬＲと外乱ＲＬとに対してそれぞれ演算された無駄時間Ｌと時定数τとに基づいて、次のような手順で、空燃比センサ２４の劣化の有無ないしは態様が診断される。すなわち、各外乱ＬＲと各外乱ＲＬとに対して、それぞれ無駄時間Ｌと時定数τの和を算出し、これを過渡時間Ｔとする。この過渡時間Ｔが大きいときほど、空燃比センサ２４は劣化の度合いが大きい。さらに、各外乱ＬＲについての過渡時間Ｔの平均値の絶対値ＴＬＲと、各外乱ＲＬについての過渡時間Ｔの平均値の絶対値ＴＲＬとが算出される。
【００４５】
そして、両平均値ＴＬＲ及びＴＲＬに基づいて、空燃比センサ２４の劣化の有無ないしは態様が判定される。なお、α１、α２、α３、α４は予め設定されたしきい値である。
（１）ＴＬＲ−ＴＲＬ≦α１、かつ、ＴＬＲ＋ＴＲＬ≦α２の場合
この場合は、ＴＬＲとＴＲＬとの間に大きな差はなく（最大でも差はα１）、かつ、ＴＬＲとＴＲＬの和が小さいので、ＴＬＲ及びＴＲＬはいずれも比較的小さい値である。このため、空燃比センサ２４は、正常であると判定される。
【００４６】
（２）ＴＬＲ−ＴＲＬ≦α１、かつ、ＴＬＲ＋ＴＲＬ＞α２の場合
この場合は、ＴＬＲとＴＲＬとの間に大きな差はなく、かつＴＬＲとＴＲＬの和が大きいので、ＴＬＲ及びＴＲＬはいずれも比較的大きい値である。このため、空燃比センサ２４は、リーン側及びリッチ側の両方で劣化していると判定される。
【００４７】
（３）ＴＬＲ−ＴＲＬ＞α１、かつ、ＴＬＲ＞α３の場合
この場合は、ＴＬＲは比較的大きい（α３より大きい）が、ＴＲＬは比較的小さい（ＴＬＲよりも少なくともα１だけは小さい）。このため、空燃比センサ２４は、リッチ側のみが劣化していると判定される。
【００４８】
（４）ＴＬＲ−ＴＲＬ＞α１、ＴＬＲ≦α３、かつ、ＴＲＬ＞α４の場合
この場合は、ＴＬＲは比較的小さく、ＴＲＬは比較的大きい。このため、空燃比センサ２４は、リーン側のみが劣化していると判定される。
【００４９】
（５）ＴＬＲ−ＴＲＬ＞α１、ＴＬＲ≦α３、かつ、ＴＲＬ≦α４の場合
この場合は、ＴＬＲ及びＴＲＬは、いずれも、比較的小さい。このため、空燃比センサ２４は正常であると判定される。
【００５０】
以下、コントロールユニット３０によって行われるユニット診断監視、すなわちユニット診断監視プログラムに基づいてコントロールユニット３０によって実行されるセンサ劣化診断が正常に行われているか否かの検出手法ないしは判定手法と、シミュレータ２６による空燃比の疑似信号の生成手法とを説明する。
【００５１】
このエンジン１においては、シミュレータ２６は、空燃比センサ２４の出力信号（以下「センサ出力信号」という。）に基づいて、空燃比センサ２４が劣化した場合の出力信号に対応する擬似信号（以下「センサ疑似信号」という。）を生成する。また、コントロールユニット３０には、センサ出力信号又はセンサ疑似信号が入力される。そして、コントロールユニット３０は、センサ出力信号又はセンサ疑似信号に基づいて空燃比センサ２４に対してセンサ劣化診断を行う。この点において、コントロールユニット３０は「空燃比センサ劣化診断手段」として機能する。さらに、コントロールユニット３０は、センサ擬似信号が入力されたときにおけるセンサ劣化診断の劣化診断結果について、コントロールユニット３０自体が正常に診断を行っているか否かを判定する。この点において、コントロールユニット３０は「診断動作監視手段」として機能する。
【００５２】
シミュレータ２６は、エンジン１の吸入空気量に基づいてセンサ擬似信号を生成する。なお、吸入空気量の信号は、ＣＡＮ通信によりコントロールユニット３０からシミュレータ２６に送信される。ここで、コントロールユニット３０は、空燃比センサ２４の無駄時間劣化と１次遅れ時間劣化とを区別してセンサ劣化診断を行い、シミュレータ２６は、両劣化診断に関してそれぞれ吸入空気量に基づいてセンサ擬似信号を生成する。またシミュレータ２６は、無駄時間及び１次遅れ時間を吸入空気量が少ないときほど長くなるように補正するようになっていて、吸入空気量が少ないときには、１次遅れ時間劣化についての補正度合いを、無駄時間劣化についての補正度合いよりも大きくする。
【００５３】
また、シミュレータ２６は、空燃比がリーン側からリッチ側に変化する場合と、リッチ側からリーン側に変化する場合とで、センサ疑似信号を個別に生成する。そして、シミュレータ２６は、空燃比がリーン側からリッチ側に変化する場合と、リッチ側からリーン側に変化する場合とで、センサ擬似信号を個別に生成する。なお、コントロールユニット３０は、空燃比を周期的に変動させ、その時の空燃比センサ２４の検出信号に基づいてセンサ劣化診断を行う。このようなユニット診断監視ないしはセンサ劣化診断によれば、コントロールユニット３０によるセンサ劣化診断を確実かつ正確に監視することができ、ひいては空燃比センサ２６の劣化診断を確実かつ正確に行うことができる。
【００５４】
以下、図７〜図１６に示すフローチャートを参照しつつ、シミュレータ２６によるセンサ疑似信号の生成方法ないしはシミュレーション方法を具体的に説明する。
図７〜図１６に示すように、まずステップＳ１で、空燃比センサ２４の出力電流Ipが入力される。続いて、ステップＳ２で、シミュレータ２６のスイッチがオンされているか否かが判定される。ここで、シミュレータ２６のスイッチがオンされていなければ（ＮＯ）、センサ疑似信号を生成する必要がないので、センサ疑似信号を生成するための以下のステップＳ３〜Ｓ７０をスキップし、最後のステップＳ７１で、入力された空燃比センサ２４の出力電流Ipを、最終出力値Ip endとしてコントロールユニット３０に出力する。
【００５５】
ステップＳ２で、シミュレータ２６のスイッチがオンされていると判定された場合は（ＹＥＳ）、ステップＳ３で、模擬方法（１）、（２）のいずれが選択されているかが判定される。ここで、模擬方法（１）は、出力電流Ipをそのままパラメータとして用いてセンサ疑似信号を生成する（シミュレートする）方法であり、模擬方法（２）は出力電流Ipを空気過剰率λ（空燃比）に変換し、空気過剰率λをパラメータとして用いてセンサ疑似信号を生成する（シミュレートする）方法である。なお、模擬方法（１）、（２）の選択はオペレータが行う。
【００５６】
ステップＳ３で模擬方法（１）が選択されていると判定された場合は、ステップＳ４〜Ｓ７が実行され、出力電流Ipに基づいてデータ処理が行われる。具体的には、ステップＳ４で、シミュレーションが開始され、続いてステップＳ５で、実空燃比データreallmdaが格納される。この場合、出力電流Ipは、電圧loxgainの形態で用いられる（ステップＳ１２）。なお、模擬方法（１）では、実空燃比データreallmdaの値は出力電圧loxgainの値と同一である（Reallmda= loxgain）。次に、ステップＳ６で、出力電流Ipに対してバッファ処理ないしはなまし処理が行われ、データが平滑化される。そして、ステップＳ７で、実空燃比reallmdaが所定の個数（回数）ｎとなるまで蓄積され、Ip値バッファstrlmd[n]に格納される。この後、後で説明するステップＳ１３以下の無駄時間劣化模擬が実行される。なお、nは、例えば、５ｍｓｅｃの分解能で、１２４５ｍｓｅｃ分（２４９回分）のデータを記憶できるように設定されているが、この値は回路の性能に依存する。
【００５７】
他方、ステップＳ３で、模擬方法（２）が選択されていると判定された場合は、ステップＳ８〜Ｓ１１が実行され、出力電流Ipを空気過剰率λ（空燃比）変換した上で、データ処理が行われる。具体的には、ステップＳ８で、シミュレーションが開始され、続いてステップＳ９で、出力電流Ipが空気過剰率λに変換され、この空気過剰率λが実空燃比データreallmdaとして格納される。この場合、実空燃比データreallmdaの値は、所定のテーブル（マップ）を用いて空燃比センサ２４の出力電圧loxgainから演算される（Table(loxgain)）。次に、ステップＳ１０で、空気過剰率λに対してバッファ処理ないしはなまし処理が行われ、データが平滑化される。そして、ステップＳ１１で、実空燃比reallmdaが所定の個数（回数）ｎとなるまで蓄積され、λ値バッファstrlmd[n]に格納される。この後、ステップＳ１３以下の無駄時間劣化模擬が実行される。
【００５８】
ステップＳ４〜Ｓ７又はステップＳ８〜Ｓ１１でIP値又はλ値が蓄積された後、ステップＳ１３で無駄時間劣化模擬が開始され、続いてステップＳ１４でリッチ側からリーン側への無駄時間（以下「ＲＬ無駄時間」という。）sdtrlが演算される（sdtrl=min( Table_1(qa) * dlytrl,1245msec)）。このＲＬ無駄時間sdtrlは、リッチ側からリーン側への空燃比の変更時の吸入空気量qaに基づく補正値である空気量補正値Table 1(qa)と、オペレータによって設定される遅延時間dlytrlとに基づいて設定される。具体的には、空気量補正値Table 1(qa)と遅延時間dlytrlの積と、１２４５ｍｓｅｃとが比較され、小さい方の値がＲＬ無駄時間sdtrlとされる（sdtrl=min(Table 1(qa)*dlytrl,1245msec)）。
【００５９】
ステップＳ１４で用いられる空気量補正値Table 1(qa)及び遅延時間dlytrlは、ステップＳ２５〜Ｓ２７で演算される。すなわち、ステップＳ２５では、エアフローセンサ１５によって検出される吸入空気量qaが読み込まれ、続いてステップＳ２６で、無駄時間補正用のテーブルTable 1を用いて、吸入空気量qaに対応する空気量補正値Table 1(qa)が演算される。つまり、吸入空気量qaに応じて信号が補正される。
【００６０】
図１７に、テーブルTable 1における、空気量補正値Table 1(qa)の吸入空気量qaに対する変化特性を示す。図１７から明らかなとおり、吸入空気量qaが少ないときほど空気量補正値Table 1(qa)の値は大きくなる。すなわち、吸入空気量qaが少ないときは、排気ガス流量が少ないので、空燃比センサ２４の検出部まわりでの酸素の移動速度が小さくなり、無駄時間が長くなるからである。また、ステップＳ２７では、オペレータによって遅延時間dlytrlが設定される。この遅延時間dlytrlの設定は、周期的に変化する実際の空燃比のデータを、時間軸の方向に、例えば０〜１０００ｍｓｅｃの範囲でずらすことによって設定する。なお、遅延時間dlytrlが設定されなかった場合は、その値は０である。このようにして得られた空気量補正値Table 1(qa)と遅延時間dlytrlとは、前記のステップＳ１４で用いられる。
【００６１】
ステップＳ１４でＲＬ無駄時間sdtrlが演算された後、ステップＳ１５でこのＲＬ無駄時間sdtrlが０であるか否かが判定される。ここで、ＲＬ無駄時間sdtrlが０でなければ（ＮＯ）、すなわち前記のステップＳ２７でＲＬ遅延時間dlytrlが設定されている場合は、ステップＳ１６で、ＲＬ無駄時間sdtrlに対応する模擬された空燃比センサ出力値Imddtrlが演算される（lmddtrl=strlmd[I-sdtrl]）。この後、ステップＳ２０が実行される。
【００６２】
他方、ステップＳ１５でＲＬ無駄時間sdtrlが０であると判定された場合（ＹＥＳ）、すなわち前記のステップＳ２７でＲＬ遅延時間dlytrlが設定されていない場合は、リッチ側からリーン側への模擬された空燃比センサ出力値Imddtrlは演算されない。この場合は、ステップＳ１７で、リーン側からリッチ側への無駄時間（以下「ＬＲ無駄時間」という。）sdtlrが演算される。このＬＲ無駄時間sdtlrは、リーン側からリッチ側への変更時の吸入空気量qaに基づく補正値である空気量補正値Table 2(qa)と、オペレータによって設定される遅延時間dlytlrとに基づいて設定される。具体的には、空気量補正値Table 2(qa)と遅延時間dlytlrの積と、１２４５ｍｓｅｃとが比較され、小さい方の値がＬＲ無駄時間sdtlrとされる（sdtlr=min(Table 2(qa)*dlytlr,1245msec)）。この後、ステップＳ１８が実行される。
【００６３】
ステップＳ１７で用いられる空気量補正値Table 2(qa)及び遅延時間dlytlrは、ステップＳ２８〜Ｓ３１で演算される。すなわち、ステップＳ２８でＣＡＮ通信により吸入空気量を受信し、続いてステップＳ２９でこの吸入空気量qaが読み込まれ、さらにステップＳ３０で、無駄時間補正用のテーブルTable 2を用いて、吸入空気量qaに対応する空気量補正値Table 2(qa)が演算される。つまり、吸入空気量qaに応じて信号が補正される。なお、このテーブルTable 2における空気量補正値Table 2(qa)の吸入空気量qaに対する変化特性は、図１７に示すとおりである。
【００６４】
また、ステップＳ３１では、オペレータによって遅延時間dlytlrが設定される。この遅延時間dlytlrの設定は、周期的に変化する実際の空燃比のデータを、時間軸の方向に、例えば０〜１０００ｍｓｅｃの範囲でずらすことによって設定する。なお、遅延時間dlytlrが設定されなかった場合は、その値は０である。このようにして得られた空気量補正値Table 2(qa)と遅延時間dlytlrとは、前記のステップＳ１７で用いられる。
【００６５】
ステップＳ１８では、ＬＲ無駄時間sdtlrが０であるか否かが判定される。ここで、ＬＲ無駄時間sdtlrが０でなければ（ＮＯ）、すなわち前記のステップＳ３１でＬＲ遅延時間dlytlrが設定されている場合は、ステップＳ１９で、ＬＲ無駄時間sdtlrに対応する模擬された空燃比センサ出力値lmddtlrが演算される（lmddtlr=strlmd[I-sdtlr]）。この後、ステップＳ２０が実行される。
【００６６】
他方、ステップＳ１８で、ＬＲ無駄時間sdtlrが０であると判定された場合（ＹＥＳ）、すなわち前記のステップＳ３１でＬＲ遅延時間dlytlrが設定されていない場合は、リッチ側からリーン側については模擬された空燃比センサ出力値Imddtlrは演算されない。前記のとおり、この場合は、リッチ側からリーン側についても模擬された空燃比センサ出力値Imddtrlは演算されていないので、結局、模擬された空燃比センサ出力値は全く演算されない。つまり、無駄時間の模擬は行われない。そこで、この場合は、以下の無駄時間の模擬を行うステップをスキップして（ステップＳ２３）、ステップＳ２４で実空燃比reallmdaを最終模擬無駄時間とし（lmddts=reallmda）、ステップＳ４６以下の時定数（１次遅れ時間）劣化の模擬を行う。
【００６７】
ＲＬ無駄時間sdtrlに対応する模擬された空燃比センサ出力値Imddtrlと、ＬＲ無駄時間sdtlrに対応する模擬された空燃比センサ出力値lmddtlrとのうちの少なくとも一方が演算された場合は、ステップＳ２０で、ＲＬ無駄時間sdtrlがＬＲ無駄時間sdtlr以下であるか否かが判定される。ここで、ＲＬ無駄時間sdtrlがＬＲ無駄時間sdtlr以下であれば（ＹＥＳ）、ステップＳ２１でリーン側からリッチ側への無駄時間シミュレート成形（以下「ＬＲ無駄時間シミュレート成形」という。）が開始される（lmddts0=max(lmddtrl,lmddtlr)）。
【００６８】
他方、ＲＬ無駄時間sdtrlがＬＲ無駄時間sdtlrを超えていれば（ＮＯ）、ステップＳ２２でリッチ側からリーン側への無駄時間シミュレート成形（以下「ＲＬ無駄時間シミュレート成形」という。）が開始される（lmddts0=min(lmddtrl,lmddtlr)）。なお、ステップＳ２１とステップＳ２２とは、従来行われているダブル・バンプ処理と呼ばれている無駄時間処理である。
【００６９】
ステップＳ２１でＬＲ無駄時間シミュレート成形が開始された場合は、ステップＳ３２〜Ｓ３９が実行され、ＬＲ無駄時間シミュレート成形処理が行われる。
図１９（ａ）及び図２０に示すように、ＬＲ無駄時間シミュレート成形処理においては、周期的に変化する実際の空燃比（実線）に対して、例えば位相を１００ｍｓずらせたＲＬ線（破線）と、位相を４００ｍｓずらせたＬＲ線（一点鎖線）とをつくり、ＲＬ線とＬＲ線とを比較して、リーン側に位置する方の線を選択してつなぎ合わせた線が生成される。ただし、近接して隣り合う２つの極大値（リーン側の変曲点）の間では、極大値をホールド処理により保持する（水平な実線）。これにより、リーン側にシフトした空燃比特性を得ることができる。
【００７０】
また、図１９（ｂ）に示すように、ＲＬ無駄時間シミュレート成形処理においては、周期的に変化する実際の空燃比（実線）に対して、例えば位相を１００ｍｓずらせたＬＲ線（破線）と、位相を４００ｍｓずらせたＲＬ線（一点鎖線）とをつくり、ＬＲ線とＲＬ線とを比較し、リッチ側に位置する方の線を選択してつなぎ合わせた線が生成される。ただし、近接して隣り合う２つの極小値（リッチ側の変曲点）の間では、極小値をホールド処理により保持する（水平な実線）。これにより、リッチ側にシフトした空燃比特性を得ることができる。
なお、図１９（ｃ）に、図１９（ｂ）におけるホールド処理の具体的な手順を示す。
【００７１】
具体的には、まずステップＳ３２で、次の３つの条件がともに成立するか否かが判定される。
（１）リーン側の変極点が検出されている（lmddts0[i-2]<=lmddts0[i-1] && lmddts0[i-1]>lmddts0）。
（２）ＲＬ線よりＬＲ線の値が大きい（lmddtrl>lmddtlr）。
（３）ホールドタイマが所定値以下である（holdn<=(sdtrl-sdtlr)）。
【００７２】
これらの３つの条件がともに成立している場合は（ＹＥＳ）、図１９（ａ）における近接して隣り合う２つの極大値のうちの時間的に早い方（左側）の極大値が検出されたことになる。この後、ステップＳ３４が実行される。
【００７３】
他方、ステップＳ３２で、３つの条件の少なくとも１つが成立していないと判定された場合は（ＮＯ）、ステップＳ３３で、次の３つの条件がともに成立するか否かが判定される。
（１）ホールド処理実行が許可されている（xhold）。
（２）ホールド前の値よりもホールド後の値のほうが大きい（lmddts<lmddts0）。
（３）ホールド継続カウンタが（Ｌ→Ｒのズレ量）−（Ｒ→Ｌのズレ量）よりも小さい（holdn<=(sdtrl-sdtlr)）。
【００７４】
これらの３つの条件がともに成立している場合は（ＹＥＳ）、基本的には、現在の状態は、図１９（ａ）における近接して隣り合う２つの極大値の間にあるので、ステップＳ３４で、ホールド処理により極大値が保持される。すなわち、ステップＳ３４では、リーン側からリッチ側への模擬波形ホールド処理が実行される（lmddts=lmddts0[I-1]）。続いて、ステップＳ３５でホールド継続カウンタが１だけインクリメントされる（holdn=holdn[I-1]+1）。
【００７５】
次に、ステップＳ３６で、次の２つの条件のいずれかが成立するか否かが判定される。２つの条件が両方とも成立していなければ（ＮＯ）、ホールド処理を継続するために、ステップＳ３２〜Ｓ３６が繰り返される。他方、いずれか一方の条件が成立していれば（ＹＥＳ）、終了ステップＳ３７でホールド処理が終了する。
（１）holdn>=(sdtlr-sdtrl)
（２）lmddtrl>lmddtlr
【００７６】
なお、ステップＳ３３で、３つの条件の少なくとも１つが成立していないと判定された場合は（ＮＯ）、ステップＳ３８でホールド処理が中止され（abort）、続いてステップＳ３９で最終模擬無駄時間が演算される。
【００７７】
また、ステップＳ２２でＲＬ無駄時間シミュレート成形が開始された場合は、ステップＳ４０〜Ｓ４５が実行され、ＲＬ無駄時間シミュレート成形処理が行われる。具体的には、まずステップＳ４０で、次の３つの条件がともに成立するか否かが判定される。
（１）リッチ側の変極点が検出されている（lmddts0[i-2]<=lmddts0[i-1] && lmddts0[i-1]>lmddts0）。
（２）ＬＲ線よりＲＬ線の値が大きい（lmddtrl>lmddtlr）。
（３）ホールドタイマーが所定値以下である（holdn<=(sdtlr-sdtrl)）。
【００７８】
これらの３つの条件がともに成立している場合は（ＹＥＳ）、図１９（ｂ）における近接して隣り合う２つの極小値のうちの時間的に早い方（左側）の極小値が検出されたことになる。この後、ステップＳ４２が実行される。
【００７９】
他方、ステップＳ４０で、３つの条件の少なくとも１つが成立していないと判定された場合は（ＮＯ）、ステップＳ４１で、次の３つの条件がともに成立するか否かが判定される。
（１）ホールド処理実行が許可されている（xhold）。
（２）ホールド後の値よりもホールド前の値のほうが大きい（lmddts>lmddts0）。
（３）ホールド継続カウンタが（ＬＲのズレ量-ＲＬのズレ量）より小さい（holdn<=(sdtlr-sdtrl)
）。
【００８０】
これらの３つの条件がともに成立している場合は（ＹＥＳ）、基本的には、現在の状態は、図１９（ｂ）における近接して隣り合う２つの極小値の間にあるので、ステップＳ４２で、ホールド処理により極小値が保持される。すなわち、ステップＳ４２では、リッチ側からリーン側への模擬波形ホールド処理が実行される（lmddts=lmddts0[I-1]）。続いて、ステップＳ４３でホールド継続カウンタが１だけインクリメントされる（holdn=holdn[I-1]+1）。
【００８１】
次に、ステップＳ４４で、次の２つの条件のいずれかが成立するか否かが判定される。２つの条件が両方とも成立していなければ（ＮＯ）、ホールド処理を継続するために、ステップＳ４０〜Ｓ４４が繰り返される。他方、いずれか一方の条件が成立していれば（ＹＥＳ）、ホールド処理を終了ステップＳ３７でホールド処理が終了する。
（１）holdn>=(sdtrl-sdtlr)
（２）lmddtrl>lmddtlr
【００８２】
なお、ステップＳ４１で、３つの条件の少なくとも１つが成立していないと判定された場合は（ＮＯ）、ステップＳ４５でホールド処理が中止され（abort）、続いてステップＳ３９で最終模擬無駄時間が演算される。
【００８３】
ステップＳ４６以下のステップでは、時定数劣化模擬が実行される。ステップＳ４６では最終時定数遅れ値すなわち初期値が設定される（lmdtcs=clmdfllr*lmdtcs[I-1]+lmddts*(1-clmdfllr)）。続いて、ステップＳ４７で時定数劣化模擬が開始される。次に、ステップＳ４８で、初回処理であるか、又は、次の２つの条件がともに成立しているかが判定される。なお、この２つの条件は、空燃比をリーン側からリッチ側へ変更する場合の時定数遅れ値を演算することが許可されるための条件である。
（１）lmddts<lmddts[I-1]
（２）lmdtcs[I-1]>lmddts
【００８４】
ステップＳ４８が初回処理であるか、又は上記２つの条件がともに成立していると判定された場合は（ＹＥＳ）、ステップＳ４９〜Ｓ５５が実行され、空燃比をリーン側からリッチ側へ変更する場合の時定数遅れ値が演算される。ステップＳ４９では、空燃比をリーン側からリッチ側へ変更する場合の時定数劣化模擬が開始される。続いて、ステップＳ５０で空燃比をリーン側からリッチ側へ変更する場合の遅れ時定数（以下「ＬＲ遅れ時定数」という。）stclrが演算される。このＬＲ遅れ時定数stclrは、リーン側からリッチ側への変更時の吸入空気量qaに基づく補正値である空気量補正値Table 4(qa)と、オペレータによって設定される遅れ時間slrtlrとに基づいて設定される。具体的には、空気量補正値Table 4(qa)と遅れ時間slrtlrとを乗算することにより得られる（stclr = Table_4(qa)*slrtlr）。
【００８５】
ステップＳ５０で用いられる空気量補正値Table 4(qa)及び遅れ時間slrtlrは、ステップＳ５７〜Ｓ６０で演算される。すなわち、ステップＳ５７でＣＡＮ通信により吸入空気量を受信し、続いてステップＳ５８でこの吸入空気量qaが読み込まれ、さらにステップＳ５９で、遅れ時定数補正用のテーブルTable 4を用いて、吸入空気量qaに対応する空気量補正値Table 4(qa)が演算される。
【００８６】
図１８に、テーブルTable 4における、空気量補正値Table 4(qa)の吸入空気量qaに対する変化特性を示す。図１８から明らかなとおり、吸入空気量qaが少ないときほど空気量補正値Table 4(qa)の値は大きくなる。すなわち、吸入空気量qaが少ないときは、排気ガス流量が少ないので、空燃比センサ２４の検出部まわりでの酸素の移動速度が小さくなり、遅れ時定数が長くなるからである。なお、この遅れ時定数の補正値は、図１７に示す無駄時間の補正値に比べて、吸入空気量qaが０に近い領域で急激に増加している。
【００８７】
また、ステップＳ６０では、オペレータによって遅れ時間slrtlrが設定される。この遅れ時間slrtlrの設定は、周期的に変化する実際の空燃比のデータを、時間軸の方向に、例えば０〜１０００ｍｓｅｃの範囲でずらすことによって設定する。なお、遅れ時間slrtlrが設定されなかった場合は、その値は０である。このようにして得られた空気量補正値Table 4(qa)と遅れ時間slrtlrとは、前記のステップＳ５０で用いられる。
【００８８】
次に、ステップＳ５１で、ＬＲ遅れ時定数stclrが０であるか否かが判定される。ここで、ＬＲ遅れ時定数stclrが０であれば（ＹＥＳ）、時定数劣化模擬を行う必要がないので、ステップＳ５６にスキップする。他方、ＬＲ遅れ時定数stclrが０でなければ（ＮＯ）、すなわち前記のステップＳ６０で遅れ時間slrtlrが設定されている場合は、ステップＳ５２で、空燃比をリーン側からリッチ側へ変更する場合の時定数フィルタ係数clmdfllrが演算される（clmdfllr=exp(-5/stclr)）。続いて、ステップＳ５３で、最終時定数遅れ値lmdtcsが演算される（lmdtcs=clmdfllr*lmdtcs[I-1]+lmddts*(1-clmdfllr)）。
【００８９】
次に、ステップＳ５４で、時定数劣化模擬終了条件が成立しているか否か、すなわち次の２つの条件がともに成立しているか否かが判定される。
（１）lmddts>=lmddts[I-1]
（２）lmdtcs[I-1]<=lmddts
【００９０】
ステップＳ５４で時定数劣化模擬終了条件が成立していないと判定された場合は（ＮＯ）、ステップＳ４９〜Ｓ５４が繰り返し実行される。他方、時定数劣化模擬終了条件が成立していると判定された場合は（ＹＥＳ）、ステップＳ５５で時定数劣化模擬が終了する。この後、ステップＳ５６が実行される。
【００９１】
ステップＳ５６では、次の２つの条件がともに成立しているかが判定される。なお、この２つの条件は、空燃比をリッチ側からリーン側へ変更する場合の時定数遅れ値を演算することが許可されるための条件である。
（１）lmddts>lmddts[I-1]
（２）lmdtcs[I-1]<lmddts
【００９２】
ステップＳ５６で、２つの条件のうち少なくとも一方が成立していないと判定された場合は（ＮＯ）、リッチ側からリーン側への時定数遅れ値を演算する必要がないので、ステップＳ６９にスキップする。他方、２つの条件がともに成立していると判定された場合は（ＹＥＳ）、ステップＳ６１〜Ｓ６７が実行され、空燃比をリッチ側からリーン側へ変更する場合の時定数遅れ値が演算される。ステップＳ６１では、空燃比をリッチ側からリーン側へ変更する場合の時定数劣化模擬が開始される。続いて、ステップＳ６２で空燃比をリッチ側からリーン側へ変更する場合の遅れ時定数（以下「ＲＬ遅れ時定数」という。）stcrlが演算される。このＲＬ遅れ時定数stcrlは、リッチ側からリーン側への変更時の吸入空気量qaに基づく補正値である空気量補正値Table 3(qa)と、オペレータによって設定される遅れ時間slrtrlとに基づいて設定される。具体的には、空気量補正値Table 3(qa)と遅れ時間slrtrlとを乗算することにより演算される（stcrl=Table_3(qa)*slrtrl）。
【００９３】
ステップＳ６２で用いられる空気量補正値Table 3(qa)及び遅れ時間slrtrlは、ステップＳ７２〜Ｓ７５で演算される。すなわち、ステップＳ７２でＣＡＮ通信により吸入空気量を受信し、続いてステップＳ７３でこの吸入空気量qaが読み込まれ、さらにステップＳ７４で、遅れ時定数補正用のテーブルTable 3を用いて、吸入空気量qaに対応する空気量補正値Table 3(qa)が演算される。なお、このテーブルTable 3における空気量補正値Table 3(qa)の吸入空気量qaに対する変化特性は、図１８に示すとおりである。
【００９４】
また、ステップＳ７５では、オペレータによって遅れ時間slrtrlが設定される。この遅れ時間slrtrlの設定は、周期的に変化する実際の空燃比のデータを、時間軸の方向に、例えば０〜１０００ｍｓｅｃの範囲でずらすことによって設定する。なお、遅れ時間slrtrlが設定されなかった場合は、その値は０である。このようにして得られた空気量補正値Table 3(qa)と遅れ時間slrtrlとは、前記のステップＳ６２で用いられる。
【００９５】
次に、ステップＳ６３で、ＲＬ遅れ時定数stcrlが０であるか否かが判定される。ここで、ＲＬ遅れ時定数stcrlが０であれば（ＹＥＳ）、リッチ側からリーン側への時定数劣化模擬を行う必要がないので、ステップＳ６９にスキップする。他方、ＲＬ遅れ時定数stcrlが０でなければ（ＮＯ）、すなわち前記のステップＳ７５で遅れ時間slrtrlが設定されている場合は、ステップＳ６４で、空燃比をリッチ側からリーン側へ変更する場合の時定数フィルタ係数clmdflrlが演算される（clmdflrl=exp(-5/stcrl)）。続いて、ステップＳ６５で、最終時定数遅れ値lmdtcsが演算される（lmdtcs=clmdflrl*lmdtcs[I-1]+lmddts*(1-clmdflrl)）。
【００９６】
次に、ステップＳ６６で、時定数劣化模擬終了条件が成立しているか否か、すなわち次の２つの条件がともに成立しているか否かが判定される。
（１）lmddts<=lmddts[I-1]
（２）lmdtcs[I-1]>=lmddts
【００９７】
ステップＳ６６で時定数劣化模擬終了条件が成立していないと判定された場合は（ＮＯ）、ステップＳ６１〜Ｓ６６が繰り返し実行される。他方、時定数劣化模擬終了条件が成立していると判定された場合は（ＹＥＳ）、ステップＳ６７で時定数劣化模擬が終了する。この後、ステップＳ６９が実行される。
【００９８】
ステップＳ６９では、模擬方法（２）が選択されているか否か、すなわちパラメータが空気過剰率λであるか否かが判定される。ここで、模擬方法（２）が選択されている場合は、ステップＳ７０で、空気過剰率λが出力電流Ipに変換される（元に戻される）。なお、模擬方法（２）が選択されていない場合は、このような変換は必要がないので、ステップＳ７０をスキップする。この後、ステップＳ７１で最終出力電流Ip endが決定され、今回のルーチンは終了する。なお、最終出力電流Ip endはコントロールユニット３０に送られる。
【００９９】
以上、このセンサ疑似信号の生成手法ないしはユニット診断監視手法によれば、シミュレータ２６が、吸入空気量に基づいて、かつ、空燃比がリーン側からリッチ側に変化する場合とリッチ側からリーン側に変化する場合とで個別にセンサ擬似信号を生成するので、空燃比センサ劣化診断手段の動作を確実かつ正確に監視することができ、ひいてはリニア空燃比センサの劣化診断を確実かつ正確に行うことができる。
【図面の簡単な説明】
【０１００】
【図１】本発明に係るエンジンのシステム構成を示す模式図である。
【図２】図１に示すエンジンにおける、シミュレータとコントロールユニットとリニア空燃比センサとの間での情報の流れを示すブロック図である。
【図３】図１に示すエンジンのコントロールユニットの制御形態を示すブロック図である。
【図４】コントロールユニットにおけるセンサ劣化診断の制御形態を示すブロック線図である。
【図５】リニア空燃比センサのステップ応答特性を示すグラフである。
【図６】センサ劣化診断を行った場合の各種信号の経時変化を示すタイミングチャートである。
【図７】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図８】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図９】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図１０】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図１１】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図１２】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図１３】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図１４】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図１５】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図１６】シミュレータのセンサ疑似信号の作成手順を示すフローチャートである。
【図１７】無駄時間の吸入空気量に対する変化特性を示すグラフである。
【図１８】時定数（１次遅れ時間）の吸入空気量に対する変化特性を示すグラフである。
【図１９】（ａ）、（ｂ）及び（ｃ）は、それぞれ、空燃比の経時変化を示す図である。
【図２０】空燃比の経時変化を示す図である。
【符号の説明】
【０１０１】
１  エンジン、２  吸気弁、３  吸気ポート、４  燃焼室、５  ピストン、６  点火プラグ、７  排気弁、８  排気ポート、９  コンロッド、１０  回転角度センサ、１１  吸気システム、１２  共通吸気通路、１３  エアクリーナ、１４  エレメント、１５  エアフローセンサ、１６  スロットル弁、１７  サージタンク、１８  スロットルセンサ、１９  独立吸気通路、２０  燃料噴射弁、２１  排気システム、２２  排気通路、２３  排気ガス浄化装置、２４  リニア空燃比センサ、２５  酸素濃度センサ、２６シミュレータ、３０コントロールユニット、３１  ＣＰＵ、３２  補助記憶装置（ＲＯＭ）、３３  主記憶装置（ＲＡＭ）、４０  フィードバック制御系、４１  基準入力要素、４２  バイアス補正要素、４４  主制御要素、４５  副制御要素、４６  外乱発生手段。
【図１】
2008248819.tif 000003
【図２】
2008248819.tif 000004
【図３】
2008248819.tif 000005
【図４】
2008248819.tif 000006
【図５】
2008248819.tif 000007
【図６】
2008248819.tif 000008
【図７】
2008248819.tif 000009
【図８】
2008248819.tif 000010
【図９】
2008248819.tif 000011
【図１０】
2008248819.tif 000012
【図１１】
2008248819.tif 000013
【図１２】
2008248819.tif 000014
【図１３】
2008248819.tif 000015
【図１４】
2008248819.tif 000016
【図１５】
2008248819.tif 000017
【図１６】
2008248819.tif 000018
【図１７】
2008248819.tif 000019
【図１８】
2008248819.tif 000020
【図１９】
2008248819.tif 000021
【図２０】
2008248819.tif 000022