(57)【特許請求の範囲】
【請求項１】
内燃機関の停止時における行程にもとづいて推測される行程である推測行程を気筒判別情報として記憶する気筒判別情報記憶手段と、
前記内燃機関の各気筒の実行程を判別する実行程判別手段と、
前記記憶された気筒判別情報にもとづいて所定の気筒へ燃料を噴射するとともに、前記実行程判別手段による実行程判別後は、実行程に応じた燃料噴射タイミングにて運転状態に応じた燃料噴射量を噴射させて前記内燃機関を始動させる燃料噴射制御手段と、
前記実行程判別手段による前記実行程判別が可能になった時点で前記気筒判別情報における推測行程と実行程とのズレ幅を算出した後、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記実行程判別手段による前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記算出されたズレ幅にもとづいて判別する噴射タイミング判別手段と、を備え、
前記燃料噴射制御手段は、前記噴射タイミング判別手段による前記判別の結果にもとづいて前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにおける燃料噴射制御を行うことを特徴とする内燃機関の制御装置。
【請求項２】
前記燃料噴射制御手段は、
前記噴射タイミング判別手段により、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与しないと判別される場合は、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにおける燃料の噴射を、前記運転状態に応じた燃料噴射量とさせるとともに、
前記噴射タイミング判別手段により、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与すると判別される場合は、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにおける燃料の噴射を行わないことを特徴とする請求の範囲第１項に記載の内燃機関の制御装置。
【請求項３】
前記内燃機関は、燃料噴射弁が吸気通路に配設されたポート噴射式内燃機関であって、
前記噴射タイミング判別手段は、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記所定の気筒の実行程判別時の実行程が吸入行程における下死点前であるか否かにより行うことを特徴とする請求の範囲第１項に記載の内燃機関の制御装置。
【請求項４】
前記内燃機関は、燃料噴射弁が吸気通路に配設されたポート噴射式内燃機関であって、
前記噴射タイミング判別手段は、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記所定の気筒の実行程判別時の実行程が吸入行程における下死点前であるか否かにより行うことを特徴とする請求の範囲第２項に記載の内燃機関の制御装置。
【請求項５】
前記内燃機関は、燃料噴射弁が燃焼室に向けて配設された直噴式内燃機関であって、
前記噴射タイミング判別手段は、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記所定の気筒の実行程判別時の実行程が排気行程における上死点前であるか否かにより行うことを特徴とする請求の範囲第１項に記載の内燃機関の制御装置。
【請求項６】
前記内燃機関は、燃料噴射弁が燃焼室に向けて配設された直噴式内燃機関であって、
前記噴射タイミング判別手段は、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記所定の気筒の実行程判別時の実行程が排気行程における上死点前であるか否かにより行うことを特徴とする請求の範囲第２項に記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両の内燃機関の制御装置に関し、特に内燃機関の始動時の燃料噴射の制御に関する。
【背景技術】
【０００２】
従来、内燃機関の始動時における気筒判別を良好に行うための技術が知られている。例えば、特許文献１には、内燃機関停止中でもクランク角の位置を監視し、その結果にもとづいて、内燃機関の始動時のクランク角を算出して、燃料噴射を行う気筒判別を行う技術が開示されている。更に、特許文献１には、内燃機関停止時のクランク角位置の情報にもとづいて気筒判別する第１の判別手段と、カム角センサ（本願明細書に記載の「ＴＤＣセンサ」に対応）のＨｉ／Ｌｏｗの異なる論理信号を組み合わせたもので気筒判別する第２の判別手段を有し、内燃機関の始動時の燃料噴射制御を行う技術が開示されている。そして、第１の判別手段による気筒判別と第２の判別手段による気筒判別の結果に不整合が生じており、かつ、第１の判別手段による気筒判別にもとづいて燃料噴射が既に行われている場合には、その気筒に対する次回燃料噴射量を減算側に補正するとしている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００５−３２０９４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に開示される技術では、第１の判別手段による気筒判別と第２の判別手段による気筒判別の結果に不整合が生じており、かつ、第１の判別手段による気筒判別にもとづいて燃料噴射が既に行われている場合に、その燃料噴射が気筒内へ導入されたか否かの判定を行っていない。その結果、先の燃料噴射された燃料が気筒内に全量導入されていても、常に次サイクルの燃料噴射量を減算するので、次サイクルにおいて燃料不足を生じ、失火やエミッションガスの悪化につながるおそれがある。【０００５】
そこで本発明は、内燃機関の始動時のエミッション特性を向上できる内燃機関の制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記課題を解決するために請求の範囲第１項に係わる発明の内燃機関の制御装置は、内燃機関の停止時における行程にもとづいて推測される行程である推測行程を気筒判別情報として記憶する気筒判別情報記憶手段と、前記内燃機関の各気筒の実行程を判別する実行程判別手段と、前記記憶された気筒判別情報にもとづいて所定の気筒へ燃料を噴射するとともに、前記実行程判別手段による実行程判別後は、実行程に応じた燃料噴射タイミングにて運転状態に応じた燃料噴射量を噴射させて前記内燃機関を始動させる燃料噴射制御手段と、前記実行程判別手段による前記実行程判別が可能になった時点で前記気筒判別情報における推測行程と実行程とのズレ幅を算出した後、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記実行程判別手段による前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記算出されたズレ幅にもとづいて判別する噴射タイミング判別手段と、を備え、前記燃料噴射制御手段は、前記噴射タイミング判別手段による前記判別の結果にもとづいて前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにおける燃料噴射制御を行うことを特徴とする。
【０００７】
請求の範囲第１項に記載の発明によれば、前回停止時の記憶された気筒判別情報にもとづいて所定の気筒へ燃料を噴射して内燃機関を始動させる内燃機関の制御装置において、実行程判別前に、記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かの判別が可能となる。その結果、その判別結果に応じて前記所定の気筒の実行程判別後の最初の燃料噴射タイミングの燃料の噴射制御を行うため、前記所定の気筒の実行程判別後の最初の燃料噴射における誤った燃料の噴射を防止でき、内燃機関の始動特性の悪化やエミッション特性の悪化を防止できる。【０００８】
請求の範囲第２項に係わる発明の内燃機関の制御装置は、請求の範囲第１項に記載の発明の構成に加え、前記燃料噴射制御手段は、前記噴射タイミング判別手段により、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与しないと判別される場合は、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにおける燃料の噴射を、前記運転状態に応じた燃料噴射量とさせるとともに、前記噴射タイミング判別手段により、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与すると判別される場合は、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにおける燃料の噴射を行わないことを特徴とする。【０００９】
請求の範囲第２項に記載の発明によれば、実行程判別前に、記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて前記所定の気筒へ噴射される燃料と同じ燃焼タイミングで寄与しないと判別される場合は、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにおいて燃料噴射を実行し、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与すると判別される場合は、燃料噴射を行わない。その結果、前者においては失火を防止でき、後者においては過剰な燃料によるエミッションの悪化を防止できる。【００１０】
請求の範囲第３項に係わる発明の内燃機関の制御装置は、請求の範囲第１項に記載の発明の構成に加え、前記内燃機関は、燃料噴射弁が吸気通路に配設されたポート噴射式内燃機関であって、前記噴射タイミング判別手段は、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記所定の気筒の実行程判別時の実行程が吸入行程における下死点前であるか否かにより行うことを特徴とする。
【００１１】
請求の範囲第４項に係わる発明の内燃機関の制御装置は、請求の範囲第２項に記載の発明の構成に加え、前記内燃機関は、燃料噴射弁が吸気通路に配設されたポート噴射式内燃機関であって、前記噴射タイミング判別手段は、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記所定の気筒の実行程判別時の実行程が吸入行程における下死点前であるか否かにより行うことを特徴とする。
【００１２】
請求の範囲第３項または請求の範囲第４項に記載の発明によれば、ポート噴射式内燃機関において、記憶された気筒判別情報にもとづいて実行程判別前に燃料が噴射された気筒の実行程判別時の実行程が、吸入行程における下死点前であるか否かによって、記憶された気筒判別情報にもとづいて実行程判別前に噴射された燃料と、前記実行程判別前に噴射された気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料とが同じ燃焼タイミングで寄与するか否かを判断するので、実行程判別前に噴射された燃料に対して確実に燃料の燃焼寄与状態が把握できる。また、既存の内燃機関並びにその周辺機器及び制御装置のハード構成の中で実現できるため、内燃機関の製造コスト増にならずに実現できる。
【００１３】
具体的には、ポート噴射式内燃機関において、記憶された気筒判別情報にもとづいて実行程判別前に前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の燃料噴射タイミングにて噴射される燃料の燃焼タイミング以前において、気筒内への燃料の導入になっていないと判定された場合、前記所定気筒の実行程判別後の最初の燃料噴射タイミングにて再び燃料を噴射するのをやめる。その結果、従来技術では、実行程判別後の最初の燃料噴射タイミングにて再び燃料噴射を行いリッチな燃焼になり過ぎて、エミッション特性を悪化させることになるのを防止できる。逆に、ポート噴射式内燃機関において、記憶された気筒判別情報にもとづいて実行程判別前に前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別時に、気筒内への燃料の導入になっていると判定された場合、実行程判別後の最初の燃料噴射タイミングで再び燃料を噴射させる。その結果、従来技術では、噴射量を減算してリーンになり過ぎて、失火またはエミッション特性を悪化させることになるのを防止できる。【００１４】
請求の範囲第５項に係わる発明の内燃機関の制御装置は、請求の範囲第１項の記載の発明の構成に加え、前記内燃機関は、燃料噴射弁が燃焼室に向けて配設された直噴式内燃機関であって、前記噴射タイミング判別手段は、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記所定の気筒の実行程判別時の実行程が排気行程における上死点前であるか否かにより行うことを特徴とする。
【００１５】
請求の範囲第６項に係わる発明の内燃機関の制御装置は、請求の範囲第２項の記載の発明の構成に加え、前記内燃機関は、燃料噴射弁が燃焼室に向けて配設された直噴式内燃機関であって、前記噴射タイミング判別手段は、前記記憶された気筒判別情報にもとづいて前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを、前記所定の気筒の実行程判別時の実行程が排気行程における上死点前であるか否かにより行うことを特徴とする。
【００１６】
請求の範囲第５項または請求の範囲第６項に記載の発明によれば、直噴式内燃機関において、記憶された気筒判別情報にもとづいて実行程判別前に噴射された気筒の実行程判別時の実行程が、排気行程における上死点前であるか否かによって、実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを判断するので、実行程判別前に噴射された燃料に対して確実に燃料の燃焼寄与状態が把握できる。また、既存の内燃機関並びにその周辺機器及び制御装置のハード構成の中で実現できるため、内燃機関の製造コスト増にならずに実現できる。
【００１７】
具体的には、直噴式内燃機関において、記憶された気筒判別情報にもとづいて実行程判別前に前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別後の燃料噴射タイミングにて噴射される燃料の燃焼タイミング以前において、気筒内で爆発、または気筒外へ排出されていないと判定された場合、実行程判別後の最初の燃料噴射タイミングにて再び燃料を噴射するのをやめる。その結果、従来技術では、実行程判別後の最初の燃料噴射タイミングにて再び燃料噴射を行い、リッチな燃焼になり過ぎて、エミッション特性を悪化させることになるのを防止できる。逆に、直噴式内燃機関において、記憶された気筒判別情報にもとづいて実行程判別前に前記所定の気筒へ噴射された燃料が、前記所定の気筒の実行程判別時に、気筒内で爆発、または気筒外へ排出されたと判定された場合、実行程判別後の最初の燃料噴射タイミングにて再び燃料を噴射させる。その結果、従来技術では、噴射量を減算してリーンになり過ぎて、失火またはエミッション特性を悪化させることになるのを防止できる。
【発明の効果】
【００１８】
本発明によれば、内燃機関の始動時のエミッション特性を向上できる内燃機関の制御装置を提供することができる。
【図面の簡単な説明】
【００１９】
【図１】第１の実施形態におけるエンジン制御ＥＣＵのブロック構成図である。
【図２】ＴＤＣパルス、ＣＲＫパルス及び各気筒の行程を示すタイムチャートである。
【図３】エンジン制御ＥＣＵにおけるエンジンの始動時から停止時までの燃料噴射制御の流れを示す全体フローチャートである。
【図４】エンジン制御ＥＣＵにおけるエンジンの始動時から停止時までの燃料噴射制御の流れを示す全体フローチャートである。
【図５】ＴＤＣパルス形状及びＣＲＫパルス形状にもとづく実行程判別の説明図である。
【図６】燃料噴射済みフラグの初期化処理の制御の流れを示す詳細フローチャートである。
【図７】燃料噴射実行処理の制御の流れを示す詳細フローチャートである。
【図８】記憶にもとづくクランク角により燃料噴射をした気筒の燃料噴射時期の格納の制御の流れを示す詳細フローチャートである。
【図９】記憶にもとづくクランク角により燃料噴射をした気筒のその燃料噴射から実行程判別までに進んだクランク角の算出の制御の流れを示す詳細フローチャートである。
【図１０】燃料噴射済みフラグの修正処理の制御の流れを示す詳細フローチャートである。
【図１１】燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）修正のための実燃料噴射時期ＦＩＩＮＪＡＧＬＣＲ（ｉ）（クランク角表示）と、次回の＃ｉ気筒の燃料の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）の設定の説明図である。
【図１２】ポート噴射式エンジンにおける排気行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例１における燃料噴射済みフラグの修正の説明図である。
【図１３】ポート噴射式エンジンにおける吸入行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例２における燃料噴射済みフラグの修正の説明図である。
【図１４】第１の実施形態の変形例のポート噴射式エンジンにおける排気行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例３における燃料噴射済みフラグの修正の説明図である。
【図１５】第２の実施形態におけるエンジン制御ＥＣＵのブロック構成図である。
【図１６】燃料噴射済みフラグの初期化処理の制御の流れを示す詳細フローチャートである。
【図１７】燃料噴射済みフラグの修正処理の制御の流れを示す詳細フローチャートである。
【図１８】燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）修正のための実燃料噴射時期ＦＩＩＮＪＡＧＬＣＲ（ｉ）（クランク角表示）と、次回の＃ｉ気筒の燃料の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）の設定の説明図である。
【図１９】直噴式エンジンにおける圧縮行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例１における燃料噴射済みフラグの修正の説明図である。
【図２０】直噴式エンジンにおける爆発行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例２における燃料噴射済みフラグの修正の説明図である。
【発明を実施するための形態】
【００２０】
《第１の実施形態》
以下、本発明の第１の実施形態に係わる内燃機関の制御装置の前提とする内燃機関について、簡単に説明する。
（内燃機関の概要）
内燃機関（ポート噴射式内燃機関）は、例えば、４気筒直列型のエンジン本体（図示せず）を備えている。エンジン本体の吸気管には、吸入空気の温度を検出する吸気温センサ１１（図１参照）と、吸入空気の流量である吸入空気量を検出するエアフローメータ１４（図１参照）が設けられている。この吸気管のエアフローメータ１４の下流側には、スロットルバルブ駆動モータ１０（図１参照）によって開度調節されるスロットルバルブ（図示省略）とスロットル開度を検出するスロットル開度センサ１６（図１参照）とが設けられている。
【００２１】
さらに、吸気管のスロットルバルブの下流側には、サージタンク（図示せず）が設けられ、このサージタンクに、吸気圧力（「吸気マニホールド圧」とも称する）を検出する吸気圧センサ１８（図１参照）が設けられている。また、サージタンクとエンジン本体のシリンダヘッドとの間には、エンジン本体の各気筒に空気を導入するように吸気マニホールドが配設されている。また、エンジン本体のシリンダヘッドには、吸気弁、排気弁、各気筒の吸気ポートに燃料を噴射する燃料噴射弁２０Ａ（図１参照）、点火プラグ２１（図１参照）が取り付けられている。各点火プラグ２１は、ディストリビュータ２９を介して火花放電によって燃焼室内の混合気に着火する。
ここで、ディストリビュータ２９は、例えば、電子式のディストリビュータである。
【００２２】
一方、エンジン本体の排気管（図示省略）には、排気ガス中のＣＯ，ＨＣ，ＮＯｘ等を浄化する三元触媒等の触媒を含んだ触媒装置（図示省略）が設けられ、この触媒装置の上流側に、排気ガスの空燃比またはリーン／リッチ等を検出する排気ガスセンサ（空燃比センサ、酸素センサ等）２４（図１参照）が設けられている。
【００２３】
また、エンジン本体のシリンダブロックには、冷却水温度を検出する水温センサ２５（図１参照）や、エンジン本体のクランク軸が一定クランク角、例えば、６ｄｅｇ．回転する毎にパルス信号を出力するクランクセンサ２６（図１参照）が取り付けられている。その他に、カム軸（図示せず）には、ＴＤＣ（Top Dead Center）センサ２８（図１参照）が設けられ、各気筒においてピストンが上死点に対応するクランク角毎にＴＤＣパルスを出力する。このクランクセンサ２６の出力信号とＴＤＣセンサ２８の出力信号にもとづいて、クランク角がエンジン制御ＥＣＵ（Electric Control Unit）２７Ａ（図１参照）で算出され、また、クランクセンサ２６の出力信号にもとづいてエンジン回転速度Ｎｅが算出される。
ここで、エンジン制御ＥＣＵ２７Ａが請求の範囲に記載の「内燃機関の制御装置」に対応する。
【００２４】
（燃料供給系）
次に、内燃機関の燃料供給系について簡単に説明する。
内燃機関は、燃料タンク（図示せず）からフュエルポンプモータ４（図１参照）を内蔵したフュエルポンプによって送油管（図示せず）を介してデリバリパイプ（図示せず）に供給される。デリバリパイプからは、４本の燃料配管（図示せず）を介して、各気筒の吸気ポートに配置された燃料噴射弁２０Ａ，２０Ａ，２０Ａ，２０Ａ（図１参照）に燃料が供給される。
ちなみに、本実施形態では、燃料噴射弁２０Ａは、エンジン制御ＥＣＵ２７ＡのＣＰＵの実行する機能である後記する燃料噴射制御部（燃料噴射制御手段）２１５Ａにより、例えば、排気行程噴射するように制御される。
【００２５】
フュエルポンプのフュエルポンプモータ４は、エンジン制御ＥＣＵ２７Ａにより制御されるスイッチ回路１３１（図１参照）でオン、オフされる。
【００２６】
《エンジン制御ＥＣＵの機能》
図１を参照しながらエンジン制御ＥＣＵの機能の概要について説明する。図１は、第１の実施形態におけるエンジン制御ＥＣＵのブロック構成図である。
センサ１１，１４，１６，１８，２４，２５，２６，２８からの出力の他、アクセルペダルの踏み込み量を検出するアクセルポジション・センサ４３からの出力、車速を車輪速等から検出して出力する車速センサ４５等が、エンジン制御ＥＣＵ２７Ａに入力される。
このエンジン制御ＥＣＵ２７Ａは、マイクロコンピュータ２７ａを主体として構成されている。マイクロコンピュータ２７ａは、図示しないＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）や、高速書き込みができる不揮発メモリ、入力インタフェース回路２７ｂ、出力インタフェース回路２７ｃ等から構成されている。
そして、マイクロコンピュータ２７ａは、例えば、ＲＯＭに格納されているプログラムをＣＰＵが実行して、運転者のアクセルペダルの踏み込み量やエンジン運転状態に応じて、スロットルバルブ（図示せず）の開度制御や燃料噴射弁２０Ａの燃料噴射量の制御や点火プラグ２１の点火時期の制御を行う。
【００２７】
ちなみに、エンジン制御ＥＣＵ２７Ａには、バッテリＢからの電源を受けて、エンジン制御ＥＣＵ２７Ａ内のマイクロコンピュータ２７ａ、スロットルバルブの開度を制御するスロットルバルブ駆動モータ１０を駆動するための駆動回路１２０、燃料噴射弁２０Ａを駆動する駆動回路１２１等へ電力を供給するＥＣＵ電源回路１１０を含んでいる。
ＥＣＵ電源回路１１０はイグニッション・スイッチ１１１（以下、「ＩＧ−ＳＷ１１１」と称する）により、オン状態になり、ディストリビュータ２９へ高電圧を発生させて供給する図示しないイグナイターへの給電もオン状態となる。
【００２８】
マイクロコンピュータ２７ａは、ＲＯＭに内蔵されたプログラムを読み出して実行することにより実現される機能部である、エンジン回転速度演算部２１０、タイミング制御部２１１Ａ、要求出力演算部２１２、燃料供給系制御部２１４Ａ、燃料噴射制御部２１５Ａ、点火時期制御部２１６等を含んで構成されている。
【００２９】
（エンジン回転速度演算部）
タイミング制御部２１１Ａは、エンジン制御の全体制御を行うために、ＩＧ−ＳＷ１１１の操作位置信号を検出するとともに、その操作位置信号に対応した操作位置検出フラグＦＬＡＧＩＧＳＷを設定処理する。また、エンジン回転速度演算部２１０は、クランクセンサ２６からの信号にもとづいてエンジン回転速度Ｎｅを算出し、要求出力演算部２１２、燃料供給系制御部２１４Ａ、点火時期制御部２１６へ入力する。
【００３０】
（タイミング制御部）
タイミング制御部２１１Ａは、クランクセンサ２６からの信号（以下、「ＣＲＫパルス」と称する）及びＴＤＣセンサ２８からの信号（以下、「ＴＤＣパルス」と称する）を読み込み、それらの信号にもとづいて各気筒の吸入行程の開始のＴＤＣタイミングを基準クランク角（＝０（ゼロ）ｄｅｇ．）として検出する。そして、基準クランク角０（ゼロ）ｄｅｇ．からＣＲＫパルスを新たに受信する毎に、例えば、６ｄｅｇ．減算して現在の各気筒のクランク角を演算し、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶させる。
【００３１】
なお、クランク角が−１８０ｄｅｇ．のときその値を５４０ｄｅｇ．と読み替え、引き続き、ＣＲＫパルスを新たに受信する毎に減算する。
このクランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄは、具体的には前記した高速書き込み可能な不揮発メモリで構成される。ここで、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄが請求の範囲に記載の「気筒判別情報記憶手段」に対応する。
【００３２】
図２は、ＴＤＣパルス、ＣＲＫパルス及び各気筒の行程を示すタイムチャートである。
本実施形態では、タイミング制御部２１１Ａにおいて、図２の最上段の「ＴＤＣ」と表示したＴＤＣパルス及び２段目に「ＣＲＫ」と表示したＣＲＫパルスのそれぞれのタイムチャートのＡ部、Ｂ部、Ｃ部、Ｄ部で示すように所定のＢＴＤＣ（Before TDC）角の期間において、ＣＲＫパルスの形状とＴＤＣパルスの形状の組み合わせのいずれが入力されたかを判定して、どの気筒の排気行程のＴＤＣであるかを判定する。
【００３３】
図２に示したＣＲＫパルスの形状とＴＤＣパルスの形状の組み合わせの例においては、４気筒の各排気行程のＴＤＣタイミング毎に異なるＣＲＫパルスの形状とＴＤＣパルスの形状の組み合わせとなっており、１つの気筒の排気行程のＴＤＣタイミングをタイミング制御部２１１Ａが検出することによって、どの気筒が吸入行程に入るのかの気筒判別と、各気筒に対する前記した基準クランク角０に対する現在のクランク角を算出可能になっている。
ちなみに、図２逆三角印「▽」と、「＃Ｎ」（Ｎ＝１〜４）で示した符号は、その▽印を付したタイミングでどの気筒が爆発行程に入ったかを示している。
以下、本実施形態では、内燃機関の各気筒の１つの燃焼サイクルを構成する４ストロークを、「吸入行程」、「圧縮行程」、「爆発行程」、「排気行程」と称する。
なお、「吸入行程」は「吸気行程」とも呼ばれ、「爆発行程」は「膨張行程」とも呼ばれる。
【００３４】
ちなみに、エンジン制御ＥＣＵ２７Ａは、ＩＧ−ＳＷ１１１が、イグニッションＯＮの位置に回されると、そのマイクロコンピュータ２７ａが起動されて初期化処理を開始する。また、ＩＧ−ＳＷ１１１が、スタータ駆動の位置に回されると、スタータがエンジンを回転させ始め、マイクロコンピュータ２７ａの初期化処理が終了すると、タイミング制御部２１１Ａは、クランクセンサ２６からのＣＲＫパルスとＴＤＣセンサ２８からのＴＤＣパルスを一定の周期で読み込みを開始する。そして、初期化処理が終了した直後は、タイミング制御部２１１Ａは、各気筒のクランク角を、前回のエンジン停止時にクランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶させたクランク角に、ＣＲＫパルスを検出のつど６ｄｅｇ．減算して各気筒のクランク角として算出する。このように算出されたクランク角を「記憶にもとづくクランク角」とか「第１の手段にもとづくクランク角」と称する。
【００３５】
そして、マイクロコンピュータ２７ａの初期化処理が終了した後に、タイミング制御部２１１Ａが最初のＴＤＣパルスを検出したタイミングで、記憶にもとづくクランク角と、ＣＲＫパルスの形状とＴＤＣパルスの形状の組み合わせにもとづいて決定した各気筒のクランク角とが一致するか否かを判定し、一致する場合は、そのまま各気筒のクランク角を更新算出し、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶更新する。以下、ＣＲＫパルスの形状とＴＤＣパルスの形状の組み合わせにもとづいて決定した各気筒のクランク角を、「ハードにもとづくクランク角」とか、「第２の手段にもとづくクランク角」と称する。
【００３６】
記憶にもとづくクランク角と、ハードにもとづくクランク角とが一致しなくなる原因としては、エンジン制御ＥＣＵ２７Ａの起動前、もしくは、停止している状態でクランク軸が動かされることが挙げられる。具体的には、エンジンを始動させる際にエンジン制御ＥＣＵ２７Ａが起動する前にスタータが駆動する場合や、サービス工場での修理の際にクランク軸が動かされる場合、タイヤとエンジンがつながった状態（ギアイン状態）において坂道で車両が動いた場合等である。記憶にもとづくクランク角とハードにもとづくクランク角とが一致しない場合は、各気筒のクランク角のズレを修正して、その後は、修正されたクランク角にもとづいてＣＲＫパルスの検出毎に６ｄｅｇ．を減算して各気筒のクランク角を更新計算し、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶更新する。
【００３７】
なお、図２のＡ部、Ｃ部に示すようにＣＲＫパルスが６ｄｅｇ．の基準パルスよりも広幅のパルスが検出する場合は、タイミング制御部２１１Ａは、その前後のＣＲＫパルスと間隔が異なるので容易に判別でき、例えば、広幅のパルスの１周期分は１８ｄｅｇ．に対応するとして、クランク角６ｄｅｇ．の３個分として算出を行う。
また、タイミング制御部２１１Ａは、６ｄｅｇ．毎のクランク角の算出のつどクランク角受信信号を燃料噴射制御部２１５Ａに出力する。
【００３８】
タイミング制御部２１１Ａは、エンジン始動時の最初は記憶にもとづくクランク角を燃料噴射制御部２１５Ａ、点火時期制御部２１６に出力し、その後に記憶にもとづくクランク角をハードにもとづくクランク角でチェックする。記憶にもとづくクランク角とハードにもとづくクランク角との間に誤差がある場合は、記憶にもとづくクランク角が間違っていると判定して、その時点でハードにもとづくクランク角に修正し、その後は修正されたクランク角を燃料噴射制御部２１５Ａ、点火時期制御部２１６に出力する。
【００３９】
（要求出力演算部）
要求出力演算部２１２は、主に、アクセルポジション・センサ４３からの信号や車速センサ４５からの信号、エンジン回転速度演算部２１０で算出されたエンジン回転速度Ｎｅ等にもとづいて、トランスミッションの減速段を推定し、現在のエンジン出力トルクを推定し、要求トルクを算出したり、それに応じた吸気量を算出し、スロットルバルブ駆動モータ１０によるスロットルバルブ（図示せず）の開度を制御したりする。要求出力演算部２１２で推定された現在のエンジン出力トルクは、燃料供給系制御部２１４Ａ、燃料噴射制御部２１５Ａに入力される。
【００４０】
なお、要求出力演算部２１２における要求トルクに応じた吸気量の算出に当たっては、例えば、水温センサ２５からのエンジン冷却水の水温、スロットル開度センサ１６からのスロットル開度、吸気温センサ１１からの吸気空気の温度、エアフローメータ１４からの吸気流量、吸気圧センサ１８からの吸気圧等が用いられる。
【００４１】
ここで、エンジン回転速度Ｎｅや、車速や、要求出力演算部２１２で算出された現在の推定トルクや要求トルク、アクセルポジション・センサ４３からの信号等が、請求の範囲に記載の「運転状態」であり、クランクセンサ２６、アクセルポジション・センサ４３、車速センサ４５、エンジン回転速度演算部２１０、要求出力演算部２１２等が、「運転状態」を検出するための「運転状態検出手段」である。
【００４２】
（燃料供給系制御部）
燃料供給系制御部２１４Ａは、フュエルポンプモータ４を制御する。
【００４３】
（燃料噴射制御部）
燃料噴射制御部２１５Ａは、要求出力演算部２１２において算出された要求トルクや、エンジン回転速度Ｎｅに応じて、燃料噴射量、具体的には、燃料噴射時間を設定し、タイミング制御部２１１Ａからの各気筒のクランク角信号に応じて予め設定された噴射開始のタイミングマップ（図示せず）にもとづいて、各気筒の燃料噴射弁２０Ａに対して燃料噴射の制御を行う。
燃料噴射制御部２１５Ａは、排気ガスセンサ２４からの排気ガス中の酸素濃度の信号にもとづいて、燃料噴射量を調節し、排気ガス規制に適合するような燃焼状態に調節する。
【００４４】
（点火時期制御部）
点火時期制御部２１６は、エンジン回転速度Ｎｅ、タイミング制御部２１１Ａからの前記した各気筒のクランク角信号にもとづいて、出力トルク制御と排気ガス制御の観点から点火時期制御を行う。この点火時期制御の方法は公知の技術であり、詳細な説明は省略する。
【００４５】
《燃料噴射制御の全体フローチャート》
次に、図３、図４を参照しながらエンジン制御ＥＣＵ２７Ａのマイクロコンピュータ２７ａのＣＰＵにおけるエンジン始動時、エンジン通常運転時、エンジン停止時の燃料噴射制御の概要について説明する。図３、図４は、エンジン制御ＥＣＵにおけるエンジンの始動時から停止時までの燃料噴射制御の流れを示す全体フローチャートである。
ここで「スタート」は、運転者によるＩＧ−ＳＷ１１１の操作により、エンジン制御ＥＣＵ２７Ａのマイクロコンピュータ２７ａが起動し、ステップＳ０１では、ＩＧ−ＳＷ１１１の操作位置検出フラグを、イグニッションＯＮを意味する図示省略の「ＦＬＡＧＩＧＳＷ＝１」と設定する。
【００４６】
ステップＳ０２では、ＣＰＵにおいて初期化処理が開始され、その処理の中で、タイミング制御部２１１Ａ、燃料噴射制御部２１５Ａにおいて「初回燃料噴射に係わるフラグの初期化処理」が行なわれる。具体的には、例えば、以下のフラグやデータをリセット処理する。
燃料噴射制御部２１５Ａは、エンジン始動の際の各気筒における初回の燃料噴射をしたことを示す初回燃料噴射フラグＦ＿ＦＩＲＳＴＩＮＪ（ｉ）のリセットを行う（Ｆ＿ＦＩＲＳＴＩＮＪ（ｉ）＝０，ｉ＝１〜Ｎ）。ここでｉは気筒数Ｎ（本実施形態ではＮ＝４）個のうち気筒番号を示す引数である。
また、燃料噴射制御部２１５Ａは、前記した初回の燃料噴射をしたクランク角を記憶したことを示す初回燃料噴射時期の格納済み（記憶済み）を示すフラグＦ＿ＦＩＲＳＴＩＮＪＳＥＴ（ｉ）のリセットを行う（Ｆ＿ＦＩＲＳＴＩＮＪＳＥＴ（ｉ）＝０，ｉ＝１〜Ｎ）。
さらに、タイミング制御部２１１Ａは、実行程判別後に、クランク角の修正や、初回燃料噴射に続く次回の燃料噴射の制御のための燃料噴射済みフラグの修正処理が必要に応じてなされたことを示すフラグＦ＿ＣＲＫＡＧＬＣＲをリセットしたり（Ｆ＿ＣＲＫＡＧＬＣＲ＝０）、記憶されたクランク角ＣＡ（ｉ）にもとづく初回燃料噴射から実行程判別までに進んだクランク角であるＣＹＬＪＵＤＡＧＬ（ｉ）をリセットしたりする（ＣＹＬＪＵＤＡＧＬ（ｉ）＝０，ｉ＝１〜Ｎ）。
【００４７】
そして、マイクロコンピュータ２７ａのＣＰＵがステップＳ０２の前記した初期化処理を終了直後、つまりエンジンＥＣＵ２７Ａの起動完了直後から、タイミング制御部２１１Ａが、ＣＲＫパルス及びＴＤＣパルスを読み込む。このＣＲＫパルス及びＴＤＣパルスを読み込みは、ＣＲＫパルス入力毎、または、一定パルス間隔毎で繰り返される。
そして、ステップＳ０３では、タイミング制御部２１１Ａは、ＣＲＫパルスを検出したか否かをチェックする。ＣＲＫパルスを検出した場合（Ｙｅｓ）は、ステップＳ０４へ進み、ＣＲＫパルスを検出しない場合（Ｎｏ）は、結合子（Ａ）に従って、図４のステップＳ１７へ進む。ステップＳ０４では、タイミング制御部２１１Ａは、ＣＲＫパルス検出毎に各気筒のクランク角ＣＡ（ｉ）を、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶更新する。具体的には、タイミング制御部２１１Ａは、ＣＲＫパルスを読み込む毎にクランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶されたクランク角を読み出し、読み出したクランク角ＣＡ（ｉ）に、例えば、６ｄｅｇ．減算して新たなクランク角ＣＡ（ｉ）として記憶させる。ここでｉは気筒数Ｎ（本実施形態ではＮ＝４）個のうちの気筒番号を示す引数である。
なお、６ｄｅｇ．減算された新たなクランク角ＣＡ（ｉ）が−１８０ｄｅｇ．となったときは、それを５４０ｄｅｇ．と読み直してクランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶する。
【００４８】
ステップＳ０５では、燃料噴射制御部２１５Ａが、ＣＲＫパルスの検出毎に燃料噴射済みフラグの初期化処理を行う。この燃料噴射済みフラグの初期化処理については、図６に示す詳細フローチャートの説明において後記する。
【００４９】
ステップＳ０６では、タイミング制御部２１１Ａは、フラグＦ＿ＣＲＫＡＧＬＣＲ＝１であるか否かをチェックする。フラグＦ＿ＣＲＫＡＧＬＣＲ＝１の場合（Ｙｅｓ）は、結合子（Ｂ）に従って、図４のステップＳ１３へ進み、フラグＦ＿ＣＲＫＡＧＬＣＲ≠１の場合（Ｎｏ）は、ステップＳ０７へ進む。
ステップＳ０７では、タイミング制御部２１１Ａは、ＣＲＫパルス、ＴＤＣパルスから実クランク角を判別したか否かをチェックする。具体的には、ＣＲＫパルス形状とＴＤＣパルス形状の組み合わせから、各気筒の実クランク角を判別できたか否かをチェックする。ＣＲＫパルス、ＴＤＣパルスから実クランク角を判別した場合（Ｙｅｓ）は、結合子（Ｃ）に従って、図４のステップＳ０８へ進み、実クランク角を判別しなかった場合（Ｎｏ）は、結合子（Ｂ）に従って、図４のステップＳ１３へ進む。
ちなみに、ＣＲＫパルス形状とＴＤＣパルス形状の組み合わせから、各気筒の実クランク角は、それぞれ一意に決まる。
【００５０】
ステップＳ０８では、タイミング制御部２１１Ａは、図３のフローチャートのステップＳ０４において記憶更新されたクランク角ＣＡ（ｉ）とステップＳ０７で判定された実クランク角のズレ幅ＤＣＲＫＡＧＬ（０〜７２０ｄｅｇ．）を算出する。
ステップＳ０９では、タイミング制御部２１１Ａは、ズレ幅ＤＣＲＫＡＧＬ＝０か否かをチェックする。ズレ幅ＤＣＲＫＡＧＬ＝０の場合（Ｙｅｓ）は、ステップＳ１２へ進み、ズレ幅ＤＣＲＫＡＧＬ≠０の場合（Ｎｏ）は、ステップＳ１０へ進む。
ステップＳ１０では、タイミング制御部２１１Ａは、各気筒のクランク角ＣＡ（ｉ）をズレ幅ＤＣＲＫＡＧＬで修正し、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに格納（記憶）させる。
【００５１】
ステップＳ１１では、燃料噴射制御部２１５Ａが、過去の制御サイクルで後記するステップＳ１３の処理の中で燃料噴射制御の実行に伴って立てられた燃料噴射済みフラグの修正処理を行う。このステップＳ１１の詳細な処理は、図１０に示す詳細フローチャートの説明において後記する。
そして、ステップＳ１２では、タイミング制御部２１１Ａは、「ハードにもとづくクランク角」で、必要に応じてクランク角ＣＡ（ｉ）の修正や燃料噴射済みフラグの修正がされたことを示すフラグＦ＿ＣＲＫＡＧＬＣＲを立てる（「Ｆ＿ＣＲＫＡＧＬＣＲ＝１」）。
【００５２】
ステップＳ１３では、燃料噴射制御部２１５Ａが、燃料噴射実行処理を行う。このステップＳ１３の詳細な処理は、図７に示す詳細フローチャートの説明において後記する。
ステップＳ１４では、燃料噴射制御部２１５Ａが、記憶にもとづくクランク角ＣＡ（ｉ）により燃料噴射した気筒の燃料噴射時期を記憶する（「記憶で噴射した気筒の噴射時期を格納」）。このステップＳ１４の詳細な処理は、図８に示す詳細フローチャートの説明において後記する。
ステップＳ１５では、燃料噴射制御部２１５Ａが、その気筒に対して記憶にもとづくクランク角により燃料噴射したときから実行程判別（「ハードにもとづくクランク角」のチェックの完了）までに進んだクランク角の算出の処理を行う（「噴射から進んだ角度を算出」）。このステップＳ１５の詳細な処理は、図９に示す詳細フローチャートの説明において後記する。
【００５３】
ステップＳ１６では、点火時期制御部２１６が、タイミング制御部２１１Ａから入力されるクランク角ＣＡ（ｉ）に従って、所定のクランク角を検出したとき、各気筒の点火を行う（「点火」）。
ステップＳ１７では、タイミング制御部２１１Ａは、ＩＧ−ＳＷ１１１がエンジン停止の操作位置に操作されたか否かをチェックする。つまり、ＩＧ−ＳＷ１１１がＯＦＦされたか否かをチェックする（「ＩＧ−ＳＷ  ＯＦＦ？」）。このチェックは、エンジンＥＣＵ２７Ａの起動完了直後から所定の周期でなされる。ＩＧ−ＳＷ１１１がＯＦＦされた場合（Ｙｅｓ）は、燃料供給系制御部２１４Ａ、燃料噴射制御部２１５Ａ、点火時期制御部２１６は、エンジン停止制御を行い、タイミング制御部２１１Ａは、一連のエンジン制御を終了する手続きを開始する。ＩＧ−ＳＷ１１１がＯＦＦされなかった場合（Ｎｏ）は、結合子（Ｄ）に従って、図３のステップＳ０３に戻る。
【００５４】
ここで、ステップＳ０７において、実クランク角を判別してＹｅｓとなるまでは、ステップＳ０８〜Ｓ１２は通過せず、基本的にステップＳ０３〜Ｓ０７、続いてステップＳ１３〜Ｓ１７、そして再びステップＳ０３へ戻る繰り返しとなる。その繰り返しの期間、ステップＳ１４では、記憶で噴射した気筒の噴射時期を格納し、噴射から進んだ角度を算出する。
そして、ステップＳ０７において実クランク角を判別してＹｅｓとなった場合に、ステップＳ０８〜Ｓ１２を１回だけ通過し、図３、図４の全体フローチャートのその次の繰り返しにおいては、ステップＳ０６においてＹｅｓとなり、ステップＳ０８〜Ｓ１２を再び通過しなくなる制御となっている。
従って、ステップＳ０７において実クランク角を判別してＹｅｓとなった場合に、ステップＳ０８〜Ｓ１２を１回だけ通過した後は、ステップＳ１３の後、ステップＳ１４，Ｓ１５をジャンプしてステップＳ１６へ進むようにしても良い。
【００５５】
ステップＳ１７においてＹｅｓとなり、タイミング制御部２１１Ａにおける一連のエンジン制御を終了する手続きは、ＩＧ−ＳＷ１１１の操作位置検出フラグを、エンジン停止を意味するＦＬＡＧＩＧＳＷ＝０とし、ＣＲＫパルスを監視し、エンジンの回転が停止したか否かを判定し、エンジンの回転が停止したと判定したときに、各気筒のクランク角ＣＡ（ｉ）を不揮発メモリに格納し、一連のエンジン制御を終了する手続きが完了する。
【００５６】
以上のように、エンジン制御ＥＣＵ２７Ａは、ＩＧ−ＳＷ１１１がＯＦＦされても、しばらく動作状態にあり、タイミング制御部２１１Ａがエンジンの回転停止までＣＲＫパルスを検出して、各気筒のクランク角ＣＡ（ｉ）の記憶更新をする。
ここで、エンジンの回転停止時に最終的に記憶された各気筒のクランク角ＣＡ（ｉ）が、特許請求範囲に記載の「内燃機関の停止時に記憶された気筒判別情報」に対応する。
図３に示すフローチャートにおけるステップＳ０７は、請求の範囲に記載の「実行程判別手段」に対応し、ステップＳ０７におけるＴＤＣパルスを検出した場合の、ＣＲＫパルス形状とＴＤＣパルス形状の組み合わせから各気筒の実クランク角を判別するタイミングが、請求の範囲に記載の「実行程判別」のタイミングに対応する。
【００５７】
図５は、ＴＤＣパルス形状及びＣＲＫパルス形状にもとづく実行程判別の説明図である。図５の（ａ）は、エンジン制御ＥＣＵ２７ＡのＣＰＵが、クランキング開始後に記憶にもとづくクランク角から認識している行程は、＃３の気筒が圧縮行程であり、爆発行程に接近している状態（図５の（ａ）では「記憶気筒＃３」と表示）を示し、エンジン制御ＥＣＵ２７ＡのＣＰＵが起動完了後に始めてＴＤＣパルス形状及びＣＲＫパルス形状の組み合わせから＃３気筒が次に爆発行程に入るＴＤＣパルスを検出したと判定した場合である。この場合は、エンジン停止時に記憶されたクランク角にもとづいて現在のクランク角を算出し、次の爆発行程の気筒が、所定クランク角の範囲内でＴＤＣパルスが立下りの後に立ち上がりを示す基準パルスで、かつ、ＴＤＣパルスの前後でのＣＲＫパルスが６ｄｅｇ．の基準パルス群だけから構成されていることから、図２のＢ部に示すように＃３気筒が次に爆発行程に入ることが正しい判定なので、爆発気筒の気筒判別が正しく、クランク角の記憶ＯＫの判定となる。
なお、気筒判別が正しくても記憶にもとづくクランク角と実クランク角にズレがある場合もクランク角の記憶間違い判定がなされる。
【００５８】
図５の（ｂ）は、エンジン制御ＥＣＵ２７ＡのＣＰＵが、クランキング開始後に記憶にもとづくクランク角から認識している行程は、＃３の気筒が圧縮行程であり、爆発行程に接近している状態（図５の（ｂ）では「記憶気筒＃３」と表示）を示し、エンジン制御ＥＣＵ２７ＡのＣＰＵが起動完了後に始めてＴＤＣパルス形状及びＣＲＫパルス形状の組み合わせから＃４気筒が次に爆発行程に入るＴＤＣパルスを検出したと判定した場合である。この場合は、エンジン停止時に記憶されたクランク角にもとづいて現在のクランク角を算出し、次の爆発行程の気筒が、所定クランク角の範囲内でＴＤＣパルスが立下りのみの単エッジのパルス形状で、かつ、ＴＤＣパルスの前後でのＣＲＫパルスが６ｄｅｇ．を超える広幅パルスを含んで構成されていることから、図２のＣ部に示すように＃４気筒が次に爆発行程に入ることが正しい判定なので、爆発気筒の気筒判別が誤っており、クランク角の記憶間違い判定となる。
【００５９】
《燃料噴射済みフラグの初期化処理》
次に、図６を参照しながら図３に示した全体フローチャートのステップＳ０５における「燃料噴射済みフラグの初期化処理」の詳細な制御について説明する。図６は、燃料噴射済みフラグの初期化処理の制御の流れを示す詳細フローチャートである。この処理は燃料噴射制御部２１５Ａにおいて、タイミング制御部２１１Ａから入力されるＣＲＫパルスの検出毎に行われる。
ステップＳ３５は、プログラミング言語の１種であるＣ言語で表示のループカウンタを示し、引数ｉの１〜Ｎまでの繰り返しの開始を意味するステップである。
ステップＳ３６は、＃ｉ気筒の圧縮行程開始を検出したか否かをクランク角記憶部２１１ａ〜２１１ｄのうちの＃ｉ気筒に対応するクランク角記憶部に記憶されたクランク角ＣＡ（ｉ）から判定する（「＃ｉ気筒の圧縮行程開始？」）。＃ｉ気筒の圧縮行程開始を検出した場合（Ｙｅｓ）は、ステップＳ３７へ進み、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）をリセットする（「Ｆ＿ＩＮＪ（ｉ）＝０」）。ステップＳ３６で＃ｉ気筒の圧縮行程開始を検出しなかった場合（Ｎｏ）は、ステップＳ３８へ進む。
【００６０】
ステップＳ３８では、Ｃ言語で表示の繰り返しの範囲の最後を示す。前記した引数ｉがＮ未満の場合は、ステップＳ３５に戻り、次の引数ｉに対して繰り返し、引数ｉがＮ以上の場合、図３の全体フローチャートに戻る。
ちなみに、ステップＳ０５の燃料噴射済みフラグの初期化処理は、エンジンの運転中はＣＲＫパルスの検出に同期した周期で繰り返し処理されるものであり、ステップＳ３５〜Ｓ３８の繰り返しが引数ｉに対して１〜Ｎまで一順したら終了することを意味しない。
【００６１】
《燃料噴射実行処理》
次に、図７を参照しながら図４に示した全体フローチャートのステップＳ１３における「燃料噴射実行処理」の詳細な制御について説明する。図７は、燃料噴射実行処理の制御の流れを示す詳細フローチャートである。この処理は燃料噴射制御部２１５Ａにおいて実行される。
ステップＳ４１は、プログラミング言語の１種であるＣ言語で表示のループカウンタを示し、引数ｉの１〜Ｎまでの繰り返しの開始を意味するステップである。
ステップＳ４２では、＃ｉ気筒の燃料噴射時期であるか否かをクランク角記憶部２１１ａ〜２１１ｄのうちの＃ｉ気筒に対応するクランク角記憶部に記憶されたクランク角ＣＡ（ｉ）から判定する（「「ＣＡ（ｉ）＝ＩＮＪＯＢ？」）。＃ｉ気筒が燃料噴射時期の場合（Ｙｅｓ）は、ステップＳ４３へ進み、＃ｉ気筒が燃料噴射時期でない場合（Ｎｏ）は、ステップＳ４８へ進む。ここで、ＩＮＪＯＢは、燃料噴射時期を示す所定のクランク角の値を示し、排気行程噴射の場合は、ＩＮＪＯＢの値は、０〜１８０ｄｅｇ．未満の値で設定される。
【００６２】
ちなみに、エンジン制御ＥＣＵ２７Ａが起動すると、燃料噴射制御部２１５Ａは、最初に燃料が噴射される＃ｉ気筒に対してのみは、エンジンの始動の早期化を促進するため、エンジンのクランキングが開始して最初のＣＲＫパルスの入力を受けたタイミングで燃料噴射を実行する。その次に続く各気筒の燃料噴射は、クランク角ＣＡ（ｉ）にもとづく所定の燃料噴射タイミングで燃料噴射をさせる。具体的には、本実施形態のように排気行程噴射の場合は、記憶更新されたクランク角ＣＡ（ｉ）にもとづき、排気行程のタイミングの、例えば、クランク角９０ｄｅｇ．で燃料噴射させる。
【００６３】
ステップＳ４３では、＃ｉ気筒は、燃料噴射済みか否かを燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）が立っているか否かでチェックする（「Ｆ＿ＩＮＪ（ｉ）＝１？」）。＃ｉ気筒が燃料噴射済みの場合（Ｙｅｓ）は、ステップＳ４８へ進み、＃ｉ気筒が燃料噴射済みでない場合（Ｎｏ）は、ステップＳ４４へ進む。ステップＳ４４では、＃ｉ気筒に対して燃料噴射を実行する。もちろん、このステップＳ４４における燃料噴射制御部２１５Ａの燃料噴射制御は、要求出力演算部２１２が算出した要求トルクに対応する噴射時間であり、この場合はエンジン始動時の要求トルクに応じた燃料噴射量である。
ステップＳ４５では、＃ｉ気筒に燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）を立てる（「Ｆ＿ＩＮＪ（ｉ）＝１」）。
【００６４】
ステップＳ４６では、初回燃料噴射済みか否かを初回燃料噴射フラグＦ＿ＦＩＲＳＴＩＮＪ（ｉ）が立っているか否かでチェックする（「Ｆ＿ＦＩＲＳＴＩＮＪ（ｉ）＝１？」）。初回燃料噴射済みの場合（Ｙｅｓ）は、ステップＳ４８へ進み、初回燃料噴射済みでない場合（Ｎｏ）は、ステップＳ４７へ進む。
そして、ステップＳ４７では、初回燃料噴射フラグＦ＿ＦＩＲＳＴＩＮＪ（ｉ）を立てる（「Ｆ＿ＦＩＲＳＴＩＮＪ（ｉ）＝１」）。その後、ステップＳ４８へ進む。ステップＳ４８では、Ｃ言語で表示の繰り返しの範囲の最後を示す。前記した引数ｉがＮ未満の場合は、ステップＳ４１に戻り、次の引数ｉに対して繰り返し、引数ｉがＮ以上の場合、図４の全体フローチャートに戻る。
【００６５】
《記憶噴射した気筒の噴射時期の格納の処理》
次に、図８を参照しながら図４に示した全体フローチャートのステップＳ１４における「記憶噴射した気筒の噴射時期を格納」の処理の詳細な制御について説明する。図８は、記憶にもとづくクランク角により燃料噴射をした気筒の燃料噴射時期の格納の制御の流れを示す詳細フローチャートである。この処理は燃料噴射制御部２１５Ａにおいて実行される。
【００６６】
ステップＳ５１は、プログラミング言語の１種であるＣ言語で表示のループカウンタを示し、引数ｉの１〜Ｎまでの繰り返しの開始を意味するステップである。ステップＳ５２では、初回燃料噴射時期の格納済み（記憶済み）か否かを初回燃料噴射時期の記憶済みフラグＦ＿ＦＩＲＳＴＩＮＪＳＥＴ（ｉ）が立っているか否かでチェックする（「Ｆ＿ＦＩＲＳＴＩＮＪＳＥＴ（ｉ）＝１？」）。初回燃料噴射時期の格納済みの場合（Ｙｅｓ）は、ステップＳ５６へ進み、そうではない場合（Ｎｏ）は、ステップＳ５３へ進む。ステップＳ５３では、初回燃料噴射か否かをチェックする（「Ｆ＿ＦＩＲＳＴＩＮＪ（ｉ）＝１？」）。初回燃料噴射の場合（Ｙｅｓ）は、ステップＳ５４へ進み、そうでない場合（Ｎｏ）は、ステップＳ５６へ進む。
【００６７】
ステップＳ５４では、その燃料噴射時のクランク角ＣＡ（ｉ）を初回燃料噴射時期として格納（記憶）する（「初回燃料噴射時期として格納  ＦＩＩＮＪＡＧＬ（ｉ）＝ＣＡ（ｉ）」）。
ステップＳ５５では、初回燃料噴射時期の格納済みのフラグを立てる（「Ｆ＿ＦＩＲＳＴＩＮＪＳＥＴ（ｉ）＝１」）。その後、ステップＳ５６へ進む。
ステップＳ５６では、Ｃ言語で表示の繰り返しの範囲の最後を示す。前記した引数ｉがＮ未満の場合は、ステップＳ５１に戻り、次の引数ｉに対して繰り返し、引数ｉがＮ以上の場合は、図４の全体フローチャートに戻る。
【００６８】
《噴射から進んだ角度を算出》
次に、図９を参照しながら図４に示した全体フローチャートのステップＳ１５における「噴射から進んだ角度を算出」の処理の詳細な制御について説明する。図９は、記憶にもとづくクランク角により燃料噴射をした気筒のその燃料噴射から実行程判別までに進んだクランク角の算出の制御の流れを示す詳細フローチャートである。この処理は燃料噴射制御部２１５Ａにおいて実行される。
ステップＳ６１は、プログラミング言語の１種であるＣ言語で表示のループカウンタを示し、引数ｉの１〜Ｎまでの繰り返しの開始を意味するステップである。
ステップＳ６２では、初回燃料噴射フラグＦ＿ＦＩＲＳＴＩＮＪ（ｉ）が立っているか否かをチェックする（「初回燃料噴射？  Ｆ＿ＦＩＲＳＴＩＮＪ（ｉ）＝１？」）。初回燃料噴射フラグＦ＿ＦＩＲＳＴＩＮＪ（ｉ）が立っている場合（Ｙｅｓ）は、ステップＳ６３へ進み、立っていない場合（Ｎｏ）は、ステップＳ６４へ進む。
【００６９】
ステップＳ６３では、記憶にもとづくクランク角により燃料噴射をした気筒のその燃料噴射から実行程判別までに進んだクランク角ＣＹＬＪＵＤＡＧＬ（ｉ）の算出のためのクランク角の積算をして、格納する（「噴射から進んだ角度を算出して格納  ＣＹＬＪＵＤＡＧＬ（ｉ）＝ＣＹＬＪＵＤＡＧＬ（ｉ）＋６ｄｅｇ．」）。
この角度の算出は、ＣＲＫパルス検出毎に、図３に示す全体フローチャートのステップＳ０６においてＹｅｓとなるまでの間繰り返される。ステップＳ６４では、Ｃ言語で表示の繰り返しの範囲の最後を示す。前記した引数ｉがＮ未満の場合は、ステップＳ６１に戻り、次の引数ｉに対して繰り返し、引数ｉがＮ以上の場合は、図４の全体フローチャートに戻る。
【００７０】
《燃料噴射済みフラグの修正処理》
次に、図１０を参照しながら図４に示した全体フローチャートのステップＳ１１における「燃料噴射済みフラグの修正処理」の詳細な制御について説明する。図１０は、燃料噴射済みフラグの修正処理の制御の流れを示す詳細フローチャートである。この処理は燃料噴射制御部２１５Ａにおいて所定クランク角毎に実行される制御である。
ステップＳ７１は、プログラミング言語の１種であるＣ言語で表示のループカウンタを示し、引数ｉの１〜Ｎまでの繰り返しの開始を意味するステップである。
ステップＳ７２では、初回燃料噴射済み（Ｆ＿ＦＩＲＳＴＩＮＪ（ｉ）＝１）か否かをチェックする。初回燃料噴射済みの場合（Ｙｅｓ）は、ステップＳ７３へ進み、そうでない場合（Ｎｏ）は、ステップＳ７８へ進む。
【００７１】
ステップＳ７３では、初回燃料噴射時期の修正をする。具体的には、ＦＩＩＮＪＡＧＬＣＲ（ｉ）＝ＦＩＩＮＪＡＧＬ（ｉ）−ＤＣＲＫＡＧＬの計算を行う。ここで、ＦＩＩＮＪＡＧＬ（ｉ）は、図８に示した詳細フローチャートのステップＳ５４で記憶させたものであり、ＤＣＲＫＡＧＬは、図４に示した全体フローチャートのステップＳ０８で算出したズレ幅ＤＣＲＫＡＧＬである。そして、初回燃料噴射時期を示す実クランク角ＦＩＩＮＪＡＧＬＣＲ（ｉ）を、クランク角ＣＡ（ｉ）と同様に５４０ｄｅｇ．〜−１７４ｄｅｇ．の範囲で算出する。ちなみに、−１８０ｄｅｇ．は５４０ｄｅｇ．と読み替える。
【００７２】
ステップＳ７４では、次回の＃ｉ気筒の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）を算出する。具体的には、ＩＮＴＫＪＵＤＡＧＬ（ｉ）＝ＦＩＩＮＪＡＧＬＣＲ（ｉ）−ＣＹＬＪＵＤＡＧＬ（ｉ）を算出する。ここで、ＣＹＬＪＵＤＡＧＬ（ｉ）は、図９に示した詳細フローチャートのステップＳ６３において格納された初回燃料噴射時期からのクランク角の進みＣＹＬＪＵＤＡＧＬ（ｉ）である。そして、ここで算出されたＩＮＴＫＪＵＤＡＧＬ（ｉ）の値は、最大値を５４０ｄｅｇ．とし、それ以下のクラン角表示の値であり、負値側の最低値に制限を設けないこととする。
【００７３】
図１１は、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）修正のための実燃料噴射時期ＦＩＩＮＪＡＧＬＣＲ（ｉ）（クランク角表示）と、次回の＃ｉ気筒の燃料の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）の設定の説明図である。
ＣＹＬＪＵＤＡＧＬ（ｉ）は、必ず正の値であるので、図１１に示すＩＮＴＫＪＵＤＡＧＬ（ｉ）の値がＦＩＩＮＪＡＧＬＣＲ（ｉ）の値より大きな値を取ることはない。そして、ＩＮＴＫＪＵＤＡＧＬ（ｉ）の値は、例えば、−７２０までの負値を許容している。
【００７４】
ステップＳ７５では、ＩＮＴＫＪＵＤＡＧＬ（ｉ）が−１８０ｄｅｇ．より大きいか否かをチェックする（「ＩＮＴＫＪＵＤＡＧＬ（ｉ）＞−１８０ｄｅｇ．」）。ＩＮＴＫＪＵＤＡＧＬ（ｉ）が−１８０ｄｅｇ．より大きい場合（Ｙｅｓ）は、ステップＳ７６へ進み、燃料噴射済みとする。つまり、既に燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）＝１の場合はそのままとし、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）＝０の場合は、そのフラグを立てる（「Ｆ＿ＩＮＪ（ｉ）＝１」）。ＩＮＴＫＪＵＤＡＧＬ（ｉ）が−１８０ｄｅｇ．以下の場合（Ｎｏ）は、ステップＳ７７へ進み、燃料未噴射とする。つまり、既に燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）＝０の場合はそのままとし、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）＝１の場合は、そのフラグを倒す（「Ｆ＿ＩＮＪ（ｉ）＝０」）。
【００７５】
これは、図１１に示すようにＩＮＴＫＪＵＤＡＧＬ（ｉ）＞−１８０ｄｅｇ．の領域Ｘの場合は、現在の実クランク角が、記憶にもとづくクランク角による＃ｉ気筒の初回燃料噴射と同一のサイクルにあると判定して、つまり、初回燃料噴射による燃料は燃焼にまだ寄与していないと判定して、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）が既に立っている場合は立てたままとし、そのフラグが立っていない場合は立てるものである。また、図１１に示すようにＩＮＴＫＪＵＤＡＧＬ（ｉ）≦−１８０ｄｅｇ．の領域Ｙの場合は、現在の実クランク角が、記憶にもとづくクランク角による＃ｉ気筒の初回燃料噴射の次のサイクルにあると判定して、つまり、初回燃料噴射による燃料は気筒内に導入され、次のサイクルとなっていると判定して、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）が既に立っている場合は倒し、そのフラグが立っていない場合はそのままとするものである。
【００７６】
ステップＳ７６またはステップＳ７７の後、ステップＳ７８へ進む。ステップＳ７８では、Ｃ言語で表示の繰り返しの範囲の最後を示す。前記した引数ｉがＮ未満の場合は、ステップＳ７１に戻り、次の引数ｉに対して繰り返し、引数ｉがＮ以上の場合は、図４の全体フローチャートに戻る。
【００７７】
このようなエンジン始動時の記憶にもとづくクランク角と実クランク角のズレ修正にもとづく燃料噴射済みフラグの修正処理は、図３に示した全体フローチャートのステップＳ０７におけるＹｅｓとなる実行程判別タイミング（「記憶間違い判定タイミング」とも称する）ｔＪＵＤ（図１２参照）より前に、記憶にもとづくクランク角に従って行われた初回燃料噴射に対してのみ燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）の修正を必要に応じて行う。
本実施形態においては、図２に示すように１８０ｄｅｇ．毎にＴＤＣパルス形状とＣＲＫパルス形状から実クランク角を判定できるようになっているので、各気筒の全ての初回燃料噴射が記憶間違い判定タイミングｔＪＵＤの前になされるとは限らないための配慮である。
ここで、図１０に示した燃料噴射済みフラグの修正処理の制御の流れを示す詳細フローチャートにおけるステップＳ７３〜Ｓ７７は、請求の範囲に記載の「噴射タイミング判別手段」に対応する。
【００７８】
次に、図１２を参照しながら本実施形態におけるエンジン始動時の各気筒の記憶にもとづくクランク角による初回燃料噴射後の次回の燃料噴射の制御結果について説明する。
図１２は、ポート噴射式エンジンにおける排気行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例１における燃料噴射済みフラグの修正の説明図である。
【００７９】
図１２の（ａ）には、実行程を示すバーチャートと、燃料噴射制御部２１５Ａから各気筒の燃料噴射弁２０Ａ（図１参照）に対して出力される開弁期間を示す制御信号（以下、「ＩＮＪ信号」と称する）と、燃料噴射済みフラグＦ＿ＩＮＪ（フローチャートでは、気筒番号を示す引数ｉを加えてＦ＿ＩＮＪ（ｉ）と表示）を示す。図１２の（ａ）に示すように、通常運転状態の場合は、ＩＮＪ信号は、排気行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２だけオン（図１２中、「１」で表示）状態となる。所定の期間ｔ１〜ｔ２は、要求トルクとエンジンの機関温度等の環境条件などに応じた燃料噴射量により変化する。
燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになった、例えば、タイミングｔ１で立ち（＝１）、圧縮行程を迎えると、タイミングｔ３において次の燃料噴射を可能とするようにリセット（＝０）する。
【００８０】
次に、図１２の（ｂ）には、実行程を示すバーチャートと、エンジン制御ＥＣＵ２７ＡのＣＰＵの認識する行程（図中、「ＥＣＵ認識の行程」と表示）と、ＩＮＪ信号と、燃料噴射済みフラグＦ＿ＩＮＪを示す。図１２の（ｂ）は、エンジン始動時の記憶にもとづくクランク角による初回燃料噴射を行い、その後に記憶にもとづくクランク角では吸入行程であると認識している行程の途中、例えば、−９０ｄｅｇ．のクランク角の記憶間違い判定タイミングｔＪＵＤにおいて、実クランク角がＴＤＣパルス形状及びＣＲＫパルス形状にもとづいて圧縮行程に入っていると判定された場合の例を示している。図１２の（ｂ）中、実線で示すＩＮＪ信号と燃料噴射済みフラグＦ＿ＩＮＪは、従来技術の場合を示し、一点鎖線で示すＩＮＪ信号と燃料噴射済みフラグＦ＿ＩＮＪは、本実施形態における従来技術から変化した部分を示している。
【００８１】
初回燃料噴射は、ＩＮＪ信号に示すように、記憶にもとづくクランク角の排気行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２（燃料噴射タイミング）だけオンされている。そして、燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになったタイミングｔ１で立ち（＝１）、クランク角の記憶間違い判定タイミングｔＪＵＤにおいて、記憶にもとづくクランク角（ここでは吸入行程中）で燃料噴射済みフラグの初期化処理（図３のステップＳ０５）が行われるため、燃料噴射済みフラグＦ＿ＩＮＪは立ったままとなり、その後の処理にてクランク角の記憶間違い判定にもとづくクランク角の修正が行われる（図４のステップＳ１０）。そして、次回の処理サイクルの燃料噴射済みフラグＦ＿ＩＮＪの初期化処理ではすでに圧縮行程の開始を過ぎているため、燃料噴射済みフラグを倒すことはなく、タイミングｔＪＵＤの後も実線で示されているように燃料噴射済みフラグＦ＿ＩＮＪは立ったままである。従って、次の排気行程の所定の期間ｔ１Ｎ〜ｔ２Ｎにおいて燃料噴射を実行させる制御ができない。具体的には、図７の燃料噴射実行処理の詳細フローチャートのステップＳ４３に示すように、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）が１でない場合に、ステップＳ４４へ進むことができ、燃料噴射が実行できるようになっているためである。
【００８２】
しかし、本実施形態では、図１２の（ｂ）に示すようにタイミングｔＪＵＤにおいてクランク角の記憶間違い判定を行い、ＥＣＵ認識の行程を修正し、燃料噴射制御部２１５Ａは、初回燃料噴射時期を示す実クランク角ＦＩＩＮＪＡＧＬＣＲ（ｉ）が、図１１に示すように０ｄｅｇ．であり、初回燃料噴射時期からのクランク角の進みＣＹＬＪＵＤＡＧＬ（ｉ）が、１８０ｄｅｇ．である。そして、ＩＴＫＪＵＤＡＧＬ＝０−１８０＝−１８０ｄｅｇ．、つまり、−１８０ｄｅｇ．以下となる。従って、図４のステップＳ１１において立っていた燃料噴射済みフラグＦ＿ＩＮＪを、クランク角の記憶間違い判定タイミングｔＪＵＤの後、一点鎖線で示すように倒す（＝０）。その結果、燃料噴射制御部２１５Ａは、燃料噴射済みフラグＦ＿ＩＮＪがリセットされているので、一点鎖線で示すように次の燃料噴射が実クランク角で排気行程のｔ１Ｎ〜ｔ２Ｎの期間にＩＮＪ信号を出力する。それに伴って燃料噴射済みフラグＦ＿ＩＮＪが、一点鎖線で示すｔ１Ｎ〜ｔ３Ｎの期間立っている。
【００８３】
図１２の（ｂ）に示すように初回燃料噴射（ｔ１〜ｔ２の期間のＩＮＪ信号）は実クランク角で遡って換算すると、吸入行程において行われており、当然噴射された燃料は気筒内へ導入されており、仮にクランク角の記憶間違い判定タイミングｔＪＵＤの実行程判別後の最初の燃料噴射タイミングである次の排気行程のｔ１Ｎ〜ｔ２Ｎの期間に燃料噴射しないとすると、この燃焼サイクルにおいて筒内へ燃料が導入されていないため失火することになり、エンジン始動時のエンジンの回転を滑らかにすることができない。そこで、燃料噴射制御部２１５Ａは、実行程判別後の最初の燃料噴射タイミングにて予定される次回の＃ｉ気筒の燃料噴射が、実行程判別前の記憶されたクランク角ＣＡ（ｉ）もとづいて初回燃料噴射された燃料の燃焼タイミングと同じか否かを、次回の＃ｉ気筒の燃料の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）で判定し、次回の＃ｉ気筒の燃料噴射を実行するかどうかの制御を行う。
【００８４】
また、特許文献１に記載の従来技術のように、初回燃料噴射の量だけ次回の燃料噴射量を減じるような制御を行わないので、次回燃料噴射量が不足して失火するということも防止できる。つまり、始動性の悪化を防止できる。
なお、この次回の＃ｉ気筒の燃料の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）での判定が、請求の範囲に記載の「実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを判別する」に対応している。
【００８５】
《第１の実施形態の吸入行程噴射への適用例》
第１の実施形態では、燃料噴射制御部２１５Ａは各気筒の排気行程の所定の期間に燃料噴射弁２０Ａから燃料噴射をするように制御するものとしたがそれに限定されるものではない。ポート噴射式エンジンにおける吸入行程噴射の場合にも同様に適用できる。
【００８６】
図１３は、ポート噴射式エンジンにおける吸入行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例２における燃料噴射済みフラグの修正の説明図である。
図１３の（ａ）には、実行程を示すバーチャートと、燃料噴射制御部２１５Ａから各気筒の燃料噴射弁２０Ａ（図１参照）に対して出力されるＩＮＪ信号と、燃料噴射済みフラグＦ＿ＩＮＪ（フローチャートでは、気筒番号を示す引数ｉを加えてＦ＿ＩＮＪ（ｉ）と表示）を示す。図１３の（ａ）に示すように、通常運転状態の場合は、ＩＮＪ信号は、吸入行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２だけオン（図１３中、「１」で表示）状態となる。所定の期間ｔ１〜ｔ２は、要求トルクとエンジンの機関温度等の環境条件などに応じた燃料噴射量により変化する。
燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになった、例えば、タイミングｔ１で立ち（＝１）、圧縮行程を迎えると、タイミングｔ２において次の燃料噴射を可能とするようにリセット（＝０）する。
【００８７】
図１３の（ｂ）には、実行程を示すバーチャートと、エンジン制御ＥＣＵ２７ＡのＣＰＵの認識する行程（図中、「ＥＣＵ認識の行程」と表示）と、ＩＮＪ信号と、燃料噴射済みフラグＦ＿ＩＮＪを示す。図１３の（ｂ）は、エンジン始動時の記憶にもとづくクランク角による初回燃料噴射を行い、その後に記憶にもとづくクランク角では圧縮行程であると認識している行程の途中、例えば、４５０ｄｅｇ．のクランク角の記憶間違い判定タイミングｔＪＵＤにおいて、実クランク角がＴＤＣパルス形状及びＣＲＫパルス形状にもとづいて爆発行程に入っていると判定された場合の例を示している。図１３の（ｂ）中、実線で示すＩＮＪ信号と燃料噴射済みフラグＦ＿ＩＮＪは、従来技術の場合を示し、一点鎖線で示すＩＮＪ信号と燃料噴射済みフラグＦ＿ＩＮＪは、本実施形態における従来技術から変化した部分を示している。
【００８８】
初回燃料噴射は、ＩＮＪ信号に示すように、記憶にもとづくクランク角の吸入行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２（燃料噴射タイミング）だけオンされている。そして、燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになったタイミングｔ１で立ち（＝１）、クランク角の記憶間違い判定タイミングｔＪＵＤの前では、ＣＲＫパルスの検出毎に記憶にもとづくクランク角で燃料噴射済みフラグＦ＿ＩＮＪの初期化処理（図３のステップＳ０５参照）が行われるため、すでに圧縮行程の開始を迎えたと認識し、タイミングｔ２において実線のように燃料噴射済みフラグＦ＿ＩＮＪは０にリセットされている。従って、従来技術では、クランク角の記憶間違い判定タイミングｔＪＵＤ後の次の吸入行程の所定の期間ｔ１Ｎ〜ｔ２Ｎにおいても、燃料噴射を実行させる制御をしてしまう。具体的には、図７の燃料噴射実行処理の詳細フローチャートのステップＳ４３に示すように、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）が１でない場合は、ステップＳ４４へ進むことができ、燃料噴射が実行できるようになっているためである。
【００８９】
しかし、本実施形態では、図１３の（ｂ）に示すようにタイミングｔＪＵＤにおいてクランク角の記憶間違い判定を行い、ＥＣＵ認識の行程を修正し、初回燃料噴射時期を示す実クランク角ＦＩＩＮＪＡＧＬＣＲ（ｉ）は、図１１に示すように５４０ｄｅｇ．であり、初回燃料噴射時期からのクランク角の進みＣＹＬＪＵＤＡＧＬ（ｉ）は、１８０ｄｅｇ．である。そして、ＩＴＫＪＵＤＡＧＬ＝５４０−１８０＝３６０ｄｅｇ．、つまり、−１８０ｄｅｇ．よりも大きくなる。従って、クランク角の記憶間違い判定タイミングｔＪＵＤの後、リセットされていた燃料噴射済みフラグＦ＿ＩＮＪを一点鎖線で示すように立てる（＝１）。その結果、燃料噴射制御部２１５Ａは、燃料噴射済みフラグＦ＿ＩＮＪが立てられているので、一点鎖線で示すように次の燃料噴射が実クランク角で吸入行程のｔ１Ｎ〜ｔ２Ｎの期間にＩＮＪ信号を出力不可能となる。
【００９０】
図１３の（ｂ）に示すように初回燃料噴射（ｔ１〜ｔ２の期間のＩＮＪ信号）は実クランク角で遡って換算すると、圧縮行程のほぼ開始時期において行われており、次の吸入行程のｔ１Ｎ〜ｔ２Ｎの期間の燃料噴射と同サイクルになる。もし、実線で示す従来技術におけるようにｔ１Ｎ〜ｔ２Ｎの期間に燃料噴射を行ったとすると、この気筒は２回分の燃料を吸入行程で導入することになり、リッチ状態になり未燃ガスを排出する可能性を生じる。本実施形態では、このようなエミッションの悪化を防止できる。
【００９１】
このように、ポート噴射式の吸入行程噴射に対しても、燃料噴射タイミングＩＮＪＯＢの設定を変更するだけで、第１の実施形態が容易に適用できることが分かる。
ちなみに、ポート噴射式の排気行程噴射の場合もポート噴射式の吸入行程噴射の場合も、エンジン始動時にエンジン制御ＥＣＵ２７Ａのマイクロコンピュータ２７ａの初期化処理が完了した直後に、タイミング制御部２１１Ａと燃料噴射制御部２１５Ａとが、協調制御して、記憶にもとづくクランク角ＣＡ（ｉ）に従って、初爆の気筒と判定した気筒における最初の燃料噴射のみ、エンジン始動早期化のために、ＣＲＫパルスが入力された際に燃料噴射するように設定されている。
【００９２】
《第１の実施形態の変形例》
次に、第１の実施形態の変形例について図１４を参照しながら説明する。
前記した第１の実施形態では、ＴＤＣパルス形状とＣＲＫパルス形状の組み合わせによる実クランク角の判定は、１８０ｄｅｇ．間隔のＴＤＣパルスのタイミングに行っているが、それに限定されるものではない。本変形例では、各気筒の爆発行程の開始位置、つまり、ＴＤＣを知らせるＴＤＣパルスの形状を単純な所定角度幅の単パルスとし、それに組み合わせるＣＲＫパルスの形状を、例えば、１つの気筒のＴＤＣパルスの位置だけ欠け歯パルスとして、４気筒のうちの代表気筒のＴＤＣを判別させることによって実クラン角を判定するようにしても良い。その場合、当該の気筒における記憶にもとづくクランク角による最初の燃料噴射から実クランク角の判定までに最大７２０ｄｅｇ．進んだＣＹＬＪＵＤＡＧＬ（ｉ）となる可能性があるが、第１の実施形態と同様に適用できる。
【００９３】
図１４を参照して、これまでに説明した第１の実施形態における図２に示したような１８０ｄｅｇ．毎にＴＤＣパルス形状とＣＲＫパルス形状の組み合わせにより、実クランク角の判定ができる場合と異なり、例えば、クランク角７２０ｄｅｇ．に１度代表気筒の実気筒判別がされる場合のポート噴射式エンジンにおける排気行程噴射のケースの燃料噴射済みフラグの修正の方法について説明する。図１４は、第１の実施形態の変形例のポート噴射式エンジンにおける排気行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例３における燃料噴射済みフラグの修正の説明図である。
【００９４】
図１４の（ａ）は、図１２の（ａ）と同じであり重複する説明を省略する。
図１４の（ｂ）には、実行程を示すバーチャートと、エンジン制御ＥＣＵ２７ＡのＣＰＵの認識する行程（図中、「ＥＣＵ認識の行程」と表示）と、ＩＮＪ信号と、燃料噴射済みフラグＦ＿ＩＮＪを示す。図１４の（ｂ）は、エンジン始動時の記憶にもとづくクランク角による初回燃料噴射を行い、その後に記憶にもとづくクランク角では圧縮行程であると認識している行程の途中、例えば、４５０ｄｅｇ．のクランク角の記憶間違い判定タイミングｔＪＵＤにおいて、実クランク角がＴＤＣパルス形状及びＣＲＫパルス形状にもとづいて排気行程に入っていると判定された場合の例を示している。図１４の（ｂ）中、実線で示すＩＮＪ信号と燃料噴射済みフラグＦ＿ＩＮＪは、従来技術の場合を示し、一点鎖線で示すＩＮＪ信号と燃料噴射済みフラグＦ＿ＩＮＪは、本変形例における従来技術から変化した部分を示している。
【００９５】
初回燃料噴射は、ＩＮＪ信号に示すように、記憶にもとづくクランク角の排気行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２（燃料噴射タイミング）だけオンされている。そして、燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになったタイミングｔ１で立ち（＝１）、クランク角の記憶間違い判定タイミングｔＪＵＤの前に、つまり、クランク角の記憶間違い判定前に、すでに圧縮行程の開始を迎えたと認識し、タイミングｔ３において実線のように燃料噴射済みフラグＦ＿ＩＮＪは０にリセットされている。従って、従来技術では、クランク角の記憶間違い判定タイミングｔＪＵＤ後の次の排気行程の所定の期間ｔ１Ｎ〜ｔ２Ｎにおいても、燃料噴射を実行させる制御をしてしまう。具体的には、図７の燃料噴射実行処理の詳細フローチャートのステップＳ４３に示すように、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）が１でない場合は、ステップＳ４４へ進むことができ、燃料噴射が実行できるようになっているためである。
【００９６】
しかし、本変形例では、図１４の（ｂ）に示すようにタイミングｔＪＵＤにおいてクランク角の記憶間違い判定を行い、ＥＣＵ認識の行程を修正し、図１４の（ｂ）の気筒では、燃料噴射制御部２１５Ａは、初回燃料噴射時期を示す実クランク角ＦＩＩＮＪＡＧＬＣＲ（ｉ）が、図１１に示すように５４０ｄｅｇ．であり、初回燃料噴射時期からのクランク角の進みＣＹＬＪＵＤＡＧＬ（ｉ）が、３６０ｄｅｇ．である。そして、ＩＴＫＪＵＤＡＧＬ＝５４０−３６０＝１８０ｄｅｇ．、つまり、−１８０ｄｅｇ．よりも大きくなる。従って、クランク角の記憶間違い判定タイミングｔＪＵＤの後、リセットされていた燃料噴射済みフラグＦ＿ＩＮＪを一点鎖線で示すように立てる（＝１）。その結果、燃料噴射制御部２１５Ａは、燃料噴射済みフラグＦ＿ＩＮＪが立てられているので、一点鎖線で示すように次の燃料噴射が実クランク角で排気行程のｔ１Ｎ〜ｔ２Ｎの期間にＩＮＪ信号を出力しない。
【００９７】
図１４の（ｂ）に示すように初回燃料噴射（ｔ１〜ｔ２の期間のＩＮＪ信号）は実クランク角で遡って換算すると、圧縮行程のほぼ開始時期において行われており、クランク角の記憶間違い判定タイミングｔＪＵＤの実行程判別後の最初の燃料噴射タイミングである次の排気行程のｔ１Ｎ〜ｔ２Ｎの期間の燃料噴射と同サイクルになる。もし、ｔ１Ｎ〜ｔ２Ｎの期間に燃料噴射を行ったとすると、この気筒は２回分の燃料を吸入行程で導入することになり、リッチ状態になり未燃ガスを排出する可能性を生じる。本変形例では、このようなエミッションの悪化を防止できる。
【００９８】
《第２の実施形態》
次に、図１５を参照しながら本発明の第２の実施形態に係わる内燃機関の制御装置の前提とする内燃機関について、第１の実施形態において前提とした内燃機関と異なる燃料供給系を簡単に説明する。第１の実施形態において前提とした内燃機関と同じ構成については重複する説明を省略する。
【００９９】
（内燃機関の概要）
第２の実施形態に係わる内燃機関の制御装置の前提とする内燃機関は、いわゆる直噴エンジン（直噴式内燃機関）である。従って、エンジン本体のシリンダヘッドには、吸気弁、排気弁、各気筒の燃焼室内に直接燃料を噴射する燃料噴射弁２０Ｂ（図１５参照）、点火プラグ２１（図１５参照）が取り付けられている。
内燃機関は、燃料タンク（図示せず）からフュエルポンプモータ４（図１５参照）を内蔵したフュエルポンプによって送油管（図示せず）を介して高圧ポンプ（図示せず）に送られた燃料は、エンジン本体のカム軸（図示せず）によってそれぞれ駆動される高圧ポンプ（図示せず）によりさらに昇圧されてデリバリパイプ（図示せず）に送られる。デリバリパイプ内の燃料の圧力は、デリバリパイプに接続され、エンジン制御ＥＣＵ２７Ｂで制御されるレギュレータ７で調圧され、余分な燃料は戻り管（図示せず）を介して燃料タンクに戻される。
【０１００】
デリバリパイプからは、それぞれ４本の高圧燃料供給管（図示せず）を介して、各気筒の燃料噴射弁２０Ｂ，２０Ｂ，２０Ｂ，２０Ｂに燃料が供給される。
ちなみに、本実施形態では、燃料噴射弁２０Ｂは、エンジン制御ＥＣＵ２７ＢのＣＰＵの実行する機能である後記する燃料噴射制御部（燃料噴射制御手段）２１５Ｂにより、例えば、圧縮行程噴射または爆発行程噴射するように制御される。
デリバリパイプには、デリバリパイプの内圧（以下、「燃圧」と称する）を検出する燃圧センサ４１が設けられている。
【０１０１】
フュエルポンプは、フュエルポンプモータ４に供給される電力が、エンジン制御ＥＣＵ２７Ｂによりオン、オフ制御されるとともに、低負荷（Ｌｏｗ）と高負荷（Ｈｉ）に切替えられる。
高圧ポンプは、エンジン制御ＥＣＵ２７Ｂに制御される高圧ポンプ電磁弁５を内蔵し、吐出状態と非吐出状態を切替得られるようになっている。さらに、エンジン制御ＥＣＵ２７Ｂに制御され、高圧ポンプは、低負荷（Ｌｏｗ）時も高負荷（Ｈｉ）時も吐出状態に動作する。ちなみに、高圧ポンプの吐出側には、逆止弁が設けられ、非吐出状態のとき、デリバリパイプから送油管への逆流を防止する。
【０１０２】
《エンジン制御ＥＣＵの機能》
次に、図１５を参照しながら本実施形態におけるエンジン制御ＥＣＵの機能の第１の実施形態から異なる点について説明する。図１５は、第２の実施形態におけるエンジン制御ＥＣＵのブロック構成図である。
エンジン制御ＥＣＵ２７Ｂには、センサ１１，１４，１６，１８，２４，２５，２６，２８からの出力、アクセルポジション・センサ４３からの出力、車速センサ４５からの出力の他、燃圧センサ４１、燃料温度センサ（図示せず）等の出力が、エンジン制御ＥＣＵ２７Ｂに入力される。
【０１０３】
このエンジン制御ＥＣＵ２７Ｂは、マイクロコンピュータ２７ａを主体として構成されている。そして、マイクロコンピュータ２７ａは、例えば、ＲＯＭに格納されているプログラムをＣＰＵが実行して、運転者のアクセルペダルの踏み込み量やエンジン運転状態に応じて、スロットルバルブ（図示せず）の開度制御や燃料噴射弁２０Ｂの燃料噴射量の制御や点火プラグ２１の点火時期の制御、高圧ポンプ電磁弁５やレギュレータ７の動作制御を通じたデリバリパイプの燃圧の制御等行う。
【０１０４】
ちなみに、エンジン制御ＥＣＵ２７Ｂには、燃料噴射弁２０Ｂを駆動する駆動回路１２１、高圧ポンプ電磁弁５を駆動する駆動回路１２２、レギュレータ７に含まれる電磁弁を駆動する駆動回路１２４を含んでいる。
ＥＣＵ電源回路１１０はＩＧ−ＳＷ１１１により、オン状態になり、ディストリビュータ２９へ高電圧を発生させて供給する図示しないイグナイタへの給電もオン状態となる。
【０１０５】
マイクロコンピュータ２７ａは、ＲＯＭに内蔵されたプログラムを読み出して実行することにより実現される機能部である、エンジン回転速度演算部２１０、タイミング制御部２１１Ｂ、要求出力演算部２１２、燃料供給系制御部２１４Ｂ、燃料噴射制御部２１５Ｂ、点火時期制御部２１６等を含んで構成されている。
エンジン回転速度演算部２１０及び要求出力演算部２１２、点火時期制御部２１６の機能は、第１の実施形態の場合と同じである。タイミング制御部２１１Ｂ、燃料供給系制御部２１４Ｂ、燃料噴射制御部２１５Ｂの機能に一部差異がある。
【０１０６】
（タイミング制御部）
タイミング制御部２１１Ｂは、エンジン制御の全体制御を行うために、ＩＧ−ＳＷ１１１の操作位置信号を検出するとともに、その操作位置信号に対応した操作位置検出フラグＦＬＡＧＩＧＳＷを設定処理する。また、タイミング制御部２１１Ｂは、ＣＲＫパルス及びＴＤＣパルスにもとづいて各気筒の吸入行程の開始のＴＤＣタイミングを基準クランク角（＝０（ゼロ）ｄｅｇ．）として検出する。そして、基準クランク角０（ゼロ）ｄｅｇ．を７２０ｄｅｇ．と読み直して７２０ｄｅｇ．からＣＲＫパルスを新たに受信する毎に、例えば、６ｄｅｇ．減算して現在の各気筒のクランク角を演算し、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶させる。つまり、起点を０ｄｅｇ．とし、７１４，７０８，・・・，１２，６，０ｄｅｇ．とクランク軸の正回転の方向に６ｄｅｇ．のＣＲＫパルスに対応して減算定義される。
【０１０７】
このクランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄは、具体的には前記した高速書き込み可能な不揮発メモリで構成される。ここで、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄが請求の範囲に記載の「気筒判別情報記憶手段」に対応する。
【０１０８】
また、第２の実施形態では、第１の実施形態の変形例のように、例えば、各気筒の爆発行程の開始位置、つまり、ＴＤＣを知らせるＴＤＣパルスの形状を単純な所定角度幅の単パルスとし、それに組み合わせるＣＲＫパルスの形状を、１つの気筒のＴＤＣパルスの位置だけ欠け歯パルスとして、４気筒のうちの代表気筒のＴＤＣを判別させることによって実クラン角を判定する場合の例で説明する。
【０１０９】
ちなみに、エンジン制御ＥＣＵ２７Ｂは、ＩＧ−ＳＷ１１１が、イグニッションＯＮの位置に回されると、そのマイクロコンピュータ２７ａが起動されて初期化処理を開始する。また、ＩＧ−ＳＷ１１１が、スタータ駆動の位置に回されると、スタータがエンジンを回転させ始め、マイクロコンピュータ２７ａの初期化処理が終了すると、タイミング制御部２１１Ｂは、ＣＲＫパルスとＴＤＣパルスを一定の周期で読み込みを開始する。そして、エンジン始動時の初期化処理が終了した直後は、タイミング制御部２１１Ｂは、各気筒のクランク角を、前回のエンジン停止時にクランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶させたクランク角に、ＣＲＫパルスを検出のつど６ｄｅｇ．減算して各気筒のクランク角として算出する。このように算出されたクランク角を「記憶にもとづくクランク角」とか「第１の手段にもとづくクランク角」と称する。
【０１１０】
そして、マイクロコンピュータ２７ａの初期化処理が終了した後に、タイミング制御部２１１Ｂが最初のＴＤＣパルスを検出したタイミングで、第１の実施形態変形例と同様に記憶にもとづくクランク角と、ＣＲＫパルスの形状とＴＤＣパルスの形状の組み合わせにもとづいて決定した各気筒のクランク角とが一致するか否かを判定し、一致する場合は、そのまま各気筒のクランク角を更新算出し、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶更新する。以下、ＣＲＫパルスの形状とＴＤＣパルスの形状の組み合わせにもとづいて決定した各気筒のクランク角を、「ハードにもとづくクランク角」とか、「第２の手段にもとづくクランク角」と称する。
【０１１１】
記憶にもとづくクランク角とハードにもとづくクランク角とが一致しない場合は、各気筒のクランク角のズレを修正して、その後は、修正されたクランク角にもとづいてＣＲＫパルスの検出毎に６ｄｅｇ．を減算して各気筒のクランク角を更新計算し、クランク角記憶部２１１ａ，２１１ｂ，２１１ｃ，２１１ｄに記憶更新する。
【０１１２】
タイミング制御部２１１Ｂは、エンジン始動時の最初は記憶にもとづくクランク角を燃料噴射制御部２１５Ｂ、点火時期制御部２１６に出力し、その後に記憶にもとづくクランク角をハードにもとづくクランク角でチェックする。記憶にもとづくクランク角とハードにもとづくクランク角との間に誤差がある場合は、記憶にもとづくクランク角が間違っていると判定して、その時点でハードにもとづくクランク角に修正し、その後は修正されたクランク角を燃料噴射制御部２１５Ｂ、点火時期制御部２１６に出力する。
【０１１３】
（燃料供給系制御部）
燃料供給系制御部２１４Ｂは、フュエルポンプモータ４の回転速度の制御、燃圧センサ４１からの信号にもとづく高圧ポンプの高圧ポンプ電磁弁５の制御、及びレギュレータ７の制御を行い、エンジン回転速度Ｎｅ、要求トルクをパラメータにした予め設定された目標燃圧マップに、もとづいて燃圧の調整を行う。
例えば、エンジン回転速度Ｎｅをパラメータとした、予め設定されたフュエルポンプ制御マップにもとづいて、フュエルポンプモータ４の回転速度をＬｏｗ状態及びＨｉ状態のいずれかに切替え制御する。
また、燃料供給系制御部２１４Ｂは、例えば、エンジン回転速度Ｎｅ、要求トルクをパラメータに、高圧ポンプの高圧ポンプ電磁弁５を制御して、高圧ポンプからの吐出量を制御する。
【０１１４】
（燃料噴射制御部）
燃料噴射制御部２１５Ｂは、要求出力演算部２１２において算出された要求トルクや、エンジン回転速度Ｎｅに応じて、燃料噴射量、具体的には、デリバリパイプの燃圧センサ４１からの燃圧に応じ、予め設定された燃圧をパラメータとした燃料噴射時間を設定し、タイミング制御部２１１Ｂからの各気筒のクランク角信号に応じて予め設定された噴射開始のタイミングマップ（図示せず）にもとづいて、各気筒の燃料噴射弁２０Ｂに対して燃料噴射の制御を行う。
燃料噴射制御部２１５Ｂは、排気ガスセンサ２４からの排気ガス中の酸素濃度の信号にもとづいて、燃料噴射量を調節し、排気ガス規制に適合するような燃焼状態に調節する。
【０１１５】
《燃料噴射制御の全体フローチャート及び詳細フローチャート》
本実施形態においても全体フローチャートは、基本的に第１の実施形態の図３、図４のものと同じであるが、ステップＳ０５の「燃料噴射済みフラグ初期化処理」の詳細フローチャートと、ステップＳ１１の「燃料噴射済みフラグの修正処理」の詳細フローチャートが一部異なる。ステップＳ０５の「燃料噴射済みフラグ初期化処理」、ステップＳ１１の「燃料噴射済みフラグの修正処理」の詳細フローチャートの本実施形態における第１の実施形態との相違点について説明する。
まず、図６の燃料噴射済みフラグ初期化処理の詳細フローチャートにおけるステップＳ３６を、図１６に示すようにステップＳ３６Ａの「＃ｉ気筒の吸入行程開始？」に読み替える。
【０１１６】
また、図１０の燃料噴射済みフラグの修正処理の詳細フローチャートにおいて、ステップＳ７３とステップＳ７４の間に、図１７に示すようにステップＳ７３Ａを挿入する。ステップ７３Ａでは、ステップＳ７３で算出されたＦＩＩＮＪＡＧＬＣＲ（ｉ）が所定の実クランク角Ｘ０ｄｅｇ．より大きいか否かをチェックする（「ＦＩＩＮＪＡＧＬＣＲ（ｉ）＞Ｘ０ｄｅｇ．？」）。ＦＩＩＮＪＡＧＬＣＲ（ｉ）が所定の実クランク角Ｘ０ｄｅｇ．より大きい場合（Ｙｅｓ）は、ステップＳ７４に進み、ＦＩＩＮＪＡＧＬＣＲ（ｉ）が所定の実クランク角Ｘ０ｄｅｇ．以下の場合（Ｎｏ）は、ステップＳ７８へ進む。
ここで、Ｘ０の値は、本実施形態では、例えば、１０ｄｅｇ．である。このＸ０の値は、排気行程で燃焼室内へ燃料噴射を開始した場合に、燃料が排気系へ排出されずに燃焼室内に残存してしまう角度を、予め実験により求めて設定する。
ステップＳ７３ＡでＮｏの場合は、実行程における初回燃料噴射された燃料が、排気系へ排出されずに燃焼室内に残存してしまう場合であり、実行程判別前に初回燃料噴射された燃料は、実行程判別後の次回燃料噴射と重複することになるので、既に立っている燃料噴射済みフラグの修正処理をしないで、ステップＳ７８へ進む。
【０１１７】
また、図１７に示すように図１０の燃料噴射済みフラグの修正処理の詳細フローチャートにおけるステップＳ７５の「ＩＮＴＫＪＵＤＡＧＬ（ｉ）＞−１８０ｄｅｇ．？」を、ステップＳ７５Ａの「ＩＮＴＫＪＵＤＡＧＬ（ｉ）＞０ｄｅｇ．？」に置き換える。
【０１１８】
そして、本実施形態では、記憶にもとづくクランク角で示す初回燃料噴射時期ＦＩＩＮＪＡＧＬ（ｉ）、それを図３のフローチャートのステップＳ０４において記憶更新されるクランク角ＣＡ（ｉ）、図１７の詳細フローチャートのステップＳ７３において演算される初回燃料噴射時期の実クランク角ＦＩＩＮＪＡＧＬＣＲ（ｉ）は、ともに吸入行程の最初を０ｄｅｇ．とし、０ｄｅｇ．から減算するとき７２０ｄｅｇ．と読み直し、７１４，７０８，・・・，１２，６，０ｄｅｇ．とクランク軸の正回転の方向に６ｄｅｇ．のＣＲＫパルスに対応して減算定義される。
ここで、図１７に示した燃料噴射済みフラグの修正処理の制御の流れを示す詳細フローチャートにおけるステップＳ７３〜Ｓ７７は、請求の範囲に記載の「噴射タイミング判別手段」に対応する。
【０１１９】
図１８は、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）修正のための実燃料噴射時期ＦＩＩＮＪＡＧＬＣＲ（ｉ）（クランク角表示）と、次回の＃ｉ気筒の燃料の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）の設定の説明図である。
本実施形態における次回の＃ｉ気筒の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）の値は、図１８に示すように最大値を５４０ｄｅｇ．とし、それ以下のクラン角表示の値であり、負値側の最低値に制限を設けないこととする。
【０１２０】
次に、図１９を参照しながら本実施形態におけるエンジン始動時の各気筒の記憶にもとづくクランク角による初回燃料噴射後の次回の燃料噴射の制御結果について説明する。
図１９は、直噴式エンジンにおける圧縮行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例１における燃料噴射済みフラグの修正の説明図である。
図１９の（ａ）には、実行程を示すバーチャートと、燃料噴射制御部２１５Ｂから各気筒の燃料噴射弁２０Ｂ（図１５参照）に対して出力されるＩＮＪ信号と、燃料噴射済みフラグＦ＿ＩＮＪ（フローチャートでは、気筒番号を示す引数ｉを加えてＦ＿ＩＮＪ（ｉ）と表示）を示す。図１９の（ａ）に示すように、通常運転状態の場合は、ＩＮＪ信号は、圧縮行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２だけオン（図１９中、「１」で表示）状態となる。所定の期間ｔ１〜ｔ２は、要求トルクとエンジンの機関温度等の環境条件などに応じた燃料噴射量により変化する。
燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになった、例えば、タイミングｔ１で立ち（＝１）、吸入行程を迎えると、タイミングｔ３において次の燃料噴射を可能とするようにリセット（＝０）する。
【０１２１】
次に、図１９の（ｂ）には、実行程を示すバーチャートと、エンジン制御ＥＣＵ２７ＢのＣＰＵの認識する行程（図中、「ＥＣＵ認識の行程」と表示）と、ＩＮＪ信号と、燃料噴射済みフラグＦ＿ＩＮＪを示す。図１９の（ｂ）は、エンジン始動時の記憶にもとづくクランク角による初回燃料噴射を行い、その後に記憶にもとづくクランク角では爆発行程であると認識している行程の途中、例えば、２５２ｄｅｇ．のクランク角の記憶間違い判定タイミングｔＪＵＤにおいて、実クランク角がＴＤＣパルス形状及びＣＲＫパルス形状にもとづいて圧縮行程に入っていると判定された場合の例を示している。図１９の（ｂ）中、実線で示すＩＮＪ信号と燃料噴射済みフラグＦ＿ＩＮＪは、従来技術の場合を示し、一点鎖線で示すＩＮＪ信号と燃料噴射済みフラグＦ＿ＩＮＪは、本実施形態における従来技術から変化した部分を示している。
【０１２２】
初回燃料噴射は、ＩＮＪ信号に示すように、記憶にもとづくクランク角の圧縮行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２（燃料噴射タイミング）だけオンされている。そして、燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになったタイミングｔ１で立ち（＝１）、クランク角の記憶間違い判定タイミングｔＪＵＤ、つまり、クランク角の記憶間違い判定時に、すでに吸入行程の開始を過ぎているため、実線のように燃料噴射済みフラグＦ＿ＩＮＪは立ったままである。従って、従来技術では、次の圧縮行程の所定の期間ｔ１Ｎ〜ｔ２Ｎにおいて燃料噴射を実行させる制御ができない。具体的には、図７の燃料噴射実行処理の詳細フローチャートのステップＳ４３に示すように、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）が１でない場合に、ステップＳ４４へ進むことができ、燃料噴射が実行できるようになっているためである。
【０１２３】
しかし、本実施形態では、図１９の（ｂ）に示すようにタイミングｔＪＵＤにおいてクランク角の記憶間違い判定を行い、ＥＣＵ認識の行程を修正し、燃料噴射制御部２１５Ｂは、初回燃料噴射時期を示す実クランク角ＦＩＩＮＪＡＧＬＣＲ（ｉ）が、図１８に示すように６０ｄｅｇ．であり、初回燃料噴射時期からのクランク角の進みＣＹＬＪＵＤＡＧＬ（ｉ）が、２４０ｄｅｇ．である。そして、ＩＴＫＪＵＤＡＧＬ＝６０−２４０＝−１８０ｄｅｇ．、つまり、０ｄｅｇ．を超えないこととなる。従って、クランク角の記憶間違い判定タイミングｔＪＵＤの後、立っていた燃料噴射済みフラグＦ＿ＩＮＪを一点鎖線で示すように倒す（＝０）。その結果、燃料噴射制御部２１５Ｂは、燃料噴射済みフラグＦ＿ＩＮＪがリセットされているので、一点鎖線で示すように次の燃料噴射が実クランク角で圧縮行程のｔ１Ｎ〜ｔ２Ｎの期間にＩＮＪ信号を出力する。それに伴って燃料噴射済みフラグＦ＿ＩＮＪが、一点鎖線で示すｔ１Ｎ〜ｔ３Ｎの期間立っている。
【０１２４】
図１９の（ｂ）に示すように初回燃料噴射（ｔ１〜ｔ２の期間のＩＮＪ信号）は実クランク角で遡って換算すると、排気行程で行われておりそのまま排気されており、仮にクランク角の記憶間違い判定タイミングｔＪＵＤの実行程判別後の最初の燃料噴射タイミングである次の圧縮行程のｔ１Ｎ〜ｔ２Ｎの期間に燃料噴射しないとすると、この気筒は失火することになり、エンジン始動時のエンジンの回転が滑らかにすることができない。そこで、燃料噴射制御部２１５Ｂは、実行程判別後の最初の燃料噴射タイミングにて予定される次回の＃ｉ気筒の燃料噴射が、実行程判別前の記憶されたクランク角ＣＡ（ｉ）もとづいて初回燃料噴射された燃料の噴射が、実行程において気筒内で爆発、または気筒外へ排出されていないかを、次回の＃ｉ気筒の燃料の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）で判定し、次回の＃ｉ気筒の燃料噴射を実行するかどうかの制御を行う。
【０１２５】
また、特許文献１に記載の従来技術のように、初回燃料噴射の量だけ次回の燃料噴射量を減じるような制御を行わないので、次回燃料噴射量が不足して失火するということも防止できる。つまり、始動性の悪化を防止できる。
ちなみに、この次回の＃ｉ気筒の燃料の燃料噴射の可否判定用角度ＩＮＴＫＪＵＤＡＧＬ（ｉ）での判定が、請求の範囲に記載の「実行程判別後の最初の燃料噴射タイミングにて噴射される燃料と同じ燃焼タイミングで寄与するか否かを判別する」に対応している。
【０１２６】
図２０は、直噴式エンジンにおける爆発行程噴射の場合の燃料噴射済みフラグの修正の方法の説明図であり、（ａ）は、通常運転状態の説明図、（ｂ）は、エンジン始動時のクランク角の記憶間違い例２における燃料噴射済みフラグの修正の説明図である。図２０の（ａ）に示すように、通常運転状態の場合は、ＩＮＪ信号は、爆発行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２だけオン（図２０中、「１」で表示）状態となる。所定の期間ｔ１〜ｔ２は、要求トルクとエンジンの機関温度等の環境条件などに応じた燃料噴射量により変化する。
燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになった、例えば、タイミングｔ１で立ち（＝１）、吸入行程を迎えると、タイミングｔ３において次の燃料噴射を可能とするようにリセット（＝０）する。
【０１２７】
図２０の（ｂ）には、実行程を示すバーチャートと、エンジン制御ＥＣＵ２７ＢのＣＰＵの認識する行程（図中、「ＥＣＵ認識の行程」と表示）と、ＩＮＪ信号と、燃料噴射済みフラグＦ＿ＩＮＪを示す。図２０の（ｂ）は、エンジン始動時の記憶にもとづくクランク角による初回燃料噴射を行い、その後に記憶にもとづくクランク角では吸入行程であると認識している行程の途中、例えば、６６０ｄｅｇ．のクランク角の記憶間違い判定タイミングｔＪＵＤにおいて、実クランク角がＴＤＣパルス形状及びＣＲＫパルス形状にもとづいて爆発行程に入っていると判定された場合の例を示している。
【０１２８】
初回燃料噴射は、ＩＮＪ信号に示すように、記憶にもとづくクランク角の爆発行程の所定のクランク角ＩＮＪＯＢのタイミングｔ１を起点として、所定の期間ｔ１〜ｔ２（燃料噴射タイミング）だけオンされている。そして、燃料噴射済みフラグＦ＿ＩＮＪは、ＩＮＪ信号がオンになったタイミングｔ１で立ち（＝１）、クランク角の記憶間違い判定タイミングｔＪＵＤの前に、つまり、クランク角の記憶間違い判定前に、すでに吸入行程の開始を迎えたと認識し、タイミングｔ３において実線のように燃料噴射済みフラグＦ＿ＩＮＪは０にリセットされている。従って、クランク角の記憶間違い判定タイミングｔＪＵＤ後の次の爆発行程の所定の期間ｔ１Ｎ〜ｔ２Ｎにおいても、燃料噴射を実行させる制御をしてしまう。具体的には、図７の燃料噴射実行処理の詳細フローチャートのステップＳ４３に示すように、燃料噴射済みフラグＦ＿ＩＮＪ（ｉ）が１でない場合は、ステップＳ４４へ進むことができ、燃料噴射が実行できるようになっているためである。
【０１２９】
しかし、本実施形態では、図２０の（ｂ）に示すようにタイミングｔＪＵＤにおいてクランク角の記憶間違い判定を行い、ＥＣＵ認識の行程を修正し、燃料噴射制御部２１５Ｂは、初回燃料噴射時期を示す実クランク角ＦＩＩＮＪＡＧＬＣＲ（ｉ）が、図１８に示すように６０ｄｅｇ．であり、初回燃料噴射時期からのクランク角の進みＣＹＬＪＵＤＡＧＬ（ｉ）は、４２０ｄｅｇ．である。そして、ＩＴＫＪＵＤＡＧＬ＝６０−４２０＝−３６０ｄｅｇ．、つまり、０ｄｅｇ．を超えないこととなる。従って、クランク角の記憶間違い判定タイミングｔＪＵＤの後、燃料噴射済みフラグＦ＿ＩＮＪを立てない。その結果、燃料噴射制御部２１５Ｂは、燃料噴射済みフラグＦ＿ＩＮＪが立っていないので、実線で示すように次の燃料噴射が実クランク角で爆発行程のｔ１Ｎ〜ｔ２Ｎの期間にＩＮＪ信号を出力する。それに伴って燃料噴射済みフラグＦ＿ＩＮＪが、一点鎖線で示すｔ１Ｎ〜ｔ３Ｎの期間立っている。
図２０の（ｂ）に示すように初回燃料噴射（ｔ１〜ｔ２の期間のＩＮＪ信号）は実クランク角で遡って換算すると、排気行程で完了し噴射された燃料はそのまま排気されている。仮に次の爆発行程のｔ１Ｎ〜ｔ２Ｎの期間に燃料噴射しないとすると、この気筒は失火することになり、エンジン始動時のエンジンの回転が滑らかにすることができない。
【０１３０】
以上のように本実施形態により、直噴式エンジンにおける燃料の圧縮行程噴射、爆発行程噴射の場合でも、記憶にもとづくクランク角による初回燃料噴射に続く、クランク角の記憶間違い判定ｔＪＵＤ後の同じ気筒の次回の燃料噴射を適切に制御でき、失火や二重噴射によるエミッションの悪化を防止できる。
【０１３１】
なお、第１の実施形態、第２の実施形態において、ＩＧ−ＳＷ１１１のＯＮ操作によるエンジン制御ＥＣＵ２７Ａ，２７Ｂの起動完了後においては、常に、各気筒＃ｉのクラン角ＣＡ（ｉ）を、不揮発メモリを用いたクランク角記憶部２１１ａ〜２１１ｄに記憶更新することとしたがそれに限定されるものではない。ＩＧ−ＳＷ１１１がＯＦＦされたときだけ、エンジン停止まで各気筒＃ｉのクラン角ＣＡ（ｉ）をクランク角記憶部２１１ａ〜２１１ｄに記憶更新することにし、エンジン始動後は、一時記憶だけとしても良い。
【０１３２】
なお、第１の実施形態、第２の実施形態において直列４気筒エンジンを例に説明したがそれに限定されるものではない。直列６気筒、直列８気筒、Ｖ型６気筒のエンジン等にも本発明は適用できる。
【符号の説明】
【０１３３】
７      レギュレータ
１０    スロットルバルブ駆動モータ
１１    吸気温センサ
１４    エアフローメータ
１６    スロットル開度センサ
１８    吸気圧センサ
２０Ａ，２０Ｂ    燃料噴射弁
２４    排気ガスセンサ
２５    水温センサ
２６    クランクセンサ（運転状態検出手段、実行程判別手段）
２７Ａ，２７Ｂ  エンジン制御ＥＣＵ（内燃機関の制御装置）
２７ａ  マイクロコンピュータ
２８    ＴＤＣセンサ（実行程判別手段）
４１    燃圧センサ
４３    アクセルポジション・センサ（運転状態検出手段）
４５    車速センサ（運転状態検出手段）
２１０  エンジン回転速度演算部（運転状態検出手段）
２１１Ａ，２１１Ｂ  タイミング制御部（実行程判別手段）
２１１ａ，２１１ｂ，２１１ｃ，２１１ｄ  クランク角記憶部（気筒判別情報記憶手段）
２１２  要求出力演算部（運転状態検出手段）
２１４Ａ，２１４Ｂ  燃料供給系制御部
２１５Ａ，２１５Ｂ  燃料噴射制御部（燃料噴射制御手段）
２１６  点火時期制御部
【図１】
0005615897.tif 000002
【図２】
0005615897.tif 000003
【図３】
0005615897.tif 000004
【図４】
0005615897.tif 000005
【図５】
0005615897.tif 000006
【図６】
0005615897.tif 000007
【図７】
0005615897.tif 000008
【図８】
0005615897.tif 000009
【図９】
0005615897.tif 000010
【図１０】
0005615897.tif 000011
【図１１】
0005615897.tif 000012
【図１２】
0005615897.tif 000013
【図１３】
0005615897.tif 000014
【図１４】
0005615897.tif 000015
【図１５】
0005615897.tif 000016
【図１６】
0005615897.tif 000017
【図１７】
0005615897.tif 000018
【図１８】
0005615897.tif 000019
【図１９】
0005615897.tif 000020
【図２０】
0005615897.tif 000021