"アクチュエータの操作によりEGR率を制御可能なディーゼルエンジンの制御装置であって、燃料噴射装置に対する指令燃料噴射量を決定する手段と、エアフローメータによって計測された新気量を取得する手段と、空燃比センサによって計測された空燃比を取得する手段と、燃料量補正係数によって補正された指令燃料噴射量と新気量補正係数によって補正された新気量とに基づいて推定空燃比を算出する手段と、前記計測空燃比と前記推定空燃比とのずれに基づいてフィードバック項を算出する手段と、前記フィードバック項から学習した学習項を記憶する手段と、前記フィードバック項と前記学習項との和に基づいてフィードバック補正係数を算出する手段と、前記フィードバック補正係数を所定の比率で前記燃料量補正係数と前記新気量補正係数とに振り分ける手段と、前記燃料量補正係数による補正後指令燃料噴射量と環境条件とに基づいて目標EGR率を算出する手段と、前記新気補正係数による補正後新気量に基づいて推定EGR率を算出する手段と、前記目標EGR率と前記推定EGR率とのずれに基づくフィードバック制御によって前記アクチュエータを操作する手段と、を備える制御装置において、補正前の指令燃料噴射量と環境条件とに基づいて目標EGR率以下、無補正目標EGR率を算出する手段と、補正前の新気量に基づいて推定EGR率以下、無補正推定EGR率を算出する手段と、前記目標EGR率、前記推定EGR率、前記無補正目標EGR率及び前記無補正推定EGR率を用いて実際のEGR率の予想変化量以下、予想実EGR率変化量を算出する手段と、前記予想実EGR率変化量の正負の符号と前記フィードバック補正係数とが整合しない場合、前記フィードバック補正係数の計算への前記学習項の使用を禁止する手段と、を備えることを特徴とするディーゼルエンジンの制御装置。前記予想実EGR率変化量の正負の符号と前記フィードバック補正係数とが整合しない場合、前記フィードバック補正係数を標準値に固定する手段をさらに備えることを特徴とする請求項1に記載のディーゼルエンジンの制御装置。前記予想実EGR率変化量の正負の符号と前記フィードバック補正係数とが整合しない場合、前記フィードバック項に含まれるI項の値をゼロにリセットする手段をさらに備えることを特徴とする請求項1又は2に記載のディーゼルエンジンの制御装置。本発明は、目標EGR率と推定EGR率とを一致させるためのEGR制御と、空燃比センサによる計測空燃比と推定空燃比とを一致させるための空燃比学習とを行うディーゼルエンジンの制御装置において、EGR率の意図に反する変化を招く空燃比学習の誤動作を防止することを課題とする。上記の課題を解決するために、本発明は、次のように動作するように構成されたディーゼルエンジン制御装置を提供する。本発明が提供する制御装置以下、本制御装置は、燃料噴射装置に対する指令燃料噴射量を燃料量補正係数によって補正するとともに、エアフローメータによって計測された新気量を新気量補正係数によって補正する。また、本制御装置は、補正後指令燃料噴射量と補正後新気量とに基づいて推定空燃比を算出し、空燃比センサによって計測された空燃比と推定空燃比とのずれに基づいてフィードバック項を算出する。本制御装置は、このフィードバック項から学習した学習項をメモリに記憶する。そして、前記ずれに基づいて算出したフィードバック項とメモリから読み出した学習項との和に基づいてフィードバック補正係数を算出し、フィードバック補正係数を所定の比率で燃料量補正係数と新気量補正係数とに振り分ける。以上述べた動作は、本制御装置の空燃比学習に係る動作である。一方、EGR制御に係る動作として、本制御装置は、燃料量補正係数による補正後指令燃料噴射量と環境条件とに基づいて目標EGR率を算出する。環境条件には水温、吸気温或いは大気圧のうちの少なくとも1つが含まれている。また、本制御装置は、新気量補正係数による補正後新気量に基づいて推定EGR率を算出する。そして、目標EGR率と推定EGR率とのずれに基づくフィードバック制御によって、EGR率を制御可能なアクチュエータ、例えばEGR弁やディーゼルスロットル弁を操作する。以上の動作に加えて、本制御装置による動作には、空燃比学習の誤動作を防止するための次の動作が含まれる。本制御装置は、補正前の指令燃料噴射量と環境条件とに基づいて目標EGR率以下、無補正目標EGR率を算出する。また、補正前の新気量に基づいて推定EGR率以下、無補正推定EGR率を算出する。そして、目標EGR率、推定EGR率、無補正目標EGR率及び無補正推定EGR率を用いて実際のEGR率の予想変化量以下、予想実EGR率変化量を算出する。本制御装置は、予想実EGR率変化量の正負の符号とフィードバック補正係数とが整合しない場合、フィードバック補正係数の計算への学習項の使用を禁止する。このとき、フィードバック補正係数を標準値に固定してもよい。さらに、本制御装置は、予想実EGR率変化量の正負の符号とフィードバック補正係数とが整合しない場合、フィードバック項に含まれるI項の値をゼロにリセットする。空燃比学習の誤動作は、環境条件の変化によって目標EGR率の指令燃料噴射量に対する感度が逆転することで発生する。空燃比学習が誤動作したとき、フィードバック補正係数の値がリッチ化要求を示しているにも係わらず予想実EGR率変化量はリーン化を示す負の値になったり、逆に、フィードバック補正係数の値がリーン化要求を示しているにも係わらず予想実EGR率変化量はリッチを示す負の値になったりする。よって、予想実EGR率変化量の正負の符号とフィードバック補正係数とが整合するかどうかによって、空燃比学習の誤動作の発生をすみやかに判定することができる。本制御装置は、空燃比学習の誤動作が発生した場合にはすぐにフィードバック補正係数の計算への学習項の使用が禁止されるので、空燃比学習の誤動作が続くことは防止される。さらに、フィードバック項に含まれるI項の値がゼロにリセットされることで、誤動作により誤って計算した積分値が学習項に反映されるのを防止することができる。本発明の実施の形態について図を参照して説明する。図1は、本発明の実施の形態としてのエンジンシステムの構成を示す図である。本実施の形態のエンジンは、ターボ過給機付きのディーゼルエンジン以下、単にエンジンというである。エンジンの本体2には4つの気筒が直列に備えられ、気筒ごとにインジェクタ8が設けられている。エンジン本体2には吸気マニホールド4と排気マニホールド6が取り付けられている。吸気マニホールド4にはエアクリーナ20から取り込まれた新気が流れる吸気通路10が接続されている。吸気通路10にはターボ過給機のコンプレッサ14が取り付けられている。吸気通路10においてコンプレッサ14の下流にはディーゼルスロットル弁以下、Dスロ弁24が設けられている。吸気通路10においてコンプレッサ14とDスロ弁24との間にはインタークーラ22が備えられている。排気マニホールド6にはエンジン本体2から出た排気ガスを大気中に放出するための排気通路12が接続されている。排気通路12にはターボ過給機のタービン16が取り付けられている。タービン16には可変ノズル18が備えられている。排気通路12においてタービン16の下流には酸化触媒コンバータ26とDPF28が設けられている。本実施の形態のエンジンは、排気系から吸気系へ排気ガスを再循環させるEGR装置を備えている。EGR装置は、吸気通路10におけるディーゼルスロットル24の下流の位置と排気マニホールド6とをEGR通路30によって接続している。EGR通路30にはEGR弁32が設けられている。EGR通路30においてEGR弁32の排気側にはEGRクーラ34が備えられている。EGR通路30にはEGRクーラ34をバイパスするバイパス通路36が設けられている。バイパス通路36にはバイパス通路36を開閉するバイパス弁38が設けられている。本実施の形態のエンジンシステムは、エンジンシステム全体を総合制御する制御装置50を備える。制御装置50は、エンジンシステムが備えるセンサの信号を取り込み処理する。センサはエンジンシステムの各所に取り付けられている。例えば、吸気通路10には、エアクリーナ20の下流にエアフローメータ58が取り付けられ、ディーゼルスロットルの下流には過給圧センサ56が取り付けられている。また、排気通路12には、酸化触媒コンバータ26及びDPF28の下流に空燃比センサ54が取り付けられている。さらに、クランク軸の回転を検出する回転数センサ52なども取り付けられている。制御装置50は、取り込んだ各センサの信号を処理して所定の制御プログラムにしたがって各アクチュエータを操作する。制御装置50によって操作されるアクチュエータには、EGR弁32やDスロ弁24などが含まれている。なお、制御装置50に接続されるアクチュエータやセンサは図中に示す以外にも多数存在するが、本明細書においてはその説明は省略する。図2のブロック図は、本実施の形態の制御装置50の構成を示している。図2において制御装置50を構成している各要素は、制御装置50が有する種々の機能的な要素のうち、空燃比学習とEGR制御とに関する要素のみを特別に図で表現したものである。したがって、図2は、制御装置50がこれらの要素のみで構成されていることを意味するものではない。なお、制御装置50は自動車用のECUであり、各要素はメモリに記憶された専用のソフトウェアがCPUで実行されたときに仮想的に実現される。以下、図2に示す各要素の機能を中心に制御装置50の構成について説明する。制御装置50は、空燃比学習に関係する要素として空燃比学習ユニット100、指令燃料噴射量演算ユニット120及び新気量演算ユニット130を備えている。空燃比学習ユニット100は、さらに複数の演算ユニット102,104,106,108,110,112に分けられる。まずは、空燃比学習ユニット100を構成する各演算ユニットの機能について説明する。空燃比学習ユニット100を構成する演算ユニット102では、空燃比センサ54の信号が取り込まれてその信号より排気ガスの空燃比が計測される。以下、演算ユニット102で計測される空燃比を計測空燃比と呼ぶ。演算ユニット104は、後述する指令燃料噴射量演算ユニット120で計算された指令燃料噴射量と、後述する新気量演算ユニット130で計算された新気量とを取り込む。指令燃料噴射量はインジェクタ8に対して指示される燃料噴射量である。以下、指令燃料噴射量は指令Qと表記する場合がある。そして、演算ユニット104は、指令Qで新気量を除算することによって空燃比を計算する。以下、演算ユニット104で計算される空燃比を推定空燃比と呼ぶ。演算ユニット106は、演算ユニット102から計測空燃比を取り込み。演算ユニット104から推定空燃比を取り込む。そして、計測空燃比と推定空燃比とのズレ比以下、空燃比ズレ比を次の式1によって算出する。式1によれば、計測空燃比に対して推定空燃比がリッチであれば空燃比ズレ比は負の値となる。逆に、計測空燃比に対して推定空燃比がリーンであれば空燃比ズレ比は正の値となる。空燃比ズレ比=推定空燃比/計測空燃比-1式1演算ユニット108は、演算ユニット106で計算された空燃比ズレ比に基づいてPI制御を行い、フィードバック項であるPI項を算出する。PI項はP制御で得られるP項とI制御で得られるI項との和を意味する。なお、本発明の実施にあたって演算ユニット108が行うPI制御の具体的方法について特に限定は無い。演算ユニット110は、計測空燃比と推定空燃比との間の定常誤差をPI項から学習し、その学習値を学習マップに記憶する。PI項に基づく学習値の学習はエンジンの運転領域毎に行なわれる。PI項から学習値への定常誤差成分の移し変えが進むにつれてI項の値はゼロに収束して行く。なお、本発明の実施にあたって演算ユニット118が行う具体的な学習の方法について特に限定は無い。学習マップからは現在の運転領域に応じた学習値が学習項として読み出される。学習項は、環境条件から決まる環境補正係数を掛けられた後、PI項に足し合わされる。そして、PI項と学習項との和にさらに1を加えた値がフィードバック補正係数Kとして用いられる。指令Qに対する実際の燃料噴射量にもエアフローメータ58による計測新気量にも誤差が含まれていない場合、フィードバック補正係数Kの値は標準値である1となる。しかし、何れかに誤差が含まれており計測空燃比が推定空燃比よりもリッチになっている場合、フィードバック補正係数Kの値は1よりも大きい値となる。逆に、計測空燃比が推定空燃比よりもリーンになっている場合、フィードバック補正係数Kの値は1よりも小さい値となる。演算ユニット112は、フィードバック補正係数Kを所定の比率で燃料量補正係数と新気量補正係数とに振り分ける。振り分け比率は予め決められており、エンジンの運転領域に応じて変更される。演算ユニット112で算出された燃料量補正係数は、指令燃料噴射量演算ユニット120に送られる。指令燃料噴射量演算ユニット120は、アクセル開度に基づいて指令Qの基本値を決定し、指令Qの基本値を燃料量補正係数で補正して得られる値を指令Qとして算出する。前述の演算ユニット104には、このようにして算出された指令Qが入力される。演算ユニット112で算出された新気量補正係数は、新気量演算ユニット130に送られる。新気量演算ユニット130は、エアフローメータ58の信号を取り込み、その信号より新気量を計測する。そして、計測した新気量を新気量補正係数で補正し、補正後の新気量を前述の演算ユニット104に入力する。以上説明した種々の演算ユニットに加えて、空燃比学習ユニット100には誤動作防止ユニット200が設けられている。誤動作防止ユニット200は、空燃比学習の誤動作を防止する機能を有する演算ユニットである。ただし、誤動作防止ユニット200は、本実施の形態の制御装置の要部であるので、その内容については追って詳細に説明する。制御装置50は、EGR制御に関係する要素としてEGR制御ユニット140を備えている。EGR制御ユニット140は、さらに複数の演算ユニット142,144,146,148に分けられる。以下、EGR制御ユニット140を構成する各演算ユニットの機能について説明する。EGR制御ユニット140を構成する演算ユニット142は、主として指令Qとエンジン回転数とに基づき目標EGR率を演算する。指令Qは前述の指令燃料噴射量演算ユニット120から送られる補正後の指令Qである。図3は演算ユニット142の機能を詳細に示すブロック図である。この図に示すように、演算ユニット142は、さらに複数の演算ユニット150,152,154に分けられる。演算ユニット150はベースマップを備えている。ベースマップには、目標EGR率の基本値がエンジン回転数及び指令Qに関連付けて記憶されている。演算ユニット150は、このベースマップを用いて現在のエンジン回転数及び指令Qに応じた目標EGR率の基本値を算出する。演算ユニット152は過渡補正マップを備えている。過渡補正マップには、目標EGR率に対する過渡運転時の補正係数がエンジン回転数、過給圧及び指令Qに関連付けて記憶されている。演算ユニット150は、この過渡補正マップを用いて現在のエンジン回転数、過給圧及び指令Qに応じた過渡補正係数を算出する。演算ユニット154は環境補正マップを備えている。環境補正マップには、目標EGR率の環境補正項が水温、吸気温及び大気圧に関連付けて記憶されている。水温等の環境条件が異なれば、EGR率の影響による失火のしやすさも変化する。よって、失火を防止しつつEGRの導入による燃費向上効果やエミッション低減効果を得るためには、環境条件に応じた目標EGR率の補正が必要となる。演算ユニット154は、環境補正マップを用いて現在の水温、吸気温及び大気圧に応じた環境補正項を算出する。演算ユニット142は、演算ユニット150で算出された目標EGR率の基本値に演算ユニット152で算出された過渡補正係数を乗算し、さらに演算ユニット154で算出された環境補正項を加算する。これにより、最終的な目標EGR率が算出される。再び図2に戻って説明を続ける。EGR制御ユニット140を構成する演算ユニット144は、主としてエンジン回転数と過給圧と新気量とに基づき推定EGR率を演算する。新気量は前述の新気量演算ユニット130から送られる補正後の新気量である。演算ユニット144は、推定EGR率を次の式2によって算出する。なお、式2における筒内空気量とは新気量とEGRガス量とを合わせた空気量であり、エンジン回転数と過給圧とから算出される。推定EGR率=筒内空気量-補正後新気量/筒内空気量式2演算ユニット146は、演算ユニット142から目標EGR率を取り込み。演算ユニット144から推定EGR率を取り込む。そして、目標EGR率と推定EGR率との偏差であるΔEGR率を算出する。演算ユニット148は、演算ユニット146で計算されたΔEGR率に基づいてPI制御を行い、フィードバック項であるPI項を算出する。そして、EGR率を制御可能なアクチュエータの操作量、具体的には、EGR弁32若しくはDスロ弁24或いはその両方の操作量がPI項に基づいて算出される。なお、本発明の実施にあたって演算ユニット148が行うPI制御の具体的方法について特に限定は無い。以上述べた構成を有することによって、制御装置50は空燃比学習とEGR制御とを並行して実施することができる。制御装置50による空燃比学習によれば、計測空燃比と推定空燃比とが一致するようにフィードバック制御を行いながら、PI項に含まれる定常誤差成分を学習値として学習マップに取り込むことができる。そのフィードバック制御では、フィードバック補正係数Kの増減に応じて指令Qと新気量とが補正される。制御装置50によるEGR制御によれば、目標EGR率は指令Qに基づき決定され、推定EGR率は新気量に基づき決定されるので、空燃比学習による指令Q及び新気量の補正の結果はEGR制御の結果にも密接に関連することになる。ここで、指令Q及び新気量の補正の結果がEGR制御に与える影響について図4を用いて説明する。図4の上段に示すグラフは指令Qと目標EGR率との関係を表している。演算ユニット142の機能に関する説明において述べたように、目標EGR率の計算には指令Qが用いられる。この指令Qには燃料量補正係数による補正が施されている。燃料量補正係数はフィードバック補正係数Kに比例することから、指令Qの基本値が一定であるなら目標EGR率はフィードバック補正係数Kの値に応じて変化する。図4の上段のグラフによれば、フィードバック補正係数Kが1の場合つまり、実質的に指令Qに対する補正がない場合を基準にすると、フィードバック補正係数Kが1より小さいほど目標EGR率はより大きくなり、フィードバック補正係数Kが1より大きいほど目標EGR率はより小さくなっている。目標EGR率が大きくなることは空燃比のリッチ化が意図されていることを意味し、目標EGR率が小さくなることは空燃比のリーン化が意図されていることを意味する。図4の下段に示すグラフは新気量と推定EGR率との関係を表している。演算ユニット144の機能に関する説明において述べたように、推定EGR率の計算には新気量が用いられる。この新気量はエアフローメータ58による計測新気量を新気量補正係数で補正したものある。新気量補正係数はフィードバック補正係数Kに比例することから、エアフローメータ58による計測新気量が一定であるなら推定EGR率はフィードバック補正係数Kの値に応じて変化する。図4の下段のグラフによれば、フィードバック補正係数Kが1の場合つまり、実質的に新気量に対する補正がない場合を基準にすると、フィードバック補正係数Kが1より小さいほど推定EGR率はより大きくなり、フィードバック補正係数Kが1より大きいほど推定EGR率はより小さくなっている。推定EGR率が大きくなることは空燃比がリッチ化されたことを意味し、推定EGR率が小さくなることは空燃比のリーン化されたことを意味する。次に、図5について説明する。図5は環境条件の変化がEGR制御に与える影響について示している。図5の上段に示すグラフは、図4における状態を基準にして環境条件が変化した場合の指令Qと目標EGR率との関係を表している。演算ユニット142で算出される目標EGR率には、演算ユニット154で算出された環境補正項が含まれている。環境補正項は水温や吸気温などの環境条件の変化による影響を補償するための補正項であって、フィードバック補正係数Kの変化とは独立して変化する。このため、環境条件が変化したときには、図5の上段のグラフに示すように、環境補正項の作用によって目標EGR率が局所的に低下する場合がある。先に説明した図4の上段のグラフに示す指令Qと目標EGR率との関係は環境補正項がゼロの場合の関係である。目標EGR率が局所的に低下する場合、ある区域では、フィードバック補正係数Kが大きくなるほど目標EGR率は大きくなる。つまり、フィードバック補正係数Kに対する目標EGR率の感度が逆転してしまい、リーン化が要求されているにもかかわらずリッチ化が図られてしまう区域が発生することになる。図5の下段に示すグラフは、図4における状態を基準にして環境条件が変化した場合の新気量と推定EGR率との関係を表している。このグラフと図4の下段に示すグラフとの比較から分かるように、環境条件が変化したとしても新気量と推定EGR率との関係には変化が生じない。言い換えれば、フィードバック補正係数Kと推定EGR率との関係には変化が生じない。前述の式2から分かるように、目標EGR率とは異なり、推定EGR率の計算には環境条件に応じた補正は施されないからである。図4の上段のグラフに示すような目標EGR率の指令Qに対する感度の変化は、次に述べるような空燃比学習の誤動作という問題を生じさせる。以下、その問題の内容について図6及び図7を用いて具体的に説明する。図6及び図7は空燃比と実EGR率の挙動をシミュレーションで再現した結果を表すグラフである。各図における上段のグラフは空燃比センサによる計測空燃比と計算で求めた推定空燃比の時間による変化を示し、中段のグラフはフィードバック補正係数Kの時間による変化を示し、下段のグラフは実EGR率の時間による変化を示している。シミュレーションでは、燃料噴射量に10のずれがある場合を想定し、シミュレーション開始から0秒の時点で空燃比学習及びEGR制御を開始している。シミュレーションにおける空燃比の設計値は21である。図6に示す空燃比と実EGR率の挙動は、通常時の挙動、すなわち、空燃比学習の誤動作が起きていないときの挙動である。0秒の時点では計測空燃比は設計値よりもリッチな19.8となっている。0秒の時点での計測空燃比は推定空燃比よりもリッチであることから、空燃比学習の開始後、フィードバック補正係数Kの値は初期値の1からリーン化を促す値グラフでは1.1へと変化する。図4のグラフを用いて説明したように、通常時には、フィードバック補正係数Kの値が1よりも大きくされることで目標EGR率は減少方向に補正される。そして、EGR制御が機能することよって、実EGR率は目標EGR率に追従して減少する。実EGR率の低下は空燃比のリーン化につながることから、計測空燃比は次第にリーンになっていき、やがて設計値である21に収束する。一方、図7に示す空燃比と実EGR率の挙動は、空燃比学習の誤動作が起きているときの挙動である。このケースでも、0秒の時点での計測空燃比は推定空燃比よりもリッチであることから、空燃比学習の開始後、フィードバック補正係数Kの値は初期値の1からリーン化を促す値グラフでは1.1へと変化する。しかし、図5のグラフを用いて説明したように、環境条件が変化したときには、フィードバック補正係数Kの値が1よりも大きくされたときに目標EGR率が増大方向に変化する場合がある。この場合、EGR制御が機能することよって、実EGR率は目標EGR率に追従して増大していく。実EGR率が増大すれば空燃比はリッチ化することから、計測空燃比は設計値である21に収束するどころかますますリッチ化してしまう。このような問題が生じるのを防ぐためには、空燃比学習の誤動作が生じたことを早期に把握し、それを防止するための方策を速やかに実施することが求められる。空燃比学習の誤動作とは、図7に示すようにフィードバック補正係数Kの値が1よりも大きくなっているにも関わらず実EGR率が増大している状態を指す。それとは逆に、フィードバック補正係数Kの値が1よりも小さくなっているにも関わらず実EGR率が減少している状態も空燃比学習の誤動作に含まれる。しかしながら、図7に示す実EGR率の挙動はシミュレーションだから得られるものであって、実際のエンジンシステムにおいて実EGR率を計測することはできない。そこで、本実施の形態の制御装置50は、次に述べる手順にて空燃比学習の誤動作を判定し、それを防止するための処理を実行する。なお、以下に説明する空燃比学習の誤動作の防止のための一連の処理は、空燃比学習ユニット100に設けられている誤動作防止ユニット200によって実行される。図8のフローチャートは、誤動作防止ユニット200が実行する空燃比学習の誤動作の防止のためのメインルーチンを示している。メインルーチンからは、図9のフローチャートに示すサブルーチンが呼び出される。サブルーチンでは、メインルーチンで得られた情報に基づいて空燃比学習の誤動作の判定が行われる。以下、これらのルーチンにより行われる処理の内容について、メインルーチンの最初のステップから順に説明する。メインルーチンのステップS2では、燃料量補正係数による補正前の指令Qを用いて無補正目標EGR率が算出される。無補正目標EGR率の計算方法は、演算ユニット142で行われる目標EGR率の計算方法と同じである。そして、目標EGR率燃料量補正係数により補正された指令Qを用いて算出された目標EGR率から無補正目標EGR率を差し引いた値が目標EGR率変化量として算出される。目標EGR率変化量は、燃料量補正係数による指令Qの補正によって生じる目標EGR率の変化量を意味する。ステップS4では、新気量補正係数による補正前の新気量を用いて無補正推定EGR率が算出される。無補正推定EGR率の計算方法は、演算ユニット144で行われる推定EGR率の計算方法と同じである。そして、推定EGR率新気量補正係数により補正された新気量を用いて算出された推定EGR率から無補正推定EGR率を差し引いた値が推定EGR率変化量として算出される。推定EGR率変化量は、新気量補正係数による新気量の補正によって生じる推定EGR率の変化量を意味する。なお、ステップS2の処理とステップS4の処理の順番は入れ替えることができる。ステップS6では、目標EGR率変化量から推定EGR率変化量を差し引いた値が予想実EGR率変化量として算出される。予想実EGR率変化量は、フィードバック補正係数Kによる指令Q及び新気量の補正によって生じる実EGR率の予想変化量を意味する。つまり、このルーチンでは、実際には計測できない実EGR率の変化量を目標EGR率と推定EGR率の各変化量から予想することが行われる。ステップS8では、ステップS6で算出された予想実EGR率変化量を用いて、空燃比学習の誤動作が発生したかどうか判定される。なお、この判定は、前述のとおり図9のフローチャートに示すサブルーチンにより行われる。サブルーチンのステップS102では、フィードバック補正係数Kの値が1かどうか判定される。指令Qに対する実際の燃料噴射量に誤差が含まれておらず、また、エアフローメータ58による計測新気量にも誤差が含まれていない場合、フィードバック補正係数Kの値は1になる。このような場合には、定常誤差成分の学習値はゼロであるから空燃比学習の誤動作が生じることはない。よって、フィードバック補正係数Kの値が1の場合にはステップS110に進み、空燃比学習の誤動作は発生していないと判断される。フィードバック補正係数Kの値が1でない場合、ステップS104の判定が行われる。ステップS104では、フィードバック補正係数Kの値が1より大きく、且つ、予想実EGR率変化量がゼロ以上かどうか判定される。フィードバック補正係数Kの値が1よりも大きいということは、リーン化が要求されていることを意味する。したがって、通常であれば、EGR率を低くして空燃比をリーン化させるように、予想実EGR率変化量は負の値になっているはずである。図10は、空燃比、フィードバック補正係数K、推定EGR率変化量、目標EGR率変化量及び予想実EGR率変化量の通常時の挙動をシミュレーションで再現した結果を表すグラフである。シミュレーションの条件は図6に示すシミュレーション結果の場合と同じである。図10に示すように、フィードバック補正係数Kの値が1のときに予想実EGR率変化量が負の値になっていれば、計測空燃比は所望どおりリーン側に変化し、やがて設計値に収束する。ゆえに、フィードバック補正係数Kの値が1よりも大きいにも関わらず、予想実EGR率変化量がゼロ以上になっている場合には、空燃比学習の誤動作が起きているとみなすことができる。図11は、空燃比、フィードバック補正係数K、推定EGR率変化量、目標EGR率変化量及び予想実EGR率変化量の誤動作時の挙動をシミュレーションで再現した結果を表すグラフである。シミュレーションの条件は図7に示すシミュレーション結果の場合と同じである。図11に示すように、フィードバック補正係数Kの値が1のときに予想実EGR率変化量がゼロ以上の値になっていれば、計測空燃比はリッチ側に変化することになって設計値からさらに乖離してしまう。よって、この場合はステップS108に進み、空燃比学習の誤動作が発生していると判断される。ステップS104の判定の結果が否定である場合、ステップS106の判定が行われる。ステップS106では、フィードバック補正係数Kの値が1より小さく、且つ、予想実EGR率変化量が負の値かどうか判定される。フィードバック補正係数Kの値が1よりも小さいということは、リッチ化が要求されていることを意味する。したがって、通常であれば、EGR率を低くして空燃比をリーン化させるように、予想実EGR率変化量は正の値になっているはずである。予想実EGR率変化量が負の値になっている場合には、空燃比学習の誤動作が発生していると判断することができる。つまり、ステップS104の判定の場合と同様、予想実EGR率変化量の正負の符号とフィードバック補正係数とが整合するかどうかによって、空燃比学習の誤動作が発生しているかどうか判断することができる。なお、ステップS104の判定とステップS106の判定の順番は入れ替えることができる。ステップS106の判定の結果が肯定であるならば、ステップS108に進み、空燃比学習の誤動作が発生していると判断される。判定の結果が否定であるならば、ステップS110に進み、空燃比学習の誤動作は発生していないと判断される。サブルーチンの終了後は再びメインルーチンに戻って処理が続けられる。サブルーチンによる判定の結果、空燃比学習の誤動作は発生していないと判断された場合には、ステップS12の処理が行われる。ステップS12では、通常の空燃比学習及びEGR制御がそのまま続けられる。しかし、サブルーチンによる判定の結果、空燃比学習の誤動作が発生していると判断された場合には、ステップS10の処理が行われる。ステップS10では、フィードバック補正係数Kの計算への学習項の使用が禁止される。学習が完了している場合、定常状態でのPI項の値は平均してゼロになっているから、定常誤差成分である学習項が加算されないことにより、フィードバック補正係数Kの値は標準値である1に戻されることになる。この場合、フィードバック補正係数Kの値を強制的に1にセットしてしまってもよい。フィードバック補正係数Kの値が標準値に戻されることで、空燃比学習の誤動作がそのまま続いてしまうことは防止される。また、ステップS10では、演算ユニット108によるPI制御で計算されるI項の値をゼロにリセットすることも行われる。空燃比学習の誤動作によって計測空燃比と推定空燃比との間にズレが生じることが考えられる。その場合、PI制御によって空燃比ズレ比の積分値がI項に溜められていくが、このとき計算される積分値は空燃比学習の誤動作によって生じたノイズである。このノイズが演算ユニット110によって学習マップに取り込まれてしまうと、学習項の精度を低下させることになる。よって、I項の値をゼロにリセットすれば、空燃比学習の誤動作により誤って計算した積分値が学習項に反映されてしまうのを防止することができる。以上のルーチンは定期的に実行される。ステップS10の処理によってフィードバック補正係数Kの計算への学習項の使用が禁止された場合、次の計算タイミングが到来したときに予想実EGR率変化量が再計算され、再計算された予想実EGR率変化量に基づき空燃比学習の誤動作が発生しているかどうか再判定される。再判定の結果、空燃比学習の誤動作が続いているのであれば、ステップS10の処理が選択されて学習項の使用禁止が継続される。一方、再判定の結果、空燃比学習の誤動作が解消したのであれば、ステップS12の処理が選択されて通常制御に切り替えられる。なお、本発明は上述の実施の形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。また、上述の実施の形態では本発明を過給機付きのディーゼルエンジンに適用しているが、本発明の実施にあたって過給機は必須ではない。"