(57)【要約】【課題】吸気脈動が大きい運転領域での吸気量の演算精度を向上する。【解決手段】燃料噴射量の決定に用いる吸気量演算値ＭＣを演算する吸気量演算処理Ｐ１において、判定処理Ｐ６の脈動小判定時には、マスフロー方式により演算した第１吸気量ＭＣ１を吸気量演算値ＭＣの値として演算するとともに、スロットルスピード方式により演算した第２吸気量ＭＣ２の第１吸気量ＭＣ１に対する偏差量ＤＥＶを演算し、判定処理Ｐ６の脈動大判定時には、第２吸気量ＭＣ２に偏差量ＤＥＶを加えた和である補正後第２吸気量ＭＣ３を吸気量演算値ＭＣの値として演算するようにした。【選択図】図３
2020012387.tif 000002
【特許請求の範囲】
【請求項１】
エンジンの吸気量を演算するとともに、同吸気量の演算値に基づき燃料噴射量を決定してインジェクタの燃料噴射制御を行うエンジン制御装置において、
エアフローメータの吸気流量の検出値に基づいて吸気量を演算する第１吸気量演算処理と、
前記吸気流量の検出値を用いずに、吸気管圧力の検出値、及びスロットル開度のうちのいずれか一方に基づいて前記吸気量を演算する第２吸気量演算処理と、
前記エンジンの吸気通路内の吸気脈動が大きい状態にあるか否かを判定する判定処理と、
前記第１吸気量演算処理による前記吸気量の演算値を第１吸気量とするとともに、前記第２吸気量演算処理による前記吸気量の演算値を第２吸気量としたとき、前記判定処理において前記吸気脈動が大きい状態にないと判定されているときに前記第１吸気量に対する前記第２吸気量の偏差量を演算する偏差量演算処理と、
前記判定処理において前記吸気脈動が大きい状態にないと判定されているときには前記第１吸気量を前記吸気量の演算値として設定するとともに、前記判定処理において前記吸気脈動が大きい状態にあると判定されているときには前記第２吸気量に前記偏差量を加えた和である補正後第２吸気量を前記吸気量の演算値として設定する演算方式切替処理と、
を行うエンジン制御装置。
【請求項２】
前記偏差量演算処理において、前記エンジンの運転状態に応じて区分けされた複数の偏差量学習領域ごとに前記偏差量の学習値である偏差量学習値の学習を行う
請求項１に記載のエンジン制御装置。
【請求項３】
前記偏差量演算処理における前記偏差量の学習は、前記複数の偏差量学習領域のいずれにおいても前記偏差量の学習が完了していない場合には前記複数の偏差量学習領域のそれぞれの前記偏差量学習値を一括して更新し、且つ前記複数の偏差量学習領域のいずれかにおいて前記偏差量の学習が完了している場合には前記エンジンが現在運転中の偏差量学習領域の前記偏差量学習値のみを更新することで行われる
請求項２に記載のエンジン制御装置。
【請求項４】
前記偏差量演算処理における前記偏差量の学習は、前記エンジンの回転数及び同エンジンの負荷に応じて演算したシフト補正量を前記偏差量から引いた差に基づき前記偏差量学習値の値を更新することで行われており、
且つ前記補正後第２吸気量は、前記偏差量学習値に前記シフト補正量を加えた和を前記偏差量の値として用いて演算されている
請求項２又は３に記載のエンジン制御装置。
【請求項５】
前記偏差量演算処理における前記偏差量の学習は、前記エンジンの環境条件に応じた環境補正を前記偏差量に施した値に基づいて前記偏差量学習値の値を更新することで行われており、
且つ前記補正後第２吸気量は、前記偏差量学習値に前記環境補正の逆補正を施した値を前記偏差量の値として用いて演算されている
請求項２又は３に記載のエンジン制御装置。
【請求項６】
前記エアフローメータの前記吸気流量の検出値から前記吸気管圧力の時間当りの変化量を演算するとともに、同変化量に応じて値を更新していくことで前記吸気管圧力を演算する吸気管モデルを備えており、
前記第１吸気量演算処理での前記第１吸気量の演算は、前記吸気管モデルにより演算した前記吸気管圧力を用いて行われ、
且つ前記吸気脈動が大きい状態にあるとの判定から前記吸気脈動が大きい状態にないとの判定へと前記判定処理の判定が切り替わったときに、前記吸気管モデルの前記吸気管圧力の演算値を、同吸気管圧力の検出値、又は前記スロットル開度に基づく同吸気管圧力の推定値に置き換えるようにした
請求項１〜５の何れか１項に記載のエンジン制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エンジンの吸気量を演算するとともに、同吸気量の演算値に基づき燃料噴射量を決定してインジェクタの燃料噴射制御を行うエンジン制御装置に関する。
【背景技術】
【０００２】
気筒内で燃焼する混合気の空燃比（空気に対する燃料の質量比率）を適切に制御するには、エンジンの吸気量を、すなわち気筒内に流入する吸気の質量を正確に把握する必要がある。従来、吸気量の演算方式として、マスフロー方式、スピードデンシティ方式、及びスロットルスピード方式の３つの方式が知られている。マスフロー方式では、吸気通路におけるスロットルバルブよりも上流側の部分に設置されたエアフローメータにより検出した吸気流量から吸気量を演算する。スピードデンシティ方式では、吸気通路におけるスロットルバルブよりも下流側の部分に設置された吸気管圧力センサにより吸気管圧力を検出するとともに、その吸気管圧力とエンジン回転数とに基づき推定した吸気流量から吸気量を演算する。さらに、スロットルスピード方式では、スロットル開度とエンジン回転数とに基づき推定した吸気流量から吸気量を演算する。
【０００３】
通常は、これら３つの演算方式の中でマスフロー方式が、エンジンの定常運転時の吸気量を最も精度良く演算することができる。ただし、エンジンの各気筒は、吸気弁の開閉に応じて間欠的に吸気を吸入しているため、吸気通路の吸気の流れは脈動を伴ったものとなる。そしてそうした吸気脈動の影響は、エアフローメータの検出値にも表れるため、吸気脈動の大きいエンジンの運転領域では、マスフロー方式よりもスピードデンシティ方式やスロットルスピード方式の方が高い精度で吸気量を演算できる場合がある。これに対して従来、特許文献１に見られるように、吸気脈動が小さいときにはマスフロー方式により吸気量を演算し、吸気脈動が大きいときにはスピードデンシティ方式又はスロットルスピード方式により吸気量を演算するように、吸気脈動の大小に応じて演算方式を切り替えつつ吸気量を演算するエンジン制御装置が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２２１４１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
スピードデンシティ方式及びスロットルスピード方式では、推定した吸気流量から吸気量を演算しているため、吸気流量の推定に誤差があると、その演算値にも誤差が生じてしまう。上記従来のエンジン制御装置では、吸気脈動が大きくなったときにそうした誤差が生じていると、空燃比が目標とする値から乖離してエンジンの排気性能の低下を招く虞がある。
【課題を解決するための手段】
【０００６】
上記課題を解決するエンジン制御装置は、エンジンの吸気量を演算するとともに、同吸気量の演算値に基づき燃料噴射量を決定してインジェクタの燃料噴射制御を行うものであって、エアフローメータの吸気流量の検出値に基づいて吸気量を演算する第１吸気量演算処理と、同吸気流量の検出値を用いずに、吸気管圧力の検出値、及びスロットル開度のうちのいずれか一方に基づいて吸気量を演算する第２吸気量演算処理と、吸気通路内の吸気脈動が大きい状態にあるか否かを判定する判定処理と、を行っている。
【０００７】
第１吸気量演算処理では、エアフローメータの吸気流量の検出値に基づいたマスフロー方式の吸気量の演算が行われる。第２吸気量演算処理では、吸気管圧力の検出値に基づいたスピードデンシティ方式の吸気量の演算、又はスロットル開度に基づいたスロットルスピード方式の吸気量の演算が行われる。ここで、第１吸気量演算処理による吸気量の演算値を第１吸気量とするとともに、第２吸気量演算処理による吸気量の演算値を第２吸気量とする。このとき、上記エンジン制御装置は更に、判定処理において吸気脈動が大きい状態にないと判定されているときに第１吸気量に対する第２吸気量の偏差量を演算する偏差量演算処理と、判定処理において吸気脈動が大きい状態にないと判定されているときには第１吸気量を吸気量の演算値として設定するとともに、判定処理において吸気脈動が大きい状態にあると判定されているときには第２吸気量に偏差量を加えた和である補正後第２吸気量を吸気量の演算値として設定する演算方式切替処理と、を行っている。
【０００８】
上記エンジン制御装置では、判定処理により吸気脈動が大きい状態にないと判定（以下、脈動小判定と記載する）されているときには、エアフローメータの吸気流量の検出精度は低下しておらず、その検出値に基づく第１吸気量演算処理での第１吸気量の演算の精度も高いと考えられる。そこで、上記エンジン制御装置では、脈動小判定時には、マスフロー方式で演算した第１吸気量を吸気量の演算値として演算される。また、このときの第１吸気量が正確な値であるとすれば、第１吸気量に対する第２吸気量の偏差は、第２吸気量の演算値の誤差となる。上記エンジン制御装置では、偏差量演算処理において、脈動小判定時の第１吸気量に対する第２吸気量の偏差量を演算している。
【０００９】
一方、判定処理により吸気脈動が大きい状態にあると判定（以下、脈動大判定と記載する）されているときには、エアフローメータの吸気流量の検出精度が低下して、第１吸気量の演算精度も低下する。このときの上記エンジン制御装置では、脈動小判定時に演算した上記偏差量を第２吸気量に加えた和である補正後第２吸気量が吸気量の演算値として演算される。すなわち、このときには、脈動小判定時に確認された第２吸気量の誤差分の補償を、第２吸気量に施した値が吸気量の演算値として演算される。したがって、上記エンジン制御装置によれば、吸気脈動が大きい運転領域での吸気量の演算精度を向上できる。
【００１０】
第１吸気量と第２吸気量との偏差量は、エンジンの運転領域、エンジンの個体差、経時変化などにより変化する。そのため、上記エンジン制御装置における偏差量演算処理において、エンジンの運転状態に応じて区分けされた複数の偏差量学習領域ごとに偏差量の学習値である偏差量学習値の学習を行うようにするとよい。こうした場合、該当するエンジンの現状における運転状態毎の偏差量の適切な値が学習を通じて求められる。そして、その学習の結果が、吸気脈動が大きい運転領域での吸気量の演算に反映される。そのため、吸気脈動が大きい運転領域での吸気量の演算精度を更に向上できる。
【００１１】
上記のような偏差量演算処理における偏差量の学習は、複数の偏差量学習領域のいずれにおいても偏差量の学習が完了していない場合には複数の偏差量学習領域のそれぞれの偏差量学習値を一括して更新し、且つ複数の偏差量学習領域のいずれかにおいて偏差量の学習が完了している場合にはエンジンが現在運転中の偏差量学習領域の偏差量学習値のみを更新することで行うようにするとよい。偏差量のうち、エアフローメータの検出特性やスロットルバルブの開度特性等の個体差により生じる分は、エンジンの運転領域全体で共通した傾向をもって現れることが多い。上記のようにエンジン制御装置を構成した場合には、偏差量学習領域の何れかで偏差量の学習が完了するまでは、全ての偏差量学習領域の偏差量学習値の値が一括更新される。この期間には、偏差量学習領域を区別せずに一括して、エンジンの運転領域全体で共通した傾向をもって現れる分の偏差の学習が行われることになる。そしてその後、偏差量学習領域間の偏差量の相違分が各々の偏差量学習領域毎に個別に行われるようになる。そのため、各偏差量学習領域の偏差量の学習に要する期間を短縮できる。
【００１２】
演算方式間の吸気量の演算値の偏差には、個体差や経時変化により生じるエンジンの個々の機体の状態に依存する部分（以下、機体依存分と記載する）と、それ以外の要因により生じるエンジンの個々の機体の状態に依存しない部分（以下、機体非依存分と記載する）とがある。これらのうち、機体非依存分については、計測等により予め確認しておくことができる。そこで、上記のような偏差量の学習を行う場合、エンジンの回転数及び同エンジンの負荷に応じて演算したシフト補正量を偏差量から引いた差に基づき偏差量学習値の値を更新することで偏差量演算処理における偏差量の学習を行うとともに、偏差量学習値にシフト補正量を加えた和を偏差量の値として用いて補正後第２吸気量を演算するとよい。すなわち、予め求めておいたエンジンの回転数及び負荷と上記偏差の機体非依存分の量との関係から同機体非依存分の量をシフト補正量として演算して、偏差量の学習や第２吸気量の演算に反映する。こうした場合の偏差量学習値には、機体依存分だけを反映すればよいため、各偏差量学習領域の偏差量の学習に要する期間を短縮できる。
【００１３】
演算方式間の吸気量の演算値の偏差は、吸気温度等の温度条件や大気圧等の圧力条件のようなエンジンの環境条件によっても変化する。そのため、環境条件の異なった状態で学習を行えば、その学習の結果にばらつきが生じてしまうことになる。そこで、上記のような偏差量の学習を行う場合、エンジンの環境条件に応じた環境補正を偏差量に施した値に基づいて偏差量学習値の値を更新することで偏差量演算処理における偏差量の学習を行うとともに、偏差量学習値に環境補正の逆補正を施した値を偏差量の値として用いて補正後第２吸気量を演算するとよい。こうした場合、環境条件の影響が偏差量学習値に反映されにくくなるため、学習精度が向上する。
【００１４】
上記エンジン制御装置を、エアフローメータの吸気流量の検出値から吸気管圧力の時間当りの変化量を演算するとともに、同変化量に応じて値を更新していくことで吸気管圧力を演算する吸気管モデルを備えるとともに、その吸気管モデルにより演算した吸気管圧力を用いて第１吸気量演算処理での第１吸気量の演算を行う構成とすることが考えられる。こうした場合、エアフローメータの検出精度が低下する脈動大判定時には、その検出値に基づいた吸気管モデルでの吸気管圧力の演算精度も低下する。吸気管モデルでは吸気管圧力の絶対値を直接演算していないため、脈動大判定中に生じた吸気管モデルの吸気管圧力の演算誤差は、その後に吸気脈動が小さくなってエアフローメータの検出精度が回復しても残ってしまう。そこで、吸気脈動が大きい状態にあるとの判定から吸気脈動が大きい状態にないとの判定へと判定処理の判定が切り替わったときに、吸気管モデルの吸気管圧力の演算値を、同吸気管圧力の検出値、又はスロットル開度に基づく同吸気管圧力の推定値に置き換えるようにするとよい。脈動大判定中のエアフローメータの検出精度の低下は、吸気管圧力の検出値、及びスロットル開度に基づく同吸気管圧力の推定値には影響しない。そのため、こうした場合には、脈動大判定中に誤差が生じた吸気管モデルの吸気管圧力の演算値が脈動小判定への切り替わりとともに、より誤差の無い値に置き換えられることになる。したがって、脈動大判定から脈動小判定への切り替わり後の吸気量の演算精度の低下を抑えられる。
【図面の簡単な説明】
【００１５】
【図１】第１実施形態のエンジン制御装置の構成を模式的に示す略図。
【図２】同エンジン制御装置が実行する燃料噴射量の制御に係る処理の流れを示すブロック図。
【図３】同エンジン制御装置が実行する吸気量演算処理の流れを示すブロック図。
【図４】同エンジン制御装置が脈動判定処理において使用する脈動率の演算態様を示すグラフ。
【図５】上記エンジン制御装置が脈動判定処理に際して実行する脈動判定ルーチンのフローチャート。
【図６】同エンジン制御装置における吸気量演算処理の実施態様の一例を示すタイムチャート。
【図７】第２実施形態のエンジン制御装置が実行する吸気量演算処理の流れを示すブロック図。
【図８】第３実施形態のエンジン制御装置が実行する吸気量推定処理の流れを示すブロック図。
【図９】第３実施形態のエンジン制御装置における脈動大判定から脈動小判定に切り替わったときの各吸気量の演算状況を示すタイムチャート。
【図１０】第３実施形態の変形例における脈動大判定から脈動小判定に切り替わったときの各吸気量の演算状況を示すタイムチャート。
【図１１】第４実施形態のエンジン制御装置における偏差量学習領域の設定態様を示すグラフ。
【図１２】同エンジン制御装置が実行する偏差量学習ルーチンのフローチャート。
【図１３】同偏差量学習ルーチンにおいて演算する偏差量学習値の更新量とずれ量との関係を示すグラフ。
【図１４】第５実施形態のエンジン制御装置における偏差量学習領域の設定態様を示すグラフ。
【図１５】同エンジン制御装置が実行する学習値更新ルーチンのフローチャート。
【図１６】第６実施形態のエンジン制御装置におけるシフト補正領域の設定態様を示すグラフ。
【図１７】シフト補正領域の一つにおける吸気管圧力とシフト補正量との関係を示すグラフ。
【図１８】上記実施形態のエンジン制御装置における偏差量学習値の更新量の演算に係る処理の流れを示すブロック図。
【図１９】同エンジン制御装置における補正後ＡＦＭ同期吸気量の演算に係る処理の流れを示すブロック図。
【図２０】第７実施形態のエンジン制御装置におけるＡＦＭ系吸気量、ＡＦＭ同期吸気量、及び環境補正係数と、吸気温度との関係を示すグラフ。
【図２１】同エンジン制御装置における偏差量学習値の更新量の演算に係る処理の流れを示すブロック図。
【図２２】同エンジン制御装置における補正後ＡＦＭ同期吸気量の演算に係る処理の流れを示すブロック図。
【図２３】第７実施形態のエンジン制御装置の変形例における偏差量学習値の更新に係る処理の流れを示すブロック図。
【発明を実施するための形態】
【００１６】
（第１実施形態）
以下、エンジン制御装置の第１実施形態を、図１〜図６を参照して詳細に説明する。
図１に示すように、本実施形態のエンジン制御装置が適用されるエンジン１０の吸気通路１１の最上流部には、吸気中の塵等をろ過するエアクリーナ１２が設けられている。吸気通路１１におけるエアクリーナ１２よりも下流側の部分には、吸気流量を検出するエアフローメータ１３が設けられている。さらに吸気通路１１におけるエアフローメータ１３よりも下流側の部分には、吸気通路１１の吸気流量を調整するための弁であるスロットルバルブ１４が設けられている。スロットルバルブ１４の近傍には、同スロットルバルブ１４を開閉駆動するためのスロットルモータ１５と、スロットルバルブ１４の開度（スロットル開度ＴＡ）を検出するためのスロットルセンサ１６と、が設けられている。
【００１７】
吸気通路１１におけるスロットルバルブ１４よりも下流側の部分には、エンジン１０の各気筒に吸気を分配するための分枝管であるインテークマニホールド（以下、インマニ１７と記載する）が設けられている。インマニ１７の各分枝管は、気筒別の吸気ポート１８を介して各気筒の燃焼室１９にそれぞれ接続されている。各気筒の吸気ポート１８には、同吸気ポート１８を通って燃焼室１９に流入する吸気中に燃料を噴射するインジェクタ２０がそれぞれ設けられている。また、各気筒の燃焼室１９には、内部に流入した燃料と吸気との混合気を放電により点火する点火装置２１がそれぞれ設けられている。なお、各気筒には、エンジン１０の出力軸であるクランクシャフト２２の回転に連動して開閉する吸気弁２３、及び排気弁２４がそれぞれ設けられている。そして、吸気弁２３の開弁に応じて吸気ポート１８から燃焼室１９に吸気が流入し、排気弁２４の開弁に応じて燃焼室１９から排気が排出される。
【００１８】
エンジン１０は、エンジン制御装置としての電子制御ユニット２５により制御されている。電子制御ユニット２５は、エンジン制御に係る各種の演算処理を行う演算処理回路２６と、制御用のプログラムやデータを記憶したメモリ２７とを備えている。そして、電子制御ユニット２５には、上述のエアフローメータ１３、スロットルセンサ１６に加え、吸気温度ＴＨＡを検出する吸気温度センサ２８、大気圧ＰＡを検出する大気圧センサ２９、及びクランクシャフト２２の回転角（クランク角ＣＲＮＫ）を検出するクランク角センサ３０などの各種センサの検出信号が入力されている。そして、電子制御ユニット２５は、それらセンサの検出信号に基づき、スロットルモータ１５、インジェクタ２０、点火装置２１などのアクチュエータを制御することで、エンジン１０の各種制御を行っている。なお、電子制御ユニット２５は、クランク角センサ３０によるクランク角ＣＲＮＫの検出結果からエンジン回転数ＮＥを演算している。
【００１９】
図２に、インジェクタ２０の燃料噴射量の制御に係る電子制御ユニット２５の処理の流れを示す。燃料噴射量の制御に際して電子制御ユニット２５はまず、吸気量演算処理Ｐ１において、エアフローメータ１３の吸気流量の検出値であるＡＦＭ検出吸気量ＧＡ、スロットル開度ＴＡ、エンジン回転数ＮＥに基づき、エンジン１０の吸気量を演算する。この吸気量演算処理Ｐ１で演算する吸気量（以下、吸気量演算値ＭＣと記載する）は、燃焼室１９での燃焼に供される空気の質量の推定値を表している。続いて、電子制御ユニット２５は、噴射量決定処理Ｐ２において、吸気量演算処理Ｐ１で演算した吸気量演算値ＭＣに基づき、燃焼室１９で燃焼する混合気の空燃比が目標とする値となるように燃料噴射量ＱＩＮＪを決定する。そして、電子制御ユニット２５は、インジェクタ駆動処理Ｐ３において、燃料噴射量ＱＩＮＪ分の燃料噴射を行うように各気筒のインジェクタ２０を駆動する。
【００２０】
図３に、吸気量演算処理Ｐ１に係る電子制御ユニット２５の処理の流れを示す。吸気量演算処理Ｐ１は、第１吸気量演算処理Ｐ４、第２吸気量演算処理Ｐ５、判定処理Ｐ６、偏差量演算処理Ｐ７、及び演算方式切替処理Ｐ８の各処理を通じて実行されている。
【００２１】
第１吸気量演算処理Ｐ４では、エアフローメータ１３の吸気流量の検出値であるＡＦＭ検出吸気量ＧＡとエンジン回転数ＮＥとに基づく吸気量の演算が行われる。具体的には、第１吸気量演算処理Ｐ４では、ＡＦＭ検出吸気量ＧＡをエンジン回転数ＮＥで割った商に規定の係数Ｋを掛けた積（＝Ｋ×ＧＡ／ＮＥ）を定常運転時の吸気量の値として求めている。そして、その定常運転時の吸気量に追従しつつ緩変化する値として吸気量を演算している。すなわち、第１吸気量演算処理Ｐ４では、エアフローメータ１３の吸気流量の検出値を用いた、いわゆるマスフロー方式による吸気量の演算が行われる。以下の説明では、第１吸気量演算処理Ｐ４による吸気量の演算値を第１吸気量ＭＣ１と記載する。
【００２２】
第２吸気量演算処理Ｐ５では、スロットル開度ＴＡとエンジン回転数ＮＥとに基づく吸気量の演算が行われる。具体的には、第２吸気量演算処理Ｐ５では、スロットル開度ＴＡとエンジン回転数ＮＥとに基づき吸気流量を推定するとともに、その吸気流量の推定値（推定吸気流量ＧＡ＊）をエンジン回転数ＮＥで割った商に上記係数Ｋを掛けた積（＝Ｋ×ＧＡ＊／ＮＥ）を定常運転時の吸気量の値として求めている。そして、その定常運転時の吸気量に追従しつつ緩変化する値として吸気量を演算している。すなわち、第２吸気量演算処理Ｐ５では、エアフローメータ１３の吸気流量の検出値の代わりに、スロットル開度ＴＡ及びエンジン回転数ＮＥに基づく吸気流量の推定値を用いた、いわゆるスロットルスピード方式による吸気量の演算が行われる。以下の説明では、第２吸気量演算処理Ｐ５による吸気量の演算値を第２吸気量ＭＣ２と記載する。
【００２３】
判定処理Ｐ６では、吸気通路１１内の吸気脈動が大きい状態にあるか否かの判定が行われる。判定処理Ｐ６の詳細については後述する。
偏差量演算処理Ｐ７では、判定処理Ｐ６において吸気脈動が大きい状態にないとの判定（以下、脈動小判定と記載する）がなされているときに、第１吸気量ＭＣ１に対する第２吸気量ＭＣ２の偏差量ＤＥＶを演算する。具体的には、偏差量演算処理Ｐ７では、脈動小判定時に、第１吸気量ＭＣ１から第２吸気量ＭＣ２を引いた差を求めるとともに、その差が偏差量ＤＥＶの更新後の値となるように偏差量ＤＥＶの値を更新する。なお、判定処理Ｐ６において吸気脈動が大きい状態にあるとの判定（以下、脈動大判定と記載する）がなされているときには、偏差量演算処理Ｐ７は実施されず、偏差量ＤＥＶの値が保持される。
【００２４】
演算方式切替処理Ｐ８では、脈動小判定時には、第１吸気量ＭＣ１を吸気量演算値ＭＣの値として設定する。また、演算方式切替処理Ｐ８では、脈動大判定時には、第２吸気量ＭＣ２に偏差量ＤＥＶを加えた和である補正後第２吸気量ＭＣ３（＝ＭＣ２＋ＤＥＶ）を吸気量演算値ＭＣの値として設定する。
【００２５】
続いて、判定処理Ｐ６の詳細を説明する。判定処理Ｐ６には、図４に示すような、規定の期間ＴにおけるＡＦＭ検出吸気量ＧＡの最大値ＧＭＡＸ、最小値ＧＭＩＮ、及び平均値ＧＡＶＥが用いられる。なお、期間Ｔは、吸気脈動の周期よりも長い時間となるように設定されている。
【００２６】
図５に、判定処理Ｐ６において実行される脈動判定ルーチンのフローチャートを示す。本ルーチンの処理は、エンジン１０の運転中、吸気量の演算周期ごとに電子制御ユニット２５により繰り返し実行される。
【００２７】
本ルーチンの処理が開始されると、まずステップＳ１００において、脈動率ＲＴＥの演算が行われる。脈動率ＲＴＥの値は、上述したＡＦＭ検出吸気量ＧＡの最大値ＧＭＡＸから最小値ＧＭＩＮを引いた差を平均値ＧＡＶＥで割った商（＝（ＧＭＡＸ−ＧＭＩＮ）／ＧＡＶＥ）として演算されている。続いて、ステップＳ１１０において、脈動率ＲＴＥの値が規定の脈動大判定値α以上であるか否かが判定される。
【００２８】
脈動率ＲＴＥの値が脈動判定値α以上の場合（Ｓ１１０：ＹＥＳ）、ステップＳ１２０に処理が進められ、そのステップＳ１２０において、脈動大フラグＦがセットされる。さらにこの場合には、ステップＳ１３０においてカウンタＣＯＵＮＴの値が０にリセットされた後、今回の本ルーチンの処理が終了される。脈動大フラグＦは、判定処理Ｐ６の判定結果を示すフラグであり、脈動大判定時にはセットされ、脈動小判定時にはクリアされる。上述の偏差量演算処理Ｐ７、及び演算方式切替処理Ｐ８では、こうした脈動大フラグＦがセットされているか否かにより、判定処理Ｐ６の判定結果を確認している。
【００２９】
一方、脈動率ＲＴＥの値が脈動大判定値α未満の場合（Ｓ１１０：ＮＯ）、ステップＳ１４０に処理が進められる。そして、ステップＳ１４０において、脈動大フラグＦがセットされているか否かが判定される。ここで、脈動大フラグＦがセットされていなければ（Ｓ１４０：ＮＯ）、上述のステップＳ１３０に処理が進められ、そのステップＳ１３０においてカウンタＣＯＵＮＴの値が０にリセットされた後、今回の本ルーチンの処理が終了される。一方、脈動大フラグＦがセットされている場合には（Ｓ１４０：ＹＥＳ）、ステップＳ１５０に処理が進められる。
【００３０】
ステップＳ１５０に処理が進められると、そのステップＳ１５０においてカウンタＣＯＵＮＴの値のインクリメントが行われる。そして、続くステップＳ１６０において、インクリメント後のカウンタＣＯＵＮＴの値が規定の脈動オフ判定値β以上であるか否かが判定される。このときのカウンタＣＯＵＮＴの値が脈動オフ判定値β未満である場合には（Ｓ１６０：ＮＯ）、そのまま今回の本ルーチンの処理が終了される。これに対してカウンタＣＯＵＮＴの値が脈動オフ判定値β以上である場合には（Ｓ１６０：ＹＥＳ）、ステップＳ１７０において脈動大フラグＦがクリアされた後、今回の本ルーチンの処理が終了される。
【００３１】
以上の脈動判定ルーチンにおいて脈動大フラグＦは、脈動大判定値α未満の値から同脈動大判定値α以上の値へと脈動率ＲＴＥの値が増加したときに、クリアされた状態からセットされた状態へと切り替えられる。また、脈動大フラグＦは、脈動率ＲＴＥが脈動大判定値α未満であり、且つカウンタＣＯＵＮＴの値が脈動判定値β以上となったときにセットされた状態からクリアされた状態に切り替えられる。一方、カウンタＣＯＵＮＴの値は、脈動率ＲＴＥが脈動大判定値α未満であり、且つ脈動大フラグＦがセットされている場合にインクリメントされ、それ以外の場合には０にリセットされる。すなわち、カウンタＣＯＵＮＴの値のインクリメントは、脈動率ＲＴＥが脈動大判定値α以上の値から脈動大判定値α未満の値に低下したときに開始され、その後、脈動率ＲＴＥが脈動大判定値α以上となるか、脈動大フラグＦがクリアされるか、のいずれかとなるまで継続される。そして、このときのカウンタＣＯＵＮＴの値のインクリメントは脈動判定ルーチンの実行ごとに行われ、さらに脈動判定ルーチンは吸気量の演算周期ごとに実行される。よって、脈動大フラグＦのセットからクリアへの切り替えは、脈動率ＲＴＥが脈動大判定値α以上の値から脈動大判定値α未満の値に低下し、且つその後、脈動率ＲＴＥが脈動大判定値α未満の値となっている状態が一定の時間継続したときに行われる。
【００３２】
続いて、以上説明した本実施形態のエンジン制御装置の作用効果を説明する。
図６に、本実施形態のエンジン制御装置における吸気量演算処理Ｐ１の実施態様の一例を示す。
【００３３】
エンジン１０の吸気通路１１では、吸気弁２３の間欠的な開弁により、吸気の脈動が発生する。エンジン１０の高負荷運転時等には、こうした吸気脈動が大きくなり、その影響がエアフローメータ１３の検出結果に表れる。そのため、吸気脈動が大きい状態にあるときには、エアフローメータ１３の検出精度が低下する。
【００３４】
一方、マスフロー方式による吸気量の演算は、エアフローメータ１３の吸気流量の検出値（ＡＦＭ検出吸気量ＧＡ）に基づいて行われる。そのため、吸気脈動が大きい状態にあってエアフローメータ１３の検出精度が低下すると、マスフロー方式による吸気量の演算精度も低下する。
【００３５】
本実施形態では、判定処理Ｐ６において吸気脈動が大きい状態にあるか否かを判定している。そして、脈動小判定時にはマスフロー方式により吸気量を演算する一方、脈動大判定時にはスロットルスピード方式により吸気量を演算するようにしている。
【００３６】
図６の場合、時刻ｔ１までは判定処理Ｐ６により脈動小判定がなされており、脈動大フラグＦはクリアされている。そして、時刻ｔ１に判定処理Ｐ６の判定結果が脈動小判定から脈動大判定に切り替わり、その時刻ｔ１以降は脈動大フラグＦがセットされた状態となっている。脈動小判定中は、エアフローメータ１３の検出精度は低下しておらず、第１吸気量演算処理Ｐ４での第１吸気量ＭＣ１の演算精度も高いと考えられる。そこで、本実施形態では、脈動小判定中は、第１吸気量ＭＣ１を吸気量演算値ＭＣの値として演算するようにしている。
【００３７】
また、脈動小判定中の第１吸気量ＭＣ１が正確な値であるとすると、このときの第１吸気量ＭＣ１に対する第２吸気量ＭＣ２の偏差量ＤＥＶ分の誤差が、第２吸気量ＭＣ２の演算値に生じていることになる。本実施形態では、偏差量演算処理Ｐ７において、脈動小判定中にそうした偏差量ＤＥＶの演算を行っている。
【００３８】
一方、脈動小判定から脈動大判定に切り替わると、エアフローメータ１３の検出精度が低下して、第１吸気量演算処理Ｐ４による第１吸気量ＭＣ１の演算精度も低下する。このときの本実施形態では、脈動小判定時に演算した偏差量ＤＥＶを第２吸気量ＭＣ２に加算した和である補正後第２吸気量ＭＣ３を、吸気量演算値ＭＣの値として演算している。すなわち、脈動小判定時の偏差量ＤＥＶの演算結果から確認された第２吸気量ＭＣ２の誤差を補償した値が、脈動大判定時の吸気量演算値ＭＣの値として演算されている。そのため、吸気脈動が大きい状態にあるときにも、吸気量演算値ＭＣを精度良く演算できる。
【００３９】
また、第１吸気量ＭＣ１に対する第２吸気量ＭＣ２の偏差が偏差量ＤＥＶの値として適切に設定されていれば、時刻ｔ１における第１吸気量ＭＣ１と、第２吸気量ＭＣ２に偏差量ＤＥＶを加えた和である補正後第２吸気量ＭＣ３とは同値となる。そのため、本実施形態によれば、演算方式の切り替え前後の吸気量演算値ＭＣの値に段差が生じることを抑えられる。
【００４０】
（第２実施形態）
続いて、エンジン制御装置の第２実施形態について、図７を併せ参照して説明する。なお、本実施形態及び後述の各実施形態において、上述の実施形態と共通する構成要素については、同一の符号を付して詳細な説明を省略する。
【００４１】
本実施形態のエンジン制御装置が適用されるエンジン１０の構成は、第１実施形態の適用されたエンジン１０の構成に、図１に破線で示す吸気管圧力センサ３１が追加されたものとなっている。吸気管圧力センサ３１は、吸気通路１１におけるスロットルバルブ１４よりも下流側の部分（インマニ１７）に設置されており、同部分の吸気の圧力（以下、吸気管圧力ＰＭと記載する）を検出する。そして、吸気管圧力センサ３１の検出信号は、電子制御ユニット２５に入力されている。
【００４２】
図７に、本実施形態のエンジン制御装置における吸気量演算処理Ｐ１に係る電子制御ユニット２５の処理の流れを示す。吸気量演算処理Ｐ１は、第１吸気量演算処理Ｐ４、第２吸気量演算処理Ｐ５、判定処理Ｐ６、偏差量演算処理Ｐ７、及び演算方式切替処理Ｐ８の各処理を通じて実行されている。このうち、第１吸気量演算処理Ｐ４、判定処理Ｐ６、偏差量演算処理Ｐ７、及び演算方式切替処理Ｐ８の内容は、第１実施形態の場合と同じとなっている。
【００４３】
本実施形態における第２吸気量演算処理Ｐ５＊では、吸気管圧力ＰＭとエンジン回転数ＮＥとに基づき吸気量の演算が行われる。具体的には、第２吸気量演算処理Ｐ５では、吸気管圧力ＰＭとエンジン回転数ＮＥとに基づき吸気流量を推定するとともに、その吸気流量の推定値（推定吸気流量ＧＡ＊）をエンジン回転数ＮＥで割った商に係数Ｋを掛けた積（＝Ｋ×ＧＡ＊／ＮＥ）を定常運転時の吸気量の値として求めている。そして、その定常運転時の吸気量に追従しつつ緩変化する値として吸気量を演算している。すなわち、第２吸気量演算処理Ｐ５では、エアフローメータ１３の吸気流量の検出値の代わりに、吸気管圧力ＰＭ及びエンジン回転数ＮＥに基づく吸気流量の推定値を用いた、いわゆるスピードデンシティ方式により吸気量を演算している。以下の説明では、第２吸気量演算処理Ｐ５＊による吸気量の演算値を第２吸気量ＭＣ２＊と記載する。
【００４４】
こうした本実施形態では、脈動小判定時には、マスフロー方式で演算した第１吸気量ＭＣ１を吸気量演算値ＭＣの値として演算するとともに、第１吸気量ＭＣ１に対する第２吸気量ＭＣ２＊の偏差量ＤＥＶを演算している。このときの偏差量ＤＥＶの値は、第２吸気量ＭＣ２＊の演算誤差に相当する。そして、脈動大判定時には、脈動小判定時に演算した偏差量ＤＥＶを第２吸気量ＭＣ２＊に加えた和である補正後第２吸気量ＭＣ３＊を吸気量演算値ＭＣの値として演算している。そのため、本実施形態でも、第１実施形態と同様に、吸気脈動が大きい状態にあるときの吸気量演算値ＭＣを精度良く演算できる。また、演算方式の切り替え前後の吸気量演算値ＭＣの値に段差が生じることが抑えられる。
【００４５】
（第３実施形態）
続いて、エンジン制御装置の第３実施形態について、図８〜図１１を併せ参照して説明する。
【００４６】
本実施形態のエンジン制御装置では、エンジン１０の吸気系の物理モデルであるエアモデルを用いて吸気量の推定を行っている。エアモデルは、スロットルモデルＭ１、吸気管モデルＭ２、吸気弁モデルＭ３、及びエアクリーナモデルＭ４の各サブモデルにより構成されている。
【００４７】
スロットルモデルＭ１は、スロットルバルブ１４における吸気の挙動についての物理モデルとなっている。具体的には、スロットルモデルＭ１は、スロットル上流圧力ＰＡＣ、吸気管圧力ＰＭ、上流温度ＴＨＡＣ、及びスロットル開度ＴＡを入力とし、式（１）に示す絞りの式の関係からスロットルバルブ１４を通過する吸気の流量（スロットル通過吸気量ＭＴ）を演算して出力する。スロットル上流圧力ＰＡＣはスロットルバルブ１４の通過前の吸気の圧力を、上流温度はスロットルバルブ１４の通過前の吸気の温度をそれぞれ表している。自然吸気式のエンジン１０では、吸気通路１１におけるスロットルバルブ１４よりも上流側の部分での吸気の温度変化があまり大きくないため、本実施形態では上流温度ＴＨＡＣとして吸気温度センサ２８により検出した吸気温度ＴＨＡを上流温度ＴＨＡＣの値として用いている。
【００４８】
【数１】
2020012387.tif 000003
式（１）における「μ」は流量係数を、「Ｒ」は気体定数を、「Ａｔ（ＴＡ）」はスロットル開度ＴＡからスロットルバルブ１４の開口面積を求める関数を、それぞれ表している。また、式（１）における「φ（ＰＭ／ＰＡＣ）」は、式（２）に示す関数となっている。なお、式（２）における「κ」は吸気の比熱比を表している。
【００４９】
【数２】
2020012387.tif 000004
吸気管モデルＭ２は、インマニ１７における吸気の挙動についての物理モデルとなっている。具体的には、吸気管モデルＭ２は、スロットル通過吸気量ＭＴ、上流温度ＴＨＡＣ、インマニ流出吸気量ＭＣＭを入力とし、それらから吸気管圧力ＰＭ、及びインマニ温度ＴＨＭを演算して出力する。インマニ温度ＴＨＭは、インマニ１７内の吸気の温度を表している。また、インマニ流出吸気量ＭＣＭは、インマニ１７から流出する吸気の流量を表している。具体的には、吸気管モデルＭ２ではまず、式（３）及び式（４）の関係からインマニ温度ＴＨＭ、及び吸気管圧力ＰＭのそれぞれの時間当たりの変化量が求められる。そして、インマニ温度ＴＨＭ及び吸気管圧力ＰＭの値を各々の変化量分更新することで、インマニ温度ＴＨＭ及び吸気管圧力ＰＭを求めている。なお、式（３）、式（４）における「ＶＭ」はインマニ１７の容積を表している。
【００５０】
【数３】
2020012387.tif 000005
吸気弁モデルＭ３は、インマニ１７から各気筒の燃焼室１９に流出する吸気の挙動についての物理モデルとなっている。具体的には、吸気弁モデルＭ３は、吸気管圧力ＰＭ、及びインマニ温度ＴＨＭを入力とし、式（５）の関係からインマニ流出吸気量ＭＣＭを演算して出力する。なお、インマニ１７から燃焼室１９への吸気の流出は、吸気弁２３の開閉に応じて間欠的に行われるが、ここでは連続した一様な流れであると近似（平均化）した流量をインマニ流出吸気量ＭＣＭとして求めている。なお、式（５）における「γ１」「γ２」「δ」及び「ε」はそれぞれエンジン回転数ＮＥに応じて値が決定される係数となっている。
【００５１】
【数４】
2020012387.tif 000006
エアクリーナモデルＭ４は、エアクリーナ１２における吸気の挙動についての物理モデルとなっている。具体的には、エアクリーナモデルＭ４は、大気圧ＰＡ、スロットル通過吸気量ＭＴ、吸気温度ＴＨＡを入力とし、式（６）の関係からスロットル上流圧力ＰＡＣを演算して出力する。式（６）における「ｋ」は定数であり、「ρ」は大気密度を表している。なお、大気密度ρは、吸気温度ＴＨＡの関数として求められている。
【００５２】
【数５】
2020012387.tif 000007
図８に、本実施形態のエンジン制御装置において、吸気量の推定のために電子制御ユニット２５が実行する吸気量推定処理Ｐ１０の処理の流れを示す。なお、電子制御ユニット２５は、吸気量推定処理Ｐ１０による吸気量の推定結果に基づき、燃焼室１９で燃焼する混合気の空燃比が目標とする値となるように、各気筒のインジェクタ２０の燃料噴射量ＱＩＮＪを決定している。
【００５３】
なお、エアモデルを構成する各サブモデルには、近似やエンジン１０の個体差、経時変化等による誤差が生じることがあるため、エアモデルによる吸気量の推定精度には限界がある。そこで、吸気量推定処理Ｐ１０では、エアモデルを用いた吸気量の推定結果に対して、ＡＦＭ検出吸気量ＧＡに基づく上記誤差分の修正を施した値を、吸気量の推定値である推定吸気量ＭＣ＊として演算している。吸気量推定処理Ｐ１０での推定吸気量ＭＣ＊の演算に際しては、ＴＡ系吸気量演算処理Ｐ２０、ＴＡＳＭ系吸気量演算処理Ｐ３０、及び修正用吸気量演算処理Ｐ４０が行われる。
【００５４】
ＴＡ系吸気量演算処理Ｐ２０では、既定の制御周期毎に、上記エアモデルを用いて吸気量を演算している。すなわち、ＴＡ系吸気量演算処理Ｐ２０では、大気圧ＰＡ、吸気温度ＴＨＡ、及び前回の制御周期におけるスロットルモデルＭ１のスロットル通過吸気量ＭＴの出力を、エアクリーナモデルＭ４に入力して、スロットル上流圧力ＰＡＣが求められる。また、吸気温度ＴＨＡ及びスロットル開度ＴＡと、今回の制御周期におけるエアクリーナモデルＭ４のスロットル上流圧力ＰＡＣの出力をスロットルモデルＭ１に入力して、スロットル通過吸気量ＭＴが求められる。さらに、今回の制御周期におけるスロットルモデルＭ１のスロットル通過吸気量ＭＴの出力と、前回の制御周期における吸気弁モデルＭ３のインマニ流出吸気量の出力（ＴＡ系吸気量ＭＣ０）と、を吸気管モデルＭ２に入力して、吸気管圧ＰＭ０とインマニ温度ＴＨＭ０とが求められる。そして、ＴＡ系吸気量演算処理Ｐ２０では、今回の演算周期における吸気管モデルＭ２の吸気管圧ＰＭ０及びインマニ温度ＴＨＭ０の出力とエンジン回転数ＮＥとを吸気弁モデルＭ３に入力して、同吸気弁モデルＭ３が出力するインマニ流出吸気量を、ＴＡ系吸気量ＭＣ０の値として出力する。
【００５５】
なお、スロットル通過吸気量ＭＴの変化に対するエアフローメータ１３の出力の変化には応答遅れがある。ＴＡＳＭ系吸気量演算処理Ｐ３０では、上記制御周期毎に、ＴＡ系吸気量ＭＣ０に対してエアフローメータ１３の応答遅れと同じだけ遅延した値をＡＦＭ同期吸気量ＭＣＳＭとして演算している。
【００５６】
ＴＡＳＭ系吸気量演算処理Ｐ３０でのＡＦＭ同期吸気量ＭＣＳＭの演算は、ＡＦＭモデルＭ５、吸気管モデルＭ２’、及び吸気弁モデルＭ３’を用いて行われる。吸気管モデルＭ２’、吸気弁モデルＭ３’の内容はそれぞれ、吸気管モデルＭ２、吸気弁モデルＭ３と同じである。一方、ＡＦＭモデルＭ５は、スロットル通過吸気量ＭＴに対してエアフローメータ１３の応答遅れと同じだけ遅延した値をＡＦＭ同期スロットル通過吸気量ＭＴＳＭの値として演算して出力する。
【００５７】
ＴＡＳＭ系吸気量演算処理Ｐ３０でのＡＦＭ同期吸気量ＭＣＳＭの演算は次のように行われる。まず、ＴＡ系吸気量演算処理Ｐ２０のスロットルモデルＭ１による今回の制御周期のスロットル通過吸気量ＭＴの出力をＡＦＭモデルＭ５に入力し、ＡＦＭ同期スロットル通過吸気量ＭＴＳＭを演算する。続いて、このＡＦＭ同期スロットル通過吸気量ＭＴＳＭと、前回の制御周期における吸気弁モデルＭ３’のインマニ流出吸気量の出力（ＡＦＭ同期吸気量ＭＣＳＭ）とを吸気管モデルＭ２’に入力して、ＡＦＭ同期吸気管圧力ＰＭＳＭとＡＦＭ同期インマニ温度ＴＨＭＳＭとを演算する。そして、ＴＡＳＭ系吸気量演算処理Ｐ３０では、ＡＦＭ同期吸気管圧力ＰＭＳＭ、ＡＦＭ同期インマニ温度ＴＨＭＳＭ、及びエンジン回転数ＮＥを吸気弁モデルＭ３’に入力して、同吸気弁モデルＭ３’が出力するインマニ流出吸気量をＡＦＭ同期吸気量ＭＣＳＭの値として出力している。
【００５８】
以上のＴＡ系吸気量演算処理Ｐ２０及びＴＡＳＭ系吸気量演算処理Ｐ３０では、ＡＦＭ検出吸気量ＧＡを用いずに、スロットル開度ＴＡに基づいて吸気量（ＴＡ系吸気量ＭＣ０、ＡＦＭ同期吸気量ＭＣＳＭ）を演算している。すなわち、ＴＡ系吸気量演算処理Ｐ２０及びＴＡＳＭ系吸気量演算処理Ｐ３０は、吸気量をスロットルスピード方式により演算する処理となっている。
【００５９】
一方、修正用吸気量演算処理Ｐ４０では、上記制御周期毎に、エアモデル及びサブモデルの誤差（以下、モデル誤差と記載する）を修正するための修正用吸気量ＭＣＡＤＪの演算が行われる。修正用吸気量演算処理Ｐ４０での修正用吸気量ＭＣＡＤＪの演算に際しては、ＡＦＭ系吸気量演算処理Ｐ４１と演算方式切替処理Ｐ４２とが行われる。また、修正用吸気量演算処理Ｐ４０での修正用吸気量ＭＣＡＤＪの演算には、判定処理Ｐ５０の判定結果と、偏差量演算処理Ｐ６０による偏差量ＤＥＶの演算結果と、が用いられる。判定処理Ｐ５０の内容は、上述した判定処理Ｐ６のものと同じである。
【００６０】
ＡＦＭ系吸気量演算処理Ｐ４１では、吸気管モデルＭ２”及び吸気弁モデルＭ３”を用いて、ＡＦＭ検出吸気量ＧＡに基づくＡＦＭ系吸気量ＭＣＡＦＭの演算が行われる。吸気管モデルＭ３”、吸気弁モデルＭ４”の内容はそれぞれ、吸気管モデルＭ２、吸気弁モデルＭ３と同じである。
【００６１】
こうしたＡＦＭ系吸気量演算処理Ｐ４１でのＡＦＭ系吸気量ＭＣＡＦＭの演算は次のように行われる。まず、ＡＦＭ検出吸気量ＧＡ、及び前回の制御周期における吸気弁モデルＭ３”のインマニ流出吸気量の出力（ＡＦＭ系吸気量ＭＣＡＦＭ）を吸気管モデルＭ２”に入力して、吸気管圧力ＰＭＡとインマニ温度ＴＨＭＡとを演算する。すなわち、ここでは、ＡＦＭ検出吸気量ＧＡがスロットル通過吸気量ＭＴと等しいと見做して吸気管圧力ＰＭＡ及びインマニ温度ＴＨＭＡを求めている。そして、今回の制御周期における吸気管モデルＭ２”の吸気管圧力ＰＭＡ及びインマニ温度ＴＨＭＡの出力と、エンジン回転数ＮＥと、を吸気弁モデルＭ３”に入力するとともに、その入力に応じて同吸気弁モデルＭ３”が出力するインマニ流出吸気量をＡＦＭ系吸気量ＭＣＡＦＭの値として出力している。こうしたＡＦＭ系吸気量演算処理Ｐ４１では、エアフローメータ１３の吸気流量の検出値に基づいて吸気量（ＡＦＭ系吸気量ＭＣＡＦＭ）の演算が行われる。すなわち、ＡＦＭ系吸気量演算処理Ｐ４１は、吸気量をマスフロー方式により演算する処理となっている。
【００６２】
また、修正用吸気量演算処理Ｐ４０では、ＴＡＳＭ系吸気量演算処理Ｐ３０で演算したＡＦＭ同期吸気量ＭＣＳＭに、偏差量演算処理Ｐ６０において演算された偏差量ＤＥＶを加えた和が補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の値として演算されている。後述するように、偏差量ＤＥＶは、脈動小判定時におけるＡＦＭ系吸気量ＭＣＡＦＭに対するＡＦＭ同期吸気量ＭＣＳＭの偏差量を表している。
【００６３】
一方、演算方式切替処理Ｐ４２では、脈動小判定時にはＡＦＭ系吸気量ＭＣＡＦＭを修正用吸気量ＭＣＡＤＪの値として設定する。また、演算方式切替処理Ｐ４２では、脈動大判定時には補正後ＡＦＭ同期吸気量ＭＣＳＭ＊を修正用吸気量ＭＣＡＤＪの値として設定する。
【００６４】
以上のように、脈動小判定時の修正用吸気量演算処理Ｐ４０は、ＡＦＭ系吸気量ＭＣＡＦＭを修正用吸気量ＭＣＡＤＪの値として演算している。また、脈動大判定時の修正用吸気量演算処理Ｐ４０は、ＡＦＭ同期吸気量ＭＣＳＭに偏差量ＤＥＶを加えた和である補正後ＡＦＭ同期吸気量ＭＣＳＭを修正用吸気量ＭＣＡＤＪの値として演算している。上述のようにＡＦＭ系吸気量ＭＣＡＦＭの演算はマスフロー方式で行われ、ＡＦＭ同期吸気量ＭＣＳＭの演算はスロットルスピード方式で行われる。よって、修正用吸気量演算処理Ｐ４０では、脈動小判定時にはマスフロー方式とし、脈動大判定時にはスロットルスピード方式とするように、吸気脈動の大小に応じて修正用吸気量ＭＣＡＤＪの演算方式を切り替えている。
【００６５】
吸気量推定処理Ｐ１０では、以上のＴＡ系吸気量ＭＣ０、ＡＦＭ同期吸気量ＭＣＳＭ、及び修正用吸気量ＭＣＡＤＪから推定吸気量ＭＣ＊を演算している。すなわち、吸気量推定処理Ｐ１０ではまず、修正用吸気量ＭＣＡＤＪからＡＦＭ同期吸気量ＭＣＳＭを引いた差（＝ＭＣＡＤＪ−ＭＣＳＭ）をモデル修正量ΔＭＣの値として演算する。そして、ＴＡ系吸気量ＭＣ０にモデル修正量ΔＭＣを加えた和（＝ＭＣ０＋ΔＭＣ）を推定吸気量ＭＣ＊の値として演算している。
【００６６】
なお、偏差量演算処理Ｐ６０では、脈動小判定時のＡＦＭ系吸気量ＭＣＡＦＭに対するＡＦＭ同期吸気量ＭＣＳＭの偏差量ＤＥＶの演算が行われる。具体的には、偏差量演算処理Ｐ６０では、脈動小判定時に、モデル修正量ΔＭＣ（＝ＭＣＡＤＪ−ＭＣＳＭ）の値に徐々に近づくように偏差量ＤＥＶの値を更新する。なお、脈動大判定時には、偏差量演算処理Ｐ６０での偏差量ＤＥＶの値の更新は行われず、同偏差量ＤＥＶの値は保持される。
【００６７】
ＡＦＭ系吸気量演算処理Ｐ４１では、エアフローメータ１３の吸気流量の検出値であるＡＦＭ検出吸気量ＧＡを吸気管モデルＭ２”に入力してＡＦＭ系吸気量ＭＣＡＦＭを演算している。これに対してＴＡＳＭ系吸気量演算処理Ｐ３０では、ＡＦＭ同期スロットル通過吸気量ＭＴＳＭを吸気管モデルＭ２’に入力してＡＦＭ同期吸気量ＭＣＳＭを演算している。ＡＦＭ同期スロットル通過吸気量ＭＴＳＭは、スロットルモデルＭ１、吸気管モデルＭ２、吸気弁モデルＭ３、エアクリーナモデルＭ４、及びＡＦＭモデルＭ５を通じて求められており、その値には各モデルの誤差が重畳される。そのため、脈動小判定時のエアフローメータ１３の検出精度が低下していない状態でのＡＦＭ系吸気量ＭＣＡＦＭは、ＡＦＭ同期吸気量ＭＣＳＭよりも演算精度の高い値となる。脈動小判定中のＡＦＭ系吸気量ＭＣＡＦＭが正確な値であるとすると、このときのＡＦＭ系吸気量ＭＣＡＦＭに対するＡＦＭ同期吸気量ＭＣＳＭの偏差量ＤＥＶは、ＡＦＭ同期吸気量ＭＣＳＭの演算誤差に相当する値となる。
【００６８】
本実施形態では、脈動小判定時には、ＡＦＭ系吸気量ＭＣＡＦＭを修正用吸気量ＭＣＡＤＪの値として演算するとともに、ＡＦＭ系吸気量ＭＣＡＦＭに対するＡＦＭ同期吸気量ＭＣＳＭの偏差量ＤＥＶを演算している。そして、脈動大判定時には、脈動小判定時に演算した偏差量ＤＥＶをＡＦＭ同期吸気量ＭＣＳＭに加えた和である補正後ＡＦＭ同期吸気量ＭＣＳＭ＊を修正用吸気量ＭＣＡＤＪの値として演算している。このときの補正後ＡＦＭ同期吸気量ＭＣＳＭ＊は、脈動小判定時に確認された誤差分の補償をＡＦＭ同期吸気量ＭＣＳＭに施した値となる。そのため、吸気脈動が大きい状態にあるときの修正用吸気量ＭＣＡＤＪを精度良く演算できる。また、演算方式の切り替え前後の修正用吸気量ＭＣＡＤＪの値に段差が生じることが抑えられる。
【００６９】
ちなみに、燃料噴射量ＱＩＮＪは直接には、推定吸気量ＭＣ＊に基づいて決定されている。ただし、そうした推定吸気量ＭＣ＊の演算には修正用吸気量ＭＣＡＤＪが用いられており、修正用吸気量ＭＣＡＤＪも、燃料噴射量ＱＩＮＪの決定に用いられる吸気量の演算値となっている。また、本実施形態では、ＡＦＭ系吸気量演算処理Ｐ４１が、エアフローメータ１３の吸気流量の検出値に基づいて吸気量を演算する第１吸気量演算処理に対応している。さらに本実施形態では、ＴＡＳＭ系吸気量演算処理Ｐ３０が、吸気流量の検出値を用いずに、スロットル開度ＴＡに基づいて吸気量を演算する第２吸気量演算処理に対応している。そして、本実施形態では、ＡＦＭ系吸気量ＭＣＡＦＭが第１吸気量に、ＡＦＭ同期吸気量ＭＣＳＭが第２吸気量に、補正後ＡＦＭ同期吸気量ＭＣＳＭ＊が補正後第２吸気量に、それぞれ対応している。
【００７０】
（第３実施形態の変形例）
第３実施形態のエンジン制御装置では、脈動小判定時には、ＡＦＭ系吸気量ＭＣＡＦＭを修正用吸気量ＭＣＡＤＪの値として設定するとともに、ＡＦＭ系吸気量ＭＣＡＦＭに対するＡＦＭ同期吸気量ＭＣＳＭの偏差量ＤＥＶを演算していた。そして、脈動大判定時には、その偏差量ＤＥＶをＡＦＭ同期吸気量ＭＣＳＭに加えた和を修正用吸気量ＭＣＡＤＪの値として設定するようにしていた。こうした場合、偏差量ＤＥＶの値として適切な値が演算されていれば、脈動小判定から脈動大判定への切り替わりに際しては、その切り替わりの前後の修正用吸気量ＭＣＡＤＪの値に段差は殆ど生じないようになる。
【００７１】
一方、ＡＦＭ系吸気量演算処理Ｐ４１では、吸気管モデルＭ２”により吸気管圧力ＰＭＡを演算するとともに、その吸気管圧力ＰＭＡを用いてＡＦＭ系吸気量ＭＣＡＦＭを演算している。吸気管モデルＭ２”では、ＡＦＭ検出吸気量ＧＡ等に基づき、吸気管圧力の時間当りの変化量を求めた上で、その変化量ずつ値を更新していくことで、吸気管圧力ＰＭＡを演算している。こうした場合、脈動大判定中のＡＦＭ系吸気量ＭＣＡＦＭの値には誤差が生じ、その後に脈動小判定に切り替わった後にもその誤差が残ってしまうため、脈動大判定から脈動小判定への切り替わり後に修正用吸気量ＭＣＡＤＪの演算精度が低下することがある。
【００７２】
図９に、第３実施形態のエンジン制御装置において、判定処理Ｐ５０の判定結果が脈動大判定から脈動小判定に切り替わったときの脈動大フラグ、ＡＦＭ同期吸気管圧力ＰＭＳＭ，吸気管圧力ＰＭＡ、ＡＦＭ同期吸気量ＭＣＳＭ、ＡＦＭ系吸気量ＭＣＡＦＭ、及び修正用吸気量ＭＣＡＤＪの値の推移状況の一例を示す。
【００７３】
ＡＦＭ系吸気量演算処理Ｐ４１でのＡＦＭ系吸気量ＭＣＡＦＭの演算は、脈動大判定時にも続けられる。このときの吸気管モデルＭ２”では、吸気脈動による検出精度が低下したエアフローメータ１３の検出値であるＡＦＭ検出吸気量ＧＡに基づき、吸気管圧力の時間当りの変化量の演算が行われる。そのため、演算された時間当りの変化量が不正確な値となって、吸気管モデルＭ２”で演算した吸気管圧力ＰＭＡに誤差が生じることがある。
【００７４】
その後に吸気脈動が減少してエアフローメータ１３の検出精度が回復すると、吸気管圧力の時間当たりの変化量は適切に演算できるようになる。しかしながら、それまでに生じた吸気管圧力ＰＭＡの誤差は、そのまま残ってしまう。そして、誤差が生じた吸気管圧力ＰＭＡに基づき演算されたＡＦＭ系吸気量ＭＣＡＦＭの値にも誤差が生じてしまう。脈動大判定から脈動小判定への切り替わると、誤差が生じたＡＦＭ系吸気量ＭＣＡＦＭの値が修正用吸気量ＭＣＡＤＪの値として設定される。そのため、脈動大判定から脈動小判定への切り替わり後に、修正用吸気量ＭＣＡＤＪの演算精度が低下することがある。このときの修正用吸気量ＭＣＡＤＪの演算精度の低下は、ＡＦＭ系吸気量演算処理Ｐ４１の処理内容を下記のように変更することで回避することができる。
【００７５】
上述のようにＴＡＳＭ系吸気量演算処理Ｐ３０では、吸気管モデルＭ２’により演算したＡＦＭ同期吸気管圧力ＰＭＳＭを用いてＡＦＭ同期吸気量ＭＣＳＭを演算している。ＡＦＭ同期吸気管圧力ＰＭＳＭの演算はＡＦＭ検出吸気量ＧＡを用いずに行われるため、脈動大判定時のエアフローメータ１３の検出精度の低下時にも、ＡＦＭ同期吸気管圧力ＰＭＳＭは比較的正確に求められている。そこで、脈動大判定から脈動小判定への切り替わりに際して、ＡＦＭ系吸気量演算処理Ｐ４１で用いる吸気管モデルＭ２”の吸気管圧力ＰＭＡの値を、ＡＦＭ同期吸気管圧力ＰＭＳＭの値に置き換えるようにする。
【００７６】
図１０に示すように、こうした場合には、脈動大判定中に吸気管圧力ＰＭＡの値に誤差が生じた状態となっても、脈動小判定への切り替わりとともに、その値がより適切な値に置き換えられる。そして、これと同時に、脈動大判定中に生じたＡＦＭ系吸気量ＭＣＡＦＭの誤差も正される。そのため、脈動大判定から脈動小判定への切り替わり後にも、修正用吸気量ＭＣＡＤＪを精度良く演算することができる。なお、エンジン１０の吸気通路１１に吸気管圧力センサ３１が設けられている場合には、脈動大判定から脈動小判定への切り替わりに際して吸気管圧力ＰＭＡの値を、吸気管圧力センサ３１が検出した吸気管圧力ＰＭに置き換えるようにしてもよい。
【００７７】
（第４実施形態）
第３実施形態のエンジン制御装置では、偏差量演算処理Ｐ６０において、脈動小判定時にＡＦＭ系吸気量ＭＣＡＦＭに対するＡＦＭ同期吸気量ＭＣＳＭの偏差量ＤＥＶを演算していた。ＡＦＭ系吸気量ＭＣＡＦＭに対するＡＦＭ同期吸気量ＭＣＳＭの偏差量ＤＥＶは、エアフローメータ１３の検出特性、スロットルバルブ１４の開度特性などの個体差や経時変化によって変化する。また、エンジン１０の運転状態によっても、偏差量ＤＥＶの値は変化する。そのため、脈動小判定から脈動大判定への切り替わりの時点での偏差量ＤＥＶが適切な値であっても、脈動大判定の継続中にエンジン１０の運転領域が変化すれば、偏差量ＤＥＶがその運転領域では不適切な値となってしまうことがある。そこで、本実施形態では、エンジン１０の運転状態に応じて区分けされた複数の偏差量学習領域ごとに偏差量ＤＥＶの学習を行うようにしている。
【００７８】
図１１に、本実施形態での偏差量学習領域の設定を示す。同図の線Ｌは、エンジン１０の運転領域におけるエンジン回転数毎の吸気管圧力の最高値を示している。また、同図にハッチングで示される脈動領域は、エアフローメータ１３の検出精度の低下を招く程度の大きい吸気脈動が発生するエンジン１０の運転領域を示している。同図に示すように、脈動領域は、吸気管圧力が高い運転領域に限定されている。そのため、本実施形態では、吸気管圧力が規定値ＰＭＨ以上の運転領域を、エンジン回転数ＮＥに応じて区分けすることで、複数（同図の例では５つ）の偏差量学習領域を設定している。
【００７９】
以下の説明では、５つの偏差量学習領域を、エンジン回転数ＮＥの小さい側から順に、偏差量学習領域Ｒ［１］、偏差量学習領域Ｒ［２］、偏差量学習領域Ｒ［３］、偏差量学習領域Ｒ［４］、偏差量学習領域Ｒ［５］とそれぞれ記載する。また、「ｉ」を１、２、３、４、５のいずれかとしたときの偏差量学習領域Ｒ［ｉ］の偏差量ＤＥＶの学習値を偏差量学習値ＤＥＶ［ｉ］と記載する。
【００８０】
図１２に、偏差量の学習のため、電子制御ユニット２５が実行する偏差量学習ルーチンのフローチャートを示す。電子制御ユニット２５は、エンジン１０の運転中、規定の制御周期毎に本ルーチンの処理を実行している。
【００８１】
本ルーチンの処理が開始されると、まずステップＳ２００において、学習実行条件が成立しているか否かが判定される。そして、学習実行条件が不成立の場合（ＮＯ）には、そのまま今回の本ルーチンの処理が終了される。なお、学習実行条件は、（イ）偏差量学習領域Ｒ［１］〜Ｒ［５］のいずれかでエンジン１０が運転中であること、（ロ）エンジン１０の運転条件が変化する過渡時でないこと、（ハ）エンジン１０の暖機が完了していること、（ニ）センサやアクチュエータ系に異常がないこと、のすべてが満たされることを成立の要件としている。
【００８２】
学習実行条件が成立している場合（Ｓ２００：ＹＥＳ）、ステップＳ２１０に処理が進められ、そのステップＳ２１０において、脈動小判定時であるか否かが判定される。そして、脈動小判定時である場合（ＹＥＳ）にはステップＳ２２０に処理が進められ、脈動小判定時でない場合（ＮＯ）、すなわち脈動大判定時には、そのまま今回の本ルーチンの処理が終了される。
【００８３】
ステップＳ２２０に処理が進められると、そのステップＳ２２０において、モデル修正量ΔＭＣから現学習領域の偏差量学習値ＤＥＶ［ｉ］を引いた差（ΔＭＣ−ＤＥＶ［ｉ］）がずれ量ＤＩの値として演算される。なお、脈動小判定時におけるモデル修正量ΔＭＣの値は、ＡＦＭ系吸気量ＭＣＡＦＭからＡＦＭ同期吸気量ＭＣＳＭを引いた差（＝ＭＣＡＦＭ−ＭＣＳＭ）となっている。
【００８４】
続いて、ステップＳ２３０において、エンジン１０が現在運転中の偏差量学習領域（以下、現学習領域と記載する）の偏差量学習値ＤＥＶ［ｉ］の学習が未完了であるか否かが判定される。ここで、現学習領域の偏差量学習値ＤＥＶ［ｉ］の学習が未完了の場合（ＹＥＳ）にはステップＳ２４０に処理が進められ、完了している場合（ＮＯ）にはステップＳ２７０に処理が進められる。
【００８５】
現学習領域の学習が未完了であり、ステップＳ２４０に処理が進められると、そのステップＳ２４０において、ずれ量ＤＩの絶対値が規定の収束判定値εを超過しているか否かが判定される。ここで、ずれ量ＤＩの絶対値が収束判定値εを超過した値である場合（Ｓ２４０：ＹＥＳ）には、ステップＳ２５０に処理が進められる。これに対して、ずれ量ＤＩの絶対値が収束判定値ε以下の値である場合（Ｓ２４０：ＮＯ）には、ステップＳ２６０に処理が進められ、そのステップＳ２６０において現学習領域の学習の完了を記録した上で、今回の本ルーチンの処理が終了される。
【００８６】
ステップＳ２５０に処理が進められると、そのステップＳ２５０において、ずれ量ＤＩに応じて現学習領域の偏差量学習値ＤＥＶ［ｉ］の値の更新が行われた後、今回の本ルーチンの処理が終了される。偏差量学習値ＤＥＶ［ｉ］の値の更新は、次のように行われる。すなわち、まず、ずれ量ＤＩから更新量ΔＤＥＶの値が求められる。図１３に示すように、更新量ΔＤＥＶの値は、ずれ量ＤＩと正負が同じであり、ずれ量ＤＩの絶対値よりも絶対値が小さい値となり、且つずれ量ＤＩの絶対値が大きいときには同ずれ量ＤＩの絶対値が小さいときよりも絶対値が大きい値となるように設定される。そして、更新前の値に更新量ΔＤＥＶを加えた和が更新後の値となるように、現学習領域の偏差量学習値ＤＥＶ［ｉ］の値が更新される。
【００８７】
これに対して、現学習領域の学習が完了しており（Ｓ２３０：ＮＯ）、ステップＳ２７０に処理が進められた場合には、そのステップＳ２７０において、ずれ量ＤＩの絶対値が規定の乖離判定値ζ以上の値であるか否かが判定される。乖離判定値ζには、収束判定値εよりも大きい値が設定されている。ここで、ずれ量ＤＩの絶対値が乖離判定値ζ未満の場合（ＮＯ）にはそのまま今回の本ルーチンの処理が終了される。一方、ずれ量ＤＩの絶対値が乖離判定値ζ以上の場合（ＹＥＳ）には、ステップＳ２８０に処理が進められる。そして、ステップＳ２８０において現学習領域の学習状況を完了から未完了に戻した上で、上述のステップＳ２５０での偏差量学習値ＤＥＶ［ｉ］の値の更新が行われる。
【００８８】
なお、第１実施形態や第２実施形態での偏差量演算処理Ｐ７においても、同様の偏差量の学習を行うようにしてもよい。この場合には、上記偏差量学習ルーチンのステップＳ２２０において、第１吸気量ＭＣ１と第２吸気量ＭＣ２，ＭＣ２＊との差から現学習領域の偏差量学習値ＤＥＶ［ｉ］を引いた差をずれ量ＤＩの値として演算することになる。
【００８９】
（第５実施形態）
第４実施形態では、脈動領域を含む吸気管圧力の高い運転領域（高負荷運転領域）に各偏差量学習領域を設定していたが、エンジン１０の高負荷運転領域での運転機会があまり無い場合には、学習の完了に長い時間が必要となる。本実施形態のエンジン制御装置は、そうした場合にも学習をより早く完了できるよう、偏差量学習ルーチンの内容を変更したものとなっている。
【００９０】
図１４に、本実施形態での偏差量学習領域の区分け態様を示す。同図の線Ｌは、エンジン回転数毎の吸気管圧力の最高値を示している。同図に示すように、本実施形態では、第３実施形態と同様の、高負荷運転領域に設定された５つの偏差量学習領域Ｒ［１］〜Ｒ［５］に加え、吸気管圧力が規定値ＰＭＨ未満の運転領域にも偏差量学習領域Ｒ［６］〜Ｒ［１０］を設定している。
【００９１】
図１５に、本実施形態のエンジン制御装置において電子制御ユニット２５が実行する学習値更新ルーチンのフローチャートを示す。本実施形態では、図１２の偏差量学習ルーチンにおいて、ステップＳ２５０の処理の代わりに、本ルーチンの処理を実行している。
【００９２】
本ルーチンの処理が開始されると、まずステップＳ２５１において、上述した１０個の偏差量学習領域Ｒ［１］〜Ｒ［１０］の全てにおいて偏差量学習値ＤＥＶ［ｉ］の学習が未完了であるか否かが判定される。ここで、学習が完了した偏差量学習領域が一つでも存在する場合（ＮＯ）には、ステップＳ２５２に処理が進められ、そのステップＳ２５２において、現学習領域の偏差量学習値ＤＥＶ［ｉ］の値が更新された後、今回の本ルーチンの処理が終了される。なお、本ルーチンにおけるステップＳ２５２での偏差量学習値ＤＥＶ［ｉ］の値の更新は、第３実施形態におけるステップＳ２５０と同様に行われる。
【００９３】
これに対して、全ての偏差量学習領域で偏差量学習値の学習が未完了である場合（Ｓ２５１：ＹＥＳ）にはステップＳ２５３に処理が進められる。そして、ステップＳ２５３において、全ての偏差量学習領域Ｒ［１］〜Ｒ［１０］の偏差量学習値ＤＥＶ［１］〜ＤＥＶ［１０］の値が一斉更新された後、今回の本ルーチンの処理が終了される。すなわち、ステップＳ２５３では、ずれ量ＤＩから更新量ΔＤＥＶが求められた後、その更新量ΔＤＥＶを更新前の値に加えた和が更新後の値となるように、全ての偏差量学習領域Ｒ［１］〜Ｒ［１０］の偏差量学習値ＤＥＶ［１］〜ＤＥＶ［１０］の値が一括更新される。
【００９４】
偏差量ＤＥＶのうち、エアフローメータ１３の検出特性やスロットルバルブ１４の開度特性の個体差により生じる分の偏差は、エンジン１０の運転領域全体で共通した傾向をもって現れることが多い。本実施形態のエンジン制御装置では、偏差量学習領域Ｒ［１］〜［１０］の何れかで偏差量ＤＥＶの学習が完了するまでは、全ての偏差量学習領域Ｒ［１］〜Ｒ［１０］の偏差量学習値ＤＥＶ［１］〜ＤＥＶ［１０］の値を一括して更新している。この期間には、偏差量学習領域Ｒ［ｉ］を区別せずに一括して、エンジン１０の運転領域全体で共通した傾向をもって現れる分の偏差の学習が行われることになる。そしてその後、偏差量学習領域Ｒ［ｉ］の間での偏差量ＤＥＶの相違分が各々の偏差量学習領域Ｒ［ｉ］毎に個別に行われるようになる。そのため、各偏差量学習領域Ｒ［１］〜Ｒ［１０］の偏差量ＤＥＶの学習に要する期間を短縮できる。
【００９５】
（第６実施形態）
演算方式間の吸気量の演算値の偏差の量は、個体差や経時変化により生じるエンジン１０の個々の機体の状態によって変化する。一方、上記偏差には、演算方式の違いにより必然的に生じる部分があり、そうした部分についてはエンジン１０の個々の機体の状態に依らず、普遍的に表れるものとなっている。このように、演算方式間の吸気量の演算値の偏差には、エンジン１０の個々の機体の状態に依存する部分（以下、機体依存分と記載する）と、依存しない部分（以下、機体非依存分と記載する）とが存在する。そして、そのうちの機体非依存分については、計測等により予め確認しておくことができる。すなわち、複数のエンジン１０において、各演算方式の吸気量の演算値の偏差を運転領域毎に測定するとともに、上記複数のエンジンの運転領域毎の測定値の平均を取ることで、各運転領域における機体非依存分の量を求めることができる。
【００９６】
本実施形態では、そうした運転領域毎の偏差の機体非依存分の量をマップ化したもの（以下、シフト補正マップと記載する）を電子制御ユニット２５のメモリ２７に予め記憶しておくようにいる。シフト補正マップには、エンジン回転数ＮＥ及びエンジン負荷と、上記偏差の機体非依存分の量との関係が記憶されている。なお、エンジン負荷の指標値としては、吸気管圧力、スロットル開度ＴＡ、負荷率などを用いることができる。負荷率とは、吸気量を最大吸気量に対する比率として表した値であり、最大吸気量は、現在のエンジン回転数ＮＥにおいてスロットル開度ＴＡを最大とした状態でエンジン１０を定常運転したときの吸気量を表している。本実施形態では、エンジン負荷の指標値として吸気管圧力を用いてシフト補正マップを構成した場合を例として説明する。
【００９７】
シフト補正マップは、図１６に示すようにエンジン回転数ＮＥにより区分けされた複数（同図の例では１５個）のシフト補正領域毎にそれぞれ個別に用意されている。図１７に示すように、各シフト補正領域のシフト補正マップには、予め計測等で求めた該当シフト補正領域における機体非依存分の量と吸気管圧力との関係が、シフト補正量ＳＦＴとＡＦＭ同期吸気管圧力ＰＭＳＭとの関係として記憶されている。そして、本実施形態では、こうしたシフト補正量ＳＦＴを、偏差量学習値ＤＥＶ［ｉ］の更新量ΔＤＥＶの演算、及び補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の演算に適用している。
【００９８】
図１８に、本実施形態における偏差量学習値ＤＥＶ［ｉ］の更新量ΔＤＥＶの演算に係る処理の流れを示す。なお、同図の処理は、第４実施形態のエンジン制御装置における偏差量学習ルーチン（図１２）のステップＳ２２０、ステップＳ２５０の処理に対応している。
【００９９】
更新量ΔＤＥＶの演算に際してはまず、修正用吸気量ＭＣＡＤＪからＡＦＭ同期吸気量ＭＣＳＭを引いた差がモデル修正量ΔＭＣの値として求められる。なお、更新量ΔＤＥＶの演算が行われるのは脈動小判定時であり（図１２参照）、このときの修正用吸気量演算処理Ｐ４０はＡＦＭ系吸気量ＭＣＡＦＭを修正用吸気量ＭＣＡＤＪの値として設定している。
【０１００】
第４実施形態では、このモデル修正量ΔＭＣから更新前の偏差量学習値ＤＥＶ［ｉ］を引いた差をずれ量ＤＩとして求め、そのずれ量ＤＩに基づき更新量ΔＤＥＶの値を演算していた。これに対して本実施形態では、モデル修正量ΔＭＣからシフト補正量ＳＦＴを引き、更に偏差量学習値ＤＥＶ［ｉ］の更新前の値を引いた差（＝ΔＭＣ−ＳＦＴ−ＤＥＶ［ｉ］）をずれ量ＤＩの値として求めている。シフト補正量ＳＦＴは、シフト補正量演算処理Ｐ７０により演算される。シフト補正量演算処理Ｐ７０では、エンジン回転数ＮＥ及びＡＦＭ同期吸気管圧力ＰＭＳＭに基づき、シフト補正マップを用いてシフト補正量ＳＦＴの値を演算している。そして、第４実施形態の場合と同様に図１３に示す関係を満たすように、ずれ量ＤＩから更新量ΔＤＥＶの値が演算されている。
【０１０１】
図１９に、本実施形態における補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の演算に係る処理の流れを示す。同図に示すように本実施形態では、ＡＦＭ同期吸気量ＭＣＳＭ、偏差量学習値ＤＥＶ［ｉ］、及びシフト補正量演算処理Ｐ７０により演算したシフト補正量ＳＦＴの３値を加えた和が補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の値として演算されている。
【０１０２】
こうした本実施形態では、ＡＦＭ系吸気量ＭＣＡＦＭ、ＡＦＭ同期吸気量ＭＣＳＭ間の偏差の機体非依存分が、シフト補正量ＳＦＴによる補正により予め織り込まれた状態で偏差量学習値ＤＥＶ［ｉ］の学習が行われる。そのため、偏差量学習値ＤＥＶ［ｉ］には、上記偏差のうち、機体依存分だけを学習すればよいことになる。したがって、本実施形態では、偏差量学習値ＤＥＶ［ｉ］の学習を早期に完了することができる。
【０１０３】
（第７実施形態）
演算方式間の吸気量の演算値の偏差量ＤＥＶは、吸気の温度や圧力などの環境条件によっても変化する。そのため、環境条件の異なった状態で学習を行えば、その学習の結果にばらつきが生じてしまうことになる。そこで、本実施形態では、環境条件による学習精度の低下を抑えるための環境補正を行っている。なお、吸気温度ＴＨＡ、外気温、エンジン水温、エンジン油温、吸気ポート１８の壁面温度などの温度条件や、大気圧ＰＡやサージタンク圧、過給エンジンにおける過給圧などの圧力条件が上記のような環境条件に該当する。本実施形態では、吸気温度ＴＨＡに応じた環境補正を行う場合を例に説明する。
【０１０４】
本実施形態のエンジン制御装置では、吸気温度ＴＨＡに応じた環境補正のための環境補正係数ＥＮＶを演算するための環境補正係数演算処理Ｐ８０（図２１、２２参照）を行っている。環境補正係数演算処理Ｐ８０では、吸気温度ＴＨＡに応じて環境補正係数ＥＮＶが演算される。
【０１０５】
吸気温度ＴＨＡ毎の環境補正係数ＥＮＶの値は、次のような測定結果に基づき、予め定められている。すなわち、複数のエンジン１０において、吸気温度ＴＨＡ以外の条件を一定とした状態で、吸気温度ＴＨＡを変化させながらＡＦＭ系吸気量ＭＣＡＦＭとＡＦＭ同期吸気量ＭＣＳＭとの偏差を測定する。そして、各エンジン１０の吸気温度ＴＨＡ毎の測定値の平均から、環境補正係数ＥＮＶの値が定められている。
【０１０６】
図２０に、上記測定における各エンジン１０のＡＦＭ系吸気量ＭＣＡＦＭ及びＡＦＭ同期吸気量ＭＣＳＭの平均値と吸気温度ＴＨＡとの関係を示す。ここで、吸気温度ＴＨＡが既定の基準温度ＴＨＡ０であるときのＡＦＭ系吸気量ＭＣＡＦＭ及びＡＦＭ同期吸気量ＭＣＳＭの平均値の偏差量を基準偏差量ΔＳＴとする。このときの各吸気温度ＴＨＡにおけるＡＦＭ系吸気量ＭＣＡＦＭ及びＡＦＭ同期吸気量ＭＣＳＭの平均値の偏差量を基準偏差量ΔＳＴで割った商が、各吸気温度ＴＨＡにおける環境補正係数ＥＮＶの値として設定されている。
【０１０７】
図２１に、本実施形態における偏差量学習値ＤＥＶ［ｉ］の更新量ΔＤＥＶの演算に係る処理の流れを示す。なお、同図の処理は、第４実施形態のエンジン制御装置における偏差量学習ルーチン（図１２）のステップＳ２２０、ステップＳ２５０の処理に対応している。
【０１０８】
更新量ΔＤＥＶの演算に際してはまず、修正用吸気量ＭＣＡＤＪからＡＦＭ同期吸気量ＭＣＳＭを引いた差がモデル修正量ΔＭＣの値として求められる。なお、更新量ΔＤＥＶの演算が行われるのは脈動小判定時であり（図１２参照）、このときの修正用吸気量演算処理Ｐ４０はＡＦＭ系吸気量ＭＣＡＦＭを修正用吸気量ＭＣＡＤＪの値として設定している。
【０１０９】
本実施形態では、モデル修正量ΔＭＣを環境補正係数ＥＮＶで割った商から偏差量学習値ＤＥＶ［ｉ］の更新前の値を引いた差（＝ΔＭＣ／ＥＮＶ−ＤＥＶ［ｉ］）が、ずれ量ＤＩの値として求められる。そして、図１３に示す関係を満たすように、ずれ量ＤＩから更新量ΔＤＥＶの値が演算される。
【０１１０】
図２２に、本実施形態における補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の演算に係る処理の流れを示す。同図に示すように本実施形態では、偏差量学習値ＤＥＶ［ｉ］に環境補正係数ＥＮＶを掛けた積に、ＡＦＭ同期吸気量ＭＣＳＭを加えた和（＝ＭＣＳＭ＋ＤＥＶ［ｉ］×ＥＮＶ）を、補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の値として演算している。
【０１１１】
更新量ΔＤＥＶの演算は、脈動小判定時に行われ、その脈動小判定時のモデル修正量ΔＭＣの値は、ＡＦＭ系吸気量ＭＣＡＦＭに対するＡＦＭ同期吸気量ＭＣＳＭの偏差量となる。また、更新量ΔＤＥＶの演算では、モデル修正量ΔＭＣを環境補正係数ＥＮＶで除算していたが、補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の演算では、モデル修正量ΔＭＣに環境補正係数ＥＮＶを乗算している。ここで、更新量ΔＤＥＶの演算時におけるモデル修正量ΔＭＣに対する環境補正係数ＥＮＶの補正を環境補正とする。このときの補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の演算時における偏差量学習値ＤＥＶ［ｉ］に対する環境補正係数ＥＮＶの補正は、上記環境補正の逆補正となる。このように本実施形態では、偏差量演算処理Ｐ６０における偏差量の学習は、エンジン１０の環境条件に応じた環境補正を偏差量（モデル修正量ΔＭＣ）に施した値に基づいて偏差量学習値ＤＥＶ［ｉ］の値を更新することで行われている。そして、偏差量学習値ＤＥＶ［ｉ］に対して上記環境補正の逆補正を施した値を偏差量ＤＥＶの値として用いて補正後ＡＦＭ同期吸気量ＭＣＳＭ＊が演算されている。
【０１１２】
こうした本実施形態では、環境補正により、吸気温度ＴＨＡによる偏差量ＤＥＶの変化分が予め反映された状態で偏差量学習値ＤＥＶ［ｉ］の学習が行われる。そのため、環境条件（吸気温度ＴＨＡ）の違いによる偏差量ＤＥＶのばらつきが偏差量学習値ＤＥＶ［ｉ］に反映されにくくなり、学習精度が向上する。
【０１１３】
なお、図２３に示す態様で、偏差量学習値ＤＥＶ［ｉ］の更新を行うようにしてもよい。同図の場合、モデル修正量ΔＭＣから偏差量学習値ＤＥＶ［ｉ］の更新前の値を引いた差がずれ量ＤＩの値として求められ、そのずれ量ＤＩから更新量ΔＤＥＶが演算される。そして、偏差量学習値ＤＥＶ［ｉ］の更新前の値に更新量ΔＤＥＶを加えた和を、環境補正係数ＥＮＶで除算した商が更新後の値となるように、偏差量学習値ＤＥＶ［ｉ］の値を更新する。
【０１１４】
外気温、エンジン水温、エンジン油温、吸気ポート１８の壁面温度、大気圧ＰＡ、サージタンク圧、過給エンジンにおける過給圧などの、エンジン１０の環境条件となる吸気温度ＴＨＡ以外の状態量に基づき環境補正を行うようにしてもよい。また、複数の状態に基づき環境補正を行うようにしてもよい。そうした場合の図２１〜図２２における環境補正係数ＥＮＶの値は、各状態量の環境補正係数のそれぞれを乗算した積となる。
【０１１５】
以上説明した各実施形態は、以下のように変更して実施することができる。上記各実施形態及び以下の変更例は、技術的に矛盾しない範囲で互いに組み合わせて実施することができる。
【０１１６】
・第６実施形態におけるシフト補正量演算処理Ｐ７０では、エンジン回転数ＮＥと吸気管圧力（ＡＦＭ同期吸気管圧力ＰＭＳＭ）とに基づいてシフト補正量ＳＦＴを演算していた。こうしたシフト補正量演算処理Ｐ７０において、スロットル開度ＴＡや負荷率などのエンジン１０の負荷の指標値となる他のパラメータを吸気管圧力の代わりに用いてシフト補正量ＳＦＴを演算するようにしてもよい。
【０１１７】
・第７実施形態では、偏差量学習値ＤＥＶ［ｉ］の更新量ΔＤＥＶの演算に際してのモデル修正量ΔＭＣを対象としたエンジン１０の環境条件に応じた環境補正を、環境補正係数ＥＮＶの除算により行うようにしていた。こうした環境補正を、エンジン１０の環境条件に応じて設定した補正量ＥＮＶ＊をモデル修正量ΔＭＣから減算することで行うようにしてもよい。なお、この場合には、補正後ＡＦＭ同期吸気量ＭＣＳＭ＊の演算時における偏差量学習値ＤＥＶ［ｉ］の補正は、上記環境補正の逆補正となるように、すなわち偏差量学習値ＤＥＶ［ｉ］に補正量ＥＮＶ＊を加算することで行われることになる。ちなみに、図２０に示した吸気温度ＴＨＡと偏差量との関係に基づく環境補正を行う場合、次のように補正量ＥＮＶ＊を設定するとよい。すなわち、この場合には、各吸気温度ＴＨＡにおけるＡＦＭ系吸気量ＭＣＡＦＭ及びＡＦＭ同期吸気量ＭＣＳＭの平均値の偏差量を基準偏差量ΔＳＴで引いた差を、各吸気温度ＴＨＡにおける環境補正係数ＥＮＶの値として設定するとよい。
【０１１８】
・判定処理Ｐ６，Ｐ５０では、ＡＦＭ検出吸気量ＧＡから演算した脈動率ＲＴＥに基づき、吸気脈動が大きい状態にあるか否かの判定を行っていたが、同判定をそれ以外の方法で行うようにしてもよい。例えば、最大値ＧＭＡＸから最小値ＧＭＩＮを引いた差が規定の判定値以上であるか否かにより上記判定を行う、エンジン１０の運転状態（エンジン回転数ＮＥ、推定吸気量など）に基づいて上記判定を行う、といった方法でも吸気脈動が大きい状態にあるか否かを判定できる。
【０１１９】
・第４実施形態、第５実施形態のエンジン制御装置における偏差量学習領域の設定態様は、例示したものに限らず適宜変更してもよい。
・第３〜第７実施形態のエンジン制御装置は、エアモデルを過給エンジンに対応したものに置き換えることで過給エンジンに適用することができる。
【符号の説明】
【０１２０】
１０…エンジン、１１…吸気通路、１２…エアクリーナ、１３…エアフローメータ、１４…スロットルバルブ、１５…スロットルモータ、１６…スロットルセンサ、１７…吸気マニホールド、１８…吸気ポート、１９…燃焼室、２０…インジェクタ、２１…点火プラグ、２２…クランクシャフト、２３…吸気弁、２４…排気弁、２５…電子制御ユニット（エンジン制御装置）、２６…演算処理回路、２７…メモリ、２８…吸気温度センサ、２９…大気圧センサ、３０…クランク角センサ、Ｐ１…吸気量演算処理、Ｐ２…噴射量決定処理、Ｐ３…インジェクタ駆動処理、Ｐ４…第１吸気量演算処理、Ｐ５…第２吸気量演算処理、Ｐ６，Ｐ５０…判定処理、Ｐ７，Ｐ６０…偏差量演算処理、Ｐ１０…吸気量推定処理、Ｐ２０…ＴＡ系吸気量演算処理、Ｐ３０…ＴＡＳＭ系吸気量演算処理（第２吸気量演算処理）、Ｐ４０…修正用吸気量演算処理（吸気量演算処理）、Ｐ４１…ＡＦＭ系吸気量演算処理（第１吸気量演算処理）。
【図１】
2020012387.tif 000008
【図２】
2020012387.tif 000009
【図３】
2020012387.tif 000010
【図４】
2020012387.tif 000011
【図５】
2020012387.tif 000012
【図６】
2020012387.tif 000013
【図７】
2020012387.tif 000014
【図８】
2020012387.tif 000015
【図９】
2020012387.tif 000016
【図１０】
2020012387.tif 000017
【図１１】
2020012387.tif 000018
【図１２】
2020012387.tif 000019
【図１３】
2020012387.tif 000020
【図１４】
2020012387.tif 000021
【図１５】
2020012387.tif 000022
【図１６】
2020012387.tif 000023
【図１７】
2020012387.tif 000024
【図１８】
2020012387.tif 000025
【図１９】
2020012387.tif 000026
【図２０】
2020012387.tif 000027
【図２１】
2020012387.tif 000028
【図２２】
2020012387.tif 000029
【図２３】
2020012387.tif 000030