(57)【要約】【課題】制御対象の個々の現状に合った適切なフィードバックゲインにてフィードバック制御を行うことにより、制御出力のハンチングを効果的に抑制できるようにする。【解決手段】ＦＢ項演算部６３は、制御対象モデルのモデルパラメータに基づいて構築されるレギュレータに対し、所定の評価関数を用いて、ＦＢゲイン（最適フィードバックゲイン）Ｆ（１）〜Ｆ（９）を演算する。そして、制御偏差ｅ（ｉ）に基づき、ＦＢゲインＦ（１）〜Ｆ（９）を用いた状態フィードバック制御則によって、ＦＢ項ｕfb（ｉ）を演算する。評価関数において用いられる、ＦＢ項ｕfb（ｉ）の変動量の重みを決定付ける重み係数Ｒは、重み係数設定部７７により設定される。重み係数設定部７７は、制御出力ｙ（ｉ）のハンチングが検出されると、現在設定している重み係数Ｒを大きくすることで、ＦＢゲインを小さくしてハンチングを抑制する。【選択図】図２
2013221430.tif 000002
【特許請求の範囲】
【請求項１】
制御対象を模擬した制御対象モデルを用いてその制御対象の制御出力が目標値に追従するようにその制御対象へ入力する操作量を状態フィードバック制御する制御方法であって、
前記制御対象モデルのモデルパラメータに基づいて構築されるレギュレータに対し、前記操作量の変動量、および前記目標値と前記制御出力の差分を示す制御偏差がそれぞれ重み付けされて考慮された評価関数を設定して、その評価関数を用いて最適フィードバックゲインを演算し、
前記制御偏差に基づき、前記最適フィードバックゲインを用いた状態フィードバック制御則によって、前記操作量としてのフィードバック操作量を演算し、
前記制御出力のハンチングを検出した場合には、前記評価関数における前記操作量の変動量に対する重みを大きくすることにより前記最適フィードバックゲインを低下させる
ことを特徴とする制御方法。
【請求項２】
制御対象を模擬した制御対象モデルを用いてその制御対象の制御出力が目標値に追従するようにその制御対象へ入力する操作量を状態フィードバック制御する制御装置であって、
前記制御対象モデルのモデルパラメータに基づいて構築されるレギュレータに対し、前記操作量の変動量、および前記目標値と前記制御出力の差分を示す制御偏差がそれぞれ重み付けされて考慮された評価関数を設定して、その評価関数を用いて最適フィードバックゲインを演算するフィードバックゲイン演算手段と、
前記評価関数における、前記操作量の変動量に対する重みを示す重み係数を設定する重み係数設定手段と、
前記制御偏差に基づき、前記フィードバックゲイン演算手段により演算された前記最適フィードバックゲインを用いた状態フィードバック制御則によって、前記操作量としてのフィードバック操作量を演算するフィードバック操作量演算手段と、
前記制御出力のハンチングを検出するハンチング検出手段と、
を備え、
前記ハンチング検出手段により前記ハンチングが検出された場合は、前記重み係数設定手段が前記重み係数を所定量増加させることで、前記最適フィードバックゲインを低下させる
ことを特徴とする制御装置。
【請求項３】
請求項２に記載の制御装置であって、
前記ハンチング検出手段により前記ハンチングが検出されない状態が所定時間継続したか否かを判断するハンチング無検出継続判断手段を備え、
前記重み係数設定手段は、前記ハンチング無検出継続判断手段により前記ハンチングが前記所定時間継続して検出されていないと判断された場合は、前記重み係数を所定量減少させる
ことを特徴とする制御装置。
【請求項４】
請求項２又は請求項３に記載の制御装置であって、
前記目標値に対し、予め設定されたなまし係数を用いてなまし処理を行うことにより、その目標値がなまされたなまし目標値を算出するなまし処理手段と、
前記なまし処理における前記目標値をなます程度を決定付ける前記なまし係数を設定するなまし係数設定手段と、
前記なまし処理手段により算出された前記なまし目標値に基づいて、前記操作量としてのフィードフォワード操作量を演算するフィードフォワード操作量演算手段と、
前記フィードフォワード操作量演算手段により演算された前記フィードフォワード操作量と前記フィードバック操作量演算手段により演算された前記フィードバック操作量とを加算することにより、前記制御対象へ入力する前記操作量を演算する入力操作量演算手段と、
を備え、
前記なまし係数設定手段は、前記ハンチング検出手段により前記ハンチングが検出された場合は、前記なまし係数を、現在設定している値よりも所定量大きい値に再設定する
ことを特徴とする制御装置。
【請求項５】
請求項４に記載の制御装置であって、
前記ハンチング検出手段により前記ハンチングが検出されない状態が所定時間継続したか否かを判断するハンチング無検出継続判断手段を備え、
前記なまし係数設定手段は、前記ハンチング無検出継続判断手段により前記ハンチングが前記所定時間継続して検出されていないと判断された場合は、前記なまし係数を、現在設定している値よりも所定量小さい値に再設定する
ことを特徴とする制御装置。
【請求項６】
請求項４又は請求項５に記載の制御装置であって、
前記フィードバック操作量演算手段は、前記なまし処理手段により算出された前記なまし目標値と前記制御出力とから前記制御偏差を演算し、その制御偏差に基づいて前記フィードバック操作量を演算する
ことを特徴とする制御装置。
【請求項７】
請求項４〜請求項６の何れか１項に記載の制御装置であって、
前記重み係数に対してその上限値を示す重み係数上限値が予め設定されていると共に、前記なまし係数に対してもその上限値を示すなまし係数上限値が予め設定されており、
前記重み係数が前記重み係数上限値に到達したか否かを判断する重み係数上限判断手段と、
前記なまし係数が前記なまし係数上限値に到達したか否かを判断するなまし係数上限判断手段と、
を備え、
前記入力操作量演算手段は、前記重み係数上限判断手段および前記なまし係数上限判断手段のうち少なくとも何れか一方にて、対応する前記上限値に到達したと判断された場合は、少なくとも前記フィードバック操作量を用いない、所定の異常時演算方法にて、前記操作量を演算する
ことを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フィードバック制御により制御対象を制御する機能を備えた制御装置、およびその制御装置で用いられる制御方法に関する。
【背景技術】
【０００２】
従来、フィードバック制御により制御対象を制御する制御方法として、制御対象をモデル化して状態フィードバックにより制御入力（操作量）を算出し、その算出した制御入力に応じた操作を制御対象に加えることにより制御対象を制御する、モデルベースのフィードバック制御が知られている（例えば、特許文献１参照。）。また、このフィードバック制御にフィードフォワード制御を組み合わせた制御方法も知られている（例えば、特許文献２参照。）。
【０００３】
このような従来のフィードバック制御では、制御に用いるフィードバックゲインは予め設計された固定値を用いるのが一般的である。しかし、モデルベース設計であるが故に、モデル化誤差が生じると制御性が不安定となり、これにより制御出力のハンチングが生じてしまう。
【０００４】
なお、モデル化誤差とは、制御対象のばらつきや経年変化などの種々の要因で、制御対象モデルの入出力関係が設計時に想定したモデルから変動することである。例えば車両のエンジンにおいて、排出ガスの空燃比をセンサで検出してその空燃比が目標空燃比に追従するように燃料噴射量を制御するような制御システムでは、モデル化誤差の要因として、センサやアクチュエータ（燃料噴射装置）、エンジン等の経年変化（劣化も含む）、ばらつき、運転条件の差異などが考えられる。
【０００５】
これに対し、特許文献１には、運転条件毎にフィードバックゲインを持つことが記載されている。また、特許文献２には、フィードバックゲインを用いて算出されたフィードバック操作量に対して変動要素を考慮した補正を行うことが記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１３００２０号公報
【特許文献２】特開２００８−２８７５８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１に記載の技術は、モデル化誤差への対応を行うものではないため、ハンチングに対する抑制効果は望み難い。特許文献２に記載の技術は、モデル化誤差への対応としては限定的な手法であり、モデル化誤差への対応（ハンチング抑制）を十分に行うことはできない。
【０００８】
本発明は上記課題に鑑みなされたものであり、制御対象の個々の現状に合った適切なフィードバックゲインにてフィードバック制御を行うことにより、制御出力のハンチングを効果的に抑制できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
上記課題を解決するためになされた請求項１に記載の発明は、制御対象を模擬した制御対象モデルを用いてその制御対象の制御出力が目標値に追従するようにその制御対象へ入力する操作量を状態フィードバック制御する制御方法であって、制御対象モデルのモデルパラメータに基づいて構築されるレギュレータに対し、操作量の変動量、および目標値と制御出力の差分を示す制御偏差がそれぞれ重み付けされて考慮された評価関数を設定して、その評価関数を用いて、最適フィードバックゲインを演算し、制御偏差に基づき、最適フィードバックゲインを用いた状態フィードバック制御則によって、操作量としてのフィードバック操作量を演算する。そして、制御出力のハンチングを検出した場合には、評価関数における操作量の変動量に対する重みを大きくすることにより最適フィードバックゲインを低下させる。
【００１０】
本発明の制御方法によれば、制御対象のモデル化誤差に起因して制御出力のハンチングが生じた場合、評価関数における、操作量の変動量に対する重みが大きくなることによって、最適フィードバックゲインが小さくなり、制御系をより安定化させることができる。そのため、制御対象の個々の現状に合った（モデル化誤差等が考慮された）適切な最適フィードバックゲイン（最適フィードバックゲイン）にてフィードバック制御を行うことができ、制御出力のハンチングを効果的に抑制することができる。
【００１１】
請求項２に記載の発明は、制御対象を模擬した制御対象モデルを用いてその制御対象の制御出力が目標値に追従するようにその制御対象へ入力する操作量を状態フィードバック制御する制御装置であって、制御対象モデルのモデルパラメータに基づいて構築されるレギュレータに対し、操作量の変動量、および目標値と制御出力の差分を示す制御偏差がそれぞれ重み付けされて考慮された評価関数を設定して、その評価関数を用いて、最適フィードバックゲインを演算するフィードバックゲイン演算手段と、評価関数における、操作量の変動量に対する重みを示す重み係数を設定する重み係数設定手段と、制御偏差に基づき、フィードバックゲイン演算手段により演算された最適フィードバックゲインを用いた状態フィードバック制御則によって、操作量としてのフィードバック操作量を演算するフィードバック操作量演算手段と、制御出力のハンチングを検出するハンチング検出手段と、を備える。そして、ハンチング検出手段によりハンチングが検出された場合は、重み係数設定手段が重み係数を所定量増加させることで、最適フィードバックゲインを低下させる。
【００１２】
このように構成された制御装置によれば、上述した本発明の制御方法が実現される。そのため、上述した本発明の制御方法と同様の作用効果が得られる。
請求項３に記載の発明は、請求項２に記載の制御装置であって、ハンチング検出手段によりハンチングが検出されない状態が所定時間継続したか否かを判断するハンチング無検出継続判断手段を備える。そして、重み係数設定手段は、ハンチング無検出継続判断手段によりハンチングが所定時間継続して検出されていないと判断された場合は、重み係数を所定量減少させる。
【００１３】
即ち、ハンチングが検出された場合には最適フィードバックゲインが小さくなる方向に重み係数の再設定を行う一方で、ハンチングの無検出状態が所定時間継続した場合には、逆に最適フィードバックゲインが大きくなる方向に重み係数の再設定を行う。
【００１４】
このように、ハンチングの検出状態に応じて重み係数の再設定を行うことにより最適フィードバックゲインを増減させることで、制御対象の現状に合ったより適切な最適フィードバックゲインにて制御対象を制御することができ、ハンチングの効果的な抑制と制御応答性の向上とを両立させることができる。
【００１５】
請求項４に記載の発明は、請求項２又は請求項３に記載の制御装置であって、目標値に対し、予め設定されたなまし係数を用いてなまし処理を行うことにより、その目標値がなまされたなまし目標値を算出するなまし処理手段と、上記なまし処理における、目標値をなます程度を決定付ける上記なまし係数を設定するなまし係数設定手段と、なまし処理手段により算出されたなまし目標値に基づいて、操作量としてのフィードフォワード操作量を演算するフィードフォワード操作量演算手段と、そのフィードフォワード操作量演算手段により演算されたフィードフォワード操作量とフィードバック操作量演算手段により演算されたフィードバック操作量とを加算することにより、制御対象へ入力する操作量を演算する入力操作量演算手段と、を備える。そして、なまし係数設定手段は、ハンチング検出手段によりハンチングが検出された場合は、なまし係数を、現在設定している値よりも所定量大きい値に再設定する。
【００１６】
即ち、フィードフォワード操作量の演算では、目標値をそのまま用いるのではなく、なまし処理後のなまし目標値を用いる。即ち、なまし処理されたなまし目標値をその演算タイミングでの実質的な目標値（フィードフォワード操作量の算出に用いる目標値。以下「実質目標値」ともいう。）とする。なまし処理とは、目標値の変化を制限すること、即ち、実際の目標値の変化量よりも実質目標値の変化量が小さくなるようにその実質目標値の変化量に制限を設ける処理である。換言すれば、実際の目標値の変化を平滑化してその平滑化された目標値を実質目標値（なまし目標値）とする処理であるとも言える。
【００１７】
このように構成された制御装置では、フィードバック操作量とフィードフォワード操作量が加算されることで操作量が演算される。つまり、フィードバック制御とフィードフォワード制御を備えた制御系が構築されている。そして、フィードフォワード操作量は、目標値に基づいて算出されるものであるが、目標値をそのまま用いるのではなく、目標値をなまし処理したなまし目標値を用いて算出される。そのため、目標値の変化が大きくても（ステップ的に変化しても）フィードフォワード操作量が大きく変化するのが抑えられる。
【００１８】
そして、なましの程度を決定付けるなまし係数を、ハンチングが検出された場合には大きい値に設定する。つまり、ハンチング検出時には目標値をより大きくなまして、目標値の変動を抑えるのである。そのため、フィードバック制御とフィードフォワード制御の双方を備えた制御系において、ハンチングを効果的に抑制することができる。
【００１９】
請求項５に記載の発明は、請求項４に記載の制御装置であって、ハンチング検出手段によりハンチングが検出されない状態が所定時間継続したか否かを判断するハンチング無検出継続判断手段を備え、なまし係数設定手段は、ハンチング無検出継続判断手段によりハンチングが所定時間継続して検出されていないと判断された場合は、なまし係数を、現在設定している値よりも所定量小さい値に再設定する。
【００２０】
このように、ハンチングの検出状態に応じてなまし係数の再設定を行うことにより目標値のなましの程度を増減させることで、制御対象の現状に合ったより適切なフィードフォワード操作量にて制御対象を制御することができ、ハンチングの効果的な抑制と制御出力の目標値への追従性向上とを両立させることができる。
【００２１】
請求項６に記載の発明は、請求項４又は請求項５に記載の制御装置であって、フィードバック操作量演算手段は、なまし処理手段により算出されたなまし目標値と制御出力とから制御偏差を演算し、その制御偏差に基づいてフィードバック操作量を演算する。
【００２２】
つまり、フィードバック操作量を演算する際（詳しくは制御偏差を演算する際）にもなまし目標値を用いるのであり、これにより、目標値が大きく変動しても制御出力を安定的に目標値に追従させることができる。
【００２３】
請求項７に記載の発明は、請求項４〜請求項６の何れか１項に記載の制御装置であって、重み係数に対してその上限値を示す重み係数上限値が予め設定されていると共に、なまし係数に対してもその上限値を示すなまし係数上限値が予め設定されている。また、重み係数が重み係数上限値に到達したか否かを判断する重み係数上限判断手段と、なまし係数がなまし係数上限値に到達したか否かを判断するなまし係数上限判断手段と、を備える。そして、入力操作量演算手段は、重み係数上限判断手段およびなまし係数上限判断手段のうち少なくとも何れか一方にて、対応する上限値に到達したと判断された場合は、少なくともフィードバック操作量を用いない、所定の異常時演算方法にて、操作量を演算する。
【００２４】
ハンチング検出によって重み係数の再設定及びなまし係数の再設定が行われた結果、何れか一方でも、対応する上限値に達したということは、制御系の何らかの異常が考えられる。そこで、そのような場合はフィードバック制御を中止し、例えばフィードフォワード操作量を用いた操作量にて制御対象を制御するなどの対応をすることで、上限到達後も必要最小限の制御は行えるようにすることができる。
【図面の簡単な説明】
【００２５】
【図１】実施形態の車両制御システムの全体構成を表す説明図である。
【図２】実施形態の空燃比制御システムの構成を表す機能ブロック図である。
【図３】実施形態の空燃比制御システムにおけるインジェクタ駆動制御処理を表すフローチャートである。
【図４】図３のインジェクタ駆動制御処理におけるＳ１５０のハンチング検出処理の詳細を表すフローチャートである。
【図５】図３のインジェクタ駆動制御処理におけるＳ２６０のＦＢ項算出処理の詳細を表すフローチャートである。
【図６】図５のＦＢ項算出処理におけるＳ４２０のＦＢゲイン算出処理の詳細を表すフローチャートである。
【図７】モデル化誤差が生じた場合の挙動を表すシミュレーション結果であり、（ａ）は制御対象のゲイン（制御対象モデル）の変動を表し、（ｂ）は目標値ｒ、ＦＢ目標値ｙｒ、および制御量ｙの変動を表し、（ｃ）は操作量ｕｆｉｎａｌの変動を表し、（ｄ）はなまし係数αの変化を表し、（ｅ）は重み係数Ｒの変化を表す。
【図８】外乱が加わった場合の挙動を表すシミュレーション結果であり、（ａ）は制御対象のゲイン（制御対象モデル）の変動を表し、（ｂ）は外乱の印加状態を表し、（ｃ）はＦＢ目標値ｙｒおよび制御量ｙの変動を表し、（ｄ）は操作量ｕｆｉｎａｌの変動を表し、（ｅ）はなまし係数αの変化を表し、（ｆ）は重み係数Ｒの変化を表す。
【発明を実施するための形態】
【００２６】
以下に、本発明の好適な実施形態を図面に基づいて説明する。
図１に示す本実施形態の車両制御システム１は、エンジン１０を制御するものである。この車両制御システム１において、内燃機関であるエンジン１０の制御は、当該システム１が備える電子制御装置（ＥＣＵ）５０が各種処理を実行することにより実現される。以下では、まず、車両制御システム１の全体構成について説明し、その後、ＥＣＵ５０で実行される処理の内容について具体的に説明する。
【００２７】
（１）車両制御システム１の全体構成
図１に示すように、本実施形態の車両制御システム１においては、エンジン１０の吸気管１３の最上流部に、エアクリーナ１５が設けられ、このエアクリーナ１５の下流側に、吸入空気量を検出するエアフローメータ１７が設けられている。また、エアフローメータ１７の下流側には、モータ１９によって開度調整されるスロットルバルブ２０とスロットル開度を検出するスロットル開度センサ２１とが設けられている。
【００２８】
スロットルバルブ２０の下流側には、サージタンク１３ａが設けられており、このサージタンク１３ａには、吸気管圧力を検出する吸気管圧力センサ２３が設けられている。また、サージタンク１３ａには、エンジン１０の各気筒に空気を導入する吸気マニホールド２５が設けられ、各気筒の吸気マニホールド２５の吸気ポート近傍には、燃料を噴射するインジェクタ２７が設けられている。
【００２９】
この他、エンジン１０のシリンダヘッドには、気筒毎に、点火プラグ２９が設けられ、気筒内の混合気は、点火プラグ２９の火花放電によって着火される。この他、エンジン１０が有する吸気バルブ３１及び排気バルブ３２のそれぞれは、可変バルブタイミング調整機構３３，３４によって駆動されるように構成され、本実施形態の車両制御システム１では、エンジン運転状態に応じて、吸気／排気バルブタイミング（ＶＶＴ角度）が調整される。
【００３０】
また、エンジン１０の排気管３５には、排出ガスを浄化する三元触媒等の触媒３７が設けられ、触媒３７の上流側には、排出ガスの空燃比λを検出する空燃比センサ３９が設けられている。この他、エンジン１０のシリンダブロックには、冷却水温を検出する水温センサ４１、及び、エンジン回転速度を検出する回転速度センサ（クランク角センサ）４３が設けられている。
【００３１】
これら各種センサの出力は、ＥＣＵ５０に入力され、ＥＣＵ５０は、これらのセンサ入力に基づき、各種処理を実行する。具体的に、ＥＣＵ５０は、マイクロコンピュータを主体として構成されており、内蔵されたＲＯＭに記録された各種のエンジン制御用プログラムを実行することで、空燃比制御、可変バルブタイミング制御、スロットル開度制御、アイドル回転速度制御等の各種のエンジン制御を実現する。以下、本発明を空燃比制御に適用した例について、より具体的に説明する。
【００３２】
（２）空燃比制御の概要
本実施形態の車両制御システム１では、空燃比λの目標値である目標空燃比λTの逆数１／λTを制御目標（目標値ｒ）として、運転状態に応じて目標値ｒを切り替え、目標値ｒと、空燃比センサ３９で検出された実際の空燃比（実空燃比）λとに基づき（詳しくは実空燃比λの逆数１／λを制御量ｙとしてその制御量ｙとに基づき）、インジェクタ２７の燃料噴射量を調整し、空燃比制御を実現する。具体的に、本実施形態では、フィードフォワード制御系にフィードバック制御系を組み合わせてなる２自由度系の空燃比制御システムにより、空燃比制御を実現する。
【００３３】
本実施形態の空燃比制御システムにおいて、フィードフォワード制御では、目標値ｒと制御対象モデルのモデルパラメータとに基づいて、フィードフォワード操作量、即ち制御則におけるフィードフォワード項（以下「ＦＦ項」という）ｕffを演算する。また、フィードバック制御では、制御対象モデルに状態フィードバック制御則を適用した閉ループ制御モデルを設定して、最適レギュレータを構築することにより、フィードバックゲイン（最適フィードバックゲイン。以下「ＦＢゲイン」と称する。）を算出し、そのＦＢゲインを用いて、制御量ｙが目標値ｒに追従するように、フィードバック操作量、即ち制御則におけるフィードバック項（以下「ＦＢ項」という）ｕfbを演算する。フィードフォワード制御及びフィードバック制御のいずれも、制御対象を模擬した制御対象モデル（インジェクタ２７から空燃比センサ３９までのプラントモデル）を用いたいわゆるモデルベース制御である。そして、これらＦＦ項ｕffとＦＢ項ｕfbを加算したものに更に操作量補正値を加えることで、最終的に制御対象へ入力すべき操作量を演算する。
【００３４】
本実施形態の空燃比制御システムでは、所定周期の演算タイミング毎に、目標値ｒを算出すると共に制御量ｙを取得し、それらをもとにＦＦ項ｕffおよびＦＢ項ｕfbを算出して、これらを用いて最終的にプラントへ入力する操作量ｕｆｉｎａｌを算出する。そして、その算出された操作量ｕｆｉｎａｌに応じた燃料噴射指令がインジェクタ２７に入力されることで、インジェクタ２７からはその操作量ｕｆｉｎａｌに応じた量の燃料が噴射される。
【００３５】
具体的に、本実施形態の空燃比制御システムは、図２に示すような機能ブロック図にて表すことができる。図２の機能ブロック図は、ＥＣＵ５０にて行われる（詳しくはＥＣＵ５０内のマイクロコンピュータがインジェクタ駆動処理（図３参照）を実行することにより実現される）空燃比制御システムとしての機能をブロック図で表現したものである。
【００３６】
即ち、本実施形態の空燃比制御システムは、図２に示すように、目標値ｒ（ｉ）をなまし処理することによりその目標値ｒ（ｉ）がなまされたなまし目標値ｒｆｉｌｔ（ｉ）を算出する目標値なまし処理部６１と、そのなまし目標値ｒｆｉｌｔ（ｉ）に基づいてＦＦ項ｕff（ｉ）を算出するＦＦ項演算部６２と、なまし目標値ｒｆｉｌｔ（ｉ）に基づいてＦＢ項ｕfbを算出するＦＢ項演算部６３と、操作量補正値ｕｏｔｈｅｒ（ｉ）を算出する他補正演算部６４と、ＦＦ項ｕff（ｉ），ＦＢ項ｕfb（ｉ）および操作量補正値ｕｏｔｈｅｒ（ｉ）の三者を加算することで操作量ｕｆｉｎａｌ（ｉ）を算出する操作量演算部６５と、制御対象モデルのモデルパラメータａ1，ｂ1，ｂ2及びむだ時間ｄを設定するモデルパラメータ設定部７５と、目標値なまし処理部６１におけるなまし処理で用いられるなまし係数α（ｉ）を設定するなまし係数設定部７６と、ＦＢ項演算部６３におけるＦＢゲインの算出に用いられる重み係数Ｒを設定する重み係数設定部７７と、制御量ｙ（ｉ）のハンチングを検出するハンチング検出部７８と、を備えた構成となっている。そして、制御対象（プラント）６６においては、入力された操作量ｕｆｉｎａｌに応じた燃料噴射がインジェクタ２７により実行され、その操作量ｕｆｉｎａｌに対して制御出力（制御量）ｙが出力される。
【００３７】
なお、プラントから実際に得られる制御出力は、空燃比センサ３９の計測値である空燃比λであるが、本実施形態の空燃比制御システムでは、その計測された空燃比λの逆数（燃料過剰率）を制御量ｙとしてフィードバック制御に用いている。また、「ｉ」は、離散的に発生する演算タイミングの、ある基準タイミング（例えば制御開始後の最初の演算タイミング）からの累積回数（演算回数）を示すものである。即ち、本実施形態の空燃比制御システムは、演算タイミング毎に各種演算を行うデジタル（離散時間系）の制御システムとして構成されている。
【００３８】
インジェクタ２７から空燃比センサ３９までの制御対象を模擬する制御対象モデルの離散時間系伝達関数Ｈ（ｚ）は、次式（１）のように表すことができる。
【００３９】
【数１】
2013221430.tif 000003
【００４０】
上記式（１）において、ａ1，ｂ1，ｂ2は、制御対象モデルのモデルパラメータを表し、ｄはむだ時間を表す。
このような制御対象モデルで表される制御対象を制御するために、本実施形態では、目標値ｒ及びモデルパラメータａ1，ｂ1，ｂ2を用いてＦＦ項ｕff（ｉ）を演算すると共に、状態フィードバック制御則によりＦＢ項ｕfb（ｉ）を演算する。
【００４１】
モデルパラメータａ1，ｂ1，ｂ2は、モデルパラメータ設定部７５により設定される。本実施形態では、制御対象モデルに基づいて予めモデルパラメータａ1，ｂ1，ｂ2が設定されており、これらがＦＦ項ｕff（ｉ）およびＦＢ項ｕfb（ｉ）の演算に使用される。
【００４２】
また、モデルパラメータ設定部７５には、むだ時間ｄも設定されている。本実施形態の空燃比制御システムでは、ある演算タイミングで算出された目標値ｒ（ｉ）に基づく燃料噴射指令が出力されてからそれが反映された制御量ｙが観測されるまでにはある程度の時間差Ｌがあるため、その時間差Ｌを考慮してむだ時間ｄを設定している。本実施形態のむだ時間ｄは、上記時間差Ｌが演算周期を基準に換算されて整数化（演算周期の整数倍を表す数値化）されたものである。以下の説明では、一例として、むだ時間ｄ＝７である場合を例に挙げて説明する。
【００４３】
なお、モデルパラメータａ1，ｂ1，ｂ2は、所定周期（例えば上記演算周期）ｄｔで動的に設定するようにしてもよい。具体的には、例えば、モデル時定数τと演算周期ｄｔとを用いて、次式（２）〜（４）により算出するようにしてもよい。
【００４４】
【数２】
2013221430.tif 000004
【００４５】
なお、式（３）中のＬ１は、上記時間差Ｌ、むだ時間ｄ、および演算周期ｄｔを用いて、Ｌ１＝Ｌ−ｄ・ｄｔで演算されるものである。モデルパラメータａ1，ｂ1，ｂ2の動的設定のより具体的な方法については、既述の特許文献１，２に詳しく記載されているため、ここではその詳細説明を省略する。
【００４６】
目標値ｒ（ｉ）は、ＥＣＵ５０が有する目標値生成機能により生成されるものである。ＥＣＵ５０は、上記演算タイミング毎に、エンジン回転数やアクセル開度などの各種エンジン状態に応じてマップ等を用いて目標値ｒ（ｉ）を算出する。
【００４７】
目標値なまし処理部６１は、演算タイミング毎に、目標値ｒ（ｉ）に対してなまし処理を行い、その結果（即ち目標値ｒ（ｉ）がなまされた結果）としてのなまし目標値ｒｆｉｌｔ（ｉ）を出力する。なまし処理は、実際の目標値ｒ（ｉ）の変化を平滑化する処理であり、その平滑化された値が、ＦＦ項ｕff（ｉ）及びＦＢ項ｕfb（ｉ）の演算において用いられる目標値（なまし目標値）となる。本実施形態では、演算タイミング毎に、第１なまし処理から第ｊ（ｊは２以上の自然数）なまし処理までｊ回のなまし処理を行って、各回のなまし処理毎に順次、第ｎなまし値ｒn（ｉ）（ｎ＝１〜ｊ）を算出する。
【００４８】
具体的には、次式（５）〜式（７）に至るｊ回の演算により順次なまし処理を実行していく。
【００４９】
【数３】
2013221430.tif 000005
【００５０】
即ち、上記式（５）による最初の第１なまし処理は、今回の演算タイミングで取得した目標値ｒ（ｉ）と前回の演算タイミングで当該第１なまし処理にて算出した第１なまし値ｒ1（ｉ−１）とをなまし係数αにて重み付け加算することにより第１なまし値ｒ1（ｉ）を算出するものである。
【００５１】
第１なまし値ｒ1（ｉ）を算出すると、続いてその第１なまし値ｒ1（ｉ）を用いて上記式（６）による２回目の第２なまし処理を行い、第２なまし値ｒ2（ｉ）を算出する。この第２なまし処理は、式（５）で算出した第１なまし値ｒ1（ｉ）と前回の演算タイミングで当該第２なまし処理にて算出した第２なまし値ｒ2（ｉ−１）とをなまし係数αにて重み付け加算するものである。同様にして、３回目からｊ回目まで、順次なまし処理を繰り返していく。
【００５２】
即ち、２回目以降のｎ回目の第ｎなまし処理では、ｎ−１回目のなまし処理である第ｎ−１なまし処理にて算出した第ｎ−１なまし値ｒn-1（ｉ）と前回の演算タイミングで当該第ｎなまし処理にて算出した第ｎなまし値ｒn（ｉ−１）とをなまし係数αにて重み付け加算することにより第ｎなまし値ｒn（ｉ）を算出する。これにより、最終的に、式上記（７）にて、ｊ回目の第ｊなまし処理が行われ、第ｊなまし値ｒj（ｉ）が算出される。
【００５３】
このようにｊ回のなまし処理を行うことによって最終的に算出された第ｊなまし値ｒj（ｉ）を、下記式（８）のように、なまし目標値ｒｆｉｌｔ（ｉ）とする。
【００５４】
【数４】
2013221430.tif 000006
【００５５】
なまし係数αは、なましの強さ（重み）を決定するものであって、なまし係数設定部７６によって０≦α＜１の範囲内で設定されるものである。このなまし係数αが大きければ大きいほど、なましの効果が大きくなる。なお、なまし処理を行う回数ｊは適宜設定することができる。目標値なまし処理部６１は、演算タイミング毎に、なまし係数設定部７６で設定されているなまし係数αを取得し、そのなまし係数αを今回の演算タイミングでのなまし係数αとしてなまし処理に用いる。
【００５６】
ＦＦ項演算部６２は、目標値なまし処理部６１において今回の演算タイミングで算出されたなまし目標値ｒｆｉｌｔ（ｉ）と前回の演算タイミングで算出されたなまし目標値ｒｆｉｌｔ（ｉ−１）、及びモデルパラメータａ1，ｂ1，ｂ2を用いて、次式（９）によりＦＦ項ｕff（ｉ）を算出する。
【００５７】
【数５】
2013221430.tif 000007
【００５８】
ＦＢ項演算部６３は、目標値なまし処理部６１で算出されたなまし目標値ｒｆｉｌｔ（ｉ）を用いてＦＢ項ｕfb（ｉ）を算出するものであり、ＦＢ目標値算出部７１と、ＦＢゲイン算出部７２と、偏差演算部７３と、ＦＢ項算出部７４とを備えている。
【００５９】
ＦＢ目標値算出部７１は、むだ時間ｄだけ前の演算タイミングでのなまし目標値ｒｆｉｌｔ（ｉ−ｄ）およびむだ時間ｄ＋１だけ前の演算タイミングでのなまし目標値ｒｆｉｌｔ（ｉ−ｄ−１）と、モデルパラメータｂ1，ｂ2と、むだ時間ｄとに基づいて、次式（１０）により、ＦＢ目標値ｙｒ（ｉ）を算出する。
【００６０】
【数６】
2013221430.tif 000008
【００６１】
なお、ＦＢ項の算出に用いるＦＢ目標値ｙｒ（ｉ）を上記式（１０）により算出するのはあくまでも一例であり、むだ時間ｄだけ前のなまし目標値ｒｆｉｌｔ（ｉ−ｄ）をそのままＦＢ目標値ｙｒ（ｉ）としてもよい。
【００６２】
偏差演算部７３は、次式（１１）に示すように、ＦＢ目標値ｙｒ（ｉ）と制御量ｙ（ｉ）との差分である制御偏差ｅ（ｉ）を演算する。
【００６３】
【数７】
2013221430.tif 000009
【００６４】
ＦＢ項算出部７４は、状態フィードバック制御則に基づき、ＦＢゲインＦ（本例ではＦ（１）〜Ｆ（９））を用いてＦＢ項ｕfb（ｉ）を算出する。
一般に、状態フィードバックのＦＢゲインＦ（１）〜Ｆ（９）を用いてＦＢ項ｕfb（ｉ）を算出する場合は、これらＦＢゲインＦ（１）〜Ｆ（９）を用いた多項式演算によりＦＢ項ｕfb（ｉ）を直接算出することが多く、本実施形態でもそのような方法により演算するようにしてもよい。しかし、上記方法では、ＦＢゲインＦ（１）〜Ｆ（９）の変化によってＦＢ項ｕfb（ｉ）が一時的に乱れるおそれがある。
【００６５】
そこで本実施形態では、演算タイミング毎に、ＦＢ項ｕfb（ｉ）の補正値であるＦＢ項補正値Δｕfb（ｉ）を算出する。そして、次式（１２）に示すように、その算出したＦＢ項補正値Δｕfb（ｉ）を前回の演算タイミングで算出したＦＢ項ｕfb（ｉ−１）に加算することで、今回のＦＢ項ｕfb（ｉ）を算出する。
【００６６】
【数８】
2013221430.tif 000010
【００６７】
ここで、ＦＢ項補正値Δｕfb（ｉ）は、状態フィードバック制御則により算出する。具体的には、最適レギュレータを設計し、その最適レギュレータにおけるＦＢゲイン（最適フィードバックゲイン）を用いて算出する。
【００６８】
上記式（１）の伝達関数で表される制御対象モデルを状態方程式で表現すると、ＦＢ項補正値Δｕfbと状態ベクトルＸを用いて、次式（１３）で表される。
【００６９】
【数９】
2013221430.tif 000011
【００７０】
なお、行列Ａ，Ｂは制御対象のシステム行列である。制御対象モデルの状態方程式が上記式（１３）で表されることは、特許文献１，２に詳しく記載されているため、ここではその詳細説明を省略する。
【００７１】
状態ベクトルＸ（ｉ）は、次式（１４）で表すことができる。
【００７２】
【数１０】
2013221430.tif 000012
【００７３】
上記式（１４）において、Δｅ（ｉ）は、次式（１５）に示すように、今回の制御偏差ｅ（ｉ）と前回の制御偏差ｅ（ｉ−１）との差分であり、Δｕfb（ｉ−ｎ）（ただしｎ＝１〜７）は、次式（１６）〜（２２）に示すように、ｎ回前の演算タイミングで算出されたＦＢ項ｕfb（ｉ−ｎ）とｎ＋１回前の演算タイミングで算出されたＦＢ項ｕfb（ｉ−ｎ−１）との差分である。
【００７４】
【数１１】
2013221430.tif 000013
【００７５】
上記式（１３）の状態方程式で表される本実施形態の制御対象モデルに対し、ＦＢ項補正値Δｕfb（ｉ）を算出するために、本実施形態では、ＦＢゲイン算出部７２が、いわゆる最適レギュレータを設計することにより、ＦＢゲインＦを算出する。
【００７６】
最適レギュレータによる制御系設計では、上記式（１３）の状態方程式に対し、次式（２３）の評価関数Ｊが最小になるようにＦＢ項補正値Δｕfb（ｉ）が算出されることになる。
【００７７】
【数１２】
2013221430.tif 000014
【００７８】
なお、上記式（２３）において、ｑ（ｑ≧０），Ｒ（Ｒ＞０）はいずれも重み係数であり、ｑを大きくするということは、目標値ｙｒを重視してそれに制御量ｙを近づけるべく比較的大きくＦＢ項補正値Δｕfb（ｉ）を操作する（ひいてはＦＢ項ｕfb（ｉ）を大きく操作する）ことを意味する。逆に、Ｒを大きくするということは、ＦＢ項補正値Δｕfb（ｉ）の動きを制限する（ひいてはＦＢ項ｕfb（ｉ）の動きを制限する）ことを意味する。そのため、ＦＢ項ｕfb（ｉ）の変動を抑えたい場合は、重み係数Ｒを大きくすればよいことになる。
【００７９】
本実施形態の空燃比制御システムの最も特徴的構成の１つに、制御量ｙのハンチングを検出し、ハンチングを検出したらそのハンチングを抑えるべく、ＦＢ項ｕfb（ｉ）の動きを鈍感にする（抑える）機能がある。その機能を実現すべく、本実施形態では、上記各重み係数ｑ、Ｒのうち、ＦＢ項ｕfb（ｉ）の変動にかかる重み係数Ｒを可変設定できるようにしている。具体的には、ハンチングを検出したら重み係数Ｒを大きくし、逆にハンチングを検出しない状態が継続したら重み係数Ｒを小さくする。
【００８０】
この重み係数Ｒの可変設定を行うのが、重み係数設定部７７である。他方の重み係数ｑは、予め設定された定数であるが、本実施形態では、演算の簡素化のため、ｑ＝１に設定されている。そのため、ｑ＝１の場合は上記評価関数Ｊは次式（２４）のように表すことができる。
【００８１】
【数１３】
2013221430.tif 000015
【００８２】
最適レギュレータによる制御系設計を適用すると、上記式（２４）の評価関数Ｊを最小にするＦＢ項補正値Δｕfb（ｉ）は、次式（２５）で表される。
【００８３】
【数１４】
2013221430.tif 000016
【００８４】
なお、ＦはＦＢゲイン（最適フィードバックゲイン）であり、次式（２６）で表される。
【００８５】
【数１５】
2013221430.tif 000017
【００８６】
上記式（２６）において、行列Ｐは、次式（２７）のリカッチ方程式の解である。
【００８７】
【数１６】
2013221430.tif 000018
【００８８】
なお、式（２７）において、Ｑは、次式（２８）に示すように、他方の重み係数ｑ（本例ではｑ＝１）を含む重み行列である。
【００８９】
【数１７】
2013221430.tif 000019
【００９０】
リカッチ方程式の解法は種々知られているが、本実施形態では、次式（２９）のように、式（２７）の左辺のＰをＰnとおき、同式の右辺のＰをＰn-1とおく。
【００９１】
【数１８】
2013221430.tif 000020
【００９２】
そして、ＰnとＰn-1との差が０に近づくまで、次式（３０）〜（３３）に示すように、上記式（２９）の演算をｋ回（ｎ＝１〜ｋ。例えば１００回以上。）繰り返し、その結果得られたＰkを、次式（３４）に示すように求めるべきＰとする。
【００９３】
【数１９】
2013221430.tif 000021
【００９４】
なお、式（３０）右辺の初期値Ｐ0は、正方零行列である。また、ＰnとＰn-1との差が０に近づくように、とは、行列Ｐnと行列Ｐn-1の各成分の差がそれぞれ０に近づくように、との意味である。
【００９５】
このようにして式（２７）のリカッチ方程式を解いて行列Ｐを求めることで、式（２６）のＦＢゲインＦが得られる。そして、その得られたＦＢゲインＦを式（２５）に適用すれば、次式（３５）のように、ＦＢ項補正値Δｕfb（ｉ）を算出することができる。
【００９６】
【数２０】
2013221430.tif 000022
【００９７】
ＦＢゲイン算出部７２は、演算タイミング毎に、重み係数設定部７７で設定されている重み係数Ｒおよびモデルパラメータ設定部７５で設定されているモデルパラメータａ1，ｂ1，ｂ2を取得する。そして、その取得した重み係数Ｒとモデルパラメータａ1，ｂ1，ｂ2、さらに予め定められている重み行列Ｑを用いて、上記式（３０）〜（３４）のようにリカッチ方程式を解いて、行列Ｐを求める。そして、その得られたＰを式（２６）に適用することで、ＦＢゲインＦを求める。
【００９８】
このようにしてＦＢゲイン算出部７２により算出されたＦＢゲインＦが、ＦＢ項算出部７４において、式（３５）によるＦＢ項補正値Δｕfb（ｉ）の算出に用いられる。
ハンチング検出部７８は、演算タイミング毎に、制御量ｙ（ｉ）のハンチングの有無を判断し、その判断結果をなまし係数設定部７６及び重み係数設定部７７に出力する。ハンチング検出の具体的方法については後で図３を用いて説明する。
【００９９】
なまし係数設定部７６は、目標値なまし処理部６１が目標値ｒ（ｉ）をなまし処理する際に用いるなまし係数αを設定する。具体的には、なまし係数αの初期値を０≦α＜１の範囲内の適当な値（例えば０．５）に予め設定しておく。これにより、目標値なまし処理部６１は、少なくとも制御開始時にはその初期値を用いてなまし処理を行う。
【０１００】
そして、ハンチング検出部７８にてハンチングが検出される毎に、なまし係数αを、現在の値（前回演算タイミング時の値）から所定量ＣPαだけ増加させることで、なましの程度をより高めるようにしている。
【０１０１】
また、なまし係数設定部７６は、ハンチングが検出されない状態が所定時間継続したかどうかも判断し、ハンチングが検出されない状態が所定時間継続した場合には、なまし係数αを、現在の値から所定量ＣMαだけ減少させることで、なましの程度を低減するようにしている。
【０１０２】
重み係数設定部７７は、ＦＢゲイン算出部７２がＦＢゲインＦ（Ｆ（１）〜Ｆ（９））を算出する際に用いる重み係数Ｒを設定する。具体的には、まず重み係数Ｒの初期値を、所定の値（例えばＲ＝１）に予め設定しておき、制御開始時にはその初期値を用いて制御を実行させる。
【０１０３】
そして、ハンチング検出部７８にてハンチングが検出される毎に、重み係数Ｒを、現在の値に所定の乗算係数ＣMRを乗じることで大きくする。これにより、ＦＢゲインを小さくさせ、ＦＢ項補正値Δｕfb（ｉ）の変動を抑えることで、ハンチングの抑制（制御出力の安定化）を図っている。
【０１０４】
また、重み係数設定部７７は、ハンチングが検出されない状態が所定時間継続したかどうかも判断し、ハンチングが検出されない状態が所定時間継続した場合には、重み係数Ｒを、現在の値を所定の除算係数ＣDRで除算することで小さくする。これにより、ＦＢゲインを大きくして制御応答性を高めるようにしている。
【０１０５】
なお、乗算係数ＣMR及び除算係数ＣDRはいずれも１より大きい実数である。また、ハンチング検出時になまし係数αを増減させる量（ＣPα，ＣMα）や、重み係数Ｒを増減させる際の乗算係数ＣMR及び除算係数ＣDRは、それぞれ個別に設定することができる。
【０１０６】
他補正演算部６４は、上記ＦＦ項ｕff（ｉ）及びＦＢ項ｕfb（ｉ）に対する各種の補正を行うものであり、例えばエンジンの冷却水温や車両の加速状態等に基づく所定の演算によって、操作量補正値ｕｏｔｈｅｒ（ｉ）を算出する。
【０１０７】
操作量演算部６５は、ＦＦ項演算部６２にて算出されたＦＦ項ｕff（ｉ）、ＦＢ項演算部６３にて算出されたＦＢ項ｕfb（ｉ）、および他補正演算部６４にて算出された操作量補正値ｕｏｔｈｅｒ（ｉ）を加算して、操作量ｕｆｉｎａｌ（ｉ）を算出する。
【０１０８】
（３）インジェクタ駆動制御処理の説明
次に、上述した図２の空燃比制御システムの機能を実現すべくＥＣＵ５０が実行するインジェクタ駆動制御処理について、図３を用いて説明する。なお、以下の説明では、説明の簡素化のために、目標値ｒ（ｉ）のなまし処理は２回行う場合（つまりｊ＝２）を例に挙げて説明する。
【０１０９】
ＥＣＵ５０のマイクロコンピュータは、演算タイミング毎にこのインジェクタ駆動制御処理を開始すると、まずＳ１１０にて、エンジン状態より目標値ｒ（ｉ）を算出する。なお、ここで算出する目標値ｒ（ｉ）は、目標空燃比λＴ（ｉ）の逆数である。
【０１１０】
Ｓ１２０では、制御対象モデルのモデルパラメータを読み出す。具体的には、予め設定されている各モデルパラメータａ1，ｂ1，ｂ2およびむだ時間ｄを読み出す。これらは、既述の通り図２に示したモデルパラメータ設定部７５により設定されるものである。
【０１１１】
Ｓ１３０では、空燃比センサ３９の計測値である実空燃比λ（ｉ）を読み出す。そしてＳ１４０にて、その読み出した実空燃比λ（ｉ）の逆数を制御量ｙ（ｉ）とし、Ｓ１５０にて、ハンチング検出処理を行う。このハンチング検出処理は、図２に示したハンチング検出部７８としての機能を実現する処理である。
【０１１２】
Ｓ１５０のハンチング検出処理の詳細は、図４に示す通りである。即ち、まずＳ３１０にて、制御量ｙ（ｉ）のハイパスフィルタ処理を行う。具体的には、次式（３６）の演算を行うことにより、低周波成分が除去された制御量であるフィルタ処理制御量ｙHP（ｉ）を算出する。
【０１１３】
【数２１】
2013221430.tif 000023
【０１１４】
なお、このように制御量ｙ（ｉ）をハイパスフィルタ処理することは必須ではなく、制御量ｙ（ｉ）をそのまま用いてＳ３２０以降の処理を行ってもよい。しかし、ハンチングの誤検出を防止して検出精度を高めるためには、ハイパスフィルタ処理を行って不要な成分を除去するのが望ましい。
【０１１５】
ハイパスフィルタ処理後、Ｓ３２０にて、そのフィルタ処理制御量ｙHP（ｉ）が正の第１閾値以上であるか否かを判断する。第１閾値は、ハンチング検出に対して要求される検出感度に応じて適宜設定することができ、本例では例えば０．００５に設定されている。
【０１１６】
Ｓ３２０にてフィルタ処理制御量ｙHP（ｉ）が第１閾値以上であると判断された場合は、Ｓ３３０で判定フラグｓを１にセットして、Ｓ３６０に進む。
Ｓ３２０にてフィルタ処理制御量ｙHP（ｉ）が第１閾値以上と判断されなかった場合は、Ｓ３４０にて、フィルタ処理制御量ｙHP（ｉ）が負の第２閾値以下であるか否かを判断する。第２閾値も、ハンチング検出に対して要求される検出感度に応じて適宜設定することができ、本例では例えば−０．００５に設定されている。
【０１１７】
Ｓ３４０にてフィルタ処理制御量ｙHP（ｉ）が第２閾値以下であると判断された場合は、Ｓ３５０で判定フラグｓを０にセットして、Ｓ３６０に進む。Ｓ３４０にてフィルタ処理制御量ｙHP（ｉ）が第２閾値以下と判断されなかった場合は、そのまま（つまり判定フラグは現状のままとして）Ｓ３６０に進む。
【０１１８】
Ｓ３６０では、所定時間（例えば１秒）内における、判定フラグｓの反転回数ｃｓを更新する。反転回数ｃｓは、初期値は０に設定されており、制御開始後、所定時間（本例では１秒）毎に０にクリアされるものである。そして、演算タイミング毎に、前回の演算タイミングにおいてＳ３６０に進んだときの判定フラグｓと、今回の演算タイミングにおいてＳ３６０に進んだときの判定フラグｓとを比較して、判定フラグが反転している場合には、反転回数ｃｓを１インクリメントする。そのため、１秒の間に、フィルタ処理制御量ｙHP（ｉ）が第１閾値以上への増加と第２閾値以下への減少が繰り返されると、それに応じて反転回数ｃｓが増加していくことになる。
【０１１９】
そして、Ｓ３７０で、反転回数ｃｓが反転回数閾値以上であるか否かを判断する。この反転回数閾値も、ハンチング検出に対して要求される検出感度に応じて適宜設定することができ、本例では例えば２回に設定されている。
【０１２０】
Ｓ３７０にて反転回数ｃｓが反転回数閾値以上であると判断された場合は、Ｓ３８０に進み、ハンチング有との判定、即ちハンチングが発生しているとの判定がなされる。一方、Ｓ３７０にて反転回数ｃｓが反転回数閾値以上と判断されなかった場合は、Ｓ３９０に進み、ハンチング無との判定、即ちハンチングは発生していないとの判定がなされる。
【０１２１】
このようにしてハンチング検出処理（ハンチング有無の判断）を行った後は、Ｓ１６０（図３）に進み、ハンチングが検出されたか否か（即ちＳ１５０のハンチング検出処理にてハンチング有との判定がなされたか否か）を判断する。そして、ハンチングが検出された場合は、Ｓ１７０に進み、次式（３７），（３８）に示すように、なまし係数α及び重み係数Ｒをそれぞれ増加させて、Ｓ２００に進む。つまり、なまし係数αについてはより大きくすることでなましの効果を高め、重み係数Ｒについてもより大きくすることでＦＢゲインを小さくしてＦＢ項ｕfb（ｉ）の動きを鈍化させ、これによりハンチングの抑制を図るのである。
【０１２２】
【数２２】
2013221430.tif 000024
【０１２３】
一方、Ｓ１６０にてハンチングが検出されていないと判断された場合（即ちＳ１５０のハンチング検出処理にてハンチング無との判定がなされた場合）は、Ｓ１８０に進み、ハンチング無と判定されている状態が所定時間継続しているか否かを判断する。この所定時間も適宜設定することができる。
【０１２４】
そして、ハンチング無と判定されている状態が所定時間継続していない間は、Ｓ２４０に進むが、ハンチング無と判定されている状態が所定時間継続した場合は、Ｓ１９０に進み、次式（３９），（４０）に示すように、なまし係数α及び重み係数Ｒをそれぞれ減少させて、Ｓ２００に進む。つまり、なまし係数αについてはより小さくすることでなましの効果を低くし、重み係数Ｒについてもより小さくすることでＦＢゲインを大きくし、これにより制御応答性を高めるのである。
【０１２５】
【数２３】
2013221430.tif 000025
【０１２６】
このＳ１８０の判定は、詳しくは上記の所定時間毎に行われる。即ち、所定時間前の演算タイミングであるｉ−ｍ回前の演算タイミングから、所定時間経過後の今回のｉ回目の演算タイミングまでの間に、継続してハンチング無と判定されている場合に、Ｓ１８０で肯定判定される。その後再び、今回のｉ回目の演算タイミングから、所定時間経過後のｉ＋ｍ回目の演算タイミングまでの期間において、継続してハンチング無と判定されているか否かを判断する。
【０１２７】
或いは、ハンチング無との判定が所定時間継続した以後、ハンチング有と判定されるまでは、演算タイミング毎にＳ１８０で肯定判定してＳ１９０の処理を行うようにしてもよい。
【０１２８】
Ｓ２００では、Ｓ１７０で増加されたか又はＳ１９０で減少されたなまし係数α及び重み係数Ｒについて、ガード処理を行う。即ち、なまし係数αについては、次式（４１）に示すようななまし係数下限値Ｍｉｎα〜なまし係数上限値Ｍａｘαの範囲内にあるか否かを判断する。
【０１２９】
【数２４】
2013221430.tif 000026
【０１３０】
そして、なまし係数下限値Ｍｉｎαより小さくなっている場合には、なまし係数αをそのなまし係数下限値Ｍｉｎαに設定し、逆になまし係数上限値Ｍａｘαより大きくなっている場合には、なまし係数αをそのなまし係数上限値Ｍａｘαに設定する。
【０１３１】
同様に、重み係数Ｒについても、次式（４２）に示すような重み係数下限値ＭｉｎＲ〜重み係数上限値ＭａｘＲの範囲内にあるか否かを判断する。
【０１３２】
【数２５】
2013221430.tif 000027
【０１３３】
そして、重み係数下限値ＭｉｎＲより小さくなっている場合には、重み係数Ｒをその重み係数下限値ＭｉｎＲに設定し、逆に重み係数上限値ＭａｘＲより大きくなっている場合には、重み係数Ｒをその重み係数上限値ＭａｘＲに設定する。
【０１３４】
Ｓ２００によるガード処理後、Ｓ２１０にて、なまし係数αおよび重み係数Ｒのうち何れか一方でも上限値に達しているか否かを判断する。即ち、なまし係数αについてはなまし係数上限値Ｍａｘαに設定されているか否か、重み係数Ｒについては重み係数上限値ＭａｘＲに設定されているか否かを判断する。
【０１３５】
そして、何れか一方でも上限値に設定されている場合には、Ｓ２２０にて、燃料系が異常である旨（即ち空燃比制御システムに何らかの異常が生じている旨）の判定を行い、例えば車両のドライバーに対して退避走行を促すなどの所定の異常時処理を行う。そして、続くＳ２３０にて、当該空燃比制御システムにおいてフィードバック制御を禁止する。即ち、ＦＢ項ｕfb（ｉ）を用いない所定の異常時演算方法（例えばＦＦ項ｕff（ｉ）と操作量補正値ｕｏｔｈｅｒ（ｉ）とを加算したものを操作量ｕｆｉｎａｌ（ｉ）とする演算方法等）によって、操作量ｕｆｉｎａｌ（ｉ）を演算する。これにより、異常時においても退避走行を可能としつつ、ドライバーに対して異常の早期認識及び異常に対する適切且つ迅速な対応を促すようにしている。
【０１３６】
一方、Ｓ２１０にて、なまし係数α及び重み係数Ｒのいずれも上限値に設定されていない場合は、Ｓ２４０に進む。Ｓ２４０では、目標値ｒ（ｉ）のなまし処理を行う。具体的には、次式（４３），（４４）により２回のなまし処理を行う。
【０１３７】
【数２６】
2013221430.tif 000028
【０１３８】
そして、その２回のなまし処理の結果を、次式（４５）に示すように、なまし目標値ｒｆｉｌｔ（ｉ）として算出する。
【０１３９】
【数２７】
2013221430.tif 000029
【０１４０】
目標値ｒ（ｉ）のなまし処理後、Ｓ２５０にて、ＦＦ項ｕff（ｉ）を算出する。具体的には、既述の式（９）により算出する。
ＦＦ項ｕff（ｉ）を算出した後は、Ｓ２６０にて、ＦＢ項算出処理を実行する。Ｓ２６０のＦＢ項算出処理の詳細は、図５に示す通りである。即ち、まずＳ４１０にて、ＦＢ目標値ｙｒ（ｉ）を算出する。具体的には、既述の式（１０）により算出する。
【０１４１】
Ｓ４２０では、ＦＢゲイン算出処理を行う。このＦＢゲイン算出処理の詳細は図６に示す通りであり、まずＳ５１０にて制御対象のシステム行列Ａ，Ｂを設定し、Ｓ５２０で重み行列Ｑを設定する。本実施形態のシステム行列Ａ，Ｂは、式（１３）に示した通りであり、重み行列Ｑは、式（２８）に示した通りである（本例ではｑ＝１）。
【０１４２】
そして、Ｓ５３０で、現在設定されている重み係数Ｒを読み出す。そして、その読み出した重み係数Ｒと、システム行列Ａ，Ｂと、重み行列Ｑとを用いて、リカッチ方程式（式（２７）を設定し、これを解く。
【０１４３】
具体的には、式（２９）〜（３４）を用いて説明した通りであり、まずＳ５４０にて、演算回数ｎを初期値ｎ＝１に設定し、行列Ｐの初期値Ｐ0を初期値（９行９列の零行列）に設定する。なお、行列Ｐおよびシステム行列Ａが９行９列の行列であり、システム行列ＢおよびＦＢゲインＦが１行９列の行列となっているのは、本実施形態においてむだ時間ｄがｄ＝７に設定されているからである。
【０１４４】
そして、Ｓ５５０にて、上記式（２９）に示した繰り返し演算式にて、行列Ｐnを演算し、Ｓ５６０にて、収束判定を行う。具体的には、Ｓ５５０で演算した行列Ｐnと、前回演算タイミングにおいてＳ５５０で演算した行列Ｐn-1（ｎ＝１の場合は初期値Ｐ0）との差の絶対値（以下「行列偏差絶対値」ともいう）が０．０１より小さいか又は演算回数ｎが１００以上であるかを判断する。なお、行列偏差絶対値が０．０１より小さいか否かの判断は、具体的には、Ｐn−Ｐn-1の各成分の絶対値が全て０．０１より小さいか否かにより行う。Ｐn−Ｐn-1の各成分のうち絶対値が０．０１以上の成分が１つでもあれば、全体として行列偏差絶対値はまだ０．０１以上であると判断し、逆に、全ての成分の絶対値が０．０１より小さい場合は、全体として行列偏差絶対値は０．０１より小さいと判断する。
【０１４５】
行列偏差絶対値がまだ０．０１以上であり、且つ、演算回数ｎも１００未満である場合は、まだ収束に至っていないとして、Ｓ５９０で演算回数ｎを１つインクリメントして、Ｓ５６０に戻る。
【０１４６】
一方、Ｓ５６０で、行列偏差絶対値が０．０１より小さくなっているか、又は演算回数ｎが１００以上になっている場合には、収束したものと判定する。つまり、この時点でリカッチ方程式が解かれたこととなる。そこで、Ｓ５７０にて、この時点の行列Ｐnをリカッチ方程式の解Ｐとして設定する。そして、Ｓ５８０にて、上記のように得られた行列Ｐを用いて、上記式（２６）により、ＦＢゲインＦを演算する。このＳ５８０の演算により、ＦＢゲインＦの各成分Ｆ（１）〜Ｆ（９）（式（２５）参照）が得られたことになる。
【０１４７】
このようにしてＦＢゲインＦを算出すると、Ｓ４３０（図５）にて、ＦＢ項ｕfb（ｉ）の算出（詳しくはＦＢ項補正値Δｕfb（ｉ）の算出）に用いる各変数ｅ（ｉ），Δｅ（ｉ），Δｕfb（ｉ−ｎ）をそれぞれ、既述の式（１１），式（１５）〜（２２）を用いて算出する。
【０１４８】
そして、Ｓ４４０にて、それら算出した各変数を用いて、既述の式（３５）によりＦＢ項補正値Δｕfb（ｉ）を算出し、さらにそのＦＢ項補正値Δｕfb（ｉ）を用いて、既述の式（１２）によりＦＢ項ｕfb（ｉ）を算出する。このようにしてＦＢ項ｕfb（ｉ）を算出した後は、Ｓ２７０（図３）に進み、操作量補正値ｕｏｔｈｅｒ（ｉ）を算出する。
【０１４９】
そして、Ｓ２８０にて、次式（４６）により操作量ｕｆｉｎａｌ（ｉ）を算出し、その算出した操作量ｕｆｉｎａｌ（ｉ）に基づく燃料噴射指令をインジェクタ２７に出力することで、インジェクタ２７を駆動する。
【０１５０】
【数２８】
2013221430.tif 000030
【０１５１】
（４）実施形態の効果等
以上説明した本実施形態の車両制御システム１によれば、制御対象のモデル化誤差に起因して制御量ｙ（ｉ）のハンチングが生じた場合、重み係数Ｒが再設定されることによりＦＢゲインＦ（１）〜Ｆ（９）が小さくなり、ＦＢ項ｕfbの変動が緩やかになる。これにより、制御系をより安定化させることができる。そのため、制御対象の個々の現状に合った（モデル化誤差等が考慮された）適切なＦＢゲインにてフィードバック制御を行うことができ、制御量ｙ（ｉ）のハンチングを効果的に抑制することができる。
【０１５２】
また、重み係数Ｒの再設定は、具体的には、ハンチングが検出される度に、現在の重み係数Ｒに所定量ＣMRを乗じることで、重み係数Ｒを徐々に大きくするようにしている。ハンチングに対する重み係数Ｒの再設定をこのように行うことで、簡素な構成ながらハンチングの抑制を適切且つ確実に行うことができる。
【０１５３】
また、重み係数Ｒの再設定は、ハンチングが検出される度に所定量を乗じて増加させるだけでなく、ハンチングが検出されない状態が所定時間継続した場合には現在の重み係数Ｒを所定量ＣDRで除算することで減少させるようにしている。即ち、ハンチングが検出された場合にはＦＢゲインが小さくなるように重み係数Ｒの再設定を行う一方で、ハンチングの無検出状態が所定時間継続した場合には、逆にＦＢゲインが大きくなるように重み係数Ｒの再設定を行うのである。
【０１５４】
このように、ハンチングの検出状態に応じて重み係数Ｒを増減してＦＢゲインを増減させることで、制御対象の現状に合ったより適切なフィードバックゲインにて制御対象を制御することができ、ハンチングの効果的な抑制と制御応答性の向上とを両立させることができる。
【０１５５】
また、本実施形態では、フィードバック制御に目標値ｒ（ｉ）をそのまま用いず、目標値ｒ（ｉ）をなまし処理したなまし目標値ｒｆｉｌｔ（ｉ）を用いてフィードバック制御を行うようにしている。そのため、目標値ｒ（ｉ）の変化が大きくても（ステップ的に変化しても）、フィードバック制御に用いる目標値の変動を抑えることができ、これによりＦＢ項ｕfb（ｉ）の変動も抑えることができ、ひいては制御量ｙ（ｉ）の変動を抑えることができる。つまり、目標値としてなまし目標値ｒｆｉｌｔ（ｉ）を用いることで、ハンチングの抑制効果が得られる。
【０１５６】
また、本実施形態では、フィードバック制御だけでなくフィードフォワード制御も組み合わせた制御システムにて空燃比制御を行っている。そして、そのフィードフォワード制御においても、なまし目標値ｒｆｉｌｔ（ｉ）を用いてＦＦ項ｕff（ｉ）を算出している。そのため、ＦＦ項ｕff（ｉ）についても、目標値ｒ（ｉ）の変化が大きくてもその変動を抑えることができ、その分、ハンチングを抑制することができる。
【０１５７】
また、目標値ｒ（ｉ）をなまし処理する際に用いるなまし係数αは、重み係数Ｒと同様、制御量ｙ（ｉ）のハンチング検出状態に応じて増減される。そのため、フィードバック制御とフィードフォワード制御の双方を備えた制御系において、ハンチングをより効果的に抑制することができる。
【０１５８】
ここで、本実施形態の効果のうち、特になまし係数αおよび重み係数Ｒを再設定することによりハンチングを抑制できることの具体例について、図７、図８のシミュレーション結果を用いて説明する。
【０１５９】
まず図７は、制御対象のモデル化誤差が生じた場合の挙動を示すものであり、図７（ａ）に示すように、制御対象において時刻６秒から１５秒過ぎごろまでモデル化誤差を与える。目標値ｒは、図７（ｂ）に示すように、所定周期でステップ的に変化させている。
【０１６０】
モデル化誤差が生じていない間、及びモデル化誤差が小さい間は、図７（ｂ）に示すように、制御量ｙは目標値ｒ（ＦＢ目標値ｙｒ）に追従している。しかし、モデル化誤差が大きくなると、それに応じて図７（ｃ）に示すように操作量ｕｆｉｎａｌが大きく変動するようになり、図７（ｂ）に示すように制御量ｙも大きく変動するようになる。これにより、時刻１２秒頃にハンチングが検出される。
【０１６１】
ハンチングが検出されると、図７（ｄ），（ｅ）に示すように、なまし係数αおよび重み係数Ｒはいずれも、図３のＳ１７０の処理によって増加する。なお、図７（ｅ）に示す重み係数Ｒは、図面上は変化していないように見えるが、実際には、時刻１２秒頃に若干増加している。時刻２２秒頃にまたなまし係数αおよび重み係数Ｒが増加する。このように各係数α，Ｒが調整されることで、ハンチングが収まる。
【０１６２】
次に、図８は、外乱に対する補償挙動を示している。具体的には、図８（ａ）に示すように時刻６秒から１５秒過ぎごろまで制御対象を変動させることでモデル化誤差を発生させ、それと並行して、図８（ｂ）に示すように、０．１の外乱（例えば、パージ）をパルス的に加えた場合の挙動である。本例でも、外乱によって、図８（ｃ），（ｄ）に示すように、操作量ｕｆｉｎａｌおよび制御量ｙが変動し、ハンチングが生じている。これに対し、図８（ｅ），（ｆ）に示すようになまし係数αおよび重み係数Ｒが適切に設定されることで、外乱に対する挙動（ハンチング）が抑制されている。
【０１６３】
そして、本発明を空燃比制御システムに適用することで、モデル化誤差が発生する場合でも、制御量（空燃比）を目標値に追従させる事が可能となり、運転性能、排気ガス浄化性能が向上する。
【０１６４】
なお、本実施形態において、  重み係数設定部７７は本発明の重み係数設定手段および重み係数上限判断手段に相当し、ＦＢゲイン算出部７２は本発明のフィードバックゲイン演算手段に相当し、偏差演算部７３およびＦＢ項算出部７４は本発明のフィードバック操作量演算手段に相当し、ハンチング検出部７８は本発明のハンチング検出手段およびハンチング無検出継続判断手段に相当し、目標値なまし処理部６１は本発明のなまし処理手段に相当し、なまし係数設定部７６は本発明のなまし係数設定手段およびなまし係数上限判断手段に相当し、ＦＦ項演算部６２は本発明のフィードフォワード操作量演算手段に相当し、操作量演算部６５は本発明の入力操作量演算手段に相当する。
【０１６５】
［変形例］
以上、本発明の実施の形態について説明したが、本発明の実施の形態は、上記実施形態に何ら限定されるものではなく、本発明の技術的範囲に属する限り種々の形態を採り得ることはいうまでもない。
【０１６６】
例えば、上記実施形態では、ハンチングの検出方法として図４のフローチャートを例示したが、図４に示したハンチング検出方法はあくまでも一例であり、他の方法にて検出するようにしてもよい。
【０１６７】
重み係数Ｒを増加させる際に用いる乗算係数ＣMRおよび重み係数Ｒを減少させる際に用いる除算係数ＣDRは、適宜決めることができる。また、重み係数Ｒの増減を、これら乗算係数ＣMR又は除算係数ＣDRを用いて乗算又は除算により行うことはあくまでも一例であり、例えば増加させる際には所定量加算することで増加させ、逆に減少させる際には所定量減算することで減少させるようにしてもよい。即ち、ハンチング検出時に重み係数Ｒをどのような演算によってどの程度増加させるか、またハンチングの無検出継続時に重み係数Ｒをどのような演算によってどの程度減少させるかについては、それぞれ個別に適宜設定することができる。
【０１６８】
また、重み係数Ｒの増加については、次のように行うこともできる。例えば、初期値として比較的小さい値を設定しておき、ハンチング検出毎に徐々に増加させていく。そして、あるところでハンチングが検出されなくなったら、その時点での重み係数Ｒを適切な値であるとして以後はその値を使用し続ける（つまり除算による減少はさせない）ようにする。
【０１６９】
ただし、上記のように、ハンチングが検出されなくなった時点での重み係数Ｒを以後使用し続けるようにすると、何らかの要因でその重み係数Ｒが不適切になってしまうことも考えられる。例えば、たまたま何らかの異常があるときに重み係数Ｒが決定してしまった結果、その後その異常が解消されてその重み係数Ｒが適切な値ではなくなったにもかかわらず、先に決定した重み係数Ｒを使用し続けてしまうといったケースが考えられる。そのため、好ましくは、上記実施形態のように、ハンチング検出を継続して行い、その検出状況に応じて重み係数Ｒを適宜増減させるのがよい。なまし係数αについても同様である。
【０１７０】
また、上記実施形態では、式（２７）のリカッチ方程式を、式（２９）〜（３４）を用いて説明したような収束演算により解くようにしたが、このような解法はあくまでも一例であり、リカッチ方程式の解法は適宜決めることができる。
【０１７１】
また、目標値ｒのなまし処理について、上記実施形態では、式（５）〜（８）に示した方法で行うようにしたが、このような演算方法はあくまでも一例であり、目標値ｒ（ｉ）を適切になますことができる限り、その具体的方法は種々考えられる。
【０１７２】
また、なまし処理を複数回行う場合、各回のなまし処理におけるなまし係数はそれぞれ個別に設定するようにしてもよい。なお、目標値ｒをなまし処理することは必須ではなく、ＦＢ制御及びＦＦ制御の双方でなまし目標値を用いることも必須ではないが、ハンチング抑制効果を高めるためには、上記実施形態のように、目標値をなまし処理してそのなまし目標値をＦＢ制御及びＦＦ制御の双方で用いるのが好ましい。
【０１７３】
また、上記実施形態では、本発明を空燃比制御システムに適用した例について説明したが、本発明の適用は空燃比制御システムに限定されるものではなく、フィードバック制御により制御対象を制御する制御システム、及びフィードバック制御とフィードフォワード制御の双方で制御対象を制御する制御システムに対して本発明を適用可能である。
【符号の説明】
【０１７４】
１…車両制御システム、１０…エンジン、１３…吸気管、１５…エアクリーナ、１７…エアフローメータ、１９…モータ、２０…スロットルバルブ、２１…スロットル開度センサ、２３…吸気管圧力センサ、２５…吸気マニホールド、２７…インジェクタ、２９…点火プラグ、３１…吸気バルブ、３２…排気バルブ、３３，３４…可変バルブタイミング調整機構、３５…排気管、３７…触媒、３９…空燃比センサ、４１…水温センサ、４３…回転速度センサ、５０…ＥＣＵ、６１…目標値なまし処理部、６２…ＦＦ項演算部、６３…ＦＢ項演算部、６４…他補正演算部、６５…操作量演算部、６６…制御対象（プラント）、７１…ＦＢ目標値算出部、７２…ＦＢゲイン算出部、７３…偏差演算部、７４…ＦＢ項算出部、７５…モデルパラメータ設定部、７６…なまし係数設定部、７７…重み係数設定部、７８…ハンチング検出部
【図１】
2013221430.tif 000031
【図２】
2013221430.tif 000032
【図３】
2013221430.tif 000033
【図４】
2013221430.tif 000034
【図５】
2013221430.tif 000035
【図６】
2013221430.tif 000036
【図７】
2013221430.tif 000037
【図８】
2013221430.tif 000038