(57)【要約】【課題】内燃機関の排気ガス中の特定成分の濃度に基づき排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を擬似的に生成し、更にその劣化信号を遅延させた状態で出力することができるガスセンサの劣化信号発生装置を提供する。【解決手段】１ｍｓ毎に基準センサから取得した基準信号の電圧値Ｖｉｎを、過去６００ｍｓ分記憶する。そして、空燃比のリッチ側への変更に伴い基準信号が変化し始めたら、予め設定されたＲｉｃｈＤｅｌａｙＴｉｍｅに相当する取得回数前に記憶した基準信号の電圧値Ｖｉｎを読み出して現在の劣化信号の電圧値Ｖｏｕｔとして出力する。空燃比がリーン側に変更された場合も同様に、ＬｅａｎＤｅｌａｙＴｉｍｅに相当する取得回数前に記憶した基準信号の電圧値Ｖｉｎを現在の劣化信号の電圧値Ｖｏｕｔとして出力する。【選択図】図２６
2011185274.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の排気ガス中の特定成分の濃度に基づき当該排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を、疑似的に発生する劣化信号発生装置であって、
前記劣化信号を生成するための基準信号であって、排気ガス中の特定成分の濃度に関連した基準信号を出力する前記ガスセンサと同構成をなした基準センサに接続されると共に、前記基準信号を一定時間毎に取得する基準信号取得手段と、
前記基準信号取得手段によって取得された前記基準信号を、その取得順に記憶する基準信号記憶手段と、
内燃機関に供給される混合気の目標空燃比の変更に伴って前記基準信号が変化し始める開始点を遅延させた状態で出力するための遅延時間を設定する遅延時間設定手段と、
前記遅延時間設定手段にて設定された前記遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を前記劣化信号として生成する信号遅延生成手段と
を備えたことを特徴とするガスセンサの劣化信号発生装置。
【請求項２】
前記遅延時間設定手段は、
前記遅延時間として、前記目標空燃比がリッチ側からリーン側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリッチリーン遅延時間と、前記目標空燃比がリーン側からリッチ側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間とを個別に設定可能に構成され、
前記信号遅延生成手段は、
前記リッチリーン遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリッチリーン信号遅延出力手段と、
前記リーンリッチ遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリーンリッチ信号遅延出力手段と、
前記基準信号取得手段によって取得された前記基準信号の値がリッチ側からリーン側に変化した場合には、前記リッチリーン信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成し、前記基準信号取得手段によって取得された前記基準信号の値がリーン側からリッチ側に変化した場合には、前記リーンリッチ信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成する劣化信号選択生成手段と
を備えたことを特徴とする請求項１に記載のガスセンサの劣化信号発生装置。
【請求項３】
前記基準信号取得手段によって取得された複数の前記基準信号に基づいて、前記目標空燃比がリッチ側からリーン側へ変更するに伴い前記基準信号が変化し始める開始点としてのリッチリーン変化開始点と、前記目標空燃比がリーン側からリッチ側へ変更するに伴い前記基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出する空燃比変化開始点検出手段を備え、
前記劣化信号選択生成手段は、
前記リッチリーン変化開始点において、前記リッチリーン信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行い、
前記リーンリッチ変化開始点においては、前記リーンリッチ信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行うことを特徴とする請求項２に記載のガスセンサの劣化信号発生装置。
【請求項４】
前記空燃比変化開始点検出手段は前記基準信号に対する微分処理を行い、前記基準信号の微分値が、前記目標空燃比がリッチ側からリーン側に変更される場合の閾値を越えた場合を前記リッチリーン変化開始点とすると共に、前記目標空燃比がリーン側からリッチ側に変更される場合の閾値を越えた場合を前記リーンリッチ変化開始点として検出することを特徴とする請求項３に記載のガスセンサの劣化信号発生装置。
【請求項５】
前記基準信号のゲインを変更した状態で出力するための利得率を設定する利得率設定手段と、
前記基準信号に、前記利得率設定手段に設定された前記利得率を掛け合わせて前記基準信号のゲインを変更するゲイン変更手段と
を備えたことを特徴とする請求項１乃至４のいずれかに記載のガスセンサの劣化信号発生装置。
【請求項６】
前記利得率設定手段は、
前記利得率として、前記基準信号の値が所定のしきい値よりもリーン側である場合の当該基準信号のゲインを変更させるためのリーン利得率と、前記基準信号の値が所定のしきい値よりもリッチ側である場合の当該基準信号のゲインを変更させるためのリッチ利得率とを個別に設定可能に構成され、
前記ゲイン変更手段は、
前記基準信号の値が所定のしきい値よりもリーン側であると判定されたとき、前記基準信号に前記リーン利得率を掛け合わせ、前記基準信号の値が所定のしきい値よりもリッチ側であると判定されたとき、前記基準信号に前記リッチ利得率を掛け合わせることを特徴とする請求項５に記載のガスセンサの劣化信号発生装置。
【請求項７】
前記目標空燃比の変更に伴って変移する前記基準信号の応答特性を変更した状態で出力するための変移率を設定する変移率設定手段と、
前記基準信号に、前記変移率設定手段にて設定された前記変移率を掛け合わせて前記基準信号の応答特性を変更する変移時間変更手段と
を備えたことを特徴とする請求項１乃至６のいずれかに記載のガスセンサの劣化信号発生装置。
【請求項８】
前記変移率設定手段は、
前記変移率として、前記目標空燃比がリッチ側からリーン側に変更される場合の前記基準信号の応答特性を変更するためのリッチリーン変移率と、前記目標空燃比がリーン側からリッチ側に変更される場合の前記基準信号の応答特性を変更するためのリーンリッチ変移率とを個別に設定可能に構成され、
前記変移時間変更手段は、
前記基準信号取得手段により取得される前記基準信号の値がリッチ側からリーン側に変化する場合には、前記基準信号に前記リッチリーン変移率を掛け合わせ、前記基準信号取得手段により取得される前記基準信号の値がリーン側からリッチ側に変化する場合には、前記基準信号に前記リーンリッチ変移率を掛け合わせることを特徴とする請求項７に記載のガスセンサの劣化信号発生装置。
【請求項９】
前記リッチリーン変化開始点において生成される前記劣化信号をリッチリーン保持信号として記憶し、前記リーンリッチ変化開始点において生成される前記劣化信号をリーンリッチ保持信号として記憶する保持信号記憶手段と、
前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号よりも大きい値である場合には、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号以下の値になるまで前記リッチリーン保持信号を前記劣化信号として出力し、
前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号よりも小さい値である場合には、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号以上の値になるまで前記リーンリッチ保持信号を前記劣化信号として出力する保持信号出力手段と
を備えたことを特徴とする請求項３または４に記載のガスセンサの劣化信号発生装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気ガス中の特定成分の濃度に基づき排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する検出信号（劣化信号）を、擬似的に発生するガスセンサの劣化信号発生装置に関するものである。
【背景技術】
【０００２】
従来より、自動車のエンジンなどの内燃機関の排気通路に取り付けられ、排気ガス中の特定成分の濃度に基づき、排気ガスの空燃比を検出するガスセンサが知られている。このガスセンサのセンサ素子は、自身を流れる電流の大きさあるいは電圧値が排気ガス中の特定成分の濃度に応じて二値的にあるいはリニアに変化することを利用して、排気ガスの空燃比の検出を行うものである。ガスセンサから出力される検出信号はＥＣＵ（電子制御ユニット）に送信され、ＥＣＵでは、受信した検出信号に基づきエンジンにおける燃料の噴射量の調整等の空燃比フィードバック制御が行われる。
【０００３】
こうしたガスセンサは、センサ素子が排気通路内で排気ガスに曝されることとなるため、長期間の使用に伴い経時劣化が生ずる。そこでＥＣＵの開発では、ガスセンサがある程度劣化した状態でも空燃比フィードバック制御の精度を維持することができるように、ガスセンサ劣化時の検出信号（劣化信号）に対しても最適な空燃比フィードバック制御のパラメータを決定できるようにする設計が行われている。例えば、加速耐久試験により劣化度合いの異なるガスセンサを用意し、それらガスセンサから得られる劣化信号と、正常なガスセンサの検出信号とを用い、劣化信号の過渡的な段階における信号状態を予測して、パラメータの設定を行っている。
【０００４】
ところで、実車において排気ガスの浄化状態を確認するための試験を行う場合、ガスセンサが劣化した状態においてもＥＣＵによる空燃比フィードバック制御が正しく行われているか否かを確認するため、上記のように加速耐久試験により劣化させたガスセンサが実車に取り付けられる。しかし、こうした試験に用いるため、数種類の劣化状態を再現したガスセンサそれぞれを加速耐久試験により目標通りに作成することは困難である。また、試験において、劣化状態の異なるガスセンサを試験の都度取り換えるには手間もかかる。そのため、ガスセンサの劣化信号を擬似的に発生することができる劣化信号発生装置（劣化シミュレータ）が開発されている（例えば、特許文献１参照。）。
【０００５】
このような劣化信号発生装置は、実車に取り付けた正常なガスセンサ（還元すれば、劣化信号を生成するための基準となるガスセンサ）とＥＣＵとの間に介在され、入力されたガスセンサの検出信号を加工して擬似的に劣化信号を生成し、この劣化信号をＥＣＵに対して出力するものである。特許文献１の劣化信号発生装置では、具体的には、ガスセンサの検出信号のゲインを変化させたり、検出信号の応答特性に遅れを生じさせたりすることで、擬似的に劣化信号を生成している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−９３９５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ガスセンサは排気通路の下流側に設けられる浄化装置の近くに取り付けられることが多く、燃料噴射量の調整等により内燃機関に供給される混合気の目標空燃比を変化させた際に、目標空燃比を変化させた混合気がエンジン（燃焼室）にて燃焼され、排気ガスとしてガスセンサに達するまでに時間がかかる。そのため、混合気の目標空燃比の変更タイミングと、ガスセンサから出力される検出信号の変化し始めるタイミングとの間には、タイムラグ（遅延）が生ずる。
【０００８】
ところで、ガスセンサを長期間使用した場合、ガスセンサのプロテクタ（詳細には、センサ素子の周囲を覆うガス流通孔付きのプロテクタ）のガス流通孔が目詰まりを起こす等の経時劣化を生ずることがある。そして、ガスセンサにこのような劣化が生ずると、ガス流通孔を介してのプロテクタ内部のガス置換が遅くなるため、混合気の目標空燃比の変更に伴ってガスセンサの検出信号が変化し始めるまでの時間（遅延時間）は、劣化していないガスセンサと比較して遅くなる。そのため、ガスセンサの劣化状態を考慮してＥＣＵの開発を行うにあたっては、上記遅延時間が経時的に変化していく（遅くなっていく）ことも考慮して開発を行わなければ、より精密な空燃比フィードバック制御を促せるＥＣＵを開発することができない。しかしながら、特許文献１に記載の劣化信号発生装置では、ゲインおよび応答特性を変更可能なガスセンサの劣化信号を擬似的に発生することはできるものの、上記遅延時間を変更可能な劣化信号までは擬似的に発生させることはできなかった。
【０００９】
本発明は上記問題点を解決するためになされたものであり、内燃機関の排気ガス中の特定成分の濃度に基づき排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を擬似的に生成し、更にその劣化信号を遅延させた状態で出力することができるガスセンサの劣化信号発生装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、請求項１に係る発明のガスセンサの劣化信号発生装置は、内燃機関の排気ガス中の特定成分の濃度に基づき当該排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を、疑似的に発生する劣化信号発生装置であって、前記劣化信号を生成するための基準信号であって、排気ガス中の特定成分の濃度に関連した基準信号を出力する前記ガスセンサと同構成をなした基準センサに接続されると共に、前記基準信号を一定時間毎に取得する基準信号取得手段と、前記基準信号取得手段によって取得された前記基準信号を、その取得順に記憶する基準信号記憶手段と、内燃機関に供給される混合気の目標空燃比の変更に伴って前記基準信号が変化し始める開始点を遅延させた状態で出力するための遅延時間を設定する遅延時間設定手段と、前記遅延時間設定手段にて設定された前記遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を前記劣化信号として生成する信号遅延生成手段とを備えている。
【００１１】
また、請求項２に係る発明のガスセンサの劣化信号発生装置は、請求項１に記載の発明の構成に加え、前記遅延時間設定手段は、前記遅延時間として、前記目標空燃比がリッチ側からリーン側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリッチリーン遅延時間と、前記目標空燃比がリーン側からリッチ側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間とを個別に設定可能に構成され、前記信号遅延生成手段は、前記リッチリーン遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリッチリーン信号遅延出力手段と、前記リーンリッチ遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリーンリッチ信号遅延出力手段と、前記基準信号取得手段によって取得された前記基準信号の値がリッチ側からリーン側に変化した場合には、前記リッチリーン信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成し、前記基準信号取得手段によって取得された前記基準信号の値がリーン側からリッチ側に変化した場合には、前記リーンリッチ信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成する劣化信号選択生成手段とを備えている。
【００１２】
また、請求項３に係る発明のガスセンサの劣化信号発生装置は、請求項２に記載の発明の構成に加え、前記基準信号取得手段によって取得された複数の前記基準信号に基づいて、前記目標空燃比がリッチ側からリーン側へ変更するに伴い前記基準信号が変化し始める開始点としてのリッチリーン変化開始点と、前記目標空燃比がリーン側からリッチ側へ変更するに伴い前記基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出する空燃比変化開始点検出手段を備え、前記劣化信号選択生成手段は、前記リッチリーン変化開始点において、前記リッチリーン信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行い、前記リーンリッチ変化開始点においては、前記リーンリッチ信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行うことを特徴とする。
【００１３】
また、請求項４に係る発明のガスセンサの劣化信号発生装置は、請求項３に記載の発明の構成に加え、前記空燃比変化開始点検出手段は前記基準信号に対する微分処理を行い、前記基準信号の微分値が、前記目標空燃比がリッチ側からリーン側に変更される場合の閾値を越えた場合を前記リッチリーン変化開始点とすると共に、前記目標空燃比がリーン側からリッチ側に変更される場合の閾値を越えた場合を前記リーンリッチ変化開始点として検出することを特徴とする。
【００１４】
また、請求項５に係る発明のガスセンサの劣化信号発生装置は、請求項１乃至４のいずれかに記載の発明の構成に加え、前記基準信号のゲインを変更した状態で出力するための利得率を設定する利得率設定手段と、前記基準信号に、前記利得率設定手段に設定された前記利得率を掛け合わせて前記基準信号のゲインを変更するゲイン変更手段とを備えている。
【００１５】
また、請求項６に係る発明のガスセンサの劣化信号発生装置は、請求項５に記載の発明の構成に加え、前記利得率設定手段は、前記利得率として、前記基準信号の値が所定のしきい値よりもリーン側である場合の当該基準信号のゲインを変更させるためのリーン利得率と、前記基準信号の値が所定のしきい値よりもリッチ側である場合の当該基準信号のゲインを変更させるためのリッチ利得率とを個別に設定可能に構成され、前記ゲイン変更手段は、前記基準信号の値が所定のしきい値よりもリーン側であると判定されたとき、前記基準信号に前記リーン利得率を掛け合わせ、前記基準信号の値が所定のしきい値よりもリッチ側であると判定されたとき、前記基準信号に前記リッチ利得率を掛け合わせることを特徴とする。
【００１６】
また、請求項７に係る発明のガスセンサの劣化信号発生装置は、請求項１乃至６のいずれかに記載の発明の構成に加え、前記目標空燃比の変更に伴って変移する前記基準信号の応答特性を変更した状態で出力するための変移率を設定する変移率設定手段と、前記基準信号に、前記変移率設定手段にて設定された前記変移率を掛け合わせて前記基準信号の応答特性を変更する変移時間変更手段とを備えている。
【００１７】
また、請求項８に係る発明のガスセンサの劣化信号発生装置は、請求項７に記載の発明の構成に加え、前記変移率設定手段は、前記変移率として、前記目標空燃比がリッチ側からリーン側に変更される場合の前記基準信号の応答特性を変更するためのリッチリーン変移率と、前記目標空燃比がリーン側からリッチ側に変更される場合の前記基準信号の応答特性を変更するためのリーンリッチ変移率とを個別に設定可能に構成され、前記変移時間変更手段は、前記基準信号取得手段により取得される前記基準信号の値がリッチ側からリーン側に変化する場合には、前記基準信号に前記リッチリーン変移率を掛け合わせ、前記基準信号取得手段により取得される前記基準信号の値がリーン側からリッチ側に変化する場合には、前記基準信号に前記リーンリッチ変移率を掛け合わせることを特徴とする。
【００１８】
また、請求項９に係る発明のガスセンサの劣化信号発生装置は、請求項３または４に記載の発明の構成に加え、前記リッチリーン変化開始点において生成される前記劣化信号をリッチリーン保持信号として記憶し、前記リーンリッチ変化開始点において生成される前記劣化信号をリーンリッチ保持信号として記憶する保持信号記憶手段と、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号よりも大きい値である場合には、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号以下の値になるまで前記リッチリーン保持信号を前記劣化信号として出力し、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号よりも小さい値である場合には、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号以上の値になるまで前記リーンリッチ保持信号を前記劣化信号として出力する保持信号出力手段とを備えている。
【発明の効果】
【００１９】
請求項１に係る発明のガスセンサの劣化信号発生装置によれば、基準センサから取得した基準信号を、任意に設定された遅延時間分、遅れて出力される劣化信号を生成することができる。これにより、内燃機関に供給される混合気の目標空燃比の変更に伴ってガスセンサの検出信号が変化し始めるまでの遅延時間が異なった、数種類の劣化状態を再現したガスセンサを加速耐久試験により目標通りに作成した上で、これらガスセンサを用いて上記遅延時間の変化を考慮したシステム（例えば、ＥＣＵ）の開発を行う必要がなくなる。つまり、本発明の劣化信号発生装置を用いることにより、基準センサを接続するだけで上記遅延時間を自由に変更させた劣化信号を直ぐに得ることができ、精密な空燃比フィードバック制御を実現可能なシステムの開発を円滑に行えると共に、その開発期間の短縮を図ることが可能となる。
【００２０】
ところで、ガスセンサの被毒の状態（例えば、排気ガス中に含まれていたＰｂ成分による被毒が特に進んでいる状態や、排気ガス中に含まれるＳｉ成分による被毒が特に進んでいる状態）によっては、目標空燃比がリッチ側に変更される場合とリーン側に変更される場合とで異なった遅延時間分遅れた劣化信号が出力される場合がある。そこで請求項２に係る発明の劣化信号発生装置を用いれば、目標空燃比がリッチ側に変更される場合にはリーンリッチ遅延時間に従って遅れて出力される劣化信号を生成することができ、目標空燃比がリーン側に変更される場合にはリッチリーン遅延時間に従って遅れて出力される劣化信号を生成することができる。
【００２１】
また、請求項３に係る発明のように、遅延時間の異なる劣化信号の切り換えを行うにあたって、その切り換えタイミングを決定するには、目標空燃比がリーン側に変更されたことに伴い基準信号が変化し始める開始点としてのリッチリーン変化開始点と、目標空燃比がリッチ側に変更されたことに伴い基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出することが好ましい。
【００２２】
そして、目標空燃比が変更されたことに伴い基準信号が変化し始める開始点を検出するには、請求項４に係る発明のように、基準信号に対する微分処理を行って、その微分値を閾値と比較することで、それぞれの開始点を求めるとよい。このようにすれば、簡易的でありながら精度よく、それぞれの開始点を検出することができる。
【００２３】
また、請求項５に係る発明によれば、ガスセンサの出力する検出信号のゲインが低下した状態を想定した劣化信号を基準センサの基準信号から擬似的に生成することができ、劣化信号発生装置の多様性を高めることができる。更に、基準信号のゲインを変更しつつ遅延時間を変更させた劣化信号を発生させることもでき、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。
【００２４】
更に、請求項６に係る発明のように、基準信号のゲインを変更するための利得率として、基準信号が所定のしきい値よりもリッチ側にある場合のリッチ利得率とリーン側にある場合のリーン利得率とを個別に設定することができれば、排気ガスの空燃比がリッチ側にある場合にのみ劣化した状態の劣化信号を出力するガスセンサや、排気ガスの空燃比がリッチ側とリーン側とで劣化の度合いの異なる劣化信号を出力するガスセンサなどの劣化信号を擬似的に生成することができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。
【００２５】
また、請求項７に係る発明によれば、ガスセンサの出力する信号の応答特性が低下した状態を想定した劣化信号を基準センサの基準信号から擬似的に生成することができ、劣化信号発生装置の多様性を高めることができる。更に、基準信号の応答特性を変更しつつ遅延時間を変更させた劣化信号を発生させたり、あるいはゲインも変更させた劣化信号を発生させたりすることができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。
【００２６】
なお、応答特性とは、目標空燃比が所定の値（理論空燃比に限定されない）を境にしてリッチ側からリーン側、あるいはリーン側からリッチ側へ変更されたことに伴い、ガスセンサの出力する検出信号が、変化を開始して予め設定した値となるまでにかかる時間をいう。変化にかかる時間が短いほど（早いほど）良好な応答特性が示される。
【００２７】
更に、請求項８に係る発明のように、基準信号の応答特性を変更するための変移率として、目標空燃比がリーン側からリッチ側に変更される場合に基準信号の応答特性を変更するリーンリッチ変移率と、目標空燃比がリッチ側からリーン側に変更される場合に基準信号の応答特性を変更するリッチリーン変移率とを個別に設定することができれば、目標空燃比がリーン側からリッチ側に変更される場合にのみ劣化した状態の劣化信号を出力するガスセンサや、目標空燃比の状態によって劣化の度合いの異なる劣化信号を出力するガスセンサなどの劣化信号を擬似的に生成することができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。
【００２８】
ところで、リッチリーン変化開始点において、劣化信号の生成元となる基準信号は、リーンリッチ信号遅延出力手段から出力される基準信号から、リッチリーン信号遅延出力手段から出力される基準信号に切り換えられる。このとき、リーンリッチ信号遅延出力手段から出力される基準信号の値よりもリッチリーン信号遅延出力手段から出力される基準信号の値が大きかった場合、生成される劣化信号の値は、下降しつつある状態からリッチリーン変化開始点において一時的に上昇し、また下降する状態となり、波打つように変化することがある。そこで請求項９に係る発明のように、リッチリーン変化開始点以後にリッチリーン信号遅延出力手段から生成される劣化信号をリッチリーン保持信号で置換することで、劣化信号の値は、下降しつつある状態から一定な状態となり、また下降する状態となり、波打つように変化することを防止することができる。また、リーンリッチ変化開始点以後にリーンリッチ信号遅延出力手段から生成される劣化信号についても同様に、リーンリッチ保持信号で置換すれば、出力される劣化信号の値が波打つように変化することを防止することができる。これにより、劣化信号発生装置から出力される劣化信号を二次利用した場合に、信号異常等の不具合を生ずる虞がない。
【図面の簡単な説明】
【００２９】
【図１】本実施の形態の劣化信号発生装置の一例としてのセンサシミュレータ１の概略的な構成を示すブロック図である。
【図２】ＥＥＰＲＯＭ１２の記憶エリアの構成を示す概念図である。
【図３】ＲＡＭ１３の記憶エリアの構成を示す概念図である。
【図４】劣化信号生成プログラム全体の動作の流れについて説明するためのフローブロック図である。
【図５】劣化信号生成プログラムのメインルーチンのフローチャートである。
【図６】ゲイン処理サブルーチンのフローチャートである。
【図７】移動平均処理サブルーチンのフローチャートである。
【図８】ピーク検出処理サブルーチンのフローチャートである。
【図９】ピーク値の平均値算出処理サブルーチンのフローチャートである。
【図１０】閾値チェック処理サブルーチンのフローチャートである。
【図１１】応答特性処理サブルーチンのフローチャートである。
【図１２】第１オーバーシュートチェック処理サブルーチンのフローチャートである。
【図１３】応答特性立上り処理サブルーチンのフローチャートである。
【図１４】応答特性立下り処理サブルーチンのフローチャートである。
【図１５】遅延処理サブルーチンのフローチャートである。
【図１６】第２オーバーシュートチェック処理サブルーチンのフローチャートである。
【図１７】遅延立上り処理サブルーチンのフローチャートである。
【図１８】遅延立下り処理サブルーチンのフローチャートである。
【図１９】空燃比をリッチ側とリーン側とに交番させた場合に得られる基準信号を時間軸に沿って示した例を示すグラフである。
【図２０】図１９に示した基準信号のリッチ側のゲインを変更した劣化信号の例を示すグラフである。
【図２１】図１９に示した基準信号のリーン側のゲインを変更した劣化信号の例を示すグラフである。
【図２２】図１９に示した基準信号のリッチ側の応答特性を変更した劣化信号の例を示すグラフである。
【図２３】図１９に示した基準信号のリーン側の応答特性を変更した劣化信号の例を示すグラフである。
【図２４】第１オーバーシュートチェック処理について説明するため、図２３の円Ｑで示す部分を拡大したグラフである。
【図２５】第１オーバーシュートチェック処理について説明するため、図２３の円Ｑで示す部分を拡大したグラフである。
【図２６】図１９に示した基準信号のリッチ側の遅延時間を変更した劣化信号の例を示すグラフである。
【図２７】図１９に示した基準信号のリーン側の遅延時間を変更した劣化信号の例を示すグラフである。
【図２８】第２オーバーシュートチェック処理について説明するため、図２７の円Ｒで示す部分を拡大したグラフである。
【図２９】第２オーバーシュートチェック処理について説明するため、図２７の円Ｒで示す部分を拡大したグラフである。
【図３０】図１９に示した基準信号のゲインと応答特性と遅延時間とをリッチ側およびリーン側それぞれについて変更した劣化信号の例を示すグラフである。
【発明を実施するための形態】
【００３０】
以下、本発明を具体化した劣化信号発生装置の一実施の形態について、図面を参照して説明する。図１は、本実施の形態の劣化信号発生装置の一例としてのセンサシミュレータ１の概略的な構成を示すブロック図である。なお、本発明の劣化信号発生装置に接続されるガスセンサとしては、酸素センサや全領域空燃比センサ、ＮＯｘセンサなどを用いることができ、本実施の形態ではλ型酸素センサをその一例とし、基準センサ２として、正常な（劣化していない）λ型酸素センサを用いたものとして説明する。なお、λ型酸素センサについては公知のものを使用しているため、その詳述については省略するが、具体的には、特開２００４−１３８５９９号公報に開示する筒型の酸素センサを使用しているものとして説明することとする。
【００３１】
図１に示すように、センサシミュレータ１は、自動車の排気通路（図示外）に取り付けられる酸素センサとしての基準センサ２と、自動車の電子制御を司るＥＣＵ３との間に介在される装置である。基準センサ２は排気通路内を流通する排気ガス中の酸素濃度に応じた検出信号を出力し、この検出信号が基準信号としてセンサシミュレータ１に入力されている。センサシミュレータ１は、入力された基準信号に対し、後述する劣化信号生成プログラムの実行により加工を施して劣化信号を生成し、ＥＣＵ３に対して出力を行っている。ＥＣＵ３は、入力された劣化信号に基づき、図示外のエンジンの制御（例えば、インジェクタから噴射する燃料の噴射量や噴射タイミングの調整や、点火時期の調整など）を行っている。また、ＥＣＵ３は、基準センサ２のヒータ回路（図示外）にヒータ駆動電圧の供給も行っており、センサ素子（図示外）の早期活性化や活性化後の安定化を図っている。
【００３２】
センサシミュレータ１は、図示しないケーシング内に、自身の制御を司るＣＰＵ１１と、後述する劣化信号生成プログラム等が記憶された、書き換え可能なＥＥＰＲＯＭ１２と、各種のデータを一時的に記憶するＲＡＭ１３とを有するマイクロコンピュータ１０を備えている。なお、マイクロコンピュータ１０のＣＰＵ１１、ＥＥＰＲＯＭ１２およびＲＡＭ１３は公知の構成からなるものである。ＥＥＰＲＯＭ１２およびＲＡＭ１３の記憶エリアの構成については後述する。
【００３３】
マイクロコンピュータ１０には、入力インターフェイス２０を介して基準センサ２から入力される基準信号をＡ／Ｄ変換するＡ／Ｄコンバータ３０と、後述する劣化信号生成プログラムによって生成した劣化信号を出力バッファ４０を介してＥＣＵ３に出力するためにＤ／Ａ変換するＤ／Ａコンバータ５０とが接続されている。更に、マイクロコンピュータ１０には、劣化信号生成プログラムに用いられる設定値等を利用者が入力するための入力部６０と、入力された設定値等を確認できるように表示する表示部８０の表示制御を行う表示制御部７０とが接続されている。入力部６０としては、例えばプッシュスイッチやロータリースイッチ等が用いられ、表示部８０としては、例えばＬＣＤディスプレイ等が用いられる。また、図示しないが、センサシミュレータ１は電源回路等も備えている。
【００３４】
なお、後述する劣化信号生成プログラムでは、基準信号から劣化信号を生成する過程において多数のサブルーチン単位での処理が行われ、その際に様々な中間信号を生成する。劣化信号生成プログラムでは、各サブルーチン間における中間信号の受け渡しを、ＲＡＭ１３の変数記憶エリア１３２に記憶される多数の変数等を用いて行っている。本実施の形態において、一のサブルーチンにおいて処理の終わった中間信号等を変数に記憶する処理を、便宜上、「出力」と表現し、変数として記憶された中間信号等を他のサブルーチンにおいて読み込む処理を、便宜上、「入力」と表現する場合もある。
【００３５】
次に、ＥＥＰＲＯＭ１２の記憶エリアおよびＲＡＭ１３の記憶エリアの概略的な構成について、図２および図３を参照して説明する。図２は、ＥＥＰＲＯＭ１２の記憶エリアの構成を示す概念図である。図３は、ＲＡＭ１３の記憶エリアの構成を示す概念図である。
【００３６】
図２に示すように、ＥＥＰＲＯＭ１２には、設定値記憶エリア１２１、プログラム記憶エリア１２２、初期値記憶エリア１２３が設けられている。設定値記憶エリア１２１は、後述する７つの変数（ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎ，ＧａｉｎＴｈｒｅｓｈｏｌｄ，ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ，ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅ）の設定値が記憶され、劣化信号生成プログラムにおいて利用される。これらの設定値は、予め利用者により入力部６０から任意の値が入力され、ＥＥＰＲＯＭ１２に記憶されることで、電源切断時にも保存することができるように構成されている。プログラム記憶エリア１２２には、劣化信号生成プログラムが記憶されている。ＥＥＰＲＯＭ１２を使用することで、バージョンアップ等にも柔軟に対応できるように構成されている。更にＥＥＰＲＯＭ１２には、図示外の各種の記憶エリアが設けられている。
【００３７】
また、図３に示すように、ＲＡＭ１３には、ワークエリア１３１、変数記憶エリア１３２が設けられている。ワークエリア１３１には、劣化信号生成プログラムが読み込まれて展開される記憶エリアであり、その実行に利用される。変数記憶エリア１３２には、以下に示す、各種変数やカウント値等が記憶され、劣化信号生成プログラムの実行に際し使用される。
【００３８】
ここで、劣化信号生成プログラムで使用される各変数やカウント値について説明する。
「Ｖｉｎ」は、基準センサ２から取得される基準信号の電圧値を記憶するための変数であり、初期値には０がセットされる。「ＧａｉｎＴｈｒｅｓｈｏｌｄ」は、基準信号の電圧値をもって排気ガスの空燃比がリッチ側にあるかリーン側にあるかを判定するためのしきい値を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。「ＲｉｃｈＧａｉｎ」は、排気ガスの空燃比がリッチ側にある場合に、基準信号の電圧値に掛け合わせて第１中間信号（電圧値Ｖｉｎｔ１）を得るための利得率を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。「ＬｅａｎＧａｉｎ」は、排気ガスの空燃比がリーン側にある場合に、基準信号の電圧値に掛け合わせて第１中間信号（電圧値Ｖｉｎｔ１）を得るための利得率を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。「Ｖｉｎｔ１」は、基準信号の電圧値Ｖｉｎのゲインを変更した第１中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。
【００３９】
「ｐｒｅｖＶｉｎ」は、今回取得した基準信号の電圧値Ｖｉｎを記憶して保存し、次回（１ｍｓ後）に利用するための変数であり、初期値には０がセットされる。「Ｖｄｉｆｆ」は、基準信号の微分値を記憶するための変数であり、微分値は、前回取得された基準信号の電圧値ｐｒｅｖＶｉｎと今回取得した基準信号の電圧値Ｖｉｎとの差を近似値として求められる。初期値には０がセットされる。「ｐｒｅｖＶｄｉｆｆ［ｉ］」は、９９回前に算出した微分値ｐｒｅｖＶｄｉｆｆ［９９］から前回算出した微分値ｐｒｅｖＶｄｉｆｆ［１］までを記憶するための９９個の変数であり、初期値にはそれぞれ０が記憶される。「ＶｄｉｆｆＳｕｍ」は、９９回前に算出した微分値ｐｒｅｖＶｄｉｆｆ［９９］から前回算出した微分値ｐｒｅｖＶｄｉｆｆ［１］までと、今回算出した微分値Ｖｄｉｆｆとを加算した合算値を記憶するための変数であり、初期値には０がセットされる。「ｉ」は、ｐｒｅｖＶｄｉｆｆ［ｉ］の記憶エリアや、後述するｐｒｅｖＶｉｎｔ３［ｉ］の記憶エリアを指定するための変数として用いられ、初期値には１がセットされる。「ｄｕ」は、９９回前（９９ｍｓ前）に取得した基準信号の微分値から今回取得した基準信号の微分値までの１００回分の微分値の平均値を記憶するための変数であり、初期値には０が記憶される。
【００４０】
「ＳｔｅｐＣｏｕｎｔ」は、１秒間における立上りピーク値ｔｍｐＵｐＰｅａｋおよび立下りピーク値ｔｍｐＤｏｗｎＰｅａｋを求めるため、１秒間の経過をカウントするためのカウント値であり、初期値には０がセットされる。「ｔｍｐＵｐＰｅａｋ」は、微分値の平均値ｄｕの最新１秒間の最大値としての立上りピーク値を記憶するための変数であり、初期値には０がセットされる。「ｔｍｐＤｏｗｎＰｅａｋ」は、微分値の平均値ｄｕの最新１秒間の最小値としての立下りピーク値を記憶するための変数であり、初期値には０がセットされる。「ｐｒｅｖＵｐＰｅａｋ１」には、前回（１秒前）求めた１秒間における立上りピーク値を記憶するための変数であり、初期値には０が記憶される。「ｐｒｅｖＵｐＰｅａｋ２」には、前々回（２秒前）求めた１秒間における立上りピーク値を記憶するための変数であり、初期値には０が記憶される。「ｐｒｅｖＤｏｗｎＰｅａｋ１」には、前回（１秒前）求めた１秒間における立下りピーク値を記憶するための変数であり、初期値には０が記憶される。「ｐｒｅｖＤｏｗｎＰｅａｋ２」には、前々回（２秒前）求めた１秒間における立下りピーク値を記憶するための変数であり、初期値には０が記憶される。「ＵｐＰｅａｋ」は、最新の３回分（３秒分）の立上りピーク値（ｔｍｐＵｐＰｅａｋ，ｐｒｅｖＵｐＰｅａｋ１，ＰｒｅｖＵｐＰｅａｋ２）の平均値を記憶するための変数であり、初期値には０．００５がセットされる。「ＤｏｗｎＰｅａｋ」は、最新の３回分（３秒分）の立下りピーク値（ｔｍｐＤｏｗｎＰｅａｋ，ｐｒｅｖＤｏｗｎＰｅａｋ１，ＰｒｅｖＤｏｗｎＰｅａｋ２）の平均値を記憶するための変数であり、初期値には−０．００５がセットされる。「ＵｐＴｈｒｅｓｈｏｌｄ」は、基準信号の変化を示す微分値の平均値ｄｕと比較することで、排気ガスの空燃比がリーン側からリッチ側に変更されたことを検出するための閾値を記憶するための変数であり、ＵｐＰｅａｋの０．１５倍の値が算出され記憶される。「ＤｏｗｎＴｈｒｅｓｈｏｌｄ」は、基準信号の変化を示す微分値の平均値ｄｕと比較することで、排気ガスの空燃比がリッチ側からリーン側に変更されたことを検出するための閾値を記憶するための変数であり、ＤｏｗｎＰｅａｋの０．１５倍の値が算出され記憶される。
【００４１】
「ｓｔａｔｅ」は、排気ガスの空燃比の状態を示すフラグであり、エンジン（図示外）に供給される混合気の目標空燃比がリッチ側からリーン側に変更されたことに伴う基準信号の変化が検出された状態（以下、「立下り状態」という。）では−１が記憶される。また、目標空燃比がリーン側からリッチ側に変更されたことに伴う基準信号の変化が検出された状態（以下、「立上り状態」という。）では１が記憶される。「ｐｒｅｖＳｔａｔｅ１」は、前回（１ｍｓ前に）判定されたｓｔａｔｅの値を閾値チェック処理で用いるために記憶するフラグである。
【００４２】
「ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ」は、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、基準信号（本実施の形態では第１中間信号）の応答特性を変更するために用いられるリーンリッチ変移率を記憶するための変数であり、初期値には０が記憶される。「ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ」は、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、基準信号（本実施の形態では第１中間信号）の応答特性を変更するために用いられるリッチリーン変移率を記憶するための変数であり、初期値には０が記憶される。「α」は、基準信号（本実施の形態では第１中間信号）の応答特性を変更するための数式において係数として使用され、上記変移率を用いて算出される値が記憶される。「Ｖｉｎｔ２」は、基準信号（本実施の形態では第１中間信号）の応答特性を変更した第２中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。「ｐｒｅｖＶｉｎｔ２」は、今回の応答特性処理の実行によって求めた第２中間信号の電圧値Ｖｉｎｔ２を記憶して保存し、次回（１ｍｓ後）に利用するための変数であり、初期値には０がセットされる。
【００４３】
「ｐｒｅｖＳｔａｔｅ２」は、前回（１ｍｓ前に）判定されたｓｔａｔｅの値を保存して第１オーバーシュートチェック処理で用いるために記憶するフラグである。「Ｖｂａｓｅ」は、目標空燃比の変更に伴い基準信号の電圧値Ｖｉｎが変化しつつあるときに、応答特性処理において、変移率の変更によって一時的に電圧値の変化方向が逆転し（例えば高電位から低電位であったものが一時的に低電位から高電位に変化する場合など）、波打つように変化する現象が生じないように、第１オーバーシュートチェック処理において、第２中間信号の電圧値Ｖｉｎｔ２を補正する補正電圧値を記憶するための変数である。また、第２オーバーシュートチェック処理においても同様に、出力される劣化信号の電圧値Ｖｏｕｔを補正する補正電圧値を記憶するために用いられ、初期値には０がセットされる。「ＣｈｅｃｋＦｌａｇ」は、第１オーバーシュートチェック処理および第２オーバーシュートチェック処理において、Ｖｂａｓｅを用いた電圧値の補正を行う必要がある場合に１が記憶されるフラグであり、初期値には０がセットされる。「Ｖｉｎｔ３」は、第２中間信号の電圧値Ｖｉｎｔ２に対し、第１オーバーシュートチェック処理において補正を行い生成される第３中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。
【００４４】
「ｐｒｅｖＶｉｎｔ３［ｉ］」（ただし、ｉ＝０，１，２，・・・，６００）は、応答特性処理、第１オーバーシュートチェック処理を経て得られた過去６００ｍｓ前までの第３中間信号の電圧値Ｖｉｎｔ３を１ｍｓ毎に記憶して保存し、遅延処理で、遅延時間（ＲｉｃｈＤｅｌａｙＴｉｍｅまたはＬｅａｎＤｅｌａｙＴｉｍｅ）分遅いタイミングに遅らせて出力するための６０１個の変数であり、初期値にはそれぞれ０がセットされる。「ＲｉｃｈＤｅｌａｙＴｉｍｅ」は、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、基準信号（本実施の形態では第３中間信号）を０〜６００ｍｓの範囲で遅らせて出力するために用いられるリーンリッチ遅延時間を記憶するための変数であり、初期値には０が記憶される。「ＬｅａｎＤｅｌａｙＴｉｍｅ」は、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、基準信号（本実施の形態では第３中間信号）を０〜６００ｍｓの範囲で遅らせて出力するために用いられるリッチリーン遅延時間を記憶するための変数であり、初期値には０が記憶される。「ｐｒｅｖＳｔａｔｅ３」は、前回（１ｍｓ前に）判定されたｓｔａｔｅの値を保存して第２オーバーシュートチェック処理で用いるために記憶するフラグである。「Ｖｉｎｔ４」は、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、第３中間信号を［ＲｉｃｈＤｅｌａｙＴｉｍｅ］ｍｓ遅らせて出力する第４中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。「ｐｒｅｖＶｉｎｔ４」は、前回（１ｍｓ前）劣化信号として選択された第４中間信号の電圧値Ｖｉｎｔ４を記憶して保持するための変数であり、初期値には０がセットされる。「Ｖｉｎｔ５」は、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、第３中間信号を［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ遅らせて出力する第５中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。「ｐｒｅｖＶｉｎｔ５」は、前回（１ｍｓ前）劣化信号として選択された第５中間信号の電圧値Ｖｉｎｔ５を記憶して保持するための変数であり、初期値には０がセットされる。「Ｖｏｕｔ」は、劣化信号生成プログラムの実行によって基準信号から生成される劣化信号の電圧値を記憶するための変数であり、初期値には０が記憶される。更にＲＡＭ１３には、図示外の各種の記憶エリアが設けられている。
【００４５】
このような構成のセンサシミュレータ１では、後述する図５〜図１８のフローチャートで示す劣化信号生成プログラムの実行に従って、基準センサ２から１ｍｓ毎に基準信号を取得し、加工を施して劣化信号を生成し、ＥＣＵ３に対し出力を行っている。この劣化信号生成プログラムの詳細について説明する前に、劣化信号生成プログラムの動作の概略について、図４に示す、フローブロック図を用いて簡単に説明する。図４は、劣化信号生成プログラム全体の動作の流れについて説明するためのフローブロック図である。
【００４６】
図４に示すように、劣化信号生成プログラムは、ゲイン処理ブロック１０１、立上り，立下り検出ブロック１０２、応答特性処理ブロック１０３、および遅延処理ブロック１０４からなる４つの処理ブロックにより構成される。
【００４７】
ゲイン処理ブロック１０１では、入力された基準信号（電圧値Ｖｉｎ）のゲインを変更（増幅または減衰）する処理が行われる。このときＶｉｎは、予め設定された所定のしきい値ＧａｉｎＴｈｒｅｓｈｏｌｄに対し、大きい場合と小さい場合とで異なる利得率ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎにより増幅または減衰されるように構成されている。基準信号（電圧値Ｖｉｎ）を増幅または減衰した第１中間信号（電圧値Ｖｉｎｔ１）は、応答特性処理ブロックに対し出力される。なお、ゲイン処理ブロック１０１は、後述する劣化信号生成プログラムのフローチャート（図５参照）では、ゲイン処理（Ｓ３）に相当する。
【００４８】
次に、立上り，立下り検出ブロック１０２では、目標空燃比がリッチ状態からリーン状態へ、あるいはリーン状態からリッチ状態へ変更されたことに伴って基準センサ２の基準信号（電圧値Ｖｉｎ）が変化し始める開始点を検出する処理が行われる。入力される基準信号（電圧値Ｖｉｎ）に対して行われる微分処理の結果に基づき、上述したフラグｓｔａｔｅの値が決定される。そしてフラグｓｔａｔｅの値は、次に目標空燃比が変更されたことに伴う基準信号の変化が検出されるまで、維持される構成となっている。すなわち、ｓｔａｔｅの値の変化するタイミングが、上記開始点となる。なお、立上り，立下り検出ブロック１０２は、後述する劣化信号生成プログラムのフローチャート（図５参照）では、基準信号の微分値ｄｕを求める移動平均算出処理（Ｓ５）、閾値ＵｐＰｅａｋ，ＤｏｗｎＰｅａｋを求めるピーク値検出処理（Ｓ６）、および閾値チェック処理（Ｓ７）に相当する。
【００４９】
次に、応答特性処理ブロック１０３では、ゲイン処理ブロック１０１でゲインの変更された第１中間信号（電圧値Ｖｉｎｔ１）の応答特性を変更する処理が行われる。ここで、目標空燃比がリッチ側からリーン側に変更された場合には、リッチ側で安定しているときに酸素センサの出力する電圧値から、リーン側で安定しているときに酸素センサの出力する電圧値へと電圧値が変化する。目標空燃比がリーン側からリッチ側に変更された場合についても同様である。本実施の形態における応答特性とは、目標空燃比の変更に伴い、電圧値が変化をし始めてから予め定められた値に達するまでにかかる時間（早さ）を示し、変化にかかる時間が短いほど（早いほど）良好な応答特性が示される。従って、酸素センサが劣化した場合、応答特性は低下し、電圧値の変化に、より時間がかかることとなる。
【００５０】
そこで、応答特性処理ブロック１０３では、ゲイン処理ブロック１０１において得られた第１中間信号（電圧値Ｖｉｎｔ１）に対し、以下の数式（１）を用いて、応答特性を変化させた第２中間信号（電圧値Ｖｉｎｔ２）を得る。
Ｖｉｎｔ２＝（１−α）×Ｖｉｎｔ１＋α×ｐｒｅｖＶｉｎｔ２・・・（１）
ただし、ｐｒｅｖＶｉｎｔ２は、前回のサンプリング時に算出されたＶｉｎｔ２の値である。
【００５１】
なお、立上り状態と立下り状態とで異なる変移率を用いて応答特性を変更することができるように、リーンリッチ変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔおよびリッチリーン変移率ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔを用い、係数αを以下の数式（２），（３）を用いて算出している。
目標空燃比がリーン側からリッチ側に変更されたことに伴う基準信号の変化が検出された状態（立上り状態）：
α＝ｅｘｐ｛−１／（１＋ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ／Ｔｓ）｝・・・（２）
目標空燃比がリッチ側からリーン側に変更されたことに伴う基準信号の変化が検出された状態（立下り状態）：
α＝ｅｘｐ｛−１／（１＋ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ／Ｔｓ）｝・・・（３）
ただし、Ｔｓはサンプリング間隔であり、本実施の形態では１ｍｓである。
【００５２】
応答特性処理ブロック１０３では、更に、第１オーバーシュートチェック処理を行っている。例えば、目標空燃比がリッチ側からリーン側に変更された場合、λ型酸素センサの出力する電圧値は高電位から低電位に変化する。このとき、上記の応答特性を変化させる処理を行ったことによって、電圧値が一時的に低電位から高電位に変化（変化方向が逆転）し、波打つように変化する場合がある。オーバーシュートチェック処理では、最終出力信号としての第３中間信号（電圧値Ｖｉｎｔ３）の変化方向に一時的な逆転が行われないように補正を行う処理である。なお、応答特性処理ブロック１０３は、後述する劣化信号生成プログラムのフローチャート（図５参照）では、応答特性処理（Ｓ９）、第１オーバーシュートチェック処理（Ｓ１０）に相当する。
【００５３】
次に、遅延処理ブロック１０４では、応答特性処理ブロック１０３で応答特性の変更された第３中間信号（電圧値Ｖｉｎｔ３）の遅延時間を変更し、劣化信号（電圧値Ｖｏｕｔ）として出力する処理が行われる。この処理ブロックでは、６００ｍｓ前に入力された第３中間信号の電圧値Ｖｉｎｔ３から今回入力された第３中間信号の電圧値Ｖｉｎｔ３まで記憶して保存している。そして、空燃比の状態がリッチ側（立上り状態）にあれば、リーンリッチ遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅで指定される遅延時間前に入力された第３中間信号（電圧値Ｖｉｎｔ３）を、第４中間信号（電圧値Ｖｉｎｔ４）として生成する。同様に、空燃比の状態がリーン側（立下り状態）にあれば、リッチリーン遅延時間ＬｅａｎＤｅｌａｙＴｉｍｅで指定される遅延時間前に入力された第３中間信号（電圧値Ｖｉｎｔ３）を、第５中間信号（電圧値Ｖｉｎｔ５）として生成する。
【００５４】
更に、第２オーバーシュートチェック処理を行い、上記した第１オーバーシュートチェック処理と同様に、立上り状態では第４中間信号（電圧値Ｖｉｎｔ４）に対し、立下り状態では第５中間信号（電圧値Ｖｉｎｔ５）に対し補正を行って劣化信号（電圧値Ｖｏｕｔ）を生成し、出力する。なお、遅延処理ブロック１０４は、後述する劣化信号生成プログラムのフローチャート（図５参照）では、遅延処理（Ｓ１１）、第２オーバーシュートチェック処理（Ｓ１３）に相当する。
【００５５】
このように、基準信号に対し、各処理ブロックにおける処理を施して劣化信号を生成する過程は、本実施の形態では、劣化信号生成プログラムによって実現されている。以下、図５〜図１８のフローチャートに従い、図１９〜図３０のグラフを参照しながら、劣化信号生成プログラムの実行によって基準信号が加工され、劣化信号として生成される過程について説明する。
【００５６】
図５は、劣化信号生成プログラムのメインルーチンのフローチャートである。図６は、ゲイン処理サブルーチンのフローチャートである。図７は、移動平均処理サブルーチンのフローチャートである。図８は、ピーク検出処理サブルーチンのフローチャートである。図９は、ピーク値の平均値算出処理サブルーチンのフローチャートである。図１０は、閾値チェック処理サブルーチンのフローチャートである。図１１は、応答特性処理サブルーチンのフローチャートである。図１２は、第１オーバーシュートチェック処理サブルーチンのフローチャートである。図１３は、応答特性立上り処理サブルーチンのフローチャートである。図１４は、応答特性立下り処理サブルーチンのフローチャートである。図１５は、遅延処理サブルーチンのフローチャートである。図１６は、第２オーバーシュートチェック処理サブルーチンのフローチャートである。図１７は、遅延立上り処理サブルーチンのフローチャートである。図１８は、遅延立下り処理サブルーチンのフローチャートである。以下、フローチャートの各ステップを「Ｓ」と略記する。
【００５７】
また、図１９は、目標空燃比をリッチ側とリーン側とに交番させた場合に得られる基準信号を時間軸に沿って示した例を示すグラフである。図２０は、図１９に示した基準信号のリッチ側のゲインを変更した劣化信号の例を示すグラフである。図２１は、図１９に示した基準信号のリーン側のゲインを変更した劣化信号の例を示すグラフである。図２２は、図１９に示した基準信号のリッチ側の応答特性を変更した劣化信号の例を示すグラフである。図２３は、図１９に示した基準信号のリーン側の応答特性を変更した劣化信号の例を示すグラフである。図２４は、第１オーバーシュートチェック処理について説明するため、図２３の円Ｑで示す部分を拡大したグラフである。図２５は、第１オーバーシュートチェック処理について説明するため、図２３の円Ｑで示す部分を拡大したグラフである。図２６は、図１９に示した基準信号のリッチ側の遅延時間を変更した劣化信号の例を示すグラフである。図２７は、図１９に示した基準信号のリーン側の遅延時間を変更した劣化信号の例を示すグラフである。図２８は、第２オーバーシュートチェック処理について説明するため、図２７の円Ｒで示す部分を拡大したグラフである。図２９は、第２オーバーシュートチェック処理について説明するため、図２７の円Ｒで示す部分を拡大したグラフである。図３０は、図１９に示した基準信号のゲインと応答特性と遅延時間とをリッチ側およびリーン側それぞれについて変更した劣化信号の例を示すグラフである。
【００５８】
センサシミュレータ１では、予め、利用者により各種設定値の入力が行われる。具体的には、基準信号のゲインを変更するためのリッチ側、リーン側それぞれにおける利得率（それぞれ変数ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎの値として利用される。）およびしきい値（変数ＧａｉｎＴｈｒｅｓｈｏｌｄの値として利用される。）と、基準信号の応答特性を変更するためのリッチ側、リーン側それぞれにおける変移率（それぞれ変数ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔの値として利用される。）と、基準信号の変化し始める開始点を変更するためのリッチ側、リーン側それぞれにおける遅延時間（それぞれ変数ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅの値として利用される。）とが設定される。これらの設定値は入力部６０の操作により行われ、ＥＥＰＲＯＭ１２の設定値記憶エリア１２１に記憶されることで、センサシミュレータ１の電源が落とされた後に再度使用される場合にも、以前入力された設定値が保存されるように構成されている。
【００５９】
センサシミュレータ１による基準センサ２の基準信号から劣化信号の生成は、図５に示す、劣化信号生成プログラムが、ＥＥＰＲＯＭ１２のプログラム記憶エリア１２２よりＲＡＭ１３のワークエリア１３１に読み込まれ実行されることによって開始される。図５に示す劣化信号生成プログラムでは、Ｓ１でまず初期化処理が行われた後、Ｓ２で１ｍｓ毎のリセット信号の受信待ちが行われる。本実施の形態では、劣化信号生成プログラムと並列に図示外のタイマプログラムが実行されており、１ｍｓ毎にリセット信号が出力されている。Ｓ２ではリセット信号の受信待ちが行われ、リセット信号の受信を契機にＳ３へ進むように構成されている。そしてＳ３〜Ｓ１３の各処理のサブルーチンが順にコールされて実行され、基準センサ２から取得される基準信号を元として劣化信号が生成されてＥＣＵ３に対し出力される。Ｓ１３の処理後にはＳ２に戻り、次のリセット信号の受信待ちが行われる。すなわち、基準信号を加工して劣化信号を生成するＳ３〜Ｓ１３の処理は、１ｍｓ毎に行われている。以下、劣化信号生成プログラムの具体的な処理内容について説明する。
【００６０】
初期化処理では、劣化信号生成プログラムで使用される各種変数の初期化が行われる（Ｓ１）。初期化は、ＥＥＰＲＯＭ１２の初期値記憶エリア１２３に記憶された初期値（前述）が読み込まれ、各変数の値として、ＲＡＭ１３の対応する変数記憶エリア１３２の記憶エリアに記憶されることで行われる。また、上記した、予め利用者により設定された７つの変数（ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎ，ＧａｉｎＴｈｒｅｓｈｏｌｄ，ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ，ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅ）の値がＥＥＰＲＯＭ１２の設定値記憶エリア１２１より読み込まれ、各変数の値として、対応する変数記憶エリア１３２の記憶エリアに記憶される。劣化信号生成プログラムのＳ１以降の処理では、各変数の値の読み出し、書き込み等はすべて、変数記憶エリア１３２に設けられた、それぞれの処理に対応する各変数の記憶エリアに対して行われる。そしてリセット信号の受信待ちが行われ（Ｓ２：ＮＯ）、リセット信号の受信を契機にゲイン処理のサブルーチンがコールされる（Ｓ２：ＹＥＳ，Ｓ３）。なお、Ｓ１において、予め利用者により入力部６０から入力されＥＥＰＲＯＭ１２に記憶され保存された遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅを、劣化信号生成プログラムで使用するため読み込み、ＲＡＭ１３の変数記憶エリアに記憶させるＣＰＵ１１が、本発明における「遅延時間設定手段」に相当する。同様に、Ｓ１において、予め利用者により入力部６０から入力されＥＥＰＲＯＭ１２に記憶され保存された利得率ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎを、劣化信号生成プログラムで使用するため読み込み、ＲＡＭ１３の変数記憶エリアに記憶させるＣＰＵ１１が、本発明における「利得率設定手段」に相当する。更に同様に、Ｓ１において、予め利用者により入力部６０から入力されＥＥＰＲＯＭ１２に記憶され保存された変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｔを、劣化信号生成プログラムで使用するため読み込み、ＲＡＭ１３の変数記憶エリアに記憶させるＣＰＵ１１が、本発明における「変移率設定手段」に相当する。
【００６１】
［ゲイン処理］
ゲイン処理は、基準信号の電圧値Ｖｉｎに対し、排気ガスの空燃比がリッチ側である場合とリーン側である場合とで異なる利得率ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎを掛け合わせて第１中間信号（電圧値Ｖｉｎｔ１）を得る処理である。本実施の形態の基準センサ２は、前述したように、λ型酸素センサである。λ型酸素センサは排気ガスの空燃比がリッチ側にあるとき、その排気ガスに曝されるλ型酸素センサの出力電圧値は約０．９Ｖを示し、リーン側にあるときには約０．０５Ｖを示すことが知られている。そして、混合気の目標空燃比が約１秒毎にリッチ側とリーン側とで交番された場合、λ型酸素センサ、すなわち基準センサ２の基準信号の電圧値は、図１９に示すように、約１秒毎に約０．０５Ｖと約０．９Ｖとの間で急峻な変化を示す。
【００６２】
図６に示すゲイン処理では、まず、Ａ／Ｄコンバータ３０を介して入力される基準センサ２の出力電圧が取得され、その電圧値が変数Ｖｉｎとして記憶される（Ｓ２１）。取得された基準信号の電圧値Ｖｉｎは、予め利用者に設定されたしきい値ＧａｉｎＴｈｒｅｓｈｏｌｄと比較される（Ｓ２２）。上記したように基準信号の電圧値は、約０．０５Ｖと約０．９Ｖとの間で変化するため、ＧａｉｎＴｈｒｅｓｈｏｌｄは通常、略中間の電圧値である０．４５Ｖに設定される。ＶｉｎがＧａｉｎＴｈｒｅｓｈｏｌｄよりも大きかった場合（Ｓ２２：ＹＥＳ）、取得された基準信号の電圧値は、空燃比がリッチ側にある場合の電圧値であると判断される。そして、基準信号のＧａｉｎＴｈｒｅｓｈｏｌｄを上回る分の電圧値に利得率ＲｉｃｈＧａｉｎを掛け合わせることでリッチ側のゲインのみを変更した第１中間信号（電圧値Ｖｉｎｔ１）が算出される（Ｓ２３）。具体的には、「ＧａｉｎＴｈｒｅｓｈｏｌｄ＋（Ｖｉｎ−ＧａｉｎＴｈｒｅｓｈｏｌｄ）×ＲｉｃｈＧａｉｎ」が計算され、その結果がＶｉｎｔ１に記憶される。ここで、基準信号に対し、空燃比がリッチ側である場合にのみゲインを変更した場合の例を、図２０に示す。図２０では、点線で示される基準信号（電圧値Ｖｉｎ）のグラフに対比させ、基準信号の電圧値がＧａｉｎＴｈｒｅｓｈｏｌｄとしての０．４５Ｖよりも大きな値を示す場合にのみ電圧値を減衰させた第１中間信号（電圧値Ｖｉｎｔ１）のグラフを１点鎖線で示している。従って基準信号の電圧値が０．４５Ｖ以下である場合には、第１中間信号のグラフは基準信号のグラフに一致した状態となる。なお、Ｓ２１で基準センサ２の基準信号を取得してＶｉｎとして記憶させるＣＰＵ１１が、本発明における「基準信号取得手段」に相当する。
【００６３】
一方、図６に示すように、ＶｉｎがＧａｉｎＴｈｒｅｓｈｏｌｄよりも小さかった場合（Ｓ２２：ＮＯ，Ｓ２５：ＹＥＳ）、同様に、取得された基準信号の電圧値は、空燃比がリーン側にある場合の電圧値であると判断される。そして、基準信号のＧａｉｎＴｈｒｅｓｈｏｌｄを下回る分の電圧値に利得率ＬｅａｎＧａｉｎを掛け合わせることでリーン側のゲインのみを変更した第１中間信号（電圧値Ｖｉｎｔ１）が算出される（Ｓ２６）。具体的には、「ＧａｉｎＴｈｒｅｓｈｏｌｄ−（ＧａｉｎＴｈｒｅｓｈｏｌｄ−Ｖｉｎ）×ＬｅａｎＧａｉｎ」が計算され、その計算結果がＶｉｎｔ１に記憶される。ここで、基準信号に対し、空燃比がリーン側である場合にのみゲインを変更した場合の例を、図２１に示す。図２１では、点線で示される基準信号（電圧値Ｖｉｎ）のグラフに対比させ、基準信号の電圧値がＧａｉｎＴｈｒｅｓｈｏｌｄとしての０．４５Ｖよりも小さな値を示す場合にのみ電圧値を増幅させた第１中間信号（電圧値Ｖｉｎｔ１）のグラフを１点鎖線で示している。従って基準信号の電圧値が０．４５Ｖ以上である場合には、第１中間信号のグラフは基準信号のグラフに一致した状態となる。なお、Ｓ２３またはＳ２６の処理で、基準信号のゲインを変更するＣＰＵ１１が、本発明における「ゲイン変更手段」に相当する。
【００６４】
また、図６に示すように、ＶｉｎがＧａｉｎＴｈｒｅｓｈｏｌｄと同じ値である場合には（Ｓ２２：ＮＯ，Ｓ２５：ＮＯ）、基準信号のゲインを変更する処理は行われず、その電圧値Ｖｉｎが第１中間信号の電圧値Ｖｉｎｔ１として記憶される（Ｓ２７）。このようにして第１中間信号の電圧値Ｖｉｎｔ１が求められた後には（Ｓ２３／Ｓ２６／Ｓ２７）、Ｓ２９に進む。そして、ゲインを変更したことによって電圧値Ｖｉｎｔ１が適正値、すなわち０Ｖ以上５Ｖ未満の範囲外となった場合、適正値の範囲内に収まるように補正が行われる。具体的には、Ｖｉｎｔ１が５Ｖ以上であれば（Ｓ２９：ＹＥＳ）、Ｖｉｎｔ１には４．９９Ｖが記憶される（Ｓ３０）。一方、Ｖｉｎｔ１が０Ｖ未満であれば（Ｓ２９：ＮＯ，Ｓ３１：ＹＥＳ）、Ｖｉｎｔ１には０Ｖが記憶される（Ｓ３３）。また、Ｖｉｎｔ１が０Ｖ以上５Ｖ未満であれば（Ｓ２９：ＮＯ，Ｓ３１：ＮＯ）、Ｖｉｎ１は適正値であると判断され、補正は行われない。こうしてＶｉｎｔ１に補正が行われた後には（Ｓ３０／Ｓ３３／Ｓ３１：ＮＯ）、メインルーチンに戻る。なお、上記した第１中間信号の電圧値の適正値の範囲は、任意に設定できるようにしてもよい。
【００６５】
［移動平均処理］
図５のメインルーチンでは、次に、移動平均処理のサブルーチンがコールされる（Ｓ５）。この移動平均処理では、後述する閾値チェック処理（Ｓ７）において、空燃比がリッチ側からリーン側、もしくはリーン側からリッチ側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値ｄｕを求める処理が行われる。もっとも、基準信号の短期間における大きな変動（揺らぎ）によって閾値チェック処理において誤判断が生じないように、微分値の平均値ｄｕは、今回の移動平均処理の実行時に求められる基準信号の微分値Ｖｄｉｆｆと、それ以前の９９回の移動平均処理の実行の度に求められた基準信号の微分値ｐｒｅｖＶｄｉｆｆ［１］〜ｐｒｅｖＶｄｉｆｆ［９９］とを合計した１００回分の微分値の平均値として算出される。
【００６６】
図７に示すように、移動平均処理では、このサブルーチンで用いられる変数ＶｄｉｆｆＳｕｍの初期化が行われ、０が記憶される（Ｓ４１）。次に、今回取得された基準信号の電圧値Ｖｉｎから、前回（１ｍｓ前に）取得された基準信号の電圧値ｐｒｅｖＶｉｎを差し引いた値が「Ｖｉｎ−ｐｒｅｖＶｉｎ」により算出され、今回取得した基準信号の微分値Ｖｄｉｆｆとして記憶される（Ｓ４２）。なお、前述したように基準信号は１ｍｓ毎に取得されるため、微分値Ｖｄｉｆｆは上記式「Ｖｉｎ−ｐｒｅｖＶｉｎ」により近似値として求められる。算出された微分値Ｖｄｉｆｆは、微分値の１００回分の平均値を求めるため、合算値ＶｄｉｆｆＳｕｍに記憶される（Ｓ４３）。
【００６７】
次のＳ４５〜Ｓ４９の処理では、過去９９回分の基準信号の微分値ｐｒｅｖＶｄｉｆｆ［１］〜ｐｒｅｖＶｄｉｆｆ［９９］を合算値ＶｄｉｆｆＳｕｍに順に加算する処理が行われる。まず、Ｓ４５で、変数ｉに１が記憶される（Ｓ４５）。次に、合算値ＶｄｉｆｆＳｕｍにｉ回前（ここでは１回前）に算出した微分値ｐｒｅｖＶｄｉｆｆ［ｉ（１）］を加算した値が、新しいＶｄｉｆｆＳｕｍとして記憶される（Ｓ４６）。そして変数ｉの値を１インクリメントして２とした後（Ｓ４７）、ｉ≦９９を満たすのでＳ４６に戻り（Ｓ４９：ＹＥＳ）、同様にＶｄｉｆｆＳｕｍにｐｒｅｖＶｄｉｆｆ［ｉ（２）］を加算する処理が行われる。この一連の処理は、ｉの値が９９を超えると終了され（Ｓ４９：ＮＯ）、処理後には、ＶｄｉｆｆＳｕｍに、Ｖｄｉｆｆ＋ｐｒｅｖＶｄｉｆｆ［１］＋ｐｒｅｖＶｄｉｆｆ［２］＋・・・＋ｐｒｅｖＶｄｉｆｆ［９９］を計算した結果が記憶されることとなる。従って、今回の基準信号の微分値と、過去９９回分の基準信号の微分値とを合わせ１００回分の微分値の合算値がＶｄｉｆｆＳｕｍとして記憶されているので、Ｓ５０では、これを１００で割って平均値を算出し、その結果が微分値の平均値ｄｕとして記憶される（Ｓ５０）。
【００６８】
次のＳ５１〜Ｓ５７の処理では、次回の移動平均処理の実行時において微分値の平均値の算出に用いるため、微分値ｐｒｅｖＶｄｉｆｆ［ｉ］を更新する処理が行われる。まず、Ｓ５１で、変数ｉに９９が記憶される（Ｓ５１）。次に、ｐｒｅｖＶｄｉｆｆ［ｉ（９９）］にｐｒｅｖＶｄｉｆｆ［ｉ−１（９８）］の値を記憶する処理が行われる（Ｓ５３）。そして、ｉの値が１デクリメントされて９８となり（Ｓ５４）、ｉ≧２を満たすのでＳ５３に戻り（Ｓ５５：ＹＥＳ）、同様にｐｒｅｖＶｄｉｆｆ［ｉ（９８）］にｐｒｅｖＶｄｉｆｆ［ｉ−１（９７）］を記憶する処理が行われる。この一連の処理は、ｉの値が２未満となるまで継続され（Ｓ５５：ＮＯ）、ｐｒｅｖＶｄｉｆｆ［９９］〜ｐｒｅｖＶｄｉｆｆ［２］までの値がそれまでのｐｒｅｖＶｄｉｆｆ［９８］〜ｐｒｅｖＶｄｉｆｆ［１］の値でそれぞれ上書き記憶され、更新される。そして最後に今回算出された微分値ＶｄｉｆｆがｐｒｅｖＶｄｉｆｆ［１］に上書き記憶されて、更新が終了する（Ｓ５７）。更に、基準信号の電圧値Ｖｉｎが、次回の移動平均処理の実行時にＳ４２で利用される、前回の基準信号の電圧値ｐｒｅｖＶｉｎとして記憶され（Ｓ５８）、メインルーチンに戻る。
【００６９】
［ピーク値検出処理］
図５のメインルーチンでは、次に、ピーク値検出処理のサブルーチンがコールされる（Ｓ６）。このピーク値検出処理では、後述する閾値チェック処理（Ｓ７）において、空燃比がリーン側からリッチ側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値ｄｕに対する閾値ＵｐＴｈｒｅｓｈｏｌｄと、空燃比がリッチ側からリーン側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値ｄｕに対する閾値ＤｏｗｎＴｈｒｅｓｈｏｌｄとを求める処理が行われる。もっとも、微分値の平均値ｄｕの推移はセンサの種類が異なれば違う値を示すため、１秒毎に、その１秒間の微分値の平均値ｄｕの最大値（立上りピーク値）および最小値（立下りピーク値）を求める。そして、過去３秒分の立上り，立下りピーク値の平均値を元に閾値ＵｐＴｈｒｅｓｈｏｌｄ，ＤｏｗｎＴｈｒｅｓｈｏｌｄを算出することで、そのセンサに合わせた閾値を得る処理が行われる。
【００７０】
図８に示すように、ピーク値検出処理では、ピーク値のサンプリングを行う１秒間を計時するために用いられるカウント値ＳｔｅｐＣｏｕｎｔが確認され、１０００未満であれば、ピーク値のサンプリング中であると判断される（Ｓ６１：ＹＥＳ）。そして、移動平均処理で求められた微分値の平均値ｄｕが、サンプリングを行う１秒間の最大値として記憶される立上りピーク値ｔｍｐＵｐＰｅａｋよりも大きければ（Ｓ６２：ＹＥＳ）、ｔｍｐＵｐＰｅａｋにｄｕが記憶され、立上りピーク値が更新される（Ｓ６３）。一方、微分値の平均値ｄｕが立上りピーク値ｔｍｐＵｐＰｅａｋ以下であり（Ｓ６２：ＮＯ）、サンプリングを行う１秒間の最小値として記憶される立下りピーク値ｔｍｐＤｏｗｎＰｅａｋよりも小さければ（Ｓ６５：ＹＥＳ）、同様に、ｔｍｐＤｏｗｎＰｅａｋにｄｕが記憶され、立下りピーク値が更新される（Ｓ６６）。また、微分値の平均値ｄｕが立上りピーク値ｔｍｐＵｐＰｅａｋ以下（Ｓ６２：ＮＯ）、であり、更に立下りピーク値ｔｍｐＤｏｗｎＰｅａｋ以上でもある場合（Ｓ６５：ＮＯ）、ピーク値の更新は行われない。そして、上記いずれの処理が行われた後でも（Ｓ６３／Ｓ６６／Ｓ６５：ＮＯ）、ＳｔｅｐＣｏｕｎｔのインクリメントが行われ（Ｓ６７）、その後メインルーチンに戻る。
【００７１】
ところで、前述したように、図５のメインルーチンのＳ３〜Ｓ１３の処理は１ｍｓ毎に実行される。従って、図８のピーク値検出処理においても１ｍｓ毎にＳ６７の処理が実行されることとなり、ＳｔｅｐＣｏｕｎｔは増加し続ける。Ｓ１の初期化処理（図５参照）後、あるいは後述するＳ７０でＳｔｅｐＣｏｕｎｔがリセットされた後、メインルーチンの処理が１ｍｓ毎に繰り返し実行され、１秒が経過してＳｔｅｐＣｏｕｎｔが１０００となった場合には（Ｓ６１：ＮＯ）、ピーク値の平均値算出処理のサブルーチンがコールされる（Ｓ６９）。
【００７２】
図９に示すように、ピーク値の平均値算出処理では、まず、直近の１秒間に検出された立上りピーク値ｔｍｐＵｐＰｅａｋが、前回の１秒間に検出された立上りピーク値ｐｒｅｖＵｐＰｅａｋ１の１／３より大きいか否か、確認が行われる（Ｓ９１）。ｔｍｐＵｐＰｅａｋがｐｒｅｖＵｐＰｅａｋ１の１／３以下の値を示した場合（Ｓ９１：ＮＯ）、今回検出された１秒間の立上りピーク値ｔｍｐＵｐＰｅａｋはノイズであったと判断される。そして前回の１秒間に検出された立上りピーク値ｐｒｅｖＵｐＰｅａｋ１を０．９倍した値がｔｍｐＵｐＰｅａｋとして記憶され（Ｓ９２）、Ｓ９３に進む。また、ｔｍｐＵｐＰｅａｋがｐｒｅｖＵｐＰｅａｋ１の１／３より大きい値を示した場合には（Ｓ９１：ＹＥＳ）、そのままＳ９３に進む。Ｓ９３では、最新の３回分の立上りピーク値の平均値が求められる。具体的には「（ｔｍｐＵｐＰｅａｋ＋ｐｒｅｖＵｐＰｅａｋ１＋ｐｒｅｖＵｐＰｅａｋ２）／３」が計算され、その計算結果が立上りピーク値平均値ＵｐＰｅａｋに記憶される（Ｓ９３）。
【００７３】
立下りピーク値についても同様の処理が行われる。すなわち、直近の１秒間に検出された立下りピーク値ｔｍｐＤｏｗｎＰｅａｋが、前回の１秒間に検出された立下りピーク値ｐｒｅｖＤｏｗｎＰｅａｋ１の１／３以上の値を示した場合（Ｓ９５：ＮＯ）、今回検出された１秒間の立下りピーク値ｔｍｐＤｏｗｎＰｅａｋがノイズであったと判断される。そして前回の１秒間に検出された立下りピーク値ｐｒｅｖＤｏｗｎＰｅａｋ１を０．９倍した値がｔｍｐＤｏｗｎＰｅａｋとして記憶され（Ｓ９６）、Ｓ９７に進む。ｔｍｐＤｏｗｎＰｅａｋがｐｒｅｖＤｏｗｎＰｅａｋ１の１／３より小さい値を示した場合には（Ｓ９５：ＹＥＳ）、そのままＳ９７に進む。Ｓ９７では、同様に、最新の３回分の立下りピーク値の平均値が求められる。具体的には「（ｔｍｐＤｏｗｎＰｅａｋ＋ｐｒｅｖＤｏｗｎＰｅａｋ１＋ｐｒｅｖＤｏｗｎＰｅａｋ２）／３」が計算され、その計算結果が立下りピーク値平均値ＤｏｗｎＰｅａｋに記憶される（Ｓ９７）。
【００７４】
次いで、１秒後に行われる次回のピーク値の平均値算出処理の実行時において立上りピーク値の平均値、および立下りピーク値の平均値の算出に用いるため、各変数が更新される。具体的には、前回の１秒間に検出された立上り，立下りピーク値ｐｒｅｖＵｐＰｅａｋ１，ｐｒｅｖＤｏｗｎＰｅａｋ１が、前々回の１秒間に検出された立上り，立下りピーク値ｐｒｅｖＵｐＰｅａｋ２，ｐｒｅｖＤｏｗｎＰｅａｋ２として上書き記憶される。そして、直近の１秒間に検出された立上り，立下りピーク値ｔｍｐＵｐＰｅａｋ，ｔｍｐＤｏｗｎＰｅａｋが、前回の１秒間に検出された立上り，立下りピーク値ｐｒｅｖＵｐＰｅａｋ１，ｐｒｅｖＤｏｗｎＰｅａｋ１として上書き記憶される。更に、ｔｍｐＵｐＰｅａｋおよびｔｍｐＤｏｗｎＰｅａｋには０が記憶され、立上りピーク値および立下りピーク値がリセットされる（Ｓ９９）。
【００７５】
その後、図８に示すピーク値検出処理サブルーチンに戻ると、次に、ＳｔｅｐＣｏｕｎｔに０が記憶され、次の１秒間の立上り，立下りピーク値の検出を行うための計時がリセットされる（Ｓ７０）。次のＳ７１〜Ｓ８１の処理では、ピーク値の平均値算出処理で求められた立上り，立下りピーク値平均値ＵｐＰｅａｋ，ＤｏｗｎＰｅａｋがそれぞれ適正値の範囲内に収まるように補正が行われる。具体的には、ＵｐＰｅａｋは、０以上０．００６７以下の値を示せば（Ｓ７１：ＮＯ，Ｓ７４：ＮＯ）、適正値であると判断される。そしてＵｐＰｅａｋが０未満であれば（Ｓ７１：ＹＥＳ）、ＵｐＰｅａｋには０．００５が記憶される（Ｓ７３）。一方、ＵｐＰｅａｋが０．００６７より大きければ（Ｓ７１：ＮＯ，Ｓ７４：ＹＥＳ）、ＵｐＰｅａｋには０．００６７が記憶される（Ｓ７５）。
【００７６】
ＵｐＰｅａｋの補正が行われた後には（Ｓ７３／Ｓ７５／Ｓ７４：ＮＯ）、Ｓ７７に進み、ＤｏｗｎＰｅａｋについても同様の補正が行われる。すなわち、ＤｏｗｎＰｅａｋが−０．００６７以上０以下の値を示せば（Ｓ７７：ＮＯ，Ｓ７９：ＮＯ）、適正値であると判断される。そしてＤｏｗｎＰｅａｋが０より大きければ（Ｓ７７：ＹＥＳ）、ＤｏｗｎＰｅａｋには−０．００５が記憶される（Ｓ７８）。一方、ＤｏｗｎＰｅａｋが−０．００６７未満であれば（Ｓ７７：ＮＯ，Ｓ７９：ＹＥＳ）、ＤｏｗｎＰｅａｋには−０．００６７が記憶される（Ｓ８１）。こうしてＤｏｗｎＰｅａｋについても補正が行われた後には（Ｓ７８／Ｓ８１／Ｓ７９：ＮＯ）、Ｓ８２に進む。
【００７７】
Ｓ８２の処理では、次の閾値チェック処理（Ｓ７）において用いられる閾値ＵｐＴｈｒｅｓｈｏｌｄ，ＤｏｗｎＴｈｒｅｓｈｏｌｄを求める処理が行われる（Ｓ８２）。本実施の形態では、ＵｐＴｈｒｅｓｈｏｌｄとして、立上りピーク値平均値ＵｐＰｅａｋの０．１５倍の値が設定され、ＤｏｗｎＴｈｒｅｓｈｏｌｄとしては、立下りピーク値平均値ＤｏｗｎＰｅａｋの０．１５倍の値が設定される構成となっている。その後メインルーチンに戻る。なお、上記のように求められたＵｐＴｈｒｅｓｈｏｌｄおよびＤｏｗｎＴｈｒｅｓｈｏｌｄは、ＳｔｅｐＣｏｕｎｔが１０００未満であるうちは、最後にＳ８２の処理が実行された際に算出された値が保存され、次の閾値チェック処理で利用されることとなる。
【００７８】
［閾値チェック処理］
次に、図５のメインルーチンでは、閾値チェック処理のサブルーチンがコールされる（Ｓ７）。閾値チェック処理は、移動平均処理で求めた基準信号の微分値の平均値ｄｕを、ピーク値検出処理で求めた閾値ＵｐＴｈｒｅｓｈｏｌｄ，ＤｏｗｎＴｈｒｅｓｈｏｌｄと比較して、立上り状態にあるか立下り状態にあるかを判定するための処理である。
【００７９】
図１０に示すように、閾値チェック処理では、前回（１ｍｓ前）、閾値チェック処理が実行された際に判定された空燃比の変化の検出結果を示すフラグｓｔａｔｅの値を記憶したｐｒｅｖＳｔａｔｅ１を、今回の処理において新たに用いるため、ｓｔａｔｅにコピーし記憶させる処理が行われる（Ｓ１０１）。次に、ｄｕとＵｐＴｈｒｅｓｈｏｌｄが比較され、ｄｕがＵｐＴｈｒｅｓｈｏｌｄを上回った場合には（Ｓ１０２：ＹＥＳ）、基準信号の電圧値が急激に上昇しており、空燃比がリーン側からリッチ側に変更された立上り状態にあると判定され、ｓｔａｔｅに１が記憶される（Ｓ１０３）。同様に、ｄｕがＤｏｗｎＴｈｒｅｓｈｏｌｄを下回った場合には（Ｓ１０２：ＮＯ，Ｓ１０５：ＹＥＳ）、基準信号の電圧値が急激に下降しており、空燃比がリッチ側からリーン側に変更された立下り状態にあると判定され、ｓｔａｔｅに−１が記憶される（Ｓ１０６）。そして、ｄｕがＤｏｗｎＴｈｒｅｓｈｏｌｄ以上ＵｐＴｈｒｅｓｈｏｌｄ以下であれば（Ｓ１０２：ＮＯ，Ｓ１０５：ＮＯ）、前回判定されたフラグの値を変更しない。このように、空燃比の状態について判定がなされた後には（Ｓ１０３／Ｓ１０６／Ｓ１０５：ＮＯ）、次回の閾値チェック処理で利用するため現在のｓｔａｔｅの値をｐｒｅｖＳｔａｔｅ１に記憶させて保存してから（Ｓ１０７）、メインルーチンに戻る。なお、Ｓ１０２においてｄｕがＵｐＴｈｒｅｓｈｏｌｄを上回り、立上り状態と判定し、ｓｔａｔｅの値として新たに１を設定し直す時点が、本発明における「リーンリッチ変化開始点」であり、Ｓ１０３においてｄｕがＤｏｗｎＴｈｒｅｓｈｏｌｄを下回り、立下り状態と判定し、ｓｔａｔｅの値として新たに−１を設定し直す時点が、本発明における「リッチリーン変化開始点」である。そして、このＳ１０２，Ｓ１０３の判定処理を行うＣＰＵ１１が、本発明における「空燃比変化開始点検出手段」に相当する。
【００８０】
ここで、図１９のグラフを参照し、閾値チェック処理の動作の具体例について説明する。目標空燃比がリーン側からリッチ側に変更されると、基準信号の電圧値（出力電圧）は、区間［Ａ−Ｂ］に示されるように急激に上昇する。つまり、基準信号の微分値の平均値ｄｕは大きな値となり、この区間ではｄｕ＞ＵｐＴｈｒｅｓｈｏｌｄを満たし、立上り状態にあると判定され、ｓｔａｔｅに１が記憶されることとなる。そして基準信号の電圧値が約０．９Ｖに達して安定する区間［Ｂ−Ｃ］では、基準信号の微分値の平均値ｄｕは０に近づくが、ＤｏｗｎＴｈｒｅｓｈｏｌｄを下回ることはない。この区間では、ｐｒｅｖＳｔａｔｅ１からコピーされる前回のｓｔａｔｅの値がそのまま維持されるため、ｓｔａｔｅは１であって立上り状態が維持される。次に目標空燃比がリッチ側からリーン側に変更されると、区間［Ｃ−Ｄ］に示されるように、基準信号の電圧値が急激に下降する。基準信号の微分値の平均値ｄｕは負側で大きな値となり、この区間ではｄｕ＜ＤｏｗｎＴｈｒｅｓｈｏｌｄを満たし、立下り状態にあると判定され、ｓｔａｔｅに−１が記憶されることとなる。そして基準信号の電圧値が約０．０５Ｖとなって安定する区間［Ｄ−Ｅ］では、基準信号の微分値の平均値ｄｕは０に近づくが、ＵｐＴｈｒｅｓｈｏｌｄを下回ることはない。この区間では、上記同様、ｐｒｅｖＳｔａｔｅ１からコピーされる前回のｓｔａｔｅの値がそのまま維持されるため、ｓｔａｔｅは−１であって立下り状態が維持されることとなる。このようにして判定された空燃比の状態は、Ｓ９の応答特性処理、Ｓ１０の第１オーバーシュートチェック処理およびＳ１３の第２オーバーシュートチェック処理で利用される。
【００８１】
［応答特性処理］
次に、図５のメインルーチンでは、応答特性処理のサブルーチンがコールされる（Ｓ９）。応答特性処理は、空燃比が立上り状態にある場合と立下り状態にある場合とで異なる変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔを用い、基準信号（電圧値Ｖｉｎ）（本実施の形態ではゲイン処理後の第１中間信号（電圧値Ｖｉｎｔ１））の応答特性を変更した第２中間信号（電圧値Ｖｉｎｔ２）を得る処理である。
【００８２】
図１１に示す応答特性処理では、まず、閾値チェック処理で得たフラグｓｔａｔｅの値が参照され、０より大きいか否か確認が行われる（Ｓ１１１）。立上り状態にある場合、ｓｔａｔｅは１であり（Ｓ１１１：ＹＥＳ）、変移率としてリーンリッチ変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔが選択される。そして、前述した数式（２）を用い、係数αが計算され、計算結果が記憶される（Ｓ１１２）。一方、立下り状態にあり、ｓｔａｔｅが−１だった場合も同様で（Ｓ１１１：ＮＯ）、変移率としてリッチリーン変移率ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔが選択される。そして、前述した数式（３）を用い、係数αが計算され、計算結果が記憶される（Ｓ１１３）。
【００８３】
そして前述した数式（１）を用い、第１中間信号の電圧値Ｖｉｎｔ１の応答特性を変更した第２中間信号の電圧値Ｖｉｎｔ２が算出される（Ｓ１１５）。このとき、Ｓ１１２またはＳ１１３の処理の実行により算出された係数αと、前回の応答特性処理の実行時に求められたＶｉｎｔ２を記憶したｐｒｅｖＶｉｎｔ２とが数式（１）の変数として用いられる。その後メインルーチンに戻る。なお、Ｓ１１２またはＳ１１３の処理で算出した係数αを用い、Ｓ１１５の処理で基準信号（本実施の形態では第１中間信号）の応答特性を変更するＣＰＵ１１が、本発明における「変移時間変更手段」に相当する。
【００８４】
［第１オーバーシュートチェック処理］
ところで、空燃比が変更された場合、第２中間信号の算出にそれまで用いられていた変移率（ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔもしくはＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ）が他方の変移率（ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔもしくはＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ）に置き換えられることとなる。この変移率が置き換えられるタイミングは、空燃比の変更に伴う基準信号の変化が検出されたタイミングであり、基準信号の電圧値Ｖｉｎ（本実施の形態では第１中間信号の電圧値Ｖｉｎｔ１）が、既に大きく変化（増加または減衰）を始めている場合がある。このため、上記タイミングにおいて、算出される第２中間信号の電圧値Ｖｉｎｔ２の変化方向が一時的に逆転することがある。例えば、空燃比がリーン側からリッチ側に変更された場合、第２中間信号の電圧値Ｖｉｎｔ２は低電位から高電位に変化するが、上記タイミングにおいて、一時的に高電位から低電位に変化し、その信号波形が波打つように変化する場合がある。その一例を、図２４のグラフに示す。
【００８５】
図２４では、Ｆタイミング以前において、空燃比がリーン側であることが検出されて立下り状態と判定され、ｓｔａｔｅには−１が記憶されており、第２中間信号（電圧値Ｖｉｎｔ２）として出力される信号には、ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔを用いて算出された立下り時の信号（図２４では２点鎖線で示し、ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ＝０であるので基準信号（図示しない）と一致している。）となる。そして空燃比がリッチ側に変更されたことが検出されたＦタイミング以降は、立上り状態と判定されてｓｔａｔｅが１となるので、第２中間信号（電圧値Ｖｉｎｔ２）として出力される信号には、ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔを用いて算出された立上り時の信号（図２４では１点鎖線で示す。）となる。このＦタイミングにおいて、立下り時の第２中間信号の電圧値Ｖｉｎｔ２は、立上り時の第２中間信号の電圧値Ｖｉｎｔ２よりも高い値であり、両者を結合して出力される第２中間信号（電圧値Ｖｉｎｔ２）は、Ｆタイミングにおいて、本来なら立上り状態であるので電圧値の変化が上昇となるところが大きく下降し（図中矢印で示す。）、その後上昇していくグラフを描くこととなる。
【００８６】
第１オーバーシュートチェック処理では、このＦタイミング以後、立上り状態にありながら電圧値がＦタイミングのときの値よりも減少した現象の補正が行われ、空燃比がリッチ側からリーン側に変更された場合についても同様に補正が行われる。すなわち、空燃比がリーン側からリッチ側に変更され、基準信号の電圧値が上昇中にある場合に、一時的な電圧値の下降が生ずることがなく、また、空燃比がリッチ側からリーン側に変更され、基準信号の電圧値が下降中にある場合に、一時的な電圧値の上昇が生ずることがないように、電圧値の補正が行われる。図２４を参照した具体例で示すと、Ｆタイミング直前（１ｍｓ前）の立下り時のＶｉｎｔ２の値をＶｂａｓｅとして保存し、Ｇタイミングにおいて立上り時のＶｉｎｔ２の値がＶｂａｓｅに一致するまで、ＦタイミングからＧタイミングまでの間の立上り時のＶｉｎｔ２の値をＶｂａｓｅで置換することで補正が行われる。これにより、図２５に示す例では、第１オーバーシュートチェック処理の結果得られる第３中間信号（電圧値Ｖｉｎｔ３）の描く曲線（図２５では実線で示される。）は、ＦタイミングからＧタイミングまでの間、電圧値が一定（Ｖｂａｓｅ）の直線で置換されたグラフとなる。
【００８７】
上記のようにＶｉｎｔ２を補正したＶｉｎｔ３を得るため、図５のメインルーチンにおいて第１オーバーシュートチェック処理のサブルーチンがコールされる（Ｓ１０）。第１オーバーシュートチェック処理では、図１２に示すように、まず、閾値チェック処理で得たフラグｓｔａｔｅの値が参照され、０より大きいか否か確認が行われる（Ｓ１２１）。図２４に示したグラフを例に説明すると、Ｆタイミング（図２４参照）以前には、空燃比がリッチ側からリーン側に変更されたと検出された状態（立下り状態）にあり、ｓｔａｔｅは−１であるので（Ｓ１２１：ＮＯ）、応答特性立下り処理のサブルーチンがコールされる（Ｓ１２３）。
【００８８】
図１４に示す応答特性立下り処理では、前回（１ｍｓ前）の空燃比の移行状態を示すフラグｓｔａｔｅの値を記憶して保存したｐｒｅｖＳｔａｔｅ２の値が参照され、０より大きいか否か確認が行われる（Ｓ１５１）。Ｆタイミング以前には、ｐｒｅｖＳｔａｔｅ２が−１であるので（Ｓ１５１：ＮＯ）、前回も今回も空燃比はリーン側にあり、変更されていないと判断され、そのままＳ１５５に進む。空燃比の状態（ｓｔａｔｅの値）に変化が生ずる前にはＣｈｅｃｋＦｌａｇの値が０となっており（Ｓ１５５：ＮＯ）、第２中間信号の電圧値Ｖｉｎｔ２はそのまま第３中間信号の電圧値Ｖｉｎｔ３として記憶されて（Ｓ１６１）、図１２に示す第１オーバーシュートチェック処理のサブルーチンに戻る。そして、次回の第１オーバーシュートチェック処理で用いるため、ｓｔａｔｅの値がｐｒｅｖＳｔａｔｅ２に記憶されて保存される。更に第２中間信号の電圧値Ｖｉｎｔ２を次回の応答特性処理の実行の際に利用するため、Ｖｉｎｔ２の値がｐｒｅｖＶｉｎｔ２に記憶されて保存され（Ｓ１２５）、メインルーチンに戻る。
【００８９】
時間が経過し、メインルーチンの処理が１ｍｓ毎に繰り返し実行されてＦタイミング（図２４参照）となったときには、空燃比がリーン状態からリッチ状態に変更されたことが検出されてｓｔａｔｅには１が記憶され、図１２に示す第１オーバーシュートチェック処理において応答特性立上り処理のサブルーチンがコールされる（Ｓ１２１：ＹＥＳ，Ｓ１２２）。
【００９０】
図１３に示す応答特性立上り処理では、Ｆタイミング（図２４参照）以前のｓｔａｔｅの値を記憶したｐｒｅｖＳｔａｔｅ２の値は−１であるので（Ｓ１５１：ＹＥＳ）、空燃比の状態がリーン側からリッチ側に変更されたと判断される。そして、Ｖｉｎｔ２の値の補正が必要なときに置き換えにより補正するための補正値Ｖｂａｓｅとして、前回（１ｍｓ前）算出された立下り時の第２中間信号の電圧値Ｖｉｎｔ２を保存したｐｒｅｖＶｉｎｔ２の値がコピーされ記憶される（Ｓ１３２）。更にＣｈｅｃｋＦｌａｇに１が記憶される（Ｓ１３３）。
【００９１】
次に、Ｓ１３５ではＣｈｅｃｋＦｌａｇが１であるので（Ｓ１３５：ＹＥＳ）、Ｖｉｎｔ２の値の補正を行う必要があるか判定するため、Ｖｉｎｔ２がＶｂａｓｅより小さいか否かの確認が行われる（Ｓ１３６）。Ｆタイミングでは、ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔを用いて算出されたＶｉｎｔ２の値がＶｂａｓｅよりも小さいのでＶｉｎｔ２に対し補正を行う必要があり（Ｓ１３６：ＹＥＳ）、Ｖｉｎｔ３にＶｂａｓｅの値が記憶されて（Ｓ１３７）、第１オーバーシュートチェック処理のサブルーチンに戻る。
【００９２】
Ｆタイミング以後、空燃比の状態がリッチ側であるためｓｔａｔｅは１を示し、第１オーバーシュートチェック処理では継続して応答特性立上り処理のサブルーチンがコールされる（図１２：Ｓ１２１：ＹＥＳ）。立上り状態の継続時にはｐｒｅｖＳｔａｔｅ２にも１が記憶されているため（Ｓ１３１：ＮＯ）、Ｖｂａｓｅの値はＦタイミングにおいて応答特性立上り処理が実行されたときに記憶された値が維持される。更にＣｈｅｃｋＦｌａｇにも１が記憶された状態が維持されるため（Ｓ１３５：ＹＥＳ）、ＦタイミングからＧタイミングまでの期間のように、Ｖｉｎｔ２（図２４参照）はＶｂａｓｅで置換され（Ｓ１３６：ＹＥＳ）、上記同様、直線近似されたＶｉｎｔ３（図２５参照）が得られる（Ｓ１３７）。
【００９３】
更に時間が経過し、Ｇタイミングとなったときには、Ｖｉｎｔ２の値がＶｂａｓｅ以上となるため、図１３に示す応答特性立上り処理のＳ１３６においてＳ１３９に進む（Ｓ１３６：ＮＯ）。Ｖｉｎｔ２を補正する必要がなくなるため、Ｖｉｎｔ３にはＶｉｎｔ２が記憶され（Ｓ１３９）、更にＣｈｅｃｋＦｌａｇには０が記憶されて（Ｓ１４０）、第１オーバーシュートチェック処理のサブルーチンに戻る。
【００９４】
Ｇタイミング以後も、空燃比の状態がリッチ側であるためｓｔａｔｅもｐｒｅｖＳｔａｔｅ２も１となっている。第１オーバーシュートチェック処理では継続して応答特性立上り処理のサブルーチンがコールされる（図１２：Ｓ１２１：ＹＥＳ）。そして応答特性立上り処理では、ＣｈｅｃｋＦｌａｇが０となっているのでＶｉｎｔ２がそのままＶｉｎｔ３に記憶されて（Ｓ１３１：ＮＯ，Ｓ１３５：ＮＯ，Ｓ１４１）、第１オーバーシュートチェック処理のサブルーチンに戻る。
【００９５】
このようにして生成される第３中間信号（電圧値Ｖｉｎｔ３）の描くグラフの一例を図２３に示す。図２３では、基準信号（電圧値Ｖｉｎ）に対し、ゲイン処理および空燃比のリーン側からリッチ側への変更に伴う応答特性処理を行っていない。そして、空燃比のリッチ側からリーン側への変更が検出された際（図１９の区間［Ｃ−Ｅ］に相当する。）に生成される第２中間信号（電圧値Ｖｉｎｔ２）に対し第１オーバーシュートチェック処理を行って生成した第３中間信号（電圧値Ｖｉｎｔ３）の描くグラフ（図中１点鎖線で示す。）を、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示す。）と対比させた。リッチリーン変移率ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔを用いて算出されたことによって応答特性が劣化した第３中間信号では、基準信号の電圧値Ｖｉｎの高電位から低電位への変化と比べ、電圧値Ｖｉｎｔ３の高電位から低電位への変化に時間がかかっている様子がわかる。そして第１オーバーシュートチェック処理によって、Ｖｉｎｔ３が高電位から低電位に変化する途中で一時的に低電位から高電位に変化する現象が生じないように補正された様子も確認できる。
【００９６】
なお、図１４に示す応答特性立下り処理は、上記説明した図１３に示す応答特性立上り処理に対し対称となる処理を、空燃比がリッチ側からリーン側へ変更された際に行うものである。従って、応答特性立上り処理におけるＳ１３１〜Ｓ１４１の処理はそれぞれ、応答特性立下り処理におけるＳ１５１〜Ｓ１６１の処理にそれぞれ対応し、Ｓ１５１およびＳ１５６における不等号の向きが逆となる以外、同一の処理内容となる。具体的には図１４に示すように、空燃比がリッチ側からリーン側に変更されたことが基準信号の変化に基づき検出されたタイミング（ｓｔａｔｅ＝−１，ｐｒｅｖＳｔａｔｅ２＝１）には、（Ｓ１２１：ＮＯ，Ｓ１２３（図１２参照），Ｓ１５１：ＹＥＳ）、前回（１ｍｓ前）のＶｉｎｔ２を保存したｐｒｅｖＶｉｎｔ２がＶｂａｓｅに記憶され（Ｓ１５２）、ＣｈｅｃｋＦｌａｇに１が記憶される（Ｓ１５３）。そしてＶｉｎｔ２の値がＶｂａｓｅより大きく補正を行う必要があれば（Ｓ１５５：ＹＥＳ，Ｓ１５６：ＹＥＳ）、Ｖｉｎｔ２をＶｂａｓｅで置換するため、ＶｂａｓｅがＶｉｎｔ３に記憶される（Ｓ１５７）。その後もＶｂａｓｅによるＶｉｎｔ２の置換が継続されるが（Ｓ１５１：ＮＯ，Ｓ１５５：ＹＥＳ，Ｓ１５６：ＹＥＳ，Ｓ１５７）、ＶｂａｓｅがＶｉｎｔ２以下の値となったタイミング以降は（Ｓ１５６：ＮＯ）、Ｖｉｎｔ２を補正する必要がなくなるため、Ｖｉｎｔ３にはＶｉｎｔ２が記憶され（Ｓ１５９）、更にＣｈｅｃｋＦｌａｇには０が記憶される（Ｓ１６０）。それ以後も空燃比の状態はリーン側であるためｓｔａｔｅもｐｒｅｖＳｔａｔｅ２も−１であり、（Ｓ１２１：ＮＯ，Ｓ１２３（図１２参照），Ｓ１５１：ＮＯ）、ＣｈｅｃｋＦｌａｇも０となっているのでＶｉｎｔ２がそのままＶｉｎｔ３として記憶される（Ｓ１５５：ＮＯ，Ｓ１６１）。
【００９７】
このときに生成される第３中間信号（電圧値Ｖｉｎｔ３）の描くグラフの一例を図２２に示す。図２２では、基準信号（電圧値Ｖｉｎ）に対し、ゲイン処理および空燃比のリッチ側からリーン側への変更に伴う応答特性処理を行っていない。そして、空燃比のリーン側からリッチ側への変更が検出された際（図１９の区間［Ａ−Ｃ］に相当する。）に生成される第２中間信号（電圧値Ｖｉｎｔ２）に対し第１オーバーシュートチェック処理を行って生成した第３中間信号（電圧値Ｖｉｎｔ３）の描くグラフ（図中１点鎖線で示す。）を、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示す。）と対比させた。リーンリッチ変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔを用いて算出されたことによって応答特性が劣化した第３中間信号では、基準信号の電圧値Ｖｉｎの低電位から高電位への変化と比べ、電圧値Ｖｉｎｔ３の低電位から高電位への変化に時間がかかっている様子がわかる。
【００９８】
［遅延処理］
第１オーバーシュートチェック処理が終了し、図５のメインルーチンに戻ると、次に、遅延処理のサブルーチンがコールされる（Ｓ１１）。遅延処理は、目標空燃比がリーン側からリッチ側、あるいはリッチ側からリーン側に変更されたことに伴い基準信号（電圧値Ｖｉｎ）（本実施の形態では応答特性処理後の第３中間信号（電圧値Ｖｉｎｔ３））が変化し始める開始点を、リーンリッチ遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅまたはリッチリーン遅延時間ＬｅａｎＤｅｌａｙＴｉｍｅで設定された時間分遅いタイミングに出力されるように遅延させた第４中間信号（電圧値Ｖｉｎｔ４）または第５中間信号（電圧値Ｖｉｎｔ５）を得る処理である。
【００９９】
図１５に示す遅延処理では、まず、応答特性処理、第１オーバーシュートチェック処理を経て得られた第３中間信号の電圧値Ｖｉｎｔ３が、ｐｒｅｖＶｉｎｔ３［０］に記憶される（Ｓ１７１）。前述したように、ｐｒｅｖＶｉｎｔ３［ｉ］（ただし、ｉ＝０，１，２，・・・，６００）は最大６００ｍｓまでのＶｉｎｔ３の値を記憶して保存するための６０１個の記憶エリアであり、前回（１ｍｓ前）の遅延処理の実行時のＶｉｎｔ３の値から、６００回前（６００ｍｓ前）の遅延処理の実行時のＶｉｎｔ３の値までが、対応する記憶エリアに保存されている。今回の遅延処理の実行時のＶｉｎｔ３の値は、上記のように、ｐｒｅｖＶｉｎｔ３［０］に保存される。なお、Ｓ１７１で、基準信号（本実施の形態では第３中間信号）の電圧値Ｖｉｎｔ３をｐｒｅｖＶｉｎｔ３［０］に記憶することで、後のＳ１７５〜Ｓ１７９の処理で取得順にｐｒｅｖＶｉｎｔ３［ｉ］に取得順に記憶させるＣＰＵ１１が、本発明における「基準信号記憶手段」に相当する。
【０１００】
次に、目標空燃比がリーン側からリッチ側へ変更されたことに伴い基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅが参照される。ＲｉｃｈＤｅｌａｙＴｉｍｅは０〜６００ｍｓの範囲内で予め利用者に設定された遅延時間であり、ｐｒｅｖＶｉｎｔ３［ＲｉｃｈＤｅｌａｙＴｉｍｅ］で指定される記憶エリアに保存された、［ＲｉｃｈＤｅｌａｙＴｉｍｅ］ｍｓ前の第３中間信号の電圧値Ｖｉｎｔ３の値が読み出される。そして、排気ガスの空燃比がリーン側からリッチ側に変更された立上り状態が検出された場合に、［ＲｉｃｈＤｅｌａｙＴｉｍｅ］ｍｓ遅延して出力される第４中間信号の電圧値Ｖｉｎｔ４として記憶される（Ｓ１７２）。同様に、ＬｅａｎＤｅｌａｙＴｉｍｅも参照され、ｐｒｅｖＶｉｎｔ３［ＬｅａｎＤｅｌａｙＴｉｍｅ］で指定される記憶エリアに保存された、［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ前の第３中間信号の電圧値Ｖｉｎｔ３の値が読み出される。そして、排気ガスの空燃比がリッチ側からリーン側に変更された立下り状態が検出された場合に、［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ遅延して出力される第５中間信号の電圧値Ｖｉｎｔ５として記憶される（Ｓ１７３）。後述するが、空燃比がリーン側からリッチ側に変更され基準信号に変化が生じたことが検出された場合には、センサシミュレータ１から出力される劣化信号として第４中間信号が選択され、同様に、空燃比がリッチ側からリーン側に変更され基準信号に変化が生じたことが検出された場合には、劣化信号として第５中間信号が選択される。なお、Ｓ１７２，Ｓ１７３において、［ＲｉｃｈＤｅｌａｙＴｉｍｅ］ｍｓ前および［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ前の基準信号（本実施の形態では第３中間信号）の電圧値Ｖｉｎｔ３をｐｒｅｖＶｉｎｔ３［ＲｉｃｈＤｅｌａｙＴｉｍｅ］およびｐｒｅｖＶｉｎｔ３［ＬｅａｎＤｅｌａｙＴｉｍｅ］から読み出して、劣化信号として出力するため、第４中間信号の電圧値Ｖｉｎｔ４および第５中間信号の電圧値Ｖｉｎｔ５としてそれぞれ記憶するＣＰＵ１１が、本発明における「信号遅延生成手段」に相当する。
【０１０１】
次のＳ１７５〜Ｓ１７９の処理では、次回の遅延処理の実行時に利用されるように、ｐｒｅｖＶｉｎｔ３［ｉ］を更新する処理が行われる。まず、Ｓ１７５で、変数ｉに６００が記憶される（Ｓ１７５）。次に、ｐｒｅｖＶｉｎｔ３［ｉ（６００）］にｐｒｅｖＶｉｎｔ３［ｉ−１（５９９）］の値を記憶する処理が行われる（Ｓ１７６）。そして、ｉの値が１デクリメントされて５９９となり（Ｓ１７７）、ｉ≧１を満たすのでＳ１７５に戻り（Ｓ１７９：ＹＥＳ）、同様にｐｒｅｖＶｉｎｔ３［ｉ（５９９）］にｐｒｅｖＶｉｎｔ３［ｉ−１（５９８）］を記憶する処理が行われる。この一連の処理は、ｉの値が１未満となるまで継続され（Ｓ１７９：ＮＯ）、ｐｒｅｖＶｉｎｔ３［６００］〜ｐｒｅｖＶｉｎｔ３［１］までの値がそれまでのｐｒｅｖＶｉｎｔ３［５９９］〜ｐｒｅｖＶｉｎｔ３［０］の値でそれぞれ上書き記憶され、更新される。その後、メインルーチンに戻る。
【０１０２】
［第２オーバーシュートチェック処理］
ところで、空燃比が変更された場合、それまで選択されていた第４中間信号または第５中間信号に代わり、第５中間信号または第４中間信号が劣化信号として選択されるようになる。第４中間信号または第５中間信号から、第５中間信号または第４中間信号に切り換わるタイミングは、空燃比の変更に伴う基準信号の変化が検出されたタイミングであり、上記同様に、第４中間信号または第５中間信号の電圧値Ｖｉｎｔ４またはＶｉｎｔ５は、既に大きく変化（増加または減衰）を始めている場合がある。このため、上記タイミングにおいて、劣化信号の電圧値Ｖｏｕｔの変化方向が一時的に逆転することがある。例えば、目標空燃比がリッチ側からリーン側に変更された場合、劣化信号の電圧値Ｖｏｕｔは高電位から低電位に変化するが、上記タイミングにおいて、一時的に低電位から高電位に変化し、その信号波形が波打つように変化する場合がある。その一例を、図２８のグラフに示す。
【０１０３】
図２８では、Ｈタイミング以前において、空燃比がリッチ側であることが検出されて立上り状態と判定され、ｓｔａｔｅには１が記憶されており、劣化信号として出力される信号には、１点鎖線で示される第４中間信号（電圧値Ｖｉｎｔ４）が選択されている（図２８の例ではＲｉｃｈＤｅｌａｙＴｉｍｅ＝０であるので基準信号と一致している。）。そして空燃比がリーン側に変更されたことが検出されたＨタイミングでは、立下り状態と判定されてｓｔａｔｅが−１となるので、劣化信号として出力される信号は、第４中間信号から、２点鎖線で示される第５中間信号に置き換えられる。Ｈタイミングにおいて第４中間信号の電圧値Ｖｉｎｔ４は、空燃比がリッチ側で安定したときに示す約０．９Ｖから、空燃比がリーン側で安定したときに示す約０．０５Ｖへ変化し始めた、０．９Ｖよりも低い値となっている。一方、Ｈタイミングにおける第５中間信号の電圧値Ｖｉｎｔ５は、［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ前の第３中間信号の電圧値Ｖｉｎｔ３（図２８の例では基準信号の電圧値Ｖｉｎ）となっており、より具体的にはＨタイミングからＩタイミングまでの時間に相当するリッチリーン遅延時間前の値で、約０．９Ｖとなっている。このため、出力される劣化信号は、図２８に示す第４中間信号と第５中間信号とを結合させた信号となり、Ｈタイミングにおいて、本来なら立下り状態であるため電圧値の変化が下降となるところが大きく上昇し（図中矢印で示す。）、その後下降を始めるグラフを描くこととなる。
【０１０４】
第２オーバーシュートチェック処理では、このＨタイミング以後、立下り状態にありながら電圧値がＨタイミングのときの値よりも増加した現象の補正が行われ、空燃比がリーン側からリッチ側に変更された場合についても同様に補正が行われる。すなわち、空燃比がリーン側からリッチ側に変更され、基準信号の電圧値が上昇中にある場合には、一時的な電圧値の下降を生ずることがなく、また、空燃比がリッチ側からリーン側に変更され、基準信号の電圧値が下降中にある場合には、一時的な電圧値の上昇を生ずることがないように、電圧値の補正が行われる。図２８を参照した具体例で示すと、Ｈタイミング直前（１ｍｓ前）のＶｉｎｔ５の値をＶｂａｓｅとして保存し、ＩタイミングにおいてＶｉｎｔ４の値がＶｂａｓｅに一致するまで、ＨタイミングからＩタイミングまでの間のＶｉｎｔ４の値をＶｂａｓｅで置換することで補正が行われる。これにより、図２９に示す例では、第２オーバーシュートチェック処理の結果得られる劣化信号（電圧値Ｖｏｕｔ）の描く曲線（図２９では実線で示される。）は、ＨタイミングからＩタイミングまでの間、電圧値が一定（Ｖｂａｓｅ）の直線で置換されたグラフとなる。
【０１０５】
このように、遅延処理後の第４中間信号および第５中間信号を補正した劣化信号を得るため、図５のメインルーチンにおいて第２オーバーシュートチェック処理のサブルーチンがコールされる（Ｓ１３）。第２オーバーシュートチェック処理では、図１６に示すように、まず、閾値チェック処理で得たフラグｓｔａｔｅの値が参照され、０より大きいか否か確認が行われる（Ｓ１８１）。図２８に示したグラフを例に説明すると、Ｈタイミング（図２８参照）以前には空燃比がリーン側からリッチ側に変更されたと検出された状態（立上り状態）にあり、ｓｔａｔｅは１であるので（Ｓ１８１：ＹＥＳ）、遅延立上り処理のサブルーチンがコールされる（Ｓ１８２）。なお、Ｓ１８１で、第４中間信号もしくは第５中間信号が劣化信号として生成されるように、ｓｔａｔｅの値によって遅延立上り処理または遅延立ち下がり処理を選択するＣＰＵ１１が、本発明における「劣化信号選択生成手段」に相当する。
【０１０６】
図１７に示す遅延立上り処理では、前回（１ｍｓ前）の空燃比の移行状態を示すフラグｓｔａｔｅの値を記憶して保存したｐｒｅｖＳｔａｔｅ３の値が参照され、０より小さいか否か確認が行われる（Ｓ１９１）。Ｈタイミング以前には、ｐｒｅｖＳｔａｔｅ３が１であるので（Ｓ１９１：ＮＯ）、前回も今回も空燃比はリッチ側にあり、変更されていないと判断され、そのままＳ１９５に進む。空燃比の状態（ｓｔａｔｅの値）に変化が生ずる前にはＣｈｅｃｋＦｌａｇの値が０となっており（Ｓ１９５：ＮＯ）、ｓｔａｔｅが１の立上り状態であるので劣化信号には第４中間信号が選択されて、その電圧値Ｖｉｎｔ４がＶｏｕｔに記憶される（Ｓ２０１）。そして、図１６に示す第２オーバーシュートチェック処理のサブルーチンに戻る。更に、次回の第２オーバーシュートチェック処理で用いるため、ｓｔａｔｅ，Ｖｉｎｔ４，Ｖｉｎｔ５の値がそれぞれ、ｐｒｅｖＳｔａｔｅ３，ｐｒｅｖＶｉｎｔ４，ｐｒｅｖＶｉｎｔ５に記憶されて保存され（Ｓ１８５）、メインルーチンに戻る。
【０１０７】
時間が経過し、メインルーチンの処理が１ｍｓ毎に繰り返し実行されてＨタイミング（図２８参照）となったときには、空燃比がリッチ状態からリーン状態に変更されたことが検出されてｓｔａｔｅには−１が記憶され、図１６に示す第２オーバーシュートチェック処理では遅延立下り処理のサブルーチンがコールされる（Ｓ１８１：ＮＯ，Ｓ１８３）。
【０１０８】
図１８に示す遅延立下り処理では、Ｈタイミング（図２８参照）以前のｓｔａｔｅの値を記憶したｐｒｅｖＳｔａｔｅ３の値が１であるので（Ｓ２１１：ＹＥＳ）、空燃比の状態がリッチ側からリーン側に変更されたと判断される。そして、Ｖｉｎｔ５の値の補正が必要なときに置き換えにより補正するための補正値Ｖｂａｓｅとして、前回（１ｍｓ前）選択されていた第４中間信号の電圧値Ｖｉｎｔ４を保存したｐｒｅｖＶｉｎｔ４の値がコピーされ記憶される（Ｓ２１２）。更にＣｈｅｃｋＦｌａｇに１が記憶される（Ｓ２１３）。なお、Ｓ２１２で、前回の第４中間信号の電圧値ｐｒｅｖＶｉｎｔ４を本発明における「リッチリーン保持信号」に相当する補正値Ｖｂａｓｅとしてコピーして記憶させるＣＰＵ１１、および後述するＳ１９２で、同様に、前回の第５中間信号の電圧値ｐｒｅｖＶｉｎｔ５を本発明における「リーンリッチ保持信号」に相当する補正値Ｖｂａｓｅとしてコピーして記憶させるＣＰＵ１１が、本発明における「保持信号記憶手段」に相当する。
【０１０９】
次に、Ｓ２１５ではＣｈｅｃｋＦｌａｇが１であるので（Ｓ２１５：ＹＥＳ）、Ｖｉｎｔ５の値の補正を行う必要があるか判定するため、Ｖｉｎｔ５がＶｂａｓｅより大きいか否かの確認が行われる（Ｓ２１６）。Ｈタイミング（図２８参照）のＶｉｎｔ５の値はＶｂａｓｅよりも大きいのでＶｉｎｔ５に対し補正を行う必要があり（Ｓ２１６：ＹＥＳ）、最終出力信号となる劣化信号の電圧値ＶｏｕｔにＶｂａｓｅの値が記憶されて（Ｓ２１７）、第２オーバーシュートチェック処理のサブルーチンに戻る。
【０１１０】
Ｈタイミング以後、空燃比の状態がリーン側であるためｓｔａｔｅは−１を示し、第２オーバーシュートチェック処理では継続して遅延立下り処理のサブルーチンがコールされる（図１６：Ｓ１８１：ＹＥＳ）。立下り状態の継続時にはｐｒｅｖＳｔａｔｅ３にも−１が記憶されているため（Ｓ２１１：ＮＯ）、Ｖｂａｓｅの値はＨタイミングにおいて遅延立下り処理が実行されたときに記憶された値が維持される。更にＣｈｅｃｋＦｌａｇにも１が記憶された状態が維持されるため（Ｓ２１５：ＹＥＳ）、ＨタイミングからＩタイミングまでの期間のように、Ｖｉｎｔ５（図２８参照）はＶｂａｓｅで置換され（Ｓ２１６：ＹＥＳ）、上記同様、直線近似されたＶｏｕｔ（図２９参照）が得られる（Ｓ２１７）。なお、Ｓ２１７で、出力する劣化信号の電圧値Ｖｏｕｔとして、Ｓ２１２で保存したＶｂａｓｅを記憶させるＣＰＵ１１、およびＳ１９７で、同様に、出力する劣化信号の電圧値Ｖｏｕｔとして、Ｓ１９２で保存したＶｂａｓｅを記憶させるＣＰＵ１１が、本発明における「保持信号出力手段」に相当する。
【０１１１】
更に時間が経過し、Ｉタイミングとなったときには、Ｖｉｎｔ５の値がＶｂａｓｅ以下となるため、図１８に示す遅延立下り処理のＳ２１６においてＳ２１９に進む（Ｓ２１６：ＮＯ）。Ｖｉｎｔ５を補正する必要がなくなるため、ＶｏｕｔにはＶｉｎｔ５が記憶され（Ｓ２１９）、更にＣｈｅｃｋＦｌａｇには０が記憶されて（Ｓ２２０）、第２オーバーシュートチェック処理のサブルーチンに戻る。
【０１１２】
Ｉタイミング以後も、空燃比の状態がリーン側であるため、ｓｔａｔｅもｐｒｅｖＳｔａｔｅ３も−１となっている。第２オーバーシュートチェック処理では継続して遅延立下り処理のサブルーチンがコールされる（図１６：Ｓ１８１：ＮＯ）。そして遅延立下り処理では、ＣｈｅｃｋＦｌａｇが０となっているのでＶｉｎｔ５がそのままＶｏｕｔとして記憶され（Ｓ２１１：ＮＯ，Ｓ２１５：ＮＯ，Ｓ２２１）、第２オーバーシュートチェック処理のサブルーチンに戻る。なお、Ｓ２１９，Ｓ２２１で第５中間信号が劣化信号として出力されるようにその電圧値Ｖｉｎｔ５をＶｏｕｔにコピーして記憶させるＣＰＵ１１が、本発明における「リッチリーン信号遅延出力手段」に相当する。
【０１１３】
このようにして生成される劣化信号（電圧値Ｖｏｕｔ）の描くグラフの一例を図２７に示す。図２７では、基準信号（電圧値Ｖｉｎ）に対し、ゲイン処理、応答特性処理、および目標空燃比のリーン側からリッチ側への変更に伴う遅延処理を行っていない。そして、空燃比のリッチ側からリーン側への変更が検出された際（図１９の区間［Ｃ−Ｅ］に相当する。）に選択される第５中間信号に対し第２オーバーシュートチェック処理が行われて生成された劣化信号（電圧値Ｖｏｕｔ）の描くグラフ（図中１点鎖線で示す。）を、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示す。）と対比させた。基準信号の電圧値Ｖｉｎが高電位から低電位に変化する場合に、劣化信号（電圧値Ｖｏｕｔ）がリッチリーン遅延時間ＬｅａｎＤｅｌａｙＴｉｍｅ分だけ遅れて出力される様子がわかる。そして第２オーバーシュートチェック処理によって、Ｖｏｕｔが高電位から低電位に変化する途中で一時的に低電位から高電位に変化する現象が生じないように補正された様子も確認できる。
【０１１４】
なお、図１７に示す遅延立上り処理は、上記説明した図１８に示す遅延立下り処理に対し対称となる処理を、空燃比がリーン側からリッチ側へ変更された際に行うものである。従って、遅延立下り処理におけるＳ２１１〜Ｓ２２１の処理はそれぞれ、遅延立上り処理におけるＳ１９１〜Ｓ２０１の処理にそれぞれ対応し、出力される劣化信号（電圧値Ｖｏｕｔ）として第４中間信号（電圧値Ｖｉｎｔ４）が選択される処理内容となっている。具体的には図１７に示すように、空燃比がリーン側からリッチ側に変更されたことが基準信号の変化に基づき検出されたタイミング（ｓｔａｔｅ＝１，ｐｒｅｖＳｔａｔｅ３＝−１）には、（Ｓ１８１：ＹＥＳ，Ｓ１８２（図１６参照），Ｓ１９１：ＹＥＳ）、前回（１ｍｓ前）選択されていた第５中間信号の電圧値Ｖｉｎｔ５を保存したｐｒｅｖＶｉｎｔ５の値がＶｂａｓｅにコピーされ記憶され（Ｓ１９２）、ＣｈｅｃｋＦｌａｇに１が記憶される（Ｓ１９３）。そしてＶｉｎｔ４の値がＶｂａｓｅより小さく補正を行う必要があれば（Ｓ１９５：ＹＥＳ，Ｓ１９６：ＹＥＳ）、劣化信号の電圧値Ｖｏｕｔとして、Ｖｉｎｔ４を置換したＶｂａｓｅが記憶される（Ｓ１９７）。その後もＶｂａｓｅによるＶｉｎｔ４の置換が継続されるが（Ｓ１９１：ＮＯ，Ｓ１９５：ＹＥＳ，Ｓ１９６：ＹＥＳ，Ｓ１９７）、ＶｂａｓｅがＶｉｎｔ４以上の値となったタイミング以降は（Ｓ１９６：ＮＯ）、Ｖｉｎｔ４を補正する必要がなくなるため、ＶｏｕｔにはＶｉｎｔ４が記憶され（Ｓ１９９）、更にＣｈｅｃｋＦｌａｇに０が記憶される（Ｓ２００）。それ以後も空燃比の状態はリッチ側であるため、ｓｔａｔｅもｐｒｅｖＳｔａｔｅ３も１であり、（Ｓ１８１：ＹＥＳ，Ｓ１８２（図１６参照），Ｓ１９１：ＮＯ）、ＣｈｅｃｋＦｌａｇも０となっているので、Ｖｉｎｔ４がそのままＶｏｕｔとして記憶される（Ｓ１９５：ＮＯ，Ｓ２０１）。なお、Ｓ１９９，Ｓ２０１で第４中間信号が劣化信号として出力されるようにその電圧値Ｖｉｎｔ４をＶｏｕｔにコピーして記憶させるＣＰＵ１１が、本発明における「リーンリッチ信号遅延出力手段」に相当する。
【０１１５】
このときに生成される劣化信号（電圧値Ｖｏｕｔ）の描くグラフの一例を図２６に示す。図２６では、基準信号（電圧値Ｖｉｎ）に対し、ゲイン処理、応答特性処理、および目標空燃比のリッチ側からリーン側への変更に伴う遅延処理を行っていない。そして、空燃比のリーン側からリッチ側への変更が検出された際（図１９の区間［Ａ−Ｃ］に相当する。）に選択される第４中間信号に対し第２オーバーシュートチェック処理が行われて生成された劣化信号（電圧値Ｖｏｕｔ）の描くグラフ（図中１点鎖線で示す。）を、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示す。）と対比させた。基準信号の電圧値Ｖｉｎが低電位から高電位に変化する場合に、劣化信号（電圧値Ｖｏｕｔ）がリーンリッチ遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅ分だけ遅れて出力される様子がわかる。そして第２オーバーシュートチェック処理によって、Ｖｏｕｔが低電位から高電位に変化する途中で一時的に高電位から低電位に変化する現象が生じないように補正された様子も確認できる。
【０１１６】
以上説明したように、劣化信号生成プログラムの実行によって、基準信号（電圧値Ｖｉｎ）に対しゲイン処理、応答特性処理、および遅延処理を行った劣化信号（電圧値Ｖｏｕｔ）が生成される。劣化信号（電圧値Ｖｏｕｔ）の描くグラフ（図中１点鎖線で示される。）を図３０に示すが、目標空燃比の変更に追従して電圧値が変化するものの、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示される。）と比較して、電圧値の変化が鈍った信号波形となる。ゲイン処理、応答特性処理、および遅延処理のいずれの処理も、空燃比がリッチ側にある場合とリーン側にある場合とで異なるパラメータを用い、信号に対する処理内容を個別に設定することが可能であり、様々な形態の基準信号の劣化状態を疑似的に生成することができる。
【０１１７】
なお、本発明は上記実施の形態に限られず、各種の変形が可能である。例えばＵＳＢやＲＳ２３２Ｃ等の入出力インターフェイスを備え、対応するケーブルを用いてパーソナルコンピュータに接続し、設定値等の入力や表示確認等を行ってもよい。また、基準センサ２の基準信号や、生成した劣化信号をその入出力インターフェイスを介してパーソナルコンピュータに出力し、パーソナルコンピュータ上で出力波形を生成してモニタリングできるようにしてもよいし、もちろん、表示部８０に出力波形を表示させてもよい。
【０１１８】
また、ＥＥＰＲＯＭ１２の設定値記憶エリア１２１に、設定値の組み合わせを複数種類記憶できるようにしてもよい。つまり、基準センサ２として空燃比センサを用いた場合やＮＯｘセンサを用いた場合など、それぞれのセンサ向けに設定した設定値を読み込めるようにすれば、接続するセンサを取り換える度に設定値を入れ直す手間を省くことができる。もちろん、ＥＥＰＲＯＭ１２ではなく一般的なＲＯＭを用い、これら設定値の組み合わせをプリセット値として保存してもよい。
【０１１９】
また、本実施の形態では、図４に示す、ゲイン処理ブロック、応答特性処理ブロックおよび遅延処理ブロックの各処理ブロックをこの順に行ったが、それぞれ独立して実行することが可能であり、任意の順に処理を行ってもよい。ただし、立上り，立下り検出ブロックについては、応答特性処理ブロックおよび遅延処理ブロックよりも先に処理を行う必要がある。
【０１２０】
また、利用者の設定可能な７つの変数（ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎ，ＧａｉｎＴｈｒｅｓｈｏｌｄ，ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ，ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅ）は、Ｓ１の初期化処理でＥＥＰＲＯＭ１２の設定値記憶エリア１２１からＲＡＭ１３の変数記憶エリア１３２にコピーされ、以降の処理では変数記憶エリア１３２の記憶値が参照されたが、これら７つの変数については設定値記憶エリア１２１の記憶値が参照されるようにしてもよい。このようにすれば、利用者が、劣化信号生成プログラムの実行中に設定値を変更した場合に、その変更結果を、生成される劣化信号に即座に反映させることができる。
【０１２１】
また、本実施の形態では、劣化信号生成プログラムを実行することでソフトウェア的に基準信号から劣化信号を生成したが、ロジック回路を構成したアナログまたはデジタルハードウェア回路を作製し、劣化信号の生成を行ってもよい。
【産業上の利用可能性】
【０１２２】
酸素センサ、全領域空燃比センサ、ＮＯｘセンサ等の各種ガスセンサが劣化した状態において出力する劣化信号を擬似的に発生することができる劣化信号発生装置に適用することができる。
【符号の説明】
【０１２３】
１    センサシミュレータ
２    基準センサ
１１    ＣＰＵ
１２    ＥＥＰＲＯＭ
１３    ＲＡＭ
６０    入力部
１２１    設定値記憶エリア
１３２    変数記憶エリア
Ｖｉｎ    基準信号
Ｖｏｕｔ  劣化信号
ＲｉｃｈＤｅｌａｙＴｉｍｅ  リーンリッチ遅延時間
ＬｅａｎＤｅｌａｙＴｉｍｅ  リッチリーン遅延時間
ｄｕ    微分値
ＵｐＴｈｒｅｓｈｏｌｄ  空燃比がリーン側からリッチ側に変更される場合の閾値
ＤｏｗｎＴｈｒｅｓｈｏｌｄ  空燃比がリッチ側からリーン側に変更される場合の閾値
ＲｉｃｈＧａｉｎ  リッチ利得率
ＬｅａｎＧａｉｎ  リーン利得率
ＧａｉｎＴｈｒｅｓｈｏｌｄ  しきい値
ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ  リーンリッチ変移率
ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ  リッチリーン変移率
Ｖｂａｓｅ  リッチリーン保持信号，リーンリッチ保持信号
【図１】
2011185274.tif 000003
【図２】
2011185274.tif 000004
【図３】
2011185274.tif 000005
【図４】
2011185274.tif 000006
【図５】
2011185274.tif 000007
【図６】
2011185274.tif 000008
【図７】
2011185274.tif 000009
【図８】
2011185274.tif 000010
【図９】
2011185274.tif 000011
【図１０】
2011185274.tif 000012
【図１１】
2011185274.tif 000013
【図１２】
2011185274.tif 000014
【図１３】
2011185274.tif 000015
【図１４】
2011185274.tif 000016
【図１５】
2011185274.tif 000017
【図１６】
2011185274.tif 000018
【図１７】
2011185274.tif 000019
【図１８】
2011185274.tif 000020
【図１９】
2011185274.tif 000021
【図２０】
2011185274.tif 000022
【図２１】
2011185274.tif 000023
【図２２】
2011185274.tif 000024
【図２３】
2011185274.tif 000025
【図２４】
2011185274.tif 000026
【図２５】
2011185274.tif 000027
【図２６】
2011185274.tif 000028
【図２７】
2011185274.tif 000029
【図２８】
2011185274.tif 000030
【図２９】
2011185274.tif 000031
【図３０】
2011185274.tif 000032
【手続補正書】
【提出日】平成23年5月25日(2011.5.25)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
内燃機関の排気ガス中の特定成分の濃度に基づき当該排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を、疑似的に発生する劣化信号発生装置であって、
前記劣化信号を生成するための基準信号であって、排気ガス中の特定成分の濃度に関連した基準信号を出力する前記ガスセンサと同構成をなした基準センサに接続されると共に、前記基準信号を一定時間毎に取得する基準信号取得手段と、
前記基準信号取得手段によって取得された前記基準信号を、その取得順に記憶する基準信号記憶手段と、
内燃機関に供給される混合気の目標空燃比の変更に伴って前記基準信号が変化し始める開始点を遅延させた状態で出力するための遅延時間を設定する遅延時間設定手段と、
前記遅延時間設定手段にて設定された前記遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を前記劣化信号として生成する信号遅延生成手段と
を備えると共に、
前記遅延時間を入力するための入力部をさらに備えたことを特徴とするガスセンサの劣化信号発生装置。
【請求項２】
前記基準信号取得手段と、前記基準信号記憶手段と、前記遅延時間設定手段と、前記信号遅延生成手段と、を含むマイクロコンピュータをさらに備えることを特徴とする請求項１に記載のガスセンサの劣化信号発生装置。
【請求項３】
前記遅延時間設定手段は、
前記遅延時間として、前記目標空燃比がリッチ側からリーン側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリッチリーン遅延時間と、前記目標空燃比がリーン側からリッチ側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間とを個別に設定可能に構成され、
前記信号遅延生成手段は、
前記リッチリーン遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリッチリーン信号遅延出力手段と、
前記リーンリッチ遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリーンリッチ信号遅延出力手段と、
前記基準信号取得手段によって取得された前記基準信号の値がリッチ側からリーン側に変化した場合には、前記リッチリーン信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成し、前記基準信号取得手段によって取得された前記基準信号の値がリーン側からリッチ側に変化した場合には、前記リーンリッチ信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成する劣化信号選択生成手段と
を備えたことを特徴とする請求項１または２に記載のガスセンサの劣化信号発生装置。
【請求項４】
前記基準信号取得手段によって取得された複数の前記基準信号に基づいて、前記目標空燃比がリッチ側からリーン側へ変更するに伴い前記基準信号が変化し始める開始点としてのリッチリーン変化開始点と、前記目標空燃比がリーン側からリッチ側へ変更するに伴い前記基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出する空燃比変化開始点検出手段を備え、
前記劣化信号選択生成手段は、
前記リッチリーン変化開始点において、前記リッチリーン信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行い、
前記リーンリッチ変化開始点においては、前記リーンリッチ信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行うことを特徴とする請求項３に記載のガスセンサの劣化信号発生装置。
【請求項５】
前記空燃比変化開始点検出手段は前記基準信号に対する微分処理を行い、前記基準信号の微分値が、前記目標空燃比がリッチ側からリーン側に変更される場合の閾値を越えた場合を前記リッチリーン変化開始点とすると共に、前記目標空燃比がリーン側からリッチ側に変更される場合の閾値を越えた場合を前記リーンリッチ変化開始点として検出することを特徴とする請求項４に記載のガスセンサの劣化信号発生装置。
【請求項６】
前記基準信号のゲインを変更した状態で出力するための利得率を設定する利得率設定手段と、
前記基準信号に、前記利得率設定手段に設定された前記利得率を掛け合わせて前記基準信号のゲインを変更するゲイン変更手段と
を備えたことを特徴とする請求項１乃至５のいずれかに記載のガスセンサの劣化信号発生装置。
【請求項７】
前記利得率設定手段は、
前記利得率として、前記基準信号の値が所定のしきい値よりもリーン側である場合の当該基準信号のゲインを変更させるためのリーン利得率と、前記基準信号の値が所定のしきい値よりもリッチ側である場合の当該基準信号のゲインを変更させるためのリッチ利得率とを個別に設定可能に構成され、
前記ゲイン変更手段は、
前記基準信号の値が所定のしきい値よりもリーン側であると判定されたとき、前記基準信号に前記リーン利得率を掛け合わせ、前記基準信号の値が所定のしきい値よりもリッチ側であると判定されたとき、前記基準信号に前記リッチ利得率を掛け合わせることを特徴とする請求項６に記載のガスセンサの劣化信号発生装置。
【請求項８】
前記目標空燃比の変更に伴って変移する前記基準信号の応答特性を変更した状態で出力するための変移率を設定する変移率設定手段と、
前記基準信号に、前記変移率設定手段にて設定された前記変移率を掛け合わせて前記基準信号の応答特性を変更する変移時間変更手段と
を備えたことを特徴とする請求項１乃至７のいずれかに記載のガスセンサの劣化信号発生装置。
【請求項９】
前記変移率設定手段は、
前記変移率として、前記目標空燃比がリッチ側からリーン側に変更される場合の前記基準信号の応答特性を変更するためのリッチリーン変移率と、前記目標空燃比がリーン側からリッチ側に変更される場合の前記基準信号の応答特性を変更するためのリーンリッチ変移率とを個別に設定可能に構成され、
前記変移時間変更手段は、
前記基準信号取得手段により取得される前記基準信号の値がリッチ側からリーン側に変化する場合には、前記基準信号に前記リッチリーン変移率を掛け合わせ、前記基準信号取得手段により取得される前記基準信号の値がリーン側からリッチ側に変化する場合には、前記基準信号に前記リーンリッチ変移率を掛け合わせることを特徴とする請求項８に記載のガスセンサの劣化信号発生装置。
【請求項１０】
前記リッチリーン変化開始点において生成される前記劣化信号をリッチリーン保持信号として記憶し、前記リーンリッチ変化開始点において生成される前記劣化信号をリーンリッチ保持信号として記憶する保持信号記憶手段と、
前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号よりも大きい値である場合には、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号以下の値になるまで前記リッチリーン保持信号を前記劣化信号として出力し、
前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号よりも小さい値である場合には、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号以上の値になるまで前記リーンリッチ保持信号を前記劣化信号として出力する保持信号出力手段と
を備えたことを特徴とする請求項４または５に記載のガスセンサの劣化信号発生装置。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の排気ガス中の特定成分の濃度に基づき排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する検出信号（劣化信号）を、擬似的に発生するガスセンサの劣化信号発生装置に関するものである。
【背景技術】
【０００２】
従来より、自動車のエンジンなどの内燃機関の排気通路に取り付けられ、排気ガス中の特定成分の濃度に基づき、排気ガスの空燃比を検出するガスセンサが知られている。このガスセンサのセンサ素子は、自身を流れる電流の大きさあるいは電圧値が排気ガス中の特定成分の濃度に応じて二値的にあるいはリニアに変化することを利用して、排気ガスの空燃比の検出を行うものである。ガスセンサから出力される検出信号はＥＣＵ（電子制御ユニット）に送信され、ＥＣＵでは、受信した検出信号に基づきエンジンにおける燃料の噴射量の調整等の空燃比フィードバック制御が行われる。
【０００３】
こうしたガスセンサは、センサ素子が排気通路内で排気ガスに曝されることとなるため、長期間の使用に伴い経時劣化が生ずる。そこでＥＣＵの開発では、ガスセンサがある程度劣化した状態でも空燃比フィードバック制御の精度を維持することができるように、ガスセンサ劣化時の検出信号（劣化信号）に対しても最適な空燃比フィードバック制御のパラメータを決定できるようにする設計が行われている。例えば、加速耐久試験により劣化度合いの異なるガスセンサを用意し、それらガスセンサから得られる劣化信号と、正常なガスセンサの検出信号とを用い、劣化信号の過渡的な段階における信号状態を予測して、パラメータの設定を行っている。
【０００４】
ところで、実車において排気ガスの浄化状態を確認するための試験を行う場合、ガスセンサが劣化した状態においてもＥＣＵによる空燃比フィードバック制御が正しく行われているか否かを確認するため、上記のように加速耐久試験により劣化させたガスセンサが実車に取り付けられる。しかし、こうした試験に用いるため、数種類の劣化状態を再現したガスセンサそれぞれを加速耐久試験により目標通りに作成することは困難である。また、試験において、劣化状態の異なるガスセンサを試験の都度取り換えるには手間もかかる。そのため、ガスセンサの劣化信号を擬似的に発生することができる劣化信号発生装置（劣化シミュレータ）が開発されている（例えば、特許文献１参照。）。
【０００５】
このような劣化信号発生装置は、実車に取り付けた正常なガスセンサ（還元すれば、劣化信号を生成するための基準となるガスセンサ）とＥＣＵとの間に介在され、入力されたガスセンサの検出信号を加工して擬似的に劣化信号を生成し、この劣化信号をＥＣＵに対して出力するものである。特許文献１の劣化信号発生装置では、具体的には、ガスセンサの検出信号のゲインを変化させたり、検出信号の応答特性に遅れを生じさせたりすることで、擬似的に劣化信号を生成している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−９３９５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
ガスセンサは排気通路の下流側に設けられる浄化装置の近くに取り付けられることが多く、燃料噴射量の調整等により内燃機関に供給される混合気の目標空燃比を変化させた際に、目標空燃比を変化させた混合気がエンジン（燃焼室）にて燃焼され、排気ガスとしてガスセンサに達するまでに時間がかかる。そのため、混合気の目標空燃比の変更タイミングと、ガスセンサから出力される検出信号の変化し始めるタイミングとの間には、タイムラグ（遅延）が生ずる。
【０００８】
ところで、ガスセンサを長期間使用した場合、ガスセンサのプロテクタ（詳細には、センサ素子の周囲を覆うガス流通孔付きのプロテクタ）のガス流通孔が目詰まりを起こす等の経時劣化を生ずることがある。そして、ガスセンサにこのような劣化が生ずると、ガス流通孔を介してのプロテクタ内部のガス置換が遅くなるため、混合気の目標空燃比の変更に伴ってガスセンサの検出信号が変化し始めるまでの時間（遅延時間）は、劣化していないガスセンサと比較して遅くなる。そのため、ガスセンサの劣化状態を考慮してＥＣＵの開発を行うにあたっては、上記遅延時間が経時的に変化していく（遅くなっていく）ことも考慮して開発を行わなければ、より精密な空燃比フィードバック制御を促せるＥＣＵを開発することができない。しかしながら、特許文献１に記載の劣化信号発生装置では、ゲインおよび応答特性を変更可能なガスセンサの劣化信号を擬似的に発生することはできるものの、上記遅延時間を変更可能な劣化信号までは擬似的に発生させることはできなかった。
【０００９】
本発明は上記問題点を解決するためになされたものであり、内燃機関の排気ガス中の特定成分の濃度に基づき排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を擬似的に生成し、更にその劣化信号を遅延させた状態で出力することができるガスセンサの劣化信号発生装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、請求項１に係る発明のガスセンサの劣化信号発生装置は、内燃機関の排気ガス中の特定成分の濃度に基づき当該排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を、疑似的に発生する劣化信号発生装置であって、前記劣化信号を生成するための基準信号であって、排気ガス中の特定成分の濃度に関連した基準信号を出力する前記ガスセンサと同構成をなした基準センサに接続されると共に、前記基準信号を一定時間毎に取得する基準信号取得手段と、前記基準信号取得手段によって取得された前記基準信号を、その取得順に記憶する基準信号記憶手段と、内燃機関に供給される混合気の目標空燃比の変更に伴って前記基準信号が変化し始める開始点を遅延させた状態で出力するための遅延時間を設定する遅延時間設定手段と、前記遅延時間設定手段にて設定された前記遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を前記劣化信号として生成する信号遅延生成手段とを備えると共に、前記遅延時間を入力するための入力部をさらに備えている。
また、請求項２に係る発明のガスセンサの劣化信号発生装置は、請求項１に記載の発明の構成に加え、前記基準信号取得手段と、前記基準信号記憶手段と、前記遅延時間設定手段と、前記信号遅延生成手段と、を含むマイクロコンピュータをさらに備えている。
【００１１】
また、請求項３に係る発明のガスセンサの劣化信号発生装置は、請求項１または２に記載の発明の構成に加え、前記遅延時間設定手段は、前記遅延時間として、前記目標空燃比がリッチ側からリーン側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリッチリーン遅延時間と、前記目標空燃比がリーン側からリッチ側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間とを個別に設定可能に構成され、前記信号遅延生成手段は、前記リッチリーン遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリッチリーン信号遅延出力手段と、前記リーンリッチ遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリーンリッチ信号遅延出力手段と、前記基準信号取得手段によって取得された前記基準信号の値がリッチ側からリーン側に変化した場合には、前記リッチリーン信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成し、前記基準信号取得手段によって取得された前記基準信号の値がリーン側からリッチ側に変化した場合には、前記リーンリッチ信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成する劣化信号選択生成手段とを備えている。
【００１２】
また、請求項４に係る発明のガスセンサの劣化信号発生装置は、請求項３に記載の発明の構成に加え、前記基準信号取得手段によって取得された複数の前記基準信号に基づいて、前記目標空燃比がリッチ側からリーン側へ変更するに伴い前記基準信号が変化し始める開始点としてのリッチリーン変化開始点と、前記目標空燃比がリーン側からリッチ側へ変更するに伴い前記基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出する空燃比変化開始点検出手段を備え、前記劣化信号選択生成手段は、前記リッチリーン変化開始点において、前記リッチリーン信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行い、前記リーンリッチ変化開始点においては、前記リーンリッチ信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行うことを特徴とする。
【００１３】
また、請求項５に係る発明のガスセンサの劣化信号発生装置は、請求項４に記載の発明の構成に加え、前記空燃比変化開始点検出手段は前記基準信号に対する微分処理を行い、前記基準信号の微分値が、前記目標空燃比がリッチ側からリーン側に変更される場合の閾値を越えた場合を前記リッチリーン変化開始点とすると共に、前記目標空燃比がリーン側からリッチ側に変更される場合の閾値を越えた場合を前記リーンリッチ変化開始点として検出することを特徴とする。
【００１４】
また、請求項６に係る発明のガスセンサの劣化信号発生装置は、請求項１乃至５のいずれかに記載の発明の構成に加え、前記基準信号のゲインを変更した状態で出力するための利得率を設定する利得率設定手段と、前記基準信号に、前記利得率設定手段に設定された前記利得率を掛け合わせて前記基準信号のゲインを変更するゲイン変更手段とを備えている。
【００１５】
また、請求項７に係る発明のガスセンサの劣化信号発生装置は、請求項６に記載の発明の構成に加え、前記利得率設定手段は、前記利得率として、前記基準信号の値が所定のしきい値よりもリーン側である場合の当該基準信号のゲインを変更させるためのリーン利得率と、前記基準信号の値が所定のしきい値よりもリッチ側である場合の当該基準信号のゲインを変更させるためのリッチ利得率とを個別に設定可能に構成され、前記ゲイン変更手段は、前記基準信号の値が所定のしきい値よりもリーン側であると判定されたとき、前記基準信号に前記リーン利得率を掛け合わせ、前記基準信号の値が所定のしきい値よりもリッチ側であると判定されたとき、前記基準信号に前記リッチ利得率を掛け合わせることを特徴とする。
【００１６】
また、請求項８に係る発明のガスセンサの劣化信号発生装置は、請求項１乃至７のいずれかに記載の発明の構成に加え、前記目標空燃比の変更に伴って変移する前記基準信号の応答特性を変更した状態で出力するための変移率を設定する変移率設定手段と、前記基準信号に、前記変移率設定手段にて設定された前記変移率を掛け合わせて前記基準信号の応答特性を変更する変移時間変更手段とを備えている。
【００１７】
また、請求項９に係る発明のガスセンサの劣化信号発生装置は、請求項８に記載の発明の構成に加え、前記変移率設定手段は、前記変移率として、前記目標空燃比がリッチ側からリーン側に変更される場合の前記基準信号の応答特性を変更するためのリッチリーン変移率と、前記目標空燃比がリーン側からリッチ側に変更される場合の前記基準信号の応答特性を変更するためのリーンリッチ変移率とを個別に設定可能に構成され、前記変移時間変更手段は、前記基準信号取得手段により取得される前記基準信号の値がリッチ側からリーン側に変化する場合には、前記基準信号に前記リッチリーン変移率を掛け合わせ、前記基準信号取得手段により取得される前記基準信号の値がリーン側からリッチ側に変化する場合には、前記基準信号に前記リーンリッチ変移率を掛け合わせることを特徴とする。
【００１８】
また、請求項１０に係る発明のガスセンサの劣化信号発生装置は、請求項４または５に記載の発明の構成に加え、前記リッチリーン変化開始点において生成される前記劣化信号をリッチリーン保持信号として記憶し、前記リーンリッチ変化開始点において生成される前記劣化信号をリーンリッチ保持信号として記憶する保持信号記憶手段と、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号よりも大きい値である場合には、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号以下の値になるまで前記リッチリーン保持信号を前記劣化信号として出力し、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号よりも小さい値である場合には、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号以上の値になるまで前記リーンリッチ保持信号を前記劣化信号として出力する保持信号出力手段とを備えている。
【発明の効果】
【００１９】
請求項１に係る発明のガスセンサの劣化信号発生装置によれば、基準センサから取得した基準信号を、任意に設定された遅延時間分、遅れて出力される劣化信号を生成することができる。これにより、内燃機関に供給される混合気の目標空燃比の変更に伴ってガスセンサの検出信号が変化し始めるまでの遅延時間が異なった、数種類の劣化状態を再現したガスセンサを加速耐久試験により目標通りに作成した上で、これらガスセンサを用いて上記遅延時間の変化を考慮したシステム（例えば、ＥＣＵ）の開発を行う必要がなくなる。つまり、本発明の劣化信号発生装置を用いることにより、基準センサを接続するだけで上記遅延時間を自由に変更させた劣化信号を直ぐに得ることができ、精密な空燃比フィードバック制御を実現可能なシステムの開発を円滑に行えると共に、その開発期間の短縮を図ることが可能となる。
また、請求項２に係る発明のガスセンサの劣化信号発生装置を用いれば、ソフトウェア的に基準信号から劣化信号を生成することができる。
【００２０】
ところで、ガスセンサの被毒の状態（例えば、排気ガス中に含まれていたＰｂ成分による被毒が特に進んでいる状態や、排気ガス中に含まれるＳｉ成分による被毒が特に進んでいる状態）によっては、目標空燃比がリッチ側に変更される場合とリーン側に変更される場合とで異なった遅延時間分遅れた劣化信号が出力される場合がある。そこで請求項３に係る発明の劣化信号発生装置を用いれば、目標空燃比がリッチ側に変更される場合にはリーンリッチ遅延時間に従って遅れて出力される劣化信号を生成することができ、目標空燃比がリーン側に変更される場合にはリッチリーン遅延時間に従って遅れて出力される劣化信号を生成することができる。
【００２１】
また、請求項４に係る発明のように、遅延時間の異なる劣化信号の切り換えを行うにあたって、その切り換えタイミングを決定するには、目標空燃比がリーン側に変更されたことに伴い基準信号が変化し始める開始点としてのリッチリーン変化開始点と、目標空燃比がリッチ側に変更されたことに伴い基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出することが好ましい。
【００２２】
そして、目標空燃比が変更されたことに伴い基準信号が変化し始める開始点を検出するには、請求項５に係る発明のように、基準信号に対する微分処理を行って、その微分値を閾値と比較することで、それぞれの開始点を求めるとよい。このようにすれば、簡易的でありながら精度よく、それぞれの開始点を検出することができる。
【００２３】
また、請求項６に係る発明によれば、ガスセンサの出力する検出信号のゲインが低下した状態を想定した劣化信号を基準センサの基準信号から擬似的に生成することができ、劣化信号発生装置の多様性を高めることができる。更に、基準信号のゲインを変更しつつ遅延時間を変更させた劣化信号を発生させることもでき、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。
【００２４】
更に、請求項７に係る発明のように、基準信号のゲインを変更するための利得率として、基準信号が所定のしきい値よりもリッチ側にある場合のリッチ利得率とリーン側にある場合のリーン利得率とを個別に設定することができれば、排気ガスの空燃比がリッチ側にある場合にのみ劣化した状態の劣化信号を出力するガスセンサや、排気ガスの空燃比がリッチ側とリーン側とで劣化の度合いの異なる劣化信号を出力するガスセンサなどの劣化信号を擬似的に生成することができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。
【００２５】
また、請求項８に係る発明によれば、ガスセンサの出力する信号の応答特性が低下した状態を想定した劣化信号を基準センサの基準信号から擬似的に生成することができ、劣化信号発生装置の多様性を高めることができる。更に、基準信号の応答特性を変更しつつ遅延時間を変更させた劣化信号を発生させたり、あるいはゲインも変更させた劣化信号を発生させたりすることができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。
【００２６】
なお、応答特性とは、目標空燃比が所定の値（理論空燃比に限定されない）を境にしてリッチ側からリーン側、あるいはリーン側からリッチ側へ変更されたことに伴い、ガスセンサの出力する検出信号が、変化を開始して予め設定した値となるまでにかかる時間をいう。変化にかかる時間が短いほど（早いほど）良好な応答特性が示される。
【００２７】
更に、請求項９に係る発明のように、基準信号の応答特性を変更するための変移率として、目標空燃比がリーン側からリッチ側に変更される場合に基準信号の応答特性を変更するリーンリッチ変移率と、目標空燃比がリッチ側からリーン側に変更される場合に基準信号の応答特性を変更するリッチリーン変移率とを個別に設定することができれば、目標空燃比がリーン側からリッチ側に変更される場合にのみ劣化した状態の劣化信号を出力するガスセンサや、目標空燃比の状態によって劣化の度合いの異なる劣化信号を出力するガスセンサなどの劣化信号を擬似的に生成することができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。
【００２８】
ところで、リッチリーン変化開始点において、劣化信号の生成元となる基準信号は、リーンリッチ信号遅延出力手段から出力される基準信号から、リッチリーン信号遅延出力手段から出力される基準信号に切り換えられる。このとき、リーンリッチ信号遅延出力手段から出力される基準信号の値よりもリッチリーン信号遅延出力手段から出力される基準信号の値が大きかった場合、生成される劣化信号の値は、下降しつつある状態からリッチリーン変化開始点において一時的に上昇し、また下降する状態となり、波打つように変化することがある。そこで請求項１０に係る発明のように、リッチリーン変化開始点以後にリッチリーン信号遅延出力手段から生成される劣化信号をリッチリーン保持信号で置換することで、劣化信号の値は、下降しつつある状態から一定な状態となり、また下降する状態となり、波打つように変化することを防止することができる。また、リーンリッチ変化開始点以後にリーンリッチ信号遅延出力手段から生成される劣化信号についても同様に、リーンリッチ保持信号で置換すれば、出力される劣化信号の値が波打つように変化することを防止することができる。これにより、劣化信号発生装置から出力される劣化信号を二次利用した場合に、信号異常等の不具合を生ずる虞がない。
【図面の簡単な説明】
【００２９】
【図１】本実施の形態の劣化信号発生装置の一例としてのセンサシミュレータ１の概略的な構成を示すブロック図である。
【図２】ＥＥＰＲＯＭ１２の記憶エリアの構成を示す概念図である。
【図３】ＲＡＭ１３の記憶エリアの構成を示す概念図である。
【図４】劣化信号生成プログラム全体の動作の流れについて説明するためのフローブロック図である。
【図５】劣化信号生成プログラムのメインルーチンのフローチャートである。
【図６】ゲイン処理サブルーチンのフローチャートである。
【図７】移動平均処理サブルーチンのフローチャートである。
【図８】ピーク検出処理サブルーチンのフローチャートである。
【図９】ピーク値の平均値算出処理サブルーチンのフローチャートである。
【図１０】閾値チェック処理サブルーチンのフローチャートである。
【図１１】応答特性処理サブルーチンのフローチャートである。
【図１２】第１オーバーシュートチェック処理サブルーチンのフローチャートである。
【図１３】応答特性立上り処理サブルーチンのフローチャートである。
【図１４】応答特性立下り処理サブルーチンのフローチャートである。
【図１５】遅延処理サブルーチンのフローチャートである。
【図１６】第２オーバーシュートチェック処理サブルーチンのフローチャートである。
【図１７】遅延立上り処理サブルーチンのフローチャートである。
【図１８】遅延立下り処理サブルーチンのフローチャートである。
【図１９】空燃比をリッチ側とリーン側とに交番させた場合に得られる基準信号を時間軸に沿って示した例を示すグラフである。
【図２０】図１９に示した基準信号のリッチ側のゲインを変更した劣化信号の例を示すグラフである。
【図２１】図１９に示した基準信号のリーン側のゲインを変更した劣化信号の例を示すグラフである。
【図２２】図１９に示した基準信号のリッチ側の応答特性を変更した劣化信号の例を示すグラフである。
【図２３】図１９に示した基準信号のリーン側の応答特性を変更した劣化信号の例を示すグラフである。
【図２４】第１オーバーシュートチェック処理について説明するため、図２３の円Ｑで示す部分を拡大したグラフである。
【図２５】第１オーバーシュートチェック処理について説明するため、図２３の円Ｑで示す部分を拡大したグラフである。
【図２６】図１９に示した基準信号のリッチ側の遅延時間を変更した劣化信号の例を示すグラフである。
【図２７】図１９に示した基準信号のリーン側の遅延時間を変更した劣化信号の例を示すグラフである。
【図２８】第２オーバーシュートチェック処理について説明するため、図２７の円Ｒで示す部分を拡大したグラフである。
【図２９】第２オーバーシュートチェック処理について説明するため、図２７の円Ｒで示す部分を拡大したグラフである。
【図３０】図１９に示した基準信号のゲインと応答特性と遅延時間とをリッチ側およびリーン側それぞれについて変更した劣化信号の例を示すグラフである。
【発明を実施するための形態】
【００３０】
以下、本発明を具体化した劣化信号発生装置の一実施の形態について、図面を参照して説明する。図１は、本実施の形態の劣化信号発生装置の一例としてのセンサシミュレータ１の概略的な構成を示すブロック図である。なお、本発明の劣化信号発生装置に接続されるガスセンサとしては、酸素センサや全領域空燃比センサ、ＮＯｘセンサなどを用いることができ、本実施の形態ではλ型酸素センサをその一例とし、基準センサ２として、正常な（劣化していない）λ型酸素センサを用いたものとして説明する。なお、λ型酸素センサについては公知のものを使用しているため、その詳述については省略するが、具体的には、特開２００４−１３８５９９号公報に開示する筒型の酸素センサを使用しているものとして説明することとする。
【００３１】
図１に示すように、センサシミュレータ１は、自動車の排気通路（図示外）に取り付けられる酸素センサとしての基準センサ２と、自動車の電子制御を司るＥＣＵ３との間に介在される装置である。基準センサ２は排気通路内を流通する排気ガス中の酸素濃度に応じた検出信号を出力し、この検出信号が基準信号としてセンサシミュレータ１に入力されている。センサシミュレータ１は、入力された基準信号に対し、後述する劣化信号生成プログラムの実行により加工を施して劣化信号を生成し、ＥＣＵ３に対して出力を行っている。ＥＣＵ３は、入力された劣化信号に基づき、図示外のエンジンの制御（例えば、インジェクタから噴射する燃料の噴射量や噴射タイミングの調整や、点火時期の調整など）を行っている。また、ＥＣＵ３は、基準センサ２のヒータ回路（図示外）にヒータ駆動電圧の供給も行っており、センサ素子（図示外）の早期活性化や活性化後の安定化を図っている。
【００３２】
センサシミュレータ１は、図示しないケーシング内に、自身の制御を司るＣＰＵ１１と、後述する劣化信号生成プログラム等が記憶された、書き換え可能なＥＥＰＲＯＭ１２と、各種のデータを一時的に記憶するＲＡＭ１３とを有するマイクロコンピュータ１０を備えている。なお、マイクロコンピュータ１０のＣＰＵ１１、ＥＥＰＲＯＭ１２およびＲＡＭ１３は公知の構成からなるものである。ＥＥＰＲＯＭ１２およびＲＡＭ１３の記憶エリアの構成については後述する。
【００３３】
マイクロコンピュータ１０には、入力インターフェイス２０を介して基準センサ２から入力される基準信号をＡ／Ｄ変換するＡ／Ｄコンバータ３０と、後述する劣化信号生成プログラムによって生成した劣化信号を出力バッファ４０を介してＥＣＵ３に出力するためにＤ／Ａ変換するＤ／Ａコンバータ５０とが接続されている。更に、マイクロコンピュータ１０には、劣化信号生成プログラムに用いられる設定値等を利用者が入力するための入力部６０と、入力された設定値等を確認できるように表示する表示部８０の表示制御を行う表示制御部７０とが接続されている。入力部６０としては、例えばプッシュスイッチやロータリースイッチ等が用いられ、表示部８０としては、例えばＬＣＤディスプレイ等が用いられる。また、図示しないが、センサシミュレータ１は電源回路等も備えている。
【００３４】
なお、後述する劣化信号生成プログラムでは、基準信号から劣化信号を生成する過程において多数のサブルーチン単位での処理が行われ、その際に様々な中間信号を生成する。劣化信号生成プログラムでは、各サブルーチン間における中間信号の受け渡しを、ＲＡＭ１３の変数記憶エリア１３２に記憶される多数の変数等を用いて行っている。本実施の形態において、一のサブルーチンにおいて処理の終わった中間信号等を変数に記憶する処理を、便宜上、「出力」と表現し、変数として記憶された中間信号等を他のサブルーチンにおいて読み込む処理を、便宜上、「入力」と表現する場合もある。
【００３５】
次に、ＥＥＰＲＯＭ１２の記憶エリアおよびＲＡＭ１３の記憶エリアの概略的な構成について、図２および図３を参照して説明する。図２は、ＥＥＰＲＯＭ１２の記憶エリアの構成を示す概念図である。図３は、ＲＡＭ１３の記憶エリアの構成を示す概念図である。
【００３６】
図２に示すように、ＥＥＰＲＯＭ１２には、設定値記憶エリア１２１、プログラム記憶エリア１２２、初期値記憶エリア１２３が設けられている。設定値記憶エリア１２１は、後述する７つの変数（ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎ，ＧａｉｎＴｈｒｅｓｈｏｌｄ，ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ，ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅ）の設定値が記憶され、劣化信号生成プログラムにおいて利用される。これらの設定値は、予め利用者により入力部６０から任意の値が入力され、ＥＥＰＲＯＭ１２に記憶されることで、電源切断時にも保存することができるように構成されている。プログラム記憶エリア１２２には、劣化信号生成プログラムが記憶されている。ＥＥＰＲＯＭ１２を使用することで、バージョンアップ等にも柔軟に対応できるように構成されている。更にＥＥＰＲＯＭ１２には、図示外の各種の記憶エリアが設けられている。
【００３７】
また、図３に示すように、ＲＡＭ１３には、ワークエリア１３１、変数記憶エリア１３２が設けられている。ワークエリア１３１には、劣化信号生成プログラムが読み込まれて展開される記憶エリアであり、その実行に利用される。変数記憶エリア１３２には、以下に示す、各種変数やカウント値等が記憶され、劣化信号生成プログラムの実行に際し使用される。
【００３８】
ここで、劣化信号生成プログラムで使用される各変数やカウント値について説明する。
「Ｖｉｎ」は、基準センサ２から取得される基準信号の電圧値を記憶するための変数であり、初期値には０がセットされる。「ＧａｉｎＴｈｒｅｓｈｏｌｄ」は、基準信号の電圧値をもって排気ガスの空燃比がリッチ側にあるかリーン側にあるかを判定するためのしきい値を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。「ＲｉｃｈＧａｉｎ」は、排気ガスの空燃比がリッチ側にある場合に、基準信号の電圧値に掛け合わせて第１中間信号（電圧値Ｖｉｎｔ１）を得るための利得率を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。「ＬｅａｎＧａｉｎ」は、排気ガスの空燃比がリーン側にある場合に、基準信号の電圧値に掛け合わせて第１中間信号（電圧値Ｖｉｎｔ１）を得るための利得率を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。「Ｖｉｎｔ１」は、基準信号の電圧値Ｖｉｎのゲインを変更した第１中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。
【００３９】
「ｐｒｅｖＶｉｎ」は、今回取得した基準信号の電圧値Ｖｉｎを記憶して保存し、次回（１ｍｓ後）に利用するための変数であり、初期値には０がセットされる。「Ｖｄｉｆｆ」は、基準信号の微分値を記憶するための変数であり、微分値は、前回取得された基準信号の電圧値ｐｒｅｖＶｉｎと今回取得した基準信号の電圧値Ｖｉｎとの差を近似値として求められる。初期値には０がセットされる。「ｐｒｅｖＶｄｉｆｆ［ｉ］」は、９９回前に算出した微分値ｐｒｅｖＶｄｉｆｆ［９９］から前回算出した微分値ｐｒｅｖＶｄｉｆｆ［１］までを記憶するための９９個の変数であり、初期値にはそれぞれ０が記憶される。「ＶｄｉｆｆＳｕｍ」は、９９回前に算出した微分値ｐｒｅｖＶｄｉｆｆ［９９］から前回算出した微分値ｐｒｅｖＶｄｉｆｆ［１］までと、今回算出した微分値Ｖｄｉｆｆとを加算した合算値を記憶するための変数であり、初期値には０がセットされる。「ｉ」は、ｐｒｅｖＶｄｉｆｆ［ｉ］の記憶エリアや、後述するｐｒｅｖＶｉｎｔ３［ｉ］の記憶エリアを指定するための変数として用いられ、初期値には１がセットされる。「ｄｕ」は、９９回前（９９ｍｓ前）に取得した基準信号の微分値から今回取得した基準信号の微分値までの１００回分の微分値の平均値を記憶するための変数であり、初期値には０が記憶される。
【００４０】
「ＳｔｅｐＣｏｕｎｔ」は、１秒間における立上りピーク値ｔｍｐＵｐＰｅａｋおよび立下りピーク値ｔｍｐＤｏｗｎＰｅａｋを求めるため、１秒間の経過をカウントするためのカウント値であり、初期値には０がセットされる。「ｔｍｐＵｐＰｅａｋ」は、微分値の平均値ｄｕの最新１秒間の最大値としての立上りピーク値を記憶するための変数であり、初期値には０がセットされる。「ｔｍｐＤｏｗｎＰｅａｋ」は、微分値の平均値ｄｕの最新１秒間の最小値としての立下りピーク値を記憶するための変数であり、初期値には０がセットされる。「ｐｒｅｖＵｐＰｅａｋ１」には、前回（１秒前）求めた１秒間における立上りピーク値を記憶するための変数であり、初期値には０が記憶される。「ｐｒｅｖＵｐＰｅａｋ２」には、前々回（２秒前）求めた１秒間における立上りピーク値を記憶するための変数であり、初期値には０が記憶される。「ｐｒｅｖＤｏｗｎＰｅａｋ１」には、前回（１秒前）求めた１秒間における立下りピーク値を記憶するための変数であり、初期値には０が記憶される。「ｐｒｅｖＤｏｗｎＰｅａｋ２」には、前々回（２秒前）求めた１秒間における立下りピーク値を記憶するための変数であり、初期値には０が記憶される。「ＵｐＰｅａｋ」は、最新の３回分（３秒分）の立上りピーク値（ｔｍｐＵｐＰｅａｋ，ｐｒｅｖＵｐＰｅａｋ１，ＰｒｅｖＵｐＰｅａｋ２）の平均値を記憶するための変数であり、初期値には０．００５がセットされる。「ＤｏｗｎＰｅａｋ」は、最新の３回分（３秒分）の立下りピーク値（ｔｍｐＤｏｗｎＰｅａｋ，ｐｒｅｖＤｏｗｎＰｅａｋ１，ＰｒｅｖＤｏｗｎＰｅａｋ２）の平均値を記憶するための変数であり、初期値には−０．００５がセットされる。「ＵｐＴｈｒｅｓｈｏｌｄ」は、基準信号の変化を示す微分値の平均値ｄｕと比較することで、排気ガスの空燃比がリーン側からリッチ側に変更されたことを検出するための閾値を記憶するための変数であり、ＵｐＰｅａｋの０．１５倍の値が算出され記憶される。「ＤｏｗｎＴｈｒｅｓｈｏｌｄ」は、基準信号の変化を示す微分値の平均値ｄｕと比較することで、排気ガスの空燃比がリッチ側からリーン側に変更されたことを検出するための閾値を記憶するための変数であり、ＤｏｗｎＰｅａｋの０．１５倍の値が算出され記憶される。
【００４１】
「ｓｔａｔｅ」は、排気ガスの空燃比の状態を示すフラグであり、エンジン（図示外）に供給される混合気の目標空燃比がリッチ側からリーン側に変更されたことに伴う基準信号の変化が検出された状態（以下、「立下り状態」という。）では−１が記憶される。また、目標空燃比がリーン側からリッチ側に変更されたことに伴う基準信号の変化が検出された状態（以下、「立上り状態」という。）では１が記憶される。「ｐｒｅｖＳｔａｔｅ１」は、前回（１ｍｓ前に）判定されたｓｔａｔｅの値を閾値チェック処理で用いるために記憶するフラグである。
【００４２】
「ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ」は、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、基準信号（本実施の形態では第１中間信号）の応答特性を変更するために用いられるリーンリッチ変移率を記憶するための変数であり、初期値には０が記憶される。「ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ」は、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、基準信号（本実施の形態では第１中間信号）の応答特性を変更するために用いられるリッチリーン変移率を記憶するための変数であり、初期値には０が記憶される。「α」は、基準信号（本実施の形態では第１中間信号）の応答特性を変更するための数式において係数として使用され、上記変移率を用いて算出される値が記憶される。「Ｖｉｎｔ２」は、基準信号（本実施の形態では第１中間信号）の応答特性を変更した第２中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。「ｐｒｅｖＶｉｎｔ２」は、今回の応答特性処理の実行によって求めた第２中間信号の電圧値Ｖｉｎｔ２を記憶して保存し、次回（１ｍｓ後）に利用するための変数であり、初期値には０がセットされる。
【００４３】
「ｐｒｅｖＳｔａｔｅ２」は、前回（１ｍｓ前に）判定されたｓｔａｔｅの値を保存して第１オーバーシュートチェック処理で用いるために記憶するフラグである。「Ｖｂａｓｅ」は、目標空燃比の変更に伴い基準信号の電圧値Ｖｉｎが変化しつつあるときに、応答特性処理において、変移率の変更によって一時的に電圧値の変化方向が逆転し（例えば高電位から低電位であったものが一時的に低電位から高電位に変化する場合など）、波打つように変化する現象が生じないように、第１オーバーシュートチェック処理において、第２中間信号の電圧値Ｖｉｎｔ２を補正する補正電圧値を記憶するための変数である。また、第２オーバーシュートチェック処理においても同様に、出力される劣化信号の電圧値Ｖｏｕｔを補正する補正電圧値を記憶するために用いられ、初期値には０がセットされる。「ＣｈｅｃｋＦｌａｇ」は、第１オーバーシュートチェック処理および第２オーバーシュートチェック処理において、Ｖｂａｓｅを用いた電圧値の補正を行う必要がある場合に１が記憶されるフラグであり、初期値には０がセットされる。「Ｖｉｎｔ３」は、第２中間信号の電圧値Ｖｉｎｔ２に対し、第１オーバーシュートチェック処理において補正を行い生成される第３中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。
【００４４】
「ｐｒｅｖＶｉｎｔ３［ｉ］」（ただし、ｉ＝０，１，２，・・・，６００）は、応答特性処理、第１オーバーシュートチェック処理を経て得られた過去６００ｍｓ前までの第３中間信号の電圧値Ｖｉｎｔ３を１ｍｓ毎に記憶して保存し、遅延処理で、遅延時間（ＲｉｃｈＤｅｌａｙＴｉｍｅまたはＬｅａｎＤｅｌａｙＴｉｍｅ）分遅いタイミングに遅らせて出力するための６０１個の変数であり、初期値にはそれぞれ０がセットされる。「ＲｉｃｈＤｅｌａｙＴｉｍｅ」は、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、基準信号（本実施の形態では第３中間信号）を０〜６００ｍｓの範囲で遅らせて出力するために用いられるリーンリッチ遅延時間を記憶するための変数であり、初期値には０が記憶される。「ＬｅａｎＤｅｌａｙＴｉｍｅ」は、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、基準信号（本実施の形態では第３中間信号）を０〜６００ｍｓの範囲で遅らせて出力するために用いられるリッチリーン遅延時間を記憶するための変数であり、初期値には０が記憶される。「ｐｒｅｖＳｔａｔｅ３」は、前回（１ｍｓ前に）判定されたｓｔａｔｅの値を保存して第２オーバーシュートチェック処理で用いるために記憶するフラグである。「Ｖｉｎｔ４」は、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、第３中間信号を［ＲｉｃｈＤｅｌａｙＴｉｍｅ］ｍｓ遅らせて出力する第４中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。「ｐｒｅｖＶｉｎｔ４」は、前回（１ｍｓ前）劣化信号として選択された第４中間信号の電圧値Ｖｉｎｔ４を記憶して保持するための変数であり、初期値には０がセットされる。「Ｖｉｎｔ５」は、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、第３中間信号を［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ遅らせて出力する第５中間信号の電圧値を記憶するための変数であり、初期値には０がセットされる。「ｐｒｅｖＶｉｎｔ５」は、前回（１ｍｓ前）劣化信号として選択された第５中間信号の電圧値Ｖｉｎｔ５を記憶して保持するための変数であり、初期値には０がセットされる。「Ｖｏｕｔ」は、劣化信号生成プログラムの実行によって基準信号から生成される劣化信号の電圧値を記憶するための変数であり、初期値には０が記憶される。更にＲＡＭ１３には、図示外の各種の記憶エリアが設けられている。
【００４５】
このような構成のセンサシミュレータ１では、後述する図５〜図１８のフローチャートで示す劣化信号生成プログラムの実行に従って、基準センサ２から１ｍｓ毎に基準信号を取得し、加工を施して劣化信号を生成し、ＥＣＵ３に対し出力を行っている。この劣化信号生成プログラムの詳細について説明する前に、劣化信号生成プログラムの動作の概略について、図４に示す、フローブロック図を用いて簡単に説明する。図４は、劣化信号生成プログラム全体の動作の流れについて説明するためのフローブロック図である。
【００４６】
図４に示すように、劣化信号生成プログラムは、ゲイン処理ブロック１０１、立上り，立下り検出ブロック１０２、応答特性処理ブロック１０３、および遅延処理ブロック１０４からなる４つの処理ブロックにより構成される。
【００４７】
ゲイン処理ブロック１０１では、入力された基準信号（電圧値Ｖｉｎ）のゲインを変更（増幅または減衰）する処理が行われる。このときＶｉｎは、予め設定された所定のしきい値ＧａｉｎＴｈｒｅｓｈｏｌｄに対し、大きい場合と小さい場合とで異なる利得率ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎにより増幅または減衰されるように構成されている。基準信号（電圧値Ｖｉｎ）を増幅または減衰した第１中間信号（電圧値Ｖｉｎｔ１）は、応答特性処理ブロックに対し出力される。なお、ゲイン処理ブロック１０１は、後述する劣化信号生成プログラムのフローチャート（図５参照）では、ゲイン処理（Ｓ３）に相当する。
【００４８】
次に、立上り，立下り検出ブロック１０２では、目標空燃比がリッチ状態からリーン状態へ、あるいはリーン状態からリッチ状態へ変更されたことに伴って基準センサ２の基準信号（電圧値Ｖｉｎ）が変化し始める開始点を検出する処理が行われる。入力される基準信号（電圧値Ｖｉｎ）に対して行われる微分処理の結果に基づき、上述したフラグｓｔａｔｅの値が決定される。そしてフラグｓｔａｔｅの値は、次に目標空燃比が変更されたことに伴う基準信号の変化が検出されるまで、維持される構成となっている。すなわち、ｓｔａｔｅの値の変化するタイミングが、上記開始点となる。なお、立上り，立下り検出ブロック１０２は、後述する劣化信号生成プログラムのフローチャート（図５参照）では、基準信号の微分値ｄｕを求める移動平均算出処理（Ｓ５）、閾値ＵｐＰｅａｋ，ＤｏｗｎＰｅａｋを求めるピーク値検出処理（Ｓ６）、および閾値チェック処理（Ｓ７）に相当する。
【００４９】
次に、応答特性処理ブロック１０３では、ゲイン処理ブロック１０１でゲインの変更された第１中間信号（電圧値Ｖｉｎｔ１）の応答特性を変更する処理が行われる。ここで、目標空燃比がリッチ側からリーン側に変更された場合には、リッチ側で安定しているときに酸素センサの出力する電圧値から、リーン側で安定しているときに酸素センサの出力する電圧値へと電圧値が変化する。目標空燃比がリーン側からリッチ側に変更された場合についても同様である。本実施の形態における応答特性とは、目標空燃比の変更に伴い、電圧値が変化をし始めてから予め定められた値に達するまでにかかる時間（早さ）を示し、変化にかかる時間が短いほど（早いほど）良好な応答特性が示される。従って、酸素センサが劣化した場合、応答特性は低下し、電圧値の変化に、より時間がかかることとなる。
【００５０】
そこで、応答特性処理ブロック１０３では、ゲイン処理ブロック１０１において得られた第１中間信号（電圧値Ｖｉｎｔ１）に対し、以下の数式（１）を用いて、応答特性を変化させた第２中間信号（電圧値Ｖｉｎｔ２）を得る。
Ｖｉｎｔ２＝（１−α）×Ｖｉｎｔ１＋α×ｐｒｅｖＶｉｎｔ２・・・（１）
ただし、ｐｒｅｖＶｉｎｔ２は、前回のサンプリング時に算出されたＶｉｎｔ２の値である。
【００５１】
なお、立上り状態と立下り状態とで異なる変移率を用いて応答特性を変更することができるように、リーンリッチ変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔおよびリッチリーン変移率ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔを用い、係数αを以下の数式（２），（３）を用いて算出している。
目標空燃比がリーン側からリッチ側に変更されたことに伴う基準信号の変化が検出された状態（立上り状態）：
α＝ｅｘｐ｛−１／（１＋ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ／Ｔｓ）｝・・・（２）
目標空燃比がリッチ側からリーン側に変更されたことに伴う基準信号の変化が検出された状態（立下り状態）：
α＝ｅｘｐ｛−１／（１＋ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ／Ｔｓ）｝・・・（３）
ただし、Ｔｓはサンプリング間隔であり、本実施の形態では１ｍｓである。
【００５２】
応答特性処理ブロック１０３では、更に、第１オーバーシュートチェック処理を行っている。例えば、目標空燃比がリッチ側からリーン側に変更された場合、λ型酸素センサの出力する電圧値は高電位から低電位に変化する。このとき、上記の応答特性を変化させる処理を行ったことによって、電圧値が一時的に低電位から高電位に変化（変化方向が逆転）し、波打つように変化する場合がある。オーバーシュートチェック処理では、最終出力信号としての第３中間信号（電圧値Ｖｉｎｔ３）の変化方向に一時的な逆転が行われないように補正を行う処理である。なお、応答特性処理ブロック１０３は、後述する劣化信号生成プログラムのフローチャート（図５参照）では、応答特性処理（Ｓ９）、第１オーバーシュートチェック処理（Ｓ１０）に相当する。
【００５３】
次に、遅延処理ブロック１０４では、応答特性処理ブロック１０３で応答特性の変更された第３中間信号（電圧値Ｖｉｎｔ３）の遅延時間を変更し、劣化信号（電圧値Ｖｏｕｔ）として出力する処理が行われる。この処理ブロックでは、６００ｍｓ前に入力された第３中間信号の電圧値Ｖｉｎｔ３から今回入力された第３中間信号の電圧値Ｖｉｎｔ３まで記憶して保存している。そして、空燃比の状態がリッチ側（立上り状態）にあれば、リーンリッチ遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅで指定される遅延時間前に入力された第３中間信号（電圧値Ｖｉｎｔ３）を、第４中間信号（電圧値Ｖｉｎｔ４）として生成する。同様に、空燃比の状態がリーン側（立下り状態）にあれば、リッチリーン遅延時間ＬｅａｎＤｅｌａｙＴｉｍｅで指定される遅延時間前に入力された第３中間信号（電圧値Ｖｉｎｔ３）を、第５中間信号（電圧値Ｖｉｎｔ５）として生成する。
【００５４】
更に、第２オーバーシュートチェック処理を行い、上記した第１オーバーシュートチェック処理と同様に、立上り状態では第４中間信号（電圧値Ｖｉｎｔ４）に対し、立下り状態では第５中間信号（電圧値Ｖｉｎｔ５）に対し補正を行って劣化信号（電圧値Ｖｏｕｔ）を生成し、出力する。なお、遅延処理ブロック１０４は、後述する劣化信号生成プログラムのフローチャート（図５参照）では、遅延処理（Ｓ１１）、第２オーバーシュートチェック処理（Ｓ１３）に相当する。
【００５５】
このように、基準信号に対し、各処理ブロックにおける処理を施して劣化信号を生成する過程は、本実施の形態では、劣化信号生成プログラムによって実現されている。以下、図５〜図１８のフローチャートに従い、図１９〜図３０のグラフを参照しながら、劣化信号生成プログラムの実行によって基準信号が加工され、劣化信号として生成される過程について説明する。
【００５６】
図５は、劣化信号生成プログラムのメインルーチンのフローチャートである。図６は、ゲイン処理サブルーチンのフローチャートである。図７は、移動平均処理サブルーチンのフローチャートである。図８は、ピーク検出処理サブルーチンのフローチャートである。図９は、ピーク値の平均値算出処理サブルーチンのフローチャートである。図１０は、閾値チェック処理サブルーチンのフローチャートである。図１１は、応答特性処理サブルーチンのフローチャートである。図１２は、第１オーバーシュートチェック処理サブルーチンのフローチャートである。図１３は、応答特性立上り処理サブルーチンのフローチャートである。図１４は、応答特性立下り処理サブルーチンのフローチャートである。図１５は、遅延処理サブルーチンのフローチャートである。図１６は、第２オーバーシュートチェック処理サブルーチンのフローチャートである。図１７は、遅延立上り処理サブルーチンのフローチャートである。図１８は、遅延立下り処理サブルーチンのフローチャートである。以下、フローチャートの各ステップを「Ｓ」と略記する。
【００５７】
また、図１９は、目標空燃比をリッチ側とリーン側とに交番させた場合に得られる基準信号を時間軸に沿って示した例を示すグラフである。図２０は、図１９に示した基準信号のリッチ側のゲインを変更した劣化信号の例を示すグラフである。図２１は、図１９に示した基準信号のリーン側のゲインを変更した劣化信号の例を示すグラフである。図２２は、図１９に示した基準信号のリッチ側の応答特性を変更した劣化信号の例を示すグラフである。図２３は、図１９に示した基準信号のリーン側の応答特性を変更した劣化信号の例を示すグラフである。図２４は、第１オーバーシュートチェック処理について説明するため、図２３の円Ｑで示す部分を拡大したグラフである。図２５は、第１オーバーシュートチェック処理について説明するため、図２３の円Ｑで示す部分を拡大したグラフである。図２６は、図１９に示した基準信号のリッチ側の遅延時間を変更した劣化信号の例を示すグラフである。図２７は、図１９に示した基準信号のリーン側の遅延時間を変更した劣化信号の例を示すグラフである。図２８は、第２オーバーシュートチェック処理について説明するため、図２７の円Ｒで示す部分を拡大したグラフである。図２９は、第２オーバーシュートチェック処理について説明するため、図２７の円Ｒで示す部分を拡大したグラフである。図３０は、図１９に示した基準信号のゲインと応答特性と遅延時間とをリッチ側およびリーン側それぞれについて変更した劣化信号の例を示すグラフである。
【００５８】
センサシミュレータ１では、予め、利用者により各種設定値の入力が行われる。具体的には、基準信号のゲインを変更するためのリッチ側、リーン側それぞれにおける利得率（それぞれ変数ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎの値として利用される。）およびしきい値（変数ＧａｉｎＴｈｒｅｓｈｏｌｄの値として利用される。）と、基準信号の応答特性を変更するためのリッチ側、リーン側それぞれにおける変移率（それぞれ変数ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔの値として利用される。）と、基準信号の変化し始める開始点を変更するためのリッチ側、リーン側それぞれにおける遅延時間（それぞれ変数ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅの値として利用される。）とが設定される。これらの設定値は入力部６０の操作により行われ、ＥＥＰＲＯＭ１２の設定値記憶エリア１２１に記憶されることで、センサシミュレータ１の電源が落とされた後に再度使用される場合にも、以前入力された設定値が保存されるように構成されている。
【００５９】
センサシミュレータ１による基準センサ２の基準信号から劣化信号の生成は、図５に示す、劣化信号生成プログラムが、ＥＥＰＲＯＭ１２のプログラム記憶エリア１２２よりＲＡＭ１３のワークエリア１３１に読み込まれ実行されることによって開始される。図５に示す劣化信号生成プログラムでは、Ｓ１でまず初期化処理が行われた後、Ｓ２で１ｍｓ毎のリセット信号の受信待ちが行われる。本実施の形態では、劣化信号生成プログラムと並列に図示外のタイマプログラムが実行されており、１ｍｓ毎にリセット信号が出力されている。Ｓ２ではリセット信号の受信待ちが行われ、リセット信号の受信を契機にＳ３へ進むように構成されている。そしてＳ３〜Ｓ１３の各処理のサブルーチンが順にコールされて実行され、基準センサ２から取得される基準信号を元として劣化信号が生成されてＥＣＵ３に対し出力される。Ｓ１３の処理後にはＳ２に戻り、次のリセット信号の受信待ちが行われる。すなわち、基準信号を加工して劣化信号を生成するＳ３〜Ｓ１３の処理は、１ｍｓ毎に行われている。以下、劣化信号生成プログラムの具体的な処理内容について説明する。
【００６０】
初期化処理では、劣化信号生成プログラムで使用される各種変数の初期化が行われる（Ｓ１）。初期化は、ＥＥＰＲＯＭ１２の初期値記憶エリア１２３に記憶された初期値（前述）が読み込まれ、各変数の値として、ＲＡＭ１３の対応する変数記憶エリア１３２の記憶エリアに記憶されることで行われる。また、上記した、予め利用者により設定された７つの変数（ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎ，ＧａｉｎＴｈｒｅｓｈｏｌｄ，ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ，ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅ）の値がＥＥＰＲＯＭ１２の設定値記憶エリア１２１より読み込まれ、各変数の値として、対応する変数記憶エリア１３２の記憶エリアに記憶される。劣化信号生成プログラムのＳ１以降の処理では、各変数の値の読み出し、書き込み等はすべて、変数記憶エリア１３２に設けられた、それぞれの処理に対応する各変数の記憶エリアに対して行われる。そしてリセット信号の受信待ちが行われ（Ｓ２：ＮＯ）、リセット信号の受信を契機にゲイン処理のサブルーチンがコールされる（Ｓ２：ＹＥＳ，Ｓ３）。なお、Ｓ１において、予め利用者により入力部６０から入力されＥＥＰＲＯＭ１２に記憶され保存された遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅを、劣化信号生成プログラムで使用するため読み込み、ＲＡＭ１３の変数記憶エリアに記憶させるＣＰＵ１１が、本発明における「遅延時間設定手段」に相当する。同様に、Ｓ１において、予め利用者により入力部６０から入力されＥＥＰＲＯＭ１２に記憶され保存された利得率ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎを、劣化信号生成プログラムで使用するため読み込み、ＲＡＭ１３の変数記憶エリアに記憶させるＣＰＵ１１が、本発明における「利得率設定手段」に相当する。更に同様に、Ｓ１において、予め利用者により入力部６０から入力されＥＥＰＲＯＭ１２に記憶され保存された変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｔを、劣化信号生成プログラムで使用するため読み込み、ＲＡＭ１３の変数記憶エリアに記憶させるＣＰＵ１１が、本発明における「変移率設定手段」に相当する。
【００６１】
［ゲイン処理］
ゲイン処理は、基準信号の電圧値Ｖｉｎに対し、排気ガスの空燃比がリッチ側である場合とリーン側である場合とで異なる利得率ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎを掛け合わせて第１中間信号（電圧値Ｖｉｎｔ１）を得る処理である。本実施の形態の基準センサ２は、前述したように、λ型酸素センサである。λ型酸素センサは排気ガスの空燃比がリッチ側にあるとき、その排気ガスに曝されるλ型酸素センサの出力電圧値は約０．９Ｖを示し、リーン側にあるときには約０．０５Ｖを示すことが知られている。そして、混合気の目標空燃比が約１秒毎にリッチ側とリーン側とで交番された場合、λ型酸素センサ、すなわち基準センサ２の基準信号の電圧値は、図１９に示すように、約１秒毎に約０．０５Ｖと約０．９Ｖとの間で急峻な変化を示す。
【００６２】
図６に示すゲイン処理では、まず、Ａ／Ｄコンバータ３０を介して入力される基準センサ２の出力電圧が取得され、その電圧値が変数Ｖｉｎとして記憶される（Ｓ２１）。取得された基準信号の電圧値Ｖｉｎは、予め利用者に設定されたしきい値ＧａｉｎＴｈｒｅｓｈｏｌｄと比較される（Ｓ２２）。上記したように基準信号の電圧値は、約０．０５Ｖと約０．９Ｖとの間で変化するため、ＧａｉｎＴｈｒｅｓｈｏｌｄは通常、略中間の電圧値である０．４５Ｖに設定される。ＶｉｎがＧａｉｎＴｈｒｅｓｈｏｌｄよりも大きかった場合（Ｓ２２：ＹＥＳ）、取得された基準信号の電圧値は、空燃比がリッチ側にある場合の電圧値であると判断される。そして、基準信号のＧａｉｎＴｈｒｅｓｈｏｌｄを上回る分の電圧値に利得率ＲｉｃｈＧａｉｎを掛け合わせることでリッチ側のゲインのみを変更した第１中間信号（電圧値Ｖｉｎｔ１）が算出される（Ｓ２３）。具体的には、「ＧａｉｎＴｈｒｅｓｈｏｌｄ＋（Ｖｉｎ−ＧａｉｎＴｈｒｅｓｈｏｌｄ）×ＲｉｃｈＧａｉｎ」が計算され、その結果がＶｉｎｔ１に記憶される。ここで、基準信号に対し、空燃比がリッチ側である場合にのみゲインを変更した場合の例を、図２０に示す。図２０では、点線で示される基準信号（電圧値Ｖｉｎ）のグラフに対比させ、基準信号の電圧値がＧａｉｎＴｈｒｅｓｈｏｌｄとしての０．４５Ｖよりも大きな値を示す場合にのみ電圧値を減衰させた第１中間信号（電圧値Ｖｉｎｔ１）のグラフを１点鎖線で示している。従って基準信号の電圧値が０．４５Ｖ以下である場合には、第１中間信号のグラフは基準信号のグラフに一致した状態となる。なお、Ｓ２１で基準センサ２の基準信号を取得してＶｉｎとして記憶させるＣＰＵ１１が、本発明における「基準信号取得手段」に相当する。
【００６３】
一方、図６に示すように、ＶｉｎがＧａｉｎＴｈｒｅｓｈｏｌｄよりも小さかった場合（Ｓ２２：ＮＯ，Ｓ２５：ＹＥＳ）、同様に、取得された基準信号の電圧値は、空燃比がリーン側にある場合の電圧値であると判断される。そして、基準信号のＧａｉｎＴｈｒｅｓｈｏｌｄを下回る分の電圧値に利得率ＬｅａｎＧａｉｎを掛け合わせることでリーン側のゲインのみを変更した第１中間信号（電圧値Ｖｉｎｔ１）が算出される（Ｓ２６）。具体的には、「ＧａｉｎＴｈｒｅｓｈｏｌｄ−（ＧａｉｎＴｈｒｅｓｈｏｌｄ−Ｖｉｎ）×ＬｅａｎＧａｉｎ」が計算され、その計算結果がＶｉｎｔ１に記憶される。ここで、基準信号に対し、空燃比がリーン側である場合にのみゲインを変更した場合の例を、図２１に示す。図２１では、点線で示される基準信号（電圧値Ｖｉｎ）のグラフに対比させ、基準信号の電圧値がＧａｉｎＴｈｒｅｓｈｏｌｄとしての０．４５Ｖよりも小さな値を示す場合にのみ電圧値を増幅させた第１中間信号（電圧値Ｖｉｎｔ１）のグラフを１点鎖線で示している。従って基準信号の電圧値が０．４５Ｖ以上である場合には、第１中間信号のグラフは基準信号のグラフに一致した状態となる。なお、Ｓ２３またはＳ２６の処理で、基準信号のゲインを変更するＣＰＵ１１が、本発明における「ゲイン変更手段」に相当する。
【００６４】
また、図６に示すように、ＶｉｎがＧａｉｎＴｈｒｅｓｈｏｌｄと同じ値である場合には（Ｓ２２：ＮＯ，Ｓ２５：ＮＯ）、基準信号のゲインを変更する処理は行われず、その電圧値Ｖｉｎが第１中間信号の電圧値Ｖｉｎｔ１として記憶される（Ｓ２７）。このようにして第１中間信号の電圧値Ｖｉｎｔ１が求められた後には（Ｓ２３／Ｓ２６／Ｓ２７）、Ｓ２９に進む。そして、ゲインを変更したことによって電圧値Ｖｉｎｔ１が適正値、すなわち０Ｖ以上５Ｖ未満の範囲外となった場合、適正値の範囲内に収まるように補正が行われる。具体的には、Ｖｉｎｔ１が５Ｖ以上であれば（Ｓ２９：ＹＥＳ）、Ｖｉｎｔ１には４．９９Ｖが記憶される（Ｓ３０）。一方、Ｖｉｎｔ１が０Ｖ未満であれば（Ｓ２９：ＮＯ，Ｓ３１：ＹＥＳ）、Ｖｉｎｔ１には０Ｖが記憶される（Ｓ３３）。また、Ｖｉｎｔ１が０Ｖ以上５Ｖ未満であれば（Ｓ２９：ＮＯ，Ｓ３１：ＮＯ）、Ｖｉｎ１は適正値であると判断され、補正は行われない。こうしてＶｉｎｔ１に補正が行われた後には（Ｓ３０／Ｓ３３／Ｓ３１：ＮＯ）、メインルーチンに戻る。なお、上記した第１中間信号の電圧値の適正値の範囲は、任意に設定できるようにしてもよい。
【００６５】
［移動平均処理］
図５のメインルーチンでは、次に、移動平均処理のサブルーチンがコールされる（Ｓ５）。この移動平均処理では、後述する閾値チェック処理（Ｓ７）において、空燃比がリッチ側からリーン側、もしくはリーン側からリッチ側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値ｄｕを求める処理が行われる。もっとも、基準信号の短期間における大きな変動（揺らぎ）によって閾値チェック処理において誤判断が生じないように、微分値の平均値ｄｕは、今回の移動平均処理の実行時に求められる基準信号の微分値Ｖｄｉｆｆと、それ以前の９９回の移動平均処理の実行の度に求められた基準信号の微分値ｐｒｅｖＶｄｉｆｆ［１］〜ｐｒｅｖＶｄｉｆｆ［９９］とを合計した１００回分の微分値の平均値として算出される。
【００６６】
図７に示すように、移動平均処理では、このサブルーチンで用いられる変数ＶｄｉｆｆＳｕｍの初期化が行われ、０が記憶される（Ｓ４１）。次に、今回取得された基準信号の電圧値Ｖｉｎから、前回（１ｍｓ前に）取得された基準信号の電圧値ｐｒｅｖＶｉｎを差し引いた値が「Ｖｉｎ−ｐｒｅｖＶｉｎ」により算出され、今回取得した基準信号の微分値Ｖｄｉｆｆとして記憶される（Ｓ４２）。なお、前述したように基準信号は１ｍｓ毎に取得されるため、微分値Ｖｄｉｆｆは上記式「Ｖｉｎ−ｐｒｅｖＶｉｎ」により近似値として求められる。算出された微分値Ｖｄｉｆｆは、微分値の１００回分の平均値を求めるため、合算値ＶｄｉｆｆＳｕｍに記憶される（Ｓ４３）。
【００６７】
次のＳ４５〜Ｓ４９の処理では、過去９９回分の基準信号の微分値ｐｒｅｖＶｄｉｆｆ［１］〜ｐｒｅｖＶｄｉｆｆ［９９］を合算値ＶｄｉｆｆＳｕｍに順に加算する処理が行われる。まず、Ｓ４５で、変数ｉに１が記憶される（Ｓ４５）。次に、合算値ＶｄｉｆｆＳｕｍにｉ回前（ここでは１回前）に算出した微分値ｐｒｅｖＶｄｉｆｆ［ｉ（１）］を加算した値が、新しいＶｄｉｆｆＳｕｍとして記憶される（Ｓ４６）。そして変数ｉの値を１インクリメントして２とした後（Ｓ４７）、ｉ≦９９を満たすのでＳ４６に戻り（Ｓ４９：ＹＥＳ）、同様にＶｄｉｆｆＳｕｍにｐｒｅｖＶｄｉｆｆ［ｉ（２）］を加算する処理が行われる。この一連の処理は、ｉの値が９９を超えると終了され（Ｓ４９：ＮＯ）、処理後には、ＶｄｉｆｆＳｕｍに、Ｖｄｉｆｆ＋ｐｒｅｖＶｄｉｆｆ［１］＋ｐｒｅｖＶｄｉｆｆ［２］＋・・・＋ｐｒｅｖＶｄｉｆｆ［９９］を計算した結果が記憶されることとなる。従って、今回の基準信号の微分値と、過去９９回分の基準信号の微分値とを合わせ１００回分の微分値の合算値がＶｄｉｆｆＳｕｍとして記憶されているので、Ｓ５０では、これを１００で割って平均値を算出し、その結果が微分値の平均値ｄｕとして記憶される（Ｓ５０）。
【００６８】
次のＳ５１〜Ｓ５７の処理では、次回の移動平均処理の実行時において微分値の平均値の算出に用いるため、微分値ｐｒｅｖＶｄｉｆｆ［ｉ］を更新する処理が行われる。まず、Ｓ５１で、変数ｉに９９が記憶される（Ｓ５１）。次に、ｐｒｅｖＶｄｉｆｆ［ｉ（９９）］にｐｒｅｖＶｄｉｆｆ［ｉ−１（９８）］の値を記憶する処理が行われる（Ｓ５３）。そして、ｉの値が１デクリメントされて９８となり（Ｓ５４）、ｉ≧２を満たすのでＳ５３に戻り（Ｓ５５：ＹＥＳ）、同様にｐｒｅｖＶｄｉｆｆ［ｉ（９８）］にｐｒｅｖＶｄｉｆｆ［ｉ−１（９７）］を記憶する処理が行われる。この一連の処理は、ｉの値が２未満となるまで継続され（Ｓ５５：ＮＯ）、ｐｒｅｖＶｄｉｆｆ［９９］〜ｐｒｅｖＶｄｉｆｆ［２］までの値がそれまでのｐｒｅｖＶｄｉｆｆ［９８］〜ｐｒｅｖＶｄｉｆｆ［１］の値でそれぞれ上書き記憶され、更新される。そして最後に今回算出された微分値ＶｄｉｆｆがｐｒｅｖＶｄｉｆｆ［１］に上書き記憶されて、更新が終了する（Ｓ５７）。更に、基準信号の電圧値Ｖｉｎが、次回の移動平均処理の実行時にＳ４２で利用される、前回の基準信号の電圧値ｐｒｅｖＶｉｎとして記憶され（Ｓ５８）、メインルーチンに戻る。
【００６９】
［ピーク値検出処理］
図５のメインルーチンでは、次に、ピーク値検出処理のサブルーチンがコールされる（Ｓ６）。このピーク値検出処理では、後述する閾値チェック処理（Ｓ７）において、空燃比がリーン側からリッチ側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値ｄｕに対する閾値ＵｐＴｈｒｅｓｈｏｌｄと、空燃比がリッチ側からリーン側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値ｄｕに対する閾値ＤｏｗｎＴｈｒｅｓｈｏｌｄとを求める処理が行われる。もっとも、微分値の平均値ｄｕの推移はセンサの種類が異なれば違う値を示すため、１秒毎に、その１秒間の微分値の平均値ｄｕの最大値（立上りピーク値）および最小値（立下りピーク値）を求める。そして、過去３秒分の立上り，立下りピーク値の平均値を元に閾値ＵｐＴｈｒｅｓｈｏｌｄ，ＤｏｗｎＴｈｒｅｓｈｏｌｄを算出することで、そのセンサに合わせた閾値を得る処理が行われる。
【００７０】
図８に示すように、ピーク値検出処理では、ピーク値のサンプリングを行う１秒間を計時するために用いられるカウント値ＳｔｅｐＣｏｕｎｔが確認され、１０００未満であれば、ピーク値のサンプリング中であると判断される（Ｓ６１：ＹＥＳ）。そして、移動平均処理で求められた微分値の平均値ｄｕが、サンプリングを行う１秒間の最大値として記憶される立上りピーク値ｔｍｐＵｐＰｅａｋよりも大きければ（Ｓ６２：ＹＥＳ）、ｔｍｐＵｐＰｅａｋにｄｕが記憶され、立上りピーク値が更新される（Ｓ６３）。一方、微分値の平均値ｄｕが立上りピーク値ｔｍｐＵｐＰｅａｋ以下であり（Ｓ６２：ＮＯ）、サンプリングを行う１秒間の最小値として記憶される立下りピーク値ｔｍｐＤｏｗｎＰｅａｋよりも小さければ（Ｓ６５：ＹＥＳ）、同様に、ｔｍｐＤｏｗｎＰｅａｋにｄｕが記憶され、立下りピーク値が更新される（Ｓ６６）。また、微分値の平均値ｄｕが立上りピーク値ｔｍｐＵｐＰｅａｋ以下（Ｓ６２：ＮＯ）、であり、更に立下りピーク値ｔｍｐＤｏｗｎＰｅａｋ以上でもある場合（Ｓ６５：ＮＯ）、ピーク値の更新は行われない。そして、上記いずれの処理が行われた後でも（Ｓ６３／Ｓ６６／Ｓ６５：ＮＯ）、ＳｔｅｐＣｏｕｎｔのインクリメントが行われ（Ｓ６７）、その後メインルーチンに戻る。
【００７１】
ところで、前述したように、図５のメインルーチンのＳ３〜Ｓ１３の処理は１ｍｓ毎に実行される。従って、図８のピーク値検出処理においても１ｍｓ毎にＳ６７の処理が実行されることとなり、ＳｔｅｐＣｏｕｎｔは増加し続ける。Ｓ１の初期化処理（図５参照）後、あるいは後述するＳ７０でＳｔｅｐＣｏｕｎｔがリセットされた後、メインルーチンの処理が１ｍｓ毎に繰り返し実行され、１秒が経過してＳｔｅｐＣｏｕｎｔが１０００となった場合には（Ｓ６１：ＮＯ）、ピーク値の平均値算出処理のサブルーチンがコールされる（Ｓ６９）。
【００７２】
図９に示すように、ピーク値の平均値算出処理では、まず、直近の１秒間に検出された立上りピーク値ｔｍｐＵｐＰｅａｋが、前回の１秒間に検出された立上りピーク値ｐｒｅｖＵｐＰｅａｋ１の１／３より大きいか否か、確認が行われる（Ｓ９１）。ｔｍｐＵｐＰｅａｋがｐｒｅｖＵｐＰｅａｋ１の１／３以下の値を示した場合（Ｓ９１：ＮＯ）、今回検出された１秒間の立上りピーク値ｔｍｐＵｐＰｅａｋはノイズであったと判断される。そして前回の１秒間に検出された立上りピーク値ｐｒｅｖＵｐＰｅａｋ１を０．９倍した値がｔｍｐＵｐＰｅａｋとして記憶され（Ｓ９２）、Ｓ９３に進む。また、ｔｍｐＵｐＰｅａｋがｐｒｅｖＵｐＰｅａｋ１の１／３より大きい値を示した場合には（Ｓ９１：ＹＥＳ）、そのままＳ９３に進む。Ｓ９３では、最新の３回分の立上りピーク値の平均値が求められる。具体的には「（ｔｍｐＵｐＰｅａｋ＋ｐｒｅｖＵｐＰｅａｋ１＋ｐｒｅｖＵｐＰｅａｋ２）／３」が計算され、その計算結果が立上りピーク値平均値ＵｐＰｅａｋに記憶される（Ｓ９３）。
【００７３】
立下りピーク値についても同様の処理が行われる。すなわち、直近の１秒間に検出された立下りピーク値ｔｍｐＤｏｗｎＰｅａｋが、前回の１秒間に検出された立下りピーク値ｐｒｅｖＤｏｗｎＰｅａｋ１の１／３以上の値を示した場合（Ｓ９５：ＮＯ）、今回検出された１秒間の立下りピーク値ｔｍｐＤｏｗｎＰｅａｋがノイズであったと判断される。そして前回の１秒間に検出された立下りピーク値ｐｒｅｖＤｏｗｎＰｅａｋ１を０．９倍した値がｔｍｐＤｏｗｎＰｅａｋとして記憶され（Ｓ９６）、Ｓ９７に進む。ｔｍｐＤｏｗｎＰｅａｋがｐｒｅｖＤｏｗｎＰｅａｋ１の１／３より小さい値を示した場合には（Ｓ９５：ＹＥＳ）、そのままＳ９７に進む。Ｓ９７では、同様に、最新の３回分の立下りピーク値の平均値が求められる。具体的には「（ｔｍｐＤｏｗｎＰｅａｋ＋ｐｒｅｖＤｏｗｎＰｅａｋ１＋ｐｒｅｖＤｏｗｎＰｅａｋ２）／３」が計算され、その計算結果が立下りピーク値平均値ＤｏｗｎＰｅａｋに記憶される（Ｓ９７）。
【００７４】
次いで、１秒後に行われる次回のピーク値の平均値算出処理の実行時において立上りピーク値の平均値、および立下りピーク値の平均値の算出に用いるため、各変数が更新される。具体的には、前回の１秒間に検出された立上り，立下りピーク値ｐｒｅｖＵｐＰｅａｋ１，ｐｒｅｖＤｏｗｎＰｅａｋ１が、前々回の１秒間に検出された立上り，立下りピーク値ｐｒｅｖＵｐＰｅａｋ２，ｐｒｅｖＤｏｗｎＰｅａｋ２として上書き記憶される。そして、直近の１秒間に検出された立上り，立下りピーク値ｔｍｐＵｐＰｅａｋ，ｔｍｐＤｏｗｎＰｅａｋが、前回の１秒間に検出された立上り，立下りピーク値ｐｒｅｖＵｐＰｅａｋ１，ｐｒｅｖＤｏｗｎＰｅａｋ１として上書き記憶される。更に、ｔｍｐＵｐＰｅａｋおよびｔｍｐＤｏｗｎＰｅａｋには０が記憶され、立上りピーク値および立下りピーク値がリセットされる（Ｓ９９）。
【００７５】
その後、図８に示すピーク値検出処理サブルーチンに戻ると、次に、ＳｔｅｐＣｏｕｎｔに０が記憶され、次の１秒間の立上り，立下りピーク値の検出を行うための計時がリセットされる（Ｓ７０）。次のＳ７１〜Ｓ８１の処理では、ピーク値の平均値算出処理で求められた立上り，立下りピーク値平均値ＵｐＰｅａｋ，ＤｏｗｎＰｅａｋがそれぞれ適正値の範囲内に収まるように補正が行われる。具体的には、ＵｐＰｅａｋは、０以上０．００６７以下の値を示せば（Ｓ７１：ＮＯ，Ｓ７４：ＮＯ）、適正値であると判断される。そしてＵｐＰｅａｋが０未満であれば（Ｓ７１：ＹＥＳ）、ＵｐＰｅａｋには０．００５が記憶される（Ｓ７３）。一方、ＵｐＰｅａｋが０．００６７より大きければ（Ｓ７１：ＮＯ，Ｓ７４：ＹＥＳ）、ＵｐＰｅａｋには０．００６７が記憶される（Ｓ７５）。
【００７６】
ＵｐＰｅａｋの補正が行われた後には（Ｓ７３／Ｓ７５／Ｓ７４：ＮＯ）、Ｓ７７に進み、ＤｏｗｎＰｅａｋについても同様の補正が行われる。すなわち、ＤｏｗｎＰｅａｋが−０．００６７以上０以下の値を示せば（Ｓ７７：ＮＯ，Ｓ７９：ＮＯ）、適正値であると判断される。そしてＤｏｗｎＰｅａｋが０より大きければ（Ｓ７７：ＹＥＳ）、ＤｏｗｎＰｅａｋには−０．００５が記憶される（Ｓ７８）。一方、ＤｏｗｎＰｅａｋが−０．００６７未満であれば（Ｓ７７：ＮＯ，Ｓ７９：ＹＥＳ）、ＤｏｗｎＰｅａｋには−０．００６７が記憶される（Ｓ８１）。こうしてＤｏｗｎＰｅａｋについても補正が行われた後には（Ｓ７８／Ｓ８１／Ｓ７９：ＮＯ）、Ｓ８２に進む。
【００７７】
Ｓ８２の処理では、次の閾値チェック処理（Ｓ７）において用いられる閾値ＵｐＴｈｒｅｓｈｏｌｄ，ＤｏｗｎＴｈｒｅｓｈｏｌｄを求める処理が行われる（Ｓ８２）。本実施の形態では、ＵｐＴｈｒｅｓｈｏｌｄとして、立上りピーク値平均値ＵｐＰｅａｋの０．１５倍の値が設定され、ＤｏｗｎＴｈｒｅｓｈｏｌｄとしては、立下りピーク値平均値ＤｏｗｎＰｅａｋの０．１５倍の値が設定される構成となっている。その後メインルーチンに戻る。なお、上記のように求められたＵｐＴｈｒｅｓｈｏｌｄおよびＤｏｗｎＴｈｒｅｓｈｏｌｄは、ＳｔｅｐＣｏｕｎｔが１０００未満であるうちは、最後にＳ８２の処理が実行された際に算出された値が保存され、次の閾値チェック処理で利用されることとなる。
【００７８】
［閾値チェック処理］
次に、図５のメインルーチンでは、閾値チェック処理のサブルーチンがコールされる（Ｓ７）。閾値チェック処理は、移動平均処理で求めた基準信号の微分値の平均値ｄｕを、ピーク値検出処理で求めた閾値ＵｐＴｈｒｅｓｈｏｌｄ，ＤｏｗｎＴｈｒｅｓｈｏｌｄと比較して、立上り状態にあるか立下り状態にあるかを判定するための処理である。
【００７９】
図１０に示すように、閾値チェック処理では、前回（１ｍｓ前）、閾値チェック処理が実行された際に判定された空燃比の変化の検出結果を示すフラグｓｔａｔｅの値を記憶したｐｒｅｖＳｔａｔｅ１を、今回の処理において新たに用いるため、ｓｔａｔｅにコピーし記憶させる処理が行われる（Ｓ１０１）。次に、ｄｕとＵｐＴｈｒｅｓｈｏｌｄが比較され、ｄｕがＵｐＴｈｒｅｓｈｏｌｄを上回った場合には（Ｓ１０２：ＹＥＳ）、基準信号の電圧値が急激に上昇しており、空燃比がリーン側からリッチ側に変更された立上り状態にあると判定され、ｓｔａｔｅに１が記憶される（Ｓ１０３）。同様に、ｄｕがＤｏｗｎＴｈｒｅｓｈｏｌｄを下回った場合には（Ｓ１０２：ＮＯ，Ｓ１０５：ＹＥＳ）、基準信号の電圧値が急激に下降しており、空燃比がリッチ側からリーン側に変更された立下り状態にあると判定され、ｓｔａｔｅに−１が記憶される（Ｓ１０６）。そして、ｄｕがＤｏｗｎＴｈｒｅｓｈｏｌｄ以上ＵｐＴｈｒｅｓｈｏｌｄ以下であれば（Ｓ１０２：ＮＯ，Ｓ１０５：ＮＯ）、前回判定されたフラグの値を変更しない。このように、空燃比の状態について判定がなされた後には（Ｓ１０３／Ｓ１０６／Ｓ１０５：ＮＯ）、次回の閾値チェック処理で利用するため現在のｓｔａｔｅの値をｐｒｅｖＳｔａｔｅ１に記憶させて保存してから（Ｓ１０７）、メインルーチンに戻る。なお、Ｓ１０２においてｄｕがＵｐＴｈｒｅｓｈｏｌｄを上回り、立上り状態と判定し、ｓｔａｔｅの値として新たに１を設定し直す時点が、本発明における「リーンリッチ変化開始点」であり、Ｓ１０３においてｄｕがＤｏｗｎＴｈｒｅｓｈｏｌｄを下回り、立下り状態と判定し、ｓｔａｔｅの値として新たに−１を設定し直す時点が、本発明における「リッチリーン変化開始点」である。そして、このＳ１０２，Ｓ１０３の判定処理を行うＣＰＵ１１が、本発明における「空燃比変化開始点検出手段」に相当する。
【００８０】
ここで、図１９のグラフを参照し、閾値チェック処理の動作の具体例について説明する。目標空燃比がリーン側からリッチ側に変更されると、基準信号の電圧値（出力電圧）は、区間［Ａ−Ｂ］に示されるように急激に上昇する。つまり、基準信号の微分値の平均値ｄｕは大きな値となり、この区間ではｄｕ＞ＵｐＴｈｒｅｓｈｏｌｄを満たし、立上り状態にあると判定され、ｓｔａｔｅに１が記憶されることとなる。そして基準信号の電圧値が約０．９Ｖに達して安定する区間［Ｂ−Ｃ］では、基準信号の微分値の平均値ｄｕは０に近づくが、ＤｏｗｎＴｈｒｅｓｈｏｌｄを下回ることはない。この区間では、ｐｒｅｖＳｔａｔｅ１からコピーされる前回のｓｔａｔｅの値がそのまま維持されるため、ｓｔａｔｅは１であって立上り状態が維持される。次に目標空燃比がリッチ側からリーン側に変更されると、区間［Ｃ−Ｄ］に示されるように、基準信号の電圧値が急激に下降する。基準信号の微分値の平均値ｄｕは負側で大きな値となり、この区間ではｄｕ＜ＤｏｗｎＴｈｒｅｓｈｏｌｄを満たし、立下り状態にあると判定され、ｓｔａｔｅに−１が記憶されることとなる。そして基準信号の電圧値が約０．０５Ｖとなって安定する区間［Ｄ−Ｅ］では、基準信号の微分値の平均値ｄｕは０に近づくが、ＵｐＴｈｒｅｓｈｏｌｄを下回ることはない。この区間では、上記同様、ｐｒｅｖＳｔａｔｅ１からコピーされる前回のｓｔａｔｅの値がそのまま維持されるため、ｓｔａｔｅは−１であって立下り状態が維持されることとなる。このようにして判定された空燃比の状態は、Ｓ９の応答特性処理、Ｓ１０の第１オーバーシュートチェック処理およびＳ１３の第２オーバーシュートチェック処理で利用される。
【００８１】
［応答特性処理］
次に、図５のメインルーチンでは、応答特性処理のサブルーチンがコールされる（Ｓ９）。応答特性処理は、空燃比が立上り状態にある場合と立下り状態にある場合とで異なる変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔを用い、基準信号（電圧値Ｖｉｎ）（本実施の形態ではゲイン処理後の第１中間信号（電圧値Ｖｉｎｔ１））の応答特性を変更した第２中間信号（電圧値Ｖｉｎｔ２）を得る処理である。
【００８２】
図１１に示す応答特性処理では、まず、閾値チェック処理で得たフラグｓｔａｔｅの値が参照され、０より大きいか否か確認が行われる（Ｓ１１１）。立上り状態にある場合、ｓｔａｔｅは１であり（Ｓ１１１：ＹＥＳ）、変移率としてリーンリッチ変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔが選択される。そして、前述した数式（２）を用い、係数αが計算され、計算結果が記憶される（Ｓ１１２）。一方、立下り状態にあり、ｓｔａｔｅが−１だった場合も同様で（Ｓ１１１：ＮＯ）、変移率としてリッチリーン変移率ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔが選択される。そして、前述した数式（３）を用い、係数αが計算され、計算結果が記憶される（Ｓ１１３）。
【００８３】
そして前述した数式（１）を用い、第１中間信号の電圧値Ｖｉｎｔ１の応答特性を変更した第２中間信号の電圧値Ｖｉｎｔ２が算出される（Ｓ１１５）。このとき、Ｓ１１２またはＳ１１３の処理の実行により算出された係数αと、前回の応答特性処理の実行時に求められたＶｉｎｔ２を記憶したｐｒｅｖＶｉｎｔ２とが数式（１）の変数として用いられる。その後メインルーチンに戻る。なお、Ｓ１１２またはＳ１１３の処理で算出した係数αを用い、Ｓ１１５の処理で基準信号（本実施の形態では第１中間信号）の応答特性を変更するＣＰＵ１１が、本発明における「変移時間変更手段」に相当する。
【００８４】
［第１オーバーシュートチェック処理］
ところで、空燃比が変更された場合、第２中間信号の算出にそれまで用いられていた変移率（ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔもしくはＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ）が他方の変移率（ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔもしくはＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ）に置き換えられることとなる。この変移率が置き換えられるタイミングは、空燃比の変更に伴う基準信号の変化が検出されたタイミングであり、基準信号の電圧値Ｖｉｎ（本実施の形態では第１中間信号の電圧値Ｖｉｎｔ１）が、既に大きく変化（増加または減衰）を始めている場合がある。このため、上記タイミングにおいて、算出される第２中間信号の電圧値Ｖｉｎｔ２の変化方向が一時的に逆転することがある。例えば、空燃比がリーン側からリッチ側に変更された場合、第２中間信号の電圧値Ｖｉｎｔ２は低電位から高電位に変化するが、上記タイミングにおいて、一時的に高電位から低電位に変化し、その信号波形が波打つように変化する場合がある。その一例を、図２４のグラフに示す。
【００８５】
図２４では、Ｆタイミング以前において、空燃比がリーン側であることが検出されて立下り状態と判定され、ｓｔａｔｅには−１が記憶されており、第２中間信号（電圧値Ｖｉｎｔ２）として出力される信号には、ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔを用いて算出された立下り時の信号（図２４では２点鎖線で示し、ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ＝０であるので基準信号（図示しない）と一致している。）となる。そして空燃比がリッチ側に変更されたことが検出されたＦタイミング以降は、立上り状態と判定されてｓｔａｔｅが１となるので、第２中間信号（電圧値Ｖｉｎｔ２）として出力される信号には、ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔを用いて算出された立上り時の信号（図２４では１点鎖線で示す。）となる。このＦタイミングにおいて、立下り時の第２中間信号の電圧値Ｖｉｎｔ２は、立上り時の第２中間信号の電圧値Ｖｉｎｔ２よりも高い値であり、両者を結合して出力される第２中間信号（電圧値Ｖｉｎｔ２）は、Ｆタイミングにおいて、本来なら立上り状態であるので電圧値の変化が上昇となるところが大きく下降し（図中矢印で示す。）、その後上昇していくグラフを描くこととなる。
【００８６】
第１オーバーシュートチェック処理では、このＦタイミング以後、立上り状態にありながら電圧値がＦタイミングのときの値よりも減少した現象の補正が行われ、空燃比がリッチ側からリーン側に変更された場合についても同様に補正が行われる。すなわち、空燃比がリーン側からリッチ側に変更され、基準信号の電圧値が上昇中にある場合に、一時的な電圧値の下降が生ずることがなく、また、空燃比がリッチ側からリーン側に変更され、基準信号の電圧値が下降中にある場合に、一時的な電圧値の上昇が生ずることがないように、電圧値の補正が行われる。図２４を参照した具体例で示すと、Ｆタイミング直前（１ｍｓ前）の立下り時のＶｉｎｔ２の値をＶｂａｓｅとして保存し、Ｇタイミングにおいて立上り時のＶｉｎｔ２の値がＶｂａｓｅに一致するまで、ＦタイミングからＧタイミングまでの間の立上り時のＶｉｎｔ２の値をＶｂａｓｅで置換することで補正が行われる。これにより、図２５に示す例では、第１オーバーシュートチェック処理の結果得られる第３中間信号（電圧値Ｖｉｎｔ３）の描く曲線（図２５では実線で示される。）は、ＦタイミングからＧタイミングまでの間、電圧値が一定（Ｖｂａｓｅ）の直線で置換されたグラフとなる。
【００８７】
上記のようにＶｉｎｔ２を補正したＶｉｎｔ３を得るため、図５のメインルーチンにおいて第１オーバーシュートチェック処理のサブルーチンがコールされる（Ｓ１０）。第１オーバーシュートチェック処理では、図１２に示すように、まず、閾値チェック処理で得たフラグｓｔａｔｅの値が参照され、０より大きいか否か確認が行われる（Ｓ１２１）。図２４に示したグラフを例に説明すると、Ｆタイミング（図２４参照）以前には、空燃比がリッチ側からリーン側に変更されたと検出された状態（立下り状態）にあり、ｓｔａｔｅは−１であるので（Ｓ１２１：ＮＯ）、応答特性立下り処理のサブルーチンがコールされる（Ｓ１２３）。
【００８８】
図１４に示す応答特性立下り処理では、前回（１ｍｓ前）の空燃比の移行状態を示すフラグｓｔａｔｅの値を記憶して保存したｐｒｅｖＳｔａｔｅ２の値が参照され、０より大きいか否か確認が行われる（Ｓ１５１）。Ｆタイミング以前には、ｐｒｅｖＳｔａｔｅ２が−１であるので（Ｓ１５１：ＮＯ）、前回も今回も空燃比はリーン側にあり、変更されていないと判断され、そのままＳ１５５に進む。空燃比の状態（ｓｔａｔｅの値）に変化が生ずる前にはＣｈｅｃｋＦｌａｇの値が０となっており（Ｓ１５５：ＮＯ）、第２中間信号の電圧値Ｖｉｎｔ２はそのまま第３中間信号の電圧値Ｖｉｎｔ３として記憶されて（Ｓ１６１）、図１２に示す第１オーバーシュートチェック処理のサブルーチンに戻る。そして、次回の第１オーバーシュートチェック処理で用いるため、ｓｔａｔｅの値がｐｒｅｖＳｔａｔｅ２に記憶されて保存される。更に第２中間信号の電圧値Ｖｉｎｔ２を次回の応答特性処理の実行の際に利用するため、Ｖｉｎｔ２の値がｐｒｅｖＶｉｎｔ２に記憶されて保存され（Ｓ１２５）、メインルーチンに戻る。
【００８９】
時間が経過し、メインルーチンの処理が１ｍｓ毎に繰り返し実行されてＦタイミング（図２４参照）となったときには、空燃比がリーン状態からリッチ状態に変更されたことが検出されてｓｔａｔｅには１が記憶され、図１２に示す第１オーバーシュートチェック処理において応答特性立上り処理のサブルーチンがコールされる（Ｓ１２１：ＹＥＳ，Ｓ１２２）。
【００９０】
図１３に示す応答特性立上り処理では、Ｆタイミング（図２４参照）以前のｓｔａｔｅの値を記憶したｐｒｅｖＳｔａｔｅ２の値は−１であるので（Ｓ１５１：ＹＥＳ）、空燃比の状態がリーン側からリッチ側に変更されたと判断される。そして、Ｖｉｎｔ２の値の補正が必要なときに置き換えにより補正するための補正値Ｖｂａｓｅとして、前回（１ｍｓ前）算出された立下り時の第２中間信号の電圧値Ｖｉｎｔ２を保存したｐｒｅｖＶｉｎｔ２の値がコピーされ記憶される（Ｓ１３２）。更にＣｈｅｃｋＦｌａｇに１が記憶される（Ｓ１３３）。
【００９１】
次に、Ｓ１３５ではＣｈｅｃｋＦｌａｇが１であるので（Ｓ１３５：ＹＥＳ）、Ｖｉｎｔ２の値の補正を行う必要があるか判定するため、Ｖｉｎｔ２がＶｂａｓｅより小さいか否かの確認が行われる（Ｓ１３６）。Ｆタイミングでは、ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔを用いて算出されたＶｉｎｔ２の値がＶｂａｓｅよりも小さいのでＶｉｎｔ２に対し補正を行う必要があり（Ｓ１３６：ＹＥＳ）、Ｖｉｎｔ３にＶｂａｓｅの値が記憶されて（Ｓ１３７）、第１オーバーシュートチェック処理のサブルーチンに戻る。
【００９２】
Ｆタイミング以後、空燃比の状態がリッチ側であるためｓｔａｔｅは１を示し、第１オーバーシュートチェック処理では継続して応答特性立上り処理のサブルーチンがコールされる（図１２：Ｓ１２１：ＹＥＳ）。立上り状態の継続時にはｐｒｅｖＳｔａｔｅ２にも１が記憶されているため（Ｓ１３１：ＮＯ）、Ｖｂａｓｅの値はＦタイミングにおいて応答特性立上り処理が実行されたときに記憶された値が維持される。更にＣｈｅｃｋＦｌａｇにも１が記憶された状態が維持されるため（Ｓ１３５：ＹＥＳ）、ＦタイミングからＧタイミングまでの期間のように、Ｖｉｎｔ２（図２４参照）はＶｂａｓｅで置換され（Ｓ１３６：ＹＥＳ）、上記同様、直線近似されたＶｉｎｔ３（図２５参照）が得られる（Ｓ１３７）。
【００９３】
更に時間が経過し、Ｇタイミングとなったときには、Ｖｉｎｔ２の値がＶｂａｓｅ以上となるため、図１３に示す応答特性立上り処理のＳ１３６においてＳ１３９に進む（Ｓ１３６：ＮＯ）。Ｖｉｎｔ２を補正する必要がなくなるため、Ｖｉｎｔ３にはＶｉｎｔ２が記憶され（Ｓ１３９）、更にＣｈｅｃｋＦｌａｇには０が記憶されて（Ｓ１４０）、第１オーバーシュートチェック処理のサブルーチンに戻る。
【００９４】
Ｇタイミング以後も、空燃比の状態がリッチ側であるためｓｔａｔｅもｐｒｅｖＳｔａｔｅ２も１となっている。第１オーバーシュートチェック処理では継続して応答特性立上り処理のサブルーチンがコールされる（図１２：Ｓ１２１：ＹＥＳ）。そして応答特性立上り処理では、ＣｈｅｃｋＦｌａｇが０となっているのでＶｉｎｔ２がそのままＶｉｎｔ３に記憶されて（Ｓ１３１：ＮＯ，Ｓ１３５：ＮＯ，Ｓ１４１）、第１オーバーシュートチェック処理のサブルーチンに戻る。
【００９５】
このようにして生成される第３中間信号（電圧値Ｖｉｎｔ３）の描くグラフの一例を図２３に示す。図２３では、基準信号（電圧値Ｖｉｎ）に対し、ゲイン処理および空燃比のリーン側からリッチ側への変更に伴う応答特性処理を行っていない。そして、空燃比のリッチ側からリーン側への変更が検出された際（図１９の区間［Ｃ−Ｅ］に相当する。）に生成される第２中間信号（電圧値Ｖｉｎｔ２）に対し第１オーバーシュートチェック処理を行って生成した第３中間信号（電圧値Ｖｉｎｔ３）の描くグラフ（図中１点鎖線で示す。）を、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示す。）と対比させた。リッチリーン変移率ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔを用いて算出されたことによって応答特性が劣化した第３中間信号では、基準信号の電圧値Ｖｉｎの高電位から低電位への変化と比べ、電圧値Ｖｉｎｔ３の高電位から低電位への変化に時間がかかっている様子がわかる。そして第１オーバーシュートチェック処理によって、Ｖｉｎｔ３が高電位から低電位に変化する途中で一時的に低電位から高電位に変化する現象が生じないように補正された様子も確認できる。
【００９６】
なお、図１４に示す応答特性立下り処理は、上記説明した図１３に示す応答特性立上り処理に対し対称となる処理を、空燃比がリッチ側からリーン側へ変更された際に行うものである。従って、応答特性立上り処理におけるＳ１３１〜Ｓ１４１の処理はそれぞれ、応答特性立下り処理におけるＳ１５１〜Ｓ１６１の処理にそれぞれ対応し、Ｓ１５１およびＳ１５６における不等号の向きが逆となる以外、同一の処理内容となる。具体的には図１４に示すように、空燃比がリッチ側からリーン側に変更されたことが基準信号の変化に基づき検出されたタイミング（ｓｔａｔｅ＝−１，ｐｒｅｖＳｔａｔｅ２＝１）には、（Ｓ１２１：ＮＯ，Ｓ１２３（図１２参照），Ｓ１５１：ＹＥＳ）、前回（１ｍｓ前）のＶｉｎｔ２を保存したｐｒｅｖＶｉｎｔ２がＶｂａｓｅに記憶され（Ｓ１５２）、ＣｈｅｃｋＦｌａｇに１が記憶される（Ｓ１５３）。そしてＶｉｎｔ２の値がＶｂａｓｅより大きく補正を行う必要があれば（Ｓ１５５：ＹＥＳ，Ｓ１５６：ＹＥＳ）、Ｖｉｎｔ２をＶｂａｓｅで置換するため、ＶｂａｓｅがＶｉｎｔ３に記憶される（Ｓ１５７）。その後もＶｂａｓｅによるＶｉｎｔ２の置換が継続されるが（Ｓ１５１：ＮＯ，Ｓ１５５：ＹＥＳ，Ｓ１５６：ＹＥＳ，Ｓ１５７）、ＶｂａｓｅがＶｉｎｔ２以下の値となったタイミング以降は（Ｓ１５６：ＮＯ）、Ｖｉｎｔ２を補正する必要がなくなるため、Ｖｉｎｔ３にはＶｉｎｔ２が記憶され（Ｓ１５９）、更にＣｈｅｃｋＦｌａｇには０が記憶される（Ｓ１６０）。それ以後も空燃比の状態はリーン側であるためｓｔａｔｅもｐｒｅｖＳｔａｔｅ２も−１であり、（Ｓ１２１：ＮＯ，Ｓ１２３（図１２参照），Ｓ１５１：ＮＯ）、ＣｈｅｃｋＦｌａｇも０となっているのでＶｉｎｔ２がそのままＶｉｎｔ３として記憶される（Ｓ１５５：ＮＯ，Ｓ１６１）。
【００９７】
このときに生成される第３中間信号（電圧値Ｖｉｎｔ３）の描くグラフの一例を図２２に示す。図２２では、基準信号（電圧値Ｖｉｎ）に対し、ゲイン処理および空燃比のリッチ側からリーン側への変更に伴う応答特性処理を行っていない。そして、空燃比のリーン側からリッチ側への変更が検出された際（図１９の区間［Ａ−Ｃ］に相当する。）に生成される第２中間信号（電圧値Ｖｉｎｔ２）に対し第１オーバーシュートチェック処理を行って生成した第３中間信号（電圧値Ｖｉｎｔ３）の描くグラフ（図中１点鎖線で示す。）を、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示す。）と対比させた。リーンリッチ変移率ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔを用いて算出されたことによって応答特性が劣化した第３中間信号では、基準信号の電圧値Ｖｉｎの低電位から高電位への変化と比べ、電圧値Ｖｉｎｔ３の低電位から高電位への変化に時間がかかっている様子がわかる。
【００９８】
［遅延処理］
第１オーバーシュートチェック処理が終了し、図５のメインルーチンに戻ると、次に、遅延処理のサブルーチンがコールされる（Ｓ１１）。遅延処理は、目標空燃比がリーン側からリッチ側、あるいはリッチ側からリーン側に変更されたことに伴い基準信号（電圧値Ｖｉｎ）（本実施の形態では応答特性処理後の第３中間信号（電圧値Ｖｉｎｔ３））が変化し始める開始点を、リーンリッチ遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅまたはリッチリーン遅延時間ＬｅａｎＤｅｌａｙＴｉｍｅで設定された時間分遅いタイミングに出力されるように遅延させた第４中間信号（電圧値Ｖｉｎｔ４）または第５中間信号（電圧値Ｖｉｎｔ５）を得る処理である。
【００９９】
図１５に示す遅延処理では、まず、応答特性処理、第１オーバーシュートチェック処理を経て得られた第３中間信号の電圧値Ｖｉｎｔ３が、ｐｒｅｖＶｉｎｔ３［０］に記憶される（Ｓ１７１）。前述したように、ｐｒｅｖＶｉｎｔ３［ｉ］（ただし、ｉ＝０，１，２，・・・，６００）は最大６００ｍｓまでのＶｉｎｔ３の値を記憶して保存するための６０１個の記憶エリアであり、前回（１ｍｓ前）の遅延処理の実行時のＶｉｎｔ３の値から、６００回前（６００ｍｓ前）の遅延処理の実行時のＶｉｎｔ３の値までが、対応する記憶エリアに保存されている。今回の遅延処理の実行時のＶｉｎｔ３の値は、上記のように、ｐｒｅｖＶｉｎｔ３［０］に保存される。なお、Ｓ１７１で、基準信号（本実施の形態では第３中間信号）の電圧値Ｖｉｎｔ３をｐｒｅｖＶｉｎｔ３［０］に記憶することで、後のＳ１７５〜Ｓ１７９の処理で取得順にｐｒｅｖＶｉｎｔ３［ｉ］に取得順に記憶させるＣＰＵ１１が、本発明における「基準信号記憶手段」に相当する。
【０１００】
次に、目標空燃比がリーン側からリッチ側へ変更されたことに伴い基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅが参照される。ＲｉｃｈＤｅｌａｙＴｉｍｅは０〜６００ｍｓの範囲内で予め利用者に設定された遅延時間であり、ｐｒｅｖＶｉｎｔ３［ＲｉｃｈＤｅｌａｙＴｉｍｅ］で指定される記憶エリアに保存された、［ＲｉｃｈＤｅｌａｙＴｉｍｅ］ｍｓ前の第３中間信号の電圧値Ｖｉｎｔ３の値が読み出される。そして、排気ガスの空燃比がリーン側からリッチ側に変更された立上り状態が検出された場合に、［ＲｉｃｈＤｅｌａｙＴｉｍｅ］ｍｓ遅延して出力される第４中間信号の電圧値Ｖｉｎｔ４として記憶される（Ｓ１７２）。同様に、ＬｅａｎＤｅｌａｙＴｉｍｅも参照され、ｐｒｅｖＶｉｎｔ３［ＬｅａｎＤｅｌａｙＴｉｍｅ］で指定される記憶エリアに保存された、［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ前の第３中間信号の電圧値Ｖｉｎｔ３の値が読み出される。そして、排気ガスの空燃比がリッチ側からリーン側に変更された立下り状態が検出された場合に、［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ遅延して出力される第５中間信号の電圧値Ｖｉｎｔ５として記憶される（Ｓ１７３）。後述するが、空燃比がリーン側からリッチ側に変更され基準信号に変化が生じたことが検出された場合には、センサシミュレータ１から出力される劣化信号として第４中間信号が選択され、同様に、空燃比がリッチ側からリーン側に変更され基準信号に変化が生じたことが検出された場合には、劣化信号として第５中間信号が選択される。なお、Ｓ１７２，Ｓ１７３において、［ＲｉｃｈＤｅｌａｙＴｉｍｅ］ｍｓ前および［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ前の基準信号（本実施の形態では第３中間信号）の電圧値Ｖｉｎｔ３をｐｒｅｖＶｉｎｔ３［ＲｉｃｈＤｅｌａｙＴｉｍｅ］およびｐｒｅｖＶｉｎｔ３［ＬｅａｎＤｅｌａｙＴｉｍｅ］から読み出して、劣化信号として出力するため、第４中間信号の電圧値Ｖｉｎｔ４および第５中間信号の電圧値Ｖｉｎｔ５としてそれぞれ記憶するＣＰＵ１１が、本発明における「信号遅延生成手段」に相当する。
【０１０１】
次のＳ１７５〜Ｓ１７９の処理では、次回の遅延処理の実行時に利用されるように、ｐｒｅｖＶｉｎｔ３［ｉ］を更新する処理が行われる。まず、Ｓ１７５で、変数ｉに６００が記憶される（Ｓ１７５）。次に、ｐｒｅｖＶｉｎｔ３［ｉ（６００）］にｐｒｅｖＶｉｎｔ３［ｉ−１（５９９）］の値を記憶する処理が行われる（Ｓ１７６）。そして、ｉの値が１デクリメントされて５９９となり（Ｓ１７７）、ｉ≧１を満たすのでＳ１７５に戻り（Ｓ１７９：ＹＥＳ）、同様にｐｒｅｖＶｉｎｔ３［ｉ（５９９）］にｐｒｅｖＶｉｎｔ３［ｉ−１（５９８）］を記憶する処理が行われる。この一連の処理は、ｉの値が１未満となるまで継続され（Ｓ１７９：ＮＯ）、ｐｒｅｖＶｉｎｔ３［６００］〜ｐｒｅｖＶｉｎｔ３［１］までの値がそれまでのｐｒｅｖＶｉｎｔ３［５９９］〜ｐｒｅｖＶｉｎｔ３［０］の値でそれぞれ上書き記憶され、更新される。その後、メインルーチンに戻る。
【０１０２】
［第２オーバーシュートチェック処理］
ところで、空燃比が変更された場合、それまで選択されていた第４中間信号または第５中間信号に代わり、第５中間信号または第４中間信号が劣化信号として選択されるようになる。第４中間信号または第５中間信号から、第５中間信号または第４中間信号に切り換わるタイミングは、空燃比の変更に伴う基準信号の変化が検出されたタイミングであり、上記同様に、第４中間信号または第５中間信号の電圧値Ｖｉｎｔ４またはＶｉｎｔ５は、既に大きく変化（増加または減衰）を始めている場合がある。このため、上記タイミングにおいて、劣化信号の電圧値Ｖｏｕｔの変化方向が一時的に逆転することがある。例えば、目標空燃比がリッチ側からリーン側に変更された場合、劣化信号の電圧値Ｖｏｕｔは高電位から低電位に変化するが、上記タイミングにおいて、一時的に低電位から高電位に変化し、その信号波形が波打つように変化する場合がある。その一例を、図２８のグラフに示す。
【０１０３】
図２８では、Ｈタイミング以前において、空燃比がリッチ側であることが検出されて立上り状態と判定され、ｓｔａｔｅには１が記憶されており、劣化信号として出力される信号には、１点鎖線で示される第４中間信号（電圧値Ｖｉｎｔ４）が選択されている（図２８の例ではＲｉｃｈＤｅｌａｙＴｉｍｅ＝０であるので基準信号と一致している。）。そして空燃比がリーン側に変更されたことが検出されたＨタイミングでは、立下り状態と判定されてｓｔａｔｅが−１となるので、劣化信号として出力される信号は、第４中間信号から、２点鎖線で示される第５中間信号に置き換えられる。Ｈタイミングにおいて第４中間信号の電圧値Ｖｉｎｔ４は、空燃比がリッチ側で安定したときに示す約０．９Ｖから、空燃比がリーン側で安定したときに示す約０．０５Ｖへ変化し始めた、０．９Ｖよりも低い値となっている。一方、Ｈタイミングにおける第５中間信号の電圧値Ｖｉｎｔ５は、［ＬｅａｎＤｅｌａｙＴｉｍｅ］ｍｓ前の第３中間信号の電圧値Ｖｉｎｔ３（図２８の例では基準信号の電圧値Ｖｉｎ）となっており、より具体的にはＨタイミングからＩタイミングまでの時間に相当するリッチリーン遅延時間前の値で、約０．９Ｖとなっている。このため、出力される劣化信号は、図２８に示す第４中間信号と第５中間信号とを結合させた信号となり、Ｈタイミングにおいて、本来なら立下り状態であるため電圧値の変化が下降となるところが大きく上昇し（図中矢印で示す。）、その後下降を始めるグラフを描くこととなる。
【０１０４】
第２オーバーシュートチェック処理では、このＨタイミング以後、立下り状態にありながら電圧値がＨタイミングのときの値よりも増加した現象の補正が行われ、空燃比がリーン側からリッチ側に変更された場合についても同様に補正が行われる。すなわち、空燃比がリーン側からリッチ側に変更され、基準信号の電圧値が上昇中にある場合には、一時的な電圧値の下降を生ずることがなく、また、空燃比がリッチ側からリーン側に変更され、基準信号の電圧値が下降中にある場合には、一時的な電圧値の上昇を生ずることがないように、電圧値の補正が行われる。図２８を参照した具体例で示すと、Ｈタイミング直前（１ｍｓ前）のＶｉｎｔ５の値をＶｂａｓｅとして保存し、ＩタイミングにおいてＶｉｎｔ４の値がＶｂａｓｅに一致するまで、ＨタイミングからＩタイミングまでの間のＶｉｎｔ４の値をＶｂａｓｅで置換することで補正が行われる。これにより、図２９に示す例では、第２オーバーシュートチェック処理の結果得られる劣化信号（電圧値Ｖｏｕｔ）の描く曲線（図２９では実線で示される。）は、ＨタイミングからＩタイミングまでの間、電圧値が一定（Ｖｂａｓｅ）の直線で置換されたグラフとなる。
【０１０５】
このように、遅延処理後の第４中間信号および第５中間信号を補正した劣化信号を得るため、図５のメインルーチンにおいて第２オーバーシュートチェック処理のサブルーチンがコールされる（Ｓ１３）。第２オーバーシュートチェック処理では、図１６に示すように、まず、閾値チェック処理で得たフラグｓｔａｔｅの値が参照され、０より大きいか否か確認が行われる（Ｓ１８１）。図２８に示したグラフを例に説明すると、Ｈタイミング（図２８参照）以前には空燃比がリーン側からリッチ側に変更されたと検出された状態（立上り状態）にあり、ｓｔａｔｅは１であるので（Ｓ１８１：ＹＥＳ）、遅延立上り処理のサブルーチンがコールされる（Ｓ１８２）。なお、Ｓ１８１で、第４中間信号もしくは第５中間信号が劣化信号として生成されるように、ｓｔａｔｅの値によって遅延立上り処理または遅延立ち下がり処理を選択するＣＰＵ１１が、本発明における「劣化信号選択生成手段」に相当する。
【０１０６】
図１７に示す遅延立上り処理では、前回（１ｍｓ前）の空燃比の移行状態を示すフラグｓｔａｔｅの値を記憶して保存したｐｒｅｖＳｔａｔｅ３の値が参照され、０より小さいか否か確認が行われる（Ｓ１９１）。Ｈタイミング以前には、ｐｒｅｖＳｔａｔｅ３が１であるので（Ｓ１９１：ＮＯ）、前回も今回も空燃比はリッチ側にあり、変更されていないと判断され、そのままＳ１９５に進む。空燃比の状態（ｓｔａｔｅの値）に変化が生ずる前にはＣｈｅｃｋＦｌａｇの値が０となっており（Ｓ１９５：ＮＯ）、ｓｔａｔｅが１の立上り状態であるので劣化信号には第４中間信号が選択されて、その電圧値Ｖｉｎｔ４がＶｏｕｔに記憶される（Ｓ２０１）。そして、図１６に示す第２オーバーシュートチェック処理のサブルーチンに戻る。更に、次回の第２オーバーシュートチェック処理で用いるため、ｓｔａｔｅ，Ｖｉｎｔ４，Ｖｉｎｔ５の値がそれぞれ、ｐｒｅｖＳｔａｔｅ３，ｐｒｅｖＶｉｎｔ４，ｐｒｅｖＶｉｎｔ５に記憶されて保存され（Ｓ１８５）、メインルーチンに戻る。
【０１０７】
時間が経過し、メインルーチンの処理が１ｍｓ毎に繰り返し実行されてＨタイミング（図２８参照）となったときには、空燃比がリッチ状態からリーン状態に変更されたことが検出されてｓｔａｔｅには−１が記憶され、図１６に示す第２オーバーシュートチェック処理では遅延立下り処理のサブルーチンがコールされる（Ｓ１８１：ＮＯ，Ｓ１８３）。
【０１０８】
図１８に示す遅延立下り処理では、Ｈタイミング（図２８参照）以前のｓｔａｔｅの値を記憶したｐｒｅｖＳｔａｔｅ３の値が１であるので（Ｓ２１１：ＹＥＳ）、空燃比の状態がリッチ側からリーン側に変更されたと判断される。そして、Ｖｉｎｔ５の値の補正が必要なときに置き換えにより補正するための補正値Ｖｂａｓｅとして、前回（１ｍｓ前）選択されていた第４中間信号の電圧値Ｖｉｎｔ４を保存したｐｒｅｖＶｉｎｔ４の値がコピーされ記憶される（Ｓ２１２）。更にＣｈｅｃｋＦｌａｇに１が記憶される（Ｓ２１３）。なお、Ｓ２１２で、前回の第４中間信号の電圧値ｐｒｅｖＶｉｎｔ４を本発明における「リッチリーン保持信号」に相当する補正値Ｖｂａｓｅとしてコピーして記憶させるＣＰＵ１１、および後述するＳ１９２で、同様に、前回の第５中間信号の電圧値ｐｒｅｖＶｉｎｔ５を本発明における「リーンリッチ保持信号」に相当する補正値Ｖｂａｓｅとしてコピーして記憶させるＣＰＵ１１が、本発明における「保持信号記憶手段」に相当する。
【０１０９】
次に、Ｓ２１５ではＣｈｅｃｋＦｌａｇが１であるので（Ｓ２１５：ＹＥＳ）、Ｖｉｎｔ５の値の補正を行う必要があるか判定するため、Ｖｉｎｔ５がＶｂａｓｅより大きいか否かの確認が行われる（Ｓ２１６）。Ｈタイミング（図２８参照）のＶｉｎｔ５の値はＶｂａｓｅよりも大きいのでＶｉｎｔ５に対し補正を行う必要があり（Ｓ２１６：ＹＥＳ）、最終出力信号となる劣化信号の電圧値ＶｏｕｔにＶｂａｓｅの値が記憶されて（Ｓ２１７）、第２オーバーシュートチェック処理のサブルーチンに戻る。
【０１１０】
Ｈタイミング以後、空燃比の状態がリーン側であるためｓｔａｔｅは−１を示し、第２オーバーシュートチェック処理では継続して遅延立下り処理のサブルーチンがコールされる（図１６：Ｓ１８１：ＹＥＳ）。立下り状態の継続時にはｐｒｅｖＳｔａｔｅ３にも−１が記憶されているため（Ｓ２１１：ＮＯ）、Ｖｂａｓｅの値はＨタイミングにおいて遅延立下り処理が実行されたときに記憶された値が維持される。更にＣｈｅｃｋＦｌａｇにも１が記憶された状態が維持されるため（Ｓ２１５：ＹＥＳ）、ＨタイミングからＩタイミングまでの期間のように、Ｖｉｎｔ５（図２８参照）はＶｂａｓｅで置換され（Ｓ２１６：ＹＥＳ）、上記同様、直線近似されたＶｏｕｔ（図２９参照）が得られる（Ｓ２１７）。なお、Ｓ２１７で、出力する劣化信号の電圧値Ｖｏｕｔとして、Ｓ２１２で保存したＶｂａｓｅを記憶させるＣＰＵ１１、およびＳ１９７で、同様に、出力する劣化信号の電圧値Ｖｏｕｔとして、Ｓ１９２で保存したＶｂａｓｅを記憶させるＣＰＵ１１が、本発明における「保持信号出力手段」に相当する。
【０１１１】
更に時間が経過し、Ｉタイミングとなったときには、Ｖｉｎｔ５の値がＶｂａｓｅ以下となるため、図１８に示す遅延立下り処理のＳ２１６においてＳ２１９に進む（Ｓ２１６：ＮＯ）。Ｖｉｎｔ５を補正する必要がなくなるため、ＶｏｕｔにはＶｉｎｔ５が記憶され（Ｓ２１９）、更にＣｈｅｃｋＦｌａｇには０が記憶されて（Ｓ２２０）、第２オーバーシュートチェック処理のサブルーチンに戻る。
【０１１２】
Ｉタイミング以後も、空燃比の状態がリーン側であるため、ｓｔａｔｅもｐｒｅｖＳｔａｔｅ３も−１となっている。第２オーバーシュートチェック処理では継続して遅延立下り処理のサブルーチンがコールされる（図１６：Ｓ１８１：ＮＯ）。そして遅延立下り処理では、ＣｈｅｃｋＦｌａｇが０となっているのでＶｉｎｔ５がそのままＶｏｕｔとして記憶され（Ｓ２１１：ＮＯ，Ｓ２１５：ＮＯ，Ｓ２２１）、第２オーバーシュートチェック処理のサブルーチンに戻る。なお、Ｓ２１９，Ｓ２２１で第５中間信号が劣化信号として出力されるようにその電圧値Ｖｉｎｔ５をＶｏｕｔにコピーして記憶させるＣＰＵ１１が、本発明における「リッチリーン信号遅延出力手段」に相当する。
【０１１３】
このようにして生成される劣化信号（電圧値Ｖｏｕｔ）の描くグラフの一例を図２７に示す。図２７では、基準信号（電圧値Ｖｉｎ）に対し、ゲイン処理、応答特性処理、および目標空燃比のリーン側からリッチ側への変更に伴う遅延処理を行っていない。そして、空燃比のリッチ側からリーン側への変更が検出された際（図１９の区間［Ｃ−Ｅ］に相当する。）に選択される第５中間信号に対し第２オーバーシュートチェック処理が行われて生成された劣化信号（電圧値Ｖｏｕｔ）の描くグラフ（図中１点鎖線で示す。）を、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示す。）と対比させた。基準信号の電圧値Ｖｉｎが高電位から低電位に変化する場合に、劣化信号（電圧値Ｖｏｕｔ）がリッチリーン遅延時間ＬｅａｎＤｅｌａｙＴｉｍｅ分だけ遅れて出力される様子がわかる。そして第２オーバーシュートチェック処理によって、Ｖｏｕｔが高電位から低電位に変化する途中で一時的に低電位から高電位に変化する現象が生じないように補正された様子も確認できる。
【０１１４】
なお、図１７に示す遅延立上り処理は、上記説明した図１８に示す遅延立下り処理に対し対称となる処理を、空燃比がリーン側からリッチ側へ変更された際に行うものである。従って、遅延立下り処理におけるＳ２１１〜Ｓ２２１の処理はそれぞれ、遅延立上り処理におけるＳ１９１〜Ｓ２０１の処理にそれぞれ対応し、出力される劣化信号（電圧値Ｖｏｕｔ）として第４中間信号（電圧値Ｖｉｎｔ４）が選択される処理内容となっている。具体的には図１７に示すように、空燃比がリーン側からリッチ側に変更されたことが基準信号の変化に基づき検出されたタイミング（ｓｔａｔｅ＝１，ｐｒｅｖＳｔａｔｅ３＝−１）には、（Ｓ１８１：ＹＥＳ，Ｓ１８２（図１６参照），Ｓ１９１：ＹＥＳ）、前回（１ｍｓ前）選択されていた第５中間信号の電圧値Ｖｉｎｔ５を保存したｐｒｅｖＶｉｎｔ５の値がＶｂａｓｅにコピーされ記憶され（Ｓ１９２）、ＣｈｅｃｋＦｌａｇに１が記憶される（Ｓ１９３）。そしてＶｉｎｔ４の値がＶｂａｓｅより小さく補正を行う必要があれば（Ｓ１９５：ＹＥＳ，Ｓ１９６：ＹＥＳ）、劣化信号の電圧値Ｖｏｕｔとして、Ｖｉｎｔ４を置換したＶｂａｓｅが記憶される（Ｓ１９７）。その後もＶｂａｓｅによるＶｉｎｔ４の置換が継続されるが（Ｓ１９１：ＮＯ，Ｓ１９５：ＹＥＳ，Ｓ１９６：ＹＥＳ，Ｓ１９７）、ＶｂａｓｅがＶｉｎｔ４以上の値となったタイミング以降は（Ｓ１９６：ＮＯ）、Ｖｉｎｔ４を補正する必要がなくなるため、ＶｏｕｔにはＶｉｎｔ４が記憶され（Ｓ１９９）、更にＣｈｅｃｋＦｌａｇに０が記憶される（Ｓ２００）。それ以後も空燃比の状態はリッチ側であるため、ｓｔａｔｅもｐｒｅｖＳｔａｔｅ３も１であり、（Ｓ１８１：ＹＥＳ，Ｓ１８２（図１６参照），Ｓ１９１：ＮＯ）、ＣｈｅｃｋＦｌａｇも０となっているので、Ｖｉｎｔ４がそのままＶｏｕｔとして記憶される（Ｓ１９５：ＮＯ，Ｓ２０１）。なお、Ｓ１９９，Ｓ２０１で第４中間信号が劣化信号として出力されるようにその電圧値Ｖｉｎｔ４をＶｏｕｔにコピーして記憶させるＣＰＵ１１が、本発明における「リーンリッチ信号遅延出力手段」に相当する。
【０１１５】
このときに生成される劣化信号（電圧値Ｖｏｕｔ）の描くグラフの一例を図２６に示す。図２６では、基準信号（電圧値Ｖｉｎ）に対し、ゲイン処理、応答特性処理、および目標空燃比のリッチ側からリーン側への変更に伴う遅延処理を行っていない。そして、空燃比のリーン側からリッチ側への変更が検出された際（図１９の区間［Ａ−Ｃ］に相当する。）に選択される第４中間信号に対し第２オーバーシュートチェック処理が行われて生成された劣化信号（電圧値Ｖｏｕｔ）の描くグラフ（図中１点鎖線で示す。）を、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示す。）と対比させた。基準信号の電圧値Ｖｉｎが低電位から高電位に変化する場合に、劣化信号（電圧値Ｖｏｕｔ）がリーンリッチ遅延時間ＲｉｃｈＤｅｌａｙＴｉｍｅ分だけ遅れて出力される様子がわかる。そして第２オーバーシュートチェック処理によって、Ｖｏｕｔが低電位から高電位に変化する途中で一時的に高電位から低電位に変化する現象が生じないように補正された様子も確認できる。
【０１１６】
以上説明したように、劣化信号生成プログラムの実行によって、基準信号（電圧値Ｖｉｎ）に対しゲイン処理、応答特性処理、および遅延処理を行った劣化信号（電圧値Ｖｏｕｔ）が生成される。劣化信号（電圧値Ｖｏｕｔ）の描くグラフ（図中１点鎖線で示される。）を図３０に示すが、目標空燃比の変更に追従して電圧値が変化するものの、基準信号（電圧値Ｖｉｎ）の描くグラフ（図中点線で示される。）と比較して、電圧値の変化が鈍った信号波形となる。ゲイン処理、応答特性処理、および遅延処理のいずれの処理も、空燃比がリッチ側にある場合とリーン側にある場合とで異なるパラメータを用い、信号に対する処理内容を個別に設定することが可能であり、様々な形態の基準信号の劣化状態を疑似的に生成することができる。
【０１１７】
なお、本発明は上記実施の形態に限られず、各種の変形が可能である。例えばＵＳＢやＲＳ２３２Ｃ等の入出力インターフェイスを備え、対応するケーブルを用いてパーソナルコンピュータに接続し、設定値等の入力や表示確認等を行ってもよい。また、基準センサ２の基準信号や、生成した劣化信号をその入出力インターフェイスを介してパーソナルコンピュータに出力し、パーソナルコンピュータ上で出力波形を生成してモニタリングできるようにしてもよいし、もちろん、表示部８０に出力波形を表示させてもよい。
【０１１８】
また、ＥＥＰＲＯＭ１２の設定値記憶エリア１２１に、設定値の組み合わせを複数種類記憶できるようにしてもよい。つまり、基準センサ２として空燃比センサを用いた場合やＮＯｘセンサを用いた場合など、それぞれのセンサ向けに設定した設定値を読み込めるようにすれば、接続するセンサを取り換える度に設定値を入れ直す手間を省くことができる。もちろん、ＥＥＰＲＯＭ１２ではなく一般的なＲＯＭを用い、これら設定値の組み合わせをプリセット値として保存してもよい。
【０１１９】
また、本実施の形態では、図４に示す、ゲイン処理ブロック、応答特性処理ブロックおよび遅延処理ブロックの各処理ブロックをこの順に行ったが、それぞれ独立して実行することが可能であり、任意の順に処理を行ってもよい。ただし、立上り，立下り検出ブロックについては、応答特性処理ブロックおよび遅延処理ブロックよりも先に処理を行う必要がある。
【０１２０】
また、利用者の設定可能な７つの変数（ＲｉｃｈＧａｉｎ，ＬｅａｎＧａｉｎ，ＧａｉｎＴｈｒｅｓｈｏｌｄ，ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ，ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ，ＲｉｃｈＤｅｌａｙＴｉｍｅ，ＬｅａｎＤｅｌａｙＴｉｍｅ）は、Ｓ１の初期化処理でＥＥＰＲＯＭ１２の設定値記憶エリア１２１からＲＡＭ１３の変数記憶エリア１３２にコピーされ、以降の処理では変数記憶エリア１３２の記憶値が参照されたが、これら７つの変数については設定値記憶エリア１２１の記憶値が参照されるようにしてもよい。このようにすれば、利用者が、劣化信号生成プログラムの実行中に設定値を変更した場合に、その変更結果を、生成される劣化信号に即座に反映させることができる。
【０１２１】
また、本実施の形態では、劣化信号生成プログラムを実行することでソフトウェア的に基準信号から劣化信号を生成したが、ロジック回路を構成したアナログまたはデジタルハードウェア回路を作製し、劣化信号の生成を行ってもよい。
【産業上の利用可能性】
【０１２２】
酸素センサ、全領域空燃比センサ、ＮＯｘセンサ等の各種ガスセンサが劣化した状態において出力する劣化信号を擬似的に発生することができる劣化信号発生装置に適用することができる。
【符号の説明】
【０１２３】
１    センサシミュレータ
２    基準センサ
１１    ＣＰＵ
１２    ＥＥＰＲＯＭ
１３    ＲＡＭ
６０    入力部
１２１    設定値記憶エリア
１３２    変数記憶エリア
Ｖｉｎ    基準信号
Ｖｏｕｔ  劣化信号
ＲｉｃｈＤｅｌａｙＴｉｍｅ  リーンリッチ遅延時間
ＬｅａｎＤｅｌａｙＴｉｍｅ  リッチリーン遅延時間
ｄｕ    微分値
ＵｐＴｈｒｅｓｈｏｌｄ  空燃比がリーン側からリッチ側に変更される場合の閾値
ＤｏｗｎＴｈｒｅｓｈｏｌｄ  空燃比がリッチ側からリーン側に変更される場合の閾値
ＲｉｃｈＧａｉｎ  リッチ利得率
ＬｅａｎＧａｉｎ  リーン利得率
ＧａｉｎＴｈｒｅｓｈｏｌｄ  しきい値
ＲｉｃｈＴｉｍｅＣｏｎｓｔａｎｔ  リーンリッチ変移率
ＬｅａｎＴｉｍｅＣｏｎｓｔａｎｔ  リッチリーン変移率
Ｖｂａｓｅ  リッチリーン保持信号，リーンリッチ保持信号