"内燃機関の排気ガス中の特定成分の濃度に基づき当該排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を、疑似的に発生する劣化信号発生装置であって、前記劣化信号を生成するための基準信号であって、排気ガス中の特定成分の濃度に関連した基準信号を出力する前記ガスセンサと同構成をなした基準センサに接続されると共に、前記基準信号を一定時間毎に取得する基準信号取得手段と、前記基準信号取得手段によって取得された前記基準信号を、その取得順に記憶する基準信号記憶手段と、内燃機関に供給される混合気の目標空燃比の変更に伴って前記基準信号が変化し始める開始点を遅延させた状態で出力するための遅延時間を設定する遅延時間設定手段と、前記遅延時間設定手段にて設定された前記遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を前記劣化信号として生成する信号遅延生成手段とを備えたことを特徴とするガスセンサの劣化信号発生装置。前記遅延時間設定手段は、前記遅延時間として、前記目標空燃比がリッチ側からリーン側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリッチリーン遅延時間と、前記目標空燃比がリーン側からリッチ側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間とを個別に設定可能に構成され、前記信号遅延生成手段は、前記リッチリーン遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリッチリーン信号遅延出力手段と、前記リーンリッチ遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリーンリッチ信号遅延出力手段と、前記基準信号取得手段によって取得された前記基準信号の値がリッチ側からリーン側に変化した場合には、前記リッチリーン信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成し、前記基準信号取得手段によって取得された前記基準信号の値がリーン側からリッチ側に変化した場合には、前記リーンリッチ信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成する劣化信号選択生成手段とを備えたことを特徴とする請求項1に記載のガスセンサの劣化信号発生装置。前記基準信号取得手段によって取得された複数の前記基準信号に基づいて、前記目標空燃比がリッチ側からリーン側へ変更するに伴い前記基準信号が変化し始める開始点としてのリッチリーン変化開始点と、前記目標空燃比がリーン側からリッチ側へ変更するに伴い前記基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出する空燃比変化開始点検出手段を備え、前記劣化信号選択生成手段は、前記リッチリーン変化開始点において、前記リッチリーン信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行い、前記リーンリッチ変化開始点においては、前記リーンリッチ信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行うことを特徴とする請求項2に記載のガスセンサの劣化信号発生装置。前記空燃比変化開始点検出手段は前記基準信号に対する微分処理を行い、前記基準信号の微分値が、前記目標空燃比がリッチ側からリーン側に変更される場合の閾値を越えた場合を前記リッチリーン変化開始点とすると共に、前記目標空燃比がリーン側からリッチ側に変更される場合の閾値を越えた場合を前記リーンリッチ変化開始点として検出することを特徴とする請求項3に記載のガスセンサの劣化信号発生装置。前記基準信号のゲインを変更した状態で出力するための利得率を設定する利得率設定手段と、前記基準信号に、前記利得率設定手段に設定された前記利得率を掛け合わせて前記基準信号のゲインを変更するゲイン変更手段とを備えたことを特徴とする請求項1乃至4のいずれかに記載のガスセンサの劣化信号発生装置。前記利得率設定手段は、前記利得率として、前記基準信号の値が所定のしきい値よりもリーン側である場合の当該基準信号のゲインを変更させるためのリーン利得率と、前記基準信号の値が所定のしきい値よりもリッチ側である場合の当該基準信号のゲインを変更させるためのリッチ利得率とを個別に設定可能に構成され、前記ゲイン変更手段は、前記基準信号の値が所定のしきい値よりもリーン側であると判定されたとき、前記基準信号に前記リーン利得率を掛け合わせ、前記基準信号の値が所定のしきい値よりもリッチ側であると判定されたとき、前記基準信号に前記リッチ利得率を掛け合わせることを特徴とする請求項5に記載のガスセンサの劣化信号発生装置。前記目標空燃比の変更に伴って変移する前記基準信号の応答特性を変更した状態で出力するための変移率を設定する変移率設定手段と、前記基準信号に、前記変移率設定手段にて設定された前記変移率を掛け合わせて前記基準信号の応答特性を変更する変移時間変更手段とを備えたことを特徴とする請求項1乃至6のいずれかに記載のガスセンサの劣化信号発生装置。前記変移率設定手段は、前記変移率として、前記目標空燃比がリッチ側からリーン側に変更される場合の前記基準信号の応答特性を変更するためのリッチリーン変移率と、前記目標空燃比がリーン側からリッチ側に変更される場合の前記基準信号の応答特性を変更するためのリーンリッチ変移率とを個別に設定可能に構成され、前記変移時間変更手段は、前記基準信号取得手段により取得される前記基準信号の値がリッチ側からリーン側に変化する場合には、前記基準信号に前記リッチリーン変移率を掛け合わせ、前記基準信号取得手段により取得される前記基準信号の値がリーン側からリッチ側に変化する場合には、前記基準信号に前記リーンリッチ変移率を掛け合わせることを特徴とする請求項7に記載のガスセンサの劣化信号発生装置。前記リッチリーン変化開始点において生成される前記劣化信号をリッチリーン保持信号として記憶し、前記リーンリッチ変化開始点において生成される前記劣化信号をリーンリッチ保持信号として記憶する保持信号記憶手段と、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号よりも大きい値である場合には、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号以下の値になるまで前記リッチリーン保持信号を前記劣化信号として出力し、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号よりも小さい値である場合には、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号以上の値になるまで前記リーンリッチ保持信号を前記劣化信号として出力する保持信号出力手段とを備えたことを特徴とする請求項3または4に記載のガスセンサの劣化信号発生装置。ガスセンサは排気通路の下流側に設けられる浄化装置の近くに取り付けられることが多く、燃料噴射量の調整等により内燃機関に供給される混合気の目標空燃比を変化させた際に、目標空燃比を変化させた混合気がエンジン燃焼室にて燃焼され、排気ガスとしてガスセンサに達するまでに時間がかかる。そのため、混合気の目標空燃比の変更タイミングと、ガスセンサから出力される検出信号の変化し始めるタイミングとの間には、タイムラグ遅延が生ずる。ところで、ガスセンサを長期間使用した場合、ガスセンサのプロテクタ詳細には、センサ素子の周囲を覆うガス流通孔付きのプロテクタのガス流通孔が目詰まりを起こす等の経時劣化を生ずることがある。そして、ガスセンサにこのような劣化が生ずると、ガス流通孔を介してのプロテクタ内部のガス置換が遅くなるため、混合気の目標空燃比の変更に伴ってガスセンサの検出信号が変化し始めるまでの時間遅延時間は、劣化していないガスセンサと比較して遅くなる。そのため、ガスセンサの劣化状態を考慮してECUの開発を行うにあたっては、上記遅延時間が経時的に変化していく遅くなっていくことも考慮して開発を行わなければ、より精密な空燃比フィードバック制御を促せるECUを開発することができない。しかしながら、特許文献1に記載の劣化信号発生装置では、ゲインおよび応答特性を変更可能なガスセンサの劣化信号を擬似的に発生することはできるものの、上記遅延時間を変更可能な劣化信号までは擬似的に発生させることはできなかった。本発明は上記問題点を解決するためになされたものであり、内燃機関の排気ガス中の特定成分の濃度に基づき排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を擬似的に生成し、更にその劣化信号を遅延させた状態で出力することができるガスセンサの劣化信号発生装置を提供することを目的とする。上記目的を達成するために、請求項1に係る発明のガスセンサの劣化信号発生装置は、内燃機関の排気ガス中の特定成分の濃度に基づき当該排気ガスの空燃比を検出するガスセンサが劣化した状態において出力する劣化信号を、疑似的に発生する劣化信号発生装置であって、前記劣化信号を生成するための基準信号であって、排気ガス中の特定成分の濃度に関連した基準信号を出力する前記ガスセンサと同構成をなした基準センサに接続されると共に、前記基準信号を一定時間毎に取得する基準信号取得手段と、前記基準信号取得手段によって取得された前記基準信号を、その取得順に記憶する基準信号記憶手段と、内燃機関に供給される混合気の目標空燃比の変更に伴って前記基準信号が変化し始める開始点を遅延させた状態で出力するための遅延時間を設定する遅延時間設定手段と、前記遅延時間設定手段にて設定された前記遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を前記劣化信号として生成する信号遅延生成手段とを備えている。また、請求項2に係る発明のガスセンサの劣化信号発生装置は、請求項1に記載の発明の構成に加え、前記遅延時間設定手段は、前記遅延時間として、前記目標空燃比がリッチ側からリーン側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリッチリーン遅延時間と、前記目標空燃比がリーン側からリッチ側に変更される場合に前記基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間とを個別に設定可能に構成され、前記信号遅延生成手段は、前記リッチリーン遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリッチリーン信号遅延出力手段と、前記リーンリッチ遅延時間に相当する取得回数前に前記基準信号記憶手段に記憶された前記基準信号を出力するリーンリッチ信号遅延出力手段と、前記基準信号取得手段によって取得された前記基準信号の値がリッチ側からリーン側に変化した場合には、前記リッチリーン信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成し、前記基準信号取得手段によって取得された前記基準信号の値がリーン側からリッチ側に変化した場合には、前記リーンリッチ信号遅延出力手段から出力される前記基準信号を前記劣化信号として生成する劣化信号選択生成手段とを備えている。また、請求項3に係る発明のガスセンサの劣化信号発生装置は、請求項2に記載の発明の構成に加え、前記基準信号取得手段によって取得された複数の前記基準信号に基づいて、前記目標空燃比がリッチ側からリーン側へ変更するに伴い前記基準信号が変化し始める開始点としてのリッチリーン変化開始点と、前記目標空燃比がリーン側からリッチ側へ変更するに伴い前記基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出する空燃比変化開始点検出手段を備え、前記劣化信号選択生成手段は、前記リッチリーン変化開始点において、前記リッチリーン信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行い、前記リーンリッチ変化開始点においては、前記リーンリッチ信号遅延出力手段から出力される前記基準信号が、前記劣化信号として生成されるように切り換えを行うことを特徴とする。また、請求項4に係る発明のガスセンサの劣化信号発生装置は、請求項3に記載の発明の構成に加え、前記空燃比変化開始点検出手段は前記基準信号に対する微分処理を行い、前記基準信号の微分値が、前記目標空燃比がリッチ側からリーン側に変更される場合の閾値を越えた場合を前記リッチリーン変化開始点とすると共に、前記目標空燃比がリーン側からリッチ側に変更される場合の閾値を越えた場合を前記リーンリッチ変化開始点として検出することを特徴とする。また、請求項5に係る発明のガスセンサの劣化信号発生装置は、請求項1乃至4のいずれかに記載の発明の構成に加え、前記基準信号のゲインを変更した状態で出力するための利得率を設定する利得率設定手段と、前記基準信号に、前記利得率設定手段に設定された前記利得率を掛け合わせて前記基準信号のゲインを変更するゲイン変更手段とを備えている。また、請求項6に係る発明のガスセンサの劣化信号発生装置は、請求項5に記載の発明の構成に加え、前記利得率設定手段は、前記利得率として、前記基準信号の値が所定のしきい値よりもリーン側である場合の当該基準信号のゲインを変更させるためのリーン利得率と、前記基準信号の値が所定のしきい値よりもリッチ側である場合の当該基準信号のゲインを変更させるためのリッチ利得率とを個別に設定可能に構成され、前記ゲイン変更手段は、前記基準信号の値が所定のしきい値よりもリーン側であると判定されたとき、前記基準信号に前記リーン利得率を掛け合わせ、前記基準信号の値が所定のしきい値よりもリッチ側であると判定されたとき、前記基準信号に前記リッチ利得率を掛け合わせることを特徴とする。また、請求項7に係る発明のガスセンサの劣化信号発生装置は、請求項1乃至6のいずれかに記載の発明の構成に加え、前記目標空燃比の変更に伴って変移する前記基準信号の応答特性を変更した状態で出力するための変移率を設定する変移率設定手段と、前記基準信号に、前記変移率設定手段にて設定された前記変移率を掛け合わせて前記基準信号の応答特性を変更する変移時間変更手段とを備えている。また、請求項8に係る発明のガスセンサの劣化信号発生装置は、請求項7に記載の発明の構成に加え、前記変移率設定手段は、前記変移率として、前記目標空燃比がリッチ側からリーン側に変更される場合の前記基準信号の応答特性を変更するためのリッチリーン変移率と、前記目標空燃比がリーン側からリッチ側に変更される場合の前記基準信号の応答特性を変更するためのリーンリッチ変移率とを個別に設定可能に構成され、前記変移時間変更手段は、前記基準信号取得手段により取得される前記基準信号の値がリッチ側からリーン側に変化する場合には、前記基準信号に前記リッチリーン変移率を掛け合わせ、前記基準信号取得手段により取得される前記基準信号の値がリーン側からリッチ側に変化する場合には、前記基準信号に前記リーンリッチ変移率を掛け合わせることを特徴とする。また、請求項9に係る発明のガスセンサの劣化信号発生装置は、請求項3または4に記載の発明の構成に加え、前記リッチリーン変化開始点において生成される前記劣化信号をリッチリーン保持信号として記憶し、前記リーンリッチ変化開始点において生成される前記劣化信号をリーンリッチ保持信号として記憶する保持信号記憶手段と、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号よりも大きい値である場合には、前記リッチリーン変化開始点後に生成される前記劣化信号が前記リッチリーン保持信号以下の値になるまで前記リッチリーン保持信号を前記劣化信号として出力し、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号よりも小さい値である場合には、前記リーンリッチ変化開始点後に生成される前記劣化信号が前記リーンリッチ保持信号以上の値になるまで前記リーンリッチ保持信号を前記劣化信号として出力する保持信号出力手段とを備えている。請求項1に係る発明のガスセンサの劣化信号発生装置によれば、基準センサから取得した基準信号を、任意に設定された遅延時間分、遅れて出力される劣化信号を生成することができる。これにより、内燃機関に供給される混合気の目標空燃比の変更に伴ってガスセンサの検出信号が変化し始めるまでの遅延時間が異なった、数種類の劣化状態を再現したガスセンサを加速耐久試験により目標通りに作成した上で、これらガスセンサを用いて上記遅延時間の変化を考慮したシステム例えば、ECUの開発を行う必要がなくなる。つまり、本発明の劣化信号発生装置を用いることにより、基準センサを接続するだけで上記遅延時間を自由に変更させた劣化信号を直ぐに得ることができ、精密な空燃比フィードバック制御を実現可能なシステムの開発を円滑に行えると共に、その開発期間の短縮を図ることが可能となる。ところで、ガスセンサの被毒の状態例えば、排気ガス中に含まれていたPb成分による被毒が特に進んでいる状態や、排気ガス中に含まれるSi成分による被毒が特に進んでいる状態によっては、目標空燃比がリッチ側に変更される場合とリーン側に変更される場合とで異なった遅延時間分遅れた劣化信号が出力される場合がある。そこで請求項2に係る発明の劣化信号発生装置を用いれば、目標空燃比がリッチ側に変更される場合にはリーンリッチ遅延時間に従って遅れて出力される劣化信号を生成することができ、目標空燃比がリーン側に変更される場合にはリッチリーン遅延時間に従って遅れて出力される劣化信号を生成することができる。また、請求項3に係る発明のように、遅延時間の異なる劣化信号の切り換えを行うにあたって、その切り換えタイミングを決定するには、目標空燃比がリーン側に変更されたことに伴い基準信号が変化し始める開始点としてのリッチリーン変化開始点と、目標空燃比がリッチ側に変更されたことに伴い基準信号が変化し始める開始点としてのリーンリッチ変化開始点とを検出することが好ましい。そして、目標空燃比が変更されたことに伴い基準信号が変化し始める開始点を検出するには、請求項4に係る発明のように、基準信号に対する微分処理を行って、その微分値を閾値と比較することで、それぞれの開始点を求めるとよい。このようにすれば、簡易的でありながら精度よく、それぞれの開始点を検出することができる。また、請求項5に係る発明によれば、ガスセンサの出力する検出信号のゲインが低下した状態を想定した劣化信号を基準センサの基準信号から擬似的に生成することができ、劣化信号発生装置の多様性を高めることができる。更に、基準信号のゲインを変更しつつ遅延時間を変更させた劣化信号を発生させることもでき、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。更に、請求項6に係る発明のように、基準信号のゲインを変更するための利得率として、基準信号が所定のしきい値よりもリッチ側にある場合のリッチ利得率とリーン側にある場合のリーン利得率とを個別に設定することができれば、排気ガスの空燃比がリッチ側にある場合にのみ劣化した状態の劣化信号を出力するガスセンサや、排気ガスの空燃比がリッチ側とリーン側とで劣化の度合いの異なる劣化信号を出力するガスセンサなどの劣化信号を擬似的に生成することができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。また、請求項7に係る発明によれば、ガスセンサの出力する信号の応答特性が低下した状態を想定した劣化信号を基準センサの基準信号から擬似的に生成することができ、劣化信号発生装置の多様性を高めることができる。更に、基準信号の応答特性を変更しつつ遅延時間を変更させた劣化信号を発生させたり、あるいはゲインも変更させた劣化信号を発生させたりすることができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。なお、応答特性とは、目標空燃比が所定の値理論空燃比に限定されないを境にしてリッチ側からリーン側、あるいはリーン側からリッチ側へ変更されたことに伴い、ガスセンサの出力する検出信号が、変化を開始して予め設定した値となるまでにかかる時間をいう。変化にかかる時間が短いほど早いほど良好な応答特性が示される。更に、請求項8に係る発明のように、基準信号の応答特性を変更するための変移率として、目標空燃比がリーン側からリッチ側に変更される場合に基準信号の応答特性を変更するリーンリッチ変移率と、目標空燃比がリッチ側からリーン側に変更される場合に基準信号の応答特性を変更するリッチリーン変移率とを個別に設定することができれば、目標空燃比がリーン側からリッチ側に変更される場合にのみ劣化した状態の劣化信号を出力するガスセンサや、目標空燃比の状態によって劣化の度合いの異なる劣化信号を出力するガスセンサなどの劣化信号を擬似的に生成することができ、ガスセンサの様々な劣化態様に応じた劣化信号を生成することができる。ところで、リッチリーン変化開始点において、劣化信号の生成元となる基準信号は、リーンリッチ信号遅延出力手段から出力される基準信号から、リッチリーン信号遅延出力手段から出力される基準信号に切り換えられる。このとき、リーンリッチ信号遅延出力手段から出力される基準信号の値よりもリッチリーン信号遅延出力手段から出力される基準信号の値が大きかった場合、生成される劣化信号の値は、下降しつつある状態からリッチリーン変化開始点において一時的に上昇し、また下降する状態となり、波打つように変化することがある。そこで請求項9に係る発明のように、リッチリーン変化開始点以後にリッチリーン信号遅延出力手段から生成される劣化信号をリッチリーン保持信号で置換することで、劣化信号の値は、下降しつつある状態から一定な状態となり、また下降する状態となり、波打つように変化することを防止することができる。また、リーンリッチ変化開始点以後にリーンリッチ信号遅延出力手段から生成される劣化信号についても同様に、リーンリッチ保持信号で置換すれば、出力される劣化信号の値が波打つように変化することを防止することができる。これにより、劣化信号発生装置から出力される劣化信号を二次利用した場合に、信号異常等の不具合を生ずる虞がない。以下、本発明を具体化した劣化信号発生装置の一実施の形態について、図面を参照して説明する。図1は、本実施の形態の劣化信号発生装置の一例としてのセンサシミュレータ1の概略的な構成を示すブロック図である。なお、本発明の劣化信号発生装置に接続されるガスセンサとしては、酸素センサや全領域空燃比センサ、NOxセンサなどを用いることができ、本実施の形態ではλ型酸素センサをその一例とし、基準センサ2として、正常な劣化していないλ型酸素センサを用いたものとして説明する。なお、λ型酸素センサについては公知のものを使用しているため、その詳述については省略するが、具体的には、特開2004-138599号公報に開示する筒型の酸素センサを使用しているものとして説明することとする。図1に示すように、センサシミュレータ1は、自動車の排気通路図示外に取り付けられる酸素センサとしての基準センサ2と、自動車の電子制御を司るECU3との間に介在される装置である。基準センサ2は排気通路内を流通する排気ガス中の酸素濃度に応じた検出信号を出力し、この検出信号が基準信号としてセンサシミュレータ1に入力されている。センサシミュレータ1は、入力された基準信号に対し、後述する劣化信号生成プログラムの実行により加工を施して劣化信号を生成し、ECU3に対して出力を行っている。ECU3は、入力された劣化信号に基づき、図示外のエンジンの制御例えば、インジェクタから噴射する燃料の噴射量や噴射タイミングの調整や、点火時期の調整などを行っている。また、ECU3は、基準センサ2のヒータ回路図示外にヒータ駆動電圧の供給も行っており、センサ素子図示外の早期活性化や活性化後の安定化を図っている。センサシミュレータ1は、図示しないケーシング内に、自身の制御を司るCPU11と、後述する劣化信号生成プログラム等が記憶された、書き換え可能なEEPROM12と、各種のデータを一時的に記憶するRAM13とを有するマイクロコンピュータ10を備えている。なお、マイクロコンピュータ10のCPU11、EEPROM12およびRAM13は公知の構成からなるものである。EEPROM12およびRAM13の記憶エリアの構成については後述する。マイクロコンピュータ10には、入力インターフェイス20を介して基準センサ2から入力される基準信号をA/D変換するA/Dコンバータ30と、後述する劣化信号生成プログラムによって生成した劣化信号を出力バッファ40を介してECU3に出力するためにD/A変換するD/Aコンバータ50とが接続されている。更に、マイクロコンピュータ10には、劣化信号生成プログラムに用いられる設定値等を利用者が入力するための入力部60と、入力された設定値等を確認できるように表示する表示部80の表示制御を行う表示制御部70とが接続されている。入力部60としては、例えばプッシュスイッチやロータリースイッチ等が用いられ、表示部80としては、例えばLCDディスプレイ等が用いられる。また、図示しないが、センサシミュレータ1は電源回路等も備えている。なお、後述する劣化信号生成プログラムでは、基準信号から劣化信号を生成する過程において多数のサブルーチン単位での処理が行われ、その際に様々な中間信号を生成する。劣化信号生成プログラムでは、各サブルーチン間における中間信号の受け渡しを、RAM13の変数記憶エリア132に記憶される多数の変数等を用いて行っている。本実施の形態において、一のサブルーチンにおいて処理の終わった中間信号等を変数に記憶する処理を、便宜上、出力と表現し、変数として記憶された中間信号等を他のサブルーチンにおいて読み込む処理を、便宜上、入力と表現する場合もある。次に、EEPROM12の記憶エリアおよびRAM13の記憶エリアの概略的な構成について、図2および図3を参照して説明する。図2は、EEPROM12の記憶エリアの構成を示す概念図である。図3は、RAM13の記憶エリアの構成を示す概念図である。図2に示すように、EEPROM12には、設定値記憶エリア121、プログラム記憶エリア122、初期値記憶エリア123が設けられている。設定値記憶エリア121は、後述する7つの変数RichGain,LeanGain,GainThreshold,RichTimeConstant,LeanTimeConstant,RichDelayTime,LeanDelayTimeの設定値が記憶され、劣化信号生成プログラムにおいて利用される。これらの設定値は、予め利用者により入力部60から任意の値が入力され、EEPROM12に記憶されることで、電源切断時にも保存することができるように構成されている。プログラム記憶エリア122には、劣化信号生成プログラムが記憶されている。EEPROM12を使用することで、バージョンアップ等にも柔軟に対応できるように構成されている。更にEEPROM12には、図示外の各種の記憶エリアが設けられている。また、図3に示すように、RAM13には、ワークエリア131、変数記憶エリア132が設けられている。ワークエリア131には、劣化信号生成プログラムが読み込まれて展開される記憶エリアであり、その実行に利用される。変数記憶エリア132には、以下に示す、各種変数やカウント値等が記憶され、劣化信号生成プログラムの実行に際し使用される。ここで、劣化信号生成プログラムで使用される各変数やカウント値について説明する。Vinは、基準センサ2から取得される基準信号の電圧値を記憶するための変数であり、初期値には0がセットされる。GainThresholdは、基準信号の電圧値をもって排気ガスの空燃比がリッチ側にあるかリーン側にあるかを判定するためのしきい値を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。RichGainは、排気ガスの空燃比がリッチ側にある場合に、基準信号の電圧値に掛け合わせて第1中間信号電圧値Vint1を得るための利得率を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。LeanGainは、排気ガスの空燃比がリーン側にある場合に、基準信号の電圧値に掛け合わせて第1中間信号電圧値Vint1を得るための利得率を記憶するための変数であり、初期値には利用者により予め設定された値がセットされる。Vint1は、基準信号の電圧値Vinのゲインを変更した第1中間信号の電圧値を記憶するための変数であり、初期値には0がセットされる。prevVinは、今回取得した基準信号の電圧値Vinを記憶して保存し、次回1ms後に利用するための変数であり、初期値には0がセットされる。Vdiffは、基準信号の微分値を記憶するための変数であり、微分値は、前回取得された基準信号の電圧値prevVinと今回取得した基準信号の電圧値Vinとの差を近似値として求められる。初期値には0がセットされる。prevVdiff[i]は、99回前に算出した微分値prevVdiff[99]から前回算出した微分値prevVdiff[1]までを記憶するための99個の変数であり、初期値にはそれぞれ0が記憶される。VdiffSumは、99回前に算出した微分値prevVdiff[99]から前回算出した微分値prevVdiff[1]までと、今回算出した微分値Vdiffとを加算した合算値を記憶するための変数であり、初期値には0がセットされる。iは、prevVdiff[i]の記憶エリアや、後述するprevVint3[i]の記憶エリアを指定するための変数として用いられ、初期値には1がセットされる。duは、99回前99ms前に取得した基準信号の微分値から今回取得した基準信号の微分値までの100回分の微分値の平均値を記憶するための変数であり、初期値には0が記憶される。StepCountは、1秒間における立上りピーク値tmpUpPeakおよび立下りピーク値tmpDownPeakを求めるため、1秒間の経過をカウントするためのカウント値であり、初期値には0がセットされる。tmpUpPeakは、微分値の平均値duの最新1秒間の最大値としての立上りピーク値を記憶するための変数であり、初期値には0がセットされる。tmpDownPeakは、微分値の平均値duの最新1秒間の最小値としての立下りピーク値を記憶するための変数であり、初期値には0がセットされる。prevUpPeak1には、前回1秒前求めた1秒間における立上りピーク値を記憶するための変数であり、初期値には0が記憶される。prevUpPeak2には、前々回2秒前求めた1秒間における立上りピーク値を記憶するための変数であり、初期値には0が記憶される。prevDownPeak1には、前回1秒前求めた1秒間における立下りピーク値を記憶するための変数であり、初期値には0が記憶される。prevDownPeak2には、前々回2秒前求めた1秒間における立下りピーク値を記憶するための変数であり、初期値には0が記憶される。UpPeakは、最新の3回分3秒分の立上りピーク値tmpUpPeak,prevUpPeak1,PrevUpPeak2の平均値を記憶するための変数であり、初期値には0.005がセットされる。DownPeakは、最新の3回分3秒分の立下りピーク値tmpDownPeak,prevDownPeak1,PrevDownPeak2の平均値を記憶するための変数であり、初期値には-0.005がセットされる。UpThresholdは、基準信号の変化を示す微分値の平均値duと比較することで、排気ガスの空燃比がリーン側からリッチ側に変更されたことを検出するための閾値を記憶するための変数であり、UpPeakの0.15倍の値が算出され記憶される。DownThresholdは、基準信号の変化を示す微分値の平均値duと比較することで、排気ガスの空燃比がリッチ側からリーン側に変更されたことを検出するための閾値を記憶するための変数であり、DownPeakの0.15倍の値が算出され記憶される。stateは、排気ガスの空燃比の状態を示すフラグであり、エンジン図示外に供給される混合気の目標空燃比がリッチ側からリーン側に変更されたことに伴う基準信号の変化が検出された状態以下、立下り状態という。では-1が記憶される。また、目標空燃比がリーン側からリッチ側に変更されたことに伴う基準信号の変化が検出された状態以下、立上り状態という。では1が記憶される。prevState1は、前回1ms前に判定されたstateの値を閾値チェック処理で用いるために記憶するフラグである。RichTimeConstantは、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、基準信号本実施の形態では第1中間信号の応答特性を変更するために用いられるリーンリッチ変移率を記憶するための変数であり、初期値には0が記憶される。LeanTimeConstantは、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、基準信号本実施の形態では第1中間信号の応答特性を変更するために用いられるリッチリーン変移率を記憶するための変数であり、初期値には0が記憶される。αは、基準信号本実施の形態では第1中間信号の応答特性を変更するための数式において係数として使用され、上記変移率を用いて算出される値が記憶される。Vint2は、基準信号本実施の形態では第1中間信号の応答特性を変更した第2中間信号の電圧値を記憶するための変数であり、初期値には0がセットされる。prevVint2は、今回の応答特性処理の実行によって求めた第2中間信号の電圧値Vint2を記憶して保存し、次回1ms後に利用するための変数であり、初期値には0がセットされる。prevState2は、前回1ms前に判定されたstateの値を保存して第1オーバーシュートチェック処理で用いるために記憶するフラグである。Vbaseは、目標空燃比の変更に伴い基準信号の電圧値Vinが変化しつつあるときに、応答特性処理において、変移率の変更によって一時的に電圧値の変化方向が逆転し例えば高電位から低電位であったものが一時的に低電位から高電位に変化する場合など、波打つように変化する現象が生じないように、第1オーバーシュートチェック処理において、第2中間信号の電圧値Vint2を補正する補正電圧値を記憶するための変数である。また、第2オーバーシュートチェック処理においても同様に、出力される劣化信号の電圧値Voutを補正する補正電圧値を記憶するために用いられ、初期値には0がセットされる。CheckFlagは、第1オーバーシュートチェック処理および第2オーバーシュートチェック処理において、Vbaseを用いた電圧値の補正を行う必要がある場合に1が記憶されるフラグであり、初期値には0がセットされる。Vint3は、第2中間信号の電圧値Vint2に対し、第1オーバーシュートチェック処理において補正を行い生成される第3中間信号の電圧値を記憶するための変数であり、初期値には0がセットされる。prevVint3[i]ただし、i=0,1,2,,600は、応答特性処理、第1オーバーシュートチェック処理を経て得られた過去600ms前までの第3中間信号の電圧値Vint3を1ms毎に記憶して保存し、遅延処理で、遅延時間RichDelayTimeまたはLeanDelayTime分遅いタイミングに遅らせて出力するための601個の変数であり、初期値にはそれぞれ0がセットされる。RichDelayTimeは、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、基準信号本実施の形態では第3中間信号を0~600msの範囲で遅らせて出力するために用いられるリーンリッチ遅延時間を記憶するための変数であり、初期値には0が記憶される。LeanDelayTimeは、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、基準信号本実施の形態では第3中間信号を0~600msの範囲で遅らせて出力するために用いられるリッチリーン遅延時間を記憶するための変数であり、初期値には0が記憶される。prevState3は、前回1ms前に判定されたstateの値を保存して第2オーバーシュートチェック処理で用いるために記憶するフラグである。Vint4は、基準信号の変化によって空燃比がリーン側からリッチ側に変更されたことが検出された状態において、第3中間信号を[RichDelayTime]ms遅らせて出力する第4中間信号の電圧値を記憶するための変数であり、初期値には0がセットされる。prevVint4は、前回1ms前劣化信号として選択された第4中間信号の電圧値Vint4を記憶して保持するための変数であり、初期値には0がセットされる。Vint5は、基準信号の変化によって空燃比がリッチ側からリーン側に変更されたことが検出された状態において、第3中間信号を[LeanDelayTime]ms遅らせて出力する第5中間信号の電圧値を記憶するための変数であり、初期値には0がセットされる。prevVint5は、前回1ms前劣化信号として選択された第5中間信号の電圧値Vint5を記憶して保持するための変数であり、初期値には0がセットされる。Voutは、劣化信号生成プログラムの実行によって基準信号から生成される劣化信号の電圧値を記憶するための変数であり、初期値には0が記憶される。更にRAM13には、図示外の各種の記憶エリアが設けられている。このような構成のセンサシミュレータ1では、後述する図5~図18のフローチャートで示す劣化信号生成プログラムの実行に従って、基準センサ2から1ms毎に基準信号を取得し、加工を施して劣化信号を生成し、ECU3に対し出力を行っている。この劣化信号生成プログラムの詳細について説明する前に、劣化信号生成プログラムの動作の概略について、図4に示す、フローブロック図を用いて簡単に説明する。図4は、劣化信号生成プログラム全体の動作の流れについて説明するためのフローブロック図である。図4に示すように、劣化信号生成プログラムは、ゲイン処理ブロック101、立上り,立下り検出ブロック102、応答特性処理ブロック103、および遅延処理ブロック104からなる4つの処理ブロックにより構成される。ゲイン処理ブロック101では、入力された基準信号電圧値Vinのゲインを変更増幅または減衰する処理が行われる。このときVinは、予め設定された所定のしきい値GainThresholdに対し、大きい場合と小さい場合とで異なる利得率RichGain,LeanGainにより増幅または減衰されるように構成されている。基準信号電圧値Vinを増幅または減衰した第1中間信号電圧値Vint1は、応答特性処理ブロックに対し出力される。なお、ゲイン処理ブロック101は、後述する劣化信号生成プログラムのフローチャート図5参照では、ゲイン処理S3に相当する。次に、立上り,立下り検出ブロック102では、目標空燃比がリッチ状態からリーン状態へ、あるいはリーン状態からリッチ状態へ変更されたことに伴って基準センサ2の基準信号電圧値Vinが変化し始める開始点を検出する処理が行われる。入力される基準信号電圧値Vinに対して行われる微分処理の結果に基づき、上述したフラグstateの値が決定される。そしてフラグstateの値は、次に目標空燃比が変更されたことに伴う基準信号の変化が検出されるまで、維持される構成となっている。すなわち、stateの値の変化するタイミングが、上記開始点となる。なお、立上り,立下り検出ブロック102は、後述する劣化信号生成プログラムのフローチャート図5参照では、基準信号の微分値duを求める移動平均算出処理S5、閾値UpPeak,DownPeakを求めるピーク値検出処理S6、および閾値チェック処理S7に相当する。次に、応答特性処理ブロック103では、ゲイン処理ブロック101でゲインの変更された第1中間信号電圧値Vint1の応答特性を変更する処理が行われる。ここで、目標空燃比がリッチ側からリーン側に変更された場合には、リッチ側で安定しているときに酸素センサの出力する電圧値から、リーン側で安定しているときに酸素センサの出力する電圧値へと電圧値が変化する。目標空燃比がリーン側からリッチ側に変更された場合についても同様である。本実施の形態における応答特性とは、目標空燃比の変更に伴い、電圧値が変化をし始めてから予め定められた値に達するまでにかかる時間早さを示し、変化にかかる時間が短いほど早いほど良好な応答特性が示される。従って、酸素センサが劣化した場合、応答特性は低下し、電圧値の変化に、より時間がかかることとなる。そこで、応答特性処理ブロック103では、ゲイン処理ブロック101において得られた第1中間信号電圧値Vint1に対し、以下の数式1を用いて、応答特性を変化させた第2中間信号電圧値Vint2を得る。Vint2=1-α×Vint1α×prevVint21ただし、prevVint2は、前回のサンプリング時に算出されたVint2の値である。なお、立上り状態と立下り状態とで異なる変移率を用いて応答特性を変更することができるように、リーンリッチ変移率RichTimeConstantおよびリッチリーン変移率LeanTimeConstantを用い、係数αを以下の数式2,3を用いて算出している。目標空燃比がリーン側からリッチ側に変更されたことに伴う基準信号の変化が検出された状態立上り状態:α=exp{-1/1RichTimeConstant/Ts}2目標空燃比がリッチ側からリーン側に変更されたことに伴う基準信号の変化が検出された状態立下り状態:α=exp{-1/1LeanTimeConstant/Ts}3ただし、Tsはサンプリング間隔であり、本実施の形態では1msである。応答特性処理ブロック103では、更に、第1オーバーシュートチェック処理を行っている。例えば、目標空燃比がリッチ側からリーン側に変更された場合、λ型酸素センサの出力する電圧値は高電位から低電位に変化する。このとき、上記の応答特性を変化させる処理を行ったことによって、電圧値が一時的に低電位から高電位に変化変化方向が逆転し、波打つように変化する場合がある。オーバーシュートチェック処理では、最終出力信号としての第3中間信号電圧値Vint3の変化方向に一時的な逆転が行われないように補正を行う処理である。なお、応答特性処理ブロック103は、後述する劣化信号生成プログラムのフローチャート図5参照では、応答特性処理S9、第1オーバーシュートチェック処理S10に相当する。次に、遅延処理ブロック104では、応答特性処理ブロック103で応答特性の変更された第3中間信号電圧値Vint3の遅延時間を変更し、劣化信号電圧値Voutとして出力する処理が行われる。この処理ブロックでは、600ms前に入力された第3中間信号の電圧値Vint3から今回入力された第3中間信号の電圧値Vint3まで記憶して保存している。そして、空燃比の状態がリッチ側立上り状態にあれば、リーンリッチ遅延時間RichDelayTimeで指定される遅延時間前に入力された第3中間信号電圧値Vint3を、第4中間信号電圧値Vint4として生成する。同様に、空燃比の状態がリーン側立下り状態にあれば、リッチリーン遅延時間LeanDelayTimeで指定される遅延時間前に入力された第3中間信号電圧値Vint3を、第5中間信号電圧値Vint5として生成する。更に、第2オーバーシュートチェック処理を行い、上記した第1オーバーシュートチェック処理と同様に、立上り状態では第4中間信号電圧値Vint4に対し、立下り状態では第5中間信号電圧値Vint5に対し補正を行って劣化信号電圧値Voutを生成し、出力する。なお、遅延処理ブロック104は、後述する劣化信号生成プログラムのフローチャート図5参照では、遅延処理S11、第2オーバーシュートチェック処理S13に相当する。このように、基準信号に対し、各処理ブロックにおける処理を施して劣化信号を生成する過程は、本実施の形態では、劣化信号生成プログラムによって実現されている。以下、図5~図18のフローチャートに従い、図19~図30のグラフを参照しながら、劣化信号生成プログラムの実行によって基準信号が加工され、劣化信号として生成される過程について説明する。図5は、劣化信号生成プログラムのメインルーチンのフローチャートである。図6は、ゲイン処理サブルーチンのフローチャートである。図7は、移動平均処理サブルーチンのフローチャートである。図8は、ピーク検出処理サブルーチンのフローチャートである。図9は、ピーク値の平均値算出処理サブルーチンのフローチャートである。図10は、閾値チェック処理サブルーチンのフローチャートである。図11は、応答特性処理サブルーチンのフローチャートである。図12は、第1オーバーシュートチェック処理サブルーチンのフローチャートである。図13は、応答特性立上り処理サブルーチンのフローチャートである。図14は、応答特性立下り処理サブルーチンのフローチャートである。図15は、遅延処理サブルーチンのフローチャートである。図16は、第2オーバーシュートチェック処理サブルーチンのフローチャートである。図17は、遅延立上り処理サブルーチンのフローチャートである。図18は、遅延立下り処理サブルーチンのフローチャートである。以下、フローチャートの各ステップをSと略記する。また、図19は、目標空燃比をリッチ側とリーン側とに交番させた場合に得られる基準信号を時間軸に沿って示した例を示すグラフである。図20は、図19に示した基準信号のリッチ側のゲインを変更した劣化信号の例を示すグラフである。図21は、図19に示した基準信号のリーン側のゲインを変更した劣化信号の例を示すグラフである。図22は、図19に示した基準信号のリッチ側の応答特性を変更した劣化信号の例を示すグラフである。図23は、図19に示した基準信号のリーン側の応答特性を変更した劣化信号の例を示すグラフである。図24は、第1オーバーシュートチェック処理について説明するため、図23の円Qで示す部分を拡大したグラフである。図25は、第1オーバーシュートチェック処理について説明するため、図23の円Qで示す部分を拡大したグラフである。図26は、図19に示した基準信号のリッチ側の遅延時間を変更した劣化信号の例を示すグラフである。図27は、図19に示した基準信号のリーン側の遅延時間を変更した劣化信号の例を示すグラフである。図28は、第2オーバーシュートチェック処理について説明するため、図27の円Rで示す部分を拡大したグラフである。図29は、第2オーバーシュートチェック処理について説明するため、図27の円Rで示す部分を拡大したグラフである。図30は、図19に示した基準信号のゲインと応答特性と遅延時間とをリッチ側およびリーン側それぞれについて変更した劣化信号の例を示すグラフである。センサシミュレータ1では、予め、利用者により各種設定値の入力が行われる。具体的には、基準信号のゲインを変更するためのリッチ側、リーン側それぞれにおける利得率それぞれ変数RichGain,LeanGainの値として利用される。およびしきい値変数GainThresholdの値として利用される。と、基準信号の応答特性を変更するためのリッチ側、リーン側それぞれにおける変移率それぞれ変数RichTimeConstant,LeanTimeConstantの値として利用される。と、基準信号の変化し始める開始点を変更するためのリッチ側、リーン側それぞれにおける遅延時間それぞれ変数RichDelayTime,LeanDelayTimeの値として利用される。とが設定される。これらの設定値は入力部60の操作により行われ、EEPROM12の設定値記憶エリア121に記憶されることで、センサシミュレータ1の電源が落とされた後に再度使用される場合にも、以前入力された設定値が保存されるように構成されている。センサシミュレータ1による基準センサ2の基準信号から劣化信号の生成は、図5に示す、劣化信号生成プログラムが、EEPROM12のプログラム記憶エリア122よりRAM13のワークエリア131に読み込まれ実行されることによって開始される。図5に示す劣化信号生成プログラムでは、S1でまず初期化処理が行われた後、S2で1ms毎のリセット信号の受信待ちが行われる。本実施の形態では、劣化信号生成プログラムと並列に図示外のタイマプログラムが実行されており、1ms毎にリセット信号が出力されている。S2ではリセット信号の受信待ちが行われ、リセット信号の受信を契機にS3へ進むように構成されている。そしてS3~S13の各処理のサブルーチンが順にコールされて実行され、基準センサ2から取得される基準信号を元として劣化信号が生成されてECU3に対し出力される。S13の処理後にはS2に戻り、次のリセット信号の受信待ちが行われる。すなわち、基準信号を加工して劣化信号を生成するS3~S13の処理は、1ms毎に行われている。以下、劣化信号生成プログラムの具体的な処理内容について説明する。初期化処理では、劣化信号生成プログラムで使用される各種変数の初期化が行われるS1。初期化は、EEPROM12の初期値記憶エリア123に記憶された初期値前述が読み込まれ、各変数の値として、RAM13の対応する変数記憶エリア132の記憶エリアに記憶されることで行われる。また、上記した、予め利用者により設定された7つの変数RichGain,LeanGain,GainThreshold,RichTimeConstant,LeanTimeConstant,RichDelayTime,LeanDelayTimeの値がEEPROM12の設定値記憶エリア121より読み込まれ、各変数の値として、対応する変数記憶エリア132の記憶エリアに記憶される。劣化信号生成プログラムのS1以降の処理では、各変数の値の読み出し、書き込み等はすべて、変数記憶エリア132に設けられた、それぞれの処理に対応する各変数の記憶エリアに対して行われる。そしてリセット信号の受信待ちが行われS2:NO、リセット信号の受信を契機にゲイン処理のサブルーチンがコールされるS2:YES,S3。なお、S1において、予め利用者により入力部60から入力されEEPROM12に記憶され保存された遅延時間RichDelayTime,LeanDelayTimeを、劣化信号生成プログラムで使用するため読み込み、RAM13の変数記憶エリアに記憶させるCPU11が、本発明における遅延時間設定手段に相当する。同様に、S1において、予め利用者により入力部60から入力されEEPROM12に記憶され保存された利得率RichGain,LeanGainを、劣化信号生成プログラムで使用するため読み込み、RAM13の変数記憶エリアに記憶させるCPU11が、本発明における利得率設定手段に相当する。更に同様に、S1において、予め利用者により入力部60から入力されEEPROM12に記憶され保存された変移率RichTimeConstant,LeanTimeConstatを、劣化信号生成プログラムで使用するため読み込み、RAM13の変数記憶エリアに記憶させるCPU11が、本発明における変移率設定手段に相当する。[ゲイン処理]ゲイン処理は、基準信号の電圧値Vinに対し、排気ガスの空燃比がリッチ側である場合とリーン側である場合とで異なる利得率RichGain,LeanGainを掛け合わせて第1中間信号電圧値Vint1を得る処理である。本実施の形態の基準センサ2は、前述したように、λ型酸素センサである。λ型酸素センサは排気ガスの空燃比がリッチ側にあるとき、その排気ガスに曝されるλ型酸素センサの出力電圧値は約0.9Vを示し、リーン側にあるときには約0.05Vを示すことが知られている。そして、混合気の目標空燃比が約1秒毎にリッチ側とリーン側とで交番された場合、λ型酸素センサ、すなわち基準センサ2の基準信号の電圧値は、図19に示すように、約1秒毎に約0.05Vと約0.9Vとの間で急峻な変化を示す。図6に示すゲイン処理では、まず、A/Dコンバータ30を介して入力される基準センサ2の出力電圧が取得され、その電圧値が変数Vinとして記憶されるS21。取得された基準信号の電圧値Vinは、予め利用者に設定されたしきい値GainThresholdと比較されるS22。上記したように基準信号の電圧値は、約0.05Vと約0.9Vとの間で変化するため、GainThresholdは通常、略中間の電圧値である0.45Vに設定される。VinがGainThresholdよりも大きかった場合S22:YES、取得された基準信号の電圧値は、空燃比がリッチ側にある場合の電圧値であると判断される。そして、基準信号のGainThresholdを上回る分の電圧値に利得率RichGainを掛け合わせることでリッチ側のゲインのみを変更した第1中間信号電圧値Vint1が算出されるS23。具体的には、GainThresholdVin-GainThreshold×RichGainが計算され、その結果がVint1に記憶される。ここで、基準信号に対し、空燃比がリッチ側である場合にのみゲインを変更した場合の例を、図20に示す。図20では、点線で示される基準信号電圧値Vinのグラフに対比させ、基準信号の電圧値がGainThresholdとしての0.45Vよりも大きな値を示す場合にのみ電圧値を減衰させた第1中間信号電圧値Vint1のグラフを1点鎖線で示している。従って基準信号の電圧値が0.45V以下である場合には、第1中間信号のグラフは基準信号のグラフに一致した状態となる。なお、S21で基準センサ2の基準信号を取得してVinとして記憶させるCPU11が、本発明における基準信号取得手段に相当する。一方、図6に示すように、VinがGainThresholdよりも小さかった場合S22:NO,S25:YES、同様に、取得された基準信号の電圧値は、空燃比がリーン側にある場合の電圧値であると判断される。そして、基準信号のGainThresholdを下回る分の電圧値に利得率LeanGainを掛け合わせることでリーン側のゲインのみを変更した第1中間信号電圧値Vint1が算出されるS26。具体的には、GainThreshold-GainThreshold-Vin×LeanGainが計算され、その計算結果がVint1に記憶される。ここで、基準信号に対し、空燃比がリーン側である場合にのみゲインを変更した場合の例を、図21に示す。図21では、点線で示される基準信号電圧値Vinのグラフに対比させ、基準信号の電圧値がGainThresholdとしての0.45Vよりも小さな値を示す場合にのみ電圧値を増幅させた第1中間信号電圧値Vint1のグラフを1点鎖線で示している。従って基準信号の電圧値が0.45V以上である場合には、第1中間信号のグラフは基準信号のグラフに一致した状態となる。なお、S23またはS26の処理で、基準信号のゲインを変更するCPU11が、本発明におけるゲイン変更手段に相当する。また、図6に示すように、VinがGainThresholdと同じ値である場合にはS22:NO,S25:NO、基準信号のゲインを変更する処理は行われず、その電圧値Vinが第1中間信号の電圧値Vint1として記憶されるS27。このようにして第1中間信号の電圧値Vint1が求められた後にはS23/S26/S27、S29に進む。そして、ゲインを変更したことによって電圧値Vint1が適正値、すなわち0V以上5V未満の範囲外となった場合、適正値の範囲内に収まるように補正が行われる。具体的には、Vint1が5V以上であればS29:YES、Vint1には4.99Vが記憶されるS30。一方、Vint1が0V未満であればS29:NO,S31:YES、Vint1には0Vが記憶されるS33。また、Vint1が0V以上5V未満であればS29:NO,S31:NO、Vin1は適正値であると判断され、補正は行われない。こうしてVint1に補正が行われた後にはS30/S33/S31:NO、メインルーチンに戻る。なお、上記した第1中間信号の電圧値の適正値の範囲は、任意に設定できるようにしてもよい。[移動平均処理]図5のメインルーチンでは、次に、移動平均処理のサブルーチンがコールされるS5。この移動平均処理では、後述する閾値チェック処理S7において、空燃比がリッチ側からリーン側、もしくはリーン側からリッチ側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値duを求める処理が行われる。もっとも、基準信号の短期間における大きな変動揺らぎによって閾値チェック処理において誤判断が生じないように、微分値の平均値duは、今回の移動平均処理の実行時に求められる基準信号の微分値Vdiffと、それ以前の99回の移動平均処理の実行の度に求められた基準信号の微分値prevVdiff[1]~prevVdiff[99]とを合計した100回分の微分値の平均値として算出される。図7に示すように、移動平均処理では、このサブルーチンで用いられる変数VdiffSumの初期化が行われ、0が記憶されるS41。次に、今回取得された基準信号の電圧値Vinから、前回1ms前に取得された基準信号の電圧値prevVinを差し引いた値がVin-prevVinにより算出され、今回取得した基準信号の微分値Vdiffとして記憶されるS42。なお、前述したように基準信号は1ms毎に取得されるため、微分値Vdiffは上記式Vin-prevVinにより近似値として求められる。算出された微分値Vdiffは、微分値の100回分の平均値を求めるため、合算値VdiffSumに記憶されるS43。次のS45~S49の処理では、過去99回分の基準信号の微分値prevVdiff[1]~prevVdiff[99]を合算値VdiffSumに順に加算する処理が行われる。まず、S45で、変数iに1が記憶されるS45。次に、合算値VdiffSumにi回前ここでは1回前に算出した微分値prevVdiff[i1]を加算した値が、新しいVdiffSumとして記憶されるS46。そして変数iの値を1インクリメントして2とした後S47、i≦99を満たすのでS46に戻りS49:YES、同様にVdiffSumにprevVdiff[i2]を加算する処理が行われる。この一連の処理は、iの値が99を超えると終了されS49:NO、処理後には、VdiffSumに、VdiffprevVdiff[1]prevVdiff[2]prevVdiff[99]を計算した結果が記憶されることとなる。従って、今回の基準信号の微分値と、過去99回分の基準信号の微分値とを合わせ100回分の微分値の合算値がVdiffSumとして記憶されているので、S50では、これを100で割って平均値を算出し、その結果が微分値の平均値duとして記憶されるS50。次のS51~S57の処理では、次回の移動平均処理の実行時において微分値の平均値の算出に用いるため、微分値prevVdiff[i]を更新する処理が行われる。まず、S51で、変数iに99が記憶されるS51。次に、prevVdiff[i99]にprevVdiff[i-198]の値を記憶する処理が行われるS53。そして、iの値が1デクリメントされて98となりS54、i≧2を満たすのでS53に戻りS55:YES、同様にprevVdiff[i98]にprevVdiff[i-197]を記憶する処理が行われる。この一連の処理は、iの値が2未満となるまで継続されS55:NO、prevVdiff[99]~prevVdiff[2]までの値がそれまでのprevVdiff[98]~prevVdiff[1]の値でそれぞれ上書き記憶され、更新される。そして最後に今回算出された微分値VdiffがprevVdiff[1]に上書き記憶されて、更新が終了するS57。更に、基準信号の電圧値Vinが、次回の移動平均処理の実行時にS42で利用される、前回の基準信号の電圧値prevVinとして記憶されS58、メインルーチンに戻る。[ピーク値検出処理]図5のメインルーチンでは、次に、ピーク値検出処理のサブルーチンがコールされるS6。このピーク値検出処理では、後述する閾値チェック処理S7において、空燃比がリーン側からリッチ側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値duに対する閾値UpThresholdと、空燃比がリッチ側からリーン側に変更されたか否かを判断するため、基準信号の変化を示す微分値の平均値duに対する閾値DownThresholdとを求める処理が行われる。もっとも、微分値の平均値duの推移はセンサの種類が異なれば違う値を示すため、1秒毎に、その1秒間の微分値の平均値duの最大値立上りピーク値および最小値立下りピーク値を求める。そして、過去3秒分の立上り,立下りピーク値の平均値を元に閾値UpThreshold,DownThresholdを算出することで、そのセンサに合わせた閾値を得る処理が行われる。図8に示すように、ピーク値検出処理では、ピーク値のサンプリングを行う1秒間を計時するために用いられるカウント値StepCountが確認され、1000未満であれば、ピーク値のサンプリング中であると判断されるS61:YES。そして、移動平均処理で求められた微分値の平均値duが、サンプリングを行う1秒間の最大値として記憶される立上りピーク値tmpUpPeakよりも大きければS62:YES、tmpUpPeakにduが記憶され、立上りピーク値が更新されるS63。一方、微分値の平均値duが立上りピーク値tmpUpPeak以下でありS62:NO、サンプリングを行う1秒間の最小値として記憶される立下りピーク値tmpDownPeakよりも小さければS65:YES、同様に、tmpDownPeakにduが記憶され、立下りピーク値が更新されるS66。また、微分値の平均値duが立上りピーク値tmpUpPeak以下S62:NO、であり、更に立下りピーク値tmpDownPeak以上でもある場合S65:NO、ピーク値の更新は行われない。そして、上記いずれの処理が行われた後でもS63/S66/S65:NO、StepCountのインクリメントが行われS67、その後メインルーチンに戻る。ところで、前述したように、図5のメインルーチンのS3~S13の処理は1ms毎に実行される。従って、図8のピーク値検出処理においても1ms毎にS67の処理が実行されることとなり、StepCountは増加し続ける。S1の初期化処理図5参照後、あるいは後述するS70でStepCountがリセットされた後、メインルーチンの処理が1ms毎に繰り返し実行され、1秒が経過してStepCountが1000となった場合にはS61:NO、ピーク値の平均値算出処理のサブルーチンがコールされるS69。図9に示すように、ピーク値の平均値算出処理では、まず、直近の1秒間に検出された立上りピーク値tmpUpPeakが、前回の1秒間に検出された立上りピーク値prevUpPeak1の1/3より大きいか否か、確認が行われるS91。tmpUpPeakがprevUpPeak1の1/3以下の値を示した場合S91:NO、今回検出された1秒間の立上りピーク値tmpUpPeakはノイズであったと判断される。そして前回の1秒間に検出された立上りピーク値prevUpPeak1を0.9倍した値がtmpUpPeakとして記憶されS92、S93に進む。また、tmpUpPeakがprevUpPeak1の1/3より大きい値を示した場合にはS91:YES、そのままS93に進む。S93では、最新の3回分の立上りピーク値の平均値が求められる。具体的にはtmpUpPeakprevUpPeak1prevUpPeak2/3が計算され、その計算結果が立上りピーク値平均値UpPeakに記憶されるS93。立下りピーク値についても同様の処理が行われる。すなわち、直近の1秒間に検出された立下りピーク値tmpDownPeakが、前回の1秒間に検出された立下りピーク値prevDownPeak1の1/3以上の値を示した場合S95:NO、今回検出された1秒間の立下りピーク値tmpDownPeakがノイズであったと判断される。そして前回の1秒間に検出された立下りピーク値prevDownPeak1を0.9倍した値がtmpDownPeakとして記憶されS96、S97に進む。tmpDownPeakがprevDownPeak1の1/3より小さい値を示した場合にはS95:YES、そのままS97に進む。S97では、同様に、最新の3回分の立下りピーク値の平均値が求められる。具体的にはtmpDownPeakprevDownPeak1prevDownPeak2/3が計算され、その計算結果が立下りピーク値平均値DownPeakに記憶されるS97。次いで、1秒後に行われる次回のピーク値の平均値算出処理の実行時において立上りピーク値の平均値、および立下りピーク値の平均値の算出に用いるため、各変数が更新される。具体的には、前回の1秒間に検出された立上り,立下りピーク値prevUpPeak1,prevDownPeak1が、前々回の1秒間に検出された立上り,立下りピーク値prevUpPeak2,prevDownPeak2として上書き記憶される。そして、直近の1秒間に検出された立上り,立下りピーク値tmpUpPeak,tmpDownPeakが、前回の1秒間に検出された立上り,立下りピーク値prevUpPeak1,prevDownPeak1として上書き記憶される。更に、tmpUpPeakおよびtmpDownPeakには0が記憶され、立上りピーク値および立下りピーク値がリセットされるS99。その後、図8に示すピーク値検出処理サブルーチンに戻ると、次に、StepCountに0が記憶され、次の1秒間の立上り,立下りピーク値の検出を行うための計時がリセットされるS70。次のS71~S81の処理では、ピーク値の平均値算出処理で求められた立上り,立下りピーク値平均値UpPeak,DownPeakがそれぞれ適正値の範囲内に収まるように補正が行われる。具体的には、UpPeakは、0以上0.0067以下の値を示せばS71:NO,S74:NO、適正値であると判断される。そしてUpPeakが0未満であればS71:YES、UpPeakには0.005が記憶されるS73。一方、UpPeakが0.0067より大きければS71:NO,S74:YES、UpPeakには0.0067が記憶されるS75。UpPeakの補正が行われた後にはS73/S75/S74:NO、S77に進み、DownPeakについても同様の補正が行われる。すなわち、DownPeakが-0.0067以上0以下の値を示せばS77:NO,S79:NO、適正値であると判断される。そしてDownPeakが0より大きければS77:YES、DownPeakには-0.005が記憶されるS78。一方、DownPeakが-0.0067未満であればS77:NO,S79:YES、DownPeakには-0.0067が記憶されるS81。こうしてDownPeakについても補正が行われた後にはS78/S81/S79:NO、S82に進む。S82の処理では、次の閾値チェック処理S7において用いられる閾値UpThreshold,DownThresholdを求める処理が行われるS82。本実施の形態では、UpThresholdとして、立上りピーク値平均値UpPeakの0.15倍の値が設定され、DownThresholdとしては、立下りピーク値平均値DownPeakの0.15倍の値が設定される構成となっている。その後メインルーチンに戻る。なお、上記のように求められたUpThresholdおよびDownThresholdは、StepCountが1000未満であるうちは、最後にS82の処理が実行された際に算出された値が保存され、次の閾値チェック処理で利用されることとなる。[閾値チェック処理]次に、図5のメインルーチンでは、閾値チェック処理のサブルーチンがコールされるS7。閾値チェック処理は、移動平均処理で求めた基準信号の微分値の平均値duを、ピーク値検出処理で求めた閾値UpThreshold,DownThresholdと比較して、立上り状態にあるか立下り状態にあるかを判定するための処理である。図10に示すように、閾値チェック処理では、前回1ms前、閾値チェック処理が実行された際に判定された空燃比の変化の検出結果を示すフラグstateの値を記憶したprevState1を、今回の処理において新たに用いるため、stateにコピーし記憶させる処理が行われるS101。次に、duとUpThresholdが比較され、duがUpThresholdを上回った場合にはS102:YES、基準信号の電圧値が急激に上昇しており、空燃比がリーン側からリッチ側に変更された立上り状態にあると判定され、stateに1が記憶されるS103。同様に、duがDownThresholdを下回った場合にはS102:NO,S105:YES、基準信号の電圧値が急激に下降しており、空燃比がリッチ側からリーン側に変更された立下り状態にあると判定され、stateに-1が記憶されるS106。そして、duがDownThreshold以上UpThreshold以下であればS102:NO,S105:NO、前回判定されたフラグの値を変更しない。このように、空燃比の状態について判定がなされた後にはS103/S106/S105:NO、次回の閾値チェック処理で利用するため現在のstateの値をprevState1に記憶させて保存してからS107、メインルーチンに戻る。なお、S102においてduがUpThresholdを上回り、立上り状態と判定し、stateの値として新たに1を設定し直す時点が、本発明におけるリーンリッチ変化開始点であり、S103においてduがDownThresholdを下回り、立下り状態と判定し、stateの値として新たに-1を設定し直す時点が、本発明におけるリッチリーン変化開始点である。そして、このS102,S103の判定処理を行うCPU11が、本発明における空燃比変化開始点検出手段に相当する。ここで、図19のグラフを参照し、閾値チェック処理の動作の具体例について説明する。目標空燃比がリーン側からリッチ側に変更されると、基準信号の電圧値出力電圧は、区間[A-B]に示されるように急激に上昇する。つまり、基準信号の微分値の平均値duは大きな値となり、この区間ではdu>UpThresholdを満たし、立上り状態にあると判定され、stateに1が記憶されることとなる。そして基準信号の電圧値が約0.9Vに達して安定する区間[B-C]では、基準信号の微分値の平均値duは0に近づくが、DownThresholdを下回ることはない。この区間では、prevState1からコピーされる前回のstateの値がそのまま維持されるため、stateは1であって立上り状態が維持される。次に目標空燃比がリッチ側からリーン側に変更されると、区間[C-D]に示されるように、基準信号の電圧値が急激に下降する。基準信号の微分値の平均値duは負側で大きな値となり、この区間ではdu<DownThresholdを満たし、立下り状態にあると判定され、stateに-1が記憶されることとなる。そして基準信号の電圧値が約0.05Vとなって安定する区間[D-E]では、基準信号の微分値の平均値duは0に近づくが、UpThresholdを下回ることはない。この区間では、上記同様、prevState1からコピーされる前回のstateの値がそのまま維持されるため、stateは-1であって立下り状態が維持されることとなる。このようにして判定された空燃比の状態は、S9の応答特性処理、S10の第1オーバーシュートチェック処理およびS13の第2オーバーシュートチェック処理で利用される。[応答特性処理]次に、図5のメインルーチンでは、応答特性処理のサブルーチンがコールされるS9。応答特性処理は、空燃比が立上り状態にある場合と立下り状態にある場合とで異なる変移率RichTimeConstant,LeanTimeConstantを用い、基準信号電圧値Vin本実施の形態ではゲイン処理後の第1中間信号電圧値Vint1の応答特性を変更した第2中間信号電圧値Vint2を得る処理である。図11に示す応答特性処理では、まず、閾値チェック処理で得たフラグstateの値が参照され、0より大きいか否か確認が行われるS111。立上り状態にある場合、stateは1でありS111:YES、変移率としてリーンリッチ変移率RichTimeConstantが選択される。そして、前述した数式2を用い、係数αが計算され、計算結果が記憶されるS112。一方、立下り状態にあり、stateが-1だった場合も同様でS111:NO、変移率としてリッチリーン変移率LeanTimeConstantが選択される。そして、前述した数式3を用い、係数αが計算され、計算結果が記憶されるS113。そして前述した数式1を用い、第1中間信号の電圧値Vint1の応答特性を変更した第2中間信号の電圧値Vint2が算出されるS115。このとき、S112またはS113の処理の実行により算出された係数αと、前回の応答特性処理の実行時に求められたVint2を記憶したprevVint2とが数式1の変数として用いられる。その後メインルーチンに戻る。なお、S112またはS113の処理で算出した係数αを用い、S115の処理で基準信号本実施の形態では第1中間信号の応答特性を変更するCPU11が、本発明における変移時間変更手段に相当する。[第1オーバーシュートチェック処理]ところで、空燃比が変更された場合、第2中間信号の算出にそれまで用いられていた変移率RichTimeConstantもしくはLeanTimeConstantが他方の変移率LeanTimeConstantもしくはRichTimeConstantに置き換えられることとなる。この変移率が置き換えられるタイミングは、空燃比の変更に伴う基準信号の変化が検出されたタイミングであり、基準信号の電圧値Vin本実施の形態では第1中間信号の電圧値Vint1が、既に大きく変化増加または減衰を始めている場合がある。このため、上記タイミングにおいて、算出される第2中間信号の電圧値Vint2の変化方向が一時的に逆転することがある。例えば、空燃比がリーン側からリッチ側に変更された場合、第2中間信号の電圧値Vint2は低電位から高電位に変化するが、上記タイミングにおいて、一時的に高電位から低電位に変化し、その信号波形が波打つように変化する場合がある。その一例を、図24のグラフに示す。図24では、Fタイミング以前において、空燃比がリーン側であることが検出されて立下り状態と判定され、stateには-1が記憶されており、第2中間信号電圧値Vint2として出力される信号には、LeanTimeConstantを用いて算出された立下り時の信号図24では2点鎖線で示し、RichTimeConstant=0であるので基準信号図示しないと一致している。となる。そして空燃比がリッチ側に変更されたことが検出されたFタイミング以降は、立上り状態と判定されてstateが1となるので、第2中間信号電圧値Vint2として出力される信号には、RichTimeConstantを用いて算出された立上り時の信号図24では1点鎖線で示す。となる。このFタイミングにおいて、立下り時の第2中間信号の電圧値Vint2は、立上り時の第2中間信号の電圧値Vint2よりも高い値であり、両者を結合して出力される第2中間信号電圧値Vint2は、Fタイミングにおいて、本来なら立上り状態であるので電圧値の変化が上昇となるところが大きく下降し図中矢印で示す。、その後上昇していくグラフを描くこととなる。第1オーバーシュートチェック処理では、このFタイミング以後、立上り状態にありながら電圧値がFタイミングのときの値よりも減少した現象の補正が行われ、空燃比がリッチ側からリーン側に変更された場合についても同様に補正が行われる。すなわち、空燃比がリーン側からリッチ側に変更され、基準信号の電圧値が上昇中にある場合に、一時的な電圧値の下降が生ずることがなく、また、空燃比がリッチ側からリーン側に変更され、基準信号の電圧値が下降中にある場合に、一時的な電圧値の上昇が生ずることがないように、電圧値の補正が行われる。図24を参照した具体例で示すと、Fタイミング直前1ms前の立下り時のVint2の値をVbaseとして保存し、Gタイミングにおいて立上り時のVint2の値がVbaseに一致するまで、FタイミングからGタイミングまでの間の立上り時のVint2の値をVbaseで置換することで補正が行われる。これにより、図25に示す例では、第1オーバーシュートチェック処理の結果得られる第3中間信号電圧値Vint3の描く曲線図25では実線で示される。は、FタイミングからGタイミングまでの間、電圧値が一定Vbaseの直線で置換されたグラフとなる。上記のようにVint2を補正したVint3を得るため、図5のメインルーチンにおいて第1オーバーシュートチェック処理のサブルーチンがコールされるS10。第1オーバーシュートチェック処理では、図12に示すように、まず、閾値チェック処理で得たフラグstateの値が参照され、0より大きいか否か確認が行われるS121。図24に示したグラフを例に説明すると、Fタイミング図24参照以前には、空燃比がリッチ側からリーン側に変更されたと検出された状態立下り状態にあり、stateは-1であるのでS121:NO、応答特性立下り処理のサブルーチンがコールされるS123。図14に示す応答特性立下り処理では、前回1ms前の空燃比の移行状態を示すフラグstateの値を記憶して保存したprevState2の値が参照され、0より大きいか否か確認が行われるS151。Fタイミング以前には、prevState2が-1であるのでS151:NO、前回も今回も空燃比はリーン側にあり、変更されていないと判断され、そのままS155に進む。空燃比の状態stateの値に変化が生ずる前にはCheckFlagの値が0となっておりS155:NO、第2中間信号の電圧値Vint2はそのまま第3中間信号の電圧値Vint3として記憶されてS161、図12に示す第1オーバーシュートチェック処理のサブルーチンに戻る。そして、次回の第1オーバーシュートチェック処理で用いるため、stateの値がprevState2に記憶されて保存される。更に第2中間信号の電圧値Vint2を次回の応答特性処理の実行の際に利用するため、Vint2の値がprevVint2に記憶されて保存されS125、メインルーチンに戻る。時間が経過し、メインルーチンの処理が1ms毎に繰り返し実行されてFタイミング図24参照となったときには、空燃比がリーン状態からリッチ状態に変更されたことが検出されてstateには1が記憶され、図12に示す第1オーバーシュートチェック処理において応答特性立上り処理のサブルーチンがコールされるS121:YES,S122。図13に示す応答特性立上り処理では、Fタイミング図24参照以前のstateの値を記憶したprevState2の値は-1であるのでS151:YES、空燃比の状態がリーン側からリッチ側に変更されたと判断される。そして、Vint2の値の補正が必要なときに置き換えにより補正するための補正値Vbaseとして、前回1ms前算出された立下り時の第2中間信号の電圧値Vint2を保存したprevVint2の値がコピーされ記憶されるS132。更にCheckFlagに1が記憶されるS133。次に、S135ではCheckFlagが1であるのでS135:YES、Vint2の値の補正を行う必要があるか判定するため、Vint2がVbaseより小さいか否かの確認が行われるS136。Fタイミングでは、RichTimeConstantを用いて算出されたVint2の値がVbaseよりも小さいのでVint2に対し補正を行う必要がありS136:YES、Vint3にVbaseの値が記憶されてS137、第1オーバーシュートチェック処理のサブルーチンに戻る。Fタイミング以後、空燃比の状態がリッチ側であるためstateは1を示し、第1オーバーシュートチェック処理では継続して応答特性立上り処理のサブルーチンがコールされる図12:S121:YES。立上り状態の継続時にはprevState2にも1が記憶されているためS131:NO、Vbaseの値はFタイミングにおいて応答特性立上り処理が実行されたときに記憶された値が維持される。更にCheckFlagにも1が記憶された状態が維持されるためS135:YES、FタイミングからGタイミングまでの期間のように、Vint2図24参照はVbaseで置換されS136:YES、上記同様、直線近似されたVint3図25参照が得られるS137。更に時間が経過し、Gタイミングとなったときには、Vint2の値がVbase以上となるため、図13に示す応答特性立上り処理のS136においてS139に進むS136:NO。Vint2を補正する必要がなくなるため、Vint3にはVint2が記憶されS139、更にCheckFlagには0が記憶されてS140、第1オーバーシュートチェック処理のサブルーチンに戻る。Gタイミング以後も、空燃比の状態がリッチ側であるためstateもprevState2も1となっている。第1オーバーシュートチェック処理では継続して応答特性立上り処理のサブルーチンがコールされる図12:S121:YES。そして応答特性立上り処理では、CheckFlagが0となっているのでVint2がそのままVint3に記憶されてS131:NO,S135:NO,S141、第1オーバーシュートチェック処理のサブルーチンに戻る。このようにして生成される第3中間信号電圧値Vint3の描くグラフの一例を図23に示す。図23では、基準信号電圧値Vinに対し、ゲイン処理および空燃比のリーン側からリッチ側への変更に伴う応答特性処理を行っていない。そして、空燃比のリッチ側からリーン側への変更が検出された際図19の区間[C-E]に相当する。に生成される第2中間信号電圧値Vint2に対し第1オーバーシュートチェック処理を行って生成した第3中間信号電圧値Vint3の描くグラフ図中1点鎖線で示す。を、基準信号電圧値Vinの描くグラフ図中点線で示す。と対比させた。リッチリーン変移率LeanTimeConstantを用いて算出されたことによって応答特性が劣化した第3中間信号では、基準信号の電圧値Vinの高電位から低電位への変化と比べ、電圧値Vint3の高電位から低電位への変化に時間がかかっている様子がわかる。そして第1オーバーシュートチェック処理によって、Vint3が高電位から低電位に変化する途中で一時的に低電位から高電位に変化する現象が生じないように補正された様子も確認できる。なお、図14に示す応答特性立下り処理は、上記説明した図13に示す応答特性立上り処理に対し対称となる処理を、空燃比がリッチ側からリーン側へ変更された際に行うものである。従って、応答特性立上り処理におけるS131~S141の処理はそれぞれ、応答特性立下り処理におけるS151~S161の処理にそれぞれ対応し、S151およびS156における不等号の向きが逆となる以外、同一の処理内容となる。具体的には図14に示すように、空燃比がリッチ側からリーン側に変更されたことが基準信号の変化に基づき検出されたタイミングstate=-1,prevState2=1には、S121:NO,S123図12参照,S151:YES、前回1ms前のVint2を保存したprevVint2がVbaseに記憶されS152、CheckFlagに1が記憶されるS153。そしてVint2の値がVbaseより大きく補正を行う必要があればS155:YES,S156:YES、Vint2をVbaseで置換するため、VbaseがVint3に記憶されるS157。その後もVbaseによるVint2の置換が継続されるがS151:NO,S155:YES,S156:YES,S157、VbaseがVint2以下の値となったタイミング以降はS156:NO、Vint2を補正する必要がなくなるため、Vint3にはVint2が記憶されS159、更にCheckFlagには0が記憶されるS160。それ以後も空燃比の状態はリーン側であるためstateもprevState2も-1であり、S121:NO,S123図12参照,S151:NO、CheckFlagも0となっているのでVint2がそのままVint3として記憶されるS155:NO,S161。このときに生成される第3中間信号電圧値Vint3の描くグラフの一例を図22に示す。図22では、基準信号電圧値Vinに対し、ゲイン処理および空燃比のリッチ側からリーン側への変更に伴う応答特性処理を行っていない。そして、空燃比のリーン側からリッチ側への変更が検出された際図19の区間[A-C]に相当する。に生成される第2中間信号電圧値Vint2に対し第1オーバーシュートチェック処理を行って生成した第3中間信号電圧値Vint3の描くグラフ図中1点鎖線で示す。を、基準信号電圧値Vinの描くグラフ図中点線で示す。と対比させた。リーンリッチ変移率RichTimeConstantを用いて算出されたことによって応答特性が劣化した第3中間信号では、基準信号の電圧値Vinの低電位から高電位への変化と比べ、電圧値Vint3の低電位から高電位への変化に時間がかかっている様子がわかる。[遅延処理]第1オーバーシュートチェック処理が終了し、図5のメインルーチンに戻ると、次に、遅延処理のサブルーチンがコールされるS11。遅延処理は、目標空燃比がリーン側からリッチ側、あるいはリッチ側からリーン側に変更されたことに伴い基準信号電圧値Vin本実施の形態では応答特性処理後の第3中間信号電圧値Vint3が変化し始める開始点を、リーンリッチ遅延時間RichDelayTimeまたはリッチリーン遅延時間LeanDelayTimeで設定された時間分遅いタイミングに出力されるように遅延させた第4中間信号電圧値Vint4または第5中間信号電圧値Vint5を得る処理である。図15に示す遅延処理では、まず、応答特性処理、第1オーバーシュートチェック処理を経て得られた第3中間信号の電圧値Vint3が、prevVint3[0]に記憶されるS171。前述したように、prevVint3[i]ただし、i=0,1,2,,600は最大600msまでのVint3の値を記憶して保存するための601個の記憶エリアであり、前回1ms前の遅延処理の実行時のVint3の値から、600回前600ms前の遅延処理の実行時のVint3の値までが、対応する記憶エリアに保存されている。今回の遅延処理の実行時のVint3の値は、上記のように、prevVint3[0]に保存される。なお、S171で、基準信号本実施の形態では第3中間信号の電圧値Vint3をprevVint3[0]に記憶することで、後のS175~S179の処理で取得順にprevVint3[i]に取得順に記憶させるCPU11が、本発明における基準信号記憶手段に相当する。次に、目標空燃比がリーン側からリッチ側へ変更されたことに伴い基準信号が変化し始める開始点を遅延させるリーンリッチ遅延時間RichDelayTimeが参照される。RichDelayTimeは0~600msの範囲内で予め利用者に設定された遅延時間であり、prevVint3[RichDelayTime]で指定される記憶エリアに保存された、[RichDelayTime]ms前の第3中間信号の電圧値Vint3の値が読み出される。そして、排気ガスの空燃比がリーン側からリッチ側に変更された立上り状態が検出された場合に、[RichDelayTime]ms遅延して出力される第4中間信号の電圧値Vint4として記憶されるS172。同様に、LeanDelayTimeも参照され、prevVint3[LeanDelayTime]で指定される記憶エリアに保存された、[LeanDelayTime]ms前の第3中間信号の電圧値Vint3の値が読み出される。そして、排気ガスの空燃比がリッチ側からリーン側に変更された立下り状態が検出された場合に、[LeanDelayTime]ms遅延して出力される第5中間信号の電圧値Vint5として記憶されるS173。後述するが、空燃比がリーン側からリッチ側に変更され基準信号に変化が生じたことが検出された場合には、センサシミュレータ1から出力される劣化信号として第4中間信号が選択され、同様に、空燃比がリッチ側からリーン側に変更され基準信号に変化が生じたことが検出された場合には、劣化信号として第5中間信号が選択される。なお、S172,S173において、[RichDelayTime]ms前および[LeanDelayTime]ms前の基準信号本実施の形態では第3中間信号の電圧値Vint3をprevVint3[RichDelayTime]およびprevVint3[LeanDelayTime]から読み出して、劣化信号として出力するため、第4中間信号の電圧値Vint4および第5中間信号の電圧値Vint5としてそれぞれ記憶するCPU11が、本発明における信号遅延生成手段に相当する。次のS175~S179の処理では、次回の遅延処理の実行時に利用されるように、prevVint3[i]を更新する処理が行われる。まず、S175で、変数iに600が記憶されるS175。次に、prevVint3[i600]にprevVint3[i-1599]の値を記憶する処理が行われるS176。そして、iの値が1デクリメントされて599となりS177、i≧1を満たすのでS175に戻りS179:YES、同様にprevVint3[i599]にprevVint3[i-1598]を記憶する処理が行われる。この一連の処理は、iの値が1未満となるまで継続されS179:NO、prevVint3[600]~prevVint3[1]までの値がそれまでのprevVint3[599]~prevVint3[0]の値でそれぞれ上書き記憶され、更新される。その後、メインルーチンに戻る。[第2オーバーシュートチェック処理]ところで、空燃比が変更された場合、それまで選択されていた第4中間信号または第5中間信号に代わり、第5中間信号または第4中間信号が劣化信号として選択されるようになる。第4中間信号または第5中間信号から、第5中間信号または第4中間信号に切り換わるタイミングは、空燃比の変更に伴う基準信号の変化が検出されたタイミングであり、上記同様に、第4中間信号または第5中間信号の電圧値Vint4またはVint5は、既に大きく変化増加または減衰を始めている場合がある。このため、上記タイミングにおいて、劣化信号の電圧値Voutの変化方向が一時的に逆転することがある。例えば、目標空燃比がリッチ側からリーン側に変更された場合、劣化信号の電圧値Voutは高電位から低電位に変化するが、上記タイミングにおいて、一時的に低電位から高電位に変化し、その信号波形が波打つように変化する場合がある。その一例を、図28のグラフに示す。図28では、Hタイミング以前において、空燃比がリッチ側であることが検出されて立上り状態と判定され、stateには1が記憶されており、劣化信号として出力される信号には、1点鎖線で示される第4中間信号電圧値Vint4が選択されている図28の例ではRichDelayTime=0であるので基準信号と一致している。。そして空燃比がリーン側に変更されたことが検出されたHタイミングでは、立下り状態と判定されてstateが-1となるので、劣化信号として出力される信号は、第4中間信号から、2点鎖線で示される第5中間信号に置き換えられる。Hタイミングにおいて第4中間信号の電圧値Vint4は、空燃比がリッチ側で安定したときに示す約0.9Vから、空燃比がリーン側で安定したときに示す約0.05Vへ変化し始めた、0.9Vよりも低い値となっている。一方、Hタイミングにおける第5中間信号の電圧値Vint5は、[LeanDelayTime]ms前の第3中間信号の電圧値Vint3図28の例では基準信号の電圧値Vinとなっており、より具体的にはHタイミングからIタイミングまでの時間に相当するリッチリーン遅延時間前の値で、約0.9Vとなっている。このため、出力される劣化信号は、図28に示す第4中間信号と第5中間信号とを結合させた信号となり、Hタイミングにおいて、本来なら立下り状態であるため電圧値の変化が下降となるところが大きく上昇し図中矢印で示す。、その後下降を始めるグラフを描くこととなる。第2オーバーシュートチェック処理では、このHタイミング以後、立下り状態にありながら電圧値がHタイミングのときの値よりも増加した現象の補正が行われ、空燃比がリーン側からリッチ側に変更された場合についても同様に補正が行われる。すなわち、空燃比がリーン側からリッチ側に変更され、基準信号の電圧値が上昇中にある場合には、一時的な電圧値の下降を生ずることがなく、また、空燃比がリッチ側からリーン側に変更され、基準信号の電圧値が下降中にある場合には、一時的な電圧値の上昇を生ずることがないように、電圧値の補正が行われる。図28を参照した具体例で示すと、Hタイミング直前1ms前のVint5の値をVbaseとして保存し、IタイミングにおいてVint4の値がVbaseに一致するまで、HタイミングからIタイミングまでの間のVint4の値をVbaseで置換することで補正が行われる。これにより、図29に示す例では、第2オーバーシュートチェック処理の結果得られる劣化信号電圧値Voutの描く曲線図29では実線で示される。は、HタイミングからIタイミングまでの間、電圧値が一定Vbaseの直線で置換されたグラフとなる。このように、遅延処理後の第4中間信号および第5中間信号を補正した劣化信号を得るため、図5のメインルーチンにおいて第2オーバーシュートチェック処理のサブルーチンがコールされるS13。第2オーバーシュートチェック処理では、図16に示すように、まず、閾値チェック処理で得たフラグstateの値が参照され、0より大きいか否か確認が行われるS181。図28に示したグラフを例に説明すると、Hタイミング図28参照以前には空燃比がリーン側からリッチ側に変更されたと検出された状態立上り状態にあり、stateは1であるのでS181:YES、遅延立上り処理のサブルーチンがコールされるS182。なお、S181で、第4中間信号もしくは第5中間信号が劣化信号として生成されるように、stateの値によって遅延立上り処理または遅延立ち下がり処理を選択するCPU11が、本発明における劣化信号選択生成手段に相当する。図17に示す遅延立上り処理では、前回1ms前の空燃比の移行状態を示すフラグstateの値を記憶して保存したprevState3の値が参照され、0より小さいか否か確認が行われるS191。Hタイミング以前には、prevState3が1であるのでS191:NO、前回も今回も空燃比はリッチ側にあり、変更されていないと判断され、そのままS195に進む。空燃比の状態stateの値に変化が生ずる前にはCheckFlagの値が0となっておりS195:NO、stateが1の立上り状態であるので劣化信号には第4中間信号が選択されて、その電圧値Vint4がVoutに記憶されるS201。そして、図16に示す第2オーバーシュートチェック処理のサブルーチンに戻る。更に、次回の第2オーバーシュートチェック処理で用いるため、state,Vint4,Vint5の値がそれぞれ、prevState3,prevVint4,prevVint5に記憶されて保存されS185、メインルーチンに戻る。時間が経過し、メインルーチンの処理が1ms毎に繰り返し実行されてHタイミング図28参照となったときには、空燃比がリッチ状態からリーン状態に変更されたことが検出されてstateには-1が記憶され、図16に示す第2オーバーシュートチェック処理では遅延立下り処理のサブルーチンがコールされるS181:NO,S183。図18に示す遅延立下り処理では、Hタイミング図28参照以前のstateの値を記憶したprevState3の値が1であるのでS211:YES、空燃比の状態がリッチ側からリーン側に変更されたと判断される。そして、Vint5の値の補正が必要なときに置き換えにより補正するための補正値Vbaseとして、前回1ms前選択されていた第4中間信号の電圧値Vint4を保存したprevVint4の値がコピーされ記憶されるS212。更にCheckFlagに1が記憶されるS213。なお、S212で、前回の第4中間信号の電圧値prevVint4を本発明におけるリッチリーン保持信号に相当する補正値Vbaseとしてコピーして記憶させるCPU11、および後述するS192で、同様に、前回の第5中間信号の電圧値prevVint5を本発明におけるリーンリッチ保持信号に相当する補正値Vbaseとしてコピーして記憶させるCPU11が、本発明における保持信号記憶手段に相当する。次に、S215ではCheckFlagが1であるのでS215:YES、Vint5の値の補正を行う必要があるか判定するため、Vint5がVbaseより大きいか否かの確認が行われるS216。Hタイミング図28参照のVint5の値はVbaseよりも大きいのでVint5に対し補正を行う必要がありS216:YES、最終出力信号となる劣化信号の電圧値VoutにVbaseの値が記憶されてS217、第2オーバーシュートチェック処理のサブルーチンに戻る。Hタイミング以後、空燃比の状態がリーン側であるためstateは-1を示し、第2オーバーシュートチェック処理では継続して遅延立下り処理のサブルーチンがコールされる図16:S181:YES。立下り状態の継続時にはprevState3にも-1が記憶されているためS211:NO、Vbaseの値はHタイミングにおいて遅延立下り処理が実行されたときに記憶された値が維持される。更にCheckFlagにも1が記憶された状態が維持されるためS215:YES、HタイミングからIタイミングまでの期間のように、Vint5図28参照はVbaseで置換されS216:YES、上記同様、直線近似されたVout図29参照が得られるS217。なお、S217で、出力する劣化信号の電圧値Voutとして、S212で保存したVbaseを記憶させるCPU11、およびS197で、同様に、出力する劣化信号の電圧値Voutとして、S192で保存したVbaseを記憶させるCPU11が、本発明における保持信号出力手段に相当する。更に時間が経過し、Iタイミングとなったときには、Vint5の値がVbase以下となるため、図18に示す遅延立下り処理のS216においてS219に進むS216:NO。Vint5を補正する必要がなくなるため、VoutにはVint5が記憶されS219、更にCheckFlagには0が記憶されてS220、第2オーバーシュートチェック処理のサブルーチンに戻る。Iタイミング以後も、空燃比の状態がリーン側であるため、stateもprevState3も-1となっている。第2オーバーシュートチェック処理では継続して遅延立下り処理のサブルーチンがコールされる図16:S181:NO。そして遅延立下り処理では、CheckFlagが0となっているのでVint5がそのままVoutとして記憶されS211:NO,S215:NO,S221、第2オーバーシュートチェック処理のサブルーチンに戻る。なお、S219,S221で第5中間信号が劣化信号として出力されるようにその電圧値Vint5をVoutにコピーして記憶させるCPU11が、本発明におけるリッチリーン信号遅延出力手段に相当する。このようにして生成される劣化信号電圧値Voutの描くグラフの一例を図27に示す。図27では、基準信号電圧値Vinに対し、ゲイン処理、応答特性処理、および目標空燃比のリーン側からリッチ側への変更に伴う遅延処理を行っていない。そして、空燃比のリッチ側からリーン側への変更が検出された際図19の区間[C-E]に相当する。に選択される第5中間信号に対し第2オーバーシュートチェック処理が行われて生成された劣化信号電圧値Voutの描くグラフ図中1点鎖線で示す。を、基準信号電圧値Vinの描くグラフ図中点線で示す。と対比させた。基準信号の電圧値Vinが高電位から低電位に変化する場合に、劣化信号電圧値Voutがリッチリーン遅延時間LeanDelayTime分だけ遅れて出力される様子がわかる。そして第2オーバーシュートチェック処理によって、Voutが高電位から低電位に変化する途中で一時的に低電位から高電位に変化する現象が生じないように補正された様子も確認できる。なお、図17に示す遅延立上り処理は、上記説明した図18に示す遅延立下り処理に対し対称となる処理を、空燃比がリーン側からリッチ側へ変更された際に行うものである。従って、遅延立下り処理におけるS211~S221の処理はそれぞれ、遅延立上り処理におけるS191~S201の処理にそれぞれ対応し、出力される劣化信号電圧値Voutとして第4中間信号電圧値Vint4が選択される処理内容となっている。具体的には図17に示すように、空燃比がリーン側からリッチ側に変更されたことが基準信号の変化に基づき検出されたタイミングstate=1,prevState3=-1には、S181:YES,S182図16参照,S191:YES、前回1ms前選択されていた第5中間信号の電圧値Vint5を保存したprevVint5の値がVbaseにコピーされ記憶されS192、CheckFlagに1が記憶されるS193。そしてVint4の値がVbaseより小さく補正を行う必要があればS195:YES,S196:YES、劣化信号の電圧値Voutとして、Vint4を置換したVbaseが記憶されるS197。その後もVbaseによるVint4の置換が継続されるがS191:NO,S195:YES,S196:YES,S197、VbaseがVint4以上の値となったタイミング以降はS196:NO、Vint4を補正する必要がなくなるため、VoutにはVint4が記憶されS199、更にCheckFlagに0が記憶されるS200。それ以後も空燃比の状態はリッチ側であるため、stateもprevState3も1であり、S181:YES,S182図16参照,S191:NO、CheckFlagも0となっているので、Vint4がそのままVoutとして記憶されるS195:NO,S201。なお、S199,S201で第4中間信号が劣化信号として出力されるようにその電圧値Vint4をVoutにコピーして記憶させるCPU11が、本発明におけるリーンリッチ信号遅延出力手段に相当する。このときに生成される劣化信号電圧値Voutの描くグラフの一例を図26に示す。図26では、基準信号電圧値Vinに対し、ゲイン処理、応答特性処理、および目標空燃比のリッチ側からリーン側への変更に伴う遅延処理を行っていない。そして、空燃比のリーン側からリッチ側への変更が検出された際図19の区間[A-C]に相当する。に選択される第4中間信号に対し第2オーバーシュートチェック処理が行われて生成された劣化信号電圧値Voutの描くグラフ図中1点鎖線で示す。を、基準信号電圧値Vinの描くグラフ図中点線で示す。と対比させた。基準信号の電圧値Vinが低電位から高電位に変化する場合に、劣化信号電圧値Voutがリーンリッチ遅延時間RichDelayTime分だけ遅れて出力される様子がわかる。そして第2オーバーシュートチェック処理によって、Voutが低電位から高電位に変化する途中で一時的に高電位から低電位に変化する現象が生じないように補正された様子も確認できる。以上説明したように、劣化信号生成プログラムの実行によって、基準信号電圧値Vinに対しゲイン処理、応答特性処理、および遅延処理を行った劣化信号電圧値Voutが生成される。劣化信号電圧値Voutの描くグラフ図中1点鎖線で示される。を図30に示すが、目標空燃比の変更に追従して電圧値が変化するものの、基準信号電圧値Vinの描くグラフ図中点線で示される。と比較して、電圧値の変化が鈍った信号波形となる。ゲイン処理、応答特性処理、および遅延処理のいずれの処理も、空燃比がリッチ側にある場合とリーン側にある場合とで異なるパラメータを用い、信号に対する処理内容を個別に設定することが可能であり、様々な形態の基準信号の劣化状態を疑似的に生成することができる。なお、本発明は上記実施の形態に限られず、各種の変形が可能である。例えばUSBやRS232C等の入出力インターフェイスを備え、対応するケーブルを用いてパーソナルコンピュータに接続し、設定値等の入力や表示確認等を行ってもよい。また、基準センサ2の基準信号や、生成した劣化信号をその入出力インターフェイスを介してパーソナルコンピュータに出力し、パーソナルコンピュータ上で出力波形を生成してモニタリングできるようにしてもよいし、もちろん、表示部80に出力波形を表示させてもよい。また、EEPROM12の設定値記憶エリア121に、設定値の組み合わせを複数種類記憶できるようにしてもよい。つまり、基準センサ2として空燃比センサを用いた場合やNOxセンサを用いた場合など、それぞれのセンサ向けに設定した設定値を読み込めるようにすれば、接続するセンサを取り換える度に設定値を入れ直す手間を省くことができる。もちろん、EEPROM12ではなく一般的なROMを用い、これら設定値の組み合わせをプリセット値として保存してもよい。また、本実施の形態では、図4に示す、ゲイン処理ブロック、応答特性処理ブロックおよび遅延処理ブロックの各処理ブロックをこの順に行ったが、それぞれ独立して実行することが可能であり、任意の順に処理を行ってもよい。ただし、立上り,立下り検出ブロックについては、応答特性処理ブロックおよび遅延処理ブロックよりも先に処理を行う必要がある。また、利用者の設定可能な7つの変数RichGain,LeanGain,GainThreshold,RichTimeConstant,LeanTimeConstant,RichDelayTime,LeanDelayTimeは、S1の初期化処理でEEPROM12の設定値記憶エリア121からRAM13の変数記憶エリア132にコピーされ、以降の処理では変数記憶エリア132の記憶値が参照されたが、これら7つの変数については設定値記憶エリア121の記憶値が参照されるようにしてもよい。このようにすれば、利用者が、劣化信号生成プログラムの実行中に設定値を変更した場合に、その変更結果を、生成される劣化信号に即座に反映させることができる。また、本実施の形態では、劣化信号生成プログラムを実行することでソフトウェア的に基準信号から劣化信号を生成したが、ロジック回路を構成したアナログまたはデジタルハードウェア回路を作製し、劣化信号の生成を行ってもよい。"