(57)【要約】【課題】内燃機関（クランクシャフト）の正転・逆転の判別が正常に行われているか否かを診断する。【解決手段】クランク角センサがクランクシャフトの単位角度毎に出力する回転信号POSのパルス幅WIPOSが、クランクシャフトの正転・逆転で異なるようにし、パルス幅WIPOSを計測することで、クランクシャフトの正転・逆転を判別する。そして、正転・逆転の判別に基づいて、回転信号POSを計数値であるカウンタCNTPOSを更新させ、再始動時には、停止時のカウンタCNTPOSzの値を初期値としてカウンタCNTPOSを更新させる。ここで、始動開始後に確定したクランク角位置でのカウンタCNTPOSの値が、所期値と異なる場合には、正転・逆転の判別機能に異常が生じていると診断する。【選択図】図８
2011153586.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関のクランクシャフトの正転・逆転を判別する正転・逆転判別手段と、
前記正転・逆転判別手段による正転・逆転の判別に基づき、前記内燃機関の停止時のクランク角を検出する停止位置検出手段と、
前記停止位置検出手段が検出した停止時のクランク角を基準として推定したクランク角と、前記内燃機関の始動開始後に検出したクランク角とを比較して、前記正転・逆転判別手段の異常の有無を判定する診断手段と、
を備えた内燃機関の制御装置。
【請求項２】
前記正転・逆転判別手段が、前記クランクシャフトの単位角度毎に出力される回転信号であって、前記クランクシャフトの正転・逆転で異なる回転信号に基づいて、前記クランクシャフトの正転・逆転を判別し、
前記停止位置検出手段が、正転・逆転の判別に応じて前記回転信号を計数することで、停止時のクランク角を検出する請求項１記載の内燃機関の制御装置。
【請求項３】
前記診断手段が、前記内燃機関の始動時に、前記停止位置検出手段が検出した停止時のクランク角を基準に前記回転信号を計数してクランク角を推定し、前記内燃機関の始動開始後に基準クランク角を検出したときの前記クランク角の推定値に基づいて、前記正転・逆転判別手段の異常の有無を判定する請求項２記載の内燃機関の制御装置。
【請求項４】
予め設定された停止条件の成立時に前記内燃機関を自動的に停止し、予め設定された再始動条件の成立時に、前記内燃機関を自動的に再始動するアイドルストップ制御手段と、
前記アイドルストップ制御手段が前記内燃機関を再始動する場合に、前記停止位置検出手段が検出した停止時のクランク角を基準として推定したクランク角に基づいて前記内燃機関を制御する始動制御手段と、
前記診断手段が正転・逆転判別手段の異常を判定した場合に、前記アイドルストップ制御手段が前記内燃機関を自動的に停止させる制御又は前記始動制御手段が停止時のクランク角の推定値に基づき前記内燃機関を制御する動作を禁止する制御禁止手段と、
を更に備えた請求項１〜３のいずれか１つに記載の内燃機関の制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、内燃機関の制御装置に関し、詳しくは、クランクシャフトの正転・逆転を判別して、内燃機関の停止時のクランク角を検出する装置に関する。
【背景技術】
【０００２】
従来、始動開始後の早期に燃料噴射及び点火を開始して、内燃機関の始動性を向上させるために、機関停止時のクランク角を記憶し、再始動時に、記憶している停止時のクランク角を初期値としてクランク角を推定し、この推定クランク角に基づいて燃料噴射及び点火を開始させると共に、停止時には、燃焼室内の圧力によって内燃機関が一旦逆転してから停止するため、係る逆転を検出して停止時のクランク角を検出するようにした内燃機関の制御装置が知られている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６‐２３３９１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、内燃機関の正転・逆転を判別する手段として、クランクシャフトの回転に同期するパルス信号を出力する回転センサ（クランク角センサ）を設けると共に、前記パルス信号のパルス幅や振幅が正転・逆転によって異なるようにし、パルス幅・振幅の計測値と閾値とを比較することで、正転・逆転を判別する手段がある。
【０００５】
しかし、回転センサや回転信号を処理する回路のばらつき・劣化などによって、正転時及び逆転時のパルス幅・振幅にばらつきが生じ、これによって正転・逆転の判別精度が低下し、内燃機関（クランクシャフト）の正転・逆転を誤判定する可能性があった。
【０００６】
そして、停止直前における正転・逆転を誤判定することで停止時のクランク角を誤検出し、この誤った停止位置の情報に基づいて始動開始直後のクランク角を推定し、係る推定結果に基づいて燃料噴射・点火を制御してしまうと、気筒を間違えて燃料噴射・点火を設定しまい、アフターバーン，バックファイアなどの異常燃焼を発生させたり、排気性状・始動性を悪化させたりするという問題が生じる。
【０００７】
本発明は上記問題点に鑑みなされたものであり、内燃機関（クランクシャフト）の正転・逆転の判別が正常に行われているか否かを診断できる内燃機関の制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
そのため、本願発明は、内燃機関のクランクシャフトの正転・逆転を判別する正転・逆転判別手段を備え、正転・逆転の判別に基づいて内燃機関の停止時のクランク角を検出し、停止時のクランク角を基準として推定したクランク角と、内燃機関の始動開始後に検出したクランク角とを比較して、前記正転・逆転判別手段の異常の有無を判定するようにした。
【発明の効果】
【０００９】
上記発明によると、内燃機関（クランクシャフト）の正転・逆転の判別が正常に行われているか否かを診断でき、誤った判別結果に基づいて内燃機関の燃料噴射や点火などを制御してしまうことを未然に防止できる。
【図面の簡単な説明】
【００１０】
【図１】実施形態における内燃機関のシステム構成図である。
【図２】実施形態におけるクランク角センサ及びカムセンサの構造を示す図である。
【図３】実施形態におけるクランク角センサ及びカムセンサの出力特性を示すタイムチャートである。
【図４】実施形態における回転信号の正転・逆転によるパルス幅・振幅の違いを示すタイムチャートである。
【図５】実施形態におけるカウンタＣＮＴＰＯＳの増減変化を示すタイムチャートであり、（Ａ）は逆転を正しく検出した場合の変化、（Ｂ）は逆転を検出しなかった場合の変化を示すタイムチャートである。
【図６】実施形態において正しい正転・逆転判別に基づく再始動時における燃料噴射・点火制御を示すタイムチャートである。
【図７】実施形態において正転・逆転判別を誤った場合の再始動時における燃料噴射・点火制御を示すタイムチャートである。
【図８】実施形態におけるクランク角の検出処理，正転・逆転の判別処理及び正転・逆転判別の診断処理を示すフローチャートである。
【図９】実施形態におけるクランク角の検出処理，正転・逆転の判別処理及び正転・逆転判別の診断処理を示すフローチャートである。
【図１０】実施形態における正転・逆転判別の異常時における燃料噴射・点火制御を示すフローチャートである。
【図１１】実施形態における正転・逆転判別の診断処理を示すタイムチャートである。
【図１２】実施形態における正転・逆転判別の異常時における燃料噴射・点火制御を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に、本発明の一実施形態を図面に基づいて詳細に説明する。
【００１２】
図１は、本願発明に係る制御装置を適用する車両用内燃機関１０１の構成図である。尚、本実施形態において、内燃機関１０１は、直列４気筒の４サイクル機関である。
【００１３】
図１において、内燃機関１０１の吸気管１０２には、スロットルモータ１０３ａでスロットルバルブ１０３ｂを開閉駆動する電子制御スロットル１０３を介装してある。
【００１４】
そして、内燃機関１０１は、電子制御スロットル１０３及び吸気バルブ１０５を介して、各気筒の燃焼室１０６内に空気を吸入する。
【００１５】
各気筒の吸気ポート１３０に、燃料噴射弁１３１を設けてあり、燃料噴射弁１３１は、制御装置としてのＥＣＵ（エンジン・コントロール・ユニット）１１４からの噴射パルス信号によって開弁動作し、燃料を噴射する。
【００１６】
燃焼室１０６内の燃料は、点火プラグ１０４による火花点火によって着火燃焼する。点火プラグ１０４それぞれには、点火コイル及び該点火コイルへの通電を制御するパワートランジスタを内蔵した点火モジュール１１２を装着してある。
【００１７】
燃焼室１０６内の燃焼ガスは、排気バルブ１０７を介して排気管１１１に流出する。排気管１１１に設けたフロント触媒コンバータ１０８及びリア触媒コンバータ１０９は、排気管１１１を流れる排気を浄化する。
【００１８】
吸気カムシャフト１３４，排気カムシャフト１１０は、一体的にカムを備え、このカムによって吸気バルブ１０５及び排気バルブ１０７を動作させる。
【００１９】
尚、吸気バルブ１０５及び／又は排気バルブ１０７について、バルブタイミング，最大バルブリフト量，バルブ作動角のうちの少なくとも１つを可変とする可変動弁機構を備えてもよい。
【００２０】
ＥＣＵ１１４は、マイクロコンピュータを内蔵し、予めメモリに記憶したプログラムに従って演算を行い、電子制御スロットル１０３，燃料噴射弁１３１，点火モジュール１１２などを制御する。
【００２１】
ＥＣＵ１１４は、各種のセンサからの検出信号を入力する。各種のセンサとして、アクセルペダル１１６ａの開度（アクセル開度）ＡＣＣを検出するアクセル開度センサ１１６、内燃機関１０１の吸入空気量Ｑを検出するエアフローセンサ１１５、内燃機関１０１の出力軸であるクランクシャフト１２０の回転に応じてパルス状の回転信号（単位クランク角信号）ＰＯＳを出力するクランク角センサ（回転センサ）１１７、スロットルバルブ１０３ｂの開度ＴＶＯを検出するスロットルセンサ１１８、内燃機関１０１の冷却水の温度ＴＷを検出する水温センサ１１９、吸気カムシャフト１３４の回転に応じてパルス状のカム信号ＰＨＡＳＥを出力するカムセンサ１３３、車両の運転者がブレーキペダル１２１を踏み込んだ制動状態においてオンになるブレーキスイッチ１２２、内燃機関１０１を動力源とする車両の走行速度（車速）ＶＳＰを検出する車速センサ１２３などを設けている。
【００２２】
更に、ＥＣＵ１１４は、内燃機関１０１の運転・停止のメインスイッチであるイグニションスイッチ１２４のオン・オフ信号や、スタータスイッチ１２５のオン・オフ信号を入力する。
【００２３】
図２は、クランク角センサ１１７及びカムセンサ１３３の構造を示す。
【００２４】
クランク角センサ１１７は、クランクシャフト１２０に軸支され、周囲に被検出部としての突起部１５１を備えるシグナルプレート１５２と、内燃機関１０１側に固定され、突起部１５１を検出して回転信号ＰＯＳを出力する回転検出装置１５３とで構成される。
【００２５】
回転検出装置１５３は、波形発生回路、選択回路などを含む各種の処理回路を、突起部１５１を検出するピックアップと共に備えており、回転検出装置１５３が出力する回転信号ＰＯＳは、通常ローレベルで、前記突起部１５１を検知したときに一定時間だけハイレベルに変化するパルス列からなるパルス信号である。
【００２６】
シグナルプレート１５２の突起部１５１は、クランク角で１０degのピッチで等間隔に形成してあるが、突起部１５１を連続して２つ欠落させてある部分を、クランクシャフト１２０の回転中心を挟んで対向する２箇所に設けてある。
【００２７】
尚、突起部１５１の欠落数は、１個であっても良いし、３つ以上連続して欠落させてもよい。
【００２８】
上記構造により、クランク角センサ１１７（回転検出装置１５３）が出力する回転信号ＰＯＳは、図３に示すように、クランク角で１０deg（単位クランク角）毎に１６回連続してハイレベルに変化した後、３０deg間ローレベルを保持し、再度１６回連続してハイレベルに変化する。
【００２９】
従って、クランク角３０degであるローレベル期間（歯抜け領域、欠落部分）後の最初の回転信号ＰＯＳは、クランク角１８０deg間隔で出力されることになり、このクランク角１８０degは、本実施形態の４気筒機関１０１における気筒間の行程位相差、換言すれば、点火間隔に相当する。
【００３０】
また、本実施形態では、クランク角センサ１１７が、クランク角３０degであるローレベル期間後（歯抜け領域）の最初の回転信号ＰＯＳを、各気筒の上死点前５０deg（ＢＴＤＣ５０deg）のピストン位置で出力するように設定してある。
【００３１】
一方、カムセンサ１３３は、吸気カムシャフト１３４の端部に軸支され、周囲に被検出部としての突起部１５７を備えたシグナルプレート１５８と、内燃機関１０１側に固定され、突起部１５７を検出してカム信号ＰＨＡＳＥを出力する回転検出装置１５９とで構成される。
【００３２】
回転検出装置１５９は、波形整形回路などを含む各種の処理回路を、突起部１５７を検出するピックアップと共に備えている。
【００３３】
シグナルプレート１５８の突起部１５７は、カム角で９０deg毎の４箇所それぞれに、１個、３個、４個、２個ずつ設けられ、突起部１５７を複数連続して設けた部分では、突起部１５７のピッチを、クランク角で３０deg（カム角で１５deg）に設定してある。
【００３４】
そして、カムセンサ１３３（回転検出装置１５９）が出力するカム信号ＰＨＡＳＥは、図３に示すように、通常はローレベルで、前記突起部１５７を検知することで一定時間だけハイレベルに変化するパルス列からなるパルス信号であり、カム角で９０deg、クランク角で１８０deg毎に、１個単独、３個連続、４個連続、２個連続にハイレベルに変化する。
【００３５】
また、１個単独のカム信号ＰＨＡＳＥ、及び、複数連続して出力されるカム信号ＰＨＡＳＥの先頭の信号は、クランク角で１８０deg間隔に出力され、かつ、１個単独、３個連続、４個連続、２個連続の出力パターンが、ある気筒の上死点ＴＤＣと次の気筒の上死点ＴＤＣとの間でそれぞれ出力されるようにしてある。
【００３６】
より詳細には、第１気筒の圧縮上死点ＴＤＣと第３気筒の圧縮上死点ＴＤＣとの間では、カム信号ＰＨＡＳＥを３個連続で出力し、第３気筒の圧縮上死点ＴＤＣと第４気筒の圧縮上死点ＴＤＣとの間では、カム信号ＰＨＡＳＥを４個連続で出力し、第４気筒の圧縮上死点ＴＤＣと第２気筒の圧縮上死点ＴＤＣとの間では、カム信号ＰＨＡＳＥを２個連続で出力し、第２気筒の圧縮上死点ＴＤＣと第１気筒の圧縮上死点ＴＤＣとの間では、カム信号ＰＨＡＳＥを１個単独で出力するように設定してある。
【００３７】
尚、クランクシャフト１２０に対する吸気カムシャフト１３４の回転位相を可変とすることで、吸気バルブ１０５のバルブタイミングを可変とする可変動弁機構を備える場合、バルブタイミングを変更しても、カム信号ＰＨＡＳＥの出力位置が上死点ＴＤＣを横切って変化することがないようにする。
【００３８】
換言すると、各上死点ＴＤＣの間で出力するカム信号ＰＨＡＳＥの数が、たとえバルブタイミングを変更しても変化することがないように、バルブタイミングの変更範囲を見込んでカム信号ＰＨＡＳＥの出力位置及び出力間隔を設定する。
【００３９】
各上死点ＴＤＣの間で出力するカム信号ＰＨＡＳＥの連続出力数は、次に圧縮上死点となる気筒番号を示し、例えば、今回の上死点ＴＤＣと前回の上死点ＴＤＣとの間で、カム信号ＰＨＡＳＥを３個連続して出力した場合には、今回の上死点ＴＤＣは、第３気筒の圧縮上死点ＴＤＣであることを示す。
【００４０】
本実施形態の４気筒機関１０１では、点火を第１気筒→第３気筒→第４気筒→第２気筒の順で行うので、上死点ＴＤＣ間で出力されるカム信号ＰＨＡＳＥの出力パターンは、図３に示すように、１個単独、３個連続、４個連続、２個連続の順に設定してある。
【００４１】
ＥＣＵ１１４は、例えば、回転信号ＰＯＳの歯抜け箇所を回転信号ＰＯＳの周期変化などから判断し、この歯抜け位置を基準に、回転信号ＰＯＳの発生数を計数することで、上死点ＴＤＣ（基準クランク角位置ＲＥＦ）を検出する。本実施形態では、回転信号ＰＯＳの歯抜け領域後の６番目に出力される回転信号ＰＯＳが各気筒の上死点ＴＤＣに相当する。
【００４２】
そして、ＥＣＵ１１４は、上死点ＴＤＣ間でカム信号ＰＨＡＳＥの出力数を計数することで、次にピストンの位置が圧縮上死点ＴＤＣ（所定ピストン位置）となる気筒を判別すると共に、上死点ＴＤＣからの回転信号ＰＯＳの発生数を計数し、該計数値ＣＮＴＰＯＳに基づいてそのときのクランク角を検出する。
【００４３】
圧縮上死点ＴＤＣの気筒及びクランク角を検出すると、ＥＣＵ１１４は、燃料噴射及び点火を行わせる気筒、更に、燃料噴射タイミング及び点火タイミングを決定し、前記計数値ＣＮＴＰＯＳに基づいて検出されるクランクシャフト１２０の角度（クランク角）に応じて噴射パルス信号や点火制御信号を出力する。
【００４４】
ピストンの位置が圧縮上死点ＴＤＣ（所定ピストン位置）となる気筒の判別結果は、点火順に沿って更新することになるので、上死点ＴＤＣ間でカム信号ＰＨＡＳＥの出力数を計数することで、次にピストンの位置が圧縮上死点ＴＤＣ（所定ピストン位置）となる気筒を判別した後は、圧縮上死点ＴＤＣの気筒を上死点ＴＤＣ毎に点火順に沿って更新することができる。
【００４５】
尚、カム信号ＰＨＡＳＥの発生数を計数する区間を、上死点ＴＤＣ間に限定するものではなく、任意のクランク角（ピストン位置）を、カム信号ＰＨＡＳＥの発生数を計数する区間の基準とすることができる。
【００４６】
更に、カム信号ＰＨＡＳＥの発生数で、所定ピストン位置の気筒を判別する代わりに、カム信号ＰＨＡＳＥのパルス幅の違いなどに基づいて、所定ピストン位置の気筒を判別することができる。
【００４７】
また、本実施形態では、回転信号ＰＯＳのパルス列の一部を欠落させてあることで、欠落位置を基準にクランクシャフト１２０の角度位置（クランク角）を検出できるようにしているが、回転信号ＰＯＳを１０deg毎に欠落することなく出力させ、代わりに、クランク角１８０deg毎の基準クランク角位置で信号を発生する基準位置センサを設け、該基準位置センサの出力信号を基準に、回転信号ＰＯＳを計数することで、クランクシャフト１２０の角度位置（クランク角）を検出することもできる。
【００４８】
ところで、内燃機関１０１（クランクシャフト１２０）が正転している場合には、回転信号ＰＯＳの発生が、クランクシャフト１２０が１０degだけ正転方向に回転したことを示し、基準クランク角位置からの回転信号ＰＯＳの発生数が、基準クランク角位置からのクランクシャフト１２０の回転角度を示すことになる。
【００４９】
しかし、内燃機関１０１の停止直前には、筒内の圧縮圧などによって内燃機関１０１（クランクシャフト１２０）が逆転する場合があり、係る逆転時にも正転時と同様に回転信号ＰＯＳの発生数を計数し続けると、クランクシャフト１２０の角度位置（クランク角）を誤検出することになってしまう。
【００５０】
そこで、内燃機関１０１（クランクシャフト１２０）の正転・逆転を判別できるように、クランク角センサ１１７（回転検出装置１５３）が、クランクシャフト１２０の正転時と逆転時とでパルス幅の異なる回転信号ＰＯＳ（パルス信号）を出力するようにしてある（図４（Ａ）参照）。
【００５１】
回転軸の回転方向によってパルス幅の異なるパルス信号を発生させる手段として、例えば特開２００１−１６５９５１号公報に開示される手段を用いる。具体的には、シグナルプレート１５２の突起部１５１の検出パルス信号として、相互に位相がずれた２つの信号を発生させ、これらの信号を比較することで正転・逆転を判定し、相互に異なるパルス幅ＷＩＰＯＳに生成される２つのパルス信号のいずれか一方を、正転・逆転の判定結果に基づいて選択して出力させるようにする。
【００５２】
ＥＣＵ１１４では、回転信号ＰＯＳのパルス幅ＷＩＰＯＳを計測し、パルス幅の計測値ＷＩＰＯＳと、正転・逆転の判別閾値である閾値ＳＬとを比較することで、正転時のパルス幅ＷＩＰＯＳであるか、逆転時のパルス幅ＷＩＰＯＳであるかを判断し、クランクシャフト１２０が正転しているか逆転しているかを判別する。
【００５３】
正転・逆転の判別に用いる閾値ＳＬは、正転時のパルス幅ＷＩＰＯＳと逆転時のパルス幅ＷＩＰＯＳとの中間値（例えば、５５μｓ〜８０μｓ）に設定され、正転時のパルス幅ＷＩＰＯＳよりも逆転時のパルス幅ＷＩＰＯＳが長い本実施形態では、パルス幅ＷＩＰＯＳが前記閾値ＳＬ以上であれば、逆転状態であると判断し、パルス幅ＷＩＰＯＳが前記閾値ＳＬ未満であれば、正転状態であると判断する。
【００５４】
尚、本実施形態では、図４（Ａ）に示すように、正転時のパルス幅ＷＩＰＯＳを４５μｓに設定し、逆転時のパルス幅ＷＩＰＯＳを９０μｓに設定したが、パルス幅ＷＩＰＯＳを上記の４５μｓ，９０μｓに限定するものではない。また、正転時の方が逆転時よりもパルス幅ＷＩＰＯＳが大きくなるように設定してもよい。
【００５５】
また、図４（Ａ）に示した例では、回転信号ＰＯＳを、通常ローレベルで既定の角度位置になったときに一定時間だけハイレベルに変化するパルス信号としたが、通常ハイレベルで既定の角度位置になったときに一定時間だけローレベルに変化するパルス信号であってもよく、この場合、ローレベル期間が回転方向で異なるように設定し、ローレベル期間の長さをパルス幅ＷＩＰＯＳとして計測して回転方向を判別することができる。
【００５６】
また、図４（Ｂ）に示すように、回転信号ＰＯＳの振幅（信号レベル）が正転・逆転で異なるようにして、振幅（信号レベル）の違いによって正転・逆転を判別することができる。
【００５７】
図４（Ｂ）に示した例では、回転信号ＰＯＳは、通常ローレベルで既定の角度位置になったときに一定時間だけハイレベルに変化するパルス信号であり、既定の角度位置になったときの信号レベルが、逆転時よりも正転時でより高くなるように設定してあり、具体的には、正転時には５Ｖ、逆転時には2.5Ｖの信号を出力するように設定してある。
【００５８】
そして、図５（Ａ）に示すように、クランクシャフト１２０の正転時であれば、回転信号ＰＯＳの発生毎に計数値ＣＮＴＰＯＳを増大させることで、クランクシャフト１２０の正転方向への回転角を検出し、クランクシャフト１２０の逆転時であれば、回転信号ＰＯＳの発生に対して前記計数値ＣＮＴＰＯＳを減少させることで、クランクシャフト１２０が逆転した分だけ正転方向への回転角が減ったものとする。
【００５９】
尚、図５に示すように、回転信号ＰＯＳの計数値ＣＮＴＰＯＳを、歯抜け部分を挟んで「１０」と「１３」とにステップ的に変化させているが、これは、計数値ＣＮＴＰＯＳが、歯抜けがない場合の回転信号ＰＯＳの発生数を示すようにするための処理である。
【００６０】
また、逆転して上死点ＴＤＣを横切った場合には、図５（Ａ）に示すように、所定ピストン位置の気筒の判別結果を、点火順で１つ前の気筒に戻すことで、内燃機関１０１の停止時における各気筒のピストン位置を検出する。
【００６１】
図５（Ａ）に示すパターンでは、第１気筒→第３気筒→第４気筒→第３気筒→第４気筒の順で、所定ピストン位置の気筒データを更新しているが、これは、第３気筒の上死点ＴＤＣを経過した後に内燃機関１０１が逆転し、再度第３気筒の上死点ＴＤＣを横切って戻り、第１気筒の上死点ＴＤＣと第３気筒の上死点との間で逆転から正転に切り換り、第３気筒の上死点ＴＤＣを横切って停止した状態を示す。
【００６２】
上記のように、正転・逆転を判別してクランク角を検出すれば、内燃機関１０１の停止直前に逆転することがあっても、停止時のクランク角及び停止時における各気筒のピストン位置を精度良く検出できる。
【００６３】
そして、内燃機関１０１の停止期間中において、クランクシャフト１２０の停止位置、及び、所定ピストン位置であると判別した気筒を記憶しておけば、内燃機関１０１の再始動時に、停止時のクランク角を初期位置としてクランクシャフト１２０が回転するものとして、クランク角を始動開始時から推定でき、また、所定ピストン位置の気筒を特定することができ、燃料噴射・点火を早期に開始させて始動応答性を改善できる。
【００６４】
停止時のクランク角が不明であると、始動開始から基準クランク角位置（回転信号ＰＯＳの欠落部分）を初めて検出するまでの間は、クランク角が不明であり、更に、２回目の基準クランク角位置を検出して所定ピストン位置の気筒を判別できるようになるので、２回目の基準クランク角位置を検出するまで、燃料噴射及び点火を行う気筒を決定することができず、燃料噴射・点火の開始が遅れてしまう。
【００６５】
本実施形態では、ＥＣＵ１１４が、内燃機関１０１のアイドル運転状態で自動停止条件が成立すると内燃機関１０１を自動停止させ、内燃機関１０１を自動停止させた後に再始動条件が成立すると、内燃機関１０１を自動的に再始動させるアイドルストップ制御機能（アイドルストップ制御手段としての機能）を有している。
【００６６】
そして、アイドルストップ制御による停止状態からの再始動においては、高い始動応答が要求されるため、前述のように、停止時におけるクランク角及び所定ピストン位置の気筒を記憶しておき、これらを初期値としてクランク角及び所定ピストン位置の気筒を推定させるようにすれば、回転信号ＰＯＳ及びカム信号ＰＨＡＳＥに基づいてクランク角及び所定ピストン位置の気筒を検出するよりも前から、燃料噴射及び点火を開始させて、高い始動応答性を得ることができる。
【００６７】
前記アイドルストップ制御においては、例えば、車速ＶＳＰが０km/h、機関回転速度ＮＥが所定回転速度以下、アクセル開度ＡＣＣが全閉、ブレーキスイッチ１２２がＯＮ（制動状態）、冷却水温度ＴＷが所定温度以上などの条件が全て成立しているときに、アイドルストップ条件（自動停止条件）が成立していると判断し、燃料噴射・点火を停止させ、内燃機関１０１を自動停止させる。
【００６８】
前記所定回転速度は、内燃機関１０１のアイドル運転状態を判断するための値であり、目標アイドル回転速度よりも僅かに高く設定され、また、前記所定温度は、機関１０１の完暖状態（暖機後の状態）で自動停止を許可するための値である。
【００６９】
一方、内燃機関１０１を自動停止させている状態で、例えば、ブレーキスイッチ１２２がＯＦＦ（非制動状態）に切り替わったり、アクセルペダルが踏み込まれたり、自動停止状態の継続時間が基準時間よりも長くなったり、バッテリ電圧の低下を判断したりすると、再始動条件が成立したと判断して、内燃機関１０１に対する燃料噴射・点火を再開させる。
【００７０】
尚、アイドルストップ制御による停止状態からの再始動において、本実施形態では、スタータモータを用いて内燃機関１０１を回転させ始める。
【００７１】
図６は、内燃機関１０１の停止時におけるクランク角（計数値ＣＮＴＰＯＳ）及び所定ピストン位置の気筒を記憶して、再始動時にこれらの記憶データに基づいて燃料噴射・点火を制御する様子を示す。
【００７２】
図６に示した例では、第１気筒の圧縮上死点前で内燃機関１０１が停止し、かつ、停止時のクランク角位置は、第１気筒の圧縮上死点前５０deg（ＢＴＤＣ５０deg）の位置である。
【００７３】
上記停止時のデータから、第３気筒の吸気行程途中であって、かつ、第４気筒の排気行程途中て内燃機関１０１が停止していることが分かるから、ＥＣＵ１１４は、始動開始に伴って、吸気行程途中で止まっていた第３気筒及び排気行程途中で止まっていた第４気筒への燃料噴射を実施し、これら第３気筒及び第４気筒に対する点火をセットする。
【００７４】
また、始動開始に伴って回転信号ＰＯＳが発生すると、停止時の値を初期値とする計数値ＣＮＴＰＯＳをカウントアップし、カウントアップの結果から第１気筒の圧縮上死点を検出し、第１気筒の圧縮上死点を検出すると、次に圧縮上死点となる気筒のデータを第３気筒に更新すると共に、上死点位置で計数値ＣＮＴＰＯＳを０にリセットして、計数値ＣＮＴＰＯＳに基づき上死点後の回転角を推定できるようにし、計数値ＣＮＴＰＯＳに基づき点火コイルへの通電開始タイミングなどを決定する。
【００７５】
始動開始後から回転信号ＰＯＳの歯抜け部分を検出するまでは、計数値ＣＮＴＰＯＳを、前回の運転停止時の値を基準に更新することで、そのときのクランク角を推定するが、回転信号ＰＯＳの歯抜け部分を検出すると、停止時の記憶データに基づく推定結果とは独立して、そのときのクランク角がＡＴＤＣ１３０deg（ＢＴＤＣ５０deg）であると確定することになり、その後は、この確定位置を基準に計数値ＣＮＴＰＯＳを更新することで、クランク角を検出する。
【００７６】
また、初めて歯抜け部分を検出してクランク角を確定すると、この確定位置からの回転信号ＰＯＳを計数値に基づき、２回目の上死点が検出され、始動後１回目の上死点と２回目の上死点との間で出力されたカム信号ＰＨＡＳＥの数から、圧縮上死点前の気筒が確定することになる。
【００７７】
尚、図６におけるＣＹＬは、圧縮上死点前の気筒の番号を示し、また、ＣＹＬ１は、カム信号ＰＨＡＳＥの数を計数して検出した気筒を示し、ＣＹＬ２は、停止時の各ピストン位置を基準に圧縮上死点前の気筒として推定した結果を示す。
【００７８】
クランク角及び圧縮上死点前の気筒を確定してから、燃料噴射・点火を開始させる場合、図６に示した例では、気筒確定時に排気行程途中である＃１気筒及び気筒確定直後に吸気行程となる第２気筒が、最初に燃料噴射することが可能な気筒となり、停止時のクランク角及び各ピストン位置を基準にした推定値に基づき燃料噴射を開始させる場合に比べて、燃料噴射・点火の開始が遅れ、始動応答が低下する。
【００７９】
ところで、前述のように、クランクシャフト１２０の正転・逆転の判断は、回転信号ＰＯＳのパルス幅ＷＩＰＯＳと閾値ＳＬとを比較することで行われるが、回転信号ＰＯＳのパルス幅ＷＩＰＯＳの計測値は、クランク角センサ１１７（回転検出装置１５３）の出力ばらつき、更には、パルス幅ＷＩＰＯＳを計測するＥＣＵ１１４の回路のばらつきなどによって変動し、これによって、正転・逆転の判別精度が低下する可能性がある。
【００８０】
そして、実際には逆転しているのに正転していると誤判定すると、停止時のクランク角及び所定ピストン位置の気筒を誤検出し、停止時のクランク角位置及び所定ピストン位置の気筒を基準として始動開始後のクランク角及び所定ピストン位置の気筒を推定すると、該推定値に基づいて再始動時の燃料噴射・点火を制御すると、誤った気筒やタイミングで燃料噴射・点火を行ってしまうことになる。
【００８１】
図５（Ｂ）は、逆転を検知できなくなり、逆転中も正転状態であると判断するようになった場合の計数値ＣＮＴＰＯＳの変化、及び、圧縮上死点前の気筒の判別結果を示す。
【００８２】
図５（Ｂ）に示すように、逆転状態で正転であると誤判断すると、逆転状態であるにも関わらずに上死点後の回転角を示す計数値ＣＮＴＰＯＳを増大変化させてしまうため、上死点位置を誤検出し、かつ、圧縮上死点前の気筒を誤判断することになってしまう。
【００８３】
そして、停止位置を誤判断すると、図７に示すように、停止位置を基準に再始動後のクランク角及び圧縮上死点前の気筒を推定することで、誤った気筒に対して燃料噴射・点火を行ってしまい、バックファイヤなどの異常燃焼を発生させることになる。
【００８４】
図７は、実際には第１気筒の圧縮上死点前で内燃機関１０１が停止したのに、逆転を検知できなかったために、第３気筒の圧縮上死点前で内燃機関１０１が停止したと誤検出した場合を示す。
【００８５】
第３気筒の圧縮上死点前では、第４気筒が吸気行程途中で、かつ、第２気筒が排気行程途中であるため、図７に示す例では、第３気筒の圧縮上死点前で内燃機関１０１が停止しているとの記憶に基づいて、再始動時に第４気筒及び第２気筒に燃料噴射を行っているが、実際には、第１気筒の圧縮上死点前で内燃機関１０１が停止しており、燃料噴射を行った第４気筒は実際には排気行程であり、第４気筒に対する点火を吸気行程で行ってしまうことになり、バックファイヤなどの異常燃焼を発生させてしまう。
【００８６】
上記のように、内燃機関１０１の停止位置を記憶しておき、係る記憶値に基づき始動後のクランク角及び所定ピストン位置の気筒を推定し、この推定結果に基づいて燃料噴射・点火を制御すれば、燃料噴射・点火を早期に開始させ、始動応答性を改善できるものの、停止直前に発生する逆転を精度良く判別できないと、停止位置の検出に誤差を生じ、結果、再始動時に誤った気筒に対して燃料噴射・点火を行わせてしまい、再始動時における排気性状の悪化などを招いてしまう。
【００８７】
そこで、ＥＣＵ１１４は、回転信号ＰＯＳに基づく正転・逆転の判別が正常に行われているか否かを診断し、この診断結果に基づいてクランク角の検出を行い、検出したクランク角に基づいて燃料噴射・点火を制御する。
【００８８】
以下では、ＥＣＵ１１４による、クランク角の検出処理，正転・逆転の判別処理及び正転・逆転判別の診断処理の様子を、図８及び図９のフローチャートに従って詳細に説明する。
【００８９】
図８及び図９のフローチャートに示すルーチンは、クランク角センサ１１７が回転信号ＰＯＳを出力したときに割り込み実行するルーチンである。
【００９０】
まず、ステップＳ５０１では、前回の回転信号ＰＯＳの出力から今回の回転信号ＰＯＳまでの時間として、回転信号ＰＯＳの発生周期ＴＰＯＳを計測し、また、今回の回転信号ＰＯＳのパルス幅ＷＩＰＯＳを計測する。
【００９１】
次のステップＳ５０２では、カウント開始フラグＦＣＮＴに初期値である「０」を設定しているか否かを判断する。
【００９２】
カウント開始フラグＦＣＮＴに「０」を設定している場合には、ステップＳ５０３へ進み、今回の回転信号ＰＯＳが始動開始後初めての回転信号ＰＯＳであるか否かを判別する。
【００９３】
初回の回転信号ＰＯＳである場合には、ステップＳ５０４へ進み、前回内燃機関１０１を停止したときのクランク角を示す回転信号ＰＯＳの計数値であるカウンタＣＮＴＰＯＳｚの値を記憶しているか否かを判断する。
【００９４】
停止時におけるカウンタＣＮＴＰＯＳｚの値を記憶していない場合、今回の回転信号ＰＯＳがクランクシャフト１２０のどの角度位置で出力されたものであるかが不明であるので、ステップＳ５１３へ進み、クランク角が不明であると判定する。
【００９５】
クランク角が不明である間は、燃料噴射・点火のタイミングを特定できないため、燃料噴射・点火を開始させずに待機する。
【００９６】
一方、前回内燃機関１０１を停止したときのカウンタＣＮＴＰＯＳｚの値を記憶している場合には、この停止時の位置から始動開始したものと推定し、ステップＳ５０５へ進み、前回運転停止時のカウンタＣＮＴＰＯＳｚの値を、カウンタＣＮＴＰＯＳの初期値に設定する。
【００９７】
そして、カウンタＣＮＴＰＯＳを初期設定したことで、回転信号ＰＯＳの発生毎にカウンタＣＮＴＰＯＳを更新して、カウンタＣＮＴＰＯＳの値からそのときのクランク角を検出することが可能になるので、ステップＳ５０６へ進んで、カウント開始フラグＦＣＮＴに１を設定することで、カウンタＣＮＴＰＯＳの更新を許可するようにする。
【００９８】
また、次のステップＳ５０７では、前回運転停止時のカウンタＣＮＴＰＯＳの値が「１０」であるか否かを判断する。
【００９９】
ＣＮＴＰＯＳ＝１０は、ＢＴＤＣ８０degで出力される回転信号ＰＯＳを示す値であり、ＢＴＤＣ８０degは、歯抜け部分の直前の回転信号ＰＯＳの出力位置である。
【０１００】
従って、停止時のカウンタＣＮＴＰＯＳｚの値が「１０」であった場合には、回転信号ＰＯＳが歯抜けとなる角度領域で機関１０１が停止したことになり、スタータモータによる再始動で内燃機関１０１が正転して発生した今回の回転信号ＰＯＳは、歯抜け領域直後の回転信号ＰＯＳであるものと推定できる。
【０１０１】
そこで、前回運転停止時のカウンタＣＮＴＰＯＳｚの値が「１０」であった場合は、ステップＳ５０８へ進んで、カウンタＣＮＴＰＯＳに、歯抜け領域直後の回転信号ＰＯＳを示す「１３」を設定する。
【０１０２】
カウンタＣＮＴＰＯＳ＝１３は、回転信号ＰＯＳを歯抜けすることなく出力した場合、上死点ＴＤＣ後から１３番目の回転信号ＰＯＳに相当すること、換言すれば、ＡＴＤＣ１３０degのクランク角位置であることを示す。
【０１０３】
一方、前回運転停止時のカウンタＣＮＴＰＯＳｚの値が「１０」ではなかった場合は、ステップＳ５１６へ進んで、前回運転停止時のカウンタＣＮＴＰＯＳｚの値を初期値に設定したカウンタＣＮＴＰＯＳを１だけ増大させる。
【０１０４】
尚、ステップＳ５１６における前回値ＣＮＴＰＯＳｚは、始動開始後初回の回転信号ＰＯＳの発生時であれば、前回運転停止時のカウンタＣＮＴＰＯＳｚの値であり、２回目以降であれば、前回更新した値となる。
【０１０５】
そして、次のステップＳ５１７では、ステップＳ５１６で増大させたカウンタＣＮＴＰＯＳの値が「１８」であるか否かを判断し、ＣＮＴＰＯＳ＝１８でない場合には、そのまま本ルーチンを終了させる。
【０１０６】
一方、ＣＮＴＰＯＳ＝１８の場合には、ステップＳ５１８へ進んで、カウンタＣＮＴＰＯＳの値を０にリセットし、更に、次のステップＳ５１９では、基準クランク角信号ＲＥＦを出力させる。
【０１０７】
カウンタＣＮＴＰＯＳ＝０は各気筒の上死点ＴＤＣ位置に相当し、基準クランク角信号ＲＥＦが出力される間、即ち、上死点ＴＤＣ間で、カム信号ＰＨＡＳＥの発生数を計数し、圧縮上死点の気筒を判別する。
【０１０８】
上記のように、カウンタＣＮＴＰＯＳを各気筒の上死点ＴＤＣ毎に０にリセットすることで、カウンタＣＮＴＰＯＳを、上死点ＴＤＣからの正転方向への回転角を１０deg単位で示す値としている。
【０１０９】
ステップＳ５０６でカウント開始フラグＦＣＮＴに１を設定した場合には、次回の回転信号ＰＯＳの発生時には、ステップＳ５０２からステップＳ５１４に進むことになるが、前回運転停止時のカウンタＣＮＴＰＯＳｚの値が記憶されていない場合には、カウント開始フラグＦＣＮＴが０に保持されるため、次回の回転信号ＰＯＳの発生時に、ステップＳ５０２からステップＳ５０３へ進み、ステップＳ５０３で初回でないと判断されることで、ステップＳ５０９へ進むことになる。
【０１１０】
尚、運転停止時のカウンタＣＮＴＰＯＳｚの値を記憶する処理の実行を、アイドルストップ制御によって内燃機関１０１を自動停止した場合に限定することができる。これは、アイドルストップ制御による停止状態からの自動的な再始動においては、運転者のキースイッチ操作による始動時よりも高い始動応答が要求されること、更に、運転者のキースイッチ操作による始動の場合、機関の停止中にクランク角が変化している可能性があり、停止時のクランク角位置と始動開始直前のクランク角位置とが異なり、停止時のクランク角に基づいて始動開始後のクランク角を推定すると、誤った推定を行ってしまう可能性があるためである。
【０１１１】
ステップＳ５０９では、回転信号ＰＯＳの発生周期ＴＰＯＳの前回値と今回値とを比較することで、今回の回転信号ＰＯＳが、歯抜け領域後の最初の回転信号ＰＯＳに相当するか否かを判断する。
【０１１２】
発生周期ＴＰＯＳは、クランク角で３０degの間隔で回転信号ＰＯＳが出力されることになる歯抜け箇所で急に大きくなるので、回転速度の変動による周期ＴＰＯＳの変化を超える大きな周期変化があった場合に、今回の周期ＴＰＳＯが３０deg間隔となっている部分（歯抜け部分）を計測した結果であると判断できる。
【０１１３】
そして、今回の回転信号ＰＯＳが歯抜け領域後の最初の回転信号ＰＯＳに相当する場合、回転信号ＰＯＳに基づき上死点前５０deg（ＢＴＤＣ５０deg）の位置を検出したことになり、その場合は、ステップＳ５１０へ進んで、カウンタＣＮＴＰＯＳに対して、ＡＴＤＣ１３０deg（ＢＴＤＣ５０deg）に対応する「１３」を設定する。
【０１１４】
次のステップＳ５１１では、カウント開始フラグＦＣＮＴに１を設定し、更に、ステップＳ５１２では、クランク角確定フラグＦＤＥＣに１を設定する。
【０１１５】
前記クランク角確定フラグＦＤＥＣは、前回運転停止時のカウンタＣＮＴＰＯＳｚの値に基づいてカウント開始フラグＦＣＮＴに１を設定し、カウンタＣＮＴＰＯＳの更新を開始させた場合には、初期値である０を保持する一方、前回運転停止時のカウンタＣＮＴＰＯＳｚを記憶しておらず、歯抜け領域後の最初の回転信号ＰＯＳを検出してからカウンタＣＮＴＰＯＳの更新を開始させた場合には、１に設定する。
【０１１６】
ステップＳ５０９で、今回の回転信号ＰＯＳが、歯抜け領域後の最初の回転信号ＰＯＳに相当しないと判断した場合には、ステップＳ５１３へ進んで、クランク角が不明であると判断する。
【０１１７】
即ち、前回運転停止時のカウンタＣＮＴＰＯＳｚを記憶していない場合には、歯抜け領域後の最初の回転信号ＰＯＳを検出するまで、クランク角は不明であるとの検出結果を出力し、歯抜け領域後の最初の回転信号ＰＯＳを検出すると、その時点で、クランク角がＡＴＤＣ１３０deg（ＢＴＤＣ５０deg）であると確定できるので、次回からカウンタＣＮＴＰＯＳの更新を開始させる。
【０１１８】
従って、前回運転停止時のカウンタＣＮＴＰＯＳｚを記憶していない場合、歯抜け領域後の最初の回転信号ＰＯＳを検出するまではクランク角が不明であり、歯抜け領域後の最初の回転信号ＰＯＳを検出してから、燃料噴射・点火を開始させることが可能となる。
【０１１９】
一方、前回運転停止時のカウンタＣＮＴＰＯＳｚを記憶している場合には、この記憶値をカウンタＣＮＴＰＯＳの初期値に設定し、カウンタＣＮＴＰＯＳの更新を直ちに開始させることで、前回運転停止時のカウンタＣＮＴＰＯＳｚを基準に始動開始後のクランク角を推定するので、燃料噴射・点火を早期に開始させることができる。
【０１２０】
カウント開始フラグＦＣＮＴに１を設定すると、ステップＳ５０２からステップＳ５１４へ進むようになり、ステップＳ５１４では、内燃機関１０１の停止指令が発生したか否か、具体的には、燃料噴射・点火を停止したか否かを判断する。
【０１２１】
ここで、運転停止時のカウンタＣＮＴＰＯＳｚを記憶させる処理を、アイドルストップ制御による自動停止に限定して実行する場合には、前記停止指令をアイドルストップ制御による自動停止に限定することができる。
【０１２２】
停止指令が発生してなく、燃料噴射・点火を継続している内燃機関１０１の運転中であれば、ステップＳ５１５へ進む。
【０１２３】
ステップＳ５１５では、ステップＳ５０９と同様に、回転信号ＰＯＳの発生周期ＴＰＯＳの前回値と今回値とを比較することで、今回の回転信号ＰＯＳが、歯抜け領域後の最初の回転信号ＰＯＳに相当するか否かを判断する。
【０１２４】
今回の回転信号ＰＯＳが、歯抜け領域後の最初の回転信号ＰＯＳでない場合には、ステップＳ５１６へ進んで、前回のカウンタＣＮＴＰＯＳを１だけ増大させて今回値とする。
【０１２５】
そして、次のステップＳ５１７では、ステップＳ５１６で増大させたカウンタＣＮＴＰＯＳの値が「１８」であるか否かを判断し、ＣＮＴＰＯＳ＝１８でない場合には、そのまま本ルーチンを終了させる。
【０１２６】
一方、ＣＮＴＰＯＳ＝１８の場合には、ステップＳ５１８へ進んで、カウンタＣＮＴＰＯＳの値を０にリセットし、更に、次のステップＳ５１９では、基準クランク角信号ＲＥＦを出力する。
【０１２７】
また、ステップＳ５１５で、今回の回転信号ＰＯＳが、歯抜け領域後の最初の回転信号ＰＯＳであると判断すると、ステップＳ５２０へ進む。
【０１２８】
ステップＳ５２０では、クランク角確定フラグＦＤＥＣに１を設定しているか否かを判断する。
【０１２９】
クランク角確定フラグＦＤＥＣに０を設定している場合、即ち、内燃機関１０１を停止させたときのカウンタＣＮＴＰＯＳｚを記憶しており、この記憶値に基づいて始動開始後にカウンタＣＮＴＰＯＳをカウントアップさせていた場合には、ステップＳ５２１（診断手段）へ進む。
【０１３０】
ステップＳ５２１では、前回のカウンタＣＮＴＰＯＳｚ、即ち、前回運転停止時のカウンタＣＮＴＰＯＳｚを初期値としてカウントアップさせた値が、「１０」近傍であるか否かを判別する。
【０１３１】
カウンタＣＮＴＰＯＳを正常にカウントアップしている場合、歯抜け領域の直前で回転信号ＰＯＳが出力されたときに、カウンタＣＮＴＰＯＳ＝１０にカウントアップするから、歯抜け領域後の最初の回転信号ＰＯＳが出力された時点でのカウントアップ処理前のカウンタＣＮＴＰＯＳは「１０」になっている状態が正常である。
【０１３２】
但し、内燃機関１０１の停止時に発生する逆転を正しく判別できなかった場合には、停止時の実際のクランク角にカウンタＣＮＴＰＯＳの値が対応しなくなり、この停止時のカウンタＣＮＴＰＯＳｚを初期値として再始動時にカウンタＣＮＴＰＯＳのカウントアップを開始させると、始動時のクランク角を誤検出することになる。
【０１３３】
ここで、回転信号ＰＯＳの歯抜けは一定のクランク角で発生し、かつ、スタータモータによるクランキング状態であればクランクシャフト１２０が逆転することはなく、停止位置から正転を続けることになるので、内燃機関１０１の始動開始後に回転信号ＰＯＳの歯抜けを始めて検出した時点で、クランク角が確定されることになる。
【０１３４】
従って、回転信号ＰＯＳの歯抜けを検出した時点でのカウンタＣＮＴＰＯＳの値、換言すれば、運転停止時の位置を基準とした推定クランク角が、歯抜け位置に対応する「１０」になっていない場合には、停止直前の逆転判断を誤った結果、停止時のクランク角を誤検出したため、停止時のクランク角を基準として推定したクランク角が実際のクランク角からずれたものと判断できる。
【０１３５】
但し、正転・逆転の判断に基づくカウンタＣＮＴＰＯＳの増減処理においては、正転・逆転を正しく判別できたとしても、回転方向の反転タイミングなどによってクランク角の検出に僅かの誤差を生じることがある。
【０１３６】
このため、ステップＳ５２１では、前回のカウンタＣＮＴＰＯＳｚと期待値である１０との差の絶対値が許容値ＥＳＬ（例えば１〜３）以下であるか否かを判断する。
【０１３７】
前記許容値ＥＳＬは、正転・逆転の判別を正確に行える状態であっても、内燃機関１０１の停止位置の誤差として発生してしまう角度に基づき設定され、正転・逆転の判別に誤りを生じたときに、前回のカウンタＣＮＴＰＯＳｚと期待値との差が前記許容値ＥＳＬを超えるように、予め適合して記憶しておく。
【０１３８】
そして、前回のカウンタＣＮＴＰＯＳｚと期待値である１０との差の絶対値が前記許容値ＥＳＬを超える場合には、内燃機関１０１の停止直前の逆転を正しく判断できなかったために、内燃機関１０１の停止時におけるクランク角を誤検出し、この誤った停止位置を初期値として再始動開始後にカウンタＣＮＴＰＯＳをカウントアップしてクランク角を検出したために、始動後初めて回転信号ＰＯＳの歯抜け部分を検出したときに、カウンタＣＮＴＰＯＳの値が、歯抜け部分に対応する値になっていなかったものと推定する。
【０１３９】
そこで、前回のカウンタＣＮＴＰＯＳｚと期待値である１０との差の絶対値が前記許容値ＥＳＬを超える場合には、回転信号ＰＯＳのパルス幅ＷＩＰＯＳに基づくクランクシャフト１２０の正転・逆転の判別に異常が生じている、換言すれば、逆転状態を正確に判別できない状態であると判定し、ステップＳ５２２へ進んで、前記異常の発生を車両の運転者に警告し、早期の修理を促すと共に、異常に対応するための制御（フェイル処理）を実行する。
【０１４０】
前記異常の診断結果は、ステップＳ５２１で前回のカウンタＣＮＴＰＯＳｚと期待値である１０との差の絶対値が許容値以下であると判断されるまで保持させるか、又は、整備工場での修理・調整作業に伴って強制的にリセットできるようにするとよい。
【０１４１】
前記運転者に対する警告は、例えば、車両の運転席付近などに設けた警告灯１７１の点灯によって行われ、また、音声案内などで異常の発生を運転者に知らせることもできる。
【０１４２】
また、前記フェイル処理としては、停止時のクランク角を初期値としたクランク角の推定結果に基づく、燃料噴射・点火タイミングの決定を禁止したり、アイドルストップ制御を禁止したりすることができ、詳細には後で説明する。
【０１４３】
一方、ステップＳ５２１で前回のカウンタＣＮＴＰＯＳｚと期待値である１０との差の絶対値が許容値ＥＳＬ以下であると判断した場合には、正転・逆転の判別機能が正常で、内燃機関１０１の停止直前の逆転を正しく判断できたものと判断し、ステップＳ５２２を迂回してステップＳ５２３へ進む。
【０１４４】
ステップＳ５２３では、今回の歯抜け領域の検出に基づき、クランク角確定フラグＦＤＥＣに１を設定する。
【０１４５】
更に、ステップＳ５２４では、カウンタＣＮＴＰＯＳに、歯抜け領域後の最初の回転信号ＰＯＳに対応する値である「１３」を設定する。
【０１４６】
また、ステップＳ５２０で、クランク角確定フラグＦＤＥＣに「１」を設定していると判断した場合、即ち、歯抜け領域を前回以前に検出済みであって、今回の歯抜け領域の検出が再始動後の２回目以降であり、始動後に回転信号ＰＯＳの歯抜け領域を基準にクランク角を検出できている場合には、ステップＳ５２１〜ステップＳ５２３を迂回してステップＳ５２４へ進み、カウンタＣＮＴＰＯＳに「１３」を設定する。
【０１４７】
また、ステップＳ５１４で、内燃機関１０１の停止指令の発生（アイドルストップ制御による停止指令の発生）を判断すると、ステップＳ５２５（正転・逆転判別手段）へ進む。
【０１４８】
ステップＳ５２５では、回転信号ＰＯＳのパルス幅ＷＩＰＯＳと閾値ＳＬとを比較し、パルス幅ＷＩＰＯＳが閾値ＳＬ以上であれば、クランクシャフト１２０が逆転していると判定し、パルス幅ＷＩＰＯＳが閾値ＳＬ未満であれば、クランクシャフト１２０が正転していると判定する。
【０１４９】
そして、クランクシャフト１２０の正転時であれば、ステップＳ５１５へ進んで、カウンタＣＮＴＰＯＳを、回転信号ＰＯＳの発生毎にカウントアップし、カウンタＣＮＴＰＯＳが「１８」に達したときに「０」にリセットする処理を繰り返す。
【０１５０】
一方、クランクシャフト１２０の逆転を判定すると、ステップＳ５２６へ進み、カウンタＣＮＴＰＯＳの前回値ＣＮＴＰＯＳｚが０であるか否かを判断する。
【０１５１】
そして、前回値ＣＮＴＰＯＳｚが０でない場合には、ステップＳ５２７へ進み、カウンタＣＮＴＰＯＳの値を、前回値ＣＮＴＰＯＳｚよりも１だけ減少させることで、逆転によるクランク角の戻りに対応させた後、本ルーチンをそのまま終了させる。
【０１５２】
但し、ステップＳ５２７へ進んだときに、前回値ＣＮＴＰＯＳｚが「１３」であった場合には、今回の回転信号ＰＯＳが歯抜け領域の直前の回転信号ＰＯＳであると判断し、ステップＳ５２７では、カウンタＣＮＴＰＯＳを「１０」に設定する。
【０１５３】
また、前回値ＣＮＴＰＯＳｚが「０」であれば、ステップＳ５２８へ進み、カウンタＣＮＴＰＯＳの値を、正転時にカウンタＣＮＴＰＯＳを０にリセットする直前の値である「１７」にリセットする。
【０１５４】
即ち、クランクシャフト１２０の正転時において、カウンタＣＮＴＰＯＳは、・・１７→０→１→２・・・→１７→０→・・・と変化するので、逆転時には、カウンタＣＮＴＰＯＳを「０」から「１７」にステップ変化させ、「１７」から回転信号ＰＯＳの発生毎にカウントダウンさせるようにする。
【０１５５】
ステップＳ５２９では、基準クランク角信号ＲＥＦを出力する。
【０１５６】
上記ステップＳ５１４，ステップＳ５２５〜ステップＳ５２９，ステップＳ５１５〜５２４に示した、停止指令の発生時に正転・逆転を判定してカウンタＣＮＴＰＯＳを更新させる処理が、停止位置検出手段に相当し、アイドルストップ制御によって内燃機関１０１を停止させている間はＥＣＵ１１４に対する電源投入が継続され、ＥＣＵ１１４は、停止直前まで更新したカウンタＣＮＴＰＯＳを停止時のクランク角を示すデータとして記憶保持する。
【０１５７】
尚、内燃機関１０１の停止時におけるカウンタＣＮＴＰＯＳの値を、不揮発性メモリに格納することができる。
【０１５８】
次に、正転・逆転の判別に異常が生じた場合のフェイル処理、即ち、前記ステップＳ５２２における具体的な処理内容を、図１０のフローチャートに従って説明する。
【０１５９】
図１０のフローチャートは、ＥＣＵ１１４が一定時間（例えば１０ms）毎に割り込み実行するルーチンを示し、まず、ステップＳ７０１では、クランク角確定フラグＦＤＥＣが１であるか否かを判断する。
【０１６０】
クランク角確定フラグＦＤＥＣが１である場合は、始動後に回転信号ＰＯＳの歯抜け領域を検出し、この歯抜け領域を基準とする回転信号ＰＯＳのカウント（カウンタＣＮＴＰＯＳ）によって、クランク角を確定できている状態であるので、ステップＳ７０４へ進んで、カウンタＣＮＴＰＯＳに基づき燃料噴射・点火のタイミングを決定し、燃料噴射・点火を実施させる。
【０１６１】
一方、クランク角確定フラグＦＤＥＣが０であって、始動開始から未だ歯抜け領域を検出しておらず、クランク角を確定できていない場合には、ステップＳ７０２へ進む。
【０１６２】
ステップＳ７０２では、アイドルストップ制御による内燃機関１０１の自動的な再始動時であるか否かを判断する。
【０１６３】
運転者のキー操作による内燃機関１０１の始動時（手動操作による始動時）である場合は、アイドルストップ制御による内燃機関１０１の自動的な再始動時に比べて、始動応答性の要求は低く、クランキングの開始から回転信号ＰＯＳの歯抜け領域を検出するまで待って、燃料噴射・点火を開始させても、充分な始動応答性を得ることができる。
【０１６４】
そこで、アイドルストップ制御による内燃機関１０１の自動的な再始動時ではなく、運転者のキー操作による内燃機関１０１の始動時である場合には、ステップＳ７０５へ進み、燃料噴射・点火のタイミングの決定を禁止する。
【０１６５】
即ち、運転者のキー操作による内燃機関１０１の始動時である場合には、始動後に回転信号ＰＯＳの歯抜け領域を検出し、この歯抜け領域を基準とする回転信号ＰＯＳのカウント（カウンタＣＮＴＰＯＳ）によってクランク角を確定できるようになってから、換言すれば、クランク角確定フラグＦＤＥＣが１になってから、ステップＳ７０４で、カウンタＣＮＴＰＯＳに基づき燃料噴射・点火のタイミングを決定し、燃料噴射・点火を実施させる。
【０１６６】
一方、ステップＳ７０２で、アイドルストップ制御による内燃機関１０１の自動的な再始動時であると判断した場合には、ステップＳ７０３へ進む。
【０１６７】
ステップＳ７０３では、回転信号ＰＯＳのパルス幅ＷＩＰＯＳに基づくクランクシャフト１２０の正転・逆転の判別が正常であるか異常であるかを判断する。
【０１６８】
そして、正常にクランクシャフト１２０の正転・逆転を判別できる場合には、正転・逆転の判別に基づいて内燃機関１０１の停止時におけるクランク角を精度良く検出でき、また、クランク角を精度良く検出できれば、停止時における所定ピストン位置の気筒を正しく検出できる。このため、始動開始後から回転信号ＰＯＳの歯抜け領域を検出するまでの間において、停止時の位置情報に基づいてクランク角及び所定ピストン位置の気筒を精度良く推定でき、燃料噴射・点火を早期に開始させて始動応答性を向上させることができる。
【０１６９】
そこで、ステップＳ７０３（始動制御手段）で、正常にクランクシャフト１２０の正転・逆転を判別できると判断した場合には、ステップＳ７０４へ進むことで、停止時のクランク角を初期値として始動開始後のクランク角を推定した結果、及び、停止時における所定ピストン位置の気筒を基準として始動開始後に所定ピストン位置であると推定した気筒に基づき、歯抜け領域の検出前から燃料噴射・点火を行わせるようにする。
【０１７０】
一方、クランクシャフト１２０の正転・逆転の判別に異常があり、正転・逆転を誤って判断する可能性がある場合には、内燃機関１０１の停止時におけるクランク角及び所定ピストン位置の気筒の検出精度が低下し、停止時のクランク角及び所定ピストン位置の気筒を初期値として始動開始後のクランク角及び所定ピストン位置の気筒を推定すると、クランク角及び所定ピストン位置の気筒を誤判断することになってしまう。
【０１７１】
そして、誤ったクランク角及び所定ピストン位置の気筒に基づいて燃料噴射・点火を制御すると、所期のタイミングとは異なるタイミング、及び、誤った気筒で燃料噴射・点火を行ってしまって、異常燃焼（アフターバーンやバックファイヤなど）が生じ、排気性状や始動性を悪化させることになってしまう。
【０１７２】
そこで、クランクシャフト１２０の正転・逆転の判別に異常がある場合には、ステップＳ７０５（制御禁止手段）へ進み、燃料噴射・点火の制御を禁止する。従って、正転・逆転の判別に異常がある場合は、アイドルストップ制御による内燃機関１０１の自動的な再始動時であっても、運転者のキー操作による内燃機関１０１の始動時と同様に、始動後に回転信号ＰＯＳの歯抜け領域を検出し、クランク角を確定してクランク角確定フラグＦＤＥＣを１に設定するまでは、ステップＳ７０４に進むことはなく、クランク角を確定し、更に、歯抜け領域を基準とする回転信号ＰＯＳのカウント（カウンタＣＮＴＰＯＳ）によって所定ピストン位置の気筒を確定してから、燃料噴射・点火を実施させるようにする。
【０１７３】
これにより、アイドルストップ制御による内燃機関１０１の自動的な再始動時における燃料噴射・点火の開始が遅くなり、始動応答性は低下するものの、誤った気筒やタイミングで燃料噴射・点火を行ってしまうことで異常燃焼が生じることを抑制できる。
【０１７４】
尚、ステップＳ７０３で正転・逆転の判断に異常があると判断して、ステップＳ７０５へ進んだ場合には、異常と判断する前に既に決定していたタイミングでの燃料噴射・点火を中止させるものとする。
【０１７５】
図１１は、図７に示した例と同様に、実際には第１気筒の圧縮上死点前で内燃機関１０１が停止したのに、逆転を判別できなかったために、第３気筒の圧縮上死点前で内燃機関１０１が停止したと誤検出した場合において、逆転判別の異常を診断するタイミングと、該診断に基づく点火の中止処理の様子を示す。
【０１７６】
図１１に示した例では、第３気筒の圧縮上死点前で内燃機関１０１が停止しているとの記憶に基づいて、再始動時に第４気筒及び第２気筒に燃料噴射を行うと共に、停止時のカウンタＣＮＴＰＯＳの値である「６」を初期値として、始動後にカウンタＣＮＴＰＯＳをカウントアップさせている。
【０１７７】
ここで、回転信号ＰＯＳの歯抜け部分を検出した時点でのカウンタＣＮＴＰＯＳの値が、本来の「１０」ではなく「５」であることから、停止直前の逆転を精度良く判断できなかったために、停止時にカウンタＣＮＴＰＯＳの値が実際のクランク角を正確に表していなかったものと判断し、逆転判別機能の異常を判定する。
【０１７８】
そして、異常を判定した時点は、誤った停止位置判断に基づきセットした第４気筒に対する点火時期の前であるため、異常判定に基づいて第４気筒に対する点火を中止させ、吸気行程での点火によるバックファイヤの発生を回避している。
【０１７９】
前記逆転判別機能の異常を判定した時点は、同時に、クランク角が確定するタイミングであるので、それ以降は、燃料噴射・点火を精度良く制御でき、始動開始時に第４気筒及び第２気筒に対して噴射した燃料は、各気筒の圧縮上死点直前のタイミングにおける点火で着火燃焼させる。
【０１８０】
正転・逆転の判断に異常が生じた場合の対策としては、上記のように、アイドルストップ制御による再始動時に、停止時のクランク角を初期値とするクランク角の推定結果に基づく燃料噴射・点火の制御を禁止する他、アイドルストップ制御を禁止する構成とすることができる。
【０１８１】
図１２のフローチャートは、正転・逆転の判断に異常が生じた場合にアイドルストップ制御を禁止するＥＣＵ１１４の処理を示す。
【０１８２】
図１２のフローチャートは、ＥＣＵ１１４が一定時間（例えば１０ms）毎に割り込み実行するルーチンを示し、まず、ステップＳ８０１では、クランク角確定フラグＦＤＥＣが１であるか否かを判断する。
【０１８３】
そして、クランク角確定フラグＦＤＥＣが１である場合には、ステップＳ８０２へ進んで、アイドルストップ制御によって内燃機関１０１を自動停止させる条件が成立しているか否かを判断する。
【０１８４】
ここで、アイドルストップ制御による内燃機関１０１の自動停止条件が成立している場合には、ステップＳ８０３へ進んで、回転信号ＰＯＳのパルス幅ＷＩＰＯＳに基づくクランクシャフト１２０の正転・逆転の判別が正常であるか異常であるかを判断する。
【０１８５】
正転・逆転の判定を正常に行える場合には、ステップＳ８０６へ進み、燃料噴射及び点火を停止させることで、内燃機関１０１の運転を自動停止させる。
【０１８６】
ここで、停止直前に内燃機関１０１が逆転すると、回転信号ＰＯＳのパルス幅ＷＩＰＯＳに基づきクランクシャフト１２０の逆転を精度良く検出でき、停止時のクランク角及び所定ピストン位置の気筒を略正確に検出できる。従って、内燃機関１０１を自動的に再始動させる場合には、停止時のクランク角を初期値としてクランク角を推定し、かつ、停止時に所定ピストン位置であった気筒を基準に所定ピストン位置の気筒を推定することで、始動開始後に回転信号ＰＯＳの歯抜け領域を検出する前から、そのときのクランク角及び所定ピストン位置の気筒を略正確に判断でき、燃料噴射・点火のタイミングを精度良く決定して燃料噴射・点火を早期に開始させることができる。
【０１８７】
換言すれば、停止時のクランク角を略正確に検出でき、これに基づいて再始動時に早期に燃料噴射・点火を開始させることができるので、アイドルストップ制御による内燃機関１０１の自動停止を許可する。
【０１８８】
一方、正転・逆転の判別に異常が発生していて、正転・逆転を精度良く判別することができない場合には、停止直前に内燃機関１０１が逆転すると、停止時のクランク角の検出結果に誤差が生じる。
【０１８９】
従って、正転・逆転の判別に異常が発生している場合には、停止時のクランク角を初期値として推定したクランク角に基づいて燃料噴射・点火のタイミングを決定すると、燃料噴射・点火の開始は早いものの異常燃焼を発生させる可能性があり、また、再始動時に回転信号ＰＯＳの歯抜け領域を初めて検出するまで燃料噴射・点火の開始を遅らせると、異常燃焼の発生は抑制できるものの、燃料噴射・点火の開始が遅れて始動応答性が悪化してしまう。
【０１９０】
そこで、正転・逆転の判別に異常が発生している場合には、たとえアイドルストップ制御による内燃機関１０１の自動停止条件が成立していても、ステップＳ８０５（制御禁止手段）へ進んで、燃料噴射・点火を継続して実施させ、内燃機関１０１を自動停止させずに内燃機関１０１の運転を継続させる。
【０１９１】
ステップＳ８０２で、アイドルストップ制御による内燃機関１０１の自動停止条件が成立していないと判断した場合、即ち、内燃機関１０１の運転継続が要求される場合には、ステップＳ８０５へ進んで、燃料噴射・点火を継続して実施する。
【０１９２】
また、ステップＳ８０１で、クランク角確定フラグＦＤＥＣが０であると判断した場合、換言すれば、始動開始時から回転信号ＰＯＳの歯抜け領域を検出するまでの間である場合には、ステップＳ８０４へ進み、アイドルストップ制御による内燃機関１０１の自動停止状態からの再始動時であるか否かを判断する。
【０１９３】
そして、アイドルストップ制御による再始動時であれば、ステップＳ８０５へ進み、停止時のクランク角及び所定ピストン位置の気筒を初期値として推定したクランク角及び所定ピストン位置の気筒に基づく燃料噴射・点火を行わせる。
【０１９４】
逆転を精度良く検出でき、これによって停止位置を精度良く検出できる状態でアイドルストップ制御を実施するので、アイドルストップ制御で再始動させる場合に、停止位置を基準に始動直後のクランク角及び所定ピストン位置の気筒を精度良く推定でき、これによって、燃料噴射・点火を精度良く制御できるので、回転信号ＰＯＳの歯抜け部分を検出してクランク角及び所定ピストン位置の気筒を確定する前の時点から、燃料噴射・点火を行わせる。
【０１９５】
一方、アイドルストップ制御による始動時ではなく、運転者のキー操作による始動時である場合には、回転信号ＰＯＳの歯抜け部分を検出して、クランク角及び所定ピストン位置の気筒を確定してから燃料噴射・点火を開始させても、必要十分な始動応答性を得ることができるので、ステップＳ８０４からステップＳ８０６へ進んで燃料噴射・点火を禁止し、クランク角及び所定ピストン位置の気筒を確定してから、燃料噴射・点火を開始させるようにする。
【０１９６】
正転・逆転の判別に異常が発生しているために、アイドルストップ制御を禁止した場合には、アイドルストップ制御の禁止状態であることを、警告灯の点灯などによって運転者に警告することが好ましい。
【０１９７】
尚、上記実施形態では、正転・逆転判別の異常を始めて判断した時点で、直ちに警告灯の点灯などによる警告動作を行い、また、異常に対処するためのフェイル処理を実行させるようにしたが、正転・逆転判定の異常を継続して診断した場合に、故障判定を確定させ、警告灯の点灯などを行わせることができる。
【０１９８】
また、内燃機関１０１（クランクシャフト１２０）が正転する条件（例えば、クランキング中や車速，機関回転速度が上昇した状態）で、回転信号ＰＯＳのパルス幅を検出することで、パルス幅異常による正転・逆転の判別異常を診断することができ、この場合も、機関停止時のクランク角を初期値として求めたクランク角に基づく燃料噴射・点火の制御を禁止したり、アイドルストップ制御を禁止させたりすることができる。
【０１９９】
ここで、上記実施形態から把握し得る請求項以外の技術的思想について、以下に効果と共に記載する。
（イ）請求項３記載の内燃機関の制御装置において、
前記診断手段が、前記クランク角の推定値と前記基準クランク角との差が許容値よりも大きい場合に、前記正転・逆転判別手段が異常であると判定する内燃機関の制御装置。
【０２００】
上記発明によると、停止時のクランク角を基準に始動後のクランク角を推定する一方、別途基準クランク角を検出し、基準クランク角を検出したときの推定値が基準クランク角から大きくずれている場合には、正転・逆転判定の異常によって停止時のクランク角を誤って検出したものと推定する。
（ロ）請求項２記載の内燃機関の制御装置において、
前記回転信号が、前記クランクシャフトの単位角度毎のパルス列からなるパルス信号であり、かつ、前記パルス信号のパルス幅が前記クランクシャフトの正転・逆転で異なり、
前記正転・逆転判別手段が、前記回転信号のパルス幅の計測値と閾値とを比較して、前記クランクシャフトの正転・逆転を判別する内燃機関の制御装置。
【０２０１】
上記発明によると、前記クランクシャフトの単位角度毎のパルス列からなるパルス信号である回転信号のパルス幅を計測し、この計測したパルス幅と閾値とを比較することで、正転時のパルス幅であるのか、逆転時のパルス幅であるのかを判断し、以って、クランクシャフトの正転・逆転を判別する。
（ハ）請求項１〜４のいずれか１つに記載の内燃機関の制御装置において、
前記診断手段が前記正転・逆転判別手段の異常を判定した場合に、異常発生を警告する警告手段を更に備えた内燃機関の制御装置。
【０２０２】
上記発明によると、クランクシャフトの正転・逆転の判別に異常が生じると、係る異常発生を警告することで、早期の修理を促す。
（ニ）請求項３記載の内燃機関の制御装置において、
前記回転信号が、所定のクランク角で部分的に欠落するように予め設定され、
前記診断手段が、前記回転信号の欠落部分を前記回転信号の発生周期に基づいて検出し、欠落部分を基準にして基準クランク角を検出する内燃機関の制御装置。
【０２０３】
上記発明によると、単位角度毎の回転信号が部分的に欠落し、この欠落部分で回転信号の発生周期が変化するので、発生周期に基づき検出した欠落部分を基準に、基準クランク角を検出することで、回転信号から単位角度の回転と基準クランク角との双方を検出する。
【符号の説明】
【０２０４】
１０１…内燃機関、１０４…点火プラグ、１１４…ＥＣＵ（エンジン・コントロール・ユニット）、１１７…クランク角センサ、１２０…クランクシャフト、１３１…燃料噴射弁、１３３…カムセンサ、１３４…カムシャフト
【図１】
2011153586.tif 000003
【図２】
2011153586.tif 000004
【図３】
2011153586.tif 000005
【図４】
2011153586.tif 000006
【図５】
2011153586.tif 000007
【図６】
2011153586.tif 000008
【図７】
2011153586.tif 000009
【図８】
2011153586.tif 000010
【図９】
2011153586.tif 000011
【図１０】
2011153586.tif 000012
【図１１】
2011153586.tif 000013
【図１２】
2011153586.tif 000014