"内燃機関の筒内圧を取得する筒内圧取得手段と、前記筒内圧を用いて、筒内での熱発生率を算出する熱発生率算出手段と、前記内燃機関の筒内要求燃料量を強制的に変更する燃料量変更手段と、前記筒内要求燃料量の強制的な変更前後のサイクルにおける前記熱発生率を用いて、筒内で燃焼した混合気の空燃比が理論空燃比に対して燃料リッチ側にあるか燃料リーン側にあるかを判定する空燃比域判定手段と、を備えることを特徴とする内燃機関の空燃比算出装置。前記筒内要求燃料量の非変更時における前記熱発生率から求めた発熱量が、前記筒内要求燃料量を供給した際に前記内燃機関の最大出力を発生させる出力空燃比に対応する発熱量よりも小さい場合には、前記筒内要求燃料量の強制的な変更を禁止することを特徴とする請求項1に記載の内燃機関の空燃比算出装置。前記燃料量変更手段は、前記筒内要求燃料量の強制的な変更としての燃料増量および燃料減量をサイクル毎に切り替え、前記空燃比域判定手段は、前記燃料増量時における前記熱発生率から求めた発熱量の履歴と、前記燃料減量時における前記熱発生率から求めた発熱量の履歴とを用いて、筒内で燃焼した混合気の空燃比が理論空燃比に対して燃料リッチ側にあるか燃料リーン側にあるかを判定することを特徴とする請求項1または2に記載の内燃機関の空燃比算出装置。前記内燃機関は複数の気筒を有し、前記燃料量変更手段は、1サイクルにおける前記筒内要求燃料量の強制的な変更としての燃料増量および燃料減量を、隣り合う気筒間で逆転させることを特徴とする請求項1乃至3何れか1項に記載の内燃機関の空燃比算出装置。しかしながら、空燃比と発熱量との実際の関係は、特許文献2に示された関係とは異なる。即ち、空燃比が理論空燃比よりも燃料リッチ側になるほど発熱量が低下する。この理由は、燃料量が増加すれば燃焼が悪化し、気化潜熱もより多く必要となるからである。そのため、発熱量と空燃比との関係は、ピークを有する特性曲線で表されることになるので、燃料リーン側の発熱量と燃料リッチ側の発熱量とが等しくなる場合がある。従って、このような関係に基づいて、特許文献1の手法に従って発熱量から空燃比を求めようとすると、実際にはリッチ側の空燃比であるにも関わらず、リーン側の空燃比として算出してしまう可能性があった。この発明は、上述のような課題を解決するためになされたものである。即ち、燃料リッチ側における特性変化の影響を考慮して、精度高く空燃比を算出可能な内燃機関の空燃比算出装置を提供することを目的とする。第1の発明は、上記の目的を達成するため、内燃機関の空燃比算出装置であって、内燃機関の筒内圧を取得する筒内圧取得手段と、前記筒内圧を用いて、筒内での熱発生率を算出する熱発生率算出手段と、前記内燃機関の筒内要求燃料量を強制的に変更する燃料量変更手段と、前記筒内要求燃料量の強制的な変更前後のサイクルにおける前記熱発生率を用いて、筒内で燃焼した混合気の空燃比が理論空燃比に対して燃料リッチ側にあるか燃料リーン側にあるかを判定する空燃比域判定手段と、を備えることを特徴とする。第2の発明は、第1の発明において、前記筒内要求燃料量の非変更時における前記熱発生率から求めた発熱量が、前記筒内要求燃料量を供給した際に前記内燃機関の最大出力を発生させる出力空燃比に対応する発熱量よりも小さい場合には、前記筒内要求燃料量の強制的な変更を禁止することを特徴とする。第3の発明は、第1または第2の発明において、前記燃料量変更手段は、前記筒内要求燃料量の強制的な変更としての燃料増量および燃料減量をサイクル毎に切り替え、前記空燃比域判定手段は、前記燃料増量時における前記熱発生率から求めた発熱量の履歴と、前記燃料減量時における前記熱発生率から求めた発熱量の履歴とを用いて、筒内で燃焼した混合気の空燃比が理論空燃比に対して燃料リッチ側にあるか燃料リーン側にあるかを判定することを特徴とする。第4の発明は、第1乃至第3何れか1つの発明において、前記内燃機関は複数の気筒を有し、前記燃料量変更手段は、1サイクルにおける前記筒内要求燃料量の強制的な変更としての燃料増量および燃料減量を、隣り合う気筒間で逆転させることを特徴とする。第1の発明によれば、筒内要求燃料量の強制的な変更前後のサイクルにおける熱発生率を用いて、空燃比が理論空燃比に対して燃料リッチ側にあるか燃料リーン側にあるかを判定できる。あるサイクルでの空燃比が理論空燃比よりも燃料リーン側の場合、筒内要求燃料量を強制的に増やせば、次サイクルでは燃料が増えた分だけ熱発生率が増加し、筒内要求燃料量を強制的に減らせば燃料が減った分だけ熱発生率が減少する。一方、あるサイクルでの空燃比が理論空燃比よりも燃料リッチ側の場合、筒内要求燃料量を強制的に増やせば、次サイクルでは燃焼悪化等により熱発生率が減少し、筒内要求燃料量を強制的に減らせば燃料が減った分だけ燃焼悪化等の影響が緩和されるので熱発生率が増加する。従って、筒内要求燃料量の強制的な変更前後のサイクルにおける熱発生率を用いれば、燃料リッチ側における燃焼特性変化の影響を考慮した上で、精度高く空燃比を算出できる。第2の発明によれば、筒内要求燃料量の非変更時における熱発生率から求めた発熱量が、出力空燃比に対応する発熱量よりも小さい場合に、筒内要求燃料量の変更を禁止できる。出力空燃比を超える燃料は、発熱量に原理的に寄与しないので、出力空燃比に対応する発熱量よりも小さい場合は、燃料リーン側の発熱量と燃料リッチ側の発熱量が等しくなることはない。従って、空燃比域の判定に要する処理負担を軽減できる。筒内要求燃料量を強制的に変更するとトルク変動が生じる場合があり、このトルク変動を抑えるために燃料の変更量を少量にすれば、筒内圧取得手段から取得する筒内圧の感度がそれだけ低下する。この点、第3の発明によれば、燃料増量時における熱発生率から求めた発熱量の履歴と、燃料減量時における熱発生率から求めた発熱量の履歴とを用いるので、燃料の変更量を少量とすることによる筒内圧の感度の低下分を補償できる。従って、発熱量の算出精度を担保でき、空燃比が理論空燃比に対して燃料リッチ側にあるか燃料リーン側にあるかを精度高く判定できる。上述したように、筒内要求燃料量を強制的に変更するとトルク変動が生じる場合がある。この点、第4の発明によれば、1サイクルにおける筒内要求燃料量の強制的な変更とし燃料増量および燃料減量を、隣り合う気筒間で逆転させるので、1サイクルにおけるトルク変動を低減することができる。実施の形態1.[システム構成の説明]以下、図1乃至図7を参照して、本発明の実施の形態1について説明する。図1は、本発明の実施の形態1のシステム構成を説明するための図である。本実施の形態のシステムは、内燃機関としてのエンジン10を備えている。エンジン10は、直列4気筒型エンジン爆発順序は1→3→4→2であるが、図1には、そのうちの1気筒として気筒12のみを示している。エンジン10は、内部にピストン14を有するシリンダブロック16を備えている。ピストン14は、クランク機構を介してクランクシャフト18と接続されている。クランクシャフト18の近傍には、クランク角センサ20が設けられている。クランク角センサ20は、クランクシャフト18の回転角クランク角を検出するように構成されている。シリンダブロック16の上部にはシリンダヘッド22が組み付けられている。ピストン14上面からシリンダヘッド22までの空間は燃焼室24を形成している。シリンダヘッド22には、燃焼室24内の圧力以下、筒内圧Pという。を検出する筒内圧センサ26が設けられている。また、シリンダヘッド22には、燃焼室24内に直接燃料を噴射する電子制御式のインジェクタ28が設けられている。また、シリンダヘッド22には、燃焼室24内の混合気に点火する点火プラグ30が設けられている。シリンダヘッド22は、燃焼室24と連通する吸気ポート32を備えている。吸気ポート32と燃焼室24との接続部には吸気バルブ34が設けられている。吸気バルブ34は、可変バルブタイミング機構以下、VVT機構という。36により駆動されるものである。VVT機構36は、吸気バルブ34の開弁時期を変更可能に構成されている。より詳細には、VVT機構36は、該機構の構造により定まる最進角から最遅角までの範囲で、吸気バルブ34の開弁位相、作用角やリフト量を変更可能に構成されている。VVT機構36の近傍には、VVT機構36の作動量を検出するセンサ37が設けられている。吸気ポート32の上流には、エアフロメータ38が設けられている。エアフロメータ38は、吸入空気量を検出するように構成されている。また、シリンダヘッド22は、燃焼室24と連通する排気ポート40を備えている。排気ポート40と燃焼室24との接続部には排気バルブ42が設けられている。排気バルブ42は、VVT機構44により駆動されるものである。VVT機構44は、VVT機構36同様、排気バルブ42の開弁位相、作用角やリフト量を変更可能に構成されている。VVT機構44の近傍には、VVT機構44の作動量を検出するセンサ45が設けられている。排気ポート40の下流には、排気ガスを浄化するための触媒46が配置されている。また、本実施の形態のシステムは、制御装置としてのECUElectronicControlUnit50を備えている。ECU50の出力側には、インジェクタ28、点火プラグ30、VVT機構36,44等が接続されている。ECU50の入力側には、クランク角センサ20、筒内圧センサ26、エアフロメータ38、センサ37,45等が接続されている。ECU50は、これらのセンサ信号に基づいて、インジェクタ28、点火プラグ30、VVT機構36,44といった各種アクチュエータを制御することができる。[筒内圧Pを用いた空燃比算出]ところで、本実施の形態においては、サイクル毎に、筒内での発熱量Qを筒内圧センサ26により検出した筒内圧Pから算出し、この発熱量Qに基づいて、燃焼した混合気の空燃比A/Fを算出する。このA/F算出方法について、図2を参照しながら説明する。図2は、圧縮行程および爆発行程における筒内圧Pおよび発熱量Qの関係を示すグラフである。図2の上段に示すように、吸気バルブInバルブ36の閉弁後は、ピストン14の上昇に伴い筒内の気体が圧縮されるので筒内圧Pが上昇する。そして、上死点TDCよりもやや前で筒内の混合気を点火すると、筒内圧Pは、燃料の燃焼により急激に増加して最大値に到達し、その後はピストン14の下降に伴い減少する。発熱量Qは、筒内へ噴射された燃料の燃焼により生じるものであるため、図2の下段に示すように、燃焼が継続している間は増大し続け、燃焼が終了すると一定となる。この燃焼終了点において、発熱量Qは最大値をとる。ここで、筒内において成立する熱力学的な関係式から、燃焼期間中のあるクランク角における熱発生率dQと筒内圧Pとの間には、下記式1が成立する。dQ=WdU=PdVnCVdT=PdV1/κ-1dPV=1/κ-1κPdVVdP={1/κ-1Vκ-1}dPVκ1上記式1において、Vは筒内容積であり、クランク角に応じて幾何学的に決定される値である。また、κは筒内ガスの比熱比定数である。ここで、発熱量Qは、熱発生率dQを吸気バルブ34の閉弁時から排気バルブ42の開弁時まで積分した値であり、この区間における熱発生率dQの積算値と近似できる。よって、筒内圧Pと発熱量Qとの間には、下記式2の関係が成立する。Q={1/κ-1}Σ{ΔPVκ/Vκ-1}2従って、クランク角毎の筒内圧Pが分かれば、上記式2を用いて発熱量Qを求めることができる。ここで、燃料1g当たりの発熱量として低位発熱量Qlhv定数と、吸気バルブ34の閉弁時において筒内に吸入された吸入空気量gaとを用いると、空燃比は下記式3で表すことができる。A/F=ga/QQlhv3従って、上記式2を用いて求めた発熱量Qに加え、吸気バルブ34の閉弁時における吸入空気量gaが分かれば、上記式3を用いて空燃比を求めることができる。[実施の形態1の特徴]図3は、上記式2を用いて求めた発熱量Qと、空燃比との相関を示したグラフである。図3に示すように、発熱量Qは、理論空燃比14.7付近で最大となり、その両側では低下する。吸入空気量gaが一定であると仮定すると、筒内に噴射する燃料量が少なければ発熱量Qが低下するので、燃料リーン側において発熱量Qが低下する。一方、燃料リッチ側においても、発熱量Qが低下する。これは、筒内に噴射する燃料量が多くなると燃焼が悪化し、気化潜熱もより多く必要となることに因る。従って、図3にA,Bで示すように、求めた発熱量Qの値がQ1の場合、空燃比が燃料リッチ側の値Aか燃料リーン側の値Bか分からなくなってしまう。なお、発熱量Qは、既述した通り、筒内へ噴射された燃料の燃焼により生じたものであるので、出力空燃比エンジンが最も大きな出力を発生させることができるような空燃比であり、例えば、12.5である。を超える燃料は、発熱量Qに原理的に寄与しない。そのため、燃料リッチ側においては、発熱量Qの値が図3のQ2よりも小さければ、上記の様な問題は生じない。以上のことから、本実施の形態においては、発熱量Qの値が図3のQ2以上の場合に、筒内に噴射する燃料量を強制的に変化させて、その際に上記式2から求められる発熱量Qの変化特性から空燃比がどちらの領域にあるかを判定することとした空燃比域判定制御。この空燃比域判定制御は、別途実行中の燃料噴射制御において、吸入空気量、エンジン回転数、エンジン冷却水の温度等に基づいて算出される燃料量以下、筒内要求燃料量ともいう。を強制的に増加または減少させることにより実行される。ここで、増加または減少させる燃料量は、筒内要求燃料量の±10~±100の範囲内で予め設定されているものとする。図4は、本実施の形態における空燃比域判定制御の一例を示した図である。本実施の形態においては、図4A~Cの各上段に示すように、筒内に噴射する燃料量を強制的に増やす。そうすると、同図A~Cの各中段に示すように、燃料の強制増量に伴って、発熱量Qは三通りに変化する。これらのうち、図4Aの下段に示すように、増量前後のΔQ=Qafter-Qbeforeの傾きが正となった場合には、図3の説明に従って空燃比が燃料リーン側であると判断できる。一方、図4Bの下段に示すように、増量前後のΔQの傾きが負となった場合には、空燃比が燃料リッチ側であると判断できる。また、図4Cの下段に示すように、増量前後でΔQが変化しない場合には、空燃比が出力空燃比であると判断できる。なお、筒内に噴射する燃料量を強制的に減らした場合には、減量前後のΔQの傾きは、増量前後のΔQの傾きと逆の判断になる。即ち、ΔQが負となった場合には、空燃比が燃料リーン側であると判断でき、ΔQの傾きが正となった場合には、空燃比が燃料リッチ側であると判断できる。増量前後でΔQが変化しない場合については、増量前後のΔQ同様、空燃比が出力空燃比であると判断できる。[実施の形態1における具体的処理]次に、図5を参照して、上述した空燃比域判定制御を実現するための具体的な処理について説明する。図5は、本実施の形態において、ECU50により実行される空燃比域判定制御を示すフローチャートである。なお、図5に示すルーチンは、エンジン10の運転時に定期的に繰り返して実行されるものとする。図5に示すルーチンでは、先ず、ECU50は、発熱量QがQ2以上であるか否かを判定するステップ100。本ステップの処理に際し、ECU50は、先ず、発熱量Qを算出する。具体的に、ECU50は、エアフロメータ38の検出値を取得し、この検出値に基づいて、吸気バルブ34の閉弁時における吸入空気量gaを算出する。同時に、ECU50は、吸気バルブ34の閉弁時から排気バルブ42の開弁時までの筒内圧Pを取得する。本実施の形態においては、吸気バルブ34の閉弁時から排気バルブ42の開弁時まで、例えば1°クランク角毎に筒内圧Pを取得する。なお、吸気バルブ34の閉弁時期および排気バルブ42の開弁時期は、センサ37,45によってそれぞれ検出されるVVT機構36,44の作動量に基づいて把握する。そして、ECU50は、算出した吸入空気量gaと、取得した筒内圧Pと、クランク角毎に決定される筒内容積Vと、予めECU50内に記憶されたκ一定値とを上記式2に代入して発熱量Qを算出し、Q2と比較する。ここで、Q2は、図3で説明した閾値に相当し、筒内要求燃料量毎に定められた上で予めECU50内に記憶されているものとする。ステップ100において、発熱量QがQ2よりも小さいと判定された場合には、空燃比は燃料リーン側の値であり、これ以上の処理は必要ないと判断できるので、ECU50は本ルーチンを終了する。一方、発熱量QがQ2以上であると判定された場合には、ECU50は、筒内に噴射する燃料量を強制的に増やすステップ110。ここで、増量する燃料値は予めECU50内に記憶されている値を用いる。続いて、ECU50は、噴射量の増量前後の発熱量QからΔQを算出するステップ120。本ステップにおいて、噴射量の増量前の発熱量Qbeforeは、ステップ100で算出した値を用いる。また、噴射量の増量後の発熱量Qafterは、ステップ100と同一の処理により算出する。そして、これらの差分を求めることによりΔQを算出する。続いて、ECU50は、ステップ120で算出したΔQの絶対値が、閾値以下であるか否かを判定するステップ130。本ステップにおいて、閾値は0または0に所定の誤差分を含んだ値として、予めECU50内に記憶されている値を用いる。そして、ΔQの絶対値が閾値以下であると判定された場合には、空燃比が出力空燃比であると判断できるステップ140。一方、ΔQの絶対値が閾値よりも大きいと判定された場合には、ΔQが正の値であるか負の値であるかが判定されるステップ150。そして、ΔQが正の値であると判定された場合には、空燃比が燃料リーン側の値でありステップ160、ΔQが負の値であると判定された場合には、空燃比が燃料リッチ側の値であるとそれぞれ判断できるステップ170。以上、図5に示したルーチンによれば、算出したΔQを用いて、燃料リッチ側出力空燃比を含む或いは燃料リーン側の何れの空燃比域にあるかを判定することができる。従って、空燃比算出を高精度に行うことが可能となる。また、図5に示したルーチンによれば、発熱量QがQ2以上の場合にΔQを算出するので、Q2未満の場合のΔQの算出によるECU50の処理負担を軽減させることができる。ところで、上述した実施の形態1においては、上記空燃比域判定制御の際に発熱量Qを用いたが、発熱量Qの代わりに、燃焼速度FSを用いてもよい。燃焼速度FSは空燃比と相関を有し、図6に示すように、空燃比に対する燃焼速度FSの傾向は、空燃比に対する発熱量Qと同様の傾向を示す。また、図7に示すように、燃焼速度FSは、燃料点火後から排気バルブ42の開弁時までの発熱量Qの変化量即ち、熱発生率dQとして表すことができる。従って、噴射燃料を強制変更した前後における発熱量Qの変化量の差を用いれば、本実施の形態と同様に、空燃比域を判定できる。このように、熱発生率dQを用いて空燃比域判定制御を実行する限りにおいて、本実施の形態の変形例として適用が可能である。なお、上述した実施の形態1においては、筒内圧センサ26が上記第1の発明における筒内圧取得手段に相当する。また、上述した実施の形態1においては、ECU50が図5のステップ100の処理において、発熱量Qを算出することにより上記第1の発明における熱発生率算出手段が、同図ステップ110の処理を実行することにより上記第1の発明における燃料量変更手段が、同図ステップ130~170の一連の処理を実行することにより上記第1の発明における空燃比域判定手段が、それぞれ実現されている。実施の形態2.[実施の形態2の特徴]次に、図8および図9を参照して、本発明の実施の形態2について説明する。上記実施の形態1で述べたように、上記空燃比域判定制御は、筒内に噴射する燃料量を強制的に変化させるものである。そのため、トルク変動が生じる可能性が高い。しかしながら、トルク変動を低減するために、強制変更時に噴射する燃料の変化量を小さくすれば、筒内圧センサ26で検出される筒内圧PのS/Nが悪くなり、発熱量Qの算出精度が低くなってしまう。そこで、本実施の形態では、燃料量の強制変更を複数回行い、ΔQのデータを蓄積してから空燃比域の判定を実行することとした。具体的には図8に示すように、ΔQのデータを、燃料増加時と燃料減少時とに区別して気筒毎に蓄積しておき例えば、増減時10回、減量時10回の計20回分のデータ、それぞれのデータの平均値から空燃比がどちらの領域にあるかを判定する。これにより、噴射する燃料の変化量を小さくすることによる筒内圧PのS/Nの悪化を補填できるので、発熱量Qの算出精度を担保できる。また、本実施の形態では、強制変更時に噴射する燃料量を細かく変動させる。筒内に噴射する燃料量は、インジェクタ28のソレノイドコイルへの通電時間によって制御する。本実施の形態では、強制変更時に、この通電時間を細分割して筒内に噴射する燃料量を細かく変動させながら噴射する。これにより、運転者がトルク変動を感知し得ない高周波数例えば30Hz程度での空燃比域判定制御が可能となる。更に、本実施の形態では、図9に示すように、同一気筒において、サイクル間で燃料の増減を切り替える。同一気筒において同一方向増量または減量に燃料量を変化させ続けると、排気空燃比域が一方に偏ることになるので触媒46の浄化能が低下する場合がある。この点、サイクル間で燃料の増減を切り替えれば、触媒46の浄化能の低下を抑制できるので、排気エミッションの悪化を防止できる。加えて、本実施の形態では、同図に示すように、1サイクルにおいて、隣り合う気筒間で燃料の増減を逆転させる。これにより、1サイクルにおけるトルク変動を低減させることができる。また、隣り合う気筒間で燃料の増減を逆転させれば、排気空燃比域が一方に偏ることもないので、触媒46の浄化能の低下を抑制でき、排気エミッションの悪化を防止できる。"