(57)【要約】【課題】Δ変調、ΔΣ変調およびΣΔ変調のいずれか１つのアルゴリズムに基づく制御処理と、応答指定型制御アルゴリズムに基づく制御処理との切り換えの前後間における制御入力の段差を解消でき、切り換えの際の制御対象の出力の急激な変化を回避できる制御装置を提供する。【解決手段】制御装置１のＥＣＵ２は、出力偏差の予測値ＰＲＥＶＯ２を算出し（ｓｔｅｐ２２）、ΔΣ変調アルゴリズムまたはスライディングモード制御アルゴリズムに基づき、予測値ＰＲＥＶＯ２に応じて、目標空燃比ＫＣＭＤを算出し（ｓｔｅｐ３８〜４０）、内燃機関３の運転状態に応じて、一方のアルゴリズムに基づいて算出された目標空燃比ＫＣＭＤを選択し（ｓｔｅｐ７１，７３）、目標空燃比ＫＣＭＤの選択がΔΣ変調アルゴリズムからスライディングモード制御アルゴリズムに変化した場合、｜ＰＲＥＶＯ２｜≦ＶＤＳＭＥＮＤのときに目標空燃比ＫＣＭＤの算出の切り換えを実行する（ｓｔｅｐ７６，１９２）。【選択図】　図２８
2004100652.tif 000002
【特許請求の範囲】
【請求項１】
制御対象の出力と所定の目標値との偏差を算出する偏差算出手段と、
Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのうちのいずれか１つの変調アルゴリズムに基づき、前記算出された偏差に応じて、前記制御対象の出力を前記目標値に収束させるための、前記制御対象への制御入力を算出する第１の制御入力算出手段と、
応答指定型制御アルゴリズムに基づき、前記算出された偏差に応じて、前記制御対象の出力を前記目標値に収束させるための、前記制御対象への制御入力を算出する第２の制御入力算出手段と、
前記制御対象の状態を検出する検出手段と、
当該検出された制御対象の状態に応じて、前記第１および第２の制御入力算出手段の一方を、制御入力算出手段として選択する選択手段と、
当該選択手段により選択された制御入力算出手段が前記第１および第２の制御入力算出手段の一方から他方に変化した場合において、前記算出された偏差が所定の範囲内にあるときに、前記制御入力算出手段の前記一方から前記他方への切り換えを実行する切換手段と、
を備えることを特徴とする制御装置。
【請求項２】
前記第２の制御入力算出手段は、
前記第１の制御入力算出手段から前記第２の制御入力算出手段への切り換えの初期において、前記制御入力を所定の制限範囲内の値に設定する制限手段を備えることを特徴とする請求項１に記載の制御装置。
【請求項３】
内燃機関の排気通路を流れる排気ガスの空燃比を表す検出信号を出力する空燃比センサと、
当該空燃比センサの出力と所定の目標値との偏差を算出する偏差算出手段と、
Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのうちのいずれか１つの変調アルゴリズムに基づき、前記算出された偏差に応じて、前記空燃比センサの出力を前記目標値に収束させるための、前記内燃機関に供給すべき混合気の目標空燃比を算出する第１の空燃比算出手段と、
応答指定型制御アルゴリズムに基づき、前記算出された偏差に応じて、前記空燃比センサの出力を前記目標値に収束させるための、前記内燃機関に供給すべき混合気の目標空燃比を算出する第２の空燃比算出手段と、
前記内燃機関の運転状態を表す運転状態パラメータを検出する運転状態パラメータ検出手段と、
前記検出された運転状態パラメータに応じて、前記第１および第２の空燃比算出手段の一方を、空燃比算出手段として選択する選択手段と、
当該選択手段により選択された空燃比算出手段が前記第１および第２の空燃比算出手段の一方から他方に変化した場合において、前記算出された偏差が所定の範囲内にあるときに、前記空燃比算出手段の前記一方から前記他方への切り換えを実行する切換手段と、
当該切り換えられた空燃比算出手段により算出された目標空燃比に応じて、前記内燃機関に供給される混合気の空燃比を制御する空燃比制御手段と、
を備えることを特徴とする制御装置。
【請求項４】
前記第２の空燃比算出手段は、
前記第１の空燃比算出手段から前記第２の空燃比算出手段への切り換えの初期において、前記目標空燃比を所定の制限範囲内の値に設定する制限手段を備えることを特徴とする請求項３に記載の制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、制御対象の出力と目標値との偏差に応じて算出した制御入力を制御対象に入力することにより、制御対象の出力を目標値に収束させるように制御する制御装置に関し、特に、制御入力を、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのいずれか１つの変調アルゴリズムに基づく算出処理と、応答指定型制御アルゴリズムに基づく算出処理とに切り換えて算出するものに関する。
【０００２】
【従来の技術】
本出願人は、この種の制御装置として、例えば特願２００１−４００９８８号において、内燃機関の混合気の空燃比を制御するものをすでに提案している。この制御装置は、内燃機関の排気通路の触媒装置よりも下流側に設けられた酸素濃度センサと、ΔΣ変調アルゴリズムに基づく制御アルゴリズムにより、混合気の空燃比を制御するＡＤＳＭコントローラと、スライディングモード制御アルゴリズムに基づく制御アルゴリズムにより、混合気の空燃比を制御するＰＲＩＳＭコントローラと、を備えている。
【０００３】
この制御装置では、空燃比制御が、内燃機関の運転状態に応じて、ＡＤＳＭコントローラおよびＰＲＩＳＭコントローラの一方に切り換えられて実行される。より具体的には、ＡＤＳＭコントローラでは、ΔΣ変調アルゴリズムに基づく制御アルゴリズムにより、酸素濃度センサの出力と所定の目標値との偏差に応じて、酸素濃度センサの出力を目標値に収束させるための目標空燃比が算出され、この目標空燃比に応じて混合気の空燃比が制御される。また、ＰＲＩＳＭコントローラでは、スライディングモード制御アルゴリズムに基づく制御アルゴリズムにより、酸素濃度センサの出力と所定の目標値との偏差に応じて、酸素濃度センサの出力を目標値に収束させるための目標空燃比が算出され、この目標空燃比に応じて混合気の空燃比が制御される。
【０００４】
以上のＡＤＳＭコントローラまたはＰＲＩＳＭコントローラによる空燃比制御により、酸素濃度センサの出力が目標値に収束するように制御され、その結果、触媒装置の排気ガス浄化率が良好な状態に維持される。その際、ＡＤＳＭコントローラによる空燃比制御では、酸素濃度センサの出力が目標値よりもリッチ側にある場合（すなわち触媒装置に供給される排気ガスがリッチ側にある場合）には、酸素濃度センサの出力の目標値への収束速度がリーン側にある場合よりも緩やかになるように、混合気の空燃比が制御される。これは、酸素濃度センサの出力が目標値よりもリッチ側にある場合、これを目標値に急速に収束させるように、混合気の空燃比を制御すると、目標空燃比がリーン側の値に設定されることで、触媒装置に供給される排気ガスの空燃比が急速にリーン化され、その結果、触媒装置内の上流側部分の触媒が過度にリーン化されることに起因してＮＯｘ浄化率が低下するので、これを防止するためである。
【０００５】
【発明が解決しようとする課題】
上記従来の空燃比制御装置によれば、ＡＤＳＭコントローラによる空燃比制御からＰＲＩＳＭコントローラによる空燃比制御に切り換えられた場合、この切り換え前の時点で、酸素濃度センサの出力が目標値よりもリッチ側にかなり離れていたときには、空燃比制御の切り換え後、ＰＲＩＳＭコントローラにより、制御入力としての目標空燃比が、酸素濃度センサの出力がＡＤＳＭコントローラよりも速い速度で目標値に収束するように、ＡＤＳＭコントローラの算出値よりもリーン側の値に設定されることで、混合気の空燃比がリーン側に大幅に急変し、切り換えの前後間で段差を生じてしまうことがある。その結果、上述したように、触媒装置内の触媒の上流側部分が過度にリーン化されることに起因して、ＮＯｘ浄化率が低下してしまうおそれがある。これは、ＰＲＩＳＭコントローラでは、応答指定型制御アルゴリズムの一種であるスライディングモード制御アルゴリズムを用いることにより、酸素濃度センサの出力の目標値への収束速度をＡＤＳＭコントローラよりも高めることによって、空燃比制御の制御精度を高めるようにしているためである。
【０００６】
本発明は、上記課題を解決するためになされたもので、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのいずれか１つに基づく制御処理と、応答指定型制御アルゴリズムに基づく制御処理とに切り換えて、制御対象の出力を目標値に収束させるように制御する場合において、２つの制御処理の切り換えの前後間における制御入力の段差（急激な変化）を解消でき、それにより、切り換えの際の制御対象の出力の急激な変化を回避できる制御装置を提供することを目的とする。
【０００７】
【課題を解決するための手段】
この目的を達成するために、請求項１に係る制御装置１は、制御対象の出力（例えば実施形態における（以下、この項において同じ）酸素濃度センサ１５の出力Ｖｏｕｔ）と所定の目標値Ｖｏｐとの偏差（出力偏差ＶＯ２の予測値ＰＲＥＶＯ２）を算出する偏差算出手段（ＥＣＵ２、状態予測器２２、ステップ３４）と、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのうちのいずれか１つの変調アルゴリズムに基づき、算出された偏差に応じて、制御対象の出力を目標値に収束させるための、制御対象への制御入力（目標空燃比ＫＣＭＤ）を算出する第１の制御入力算出手段（ＥＣＵ２、ＤＳＭコントローラ２４、ＳＤＭコントローラ２９、ＤＭコントローラ３０、ステップ３９，４０）と、応答指定型制御アルゴリズムに基づき、算出された偏差に応じて、制御対象の出力を目標値に収束させるための、制御対象への制御入力（目標空燃比ＫＣＭＤ）を算出する第２の制御入力算出手段（ＥＣＵ２、スライディングモードコントローラ２５、ステップ３８，４０）と、制御対象の状態（吸気管内絶対圧ＰＢＡ、エンジン回転数ＮＥ）を検出する検出手段（ＥＣＵ２、吸気管内絶対圧センサ１１、クランク角センサ１３）と、検出された制御対象の状態に応じて、第１および第２の制御入力算出手段の一方を、制御入力算出手段として選択する選択手段（ＥＣＵ２、ステップ７１，７３）と、選択手段により選択された制御入力算出手段が第１および第２の制御入力算出手段の一方から他方に変化した場合（ステップ７４の判別結果がＮＯからＹＥＳになった場合）において、算出された偏差が所定の範囲内にあるとき（｜ＰＲＥＶＯ２｜≦ＶＤＳＭＥＮＤのとき）に、制御入力算出手段の一方から他方への切り換えを実行する切換手段（ＥＣＵ２、ステップ７６，１９２）と、を備えることを特徴とする。
【０００８】
この制御装置によれば、制御対象の出力を目標値に収束させるための制御入力が、第１の制御入力算出手段により、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのうちのいずれか１つの変調アルゴリズムに基づき、制御対象の出力と所定の目標値との偏差に応じて算出され、第２の制御入力算出手段により、応答指定型制御アルゴリズムに基づき、制御対象の出力と所定の目標値との偏差に応じて算出される。また、選択手段により、第１および第２の制御入力算出手段の一方が、検出された制御対象の状態に応じて制御入力算出手段として選択され、この選択手段によって選択された制御入力算出手段が第１および第２の制御入力算出手段の一方から他方に変化した場合において、算出された偏差が所定の範囲内にあるときに、制御入力算出手段の一方から他方への切り換えが、切換手段により実行される。一般に、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムでは、その算出値としての制御入力は、所定の上限値と下限値との間で反転を繰り返す値として算出される。また、応答指定型制御アルゴリズムでは、その算出値としての制御入力は、目標値に対する制御対象の出力の応答性、例えば目標値への収束速度を指定するような値として算出される。そのため、第１および第２の制御入力算出手段により制御入力がそれぞれ算出された場合、偏差の値が同じであっても、制御入力は互いに異なる値として算出され、特に、第２の制御入力算出手段による算出値の絶対値が、第１の制御入力算出手段による算出値の絶対値を大きく上回る場合がある。これに対して、この制御装置によれば、上述したように、偏差が所定の範囲内にあるときに、制御入力算出手段が切り換えられるので、例えば、この所定の範囲を値０付近の範囲に設定することにより、制御入力算出手段の切り換えの前後間における制御入力の段差（すなわち急激な変化）を解消することができる。それにより、制御入力算出手段の切り換えの際、制御対象の出力の急激な変化を回避することができる。
【０００９】
請求項２に係る発明は、請求項１に記載の制御装置において、第２の制御入力算出手段は、第１の制御入力算出手段から第２の制御入力算出手段への切り換えの初期において、制御入力を所定の制限範囲内の値に設定する（スライディングモード操作量ＤＫＣＭＤＳＬＤを非アイドル運転用の下限値ＵＳＬＡＬＦ以上の値に設定する）制限手段（ＥＣＵ２、ステップ１１５，１２４，１２７，１９３）を備えることを特徴とする。
【００１０】
この制御装置によれば、制限手段により、第１の制御入力算出手段から第２の制御入力算出手段への切り換えの初期において、制御入力が所定の制限範囲内の値に設定されるので、この制限範囲を適切に設定することにより、第２の制御入力算出手段への切り換えの際、切り換え後の制御入力の絶対値が切り換え前の制御入力の絶対値を大幅に上回るような状態が、２つの制御入力算出手段の前述した特性に起因して発生するのを回避でき、切り換えの前後間での制御入力の段差をより確実に解消することができる。
【００１１】
請求項３に係る制御装置１は、内燃機関３の排気通路（排気管７）を流れる排気ガスの空燃比を表す検出信号を出力する空燃比センサ（酸素濃度センサ１５）と、空燃比センサの出力Ｖｏｕｔと所定の目標値Ｖｏｐとの偏差（出力偏差ＶＯ２の予測値ＰＲＥＶＯ２）を算出する偏差算出手段（ＥＣＵ２、状態予測器２２、ステップ３４）と、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのうちのいずれか１つの変調アルゴリズムに基づき、算出された偏差に応じて、空燃比センサの出力を目標値に収束させるための、内燃機関に供給すべき混合気の目標空燃比ＫＣＭＤを算出する第１の空燃比算出手段（ＥＣＵ２、ＤＳＭコントローラ２４、ＳＤＭコントローラ２９、ＤＭコントローラ３０、ステップ３９，４０）と、応答指定型制御アルゴリズムに基づき、算出された偏差に応じて、空燃比センサの出力を目標値に収束させるための、内燃機関に供給すべき混合気の目標空燃比ＫＣＭＤを算出する第２の空燃比算出手段（ＥＣＵ２、スライディングモードコントローラ２５、ステップ３８，４０）と、内燃機関３の運転状態を表す運転状態パラメータ（吸気管内絶対圧ＰＢＡ、エンジン回転数ＮＥ）を検出する運転状態パラメータ検出手段（ＥＣＵ２、吸気管内絶対圧センサ１１、クランク角センサ１３）と、検出された運転状態パラメータに応じて、第１および第２の空燃比算出手段の一方を、空燃比算出手段として選択する選択手段（ＥＣＵ２、ステップ７１，７３）と、選択手段により選択された空燃比算出手段が第１および第２の空燃比算出手段の一方から他方に変化した場合（ステップ７４の判別結果がＮＯからＹＥＳになった場合）において、算出された偏差が所定の範囲内にあるとき（｜ＰＲＥＶＯ２｜≦ＶＤＳＭＥＮＤのとき）に、空燃比算出手段の一方から他方への切り換えを実行する切換手段（ＥＣＵ２、ステップ７６，１９２）と、切り換えられた空燃比算出手段により算出された目標空燃比に応じて、内燃機関に供給される混合気の空燃比を制御する空燃比制御手段（ＥＣＵ２、ステップ６，８〜１３）と、を備えることを特徴とする。
【００１２】
この制御装置によれば、偏差算出手段により、空燃比センサの出力と所定の目標値との偏差が算出され、空燃比センサの出力を目標値に収束させるための、内燃機関に供給される混合気の空燃比が、第１の空燃比算出手段により、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのうちのいずれか１つの変調アルゴリズムに基づき、算出された偏差に応じて算出され、また、第２の空燃比算出手段により、応答指定型制御アルゴリズムに基づき、偏差に応じて算出される。さらに、選択手段により、検出された運転状態パラメータに応じて、第１および第２の空燃比算出手段の一方が空燃比算出手段として選択され、切換手段により、選択手段により選択された空燃比算出手段が第１および第２の空燃比算出手段の一方から他方に変化した場合において、算出された偏差が所定の範囲内にあるときに、空燃比算出手段の一方から他方への切り換えが実行されるとともに、空燃比制御手段により、内燃機関に供給される混合気の空燃比が、切り換えられた空燃比算出手段により算出された目標空燃比に応じて制御される。前述したように、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムでは、その算出値としての目標空燃比は、所定の上限値と下限値との間で反転を繰り返す値として算出され、一方、応答指定型制御アルゴリズムでは、その算出値としての目標空燃比は、目標値に対する空燃比センサの出力の応答性、例えば目標値への収束速度を指定するような値として算出される。そのため、第１および第２の空燃比算出手段により目標空燃比をそれぞれ算出した場合、偏差の値が同じであっても、目標空燃比は互いに異なる値として算出され、特に、第２の空燃比算出手段による算出値の絶対値が、第１の算出手段による算出値の絶対値を大きく上回る場合がある。これに対して、この制御装置によれば、上述したように、偏差が所定の範囲内にあるときに、空燃比算出手段が切り換えられるので、例えば、この所定の範囲を値０付近の範囲に設定することにより、空燃比算出手段の切り換えの前後間における目標空燃比の段差を解消することができ、それにより、空燃比算出手段を切り換える際、排気通路内の排気ガス状態が急激に変動するのを回避できる。その結果、例えば、触媒装置が排気通路に設けられている場合には、排気ガス状態の急激な変動に起因して、触媒装置の排気ガス浄化率が悪化するのを回避することができる。
【００１３】
請求項４に係る発明は、請求項３に記載の制御装置１において、第２の空燃比算出手段は、第１の空燃比算出手段から第２の空燃比算出手段への切り換えの初期において、目標空燃比（目標空燃比ＫＣＭＤのうちのスライディングモード操作量ＤＫＣＭＤＳＬＤ）を所定の制限範囲内の値（非アイドル運転用の下限値ＵＳＬＡＬＦ以上の値）に設定する制限手段（ＥＣＵ２、ステップ１１５，１２４，１２７，１９３）を備えることを特徴とする。
【００１４】
この制御装置によれば、制限手段により、目標空燃比が、第１の空燃比算出手段から第２の空燃比算出手段への切り換えの初期において、所定の制限範囲内の値に設定されるので、この制限範囲を適切に設定することにより、空燃比算出手段の切り換えの前後間において、切り換え後の目標空燃比の絶対値が切り換え前の目標空燃比の絶対値を大幅に上回るような状態が、２つの空燃比算出手段の前述した特性に起因して発生するのを回避でき、空燃比算出手段の切り換えの前後間での目標空燃比の段差を確実に解消することができる。
【００１５】
【発明の実施の形態】
以下、図面を参照しながら、本発明の第１実施形態に係る制御装置について説明する。第１実施形態は、制御装置を内燃機関の空燃比を制御するものとして構成した例であり、図１は、この制御装置１およびこれを適用した内燃機関３の概略構成を示している。同図に示すように、この制御装置１は、ＥＣＵ２を備えており、このＥＣＵ２は、後述するように、内燃機関（以下「エンジン」という）３の運転状態に応じて、これに供給する混合気の空燃比を制御する。
【００１６】
このエンジン３は、図示しない車両に搭載された直列４気筒型ガソリンエンジンであり、第１〜第４の４つの気筒＃１〜＃４を備えている。このエンジン３の吸気管４のスロットル弁５の近傍には、例えばポテンショメータなどで構成されたスロットル弁開度センサ１０が設けられている。このスロットル弁開度センサ１０は、スロットル弁５の開度（以下「スロットル弁開度」という）θＴＨを検出して、その検出信号をＥＣＵ２に送る。
【００１７】
さらに、吸気管４のスロットル弁５よりも下流側には、吸気管内絶対圧センサ１１が設けられている。この吸気管内絶対圧センサ１１（検出手段、運転状態パラメータ検出手段）は、例えば半導体圧力センサなどで構成され、吸気管４内の吸気管内絶対圧ＰＢＡを検出し、その検出信号をＥＣＵ２に出力する。
【００１８】
また、吸気管４は、インテークマニホールド４ａの４つの分岐部４ｂを介して４つの気筒＃１〜＃４にそれぞれ接続されている。各分岐部４ｂには、各気筒の図示しない吸気ポートの上流側に、インジェクタ６が取り付けられている。各インジェクタ６は、エンジン３の運転時に、ＥＣＵ２からの駆動信号によって、その開弁時間である最終燃料噴射量ＴＯＵＴおよび噴射タイミングが制御される。
【００１９】
一方、エンジン３の本体には、例えばサーミスタなどで構成された水温センサ１２が取り付けられている。水温センサ１２は、エンジン３のシリンダブロック内を循環する冷却水の温度であるエンジン水温ＴＷを検出し、その検出信号をＥＣＵ２に出力する。
【００２０】
また、エンジン３のクランクシャフト（図示せず）には、クランク角センサ１３が設けられている。このクランク角センサ１３（検出手段、運転状態パラメータ検出手段）は、クランクシャフトの回転に伴い、いずれもパルス信号であるＣＲＫ信号およびＴＤＣ信号をＥＣＵ２に出力する。
【００２１】
ＣＲＫ信号は、所定のクランク角（例えば３０゜）ごとに１パルスが出力される。ＥＣＵ２は、このＣＲＫ信号に応じ、エンジン３の回転数（以下「エンジン回転数」という）ＮＥを算出する。また、ＴＤＣ信号は、各気筒のピストン（図示せず）が吸気行程のＴＤＣ位置よりも若干、手前の所定のクランク角位置にあることを表す信号であり、所定クランク角ごとに１パルスが出力される。
【００２２】
一方、排気管７（排気通路）のエキゾーストマニホールド７ａよりも下流側には、上流側から順に第１触媒装置８ａおよび第２触媒装置８ｂが間隔を存して設けられている。両触媒装置８ａ，８ｂはいずれも、ＮＯｘ触媒と３元触媒を組み合わせたものであり、ＮＯｘ触媒による酸化還元作用により、リーンバーン運転時の排気ガス中のＮＯｘを浄化するとともに、３元触媒の酸化還元作用により、リーンバーン運転以外の運転時の排気ガス中のＣＯ、ＨＣおよびＮＯｘを浄化する。
【００２３】
これらの第１および第２触媒装置８ａ，８ｂの間には、空燃比センサとしての酸素濃度センサ（以下「Ｏ２センサ」という）１５が取り付けられている。このＯ２センサ１５（検出手段、空燃比センサ）は、ジルコニアおよび白金電極などで構成され、第１触媒装置８ａの下流側の排気ガス中の酸素濃度に基づく出力ＶｏｕｔをＥＣＵ２に送る。このＯ２センサ１５の出力Ｖｏｕｔ（制御対象の出力）は、理論空燃比よりもリッチな混合気が燃焼したときには、ハイレベルの電圧値（例えば０．８Ｖ）となり、混合気がリーンのときには、ローレベルの電圧値（例えば０．２Ｖ）となるとともに、混合気が理論空燃比付近のときには、ハイレベルとローレベルの間の所定の目標値Ｖｏｐ（例えば０．６Ｖ）となる（図２参照）。
【００２４】
また、第１触媒装置８ａよりも上流側のエキゾーストマニホールド７ａの集合部付近には、ＬＡＦセンサ１４が取り付けられている。このＬＡＦセンサ１４は、Ｏ２センサ１５と同様のセンサとリニアライザなどの検出回路とを組み合わせることによって構成されており、リッチ領域からリーン領域までの広範囲な空燃比の領域において排気ガス中の酸素濃度をリニアに検出し、その酸素濃度に比例する出力ＫＡＣＴをＥＣＵ２に送る。この出力ＫＡＣＴは、空燃比の逆数に比例する当量比として表される。
【００２５】
次に、図２を参照しながら、第１触媒装置８ａの排気ガスの浄化率とＯ２センサ１５の出力Ｖｏｕｔ（電圧値）との関係について説明する。同図は、第１触媒装置８ａが、長時間の使用により浄化能力が低下した劣化状態と、浄化能力の高い未劣化状態の場合において、ＬＡＦセンサ１４の出力ＫＡＣＴすなわちエンジン３に供給される混合気の空燃比が理論空燃比の付近で変化したときの、２つの第１触媒装置８ａのＨＣおよびＮＯｘの浄化率と、Ｏ２センサ１５の出力Ｖｏｕｔをそれぞれ測定した結果の一例を示している。同図において、破線で示すデータはいずれも、第１触媒装置８ａが未劣化状態の場合の測定結果であり、実線で示すデータはいずれも、第１触媒装置８ａが劣化状態の場合の測定結果である。また、ＬＡＦセンサ１４の出力ＫＡＣＴが大きいほど、混合気の空燃比がよりリッチ側であることを示している。
【００２６】
同図に示すように、第１触媒装置８ａが劣化している場合には、未劣化状態の場合と比べて、排気ガスの浄化能力が低下していることにより、ＬＡＦセンサ１４の出力ＫＡＣＴがよりリーン側の値ＫＡＣＴ１のときに、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐを横切っている。一方、第１触媒装置８ａは、その劣化・未劣化状態にかかわらず、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐにあるときに、ＨＣおよびＮＯｘを最も効率よく浄化する特性を有している。したがって、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐになるように、混合気の空燃比を制御することにより、第１触媒装置８ａによって排気ガスを最も効率よく浄化できることが分かる。このため、後述する空燃比制御では、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐに収束するように、目標空燃比ＫＣＭＤが算出される。
【００２７】
さらに、ＥＣＵ２には、アクセル開度センサ１６、大気圧センサ１７、吸気温センサ１８および車速センサ１９などが接続されている。このアクセル開度センサ１６は、車両の図示しないアクセルペダルの踏み込み量（以下「アクセル開度」という）ＡＰを検出し、その検出信号をＥＣＵ２に出力する。また、大気圧センサ１７、吸気温センサ１８および車速センサ１９はそれぞれ、大気圧ＰＡ、吸気温ＴＡおよび車速ＶＰを検出し、その検出信号をＥＣＵ２に出力する。
【００２８】
このＥＣＵ２は、Ｉ／Ｏインターフェース、ＣＰＵ、ＲＡＭおよびＲＯＭなどからなるマイクロコンピュータから構成されており、前述した各種のセンサ１０〜１９の出力に応じて、エンジン３の運転状態を判別するとともに、ＲＯＭに予め記憶された制御プログラムやＲＡＭに記憶されたデータなどに従って、後述する適応空燃比制御処理またはマップ検索処理を実行することにより、目標空燃比ＫＣＭＤ（制御入力）を算出する。さらに、後述するように、この目標空燃比ＫＣＭＤに基づいて、インジェクタ６の最終燃料噴射量ＴＯＵＴを気筒ごとに算出し、この算出した最終燃料噴射量ＴＯＵＴに基づいた駆動信号で、インジェクタ６を駆動することにより、混合気の空燃比を制御する。なお、本実施形態では、ＥＣＵ２により、偏差算出手段、第１の制御入力算出手段、第２の制御入力算出手段、選択手段、切換手段、制限手段、第１の空燃比算出手段、第２の空燃比算出手段、運転状態パラメータ検出手段および空燃比制御手段が構成されている。
【００２９】
図３に示すように、制御装置１は、目標空燃比ＫＣＭＤを算出するＡＤＳＭコントローラ２０およびＰＲＩＳＭコントローラ２１を備えており、両コントローラ２０，２１はいずれも、具体的には、ＥＣＵ２により構成されている。
【００３０】
以下、ＡＤＳＭコントローラ２０について説明する。このＡＤＳＭコントローラ２０は、適応予測型ΔΣ変調制御（Ａｄａｐｔｉｖｅ　ｐｒｅｄｉｃｔｉｏｎ　Ｄｅｌｔａ　Ｓｉｇｍａ　Ｍｏｄｕｌａｔｉｏｎ　Ｃｏｎｔｒｏｌ：以下「ＡＤＳＭ」という）処理の制御アルゴリズムにより、Ｏ２センサ１５の出力Ｖｏｕｔを目標値Ｖｏｐに収束させるための目標空燃比ＫＣＭＤを算出するものであり、状態予測器２２、オンボード同定器２３およびＤＳＭコントローラ２４により構成されている。
【００３１】
まず、状態予測器２２（偏差算出手段）について説明する。この状態予測器２２は、以下に述べる予測アルゴリズムにより、出力偏差ＶＯ２の予測値ＰＲＥＶＯ２（偏差）を算出するものである。本実施形態では、制御対象への制御入力を混合気の目標空燃比ＫＣＭＤとし、制御対象の出力をＯ２センサ１５の出力Ｖｏｕｔとし、インジェクタ６を含むエンジン３の吸気系から、第１触媒装置８ａを含む排気系の第１触媒装置８ａの下流側のＯ２センサ１５までの系を、制御対象と見なすとともに、この制御対象を、下式（１）に示すように、離散時間系モデルであるＡＲＸモデル（ａｕｔｏ−ｒｅｇｒｅｓｓｉｖｅ　ｍｏｄｅｌ　ｗｉｔｈ　ｅｘｏｇｅｎｅｏｕｓ　ｉｎｐｕｔ：外部入力を持つ自己回帰モデル）としてモデル化する。
【００３２】
ＶＯ２（ｋ）＝ａ１・ＶＯ２（ｋ−１）＋ａ２・ＶＯ２（ｋ−２）＋ｂ１・ＤＫＣＭＤ（ｋ−ｄｔ）　　　　……（１）
ここで、ＶＯ２は、Ｏ２センサ１５の出力Ｖｏｕｔと前述した目標値Ｖｏｐとの偏差（Ｖｏｕｔ−Ｖｏｐ）である出力偏差を表し、ＤＫＣＭＤは、目標空燃比ＫＣＭＤ（＝φｏｐ）と基準値ＦＬＡＦＢＡＳＥとの偏差（ＫＣＭＤ−ＦＬＡＦＢＡＳＥ）である空燃比偏差を表し、記号ｋは、各離散データのサンプリングサイクルの順番を表している。この基準値ＦＬＡＦＢＡＳＥは、所定の一定値に設定される。また、ａ１，ａ２，ｂ１はモデルパラメータを表しており、オンボード同定器２３により、後述するように逐次同定される。
【００３３】
さらに、上記式（１）のｄｔは、目標空燃比ＫＣＭＤの混合気がインジェクタ６により吸気系に供給されてから、Ｏ２センサ１５の出力Ｖｏｕｔに反映されるまでの予測時間を表しており、下式（２）のように定義される。
ｄｔ＝ｄ＋ｄ’＋ｄｄ　　　　　　　　　　　　　　　　　　　　……（２）
ここで、ｄは、ＬＡＦセンサ１４からＯ２センサ１５までの排気系のむだ時間を、ｄ’は、インジェクタ６からＬＡＦセンサ１４までの空燃比操作系のむだ時間を、ｄｄは、排気系と空燃比操作系との間の位相遅れ時間をそれぞれ表している（なお、後述する適応空燃比制御処理の制御プログラムでは、ＡＤＳＭ処理とＰＲＩＳＭ処理とに切り換えて目標空燃比ＫＣＭＤを算出する処理を行うため、位相遅れ時間ｄｄ＝０に設定されている）。
【００３４】
また、予測値ＰＲＥＶＯ２は、目標空燃比ＫＣＭＤの混合気が吸気系に供給されてから予測時間ｄｔが経過した後の出力偏差ＶＯ２（ｋ＋ｄｔ）を予測した値であり、上記式（１）に基づき、予測値ＰＲＥＶＯ２の算出式を導出すると、下式（３）が得られる。
2004100652.tif 000003
【００３５】
この式（３）では、出力偏差ＶＯ２（ｋ）の未来値に相当するＶＯ２（ｋ＋ｄｔ−１），ＶＯ２（ｋ＋ｄｔ−２）の算出が必要となり、実際にプログラム化するのは困難である。そのため、マトリクスＡ、Ｂを、モデルパラメータａ１，ａ２，ｂ１を用いて図４に示す式（４）、（５）のように定義するとともに、上式（３）の漸化式を繰り返し用いることにより、上式（３）を変形すると、図４に示す式（６）が得られる。さらに、ＬＡＦ出力偏差ＤＫＡＣＴを、ＬＡＦセンサ１４の出力ＫＡＣＴ（＝φｉｎ）と基準値ＦＬＡＦＢＡＳＥとの偏差（ＫＡＣＴ−ＦＬＡＦＢＡＳＥ）として定義すると、ＤＫＡＣＴ（ｋ）＝ＤＫＣＭＤ（ｋ−ｄ’）の関係が成立するので、この関係を図４の式（６）に適用すると、図４に示す式（７）が得られる。この式（７）を用いた場合、予測値ＰＲＥＶＯ２が、出力偏差ＶＯ２、ＬＡＦ出力偏差ＤＫＡＣＴおよび空燃比偏差ＤＫＣＭＤにより算出されるので、第１触媒装置８ａに実際に供給される排気ガスの空燃比の状態が反映された値として、予測値ＰＲＥＶＯ２を算出でき、その算出精度すなわち予測精度を上記式（６）を用いた場合よりも向上させることができる。この理由により、本実施形態では、予測アルゴリズムとして上記式（７）を採用する。
【００３６】
次に、オンボード同定器２３について説明する。このオンボード同定器２３は、以下に述べる逐次型同定アルゴリズムにより、前述した式（１）のモデルパラメータａ１，ａ２，ｂ１を算出（同定）するものである。具体的には、図５に示す（８），（９）により、モデルパラメータのベクトルθ（ｋ）を算出する。同図の式（８）において、ＫＰ（ｋ）は、ゲイン係数のベクトルであり、ｉｄｅ＿ｆ（ｋ）は同定誤差フィルタ値である。また、式（９）におけるθ（ｋ）Ｔは、θ（ｋ）の転置行列を表し、ａ１’（ｋ）、ａ２’（ｋ）およびｂ１’（ｋ）は、後述するリミット処理を施す前のモデルパラメータを表している。なお、以下の説明では、「ベクトル」という表記を適宜、省略する。
【００３７】
上記式（８）の同定誤差フィルタ値ｉｄｅ＿ｆ（ｋ）は、図５に示す式（１１）〜（１３）により算出される同定誤差ｉｄｅ（ｋ）に、図５の式（１０）に示す移動平均フィルタリング処理を施した値である。図５の式（１０）のｎは、移動平均フィルタリング処理のフィルタ次数（１以上の整数）を表しており、式（１２）のＶＯ２ＨＡＴ（ｋ）は、出力偏差ＶＯ２の同定値を表している。このフィルタ次数ｎは、後述するように、排気ガスボリュームＡＢ＿ＳＶに応じて設定される。
【００３８】
さらに、前述した図５の式（８）のゲイン係数のベクトルＫＰ（ｋ）は、図５の式（１４）により算出される。この式（１４）のＰ（ｋ）は、図５の式（１５）で定義される３次の正方行列である。本実施形態では、同定アルゴリズムとして、重み付き最小２乗法アルゴリズムを用いるため、式（１５）の重みパラメータλ１、λ２は、λ１＝λ，λ２＝１（λは、０＜λ＜１に設定される所定値）に設定されている。
【００３９】
次に、ＤＳＭコントローラ２４（第１の制御入力算出手段、第１の空燃比算出手段）について説明する。このＤＳＭコントローラ２４は、ΔΣ変調アルゴリズムを応用した制御アルゴリズムにより、状態予測器２２で算出された予測値ＰＲＥＶＯ２に基づき、制御入力φｏｐとしての目標空燃比ＫＣＭＤを算出するとともに、これを制御対象に入力することにより、制御対象の出力としてのＯ２センサ１５の出力Ｖｏｕｔを目標値Ｖｏｐに収束させるように制御するものである。
【００４０】
まず、一般的なΔΣ変調アルゴリズムについて説明する。図６は、ΔΣ変調アルゴリズムを適用したコントローラ２６により、制御対象２７を制御する制御系の構成を示している。同図に示すように、このコントローラ２６では、差分器２６ａにより、参照入力ｒ（ｋ）と遅延素子２６ｂで遅延されたＤＳＭ信号ｕ（ｋ−１）との偏差として偏差信号δ（ｋ）が生成される。次に、積分器２６ｃにより、偏差積分値σｄ（ｋ）が、偏差信号δ（ｋ）と遅延素子２６ｄで遅延された偏差積分値σｄ（ｋ−１）との和の信号として生成される。次いで、量子化器２６ｅ（符号関数）により、変調出力としてのＤＳＭ信号ｕ（ｋ）が、この偏差積分値σｄ（ｋ）を符号化した信号として生成される。そして、以上のように生成されたＤＳＭ信号ｕ（ｋ）が制御対象２７に入力されることにより、出力信号ｙ（ｋ）が制御対象２７から出力される。
【００４１】
以上のΔΣ変調アルゴリズムは、以下の式（１６）〜（１８）で表される。
δ（ｋ）＝ｒ（ｋ）−ｕ（ｋ−１）　　　　　　　　　　　　　　　……（１６）
σｄ（ｋ）＝σｄ（ｋ−１）＋δ（ｋ）　　　　　　　　　　　　　　　　……（１７）
ｕ（ｋ）＝ｓｇｎ（σｄ（ｋ））　　　　　　　　　　　　　　　　……（１８）
ただし、符号関数ｓｇｎ（σｄ（ｋ））の値は、σｄ（ｋ）≧０のときにはｓｇｎ（σｄ（ｋ））＝１となり、σｄ（ｋ）＜０のときにはｓｇｎ（σｄ（ｋ））＝−１となる（なお、σｄ（ｋ）＝０のときに、ｓｇｎ（σｄ（ｋ））＝０と設定してもよい）。
【００４２】
図７は、以上の制御系の制御シミュレーション結果を示している。同図に示すように、正弦波状の参照入力ｒ（ｋ）を制御系に入力した場合、ＤＳＭ信号ｕ（ｋ）が矩形波状の信号として生成され、これを制御対象２７に入力することにより、参照入力ｒ（ｋ）と異なる振幅で同じ周波数の、ノイズを有するものの全体として同様の波形の出力信号ｙ（ｋ）が、制御対象２７から出力される。このように、ΔΣ変調アルゴリズムの特性は、参照入力ｒ（ｋ）から生成されたＤＳＭ信号ｕ（ｋ）を制御対象２７に入力したときに、制御対象２７の出力ｙ（ｋ）が、参照入力ｒ（ｋ）に対して、異なる振幅で同じ周波数の、全体として同様の波形の信号となるような値として、ＤＳＭ信号ｕ（ｋ）を生成できるという点にある。言い換えれば、ＤＳＭ信号ｕ（ｋ）を、参照入力ｒ（ｋ）が制御対象２７の実際の出力ｙ（ｋ）に再現されるような値として、生成（算出）できるという点にある。
【００４３】
ＤＳＭコントローラ２４は、このようなΔΣ変調アルゴリズムの特性を利用し、Ｏ２センサ１５の出力Ｖｏｕｔを目標値Ｖｏｐに収束させるための制御入力φｏｐ（ｋ）、すなわち目標空燃比ＫＣＭＤ（ｋ）を算出するものである。その原理について説明すると、例えば図８に１点鎖線で示すように、出力偏差ＶＯ２が値０に対して揺らいでいる場合（すなわち、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐに対して揺らいでいる場合）、出力偏差ＶＯ２を値０に収束させる（すなわち出力Ｖｏｕｔを目標値Ｖｏｐに収束させる）には、図８に破線で示す、出力偏差ＶＯ２を打ち消すような逆位相波形の出力偏差ＶＯ２＊が生じるように、目標空燃比ＫＣＭＤ（ｋ）を生成すればよい。
【００４４】
しかし、前述したように、本実施形態の制御対象では、目標空燃比ＫＣＭＤ（ｋ）が制御対象に入力されてからＯ２センサ１５の出力Ｖｏｕｔに反映されるまでに、予測時間ｄｔ分の時間遅れが発生するため、現在の出力偏差ＶＯ２に基づいて、目標空燃比ＫＣＭＤ（ｋ）を算出した場合の出力偏差ＶＯ２＃は、図８に実線で示すように、出力偏差ＶＯ２＊に対して遅れを生じ、それにより、制御タイミングのずれが生じてしまう。したがって、これを補償するために、本実施形態のＡＤＳＭコントローラ２０におけるＤＳＭコントローラ２４では、出力偏差ＶＯ２の予測値ＰＲＥＶＯ２を用いることにより、目標空燃比ＫＣＭＤ（ｋ）が、制御タイミングのずれを生じることなく、現在の出力偏差ＶＯ２を打ち消すような出力偏差（逆位相波形の出力偏差ＶＯ２＊と同様の出力偏差）を生じさせる信号として生成される。
【００４５】
具体的には、このＤＳＭコントローラ２４では、図９に示すように、反転増幅器２４ａにより、参照信号ｒ（ｋ）が、値−１、参照信号用の非線形ゲインＧｄおよび予測値ＰＲＥＶＯ２（ｋ）を互いに乗算した信号として生成される。次に、差分器２４ｂにより、この参照信号ｒ（ｋ）と遅延素子２４ｃで遅延されたＤＳＭ信号ｕ（ｋ−１）との偏差として偏差信号δ（ｋ）が生成される。
【００４６】
次いで、積分器２４ｄにより、偏差積分値σｄ（ｋ）が、偏差信号δ（ｋ）と遅延素子２４ｅで遅延された偏差積分値σｄ（ｋ−１）との和の信号として生成され、次に、量子化器２４ｆ（符号関数）により、ＤＳＭ信号ｕ（ｋ）が、この偏差積分値σｄ（ｋ）を符号化した値として生成される。そして、増幅器２４ｇにより、増幅ＤＳＭ信号ｕ’’（ｋ）がＤＳＭ信号ｕ（ｋ）を所定のゲインＦｄで増幅した値として生成され、次に、加算器２４ｈにより、この増幅ＤＳＭ信号ｕ’’（ｋ）に所定の基準値ＦＬＡＦＢＡＳＥおよび後述する適応補正項ＦＬＡＦＡＤＰを加算した値として、目標空燃比ＫＣＭＤ（ｋ）が生成される。
【００４７】
以上のＤＳＭコントローラ２４の制御アルゴリズムは、以下の式（１９）〜（２４）で表される。
ｒ（ｋ）＝−１・Ｇｄ・ＰＲＥＶＯ２（ｋ）　　　　　　　　　……（１９）
δ（ｋ）＝ｒ（ｋ）−ｕ（ｋ−１）　　　　　　　　　　　　　　……（２０）
σｄ（ｋ）＝σｄ（ｋ−１）＋δ（ｋ）　　　　　　　　　　　　　……（２１）
ｕ（ｋ）＝ｓｇｎ（σｄ（ｋ））　　　　　　　　　　　　　　　……（２２）
ｕ’’（ｋ）＝Ｆｄ・ｕ（ｋ）　　　　　　　　　　　　　　　　　　……（２３）
ＫＣＭＤ（ｋ）＝ＦＬＡＦＢＡＳＥ＋ＦＬＡＦＡＤＰ＋ｕ’’（ｋ）　　……（２４）
ここで、非線形ゲインＧｄの値は、ＰＲＥＶＯ２（ｋ）≧０のときには正の所定値Ｇｄ１（例えば値０．２）に、ＰＲＥＶＯ２（ｋ）＜０のときには所定値Ｇｄ１よりも大きい所定値Ｇｄ２（例えば値２）にそれぞれ設定される。このような非線形ゲインＧｄを用いる理由については後述する。また、符号関数ｓｇｎ（σｄ（ｋ））の値は、σｄ（ｋ）≧０のときにはｓｇｎ（σｄ（ｋ））＝１となり、σｄ（ｋ）＜０のときにはｓｇｎ（σｄ（ｋ））＝−１となる（なお、σｄ（ｋ）＝０のときに、ｓｇｎ（σｄ（ｋ））＝０と設定してもよい）。
【００４８】
このＤＳＭコントローラ２４では、以上の式（１９）〜（２４）に示す制御アルゴリズムにより、前述したように、制御入力としての目標空燃比ＫＣＭＤ（ｋ）が、制御タイミングのずれを生じることなく、出力偏差ＶＯ２を打ち消すような出力偏差ＶＯ２＊を生じさせる値として算出される。
【００４９】
次に、前記ＰＲＩＳＭコントローラ２１について説明する。このＰＲＩＳＭコントローラ２１は、以下に述べるオンボード同定型スライディングモード制御処理（以下「ＰＲＩＳＭ処理」という）の制御アルゴリズムにより、Ｏ２センサ１５の出力Ｖｏｕｔを目標値Ｖｏｐに収束させるための目標空燃比ＫＣＭＤを算出するものであり、状態予測器２２、オンボード同定器２３およびスライディングモードコントローラ（以下「ＳＬＤコントローラ」という）２５により構成されている。なお、このＰＲＩＳＭ処理の具体的なプログラムについては後述する。
【００５０】
このＰＲＩＳＭコントローラ２１のうちの状態予測器２２およびオンボード同定器２３については、既に説明したので、ここではＳＬＤコントローラ２５（第２の制御入力算出手段、第２の空燃比算出手段）についてのみ説明する。このＳＬＤコントローラ２５は、スライディングモード制御アルゴリズムに基づいてスライディングモード制御を行うものであり、以下、一般的なスライディングモード制御アルゴリズムについて説明する。このスライディングモード制御アルゴリズムでは、前述した式（１）の離散時間系モデルを制御対象モデルとして用いるため、切換関数σは、下式（２５）に示すように、出力偏差ＶＯ２の時系列データの線形関数として設定される。
σ（ｋ）＝Ｓ１・ＶＯ２（ｋ）＋Ｓ２・ＶＯ２（ｋ−１）　　……（２５）
ここで、Ｓ１，Ｓ２は、−１＜（Ｓ２／Ｓ１）＜１の関係が成立するように設定される所定の係数である。
【００５１】
一般にスライディングモード制御アルゴリズムでは、切換関数σが２つの状態変数（本実施形態では出力偏差ＶＯ２の時系列データ）で構成されている場合、２つの状態変数で構成される位相空間は、これらをそれぞれ縦軸および横軸とする２次元の位相平面となるため、この位相平面上において、σ＝０を満たす２つの状態変数の値の組み合わせは、切換直線と呼ばれる直線上に載ることになる。したがって、制御対象への制御入力を、２つの状態変数の組み合わせが切換直線上に収束する（載る）ように適切に決定することにより、２つの状態変数をいずれも、値０になる平衡点に収束（スライディング）させることができる。さらに、スライディングモード制御アルゴリズムでは、切換関数σの設定により、状態変数の動特性、より具体的には収束挙動や収束速度を指定することができる。例えば、本実施形態のように、切換関数σが２つの状態変数で構成されている場合には、切換直線の傾きを値１に近づけると、状態変数の収束速度が遅くなる一方、値０に近づけると、収束速度が速くなる。
【００５２】
本実施形態では、前記式（２５）に示すように、切換関数σが出力偏差ＶＯ２の２つの時系列データ、すなわち出力偏差ＶＯ２の今回値ＶＯ２（ｋ）および前回値ＶＯ２（ｋ−１）により構成されているので、これらの今回値ＶＯ２（ｋ）および前回値ＶＯ２（ｋ−１）の組み合わせを切換直線上に収束させるように、制御対象への制御入力すなわち目標空燃比ＫＣＭＤを設定すればよい。具体的には、操作量Ｕｓｌ（ｋ）を、基準値ＦＬＡＦＢＡＳＥおよび適応補正項ＦＬＡＦＡＤＰとの和が目標空燃比ＫＣＭＤとなる値として定義すると、今回値ＶＯ２（ｋ）および前回値ＶＯ２（ｋ−１）の組み合わせを切換直線上に収束させるための操作量Ｕｓｌ（ｋ）は、適応スライディングモード制御アルゴリズムにより、図１０に示す式（２６）のように、等価制御入力Ｕｅｑ（ｋ）、到達則入力Ｕｒｃｈ（ｋ）および適応則入力Ｕａｄｐ（ｋ）の総和として設定される。
【００５３】
この等価制御入力Ｕｅｑ（ｋ）は、出力偏差ＶＯ２の今回値ＶＯ２（ｋ）および前回値ＶＯ２（ｋ−１）の組み合わせを切換直線上に拘束しておくためのものであり、具体的には、図１０に示す式（２７）のように定義される。また、到達則入力Ｕｒｃｈ（ｋ）は、外乱やモデル化誤差などにより、出力偏差ＶＯ２の今回値ＶＯ２（ｋ）および前回値ＶＯ２（ｋ−１）の組み合わせが切換直線上から外れた際に、これらを切換直線上に収束させるためのものであり、具体的には、図１０に示す式（２８）のように定義される。この式（２８）において、Ｆはゲインを表す。
【００５４】
さらに、適応則入力Ｕａｄｐ（ｋ）は、制御対象の定常偏差、モデル化誤差および外乱の影響を抑制しながら、出力偏差ＶＯ２の今回値ＶＯ２（ｋ）および前回値ＶＯ２（ｋ−１）の組み合わせを、切換超平面上に確実に収束させるためのものであり、具体的には、図１０に示す式（２９）のように定義される。この式（２９）において、Ｇはゲインを、ΔＴは制御周期をそれぞれ表す。
【００５５】
本実施形態のＰＲＩＳＭコントローラ２１のＳＬＤコントローラ２５では、前述したように、出力偏差ＶＯ２に代えて予測値ＰＲＥＶＯ２を用いるので、ＰＲＥＶＯ２（ｋ）≒ＶＯ２（ｋ＋ｄｔ）の関係を適用することにより、以上の式（２５）〜（２９）のアルゴリズムを、図１１に示す式（３０）〜（３４）に書き換えて用いる。この式（３０）におけるσＰＲＥは、予測値ＰＲＥＶＯ２を用いたときの切換関数（以下「予測切換関数」という）の値である。すなわち、このＳＬＤコントローラ２５では、以上のアルゴリズムで算出される操作量Ｕｓｌ（ｋ）を基準値ＦＬＡＦＢＡＳＥおよび適応補正項ＦＬＡＦＡＤＰに加算することによって、目標空燃比ＫＣＭＤが算出される。
【００５６】
以下、ＥＣＵ２により実行される燃料噴射量の算出処理について、図１２を参照しながら説明する。なお、以下の説明では、今回値であることを示す記号（ｋ）を適宜、省略する。図１２は、この制御処理のメインルーチンを示しており、本処理は、ＴＤＣ信号の入力に同期して割り込み実行される。この処理では、後述する適応空燃比制御処理、またはマップ検索処理により算出された目標空燃比ＫＣＭＤを用いることによって、燃料噴射量ＴＯＵＴが気筒ごとに算出される。
【００５７】
まず、ステップ１（図では「Ｓ１」と略す。以下同じ）において、前述した各種のセンサ１０〜１９の出力を読み込むとともに、読み込んだデータをＲＡＭ内に記憶する。
【００５８】
次に、ステップ２に進み、基本燃料噴射量Ｔｉｍを算出する。この処理では、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに応じて、図示しないマップを検索することにより、基本燃料噴射量Ｔｉｍを算出する。
【００５９】
次いで、ステップ３に進み、総補正係数ＫＴＯＴＡＬを算出する。この総補正係数ＫＴＯＴＡＬは、各種の運転パラメータ（例えば吸気温ＴＡや、大気圧ＰＡ、エンジン水温ＴＷ、アクセル開度ＡＰなど）に応じて、各種のテーブルやマップを検索することで各種の補正係数を算出するとともに、これらの各種の補正係数を互いに乗算することにより、算出される。
【００６０】
次に、ステップ４に進み、適応制御フラグＦ＿ＰＲＩＳＭＯＮの設定処理を実行する。この処理の内容は図示しないが、具体的には、以下の（ｆ１）〜（ｆ６）の条件がいずれも成立しているときには、適応空燃比制御処理で算出された目標空燃比ＫＣＭＤを使用する条件が成立しているとして、それを表すために、適応制御フラグＦ＿ＰＲＩＳＭＯＮが「１」にセットされる。一方、（ｆ１）〜（ｆ６）の条件のうちの少なくとも１つが成立していないときには、適応制御フラグＦ＿ＰＲＩＳＭＯＮが「０」にセットされる。
（ｆ１）ＬＡＦセンサ１４およびＯ２センサ１５がいずれも活性化していること。
（ｆ２）エンジン３がリーンバーン運転中でないこと。
（ｆ３）スロットル弁５が全開状態でないこと。
（ｆ４）点火時期の遅角制御中でないこと。
（ｆ５）フューエルカット運転中でないこと。
（ｆ６）エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡがいずれも、所定の範囲囲内の値であること。
【００６１】
次に、ステップ５に進み、ステップ４で設定された適応制御フラグＦ＿ＰＲＩＳＭＯＮが「１」であるか否かを判別する。この判別結果がＹＥＳのときには、ステップ６に進み、目標空燃比ＫＣＭＤを、後述する適応空燃比制御処理で算出された適応目標空燃比ＫＣＭＤＳＬＤに設定する。
【００６２】
一方、ステップ５の判別結果がＮＯのときには、ステップ７に進み、目標空燃比ＫＣＭＤをマップ値ＫＣＭＤＭＡＰに設定する。このマップ値ＫＣＭＤＭＡＰは、エンジン回転数ＮＥおよび吸気管内絶対圧ＰＢＡに応じて、図示しないマップを検索することにより、算出される。
【００６３】
以上のステップ６または７に続くステップ８では、オブザーバフィードバック補正係数＃ｎＫＬＡＦを気筒ごとに算出する。このオブザーバフィードバック補正係数＃ｎＫＬＡＦは、気筒ごとの実際の空燃比のばらつきを補正するためのものであり、具体的には、オブザーバによりＬＡＦセンサ１４の出力ＫＡＣＴから気筒ごとの実際の空燃比を推定し、これらの推定した空燃比に応じて、ＰＩＤ制御により算出される。なお、このオブザーバフィードバック補正係数＃ｎＫＬＡＦの記号＃ｎは、気筒の番号＃１〜＃４を表すものであり、これは、後述する要求燃料噴射量＃ｎＴＣＹＬおよび最終燃料噴射量＃ｎＴＯＵＴにおいても同様である。
【００６４】
次いで、ステップ９に進み、フィードバック補正係数ＫＦＢを算出する。このフィードバック補正係数ＫＦＢは、具体的には、以下のように算出される。すなわち、ＬＡＦセンサ１４の出力ＫＡＣＴと目標空燃比ＫＣＭＤとの偏差に応じて、ＰＩＤ制御によりフィードバック係数ＫＬＡＦを算出する。また、図示しないＳｅｌｆ　Ｔｕｎｉｎｇ　Ｒｅｇｕｌａｔｏｒ　型の適応制御器によりフィードバック補正係数ＫＳＴＲを算出し、これを目標空燃比ＫＣＭＤで除算することにより、フィードバック補正係数ｋｓｔｒを算出する。そして、エンジン３の運転状態に応じて、これらの２つのフィードバック係数ＫＬＡＦおよびフィードバック補正係数ｋｓｔｒの一方を、フィードバック補正係数ＫＦＢとして設定する。
【００６５】
次いで、ステップ１０に進み、補正目標空燃比ＫＣＭＤＭを算出する。この補正目標空燃比ＫＣＭＤＭは、空燃比Ａ／Ｆの変化による充填効率の変化を補償するためのものであり、前述したステップ６または７で算出された目標空燃比ＫＣＭＤに応じて、図示しないテーブルを検索することにより算出される。
【００６６】
次に、ステップ１１に進み、以上のように算出した基本燃料噴射量Ｔｉｍ、総補正係数ＫＴＯＴＡＬ、オブザーバフィードバック補正係数＃ｎＫＬＡＦ、フィードバック補正係数ＫＦＢ、および補正目標空燃比ＫＣＭＤＭを用い、下式（３５）により、気筒ごとの要求燃料噴射量＃ｎＴＣＹＬを算出する。
＃ｎＴＣＹＬ＝Ｔｉｍ・ＫＴＯＴＡＬ・ＫＣＭＤＭ・ＫＦＢ・＃ｎＫＬＡＦ……（３５）
【００６７】
次に、ステップ１２に進み、要求燃料噴射量＃ｎＴＣＹＬを付着補正することにより、最終燃料噴射量＃ｎＴＯＵＴを算出する。この最終燃料噴射量＃ｎＴＯＵＴは、具体的には、今回の燃焼サイクルでインジェクタ６から噴射された燃料が燃焼室の内壁面に付着する割合などを、運転状態に応じて算出し、そのように算出した割合に基づいて、要求燃料噴射量＃ｎＴＣＹＬを補正することにより、算出される。
【００６８】
次いで、ステップ１３に進み、以上のように算出した最終燃料噴射量＃ｎＴＯＵＴに基づく駆動信号を、対応する気筒のインジェクタ６に出力した後、本処理を終了する。
【００６９】
次に、図１３および図１４を参照しながら、ＡＤＳＭ処理およびＰＲＩＳＭ処理を含む適応空燃比制御処理について説明する。この処理は、所定の周期（例えば１０ｍｓｅｃ）で実行される。また、この処理では、エンジン３の運転状態に応じて、ＡＤＳＭ処理、ＰＲＩＳＭ処理、触媒還元モード処理またはスライディングモード操作量ＤＫＣＭＤＳＬＤを所定値ＳＬＤＨＯＬＤに設定する処理により、目標空燃比ＫＣＭＤが算出される。
【００７０】
この処理では、まず、ステップ２０において、Ｆ／Ｃ後判定処理を実行する。この処理の内容は図示しないが、この処理では、フューエルカット運転中は、それを表すためにＦ／Ｃ後判定フラグＦ＿ＡＦＣが「１」にセットされ、フューエルカット運転の終了後、所定時間ＴＭ＿ＡＦＣが経過したときには、それを表すためにＦ／Ｃ後判定フラグＦ＿ＡＦＣが「０」にセットされる。
【００７１】
次に、ステップ２１に進み、車速ＶＰに基づいて、エンジン３を搭載した車両が発進したか否かを判定する発進判定処理を実行する。この処理の具体的な内容は、後述する。
【００７２】
ステップ２１に続くステップ２２では、状態変数の設定処理を実行する。図示しないが、この処理では、ＲＡＭ内に記憶されている、目標空燃比ＫＣＭＤ、ＬＡＦセンサ１４の出力ＫＡＣＴおよび出力偏差ＶＯ２の時系列データをいずれも、１サンプリングサイクル分ずつ過去側にシフトさせる。その後、ＫＣＭＤ、ＫＡＣＴおよびＶＯ２の時系列データの最新の値と、基準値ＦＬＡＦＢＡＳＥと、後述する適応補正項ＦＬＡＦＡＤＰとに基づき、ＫＣＭＤ、ＫＡＣＴおよびＶＯ２の今回値を算出する。
【００７３】
次に、ステップ２３に進み、ＰＲＩＳＭ／ＡＤＳＭ処理の実行判定処理を行う。この処理は、ＰＲＩＳＭ処理、ＡＤＳＭ処理および後述する触媒還元モード処理の実行条件が成立しているか否かに応じて、ＰＲＩＳＭ／ＡＤＳＭ実行フラグＦ＿ＰＲＩＳＭＣＡＬの値をセットするものである。
【００７４】
具体的には、以下の（ｆ７）〜（ｆ１０）の条件がいずれも成立しているときには、ＰＲＩＳＭ処理、ＡＤＳＭ処理または触媒還元モード処理を実行すべき運転状態にあるとして、それを表すために、ＰＲＩＳＭ／ＡＤＳＭ実行フラグＦ＿ＰＲＩＳＭＣＡＬを「１」にセットする。一方、（ｆ７）〜（ｆ１０）の条件の少なくとも１つが成立していないときには、ＰＲＩＳＭ処理、ＡＤＳＭ処理または触媒還元モード処理を実行すべき運転状態にないとして、それを表すために、ＰＲＩＳＭ／ＡＤＳＭ実行フラグＦ＿ＰＲＩＳＭＣＡＬを「０」にセットする。
（ｆ７）Ｏ２センサ１５が活性化していること。
（ｆ８）ＬＡＦセンサ１４が活性化していること。
（ｆ９）エンジン３がリーンバーン運転中でないこと。
（ｆ１０）点火時期の遅角制御中でないこと。
【００７５】
ステップ２３に続くステップ２４では、同定器演算の実行判定処理を行う。この処理は、オンボード同定器２３によるパラメータ同定の実行条件が成立しているか否かに応じて、同定実行フラグＦ＿ＩＤＣＡＬの値をセットするものである。具体的には、スロットル弁開度θＴＨが全開状態でなく、かつフューエルカット運転中でないときには、パラメータ同定を実行すべき運転状態であるとして、それを表すために、同定実行フラグＦ＿ＩＤＣＡＬを「１」にセットする。一方、スロットル弁開度θＴＨが全開状態にあるとき、またはフューエルカット運転中であるときには、パラメータ同定を実行すべき運転状態にないとして、同定実行フラグＦ＿ＩＤＣＡＬを「０」にセットする。
【００７６】
次いで、ステップ２５に進み、各種パラメータ（排気ガスボリュームＡＢ＿ＳＶなど）を算出する。この処理の具体的な内容は、後述する。
【００７７】
次に、ステップ２６に進み、ＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥの設定処理を実行する。この処理の具体的な内容は、後述する。
【００７８】
次いで、ステップ２７に進み、前記ステップ２３で設定されたＰＲＩＳＭ／ＡＤＳＭ実行フラグＦ＿ＰＲＩＳＭＣＡＬが「１」であるか否かを判別する。この判別結果がＹＥＳで、ＰＲＩＳＭ処理またはＡＤＳＭ処理の実行条件が成立しているときには、ステップ２８に進み、前記ステップ２４で設定された同定実行フラグＦ＿ＩＤＣＡＬが「１」であるか否かを判別する。
【００７９】
この判別結果がＹＥＳで、オンボード同定器２３によるパラメータ同定を実行すべき運転状態のときには、ステップ２９に進み、パラメータ初期化フラグＦ＿ＩＤＲＳＥＴが「１」であるか否かを判別する。この判別結果がＮＯで、ＲＡＭに記憶されているモデルパラメータａ１，ａ２，ｂ１の初期化が不要であるときには、後述するステップ３２に進む。
【００８０】
一方、この判別結果がＹＥＳで、モデルパラメータａ１，ａ２，ｂ１の初期化が必要であるときには、ステップ３０に進み、モデルパラメータａ１，ａ２，ｂ１を、それぞれの初期値に設定した後、それを表すためにステップ３１に進み、パラメータ初期化フラグＦ＿ＩＤＲＳＥＴを「０」にセットする。
【００８１】
このステップ３１または２９に続くステップ３２では、オンボード同定器２３の演算を実行し、モデルパラメータａ１，ａ２，ｂ１を同定した後、後述する図１４のステップ３３に進む。このオンボード同定器２３の演算の具体的な内容については、後述する。
【００８２】
一方、ステップ２８の判別結果がＮＯで、パラメータ同定を実行すべき運転状態でないときには、以上のステップ２９〜３２をスキップして、図１４のステップ３３に進む。ステップ２８または３２に続くステップ３３では、モデルパラメータａ１，ａ２，ｂ１として、同定値または所定値を選択する。この処理の内容は図示しないが、具体的には、前記ステップ２４で設定された同定実行フラグＦ＿ＩＤＣＡＬが「１」のときには、モデルパラメータａ１，ａ２，ｂ１をステップ３２で同定された同定値に設定する。一方、同定実行フラグＦ＿ＩＤＣＡＬが「０」のときには、モデルパラメータａ１，ａ２，ｂ１を所定値に設定する。
【００８３】
次に、ステップ３４に進み、状態予測器２２の演算を実行し、予測値ＰＲＥＶＯ２を算出する。具体的には、前述した式（７）の行列要素α１，α２，βｉ，βｊを算出し、これらの行列要素α１，α２，βｉ，βｊを式（７）に適用することにより、出力偏差ＶＯ２の予測値ＰＲＥＶＯ２を算出する。
【００８４】
次いで、ステップ３５に進み、後述するように、操作量ＵＳＬ（＝Ｕｓｌ）を算出する。
【００８５】
次に、ステップ３６に進み、ＳＬＤコントローラ２５の安定判別を実行する。具体的には、予測切換関数σＰＲＥの値に基づき、ＳＬＤコントローラ２５によるスライディングモード制御が安定状態にあるか否かを判別する。そして、スライディングモード制御が安定状態にあると判別されたときには、それを表すために、低不安定フラグＦ＿ＳＬＤＳＴ１および高不安定フラグＦ＿ＳＬＤＳＴ２をいずれも「０」にセットする。また、低レベルの不安定状態（以下「低不安定レベル」という）にあると判別されたときには、それを表すために、低不安定フラグＦ＿ＳＬＤＳＴ１を「１」に、高不安定フラグＦ＿ＳＬＤＳＴ２を「０」にそれぞれセットする。さらに、高レベルの不安定状態（以下「高不安定レベル」という）にあると判別されたときには、それを表すために、低不安定フラグＦ＿ＳＬＤＳＴ１を「１」に、高不安定フラグＦ＿ＳＬＤＳＴ２を「１」にそれぞれセットする。
【００８６】
次いで、ステップ３７に進み、触媒還元モード操作量ＤＫＣＭＤＣＲＤを算出する。この触媒還元モード操作量ＤＫＣＭＤＣＲＤは、触媒還元モード中の目標空燃比ＫＣＭＤを算出するためのものであり、具体的には、排気ガスボリュームＡＢ＿ＳＶに応じて、図示しないテーブルを検索することにより算出される。このテーブルでは、触媒還元モード操作量ＤＫＣＭＤＣＲＤは、排気ガスボリュームＡＢ＿ＳＶが大きいほど、リッチ化の度合いが小さくなるような値に設定されている。なお、触媒還元モード操作量ＤＫＣＭＤＣＲＤを、空燃比Ａ／Ｆ＝１２に相当する所定値に設定してもよい。また、触媒還元モードは、フューエルカット運転後に触媒装置８ａ，８ｂを還元させるために実行される運転モードである。
【００８７】
次に、ステップ３８および３９において、後述するように、ＳＬＤコントローラ２５およびＤＳＭコントローラ２４により、スライディングモード操作量ＤＫＣＭＤＳＬＤおよびΔΣ変調操作量ＤＫＣＭＤＤＳＭをそれぞれ算出する。
【００８８】
次いで、ステップ４０に進み、後述するように、ＳＬＤコントローラ２５により算出されたスライディングモード操作量ＤＫＣＭＤＳＬＤ、またはＤＳＭコントローラ２４により算出されたΔΣ変調操作量ＤＫＣＭＤＤＳＭを用いて、適応目標空燃比ＫＣＭＤＳＬＤを算出する。この後、ステップ４１に進み、後述するように、適応補正項ＦＬＡＦＡＤＰを算出した後、本処理を終了する。
【００８９】
一方、図１３に戻り、前記ステップ２７の判別結果がＮＯで、ＰＲＩＳＭ処理およびＡＤＳＭ処理の実行条件がいずれも成立していないときには、ステップ４２に進み、パラメータ初期化フラグＦ＿ＩＤＲＳＥＴを「１」にセットする。次に、図１４の上記ステップ４０，４１を実行した後、本処理を終了する。
【００９０】
次に、図１５を参照しながら、前述したステップ２１の発進判定処理について説明する。この処理では、まず、ステップ４９において、アイドル運転フラグＦ＿ＩＤＬＥＰが「１」であるか否かを判別する。このアイドル運転フラグＦ＿ＩＤＬＥＰは、アイドル運転中であるときに「１」に、それ以外のときに「０」にセットされる。なお、このアイドル運転フラグＦ＿ＩＤＬＥＰを設定する処理では、アイドル運転中であるか否かの判定は、エンジン回転数ＮＥ、吸気管内絶対圧ＰＢＡおよびスロットル弁開度θＴＨなどに基づいて実行される。
【００９１】
この判別結果がＹＥＳで、アイドル運転中であるときには、ステップ５０に進み、車速ＶＰが所定車速ＶＳＴＡＲＴ（例えば１ｋｍ／ｈ）より小さいか否かを判別する。この判別結果がＹＥＳで、停車中であるときには、ステップ５１に進み、ダウンカウント式の第１発進判定タイマのタイマ値ＴＭＶＯＴＶＳＴを第１所定時間ＴＶＯＴＶＳＴ（例えば３ｍｓｅｃ）に設定する。
【００９２】
次いで、ステップ５２に進み、ダウンカウント式の第２発進判定タイマのタイマ値ＴＭＶＳＴを、上記第１所定時間ＴＶＯＴＶＳＴよりも長い第２所定時間ＴＶＳＴ（例えば５００ｍｓｅｃ）に設定する。次いで、ステップ５３，５４において、第１および第２発進フラグＦ＿ＶＯＴＶＳＴ，Ｆ＿ＶＳＴをいずれも「０」にセットした後、本処理を終了する。
【００９３】
一方、ステップ４９または５０の判別結果がＮＯのとき、すなわちアイドル運転中でないか、または車両が発進したときには、ステップ５５に進み、第１発進判定タイマのタイマ値ＴＭＶＯＴＶＳＴが値０より大きいか否かを判別する。この判別結果がＹＥＳで、アイドル運転の終了後または車両の発進後、第１所定時間ＴＶＯＴＶＳＴが経過していないときには、第１発進モード中であるとして、ステップ５６に進み、それを表すために第１発進フラグＦ＿ＶＯＴＶＳＴを「１」にセットする。
【００９４】
一方、ステップ５５の判別結果がＮＯで、アイドル運転の終了後または車両の発進後、第１所定時間ＴＶＯＴＶＳＴが経過したときには、第１発進モードが終了したとして、ステップ５７に進み、第１発進フラグＦ＿ＶＯＴＶＳＴを「０」にセットする。
【００９５】
ステップ５６または５７に続くステップ５８では、第２発進判定タイマのタイマ値ＴＭＶＳＴが値０より大きいか否かを判別する。この判別結果がＹＥＳで、アイドル運転の終了後または車両の発進後、第２所定時間ＴＶＳＴが経過していないときには、第２発進モード中であるとして、ステップ５９に進み、それを表すために第２発進フラグＦ＿ＶＳＴを「１」にセットした後、本処理を終了する。
【００９６】
一方、ステップ５８の判別結果がＮＯで、アイドル運転の終了後または車両の発進後、第２所定時間ＴＶＳＴが経過したときには、第２発進モードが終了したとして、前記ステップ５４を実行した後、本処理を終了する。
【００９７】
次に、図１６を参照しながら、前述したステップ２５の各種パラメータを算出する処理について説明する。この処理では、まず、ステップ６０において、下式（３６）により、排気ガスボリュームＡＢ＿ＳＶ（空間速度の推定値）を算出する。
ＡＢ＿ＳＶ＝（ＮＥ／１５００）・ＰＢＡ・ＳＶＰＲＡ　……（３６）
ここで、ＳＶＰＲＡは、エンジン排気量に基づいて決定される所定の係数である。
【００９８】
次に、ステップ６１に進み、前述した空燃比操作系のむだ時間ＫＡＣＴ＿Ｄ（＝ｄ’）、排気系のむだ時間ＣＡＴ＿ＤＥＬＡＹ（＝ｄ）および予測時間ｄｔを算出する。具体的には、ステップ６０で算出された排気ガスボリュームＡＢ＿ＳＶに応じて、図示しないテーブルを検索することにより、むだ時間ＫＡＣＴ＿Ｄ，ＣＡＴ＿ＤＥＬＡＹをそれぞれ算出するとともに、これらの和（ＫＡＣＴ＿Ｄ＋ＣＡＴ＿ＤＥＬＡＹ）を予測時間ｄｔとして設定する。すなわち、この制御プログラムでは、位相遅れ時間ｄｄが値０に設定される。
【００９９】
次に、ステップ６２に進み、同定アルゴリズムの重みパラメータλ１，λ２の値を算出する。具体的には、重みパラメータλ２を値１に設定すると同時に、重みパラメータλ１を、排気ガスボリュームＡＢ＿ＳＶに応じて、図示しないテーブルを検索することにより算出する。
【０１００】
次に、ステップ６３に進み、モデルパラメータａ１，ａ２の値を制限するための下限値ＩＤＡ２Ｌと、モデルパラメータｂ１の値を制限するための下限値ＩＤＢ１Ｌおよび上限値ＩＤＢ１Ｈとを、排気ガスボリュームＡＢ＿ＳＶに応じて、図示しないテーブルを検索することにより算出する。
【０１０１】
次いで、ステップ６４に進み、移動平均フィルタリング処理のフィルタ次数ｎを算出した後、本処理を終了する。この処理では、フィルタ次数ｎを、排気ガスボリュームＡＢ＿ＳＶに応じて、図示しないテーブルを検索することにより、算出する。
【０１０２】
次に、図１７を参照しながら、前記ステップ２６のＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥの設定処理について説明する。同図に示すように、この処理では、まず、ステップ７１において、前記アイドル運転フラグＦ＿ＩＤＬＥＰおよびアイドル時ＡＤＳＭフラグＦ＿ＳＷＤＳＭＩがいずれも「１」であるか否かを判別する。このアイドル時ＡＤＳＭフラグＦ＿ＳＷＤＳＭＩは、エンジン３がアイドル運転中でかつＡＤＳＭ処理を実行すべき運転状態にあるときに「１」に、それ以外のときに「０」にそれぞれセットされる。
【０１０３】
ステップ７１の判別結果がＹＥＳで、エンジン３がアイドル運転中でかつＡＤＳＭ処理を実行可能な運転状態にあるときには、ステップ７７に進み、エンジン３がＡＤＳＭ処理を実行すべき運転状態にあることを表すために、ＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥを「１」にセットした後、本処理を終了する。
【０１０４】
一方、ステップ７１の判別結果がＮＯのときには、ステップ７２に進み、前記第２発進フラグＦ＿ＶＳＴおよび発進時ＡＤＳＭフラグＦ＿ＳＷＤＳＭＶＳがいずれも「１」であるか否かを判別する。この発進時ＡＤＳＭフラグＦ＿ＳＷＤＳＭＶＳは、車両の発進中にエンジン３がＡＤＳＭ処理を実行すべき運転状態にあるときに「１」に、それ以外のときに「０」にそれぞれセットされる。
【０１０５】
ステップ７２の判別結果がＹＥＳで、第２発進モード中でかつ車両の発進中にエンジン３がＡＤＳＭ処理を実行すべき運転状態にあるときには、前記ステップ７７を実行した後、本処理を終了する。
【０１０６】
一方、ステップ７２の判別結果がＮＯのときには、ステップ７３に進み、排気ガスボリュームＡＢ＿ＳＶが所定の下限値ＤＳＭＳＶＬ以上でかつ所定の上限値ＤＳＭＳＶＨ以下の範囲内にあるか否かを判別する。この判別結果がＹＥＳのときには、エンジン３の負荷がＡＤＳＭ処理を実行すべき状態にあるとして、前記ステップ７７を実行した後、本処理を終了する。
【０１０７】
一方、ステップ７３の判別結果がＮＯのときには、ステップ７４に進み、ＲＡＭに記憶されている、前回のループでのＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥの設定値が「１」であるか否かを判別する。
【０１０８】
この判別結果がＹＥＳのときには、ステップ７５に進み、ＲＡＭに記憶されている、出力偏差の予測値ＰＲＥＶＯ２の前回ループでの算出値の絶対値が所定値ＶＤＳＭＥＮＤ（所定の範囲を規定する値）以下であるか否かを判別する。この判別結果がＹＥＳのときには、エンジン３が、目標空燃比ＫＣＭＤの算出をＡＤＳＭ処理からＰＲＩＳＭ処理に切り換えるべき運転状態にあるとして、ステップ７６に進み、それを表すためにＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥを「０」にセットした後、本処理を終了する。
【０１０９】
一方、ステップ７５の判別結果がＮＯのときには、前記ステップ７７を実行した後、本処理を終了する。
【０１１０】
一方、ステップ７４の判別結果がＮＯのときには、ステップ７５をスキップして、上記ステップ７６を実行した後、本処理を終了する。
【０１１１】
以上のように、このＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥの設定処理では、ＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥは、ステップ７１〜７３のＡＤＳＭ処理の実行条件が成立しておらず、かつ前回のループでＡＤＳＭ処理の実行条件が成立していた場合において、出力偏差の予測値ＰＲＥＶＯ２の前回値の絶対値が所定値ＶＤＳＭＥＮＤ以下であるとき、言い換えれば、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐに近づいた状態にあるときに「０」に、それ以外のときに「１」に設定される。この理由については、後述する。
【０１１２】
次に、図１８を参照しながら、前記ステップ３２のオンボード同定器２３の演算処理について説明する。同図に示すように、この処理では、まず、ステップ８０において、前述した式（１４）より、ゲイン係数ＫＰ（ｋ）を算出する。次に、ステップ８１に進み、前述した式（１２）より、出力偏差ＶＯ２の同定値ＶＯ２ＨＡＴ（ｋ）を算出する。
【０１１３】
次いで、ステップ８２に進み、前述した式（１０）（１１）より、同定誤差フィルタ値ｉｄｅ＿ｆ（ｋ）を算出下後、ステップ８３に進み、前述した式（８）より、モデルパラメータのベクトルθ（ｋ）を算出する。
【０１１４】
次に、ステップ８４に進み、モデルパラメータのベクトルθ（ｋ）の安定化処理を実行する。この処理の内容は図示しないが、具体的には、ステップ８３で算出されたモデルパラメータの同定値ａ１’，ａ２’を、前記ステップ６３で算出された下限値ＩＤＡ２Ｌに基づく制限範囲内の値になるように制限することにより、モデルパラメータａ１，ａ２を算出する。これに加えて、モデルパラメータｂ１の同定値ｂ１’を、前記ステップ６３で算出された上下限値ＩＤＢ１Ｌ，ＩＤＢ１Ｈに基づく制限範囲内の値になるように制限することにより、モデルパラメータｂ１を算出する。以上により、モデルパラメータａ１，ａ２，ｂ１は、制御系の安定性を確保できる値に設定される。
【０１１５】
次いで、ステップ８５に進み、前述した式（１５）より、正方行列Ｐ（ｋ）の次回値Ｐ（ｋ＋１）を算出する。この次回値Ｐ（ｋ＋１）は、次回のループでの算出において、正方行列Ｐ（ｋ）の値として用いられる。
【０１１６】
次に、図１９を参照しながら、前述したステップ３５の操作量ＵＳＬを算出する処理について説明する。この処理では、まず、ステップ９０において、前述した図１１の式（３０）により、予測切換関数σＰＲＥを算出する。
【０１１７】
次に、ステップ９１に進み、予測切換関数σＰＲＥの積算値ＳＵＭＳＩＧＭＡを算出する。この処理では、図２０に示すように、まず、ステップ１００において、下記の３つの条件（ｆ１１）〜（ｆ１３）のうちの少なくとも１つが成立しているか否かを判別する。
（ｆ１１）適応制御フラグＦ＿ＰＲＩＳＭＯＮが「１」であること。
（ｆ１２）後述する積算値保持フラグＦ＿ＳＳＨＯＬＤが「０」であること。
（ｆ１３）ＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥが「０」であること。
【０１１８】
このステップ１００の判別結果がＹＥＳのとき、すなわち積算値ＳＵＭＳＩＧＭＡの算出条件が成立しているときには、ステップ１０１に進み、積算値ＳＵＭＳＩＧＭＡの今回値ＳＵＭＳＩＧＭＡ（ｋ）を、前回値ＳＵＭＳＩＧＭＡ（ｋ−１）に、制御周期ΔＴと予測切換関数σＰＲＥとの積を加算した値［ＳＵＭＳＩＧＭＡ（ｋ−１）＋ΔＴ・σＰＲＥ］に設定する。
【０１１９】
次いで、ステップ１０２に進み、ステップ１０１で算出した今回値ＳＵＭＳＩＧＭＡ（ｋ）が所定の下限値ＳＵＭＳＬより大きいか否かを判別する。この判別結果がＹＥＳのときには、ステップ１０３に進み、今回値ＳＵＭＳＩＧＭＡ（ｋ）が所定の上限値ＳＵＭＳＨより小さいか否かを判別する。この判別結果がＹＥＳで、ＳＵＭＳＬ＜ＳＵＭＳＩＧＭＡ（ｋ）＜ＳＵＭＳＨのときには、そのまま本処理を終了する。
【０１２０】
一方、ステップ１０３の判別結果がＮＯで、ＳＵＭＳＩＧＭＡ（ｋ）≧ＳＵＭＳＨのときには、ステップ１０４に進み、今回値ＳＵＭＳＩＧＭＡ（ｋ）を上限値ＳＵＭＳＨに設定した後、本処理を終了する。一方、ステップ１０２の判別結果がＮＯで、ＳＵＭＳＩＧＭＡ（ｋ）≦ＳＵＭＳＬのときには、ステップ１０５に進み、今回値ＳＵＭＳＩＧＭＡ（ｋ）を下限値ＳＵＭＳＬに設定した後、本処理を終了する。
【０１２１】
一方、ステップ１００の判別結果がＮＯのとき、すなわち３つの条件（ｆ１１）〜（ｆ１３）がいずれも不成立で、積算値ＳＵＭＳＩＧＭＡの算出条件が不成立であるときには、ステップ１０６に進み、今回値ＳＵＭＳＩＧＭＡ（ｋ）を前回値ＳＵＭＳＩＧＭＡ（ｋ−１）に設定する。すなわち、積算値ＳＵＭＳＩＧＭＡをホールドする。この後、本処理を終了する。
【０１２２】
図１９に戻り、ステップ９１に続くステップ９２〜９４において、前述した図１１の式（３２）〜（３４）により、等価制御入力ＵＥＱ（＝Ｕｅｑ）、到達則入力ＵＲＣＨ（＝Ｕｒｃｈ）および適応則入力ＵＡＤＰ（＝Ｕａｄｐ）をそれぞれ算出する。
【０１２３】
次に、ステップ９５に進み、これらの等価制御入力ＵＥＱ、到達則入力ＵＲＣＨおよび適応則入力ＵＡＤＰの和を、操作量ＵＳＬとして設定した後、本処理を終了する。
【０１２４】
次に、図２１および図２２を参照しながら、前述した図１４のステップ３８のスライディングモード操作量ＤＫＣＭＤＳＬＤの算出処理について説明する。この処理は、上記ステップ９５で算出された操作量ＵＳＬを、後述する各種の上下限値により規定される制限範囲内の値に制限することによって、スライディングモード操作量ＤＫＣＭＤＳＬＤを算出するものである。
【０１２５】
この処理では、まず、ステップ１１１において、触媒還元モードフラグＦ＿ＣＴＲＤＭＯＤが「０」であるか否かを判別する。この触媒還元モードフラグＦ＿ＣＴＲＤＭＯＤは、エンジン３が触媒還元モード中であるときに「１」に、それ以外のときに「０」にそれぞれセットされる。
【０１２６】
ステップ１１１の判別結果がＹＥＳで、エンジン３が触媒還元モード中でないときには、ステップ１１２に進み、ＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥが「０」であるか否かを判別する。
【０１２７】
この判別結果がＹＥＳで、エンジン３がＰＲＩＳＭ処理を実行すべき運転状態にあるときには、ステップ１１３に進み、リミット値算出処理を実行する。このリミット値算出処理では、後述するように、適応上下限値ＵＳＬＡＨ，ＵＳＬＡＬ、そのリミット処理値ＵＳＬＡＬＨ，ＵＳＬＡＬＬ、非アイドル運転用の上下限値ＵＳＬＡＨＦ，ＵＳＬＡＬＦ、およびアイドル運転用の上下限値ＵＳＬＡＨＦＩ，ＵＳＬＡＬＦＩがそれぞれ算出される。
【０１２８】
次いで、ステップ１１４に進み、アイドル運転フラグＦ＿ＩＤＬＥＰが「０」であるか否かを判別する。この判別結果がＹＥＳで、アイドル運転中でないときには、ステップ１１５に進み、前記ステップ９５で算出された操作量ＵＳＬが、非アイドル運転用の下限値ＵＳＬＡＬＦ（制限範囲の下限を規定する値）以下であるか否かを判別する。
【０１２９】
この判別結果がＮＯで、ＵＳＬ＞ＵＳＬＡＬＦのときには、ステップ１１６に進み、操作量ＵＳＬが非アイドル運転用の上限値ＵＳＬＡＨＦ以上であるか否かを判別する。この判別結果がＮＯで、ＵＳＬＡＬＦ＜ＵＳＬ＜ＵＳＬＡＨＦのときには、ステップ１１７に進み、スライディングモード操作量ＤＫＣＭＤＳＬＤを操作量ＵＳＬに設定すると同時に、積算値保持フラグＦ＿ＳＳＨＯＬＤを「０」にセットする。
【０１３０】
次いで、ステップ１１８に進み、適応下限値ＵＳＬＡＬを、そのリミット処理値ＵＳＬＡＬＬに所定の縮小側値ＡＬＤＥＣを加算した値［ＵＳＬＡＬＬ＋ＡＬＤＥＣ］に設定すると同時に、適応上限値ＵＳＬＡＨを、そのリミット処理値ＵＳＬＡＬＨから所定の縮小側値ＡＬＤＥＣを減算した値［ＵＳＬＡＬＨ−ＡＬＤＥＣ］に設定した後、本処理を終了する。
【０１３１】
一方、ステップ１１６の判別結果がＹＥＳで、ＵＳＬ≧ＵＳＬＡＨＦのときには、ステップ１１９に進み、スライディングモード操作量ＤＫＣＭＤＳＬＤを非アイドル運転用の適応上限値ＵＳＬＡＨＦに設定すると同時に、積算値保持フラグＦ＿ＳＳＨＯＬＤを「１」にセットする。
【０１３２】
次いで、ステップ１２０に進み、始動後タイマのタイマ値ＴＭＡＣＲが所定時間ＴＭＡＷＡＳＴより小さいこと、またはＦ／Ｃ後判定フラグＦ＿ＡＦＣが「１」であることが成立しているか否かを判別する。この始動後タイマは、エンジン３の始動後の経過時間を計時するアップカウント式のタイマである。
【０１３３】
この判別結果がＹＥＳのとき、すなわち、エンジン始動後、所定時間ＴＭＡＷＡＳＴが経過していないか、またはフューエルカット運転の終了後、所定時間ＴＭ＿ＡＦＣが経過していないときには、そのまま本処理を終了する。
【０１３４】
一方、ステップ１２０の判別結果がＮＯのとき、すなわち、エンジン始動後、所定時間ＴＭＡＷＡＳＴが経過し、かつフューエルカット運転の終了後、所定時間ＴＭ＿ＡＦＣが経過したときには、ステップ１２１に進み、適応下限値ＵＳＬＡＬを、そのリミット処理値ＵＳＬＡＬＬに縮小側値ＡＬＤＥＣを加算した値［ＵＳＬＡＬＬ＋ＡＬＤＥＣ］に設定すると同時に、適応上限値ＵＳＬＡＨを、そのリミット処理値ＵＳＬＡＬＨに所定の拡大側値ＡＬＩＮＣを加算した値［ＵＳＬＡＬＨ＋ＡＬＩＮＣ］に設定した後、本処理を終了する。
【０１３５】
一方、ステップ１１５の判別結果がＹＥＳで、ＵＳＬ≦ＵＳＬＡＬＦのときには、図２２のステップ１２４に進み、スライディングモード操作量ＤＫＣＭＤＳＬＤを非アイドル運転用の適応下限値ＵＳＬＡＬＦに設定すると同時に、積算値保持フラグＦ＿ＳＳＨＯＬＤを「１」にセットする。
【０１３６】
次いで、ステップ１２５に進み、第２発進フラグＦ＿ＶＳＴが「１」であるか否かを判別する。この判別結果がＹＥＳで、車両の発進後、第２所定時間ＴＶＳＴが経過しておらず、第２発進モード中であるときには、そのまま本処理を終了する。
【０１３７】
一方、ステップ１２５の判別結果がＮＯで、車両の発進後、第２所定時間ＴＶＳＴが経過し、第２発進モードが終了したときには、ステップ１２６に進み、適応下限値ＵＳＬＡＬを、そのリミット処理値ＵＳＬＡＬＬから拡大側値ＡＬＩＮＣを減算した値［ＵＳＬＡＬＬ−ＡＬＩＮＣ］に設定すると同時に、適応上限値ＵＳＬＡＨを、そのリミット処理値ＵＳＬＡＬＨから縮小側値ＡＬＤＥＣを減算した値［ＵＳＬＡＬＨ−ＡＬＤＥＣ］に設定する。その後、本処理を終了する。
【０１３８】
一方、ステップ１１４の判別結果がＮＯで、アイドル運転中であるときには、図２２のステップ１２７に進み、操作量ＵＳＬが、アイドル運転用の下限値ＵＳＬＡＬＦＩ以下であるか否かを判別する。この判別結果がＮＯで、ＵＳＬ＞ＵＳＬＡＬＦＩのときには、ステップ１２８に進み、操作量ＵＳＬがアイドル運転用の上限値ＵＳＬＡＨＦＩ以上であるか否かを判別する。
【０１３９】
この判別結果がＮＯで、ＵＳＬＡＬＦＩ＜ＵＳＬ＜ＵＳＬＡＨＦＩのときには、ステップ１２９に進み、スライディングモード操作量ＤＫＣＭＤＳＬＤを操作量ＵＳＬに設定すると同時に、積算値保持フラグＦ＿ＳＳＨＯＬＤを「０」にセットした後、本処理を終了する。
【０１４０】
一方、ステップ１２８の判別結果がＹＥＳで、ＵＳＬ≧ＵＳＬＡＨＦＩのときには、ステップ１３０に進み、スライディングモード操作量ＤＫＣＭＤＳＬＤをアイドル運転用の上限値ＵＳＬＡＨＦＩに設定すると同時に、積算値保持フラグＦ＿ＳＳＨＯＬＤを「１」にセットした後、本処理を終了する。
【０１４１】
一方、ステップ１２７の判別結果がＹＥＳで、ＵＳＬ≦ＵＳＬＡＬＦＩのときには、ステップ１３１に進み、スライディングモード操作量ＤＫＣＭＤＳＬＤをアイドル運転用の下限値ＵＳＬＡＬＦＩに設定すると同時に、積算値保持フラグＦ＿ＳＳＨＯＬＤを「１」にセットした後、本処理を終了する。
【０１４２】
一方、図２１に戻り、前述したステップ１１１，１１２のいずれかの判別結果がＮＯのとき、すなわちエンジン３が触媒還元モード中にあるとき、またはエンジン３がＡＤＳＭ処理を実行すべき運転状態にあるときには、ステップ１２２に進み、スライディングモード操作量ＤＫＣＭＤＳＬＤを所定値ＳＬＤＨＯＬＤに設定する。この所定値ＳＬＤＨＯＬＤは、後述するように、目標空燃比ＫＣＭＤの算出がＡＤＳＭ処理からＰＲＩＳＭ処理に切り換えられたときに、切り換え直後にステップ１９３で算出される目標空燃比ＫＣＭＤが過度にリーン側の値にならないような値として設定される。
【０１４３】
次いで、ステップ１２３に進み、適応下限値ＵＳＬＡＬを所定の初期値ＵＳＬＬＣＲＤに設定した後、本処理を終了する。この初期値ＵＳＬＬＣＲＤは、後述するように、目標空燃比ＫＣＭＤの算出がＡＤＳＭ処理からＰＲＩＳＭ処理に切り換えられた際、切り換え後の初期において目標空燃比ＫＣＭＤが過度にリーン側の値にならないように、以上の図２１，２２の処理でスライディングモード操作量ＤＫＣＭＤＳＬＤの制限範囲を設定するための値である。
【０１４４】
以上のように、このスライディングモード操作量ＤＫＣＭＤＳＬＤの算出処理では、ＥＣＵ２およびエンジン３が適応目標空燃比ＫＣＭＤＳＬＤをＰＲＩＳＭ処理により算出すべき状態にあるときには、スライディングモード操作量ＤＫＣＭＤＳＬＤは、アイドル運転用の上下限値ＵＳＬＡＨＦＩ，ＵＳＬＡＬＦＩまたは非アイドル運転用のＵＳＬＡＨＦ，ＵＳＬＡＬＦにより規定される制限範囲内の値に設定される。すなわち、リミット処理を施された値に設定される。
【０１４５】
一方、ＥＣＵ２またはエンジン３が適応目標空燃比ＫＣＭＤＳＬＤをＰＲＩＳＭ処理により算出すべき状態にないときには、スライディングモード操作量ＤＫＣＭＤＳＬＤが所定値ＳＬＤＨＯＬＤに設定されると同時に、適応下限値ＵＳＬＡＬが所定の初期値ＵＳＬＬＣＲＤに設定される。これは、後述するように、目標空燃比ＫＣＭＤの算出がＡＤＳＭ処理からＰＲＩＳＭ処理に切り換えられた際、切り換え後の初期において、目標空燃比ＫＣＭＤをリーン側に過度に変化しないように制御するためである。
【０１４６】
次に、図２３および図２４を参照しながら、前記ステップ１１３のリミット値算出処理について説明する。この処理では、まず、ステップ１４０において、適応上下限値のリミット処理値ＵＳＬＡＬＨ，ＵＳＬＡＬＬを算出する。
【０１４７】
この処理では、図２４に示すように、ステップ１６０において、リミット処理オフフラグＦ＿ＳＷＡＷＯＦＦが「１」であるか否かを判別する。このリミット処理オフフラグＦ＿ＳＷＡＷＯＦＦは、ＥＣＵ２がリミット処理を実行可能な演算処理状態にないときに「１」に、それ以外のときに「０」にセットされる。この判別結果がＮＯで、ＥＣＵ２がリミット処理を実行可能な演算処理状態にあるときには、ステップ１６１に進み、Ｆ／Ｃ後判定フラグＦ＿ＡＦＣが「１」であるか否かを判別する。
【０１４８】
この判別結果がＮＯで、フューエルカット運転の終了後、所定時間ＴＭ＿ＡＦＣが経過したときには、ステップ１６２に進み、アイドル運転フラグＦ＿ＩＤＬＥＰが「１」であるか否かを判別する。
【０１４９】
この判別結果がＮＯで、エンジン３がアイドル運転中でないときには、ステップ１６３に進み、高不安定フラグＦ＿ＳＬＤＳＴ２が「１」であるか否かを判別する。この判別結果がＮＯで、スライディングモード制御が高不安定レベルにないときには、ステップ１６４に進み、低不安定フラグＦ＿ＳＬＤＳＴ１が「１」であるか否かを判別する。
【０１５０】
この判別結果がＮＯで、スライディングモード制御が安定レベルにあるときには、ステップ１６５に進み、安定レベル用の適応上下限値のリミット処理値ＵＳＬＡＬＨ，ＵＳＬＡＬＬを以下に述べるように算出した後、本処理を終了する。
【０１５１】
このステップ１６５では、図示しないが、適応上限値のリミット処理値ＵＳＬＡＬＨを、ＲＡＭに記憶されている適応上限値ＵＳＬＡＨと、所定の安定レベル用のリッチ側上下限値ＵＳＬＨＨ，ＵＳＬＬＭＴＨとの比較結果に基づいて、算出する。具体的には、適応上限値のリミット処理値ＵＳＬＡＬＨを、ＵＳＬＬＭＴＨ≦ＵＳＬＡＨ≦ＵＳＬＨＨのときには、適応上限値ＵＳＬＡＨに設定し、ＵＳＬＨＨ＜ＵＳＬＡＨのときには、安定レベル用のリッチ側上限値ＵＳＬＨＨに設定し、ＵＳＬＡＨ＜ＵＳＬＬＭＴＨのときには、安定レベル用のリッチ側下限値ＵＳＬＬＭＴＨにそれぞれ設定する。
【０１５２】
また、適応下限値のリミット処理値ＵＳＬＡＬＬを、ＲＡＭに記憶されている適応下限値ＵＳＬＡＬと、所定の安定レベル用のリーン側上下限値ＵＳＬＬＬ，ＵＳＬＬＭＴＬとの比較結果に基づいて、算出する。具体的には、適応下限値のリミット処理値ＵＳＬＡＬＬを、ＵＳＬＬＬ≦ＵＳＬＡＬ≦ＵＳＬＬＭＴＬのときには、適応下限値ＵＳＬＡＬに設定し、ＵＳＬＬＭＴＬ＜ＵＳＬＡＬのときには、安定レベル用のリーン側上限値ＵＳＬＬＭＴＬに設定し、ＵＳＬＡＬ＜ＵＳＬＬＬのときには、安定レベル用のリーン側下限値ＵＳＬＬにそれぞれ設定する。
【０１５３】
一方、ステップ１６４の判別結果がＹＥＳで、スライディングモード制御が低不安定レベルにあるときには、ステップ１６６に進み、低不安定レベル用の適応上下限値のリミット処理値ＵＳＬＡＬＨ，ＵＳＬＡＬＬを以下に述べるように算出した後、本処理を終了する。
【０１５４】
このステップ１６６では、図示しないが、適応上限値のリミット処理値ＵＳＬＡＬＨを、適応上限値ＵＳＬＡＨと、所定の低不安定レベル用のリッチ側上限値ＵＳＬＨおよび前記安定レベル用のリッチ側下限値ＵＳＬＬＭＴＨとの比較結果に基づいて、算出する。具体的には、適応上限値のリミット処理値ＵＳＬＡＬＨを、ＵＳＬＬＭＴＨ≦ＵＳＬＡＨ≦ＵＳＬＨのときには、適応上限値ＵＳＬＡＨに設定し、ＵＳＬＨ＜ＵＳＬＡＨのときには、低不安定レベル用のリッチ側上限値ＵＳＬＨに設定し、ＵＳＬＡＨ＜ＵＳＬＬＭＴＨのときには、安定レベル用のリッチ側下限値ＵＳＬＬＭＴＨにそれぞれ設定する。
【０１５５】
また、適応下限値のリミット処理値ＵＳＬＡＬＬを、適応下限値ＵＳＬＡＬと、前記安定レベル用のリーン側上限値ＵＳＬＬＭＴＬおよび所定の低不安定レベル用のリーン側下限値ＵＳＬＬとの比較結果に基づいて、算出する。具体的には、適応下限値のリミット処理値ＵＳＬＡＬＬを、ＵＳＬＬ≦ＵＳＬＡＬ≦ＵＳＬＬＭＴＬのときには、適応下限値ＵＳＬＡＬに設定し、ＵＳＬＬＭＴＬ＜ＵＳＬＡＬのときには、安定レベル用のリーン側上限値ＵＳＬＬＭＴＬに設定し、ＵＳＬＡＬ＜ＵＳＬＬのときには、低不安定レベル用のリーン側下限値ＵＳＬＬにそれぞれ設定する。
【０１５６】
一方、ステップ１６３の判別結果がＹＥＳで、スライディングモード制御が高不安定レベルにあるときには、ステップ１６７に進み、高不安定レベル用の適応上下限値のリミット処理値ＵＳＬＡＬＨ，ＵＳＬＡＬＬを以下に述べるように算出した後、本処理を終了する。
【０１５７】
このステップ１６７では、図示しないが、適応上限値のリミット処理値ＵＳＬＡＬＨを、適応上限値ＵＳＬＡＨと、所定の高不安定レベル用のリッチ側上限値ＵＳＬＳＴＢＨおよび前記安定レベル用のリッチ側下限値ＵＳＬＬＭＴＨとの比較結果に基づいて、算出する。具体的には、適応上限値のリミット処理値ＵＳＬＡＬＨを、ＵＳＬＬＭＴＨ≦ＵＳＬＡＨ≦ＵＳＬＳＴＢＨのときには、適応上限値ＵＳＬＡＨに設定し、ＵＳＬＳＴＢＨ＜ＵＳＬＡＨのときには、高不安定レベル用のリッチ側上限値ＵＳＬＳＴＢＨに設定し、ＵＳＬＡＨ＜ＵＳＬＬＭＴＨのときには、安定レベル用のリッチ側下限値ＵＳＬＬＭＴＨにそれぞれ設定する。
【０１５８】
また、適応下限値のリミット処理値ＵＳＬＡＬＬを、適応下限値ＵＳＬＡＬと、前記安定レベル用のリーン側上限値ＵＳＬＬＭＴＬおよび所定の高不安定レベル用のリーン側下限値ＵＳＬＳＴＢＬとの比較結果に基づいて、算出する。具体的には、適応下限値のリミット処理値ＵＳＬＡＬＬを、ＵＳＬＳＴＢＬ≦ＵＳＬＡＬ≦ＵＳＬＬＭＴＬのときには、適応下限値ＵＳＬＡＬに設定し、ＵＳＬＬＭＴＬ＜ＵＳＬＡＬのときには、安定レベル用のリーン側上限値ＵＳＬＬＭＴＬに設定し、ＵＳＬＡＬ＜ＵＳＬＳＴＢＬのときには、高不安定レベル用のリーン側下限値ＵＳＬＳＴＢＬにそれぞれ設定する。
【０１５９】
なお、適応上限値のリミット処理値ＵＳＬＡＬＨの算出で用いられる以上の各種の上下限値は、ＵＳＬＬＭＴＨ≦ＵＳＬＳＴＢＨ≦ＵＳＬＨ≦ＵＳＬＨＨの関係が成立するように設定されており、適応下限値のリミット処理値ＵＳＬＡＬＬの算出で用いられる以上の各種の上下限値は、ＵＳＬＬＬ≦ＵＳＬＬ≦ＵＳＬＳＴＢＬ≦ＵＳＬＬＭＴＬの関係が成立するように設定されている。
【０１６０】
一方、ステップ１６１または１６２の判別結果がＹＥＳのとき、すなわちフューエルカット運転の終了後、所定時間ＴＭ＿ＡＦＣが経過していないとき、またはエンジン３がアイドル運転中であるときには、そのまま本処理を終了する。
【０１６１】
一方、ステップ１６０の判別結果がＹＥＳで、ＥＣＵ２がリミット処理を実行可能な演算処理状態にないときには、ステップ１６８に進み、適応上下限値のリミット処理値ＵＳＬＡＬＨ，ＵＳＬＡＬＬを、前記低不安定レベル用のリッチ側上限値ＵＳＬＨおよび前記低不安定レベル用のリーン側下限値ＵＳＬＬにそれぞれセットした後、本処理を終了する。
【０１６２】
図２３に戻り、前記ステップ１４０に続くステップ１４１において、前記リミット処理オフフラグＦ＿ＳＷＡＷＯＦＦが「１」であるか否かを判別する。この判別結果がＮＯで、ＥＣＵ２がリミット処理を実行可能な演算処理状態にあるときには、ステップ１４２に進み、前記Ｆ／Ｃ後判定フラグＦ＿ＡＦＣが「１」であるか否かを判別する。
【０１６３】
この判別結果がＮＯで、フューエルカット運転の終了後、所定時間ＴＭ＿ＡＦＣが経過したときには、ステップ１４３に進み、前記アイドル運転フラグＦ＿ＩＤＬＥＰが「１」であるか否かを判別する。この判別結果がＮＯで、エンジン３がアイドル運転中でないときには、ステップ１４４に進み、第２発進フラグＦ＿ＶＳＴが「１」であるか否かを判別する。
【０１６４】
この判別結果がＮＯで、第２発進モードが終了したとき、すなわち車両の発進後、第２所定時間ＴＶＳＴが経過したときには、ステップ１４５に進み、非アイドル運転用の上下限値ＵＳＬＡＨＦ，ＵＳＬＡＬＦをそれぞれ、ステップ１４０で算出された適応上下限値のリミット処理値ＵＳＬＡＬＨ，ＵＳＬＡＬＬに設定した後、本処理を終了する。
【０１６５】
一方、ステップ１４４の判別結果がＹＥＳで、第２発進モード中であるときには、ステップ１４６に進み、非アイドル運転用の上限値ＵＳＬＡＨＦをステップ１４０で算出された適応上限値のリミット処理値ＵＳＬＡＬＨに、非アイドル運転用の下限値ＵＳＬＡＬＦを所定の第２発進モード用の下限値ＵＳＬＶＳＴにそれぞれ設定した後、本処理を終了する。
【０１６６】
一方、ステップ１４３の判別結果がＹＥＳで、アイドル運転中であるときには、ステップ１４７に進み、前記高不安定フラグＦ＿ＳＬＤＳＴ２が「１」であるか否かを判別する。この判別結果がＮＯで、スライディングモード制御が高不安定レベルにないときには、ステップ１４８に進み、アイドル運転用の上下限値ＵＳＬＡＨＦＩ，ＵＳＬＡＬＦＩをそれぞれ、所定のアイドル運転時の安定レベル用の上下限値ＵＳＬＨＩ，ＵＳＬＬＩに設定した後、本処理を終了する。
【０１６７】
一方、ステップ１４７の判別結果がＹＥＳで、スライディングモード制御が高不安定レベルにあるときには、ステップ１４９に進み、アイドル運転用の上下限値ＵＳＬＡＨＦＩ，ＵＳＬＡＬＦＩをそれぞれ、所定のアイドル運転時の高不安定レベル用の上下限値ＵＳＬＳＴＢＨＩ，ＵＳＬＳＴＢＬＩに設定した後、本処理を終了する。
【０１６８】
一方、ステップ１４２の判別結果がＹＥＳで、フューエルカット運転の終了後、所定時間ＴＭ＿ＡＦＣが経過していないときには、ステップ１５０に進み、非アイドル運転用の上限値ＵＳＬＡＨＦを所定のアイドル後用の上限値ＵＳＬＡＦＣに、非アイドル運転用の下限値ＵＳＬＡＬＦをステップ１４０で算出された適応下限値のリミット処理値ＵＳＬＡＬＬに、アイドル運転用の上限値ＵＳＬＡＨＦＩを上記アイドル後用の上限値ＵＳＬＡＦＣに、アイドル運転用の下限値ＵＳＬＡＬＦＩを前記アイドル運転時の安定レベル用の下限値ＵＳＬＬＩにそれぞれ設定した後、本処理を終了する。
【０１６９】
一方、ステップ１４１の判別結果がＹＥＳで、ＥＣＵ２がリミット処理を実行可能な演算処理状態にないときには、ステップ１５１に進み、非アイドル運転用の上下限値ＵＳＬＡＨＦ，ＵＳＬＡＬＦを、前記低不安定レベル用のリッチ側上限値ＵＳＬＨおよび前記低不安定レベル用のリーン側下限値ＵＳＬＬにそれぞれ設定すると同時に、アイドル運転用の上下限値ＵＳＬＡＨＦＩ，ＵＳＬＡＬＦＩをそれぞれ、前記アイドル運転時の安定レベル用の上下限値ＵＳＬＨＩ，ＵＳＬＬＩに設定した後、本処理を終了する。
【０１７０】
次に、図２５を参照しながら、前述した図１４のステップ３９のΔΣ変調操作量ＤＫＣＭＤＤＳＭを算出する処理について説明する。同図に示すように、この処理では、まず、ステップ１７０において、ＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥが「１」であるか否かを判別する。この判別結果がＹＥＳで、エンジン３がＡＤＳＭ処理を実行すべき運転状態にあるときには、ステップ１７１に進み、ＲＡＭに記憶されている、前回のループで算出されたＤＳＭ信号値の今回値ＤＳＭＳＧＮＳ（ｋ）［＝ｕ（ｋ）］を、前回値ＤＳＭＳＧＮＳ（ｋ−１）［＝ｕ（ｋ−１）］として設定する。
【０１７１】
次に、ステップ１７２に進み、ＲＡＭに記憶されている、前回のループで算出された偏差積分値の今回値ＤＳＭＳＩＧＭＡ（ｋ）［＝σｄ（ｋ）］を、前回値ＤＳＭＳＩＧＭＡ（ｋ−１）［＝σｄ（ｋ−１）］として設定する。
【０１７２】
次いで、ステップ１７３に進み、出力偏差の予測値ＰＲＥＶＯ２（ｋ）が値０以上であるか否かを判別する。この判別結果がＹＥＳのときには、エンジン３が混合気の空燃比をリーン側に変更すべき運転モードにあるとして、ステップ１７４に進み、参照信号値用の非線形ゲインＫＲＤＳＭ（＝Ｇｄ）を、リーン化用の値ＫＲＤＳＭＬ（＝Ｇｄ１）に設定した後、後述するステップ１７６に進む。
【０１７３】
一方、ステップ１７３の判別結果がＮＯのときには、エンジン３が混合気の空燃比をリッチ側に変更すべき運転モードにあるとして、ステップ１７５に進み、参照信号値用の非線形ゲインＫＲＤＳＭを、リーン化用の値ＫＲＤＳＭＬよりも大きいリッチ化用の値ＫＲＤＳＭＲ（＝Ｇｄ２＞Ｇｄ１）に設定した後、ステップ１７６に進む。
【０１７４】
このように、非線形ゲインＫＲＤＳＭが、予測値ＰＲＥＶＯ２（ｋ）に応じて、互いに異なるリーン化用の値ＫＲＤＳＭＬおよびリッチ化用の値ＫＲＤＳＭＲ（＞ＫＲＤＳＭＬ）に設定される理由は、以下による。すなわち、混合気の空燃比をリーン側に変更する際には、リーン化用の値ＫＲＤＳＭＬをリッチ化用の値ＫＲＤＳＭＲよりも小さい値に設定することで、Ｏ２センサ１５の出力Ｖｏｕｔの目標値Ｖｏｐへの収束速度がリッチ側への変更時よりも遅くなるように、空燃比を制御し、それにより、第１触媒装置８ａ内の触媒の上流側端部が過度にリーン化されるのを回避することで、第１および第２触媒装置８ａ，８ｂのＮＯｘ浄化率を向上させるためである。一方、混合気の空燃比をリッチ側に変更する際には、リッチ化用の値ＫＲＤＳＭＲをリーン化用の値ＫＲＤＳＭＬよりも大きい値に設定することで、Ｏ２センサ１５の出力Ｖｏｕｔの目標値Ｖｏｐへの収束速度がリーン側への変更時よりも速くなるように、空燃比を制御し、それにより、第１および第２触媒装置８ａ，８ｂのリーン雰囲気を迅速に解消し、リッチ雰囲気に移行させることで、第１および第２触媒装置８ａ，８ｂのＮＯｘ浄化率を迅速に回復させるためである。以上により、混合気の空燃比をリッチ側およびリーン側に変更する際、触媒装置８ａ，８ｂにおいて、良好なＮＯｘ浄化率を確保することができる。
【０１７５】
ステップ１７４または１７５に続くステップ１７６では、値−１、参照信号値用の非線形ゲインＫＲＤＳＭおよび予測値の今回値ＰＲＥＶＯ２（ｋ）を互いに乗算した値から、上記ステップ１７１で算出したＤＳＭ信号値の前回値ＤＳＭＳＧＮＳ（ｋ−１）を減算した値［−１・ＫＲＤＳＭ・ＰＲＥＶＯ２（ｋ）−ＤＳＭＳＧＮＳ（ｋ−１）］を、偏差信号値ＤＳＭＤＥＬＴＡ［＝δ（ｋ）］として設定する。この処理は、前述した式（１９），（２０）に相当する。
【０１７６】
次いで、ステップ１７７に進み、偏差積分値の今回値ＤＳＭＳＩＧＭＡ（ｋ）を、ステップ１７２で算出した前回値ＤＳＭＳＩＧＭＡ（ｋ−１）と、ステップ１７６で算出した偏差信号値ＤＳＭＤＥＬＴＡとの和［ＤＳＭＳＩＧＭＡ（ｋ−１）＋ＤＳＭＤＥＬＴＡ］に設定する。この処理は、前述した式（２１）に相当する。
【０１７７】
次に、ステップ１７８〜１８０において、ステップ１７７で算出した偏差積分値の今回値ＤＳＭＳＩＧＭＡ（ｋ）が値０以上のときには、ＤＳＭ信号値の今回値ＤＳＭＳＧＮＳ（ｋ）を値１に設定し、偏差積分値の今回値ＤＳＭＳＩＧＭＡ（ｋ）が値０よりも小さいときには、ＤＳＭ信号値の今回値ＤＳＭＳＧＮＳ（ｋ）を値−１に設定する。以上のステップ１７８〜１８０の処理は、前述した式（２２）に相当する。
【０１７８】
次いで、ステップ１８１において、排気ガスボリュームＡＢ＿ＳＶに応じて、図示しないテーブルを検索することにより、ＤＳＭ信号値用のゲインＫＤＳＭ（＝Ｆｄ）を算出する。このテーブルでは、ゲインＫＤＳＭは、排気ガスボリュームＡＢ＿ＳＶが小さいほど、より大きな値に設定されている。これは、排気ガスボリュームＡＢ＿ＳＶが小さいほど、すなわちエンジン３の運転負荷が小さい状態であるほど、Ｏ２センサ１５の出力Ｖｏｕｔの応答性が低下するので、それを補償するためである。
【０１７９】
なお、このゲインＫＤＳＭの算出に用いるテーブルは、ゲインＫＤＳＭが排気ガスボリュームＡＢ＿ＳＶに応じて設定されている上記テーブルに限らず、エンジン３の運転負荷を表すパラメータ（例えば基本燃料噴射量Ｔｉｍ）に応じてゲインＫＤＳＭが予め設定されているものであればよい。また、触媒装置８ａの劣化判別器が設けられている場合には、この劣化判別器で判別された触媒装置８ａの劣化度合が大きいほど、ゲインＤＳＭをより小さい値に補正するようにしてもよい。さらに、ゲインＫＤＳＭを、オンボード同定器２３によって同定されたモデルパラメータに応じて決定してもよい。例えば、モデルパラメータｂ１の逆数（１／ｂ１）の値が大きいほど、言い換えればモデルパラメータｂ１の値が小さいほど、ゲインＫＤＳＭをより大きい値に設定してもよい。
【０１８０】
次に、ステップ１８２に進み、ΔΣ変調操作量ＤＫＣＭＤＤＳＭを、ＤＳＭ信号値用のゲインＫＤＳＭと、ＤＳＭ信号値の今回値ＤＳＭＳＧＮＳ（ｋ）とを互いに乗算した値［ＫＤＳＭ・ＤＳＭＳＧＮＳ（ｋ）］に設定した後、本処理を終了する。この処理が、前述した式（２３）に相当する。
【０１８１】
一方、ステップ１７０の判別結果がＮＯで、エンジン３がＡＤＳＭ処理を実行すべき運転状態にないときには、ステップ１８３に進み、ＤＳＭ信号値の前回値ＤＳＭＳＧＮＳ（ｋ−１）および今回値ＤＳＭＳＧＮＳ（ｋ）をいずれも値１に設定する。
【０１８２】
次いで、ステップ１８４に進み、偏差積分値の前回値ＤＳＭＳＩＧＭＡ（ｋ−１）および今回値ＤＳＭＳＩＧＭＡ（ｋ）をいずれも値０に設定する。次に、ステップ１８５に進み、ΔΣ変調操作量ＤＫＣＭＤＤＳＭを値０に設定した後、本処理を終了する。
【０１８３】
次に、図２６を参照しながら、前述した図１４のステップ４０の適応目標空燃比ＫＣＭＤＳＬＤを算出する処理について説明する。同図に示すように、この処理では、まず、ステップ１９０において、前記ステップ２３で設定されたＰＲＩＳＭ／ＡＤＳＭ実行フラグＦ＿ＰＲＩＳＭＣＡＬが「１」であるか否かを判別する。
【０１８４】
この判別結果がＹＥＳのときには、ステップ１９１に進み、触媒還元モードフラグＦ＿ＣＴＲＭＯＤが「０」であるか否かを判別する。この触媒還元モードフラグＦ＿ＣＴＲＭＯＤは、エンジン３が触媒還元モードを実行すべき運転状態のときに「１」に、それ以外のときに「０」にそれぞれセットされる。
【０１８５】
ステップ１９１の判別結果がＹＥＳで、エンジン３が触媒還元モードを実行すべき運転状態にないときには、ステップ１９２に進み、ＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥが「０」であるか否かを判別する。
【０１８６】
この判別結果がＹＥＳで、適応目標空燃比ＫＣＭＤＳＬＤをＰＲＩＳＭ処理で算出すべき運転状態のときには、ステップ１９３に進み、基準値ＦＬＡＦＢＡＳＥ、適応補正項ＦＬＡＦＡＤＰおよびスライディングモード操作量ＤＫＣＭＤＳＬＤの和［ＦＬＡＦＢＡＳＥ＋ＦＬＡＦＡＤＰ＋ＤＫＣＭＤＳＬＤ］を、適応目標空燃比ＫＣＭＤＳＬＤとして設定した後、本処理を終了する。
【０１８７】
一方、ステップ１９２の判別結果がＮＯで、適応目標空燃比ＫＣＭＤＳＬＤをＡＤＳＭ処理で算出すべき運転状態のときには、ステップ１９４に進み、基準値ＦＬＡＦＢＡＳＥ、適応補正項ＦＬＡＦＡＤＰおよびΔΣ変調制御量ＤＫＣＭＤＤＳＭの和［ＦＬＡＦＢＡＳＥ＋ＦＬＡＦＡＤＰ＋ＤＫＣＭＤＤＳＭ］を、適応目標空燃比ＫＣＭＤＳＬＤとして設定した後、本処理を終了する。この処理が、前述した式（２４）に相当する。
【０１８８】
一方、ステップ１９１の判別結果がＮＯで、エンジン３が触媒還元モードを実行すべき運転状態にあるときには、ステップ１９５に進み、基準値ＦＬＡＦＢＡＳＥ、適応補正項ＦＬＡＦＡＤＰおよび触媒還元モード操作量ＤＫＣＭＤＣＲＤの和［ＦＬＡＦＢＡＳＥ＋ＦＬＡＦＡＤＰ＋ＤＫＣＭＤＣＲＤ］を、適応目標空燃比ＫＣＭＤＳＬＤとして設定した後、本処理を終了する。
【０１８９】
一方、ステップ１９０の判別結果がＮＯで、エンジン３がＰＲＩＳＭ処理、ＡＤＳＭ処理または触媒還元モード処理を実行すべき運転状態にないときには、ステップ１９６に進み、基準値ＦＬＡＦＢＡＳＥ、適応補正項ＦＬＡＦＡＤＰおよび所定値ＳＬＤＨＯＬＤの和［ＦＬＡＦＢＡＳＥ＋ＦＬＡＦＡＤＰ＋ＳＬＤＨＯＬＤ］を適応目標空燃比ＫＣＭＤＳＬＤとして設定した後、本処理を終了する。
【０１９０】
次に、図２７を参照しながら、図１４のステップ４１の適応補正項ＦＬＡＦＡＤＰの算出処理について説明する。この処理は、適応補正項の次回値ＦＬＡＦＡＤＰ（ｋ＋１）を算出するものであり、この次回値ＦＬＡＦＡＤＰ（ｋ＋１）は、次回のループにおいて今回値ＦＬＡＦＡＤＰ（ｋ）として用いられる。
【０１９１】
この処理では、まず、ステップ２００において、出力偏差ＶＯ２が所定の範囲（ＡＤＬ＜ＶＯ２＜ＡＤＨ）内の値であるか否かを判別する。この判別結果がＹＥＳのとき、すなわち出力偏差ＶＯ２が小さく、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐの近傍にあるときには、ステップ２０１に進み、適応則入力ＵＡＤＰが所定の下限値ＮＲＬより小さいか否かを判別する。
【０１９２】
この判別結果がＮＯで、ＵＡＤＰ≧ＮＲＬのときには、ステップ２０２に進み、適応則入力ＵＡＤＰが所定の上限値ＮＲＨより大きいか否かを判別する。この判別結果がＮＯで、ＮＲＬ≦ＵＡＤＰ≦ＮＲＨのときには、ステップ２０３に進み、適応補正項の次回値ＦＬＡＦＡＤＰ（ｋ＋１）を今回値ＦＬＡＦＡＤＰ（ｋ）に設定する。すなわち、適応補正項ＦＬＡＦＡＤＰの値をホールドする。この後、本処理を終了する。
【０１９３】
一方、ステップ２０２の判別結果がＹＥＳで、ＵＡＤＰ＞ＮＲＨのときには、ステップ２０４に進み、適応補正項の次回値ＦＬＡＦＡＤＰ（ｋ＋１）を、今回値ＦＬＡＦＡＤＰ（ｋ）に所定の更新値ＦＬＡＦＤＬＴを加算した値［ＦＬＡＦＡＤＰ（ｋ）＋ＦＬＡＦＤＬＴ］に設定した後、本処理を終了する。
【０１９４】
一方、ステップ２０１の判別結果がＹＥＳで、ＵＡＤＰ＜ＮＲＬのときには、ステップ２０５に進み、適応補正項の次回値ＦＬＡＦＡＤＰ（ｋ＋１）を、今回値ＦＬＡＦＡＤＰ（ｋ）から所定の更新値ＦＬＡＦＤＬＴを減算した値［ＦＬＡＦＡＤＰ（ｋ）−ＦＬＡＦＤＬＴ］に設定した後、本処理を終了する。
【０１９５】
次に、図２８および図２９を参照しながら、以上の各制御処理により空燃比を制御した場合において、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐよりも大きい状態すなわちリッチ側にある状態で、目標空燃比ＫＣＭＤの算出処理がＡＤＳＭ処理からＰＲＩＳＭ処理に切り換わった際の動作について説明する。図２８は、本実施形態の制御装置１により空燃比を制御した場合の動作の一例を示しており、図２９は、比較のために、ＰＲＩＳＭ処理において、前記ステップ７４，７５および前記ステップ１２２，１２３を省略した場合の動作の比較例を示している。なお、両図に示すデータは、理解の容易化のために、（ＦＬＡＦＢＡＳＥ＋ＦＬＡＦＡＤＰ）の値を、値１．０（理論空燃比に相当する当量比の値）に設定した場合のものである。また、両図に示すＮＯｘのデータは、第２触媒装置８ｂの下流側における測定データである。
【０１９６】
まず、図２９に示すように、比較例では、ＡＤＳＭ処理からＰＲＩＳＭ処理に切り換わった際（時刻ｔ２）、その直後に目標空燃比ＫＣＭＤがＡＤＳＭ処理中の値よりもリーン側の値に急激に変動すると同時に、排気ガス中のＮＯｘ排出量が一時的に急増し、触媒装置８ａ，８ｂによるＮＯｘ浄化率が一時的に低下していることが分かる。これに対して、図２８に示す本実施形態の動作例では、ＡＤＳＭ処理からＰＲＩＳＭ処理に切り換わった際（時刻ｔ１）、目標空燃比ＫＣＭＤがＡＤＳＭ処理中の最もリーン側の値よりもリーン側に変動することがないとともに、排気ガス中のＮＯｘ排出量が増大することなく、触媒装置８ａ，８ｂによるＮＯｘ浄化率が良好な状態に保持されていることが分かる。これは、以下の理由による。
【０１９７】
すなわち、前述したように、本実施形態の空燃比制御では、ＡＤＳＭ処理により目標空燃比ＫＣＭＤを算出している場合、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐよりも大きいとき、すなわち予測値ＰＲＥＶＯ２≧０のときには、非線形ゲインＫＲＤＳＭを、ＰＲＥＶＯ２＜０のときよりも小さい値ＫＲＤＳＭＬに設定することで、混合気の空燃比をリーン側に制御する際、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐに緩やかに収束するように制御し、それにより、第１触媒装置８ａ内の触媒の上流側端部が過度にリーン化されるのを回避している。これに対して、ＰＲＩＳＭ処理では、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐに迅速に収束するように、目標空燃比ＫＣＭＤが算出される。
【０１９８】
したがって、比較例のように、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐよりもリッチ側に離れた状態にあるときに、ＡＤＳＭ処理からＰＲＩＳＭ処理に切り換わると、目標空燃比ＫＣＭＤが、ＰＲＩＳＭ処理により、Ｏ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐに迅速に収束するような値、すなわち過度にリーン側の値として算出されることで、第１触媒装置８ａ内の触媒の上流側端部が過度にリーン化されてしまい、その結果、ＮＯｘ浄化率が低下してしまう。
【０１９９】
これに対して、本実施形態の制御装置１では、前記ステップ７４，７５および図２６のステップ１９２により、予測値ＰＲＥＶＯ２の前回値（前回ループでの算出値）の絶対値が所定値ＶＤＳＭＥＮＤ以下であるとき、すなわちＯ２センサ１５の出力Ｖｏｕｔが目標値Ｖｏｐに近づいた状態にあるときに、ＡＤＳＭ処理からＰＲＩＳＭ処理への切り換えが実行されるので、切り換えの前後間における目標空燃比ＫＣＭＤの段差（急激な変化）が抑制される。
【０２００】
これに加えて、前記ステップ１２２において、スライディングモード操作量ＤＫＣＭＤＳＬＤが所定値ＳＬＤＨＯＬＤに設定されることで、ＡＤＳＭ処理からＰＲＩＳＭ処理への切り換え直後の目標空燃比ＫＣＭＤが、過度にリーン側の値にならないように設定される。さらに、ステップ１２３において、適応下限値ＵＳＬＡＬが、所定の初期値ＵＳＬＬＣＲＤに設定されるので、ＡＤＳＭ処理からＰＲＩＳＭ処理への切り換え直後は、ステップ１１３のリミット値算出処理において、スライディングモード操作量ＤＫＣＭＤＳＬＤの制限範囲の下限（すなわちリーン側の限界）を規定する非アイドル運転用の下限値ＵＳＬＡＬＦが、この初期値ＵＳＬＬＣＲＤに設定され、それ以降はこの値に基づいて算出される。それにより、ＡＤＳＭ処理からＰＲＩＳＭ処理への切り換えの初期において、目標空燃比ＫＣＭＤが過度にリーン側に変化しないように制限される。したがって、本実施形態の制御装置１では、比較例と異なり、第１触媒装置８ａ内の触媒の上流側端部が過度にリーン化されるのが回避され、図２８に示すように、触媒装置８ａ，８ｂによるＮＯｘ浄化率が良好な状態に保持される。
【０２０１】
以上のように、本実施形態の制御装置１によれば、予測値ＰＲＥＶＯ２の前回値の絶対値が所定値ＶＤＳＭＥＮＤ以下であるときに、ＡＤＳＭ処理からＰＲＩＳＭ処理への切り換えが実行されるので、切り換えの前後間における目標空燃比ＫＣＭＤの段差を抑制することができる。これに加えて、ＰＲＩＳＭ処理中でないときに、スライディングモード操作量ＤＫＣＭＤＳＬＤが常に所定値ＳＬＤＨＯＬＤに設定され、適応下限値ＵＳＬＡＬが所定の初期値ＵＳＬＬＣＲＤに常に設定されることで、ＡＤＳＭ処理からＰＲＩＳＭ処理への切り換え直後、および切り換えの初期において、目標空燃比ＫＣＭＤを、過度にリーン側の値にならないように制御できる。その結果、第１触媒装置８ａ内の触媒の上流側端部が過度にリーン化されるのを回避でき、触媒装置８ａ，８ｂによるＮＯｘ浄化率を良好な状態に保持できる。
【０２０２】
次に、図３０を参照しながら、第２実施形態の制御装置について説明する。この第２実施形態の制御装置１は、第１実施形態の制御装置１のＤＳＭコントローラ２４に代えて、ＳＤＭコントローラ２９を用いる点のみが異なっている。このＳＤＭコントローラ２９（第１の制御入力算出手段、第１の空燃比算出手段）は、ΣΔ変調アルゴリズムを適用した制御アルゴリズムにより、予測値ＰＲＥＶＯ２（ｋ）に基づいて、制御入力φｏｐ（ｋ）としての目標空燃比ＫＣＭＤ（ｋ）を算出するものである。
【０２０３】
すなわち、同図に示すように、このＳＤＭコントローラ２９では、反転増幅器２９ａにより、参照信号ｒ（ｋ）が、値−１、参照信号用のゲインＧｄおよび予測値ＰＲＥＶＯ２（ｋ）を互いに乗算した信号として生成される。次に、積分器２９ｂにより、参照信号積分値σｄｒ（ｋ）が、遅延素子２９ｃで遅延された参照信号積分値σｄｒ（ｋ−１）と参照信号ｒ（ｋ）との和の信号として生成される。一方、積分器２９ｄにより、ＳＤＭ信号積分値σｄｕｓ（ｋ）が、遅延素子２９ｅで遅延されたＳＤＭ信号積分値σｄｕｓ（ｋ−１）と、遅延素子２９ｊで遅延されたＳＤＭ信号ｕｓ（ｋ−１）との和の信号として生成される。そして、差分器２９ｆにより、参照信号積分値σｄｒ（ｋ）とＳＤＭ信号積分値σｄｕｓ（ｋ）との偏差信号δ（ｋ）が生成される。
【０２０４】
次いで、量子化器２９ｇ（符号関数）により、ＳＤＭ信号ｕｓ（ｋ）が、この偏差信号δ（ｋ）を符号化した値として生成される。そして、増幅器２９ｈにより、増幅ＳＤＭ信号ｕｓ’’（ｋ）がＳＤＭ信号ｕｓ（ｋ）を所定のゲインＦｄで増幅した値として生成され、次に、加算器２９ｉにより、この増幅ＳＤＭ信号ｕｓ’’（ｋ）に基準値ＦＬＡＦＢＡＳＥおよび適応補正項ＦＬＡＦＡＤＰを加算した値として、目標空燃比ＫＣＭＤ（ｋ）が生成される。
【０２０５】
以上のＳＤＭコントローラ２９の制御アルゴリズムは、以下の式（３７）〜（４３）で表される。
ｒ（ｋ）＝−１・Ｇｄ・ＰＲＥＶＯ２（ｋ）　　　　　　　　　　……（３７）
σｄｒ（ｋ）＝σｄｒ（ｋ−１）＋ｒ（ｋ）　　　　　　　　　　　　……（３８）
σｄｕｓ（ｋ）＝σｄｕｓ（ｋ−１）＋ｕｓ（ｋ−１）　　　　　　　　　……（３９）
δ（ｋ）＝σｄｒ（ｋ）−σｄｕｓ（ｋ）　　　　　　　　　　　　……（４０）
ｕｓ（ｋ）＝ｓｇｎ（δ（ｋ））　　　　　　　　　　　　　　　……（４１）
ｕｓ’’（ｋ）＝Ｆｄ・ｕｓ（ｋ）　　　　　　　　　　　　　　　　　……（４２）
ＫＣＭＤ（ｋ）＝ＦＬＡＦＢＡＳＥ＋ＦＬＡＦＡＤＰ＋ｕｓ’’（ｋ）　……（４３）
ここで、Ｆｄはゲインを表す。また、非線形ゲインＧｄの値は、ＰＲＥＶＯ２（ｋ）≧０のときには正の所定値Ｇｄ１（例えば値０．２）に、ＰＲＥＶＯ２（ｋ）＜０のときには所定値Ｇｄ１よりも大きい所定値Ｇｄ２（例えば値２）にそれぞれ設定される。さらに、符号関数ｓｇｎ（δ（ｋ））の値は、δ（ｋ）≧０のときにはｓｇｎ（δ（ｋ））＝１となり、δ（ｋ）＜０のときにはｓｇｎ（δ（ｋ））＝−１となる（なお、δ（ｋ）＝０のときに、ｓｇｎ（δ（ｋ））＝０と設定してもよい）。
【０２０６】
以上のＳＤＭコントローラ２９の制御アルゴリズムにおけるΣΔ変調アルゴリズムの特性は、ΔΣ変調アルゴリズムと同様に、ＳＤＭ信号ｕｓ（ｋ）を、これを制御対象に入力した際、参照信号ｒ（ｋ）が制御対象の出力に再現されるような値として、生成（算出）できるという点にある。すなわち、ＳＤＭコントローラ２９は、前述したＤＳＭコントローラ２４と同様の制御入力としての目標空燃比ＫＣＭＤ（ｋ）を生成できるという特性を備えている。したがって、このＳＤＭコントローラ２９を用いる本実施形態の制御装置１によれば、第１実施形態の制御装置１と同様の効果を得ることができる。なお、ＳＤＭコントローラ２９の具体的なプログラムは図示しないが、ＤＳＭコントローラ２４とほぼ同様に構成される。
【０２０７】
次に、図３１を参照しながら、第３実施形態の制御装置について説明する。この第３実施形態の制御装置１は、第１実施形態の制御装置１のＤＳＭコントローラ２４に代えて、ＤＭコントローラ３０を用いる点のみが異なっている。このＤＭコントローラ３０（第１の制御入力算出手段、第１の空燃比算出手段）は、Δ変調アルゴリズムを適用した制御アルゴリズムにより、予測値ＰＲＥＶＯ２（ｋ）に基づいて、制御入力φｏｐ（ｋ）としての目標空燃比ＫＣＭＤ（ｋ）を算出するものである。
【０２０８】
すなわち、同図に示すように、このＤＭコントローラ３０では、反転増幅器３０ａにより、参照信号ｒ（ｋ）が、値−１、参照信号用のゲインＧｄおよび予測値ＰＲＥＶＯ２（ｋ）を互いに乗算した信号として生成される。一方、積分器３０ｂにより、ＤＭ信号積分値σｄｕｄ（ｋ）が、遅延素子３０ｃで遅延されたＤＭ信号積分値σｄｕｄ（ｋ−１）と、遅延素子３０ｈで遅延されたＤＭ信号ｕｄ（ｋ−１）との和の信号として生成される。そして、差分器３０ｄにより、参照信号ｒ（ｋ）とＤＭ信号積分値σｄｕｄ（ｋ）との偏差信号δ（ｋ）が生成される。
【０２０９】
次いで、量子化器３０ｅ（符号関数）により、ＤＭ信号ｕｄ（ｋ）が、この偏差信号δ（ｋ）を符号化した値として生成される。そして、増幅器３０ｆにより、増幅ＤＭ信号ｕｄ’’（ｋ）がＤＭ信号ｕｄ（ｋ）を所定のゲインＦｄで増幅した値として生成され、次に、加算器３０ｇにより、この増幅ＤＭ信号ｕｄ’’（ｋ）を所定の基準値ＦＬＡＦＢＡＳＥに加算した値として、目標空燃比ＫＣＭＤ（ｋ）が生成される。
【０２１０】
以上のＤＭコントローラ３０の制御アルゴリズムは、以下の式（４４）〜（４９）で表される。
ｒ（ｋ）＝−１・Ｇｄ・ＰＲＥＶＯ２（ｋ）　　　　　　　　　……（４４）
σｄｕｄ（ｋ）＝σｄｕｄ（ｋ−１）＋ｕｄ（ｋ−１）　　　　　　　　　　……（４５）
δ（ｋ）＝ｒ（ｋ）−σｄｕ（ｋ）　　　　　　　　　　　　　　　……（４６）
ｕｄ（ｋ）＝ｓｇｎ（δ（ｋ））　　　　　　　　　　　　　　　……（４７）
ｕｄ’’（ｋ）＝Ｆｄ・ｕｄ（ｋ）　　　　　　　　　　　　　　　　　……（４８）
ＫＣＭＤ（ｋ）＝ＦＬＡＦＢＡＳＥ＋ＦＬＡＦＡＤＰ＋ｕｄ’’（ｋ）　……（４９）
ここで、Ｆｄはゲインを表す。また、非線形ゲインＧｄの値は、ＰＲＥＶＯ２（ｋ）≧０のときには正の所定値Ｇｄ１（例えば値０．２）に、ＰＲＥＶＯ２（ｋ）＜０のときには所定値Ｇｄ１よりも大きい所定値Ｇｄ２（例えば値２）にそれぞれ設定される。さらに、符号関数ｓｇｎ（δ（ｋ））の値は、δ（ｋ）≧０のときにはｓｇｎ（δ（ｋ））＝１となり、δ（ｋ）＜０のときにはｓｇｎ（δ（ｋ））＝−１となる（なお、δ（ｋ）＝０のときに、ｓｇｎ（δ（ｋ））＝０と設定してもよい）。
【０２１１】
以上のＤＭコントローラ３０の制御アルゴリズムすなわちΔ変調アルゴリズムの特性は、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムと同様に、ＤＭ信号ｕｄ（ｋ）を制御対象に入力した際、参照信号ｒ（ｋ）が制御対象の出力に再現されるような値として、ＤＭ信号ｕｄ（ｋ）を生成（算出）できるという点にある。すなわち、ＤＭコントローラ３０は、前述したＤＳＭコントローラ２４およびＳＤＭコントローラ２９と同様の制御入力としての目標空燃比ＫＣＭＤ（ｋ）を生成できるという特性を備えている。したがって、このＤＭコントローラ３０を用いる本実施形態の制御装置１によれば、第１実施形態の制御装置１と同様の効果を得ることができる。なお、ＤＭコントローラ３０の具体的なプログラムは図示しないが、ＤＳＭコントローラ２４とほぼ同様に構成される。
【０２１２】
なお、各実施形態は、本発明の制御装置を車両用の内燃機関３の空燃比を制御するものとして構成した例であるが、本発明はこれに限らず、他の任意の制御対象を制御する制御装置に広く適用可能であることは言うまでもない。例えば、船舶用の内燃機関の空燃比を制御するものとして構成してもよく、他の産業機器を制御するものとして構成してもよい。また、ＡＤＳＭコントローラ２０およびＰＲＩＳＭコントローラ２１を、実施形態のプログラムに代えて、電気回路により構成してもよい。
【０２１３】
【発明の効果】
以上のように、本発明の制御装置によれば、Δ変調アルゴリズム、ΔΣ変調アルゴリズムおよびΣΔ変調アルゴリズムのいずれか１つに基づく制御処理と、応答指定型制御アルゴリズムに基づく制御処理とに切り換えて、制御対象の出力を目標値に収束させるように制御する場合において、２つの制御処理の切り換えの前後間における制御入力の段差を解消でき、それにより、切り換えの際の制御対象の出力の急激な変化を回避できる。
【図面の簡単な説明】
【図１】本発明の第１実施形態に係る制御装置およびこれを適用した内燃機関の概略構成を示す図である。
【図２】劣化状態および未劣化状態の第１触媒装置を用いた場合において、ＬＡＦセンサの出力ＫＡＣＴに対する、両第１触媒装置のＨＣおよびＮＯｘの浄化率と、Ｏ２センサ１５の出力Ｖｏｕｔとをそれぞれ測定した結果の一例を示す図である。
【図３】制御装置のＡＤＳＭコントローラおよびＰＲＩＳＭコントローラの構成を示すブロック図である。
【図４】状態予測器の予測アルゴリズムの数式の一例を示す図である。
【図５】オンボード同定器の同定アルゴリズムの数式の一例を示す図である。
【図６】ΔΣ変調を実行するコントローラおよびこれを備えた制御系の構成を示すブロック図である。
【図７】図６の制御系の制御結果の一例を示すタイミングチャートである。
【図８】ＡＤＳＭコントローラによる適応予測型ΔΣ変調制御の原理を説明するためのタイミングチャートである。
【図９】ＡＤＳＭコントローラのうちのＤＳＭコントローラの構成を示すブロック図である。
【図１０】スライディングモード制御アルゴリズムの数式を示す図である。
【図１１】ＰＲＩＳＭコントローラのスライディングモード制御アルゴリズムの数式を示す図である。
【図１２】内燃機関の燃料噴射制御処理を示すフローチャートである。
【図１３】適応空燃比制御処理を示すフローチャートである。
【図１４】図１３の続きを示すフローチャートである。
【図１５】図１３のステップ２１における発進判定処理を示すフローチャートである。
【図１６】図１３のステップ２５における各種パラメータの算出処理を示すフローチャートである。
【図１７】図１３のステップ２６におけるＡＤＳＭモードフラグＦ＿ＤＳＭＭＯＤＥの設定処理を示すフローチャートである。
【図１８】図１３のステップ３２におけるオンボード同定器の演算処理を示すフローチャートである。
【図１９】図１４のステップ３５の操作量ＵＳＬの算出処理を示すフローチャートである。
【図２０】図１９のステップ９１の予測切換関数σＰＲＥの積算値算出処理を示すフローチャートである。
【図２１】図１４のステップ３８のスライディングモード操作量ＤＫＣＭＤＳＬＤの算出処理を示すフローチャートである。
【図２２】図２１の続きを示すフローチャートである。
【図２３】図２１のステップ１１３のリミット値算出処理を示すフローチャートである。
【図２４】図２３のステップ１４０における適応上下限値のリミット処理値ＵＳＬＡＬＨ，ＵＳＬＡＬＬの算出処理を示すフローチャートである。
【図２５】図１４のステップ３９のΔΣ変調操作量ＤＫＣＭＤＤＳＭの算出処理を示すフローチャートである。
【図２６】図１４のステップ４０の適応目標空燃比ＫＣＭＤＳＬＤの算出処理を示すフローチャートである。
【図２７】図１４のステップ４１の適応補正項ＦＬＡＦＡＤＰの算出処理を示すフローチャートである。
【図２８】本発明の制御装置により空燃比を制御した場合の動作例を示すタイミングチャートである。
【図２９】空燃比制御の動作の比較例を示すタイミングチャートである。
【図３０】第２実施形態に係る制御装置のＳＤＭコントローラの構成を示すブロック図である。
【図３１】第３実施形態に係る制御装置のＤＭコントローラの構成を示すブロック図である。
【符号の説明】
１　　制御装置
２　　ＥＣＵ（偏差算出手段、第１の制御入力算出手段、第２の制御入力算出手段、検出手段、選択手段、切換手段、制限手段、第１の空燃比算出手段、第２の空燃比算出手段、運転状態パラメータ検出手段、空燃比制御手段）
３　　内燃機関
７　　排気管（排気通路）
１１　　吸気管内絶対圧センサ（検出手段、運転状態パラメータ検出手段）
１３　　クランク角センサ（検出手段、運転状態パラメータ検出手段）
１５　　酸素濃度センサ（空燃比センサ）
２２　　状態予測器（偏差算出手段）
２４　　ＤＳＭコントローラ（第１の制御入力算出手段、第１の空燃比算出手段）
２５　　スライディングモードコントローラ（第２の制御入力算出手段、第２の空燃比算出手段）
２９　　ＳＤＭコントローラ（第１の制御入力算出手段、第１の空燃比算出手段）
３０　　ＤＭコントローラ（第１の制御入力算出手段、第１の空燃比算出手段）
Ｖｏｕｔ　酸素濃度センサの出力（制御対象の出力）
Ｖｏｐ　目標値
ＰＲＥＶＯ２　出力偏差の予測値（偏差）
ＫＣＭＤ　目標空燃比（制御入力）
ＶＤＳＭＥＮＤ　所定値（所定の範囲を規定する値）
ＤＫＣＭＤＳＬＤ　スライディングモード操作量（制御入力の一成分）
ＵＳＬＡＬＦ　非アイドル運転用の下限値（スライディングモード操作量ＤＫＣＭＤＳＬＤの制限範囲の下限を規定する値）
【図１】
2004100652.tif 000004
【図２】
2004100652.tif 000005
【図３】
2004100652.tif 000006
【図４】
2004100652.tif 000007
【図５】
2004100652.tif 000008
【図６】
2004100652.tif 000009
【図７】
2004100652.tif 000010
【図８】
2004100652.tif 000011
【図９】
2004100652.tif 000012
【図１０】
2004100652.tif 000013
【図１１】
2004100652.tif 000014
【図１２】
2004100652.tif 000015
【図１３】
2004100652.tif 000016
【図１４】
2004100652.tif 000017
【図１５】
2004100652.tif 000018
【図１６】
2004100652.tif 000019
【図１７】
2004100652.tif 000020
【図１８】
2004100652.tif 000021
【図１９】
2004100652.tif 000022
【図２０】
2004100652.tif 000023
【図２１】
2004100652.tif 000024
【図２２】
2004100652.tif 000025
【図２３】
2004100652.tif 000026
【図２４】
2004100652.tif 000027
【図２５】
2004100652.tif 000028
【図２６】
2004100652.tif 000029
【図２７】
2004100652.tif 000030
【図２８】
2004100652.tif 000031
【図２９】
2004100652.tif 000032
【図３０】
2004100652.tif 000033
【図３１】
2004100652.tif 000034