(57)【特許請求の範囲】
【請求項１】
エンジン始動後、所定時間以内で、且つ、エンジン温度が暖機再始動かを判断する判定値以上の場合の暖機再始動時のフィードバック補正値の上限値と下限値とを、上記暖機再始動時以外の場合に設定するフィードバック補正値の上限値と下限値よりもシフトアップした値で設定する手順と、
上記フィードバック補正値が上記下限値以下の時には、該下限値で上記フィードバック補正値を設定し、上記フィードバック補正値が上記上限値以上の時には、該上限値で上記フィードバック補正値を設定する手順と、
エンジン温度に基づいてスロットルバルブをバイパスするエアバイパス通路に介装したＩＳＣバルブの基本的な開度を示す基本特性値を設定する手順と、
上記フィードバック補正値で、少なくとも上記基本特性値を補正して上記ＩＳＣバルブの開度を設定する手順とを備えたことを特徴とするエンジンのＩＳＣバルブ制御方法。
【請求項２】
上記フィードバック補正値を積分制御のみで設定したことを特徴とする請求項１記載のエンジンのＩＳＣバルブ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＳＣバルブの開度をフィードバック制御し、またこのフィードバック制御されたＩＳＣバルブの開度設定値の許容幅をエンジン状態に応じて可変設定するエンジンのＩＳＣバルブ制御方法に関する。
【０００２】
【従来の技術】
一般に、エンジンのＩＳＣ（アイドルスピードコントロール）バルブの開度制御は、始動時制御（クランキング時）→オープンループ制御（暖機運転時など）→クローズドループ（フィードバック）制御（通常時）の順に実行し、エンジン状態に応じた最適なエンジン制御を実現している。
【０００３】
例えば特開昭５８−１５８３４３号公報には、ＩＳＣバルブの開度設定値（例えばデューティ比）を学習し、この学習値とフィードバック制御により補正した開度設定値とが異なる値になり、アイドル回転数がアイドル目標回転数と異なる値を示したとき、このアイドル回転数とアイドル目標回転数との差に対応する補正値で上記学習値を更新し、次回始動後のフィードバック制御開始時に当該学習値を初期値として用い、オープンループ制御からクローズドループ制御へ移行した直後、すなわち、フィードバック制御開始直後の制御性の改善を図っている。しかし、従来はエンジン状態に応じて上述した各制御が各々独立して実行されていたため、始動時制御からオープンループ制御へ移行する際には、初爆はするが完爆へ移行し難くなりエンジン回転数の立上りにもたつきが生じやすく、また、オープンループ制御からクローズドループ制御へ移行する際に、上述した先行技術のごとくフィードバック制御の初期値として前回の運転時に学習した学習値を用いても、オープンループ制御時の制御値と上記学習値とが独立して設定されているため、オープンループ制御時の上記ＩＳＣバルブの開度を設定する開度設定値とクローズドループ制御初期値との間に段差が生じ、フィードバック補正値が収束するまでに時間がかかり、その間、エンジン回転数が不安定になってしまう問題があった。
【０００４】
一方、上記ＩＳＣバルブの開度設定値、および、フィードバック補正値が無限に増大あるいは減少（負側をふくむ）するのを防止するため、上記フィードバック補正値および開度設定値には、それぞれ上限値、下限値が設定されている。例えば、上述した先行技術には、上記学習値と予め設定した上限値および下限値とを比較し、この学習値が上限値と下限値との間の許容範囲に収まっていない場合には、この上限値、あるいは、下限値で上記学習値を更新する技術が開示されている。
【０００５】
しかし、この上限値あるいは下限値が固定値であるため、例えば、エアコンコンプレッサが駆動しエンジン負荷が増大しても上限値にて規制されるため吸入空気量を充分に供給することが困難となる。
【０００６】
これに対処するに、例えば特開平１−２４７７２８号公報には、開度設定値の上限値をエアコンコンプレッサの容量に応じて可変設定する技術が開示されている。
【０００７】
【発明が解決しようとする課題】
しかし、上述のエアコンコンプレッサの容量に応じて可変設定する技術では、制御の上限値、下限値をエアコンコンプレッサなどの外乱のみの変動に基づいて可変設定しているため、冷却水温度を代表とするエンジン温度などエンジン自体の状態が加味されておらず、適切に制御することが困難である。
【０００８】
本発明は上記事情に鑑み、フィードバック補正値の上限値、下限値をエンジン状態を加味して適切に設定することのできるエンジンのＩＳＣバルブ制御方法を提供することを目的とする。
【０００９】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の発明は、エンジン始動後、所定時間以内で、且つ、エンジン温度が暖機再始動かを判断する判定値以上の場合の暖機再始動時のフィードバック補正値の上限値と下限値とを、上記暖機再始動時以外の場合に設定するフィードバック補正値の上限値と下限値よりもシフトアップした値で設定する手順と、上記フィードバック補正値が上記下限値以下の時には、該下限値で上記フィードバック補正値を設定し、上記フィードバック補正値が上記上限値以上の時には、該上限値で上記フィードバック補正値を設定する手順と、エンジン温度に基づいてスロットルバルブをバイパスするエアバイパス通路に介装したＩＳＣバルブの基本的な開度を示す基本特性値を設定する手順と、上記フィードバック補正値で、少なくとも上記基本特性値を補正して上記ＩＳＣバルブの開度を設定する手順とを備えたことを特徴とする。
【００１０】
請求項２記載の発明は、請求項１記載の発明において、上記フィードバック補正値を積分制御のみで設定したことを特徴とする。
【００１２】
すなわち、エンジン始動後、所定時間以内で、且つ、エンジン温度が暖機再始動かを判断する判定値以上の場合の暖機再始動時のフィードバック補正値の上限値と下限値とを、上記暖機再始動時以外の場合に設定するフィードバック補正値の上限値と下限値よりもシフトアップした値で設定し、フィードバック補正値が下限値以下の時には、該下限値でフィードバック補正値を設定し、また、フィードバック補正値が上限値以上の時には、該上限値でフィードバック補正値を設定する。また、エンジン温度に基づいてスロットルバルブをバイパスするエアバイパス通路に介装したＩＳＣバルブの基本的な開度を示す基本特性値を設定する。そして、フィードバック補正値で、少なくとも基本特性値を補正してＩＳＣバルブの開度を設定する。
【００１３】
請求項２記載の発明は、請求項１記載の発明において、フィードバック補正値を積分制御のみで設定する。
【００１５】
【発明の実施の形態】
以下、図面に基づいて本発明の実施の形態を説明する。
図面は本発明の実施の一形態を示し、図１，図２はＩＳＣバルブ制御手順を示すフローチャート、図３は補正値設定手順を示すフローチャート、図４は基本特性値設定手順を示すフローチャート、図５はアイドル目標回転数設定手順を示すフローチャート、図６はクローズド／オープンループ制御判別手順を示すフローチャート、図７，図８はエアコン補正値設定手順を示すフローチャート、図９はエアコンスイッチＯＦＦ→ＯＮ時のエアコン補正学習手順を示すフローチャート、図１０はエアコンスイッチＯＮ→ＯＦＦ時のエアコン補正学習手順を示すフローチャート、図１１，図１２はＡＴ車走行レンジ補正値設定手順を示すフローチャート、図１３，図１４は加減速補正設定手順を示すフローチャート、図１５はダッシュポット補正値設定手順を示すフローチャート、図１６はダッシュポット補正値更新手順を示すフローチャート、図１７はラジファン補正設定手順を示すフローチャート、図１８、図１９はパワステ補正値設定手順を示すフローチャート、図２０はエアコンクラッチ補正値設定手順を示すフローチャート、図２１は始動後補正初期値設定手順を示すフローチャート、図２２は始動後補正設定手順を示すフローチャート、図２３〜図２５はクローズドループ補正Ｉ分更新手順を示すフローチャート、図２６はクローズドループ補正Ｉ分学習手順を示すフローチャート、図２７はエンジン制御系の概略図、図２８は制御装置の構成図、図２９はエアコンスイッチとエアコン補正値とエンジン回転数の関係を示すタイムチャート、図３０は走行レンジ、またはＮ，Ｐレンジと、ＡＴ車走行レンジ補正とエンジン回転数の関係を示すタイムチャート、図３１はアイドルスイッチとスロットル開度と加減速補正とエンジン回転数の関係を示すタイムチャート、図３２はアイドルスイッチとエンジン回転数とダッシュポット補正値の関係を示すタイムチャート、図３３はラジエータファンＯＮ／ＯＦＦとラジファン補正の関係を示すタイムチャート、図３４はアイドル判別回転数を設定する際のヒステリシスを示すタイムチャート、図３５はパワステ転舵スイッチとパワステ補正値とエンジン回転数の関係を示すタイムチャート、図３６はエアコンスイッチとエアコンクラッチリレーとエアコンコンプレッサの容量とエアコンクラッチ補正値とエンジン回転数の関係を示すタイムチャート、図３７は始動後補正の変化を示すタイムチャート、図３８はデューティ比の変化を示すタイムチャート、図３９は始動後補正値のクローズドループ補正Ｉ分への移行を示すタイムチャート、図４０はクローズドループ補正Ｉ分の補正量と差回転との関係を示す説明図、図４１はエンジン回転数とクローズドループ補正Ｉ分の補正量とクローズドループ補正Ｉ分との関係を示すタイムチャート、図４２はクローズドループ補正Ｉ分の学習値の使用状況を示すタイムチャートである。
【００１６】
［エンジン制御系の構成］
図２７において、図中の符号１はエンジン本体で、図においては６気筒水平対向型エンジンを示す。このエンジン本体１は、シリンダブロック２がクランクシャフト１ａを中心として両側のバンク（図の右側が左バンク、左側が右バンク）に２分割されており、例えば、右バンクに＃１，＃３，＃５気筒の気筒群が配置され、左バンクに＃２，＃４，＃６気筒の気筒群が配置されている。
【００１７】
上記各バンクの各シリンダヘッド３には、それぞれ吸気ポート４が形成され、各吸気ポート４にインテークマニホルド５が連通されている。また、このインテークマニホルド５の上流に、各バンクに対応して共鳴管６ａ，６ｂが連通され、この各共鳴管６ａ，６ｂ間を結ぶ通路６ｃに可変吸気バルブ１１ｃが介装されている。なお、この共鳴管６ａ，６ｂ、通路６ｃ、および、可変吸気バルブ１１ｃで可変共鳴過給システムが構成されている。
【００１８】
さらに、上記各共鳴管６ａ，６ｂの上流がスロットルチャンバ１１ａ，１１ｂを開してサージタンク７に連通されている。
【００１９】
上記サージタンク７の上流側に、吸気管８を介してエアクリーナ９が取付けられており、このエアクリーナ９の直下流に吸入空気量センサ（図においては、ホットフィルム式エアフローメータ）１０が介装されている。
【００２０】
また、上記各スロットルチャンバ１１ａ，１１ｂに、スロットルバルブ１１ｄ，１１ｅ（いわゆる、ツインスロットルバルブ）が介装され、一方のスロットルバルブ１１ｅにスロットル開度センサ１２ａとスロットルバルブ全閉を検出するアイドルスイッチ１２ｂとが連設されている。
【００２１】
さらに、上記スロットルチャンバ１１ａ，１１ｂのスロットルバルブ１１ｄ，１１ｅの下流側が通路６ｄによって連通され、この通路６ｄと上記サージタンク７とを連通するエアーバイパス通路６ｅに、アイドルスピードコントロール（ＩＳＣ）バルブ１３が介装されている。
【００２２】
また、上記インテークマニホルド５の各気筒の各吸気ポート４の直上流側にインジェクタ１４が配設され、さらに、上記各シリンダヘッド３の各気筒毎に、その先端を燃焼室に露呈する点火プラグ１５が取付けられている。この点火プラグ１５の端子部には、点火コイル１５ａが直接取付けられ、イグナイタ１６に接続されている。
【００２３】
上記インジェクタ１４には、燃料タンク１７内に設けられたインタンク式の燃料ポンプ１８から燃料フィルタ１９を経て燃料が圧送され、プレッシャレギュレータ２０にて調圧させる。
【００２４】
また、上記シリンダブロック２に形成された冷却水通路（図示せず）にエンジン温度の一例として冷却水温ＴＷ  を検出する冷却水温センサ２１が臨まされるとともに、上記シリンダブロック２の各バンクに、それぞれ、右バンクノックセンサ２２ａ、左バンクノックセンサ２２ｂが取付けられており、上記各シリンダヘッド３の各排気ポート２３から、各バンク毎に設けられた各排気管２４ａ，２４ｂが連通されている。
【００２５】
上記各排気管２４ａ，２４ｂには、それぞれ、右バンクＯ２センサ２５ａ，左バンクＯ２センサ２５ｂが臨まされ、各Ｏ２センサ２５ａ，２５ｂの下流側に、それぞれ、触媒コンバータ２６ａ，２６ｂが介装され、さらに、各触媒コンバータ２６ａ，２６ｂの下流側合流部に、触媒コンバータ２７が介装されている。
【００２６】
一方、エンジン本体１のクランクシャフト１ａに、クランク角検出用クランクロータ２９とグループ気筒判別用クランクロータ３０とが所定間隔を開けて軸着されている。また、この各クランクロータ２９，３０の外周に被検出体である突起を検出する電磁ピックアップなどからなる第一のクランク角センサ３１，第二のクランク角センサ３２がそれぞれ対設されている。また、カムシャフト３３に軸着したカムロータ３３ａの外周にカム角センサ３４が対設されている。このカム角センサ３４は特定気筒の圧縮上死点を判別するもので、このカム角センサ３４からのカムパルスと第２のクランク角センサ３２からのグループ判別パルスとで個々の気筒を判別する。
【００２７】
なお、上記各クランクロータ２９，３０、上記カムロータ３３ａの外周には突起の代りにスリットを設けてもよく、また、両クランク角センサ３１，３２、カム角センサ３４は電磁ピックアップなどの電磁センサに限らず光センサなどでも良い。
【００２８】
［制御装置の回路構成］
一方、図２８において、符号４０はマイクロコンピュータからなる制御装置（ＥＣＵ）で、このＥＣＵ４０は点火時期制御、燃料噴射制御などを行うメインコンピュータ４１と、ノック検出処理を行う専用のサブコンピュータ４２との２つのコンピュータから構成されている。
【００２９】
また、上記ＥＣＵ４０内には定電圧回路４３が内蔵され、この定電圧回路４３から各部へ安定化電圧が供給される。この定電圧回路４３は、ＥＣＵリレー４４のリレー接点を介してバッテリ４５に接続され、上記ＥＣＵリレー４４のリレーコイルがキースイッチ４６を介して上記バッテリ４５に接続されている。また、上記バッテリ４５に燃料ポンプリレー４７のリレー接点を介して燃料ポンプ１８が接続されている。
【００３０】
上記メインコンピュータ４１は、メインＣＰＵ４８、ＲＯＭ４９、ＲＡＭ５０、記憶手段としてのバックアップＲＡＭ５０ａ、タイマ５１、シリアルインターフェース（ＳＣＩ）５２、及び、Ｉ／Ｏインターフェース５３がバスライン５４を介して互いに接続されている。また、上記バックアップＲＡＭ５０ａには上記定電圧回路４３を介して常時バックアップ電圧が印加されている。
【００３１】
上記Ｉ／Ｏインターフェース５３の入力ポートには、吸入空気量センサ１０，スロットル開度センサ１２ａ、冷却水温センサ２１、右バンクＯ２センサ２５ａ、左バンクＯ２センサ２５ｂ、大気圧センサ５５、及び車速センサ５６がＡ／Ｄ変換器５７ａを介して接続されているとともに、アイドルスイッチ１２ｂ、第１，第２のクランク角センサ３１，３２、カム角センサ３４が接続され、また、上記バッテリ４５が接続されてバッテリ電圧がモニタされる。
【００３２】
さらに、上記Ｉ／Ｏインターフェース５３の入力ポートには、転舵状態を検出するパワーステアリング転舵スイッチ５８、オートマチックトランスミッションのセレクトレバーがニュートラルにセットされているかを検出するニュートラルスイッチ５９、パーキングにセットされているかを検出するパーキングスイッチ６０、始動状態を検出するスタータスイッチ６１が接続されている。
【００３３】
また、上記Ｉ／Ｏインターフェース５３の出力ポートには、イグナイタ１６が接続され、さらにＩＳＣバルブ１３、インジェクタ１４、ラジエータファン６２の駆動を制御するラジエータファンリレー６３のリレーコイル、可変容量エアコンコンプレッサ６４のマグネットクラッチ６４ａの接／断を操作するエアコンクラッチリレー６５のリレーコイルが駆動回路５７ｂを介して接続されている。
【００３４】
一方、サブコンピュータ４２は、サブＣＰＵ６６、ＲＯＭ６７、ＲＡＭ６８、タイマ６９、ＳＣＩ７０、及び、Ｉ／Ｏインターフェース７１がバスライン７２を介して互いに接続されて構成されている。
【００３５】
上記Ｉ／Ｏインターフェース７１の入力ポートには、上記第１，第２のクランク角センサ３１，３２、カム角センサ３４が接続されているとともに、右バンクノックセンサ２２ａ、左バンクノックセンサ２２ｂが、それぞれアンプ７３、周波数フィルタ７４、Ａ／Ｄ変換器７５を介して接続されている。
【００３６】
上記各ノックセンサ２２ａ，２２ｂは、例えばノック振動とほぼ同じ固有周波数を持つ振動子と、この振動子の振動加速度を検知して電気信号に変換する圧電素子とから構成される共振形のノックセンサで、エンジンの爆発行程における燃焼圧力波によりシリンダブロックなどに伝わる振動を検出し、その振動波形をノック信号として出力する。
【００３７】
このノック信号は上記アンプ７３により所定のレベルに増幅された後、上記周波数フィルタ７４により必要な周波数成分が抽出され、Ａ／Ｄ変換器７５でアナログデータからデジタルデータに変換される。
【００３８】
上記メインコンピュータ４１と上記サブコンピュータ４２とは、ＳＣＩ５２，７０を介したシリアル回線により接続されているとともに、上記サブコンピュータ４２のＩ／Ｏインターフェース７１の出力ポートが、上記メインコンピュータ４１のＩ／Ｏインターフェース５３の入力ポートに接続されている。
【００３９】
上記メインコンピュータ４１では、クランクパルスに基づいて点火時期などを演算し、所定の点火時期に達すると、該当気筒に点火信号を出力し、一方、上記サブコンピュータ４２では、クランクパルスの入力間隔からエンジン回転数を算出し、このエンジン回転数とエンジン負荷とに基づいて各ノックセンサ２２ａ，２２ｂからのノック信号のサンプル区間を設定し、このサンプル区間で各ノックセンサ２２ａ，２２ｂからのノック信号を高速にＡ／Ｄ変換して振動波形を忠実にデジタルデータに変換し、ノック発生の有無を判定する。
【００４０】
このノック発生の有無の判定結果は、サブコンピュータ４２のＩ／Ｏインターフェース７１に出力され、ノック発生の場合には、ＳＣＩ７０，５２を介したシリアル回線を通じてサブコンピュータ４２から上記メインコンピュータ４１にノックデータが読込まれ、上記メインコンピュータ４１では、このノックデータに基づいて直ちに該当気筒の点火時期を遅らせ、ノックを回避する。
【００４１】
また、符号８１はエアコン制御ユニットで、ＣＰＵ８２、ＲＯＭ８３、ＲＡＭ８４、Ｉ／Ｏインターフェース８５がバスライン８６を介して接続され、イグニッションスイッチ８７を介してバッテリ４５に接続する定電圧回路８８から各部に安定化電圧が供給される。
【００４２】
上記Ｉ／Ｏインターフェース８５の入力ポートには、エアコンスイッチ８９、上記メインコンピュータ４１のＩ／Ｏインターフェース５３が接続されており、上記メインコンピュータ４１から上記エアコン制御ユニット８１へ上記可変容量エアコンコンプレッサ６４に対する要求容量（ＤＵＴＹ）信号を出力する。
【００４３】
また、上記Ｉ／Ｏインターフェース８５の出力ポートには、上記可変容量エアコンコンプレッサ６４に設けた可変容量制御バルブ（（図示せず）が接続されて、容量（ＤＵＴＹ）信号を出力するとともに、メインコンピュータ４１のＩ／Ｏインターフェース５３の入力ポートに接続されて、エアコンスイッチ８９がＯＮしたかどうかの信号が出力される。
【００４４】
［動作］
次に、上記構成による実施例のＩＳＣバルブ１３の制御動作について説明する。
【００４５】
（ＩＳＣバルブ制御メインルーチン）
図１，図２はメインコンピュータ４１で実行するＩＳＣバルブ制御手順を示すメインルーチンで、所定演算周期ごとに実行される。
【００４６】
まず、ステップ（以下「Ｓ」と略称）１０１  で、モニタしたバッテリ電圧に基づきバッテリ電圧補正値ＩＳＣＶＢを設定する。バッテリ電圧が低いとＩＳＣバルブ１３が所定開度に達しなくなるため、上記バッテリ電圧補正値ＩＳＣＶＢはバッテリ電圧が低いほど大きな値に設定される。
【００４７】
そして、Ｓ１０２で大気圧補正係数ＫＡＬＴを設定する。大気圧が低いと吸入空気流量も相対的に低くなるため、上記大気圧補正係数ＫＡＬＴは大気圧が低いほど大きな値に設定される。
【００４８】
その後、Ｓ１０３へ進むと、始動判別を行うべくスタータスイッチ６１がＯＮかを判断し、ＯＮの場合始動中と判断してＳ１０４へ進み、ＯＦＦの場合エンジン停止あるいはエンジン稼動中と判断してＳ１０５へ進む。
【００４９】
Ｓ１０５では第１のクランク角センサ３１出力により検出したエンジン回転数ＮＥに基づきエンジン停止中かを判断し、ＮＥ＝０（エンジン停止中）の場合Ｓ１０４へ進み、ＮＥ≠０（エンジン稼動中）の場合Ｓ１１４へ進む。
【００５０】
Ｓ１０３あるいはＳ１０５で、始動中あるいはエンジン停止中と判断された場合には、Ｓ１０４へ進み、始動時制御処理が実行される。Ｓ１０４へ進むと、冷却水温センサ２１で検出した冷却水温ＴＷに基づき始動時特性値テーブルＴＩＳＣＳＴを補間計算付きで参照して始動時特性値ＩＳＣＳＴを設定する。
【００５１】
そして、Ｓ１０６へ進み、上記始動時特性値ＩＳＣＳＴとバッテリ電圧補正値ＩＳＣＶＢとを加算した値に上記大気圧補正係数ＫＡＬＴを乗算してＩＳＣバルブ１３の開度設定値であるデューティ比ＩＳＣＯＮを設定する（ＩＳＣＯＮ←（ＩＳＣＳＴ＋ＩＳＣＶＢ）×ＫＡＬＴ）。
【００５２】
その後、Ｓ１０７で、後述するクローズド／オープンループ制御判別サブルーチンで用いるエンジン始動後の経過時間が設定時間ＴＭＡＳＩ［ＳＥＣ］に達したかを判別するための始動後経過時間判別カウント値ＣＯＵＮＴＳＴ（ダウンカウンタ）に、設定時間ＴＭＡＳＩに相当する設定値ＣＯＵＮＴＳＴをセット（ＣＯＵＮＴＳＴ←ＣＯＵＮＴＴＭＡＳＩ）した後、Ｓ１０８へ進み、後述する始動後補正ＩＳＣＳＤ、クローズドループ補正Ｉ分設定の際に用いる始動時／通常時制御判別フラグＦＬＡＧＳＴを、現在始動時制御を実行していることを示すためセット（ＦＬＡＧＳＴ←１）した後Ｓ１０９へ進む。
【００５３】
Ｓ１０９では、上記デューティ比ＩＳＣＯＮとオープンループ制御時の下限値ＩＭＩＮＯＰとを比較し、ＩＳＣＯＮ≦ＩＭＩＮＯＰの場合、設定したデューティ比ＩＳＣＯＮが下限値以下であるため、Ｓ１１０で、上記デューティ比ＩＳＣＯＮを上記下限値ＩＭＩＮＯＰで設定し（ＩＳＣＯＮ←ＩＭＩＮＯＰ）、Ｓ１３８へ進む。
【００５４】
一方、上記Ｓ１０９で、ＩＳＣＯＮ＞ＩＭＩＮＯＰの場合にはＳ１１１へ進み、上記冷却水温ＴＷに基づき上限値テーブルＴＢＭＸＯＰを参照して上限値ＩＭＡＸＯＰを設定する。この上限値テーブルＴＢＭＸＯＰには、冷却水温ＴＷが低ければ始動性がより困難になるため高い値の上限値ＩＭＡＸＯＰが格納されている。
【００５５】
そして、Ｓ１１２で上記デューティ比ＩＳＣＯＮと上記上限値ＩＭＡＸＯＰ  とを比較し、ＩＳＣＯＮ≧ＩＭＡＸＯＰの場合、Ｓ１１３へ進み、デューティ比ＩＳＣＯＮを上記上限値ＩＭＡＸＯＰで固定し（ＩＳＣＯＮ←ＩＭＡＸＯＰ）、Ｓ１３８へ進む。また、ＩＳＣＯＮ＜ＩＭＡＸＯＰの場合、そのままＳ１３８へ進む。
【００５６】
一方、上記Ｓ１０５で、ＮＥ≠０（エンジン稼動中）と判断された場合にはＳ１１４へ進み、通常時制御処理が実行される。Ｓ１１４へ進むと、始動時／通常時制御判別フラグＦＬＡＧＳＴをクリア（ＦＬＡＧＳＴ←０、通常時制御）し、Ｓ１１５で基本特性値設定サブルーチン（詳細は後述する）を実行して基本特性値ＩＳＣＴＷを設定し、Ｓ１１６でアイドル目標回転数設定サブルーチン（詳細は後述する）を実行してアイドル目標回転数ＮＳＥＴ  を設定し、Ｓ１１７でクローズド／オープンループ制御判別サブルーチン（詳細は後述する）を実行してクローズドループ制御かオープンループ制御かを判別した後、Ｓ１１８へ進む。
【００５７】
Ｓ１１８では、後述する補正値設定ルーチン（５１．２ｍｓｅｃ毎に割込み実行）で設定したエアコン補正値ＩＳＣＡＣを読出し、Ｓ１１９で上記補正値設定ルーチンで設定したＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳにて当該メインルーチンで使用するギヤ位置補正値ＩＳＣＡＴを設定し（ＩＳＣＡＴ←ＩＳＣＡＴＤＳ）、Ｓ１２０で上記補正値設定ルーチンで設定した加減速補正ＤＳＨＰＴで加減速補正値ＩＳＣＴＲを設定し（ＩＳＣＴＲ←ＤＳＨＰＴ）、Ｓ１２１で始動後補正値ＩＳＣＡＳを後述する各割込みルーチンで設定した始動後補正ＩＳＣＳＤで設定し（ＩＳＣＡＳ←ＩＳＣＳＤ）、Ｓ１２２で上記補正値設定ルーチンで更新したダッシュポット補正値ＤＨＥＮＢを読出し、Ｓ１２３で後述するクローズドループ補正Ｉ分更新手順（１０ｍｓｅｃ毎に割込み実行）で設定したフィードバック補正値としてのクローズドループ補正Ｉ分ＩＳＣＩ  にて当該メインルーチンで使用するクローズドループ補正値ＩＳＣＣＬを設定する（ＩＳＣＣＬ←ＩＳＣＩ）。
【００５８】
そして、Ｓ１２４で上記補正値設定ルーチンで設定したラジファン補正ＩＳＣＲＡＳにて、当該メインルーチンで使用するラジファン補正値ＩＳＣＲＡを設定し（ＩＳＣＲＡ←ＩＳＣＲＡＳ）、また、Ｓ１２５で上記補正値設定ルーチンで設定したパワステ補正値ＩＳＣＰＳを読出し、Ｓ１２６で上記補正値設定ルーチンで設定したエアコンクラッチ補正値ＩＳＣＣＬＨを読み出す。
【００５９】
その後、Ｓ１２７で上記基本特性値ＩＳＣＴＷ、エアコン補正値ＩＳＣＡＣ、ギヤ位置補正値ＩＳＣＡＴ、加減速補正値ＩＳＣＴＲ、始動後補正値ＩＳＣＡＳ、ダッシュポット補正値ＤＨＥＮＢ、クローズドループ補正値ＩＳＣＣＬ、ラジファン補正値ＩＳＣＲＡ、パワステ補正値ＩＳＣＰＳ、エアコンクラッチ補正値ＩＳＣＣＬＨ、バッテリ電圧補正値ＩＳＣＶＢを加算した値に大気圧補正係数ＫＡＬＴを乗算してデューティ比ＩＳＣＯＮを次式に示す如く設定する。
【００６０】
ＩＳＣＯＮ←（ＩＳＣＴＷ＋ＩＳＣＡＣ＋ＩＳＣＡＴ＋ＩＳＣＴＲ＋ＩＳＣＡＳ＋ＤＨＥＮＢ＋ＩＳＣＣＬ＋ＩＳＣＲＡ＋ＩＳＣＰＳ＋ＩＳＣＣＬＨ＋ＩＳＣＶＢ）×ＫＡＬＴ
そして、Ｓ１２８でクローズドループ制御選択時に１にセットされるクローズド／オープンループ制御判別フラグＦＬＡＧＣＬの値を参照し、ＦＬＡＧＣＬ＝１でクローズドループ制御が選択されている場合Ｓ１２９へ進み、ＦＬＡＧＣＬ＝０でオープンループ制御が選択されている場合には、始動時と同様のデューティ制限を実行すべくＳ１０９へ戻る。
【００６１】
Ｓ１２９へ進むと、上記デューティ比ＩＳＣＯＮとクローズドループ制御時の下限値ＩＭＩＮＣＬとを比較し、ＩＳＣＯＮ≦ＩＭＩＮＣＬの場合Ｓ１３０へ進み上記デューティ比ＩＳＣＯＮを上記下限値ＩＭＩＮＣＬに設定して（ＩＳＣＯＮ←ＩＭＩＮＣＬ）、Ｓ１３８へ進む。上記下限値ＩＭＩＮＣＬ、あるいはＩＭＩＮＯＰは、デューティ比ＩＳＣＯＮが不必要に低下してＩＳＣバルブ１３の開度が低下しＩＳＣバルブ１３による空気流量低下に伴いアイドル回転数が低下することによるフィーリングの悪化およびエンストを防止するために設定するものである。
【００６２】
一方、Ｓ１２９で、ＩＳＣＯＮ＞ＩＭＩＮＣＬと判断されてＳ１３１へ進むと、冷却水温ＴＷに基づきテーブルＴＢＭＸＣＬを補間計算付で参照して上限基本値ＩＭＡＸを設定する。この上限基本値ＩＭＡＸはデューティ比ＩＳＣＯＮが不必要に大きくなり、アイドル回転数が過回転になるのを防止するために設定するもので、テーブル上においては、冷却水温ＴＷが高いほど基本特性値ＩＳＣＴＷが小さくなり、したがってデューティ比ＩＳＣＯＮも小さくなるため、上限基本値ＩＭＡＸも冷却水温ＴＷが高くなるに従い小さな値が格納されている。
【００６３】
その後、Ｓ１３２へ進むとエアコンスイッチ８９がＯＮかを判断し、ＯＮ状態の場合Ｓ１３３へ進み上限基本値エアコン補正ＩＤ１を設定値ＩＳＣＢＡＣで設定し（ＩＤ１←ＩＳＣＢＡＣ）、また、ＯＦＦ状態の場合Ｓ１３４へ進み上限基本値エアコン補正ＩＤ１を０に設定する（ＩＤ１←０）。
【００６４】
そして、Ｓ１３５で上記上限基本値ＩＭＡＸ  に上限基本値エアコン補正ＩＤ１を加算して上限値ＩＭＡＸＣＬ  を設定する（ＩＭＡＸＣＬ  ←ＩＭＡＸ  ＋ＩＤ１）。エアコンが駆動状態ではアイドルアップされているために上限値ＩＭＡＸＣＬ  も上限基本値エアコン補正ＩＤ１（設定値ＩＳＣＢＡＣ  ）分だけ高く設定する。
【００６５】
そして、Ｓ１３６で上記デューティ比ＩＳＣＯＮと上記上限値ＩＭＡＸＣＬとを比較し、ＩＳＣＯＮ≧ＩＭＡＸＣＬの場合Ｓ１３７へ進みデューティ比ＩＳＣＯＮを上記上限値ＩＭＡＸＣＬに設定して（ＩＳＣＯＮ←ＩＭＡＸＣＬ）、Ｓ１３８へ進む。また、ＩＳＣＯＮ＜ＩＭＡＸＣＬの場合、デューティ比ＩＳＣＯＮが許容範囲に収まっている（ＩＭＩＮＣＬ＜ＩＳＣＯＮ＜ＩＭＡＸＣＬ）ためそのままＳ１３８へ進む。
【００６６】
その後、Ｓ１１０，Ｓ１１３，Ｓ１３０，Ｓ１３６  、あるいは、Ｓ１３７からＳ１３８へ進むと、上記各ステップで設定したデューティ比ＩＳＣＯＮに対応するデューティ信号ＤＵＴＹをＩＳＣバルブ１３のコイルへ出力して（ＤＵＴＹ←ＩＳＣＯＮ）、ルーチンを抜ける。
【００６７】
なお、ＩＳＣバルブ１３に対するデューティ信号ＤＵＴＹは、次回ルーチン実行時に新たにデューティ信号ＤＵＴＹが設定されるまでの間、出力保持される。
（補正値設定ルーチン）
図３は設定時間毎、例えば５１．２ｍｓｅｃ毎に割込み実行される補正値設定ルーチンである。
【００６８】
まず、Ｓ２０１でエアコン補正値設定サブルーチン（詳細は後述）を実行してエアコン補正値ＩＳＣＡＣを設定し、Ｓ２０２でＡＴ車走行レンジ補正値設定サブルーチン（詳細は後述する）を実行してＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを設定し、Ｓ２０３で加減速補正設定サブルーチン（詳細は後述）を実行して加減速補正ＤＳＨＰＴを設定し、Ｓ２０４でダッシュポット補正値更新サブルーチン（詳細は後述）を実行してダッシュポット補正値ＤＨＥＮＢを更新し、Ｓ２０５でラジファン補正設定サブルーチン（詳細は後述）を実行してラジファン補正ＩＳＣＲＡＳを設定し、Ｓ２０６でパワステ補正値設定サブルーチン（詳細は後述）を実行してパワステ補正値ＩＳＣＰＳを設定し、Ｓ２０７でエアコンクラッチ補正値設定サブルーチン（詳細は後述）を実行してエアコンクラッチ補正値ＩＳＣＣＬＨを設定してルーチンを抜ける。
【００６９】
（基本特性値設定サブルーチン）
図４はメインルーチンにおいて実行（Ｓ１１５参照）される基本特性値ＩＳＣＴＷ設定のサブルーチンで、基本特性値ＩＳＣＴＷを放置（停車状態）暖機と走行暖機とに区別して設定する。
【００７０】
まず、Ｓ３０１〜Ｓ３０３で車輌が完全に停車状態かどうかを判断する。Ｓ３０１ではアイドルスイッチ１２ｂがＯＮかどうかを判断し、ＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）の場合Ｓ３０２へ進み、ＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）の場合Ｓ３０５へ進む。
【００７１】
Ｓ３０２ではパーキングスイッチ６０がＯＮ（セレクトレバーがＰレンジにセットされている状態）の場合Ｓ３０３へ進み、ＯＦＦの場合Ｓ３０５へ進む。
【００７２】
Ｓ３０３では車速センサ５６で検出した車速ＶＳＰに基づき車速ＶＳＰが０かを判断し、ＶＳＰ＝０（停車状態）の場合Ｓ３０４へ進み、ＶＳＰ≠０（走行状態）の場合Ｓ３０５へ進む。
【００７３】
Ｓ３０４へ進むと、放置／走行暖機判別フラグＦＬＡＧＴＩＳをセットし（ＦＬＡＧＴＩＳ←１，放置暖機）、Ｓ３０６で冷却水温ＴＷに基づき放置暖機基本特性値テーブルＴＩＳＴＷＳを補間計算付きで参照して基本特性値ＩＳＣＴＷを設定した後、ルーチンを抜ける。
【００７４】
放置暖機の基本特性値ＩＳＣＴＷは、変速機がＰレンジにシフトされており、完全に車輌が停止した状態であるため、ＩＳＣバルブ１３の開度を大きくしてＩＳＣバルブ１３によって吸入空気量を増大させエンジン回転数を高めエンジン暖機完了時間を短縮させるため走行暖機よりも高い値に設定されている。なお、燃料消費率およびフィーリングを考慮しておのずと上限があるが、実験などから最適な基本特性値ＩＳＣＴＷを冷却水温ＴＷをパラメータとして求めテーブル化してＲＯＭ４９にストアしておく。
【００７５】
一方、Ｓ３０１，Ｓ３０２  ，あるいは、Ｓ３０３からＳ３０５へ進むと放置／走行暖機判別フラグＦＬＡＧＴＩＳをクリアし（ＦＬＡＧＴＩＳ←０、走行暖機）、Ｓ３０７で冷却水温ＴＷ  に基づき走行暖機基本特性値テーブルＴＩＳＴＷＲを補間計算付きで参照して基本特性値ＩＳＣＴＷを設定した後、ルーチンを抜ける。
【００７６】
走行暖機は、変速機がＤレンジ（１速，２速…を含む）、あるいは、Ｎレンジにシフトされた状態であり、アクセル踏込み、および走行時の違和感を防ぐため実験により走行暖機時の最適な基本特性値ＩＳＣＴＷを冷却水温ＴＷ  をパラメータとして求めＲＯＭ４９にテーブル化してストアしておくもので、放置暖機よりも低い値に設定されている。
【００７７】
（アイドル目標回転数設定サブルーチン）
図５はメインルーチンにおいて実行（Ｓ１１６参照）されるアイドル目標回転数ＮＳＥＴ設定のサブルーチンである。
【００７８】
まず、Ｓ４０１で放置／走行暖機判別フラグＦＬＡＧＴＩＳの値を参照し、ＦＬＡＧＴＩＳ＝１（放置暖機）の場合Ｓ４０２へ進み、ＦＬＡＧＴＩＳ＝０（走行暖機）の場合Ｓ４０３へ進む。
【００７９】
Ｓ４０２へ進むと、冷却水温ＴＷに基づき放置暖機時目標回転数テーブルＴＮＳＥＴＳを補間計算付きで参照して放置暖機時目標回転数ＮＳＥＴＳを設定し、Ｓ４０４でＲＡＭ５０の所定アドレスに格納されているアイドル目標回転数ＮＳＥＴを上記放置暖機時目標回転数ＮＳＥＴＳにて設定した後（ＮＳＥＴ←ＮＳＥＴＳ）、Ｓ４０６へ進む。
【００８０】
上記放置暖機時目標回転数テーブルＴＮＳＥＴＳはＲＯＭ４９に格納されているもので、各領域には予め実験などから求めた最適な目標回転数ＮＳＥＴＳが格納されている。また、上記放置暖機時は変速機がＰレンジにシフトされており、完全に車輌が停止した状態であるため、暖機時間を短縮すべく各領域の目標回転数ＮＳＥＴＳは後述する走行暖機時目標回転数ＮＳＥＴＲよりも高い値に設定されている。
【００８１】
一方、上記Ｓ４０１で走行暖機（ＦＬＡＧＴＩＳ＝０）と判断されてＳ４０３へ進むと、冷却水温ＴＷに基づき走行暖機時目標回転数テーブルＴＮＳＥＴＲを補間計算付きで参照して走行暖機時の目標回転数ＮＳＥＴＲを設定し、Ｓ４０５へ進みＲＡＭ５０の所定アドレスに格納されているアイドル目標回転数ＮＳＥＴを上記走行暖機時目標回転数ＮＳＥＴＲに設定した後（ＮＳＥＴ←ＮＳＥＴＲ）、Ｓ４０６へ進む。
【００８２】
上記走行暖機時目標回転数テーブルＴＮＳＥＴＲはＲＯＭ４９に格納されているもので、目標回転数ＮＳＥＴＲを冷却水温ＴＷ  をパラメータとして求めたものであり、放置暖機よりも低い値に設定されている。
【００８３】
そして、Ｓ４０４あるいはＳ４０５からＳ４０６へ進むと、ニュートラルスイッチ５９がＯＦＦ（セレクトレバーがＮレンジ以外にセット）かを判断し、ＯＦＦの場合Ｓ４０７へ進み、ＯＮの場合変速機に動力が伝達されておらずエンジン１に負荷がかかってないためＳ４０９へ進む。
【００８４】
また、Ｓ４０７へ進むとパーキングスイッチ６０がＯＦＦ（セレクトレバーがＰレンジ以外にセット）かを判断し、ＯＦＦの場合セレクトレバーがＤレンジ、１速、２速などの走行レンジにシフトされてエンジンに負荷がかかっていると判断してＳ４０８へ進み、また、ＯＮの場合セレクトレバーがＰレンジにシフトされており、エンジン１に負荷がかかっていないためＳ４０９へ進む。
【００８５】
上記Ｓ４０７からＳ４０８へ進むと、放置／走行暖機判別フラグＦＬＡＧＴＩＳの値を参照し、ＦＬＡＧＴＩＳ＝０（走行暖機）の場合Ｓ４１０へ進み、ＦＬＡＧＴＩＳ＝１（放置暖機）の場合Ｓ４１１へジャンプする。
【００８６】
Ｓ４１０へ進むと、走行中であるためアイドル目標回転数ＮＳＥＴを設定値ＤＮＡＴ分シフトアップすべく、上記Ｓ４０３で設定した目標回転数ＮＳＥＴＲに設定値ＤＮＡＴを加算した値でＲＡＭ５０の所定アドレスに格納されている上記アイドル目標回転数ＮＳＥＴを設定し（ＮＳＥＴ←ＮＳＥＴＲ＋ＤＮＡＴ）、Ｓ４１１へ進む。
【００８７】
Ｓ４１１へ進むとエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合Ｓ４１２へ進み、予め設定した走行レンジエアコンＯＮ時目標回転数下限値ＤＡＲＣＯＮと上記アイドル目標回転数ＮＳＥＴとを比較し、ＮＳＥＴ≦ＤＡＲＣＯＮの場合Ｓ４１３へ進み、上記アイドル目標回転数ＮＳＥＴをエアコン負荷に対処するための下限リミッタである上記走行レンジエアコンＯＮ時目標回転数下限値ＤＡＲＣＯＮにて設定した後（ＮＳＥＴ←ＤＡＲＣＯＮ）、ルーチンを抜ける。
【００８８】
また、上記Ｓ４１１でエアコンスイッチ８９がＯＦＦと判断され、あるいはＳ４１２でＮＳＥＴ＞ＤＡＲＣＯＮと判断された場合にはそのままルーチンを抜ける。
【００８９】
一方、Ｓ４０６あるいはＳ４０７からＳ４０９へ進むと、エアコンスイッチ８９がＯＮかを判断し、ＯＮの場合Ｓ４１４へ進みアイドル目標回転数ＮＳＥＴと予め設定したＮ，ＰレンジエアコンＯＮ時目標回転数下限値ＮＡＲＣＯＮとを比較し、ＮＳＥＴ≦ＮＡＲＣＯＮの場合Ｓ４１５へ進み、上記アイドル目標回転数ＮＳＥＴをエアコンＯＮ時の負荷に対処するための下限リミッタであるＮ，ＰレンジエアコンＯＮ時目標回転数ＮＡＲＣＯＮにて設定した後（ＮＳＥＴ←ＮＡＲＣＯＮ）、ルーチンを抜ける。また、Ｓ４０９でエアコンスイッチ８９がＯＦＦと判断され、あるいは、Ｓ４１４でＮＳＥＴ＞ＮＡＲＣＯＮと判断された場合、そのままルーチンを抜ける。
【００９０】
（クローズド／オープンループ制御判別サブルーチン）
図６はメインルーチンにおいて実行（Ｓ１１７参照）されるクローズド／オープンループ制御判別サブルーチンである。まず、Ｓ５０１で始動後設定時間ＴＭＡＳＩ［ＳＥＣ］経過したかを判別すべく、始動後経過時間判別カウント値ＣＯＵＮＴＳＴの値を参照し、ＣＯＵＮＴＳＴ＝０の場合、即ち、始動後設定時間経過したと判断した場合Ｓ５０２へ進み、ＣＯＵＮＴＳＴ≠０の場合Ｓ５０３へ進み、始動後経過時間判別カウント値ＣＯＵＮＴＳＴをカウントダウンし（ＣＯＵＮＴＳＴ←ＣＯＵＮＴＳＴ−１）、エンジン始動後、設定時間を経過しておらずエンジン回転数が未だ不安定と推定されるためオープンループ制御を選択すべくＳ５２７へジャンプしてクローズド／オープンループ制御判別フラグＦＬＡＧＣＬをクリアしてルーチンを抜ける。
【００９１】
一方、Ｓ５０２へ進むとアイドルスイッチ１２ｂがＯＮかを判断し、ＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）の場合Ｓ５０４へ進み、ＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）の場合、オープンループ制御を選択すべくＳ５２７へジャンプする。
【００９２】
また、上記Ｓ５０２からＳ５０４へ進むとニュートラルスイッチ５９がＯＮかを判断し、ＯＦＦの場合Ｓ５０５へ進みパーキングスイッチ６０がＯＮかを判別し、ＯＮの場合Ｓ５０９へ進み、ＯＦＦの場合Ｓ５０６へ進む。
【００９３】
Ｓ５０４およびＳ５０５でニュートラルスイッチ５９、パーキングスイッチ６０が共にＯＦＦであり、セレクトレバーがＮレンジ、Ｐレンジ以外のレンジ、すなわち、走行レンジにセットされていると判断されてＳ５０６へ進むと、ニュートラルスイッチ５９、あるいは、パーキングスイッチ６０がＯＮ後、すなわち、Ｐ，Ｎレンジ移行後の経過時間が設定時間ＡＴＣ［ＳＥＣ］に達したかを判別するためのＰ，Ｎレンジ移行後経過時間判別カウント値ＣＯＵＮＴＡＴ（ダウンカウンタ）に、上記設定時間ＡＴＣに相当する設定値ＣＯＵＮＴＡＴＣをセットした後Ｓ５０７へ進み、車速センサ５６で検出した車速ＶＳＰと予め設定した走行時クローズド／オープンループ制御を判別する車速ＶＳＰＦＢＡとを比較し、ＶＳＰ＜ＶＳＰＦＢＡの場合Ｓ５０８へ進み、ＶＳＰ≧ＶＳＰＦＢＡの場合オープンループ制御を選択すべくＳ５２７へ進む。そして、Ｓ５０８へ進むと第１のクランク角センサ３１出力に基づき検出したエンジン回転数ＮＥと予め設定したクローズド／オープンループ制御判別エンジン回転数ＲＰＭＦＢとを比較し、ＮＥ＜ＲＰＭＦＢの場合Ｓ５１３へ進み、ＮＥ≧ＲＰＭＦＢの場合オープンループ制御を選択すべくＳ５２７へ進む。
【００９４】
また、Ｎレンジ、あるいはＰレンジと判別されて上記Ｓ５０４あるいはＳ５０５からＳ５０９へ進むとＰ，Ｎレンジ移行後経過時間判別カウント値ＣＯＵＮＴＡＴの値を参照し、ＣＯＵＮＴＡＴ＝０の場合走行レンジからＰレンジ、あるいは、Ｎレンジに移行した後設定時間ＡＴＣ［ＳＥＣ］経過したと判断してＳ５１０へ進む。
【００９５】
一方、Ｓ５０９でＣＯＵＮＴＡＴ≠０と判断されてＳ５１１へ進むと上記Ｐ，Ｎレンジ移行後経過時間判別カウント値ＣＯＵＮＴＡＴをカウントダウンし（ＣＯＵＮＴＡＴ←ＣＯＵＮＴＡＴ−１）、走行レンジからＰ，Ｎレンジへ移行後、設定時間が経過しておらず、エンジン負荷急変に伴い未だエンジン回転数が安定していないと推定し、Ｓ５２７へジャンプしてオープンループ制御を選択する。
【００９６】
また、Ｓ５０９でＣＯＵＮＴＡＴ＝０と判断されてＳ５１０へ進むと車速センサ５６で検出した車速ＶＳＰと予め設定した停車時クローズド／オープンループ制御を判断する車速ＶＳＰＯＰＡとを比較し、ＶＳＰ≧ＶＳＰＯＰＡの場合Ｓ５１２へ進み、上記エンジン回転数ＮＥと前述のアイドル目標回転数設定サブルーチンで設定したアイドル目標回転数ＮＳＥＴに設定値ＮＣＬＯＰを加算した値とを比較し、ＮＥ＜ＮＳＥＴ＋ＮＣＬＯＰの場合Ｓ５１３へ進み、また、ＮＥ≧ＮＳＥＴ＋ＮＣＬＯＰの場合、＄オープンループ制御を選択すべくＳ５２７へジャンプする。
【００９７】
また、上記Ｓ５１０でＶＳＰ＜ＶＳＰＯＰＡ  の場合、あるいは、Ｓ５１２でＮＥ＜ＮＳＥＴ＋ＮＣＬＯＰの場合には、Ｓ５１３へ進み、エンジン回転数ＮＥとアイドル目標回転数ＮＳＥＴに設定値ＤＮＡＣＦを減算した値とを比較し、ＮＥ＜ＮＳＥＴ−ＤＮＡＣＦの場合にはＳ５１７へ進み、ＮＥ≧ＮＳＥＴ−ＤＮＡＣＦの場合にはＳ５１４へ進む。Ｓ５１４ではエアコンスイッチ８９がＯＦＦか否かを判別し、エアコンスイッチ８９がＯＮの場合には、Ｓ５１５で、エアコンＯＮ→ＯＦＦ後の経過時間が設定時間ＡＯＦＦ［ＳＥＣ］に達したかを判別するためのエアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴＡ（ダウンカウンタ）に、上記設定時間ＡＯＦＦに相当する設定値ＣＯＵＮＴＡＯＦＦをセットし（ＣＯＵＮＴＡ←ＣＯＵＮＴＡＯＦＦ）、現在エアコンスイッチ８９がＯＮでエアコン補正過渡時のため、オープンループ制御を実行すべくＳ５２７へジャンプする。
【００９８】
一方、Ｓ５１４でエアコンスイッチ８９がＯＦＦと判断されてＳ５１６へ進むと、上記エアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴＡの値を参照し、ＣＯＵＮＴＡ＝０の場合、エアコンスイッチ８９がＯＮ→ＯＦＦ後設定時間ＡＯＦＦ［ＳＥＣ］経過したと判断しＳ５１７へ進む。また、ＣＯＵＮＴＡ≠０の場合Ｓ５１８へ進み、エアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴＡをカウントダウンし（ＣＯＵＮＴＡ←ＣＯＵＮＴＡ−１）、オープンループ制御を選択すべくＳ５２７へ進む。
【００９９】
そして、上記Ｓ５１３あるいＳ５１６からＳ５１７へ進むと、上記アイドル目標回転数ＮＳＥＴからエンジン回転数ＮＥを減算して差回転ΔＮを求め、Ｓ５１９で、上記差回転ΔＮと設定値ＮＤＰＳとを比較し、ΔＮ≧ＮＤＰＳの場合Ｓ５２０へ進み、ΔＮ＜ＮＤＰＳの場合Ｓ５２７へ進む。
【０１００】
Ｓ５２０へ進むと、上記差回転ΔＮと設定値ＤＮＦＢ（但し、ＤＮＦＢ≧ＮＤＰＳ）とを比較し、ΔＮ≦ＤＮＦＢの場合Ｓ５２１へ進み、ΔＮ＞ＤＮＦＢの場合クローズドループ制御条件成立と判断してＳ５２５へ進み、クローズドループ制御を選択すべく、クローズド／オープンループ制御判別フラグＦＬＡＧＣＬをセットしてルーチンを抜ける。
【０１０１】
Ｓ５２１へ進むと、後述する加減速補正設定サブルーチンで設定される加減速補正ＤＳＨＰＴの値を参照し、ＤＳＨＰＴ＝０の場合Ｓ５２２へ進み、ＤＳＨＰＴ≠０の場合Ｓ５２３へ進む。
【０１０２】
Ｓ５２２へ進むと後述するダッシュポット補正値設定ルーチンで設定されるダッシュポット補正値ＤＨＥＮＢの値を参照し、ＤＨＥＮＢ≠０の場合Ｓ５２３へ進み、ＤＨＥＮＢ＝０の場合Ｓ５２４へ進む。
【０１０３】
Ｓ５２３では、加減速補正ＤＳＨＰＴ＝０、および、ダッシュポット補正値ＤＨＥＮＢ＝０の状態が設定時間ＣＬＳＤ［ｓｅｃ］経過したかを判別するための定常状態移行判別カウント値ＣＯＵＮＴＣＬ（ダウンカウンタ）に上記設定時間ＣＬＳＤに相当する設定値ＣＯＵＮＴＣＬＳＤをセットし（ＣＯＵＮＴＣＬ←ＣＯＵＮＴＣＬＳＤ）、現在、加減速補正あるいはダッシュポット補正が実行されている過渡状態のためオープンループ制御を選択すべくＳ５２７へ進む。
【０１０４】
一方、Ｓ５２２からＳ５２４へ進むと上記定常状態移行判別カウント値ＣＯＵＮＴＣＬの値を参照し、ＣＯＵＮＴＣＬ＝０の場合定常状態でありクローズドループ制御条件成立と判断し、クローズドループ制御を選択すべくＳ５２５へ進み、ＣＯＵＮＴＣＬ≠０の場合Ｓ５２６へ進み、定常状態移行判別カウント値ＣＯＵＮＴＣＬをカウントダウンした後（ＣＯＵＮＴＣＬ←ＣＯＵＮＴＣＬ−１）、Ｓ５２７へ進む。
【０１０５】
そして、Ｓ５２０あるいはＳ５２４からＳ５２５へ進むとクローズド／オープンループ制御判別フラグＦＬＡＧＣＬをセット（ＦＬＡＧＣＬ←１、クローズドループ制御選択）し、ルーチンを抜ける。
【０１０６】
また、Ｓ５０２，Ｓ５０３，Ｓ５０７，Ｓ５０８，Ｓ５１１，Ｓ５１２，Ｓ５１５，Ｓ５１８，Ｓ５１９，Ｓ５２３  あるいは、Ｓ５２６からＳ５２７へ進むとクローズド／オープンループ制御判別フラグＦＬＡＧＣＬをクリア（ＦＬＡＧＣＬ←０、オープンループ制御選択）し、ルーチンを抜ける。
【０１０７】
なお、上記フローチャートによるクローズドループ制御条件をまとめれば以下の〈１〉〜〈７〉の通りであり、それ以外ではオープンループ制御となる。
【０１０８】
〈１〉始動後、所定時間ＴＭＡＳＩ［ｓｅｃ］経過していること
〈２〉アイドルスイッチ１２ｂがＯＮであること
〈３〉（ｉ）ニュートラルスイッチ５９、または、パーキングスイッチ６０がＯＮで、車速ＶＳＰ＜ＶＳＰＯＰＡであること
又は（ｉｉ）ニュートラルスイッチ５９、またはパーキングスイッチ６０がＯＮで、ＶＳＰ≧ＶＳＰＯＰＡ  ［Ｋｍ／ｈ］ではあるが、エンジン回転数ＮＥ＜（ＮＳＥＴ＋ＮＣＬＯＰ）［ｒｐｍ］であること
又は（ｉｉｉ）ニュートラルスイッチ５９、およびパーキングスイッチ６０がともにＯＦＦで、車速ＶＳＰ＜ＶＳＰＦＢＡ［Ｋｍ／ｈ］、かつ、エンジン回転数ＮＥ＜ＲＰＭＦＢ［ｒｐｍ］であること
〈４〉（ｉ）エアコンスイッチ８９がＯＮで、エアコン過渡補正値ＩＳＣＡＣＦ＝０、あるいは、ＩＳＣＡＣＦ≠０［％］であっても、エンジン回転数ＮＥ＜（ＮＳＥＴ−ＤＮＡＣＦ）［ｒｐｍ］であること
又は（ｉｉ）エアコンスイッチ８９がＯＦＦで、ＯＮ→ＯＦＦ後所定時間ＡＯＦＦ［ｓｅｃ］経過後、あるいは、エンジン回転数ＮＥ＜（ＮＳＥＴ−ＤＮＡＣＦ）［ｒｐｍ］であること
〈５〉ニュートラルスイッチ５９、あるいは、パーキングスイッチ６０がＯＮで、ＯＦＦ→ＯＮ後所定時間ＡＴＣ［ｓｅｃ］経過後であること
〈６〉パワステ補正値ＩＳＣＰＳ＝０、あるいは、ＩＳＣＰＳ≠０［％］であっても、差回転ΔＮ≧ＮＤＰＳ［ｒｐｍ］であること
〈７〉（ｉ）〈１〉〜〈６〉を全て満たし、かつ、加減速補正ＤＳＨＰＴ＝０［％］およびダッシュポット補正ＤＨＥＮＢ＝０［％］の状態が所定時間ＣＬＳＤ［ｓｅｃ］継続しているか、または、所定時間ＣＬＳＤ［ｓｅｃ］継続していない場合でも差回転ΔＮ＞ＤＮＦＢ［ｒｐｍ］であること
又は（ｉｉ）〈１〉〜〈６〉を全て満たし、かつ、加減速補正ＤＳＨＰＴ≠０［％］およびダッシュポット補正ＤＨＥＮＢ≠０［％］でも、差回転ΔＮ＞ＤＮＦＢ［ｒｐｍ］であること
（エアコン補正値設定サブルーチン）
図７，図８は、５１．２ｍｓｅｃ毎に割込み実行される補正値設定ルーチンにおいて実行（Ｓ２０１参照）されるエアコン補正値ＩＳＣＡＣ設定のサブルーチンである。
【０１０９】
まず、Ｓ６０１でニュートラルスイッチ５９がＯＮかどうかを判断し、ＯＦＦの場合Ｓ６０２へ進み、ＯＮの場合Ｎレンジと判断してＳ６０３へ進む。
【０１１０】
Ｓ６０２へ進むとパーキングスイッチ６０がＯＮかを判断し、ＯＮの場合、Ｐレンジと判断してＳ６０３へ進み、ＯＦＦの場合、走行レンジと判断してＳ６０４へ進む。
【０１１１】
Ｓ６０３へ進むと走行レンジ判別フラグＦＬＡＧＡＴをクリア（ＦＬＡＧＡＴ←０、ＮまたはＰレンジ）しＳ６０５へ進み、また、Ｓ６０４へ進むと走行レンジ判別フラグＦＬＡＧＡＴをセット（ＦＬＡＧＡＴ←１、走行レンジ）しＳ６０５へ進む。
【０１１２】
Ｓ６０５ではエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合Ｓ６０６へ進み、ＯＦＦの場合Ｓ６０７へ進み、エアコンスイッチ８９がＯＮしたときから設定時間ＡＯＮ［ｓｅｃ  ］経過したかを判別するためのエアコン過渡補正終了判別カウント値ＣＯＵＮＴＡＣ（ダウンカウンタ）に、上記設定時間ＡＯＮに相当する設定値ＣＯＵＮＴＡＯＮ  をセット（ＣＯＵＮＴＡＣ←ＣＯＵＮＴＡＯＮ  ）し、Ｓ６２０へ進む。
【０１１３】
上記Ｓ６０５でエアコンスイッチ８９がＯＮと判断されてＳ６０６へ進むと、エアコン過渡補正終了判別カウント値ＣＯＵＮＴＡＣの値を参照し、ＣＯＵＮＴＡＣ≠０の場合、エアコンスイッチＯＦＦ→ＯＮ後設定時間ＡＯＮ経過していないと判断し、Ｓ６０８へ進み、また、ＣＯＵＮＴＡＣ＝０の場合エアコンスイッチＯＦＦ→ＯＮ後設定時間ＡＯＮ経過したと判断してＳ６１１へ進む。
【０１１４】
Ｓ６０８へ進むとエアコン過渡補正終了判別カウント値ＣＯＵＮＴＡＣをカウントダウンした後（ＣＯＵＮＴＡＣ←ＣＯＵＮＴＡＣ−１）、Ｓ６０９へ進みエンジン回転数ＮＥとアイドル目標回転数ＮＳＥＴに設定値ＤＮＡＣを加算した設定上限値とを比較しＮＥ≦ＮＳＥＴ＋ＤＮＡＣの場合エンジン回転数ＮＥが設定回転数より低いと判断しＳ６１０へ進み、また、ＮＥ＞ＮＳＥＴ＋ＤＮＡＣの場合エンジン回転数ＮＥが設定回転数より高いと判断してＳ６１１へ進む。
【０１１５】
Ｓ６１０へ進むと走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ６１２へ進み、ＦＬＡＧＡＴ＝０（ＮまたはＰレンジ）の場合Ｓ６１３へ進む。
【０１１６】
Ｓ６１２へ進むとエアコン過渡補正値ＩＳＣＡＣＦを設定値ＡＣＦＦＤにて初期値設定した後（ＩＳＣＡＣＦ←ＡＣＦＦＤ［％］）、Ｓ６１６へ進む。また、Ｓ６１３へ進むとエアコン過渡補正値ＩＳＣＡＣＦ  を設定値ＡＣＦＦＮにて初期値設定した後（ＩＳＣＡＣＦ←ＡＣＦＦＮ［％］）、Ｓ６１６へ進む。
【０１１７】
一方、上記Ｓ６０６あるいはＳ６０９からＳ６１１へ進むと、エアコン過渡補正値ＩＳＣＡＣＦ  が０［％］以下かを判断し、ＩＳＣＡＣＦ  ≦０の場合Ｓ６１４へ進み、上記エアコン過渡補正値ＩＳＣＡＣＦを０［％］に設定した後（ＩＳＣＡＣＦ←０）、Ｓ６１６へ進む。また、ＩＳＣＡＣＦ＞０の場合、エアコン過渡補正値ＩＳＣＡＣＦから設定値ＤＡＣＦＦを減算した値で上記エアコン過渡補正値ＩＳＣＡＣＦを更新した後（ＩＳＣＡＣＦ←ＩＳＣＡＣＦ−ＤＡＣＦＦ）、Ｓ６１６へ進む。
【０１１８】
上記Ｓ６１２〜Ｓ６１５のいずれかからＳ６１６へ進むと走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝１、（走行レンジ）の場合Ｓ６１７へ進み、ＦＬＡＧＡＴ＝０（Ｐ，Ｎレンジ）の場合Ｓ６１８へ進む。
【０１１９】
Ｓ６１７へ進むとエアコン定常補正値ＩＳＣＡＣＳを設定値ＡＣＤＴＹで設定した後（ＩＳＣＡＣＳ←ＡＣＤＴＹ）、Ｓ６１９へ進む。また、Ｓ６１８へ進むとエアコン定常補正値ＩＳＣＡＣＳをバックアップＲＡＭ５０ａの所定アドレスから読出したエアコン学習補正値ＭＡＣＤＴＹ（後述するエアコン補正学習ルーチンで設定される）で設定した後（ＩＳＣＡＣＳ←ＭＡＣＤＴＹ）、Ｓ６１９へ進む。
【０１２０】
上記Ｓ６１７あるいはＳ６１８からＳ６１９へ進むと、上記エアコン過渡補正値ＩＳＣＡＣＦに上記エアコン定常補正値ＩＳＣＡＣＳを加算した値でエアコン補正値ＩＳＣＡＣ［％］を設定し（ＩＳＣＡＣ←ＩＳＣＡＣＦ＋ＩＳＣＡＣＳ）、ルーチンを抜ける。
【０１２１】
一方、上記Ｓ６０７からＳ６２０へ進むと、エアコン補正値ＩＳＣＡＣを読出し、エアコン補正値ＩＳＣＡＣが０［％］以下かを判断し、ＩＳＣＡＣ≦０の場合Ｓ６２１へ進みエアコン補正値ＩＳＣＡＣを０［％］に設定した後（ＩＳＣＡＣ←０）、ルーチンを抜ける。
【０１２２】
また、ＩＳＣＡＣ＞０の場合Ｓ６２２へ進み、上記エアコン補正値ＩＳＣＡＣと設定値ＩＳＣＡＣＤ［％］（０％に近い値）とを比較し、ＩＳＣＡＣ≧ＩＳＣＡＣＤの場合Ｓ６２３へ進み、ＩＳＣＡＣ＜ＩＳＣＡＣＤの場合エアコン補正値ＩＳＣＡＣが０［％］に近づいているため制御ハンチングを防止し収束性を良くするため減算量を少くすべく、Ｓ６２４へ進む。
【０１２３】
Ｓ６２３へ進むと走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ６２６へ進み減量値ＤＳＡＣを設定値ＤＳＡＣ１Ｄ［％］で設定して（ＤＳＡＣ←ＤＳＡＣ１Ｄ）、Ｓ６３０へ進む。また、ＦＬＡＧＡＴ＝０（Ｐ，Ｎレンジ）の場合Ｓ６２７へ進み減量値ＤＳＡＣを設定値ＤＳＡＣ１Ｎで設定して（ＤＳＡＣ←ＤＳＡＣ１Ｎ）、Ｓ６３０へ進む。
【０１２４】
また、上記Ｓ６２２からＳ６２４へ進むと走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ６２８へ進み減量値ＤＳＡＣを設定値ＤＳＡＣ２Ｄ（但し、ＤＳＡＣ１Ｄ＞ＤＳＡＣ２Ｄ）で設定し（ＤＳＡＣ←ＤＳＡＣ２Ｄ）、Ｓ６３０へ進む。また、ＦＬＡＧＡＴ＝０（Ｐ，Ｎレンジ）の場合Ｓ６２９へ進み、減量値ＤＳＡＣを設定値ＤＳＡＣ２Ｎ（但し、ＤＳＡＣ１Ｎ＞ＤＳＡＣ２Ｎ）で設定した後（ＤＳＡＣ←ＤＳＡＣ２Ｎ）、Ｓ６３０へ進む。
【０１２５】
上記Ｓ６２６〜Ｓ６２９の何れかからＳ６３０へ進むとエアコン補正値ＩＳＣＡＣを上記減量値ＤＳＡＣで減算した後（ＩＳＣＡＣ←ＩＳＣＡＣ−ＤＳＡＣ）、ルーチンを抜ける。
【０１２６】
上記エアコン補正値設定の代表例を図２９のタイムチャートにしたがって説明する。
【０１２７】
エアコンスイッチ８９をＯＦＦからＯＮにセットすると、設定時間ＡＯＮ［ｓｅｃ］の間エアコン補正値ＩＳＣＡＣが予め設定されたエアコン定常補正値ＩＳＣＡＣＳ（ＡＣＤＴＹ，あるいは、ＭＡＣＤＴＹ）とエアコン過渡補正値ＩＳＣＡＣＦ（ＡＣＦＦＤ、あるいは、ＡＣＦＦＮ）とを加算した値に設定され（経過時間ｔ１  〜２  ）、設定時間ＡＯＮ［ｓｅｃ］の間、エンジン回転数ＮＥがアイドル目標回転数ＮＳＥＴに設定値ＤＮＡＣを加算した回転数に近づくように制御される。
【０１２８】
すなわち、エアコン補正値ＩＳＣＡＣがエアコン過渡補正値ＩＳＣＡＣＦを加算していない値で設定されると、エアコンスイッチ８９をＯＮした直後にエアコンコンプレッサ駆動による負荷が急にエンジンにかかるため、図（ｃ）の破線で示すようにエンジン回転数が大きく変動しフィーリングが悪化する。
【０１２９】
したがって、エアコンスイッチ８９がＯＮ後、設定時間ＡＯＮの間、エアコン過渡補正値ＩＳＣＡＣＦ  によりエアコン補正値ＩＳＣＡＣを大きくしてＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮを大きくし、ＩＳＣバルブ１３の開度を増大させて空気量を増加させることで、エアコンスイッチＯＮ直後のエアコンコンプレッサ駆動による急激な負荷変動に伴うエンジン回転数ＮＥの落ち込みを防止し、図（ｃ）の実線で示すように安定したフィーリングを得ることができる。
【０１３０】
そして、設定時間ＡＯＮ［ｓｅｃ］経過すると、上記エアコン過渡補正値ＩＳＣＡＣＦを０になるまで演算サイクルごとに設定値ＤＡＣＦＦずつ減量する（経過時間ｔ２  〜ｔ３  ）。このように、エアコン過渡補正値ＩＳＣＡＣＦを経時的に徐々に減少させることで、エアコン駆動時のアイドルアップ回転数へエンジン回転数ＮＥをスムーズに移行させることができる。
【０１３１】
その後、上記エアコンスイッチ８９をＯＦＦすると（経過時間ｔ４  ）、上記エアコン補正値ＩＳＣＡＣを演算サイクルごとに設定値ＤＳＡＣ１ＤあるいはＤＳＡＣ１Ｎだけ、上記エアコン補正値ＩＳＣＡＣを設定値ＩＳＣＡＣＤになるまで減量する。
【０１３２】
そして、上記エアコン補正値ＩＳＣＡＣが設定値ＩＳＣＡＣＤに達したら（経過時間ｔ５  ）、上記エアコン補正値ＩＳＣＡＣを演算サイクルごとに設定値ＤＳＡＣ２ＤあるいはＤＳＡＣ２Ｎずつ０になるまで減量する。
【０１３３】
すなわち、エアコンスイッチ８９をＯＮからＯＦＦにしたとき、上記エアコン補正値ＩＳＣＡＣをいきなり０にすると、特に可変容量エアコンコンプレッサ６４を用いているため、エアコンスイッチＯＮ→ＯＦＦ後所定時間内はエアコンクラッチリレー６５が未だＯＮ（接続）しており、かつ、エアコン容量制御により、エアコンコンプレッサ駆動によるエンジンに対する負荷が残っているため、図（ｃ）の破線で示すようにエンジン回転数落ちが生じてしまう。
【０１３４】
また、エアコンスイッチ８９のＯＦＦ後、大きいままの減量値で上記エアコン補正値ＩＳＣＡＣを減量すると図（ｃ）の一点鎖線で示すようにＩＳＣＡＣ＝０近傍におけるエンジン回転数ＮＥの収束性が悪くなる。
【０１３５】
従って、エアコンスイッチ８９のＯＦＦ後、エアコン補正値ＩＳＣＡＣが設定値ＩＳＣＡＣＤに低下するまでの間、エアコン補正値ＩＳＣＡＣを演算周期ごとに第１の減算値ずつ減量し、ＩＳＣバルブ１３の開度を徐々に減じて空気量を徐々に減少させることで、エアコンスイッチをＯＦＦした直後に残っているエアコンコンプレッサ６４からのフリクションによるエンジン回転数落ちを防止し、その後、エアコン補正値ＩＳＣＡＣが設定値ＩＳＣＡＣＤ以下に低下したら、エアコン補正値ＩＳＣＡＣを演算周期ごとに第１の減算値よりも小さい第２の減算値ずつ０になるまで減量し、エアコン補正値ＩＳＣＡＣを用いて設定されるデューティ比ＩＳＣＯＮの減少率を小さくしてＩＳＣバルブ１３の開度減少率を小さくすることで、エアコンＯＦＦ時のアイドル目標回転数ＮＳＥＴに近付く際のエンジン回転数ＮＥ  の低下速度を減少させてエンジン回転数ＮＥの目標回転数に対する収束性を向上する。
【０１３６】
（エアコン補正学習ルーチン）
図９はエアコンスイッチ８９のＯＦＦ→ＯＮ時に割込み実行するルーチンで、まず、Ｓ１０１でクローズド／オープンループ制御判別フラグＦＬＡＧＣＬの値を参照し、ＦＬＡＧＣＬ＝１（クローズドループ制御中）の場合Ｓ７０２へ進み、ＦＬＡＧＣＬ＝０（オープンループ制御中）の場合Ｓ７０７へ進む。
【０１３７】
Ｓ７０２へ進むと、後述するクローズドループ補正Ｉ分更新ルーチンで設定される現在のフィードバック補正値であるクローズドループ補正Ｉ分ＩＳＣＩ  を読出しＲＡＭ５０の所定アドレスに現在のフィードバック制御値ＭＩＳＣＩとして格納し（ＭＩＳＣＩ←ＩＳＣＩ  ）、Ｓ７０３でタイマＴＩＭＥＲＬＲＮをスタートさせ、Ｓ７０４でエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合Ｓ７０５へ進み、ＯＦＦの場合Ｓ７０７へ進む。Ｓ７０５へ進むとクローズド／オープンループ制御判別フラグＦＬＡＧＣＬの値を参照し、ＦＬＡＧＣＬ＝１（クローズドループ制御中）の場合Ｓ７０６へ進み、ＦＬＡＧＣＬ＝０（オープンループ制御中）の場合Ｓ７０７へ進む。
【０１３８】
Ｓ７０６へ進むとタイマＴＩＭＥＲＬＲＮの計時と予め設定した時間ＴＡＣＬＲＮとを比較し、ＴＩＭＥＲＬＲＮ≧ＴＡＣＬＲＮの場合、エアコンスイッチ８９がＯＮの状態がクローズドループ制御中で設定時間経過したと判断してＳ７０８へ進み、また、ＴＩＭＥＲＬＲＮ＜ＴＡＣＬＲＮの場合Ｓ７０４へ戻る。
【０１３９】
一方、上記Ｓ７０１，Ｓ７０４あるいは、Ｓ７０５からＳ７０７へ進むとタイマＴＩＭＥＲＬＲＮをリセット（ＴＩＭＥＲＬＲＮ←０）した後、ルーチンを抜ける。
【０１４０】
また、上記Ｓ７０８へ進むとタイマＴＩＭＥＲＬＲＮをリセット（ＴＩＭＥＲＬＲＮ←０）した後、Ｓ７０９で現時点のクローズドループ補正Ｉ分ＩＳＣＩ  を読出し、ＲＡＭ５０の所定アドレスに設定時間ＴＡＣＬＲＮ経過後のフィードバック制御値ＬＩＳＣＩ  として格納する。
【０１４１】
そして、Ｓ７１０へ進み、バックアップＲＡＭ５０ａの所定アドレスに格納されているエアコン補正学習値ＭＡＣＤＴＹを次式から求めた値で更新し、ルーチンを抜ける。
【０１４２】
0003612286.tif 000002
図１０はエアコンスイッチ８９のＯＮ→ＯＦＦ時に割込み実行するルーチンで、まず、Ｓ８０１でクローズド／オープンループ制御判別フラグＦＬＡＧＣＬの値を参照し、ＦＬＡＧＣＬ＝１（クローズドループ制御中）の場合Ｓ８０２へ進み、ＦＬＡＧＣＬ＝０（オープンループ制御中）の場合、そのままルーチンを抜ける。
【０１４３】
Ｓ８０２へ進むとＲＡＭ５０の所定アドレスに格納されているフィードバック制御値ＭＩＳＣＩ（エアコンスイッチ８９がＯＦＦ→ＯＮ時の値）、を読出し、Ｓ８０３で現在のクローズドループ補正Ｉ分ＩＳＣＩ  を読出し、ＲＡＭ５０の所定のアドレスに現在のフィードバック制御値ＬＩＳＣＩ  として格納する（ＬＩＳＣＩ  ←ＩＳＣＩ  ）。
【０１４４】
そして、Ｓ８０４へ進み、バックアップＲＡＭ５０ａの所定アドレスに格納されているエアコン補正学習値ＭＡＣＤＴＹを次式から求めた値で更新し、ルーチンを抜ける。
【０１４５】
ＭＡＣＤＴＹ←ＭＡＣＤＴＹ＋［（ＬＩＳＣＩ  −ＭＩＳＣＩ）×ＫＡＣＯＮ］
以上のように、エアコンＯＮ時、クローズドループ制御中の場合、そのときのフィードバック制御値ＭＩＳＣＩとその後同一条件（クローズドループ制御中、かつ、エアコンスイッチ８９がＯＮの状態）が設定時間ＴＡＣＬＲＮ継続した時のフィードバック制御値ＬＩＳＣＩとの差に基づきエアコン補正学習値ＭＡＣＤＴＹを設定し、前述のエアコン補正値設定サブルーチンにおいてＰ，Ｎレンジにおけるエアコン補正値ＩＳＣＡＣを設定する際に、エアコン定常補正値ＩＳＣＡＣＳとしてエアコン補正学習値ＭＡＣＤＴＹを用いることでＩＳＣバルブ１３の経年劣化などを補償し、エアコンＯＮ時において所定のアイドルアップを常に行うことができる。なお、走行レンジ時においてはエンジン負荷がＮ，Ｐレンジに較べて相対的に大きくなるためＩＳＣバルブ１３の劣化の影響は少なく、したがって、学習補正値を用いる必要はない。
【０１４６】
また、エアコンスイッチ８９がＯＦＦ→ＯＮ時の割込みのみならず、ＯＮ→ＯＦＦ時の割込みをも実行することで、その後に上記エアコンスイッチ８９がＯＦＦ→ＯＮ時に実行する割込みルーチンで設定するエアコン補正学習値ＭＡＣＤＴＹと前回のＯＦＦ→ＯＮ時に設定したエアコン補正学習値ＭＡＣＤＴＹとの間のずれを補償することができる。
【０１４７】
（ＡＴ車走行レンジ補正値設定サブルーチン）
図１１，図１２は５１．２ｍｓｅｃ毎に割込み実行される補正値設定ルーチンにおいて実行（Ｓ２０２参照）されるＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳ設定のサブルーチンである。
【０１４８】
まず、Ｓ９０１で前述したエアコン補正値設定サブルーチンで設定される走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ９０２へ進み、ＦＬＡＧＡＴ＝０（Ｐ，Ｎレンジ）の場合Ｓ９０３へ進む。Ｓ９０２へ進むと、後述するＳ９１３で設定するＰ，Ｎレンジから走行レンジへシフトした際の遅れ時間ＩＳＣＡＴ１［ｓｅｃ］に相当する走行レンジ移行判別カウント値ＣＯＵＮＴＡＴ１（ダウンカウンタ）の値を参照し、ＣＯＵＮＴＡＴ１＝０の場合Ｓ９０４へ進む。さらに、ＣＯＵＮＴＡＴ１≠０の場合Ｓ９０５へ進み、走行レンジ移行判別カウント値ＣＯＵＮＴＡＴ１をカウントダウンして（ＣＯＵＮＴＡＴ１←ＣＯＵＮＴＡＴ１−１）Ｓ９０８へ進む。
【０１４９】
また、上記Ｓ９０２で走行レンジ状態（ニュートラルスイッチ５９、パーキングスイッチ６０が共にＯＦＦ）が遅れ時間ＩＳＣＡＴ１以上継続した（ＣＯＵＮＴＡＴ１＝０）と判断してＳ９０４へ進むと、ＲＡＭ５０の所定アドレスに格納されているＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳと設定値ＤＲＧＤＴＹとを比較し、ＩＳＣＡＴＤＳ≧ＤＲＧＤＴＹの場合、Ｓ９０６へ進み上記ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを上記設定値ＤＲＧＤＴＹで設定して（ＩＳＣＡＴＤＳ←ＤＲＧＤＴＹ）、Ｓ９０８へ進む。また、ＩＳＣＡＴＤＳ＜ＤＲＧＤＴＹの場合、Ｓ９０７へ進み上記ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳに小量設定値ＤＬＴＡＴ１（但し、ＤＬＴＡＴ１＜ＤＲＧＤＴＹ）を加算した値で上記ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを更新して（ＩＳＣＡＴＤＳ←ＩＳＣＡＴＤＳ＋ＤＬＴＡＴ１）、Ｓ９０８へ進む。
【０１５０】
そして、Ｓ９０５，Ｓ９０６、あるいは、Ｓ９０７からＳ９０８へ進むと走行レンジからＮ，Ｐレンジへシフトした際の遅れ時間ＩＳＣＡＴ２  ［ｓｅｃ］に相当する設定値ＣＯＵＮＴＩＳＣＡＴ２でＮ，Ｐレンジ移行判別カウント値ＣＯＵＮＴＡＴ２（ダウンカウンタ）をセットして（ＣＯＵＮＴＡＴ２←ＣＯＵＮＴＩＳＣＡＴ２）、ルーチンを抜ける。
【０１５１】
一方、Ｓ９０１でＮ，Ｐレンジ（ＦＬＡＧＡＴ＝０）と判断されてＳ９０３へ進むと、Ｎ，Ｐレンジ移行判別カウント値ＣＯＵＮＴＡＴ２  の値を参照し、ＣＯＵＮＴＡＴ２≠０の場合Ｓ９０９へ進み、上記カウント値ＣＯＵＮＴＡＴ２をカウントダウンして（ＣＯＵＮＴＡＴ２←ＣＯＵＮＴＡＴ２−１）、Ｓ９１３へ進む。
【０１５２】
また、上記Ｓ９０３でＣＯＵＮＴＡＴ２＝０と判断されてＳ９１０へ進むと、上記ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳが０以下かを判断し、ＩＳＣＡＴＤＳ＞０の場合Ｓ９１１へ進みＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳ小量から設定値ＤＬＴＡＴ２を減算した値で上記ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを設定して（ＩＳＣＡＴＤＳ←ＩＳＣＡＴＤＳ−ＤＬＴＡＴ２）、Ｓ９１３へ進む。また、ＩＳＣＡＴＤＳ≦０の場合Ｓ９１２へ進み上記ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを０［％］に設定（ＩＳＣＡＴＤＳ←０）して、Ｓ９１３へ進む。
【０１５３】
そして、Ｓ９０９，Ｓ９１１、あるいは、Ｓ９１２からＳ９１３へ進むと、Ｎ，Ｐレンジから走行レンジへシフトした際の遅れ時間ＩＳＣＡＴ１［ｓｅｃ  ］に相当するカウント値ＣＯＵＮＴＩＳＣＡＴ１で走行レンジ移行判別カウント値ＣＯＵＮＴＡＴ１をセットした後（ＣＯＵＮＴＡＴ１←ＣＯＵＮＴＩＳＣＡＴ１）、ルーチンを抜ける。
【０１５４】
上記ＡＴ車走行レンジ補正値設定の代表例を図３０のタイムチャートに従って説明する。
【０１５５】
Ｎ，Ｐレンジ（ＦＬＡＧＡＴ＝０）から走行レンジ（ＦＬＡＧＡＴ＝１）にシフトすると（経過時間ｔ１  ）、所定遅れ時間ＩＳＣＡＴ１［ｓｅｃ］の計時が開始され、この遅れ時間ＩＳＣＡＴ１［ｓｅｃ］経過後、演算サイクルごとに小量の設定値ＤＬＴＡＴ１［％］を加算し（ＩＳＣＡＴＤＳ←ＩＳＣＡＴＤＳ＋ＤＬＴＡＴ１）、ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳ［％］が設定値ＤＲＧＤＴＹ［％］に達したら（経過時間ｔ２  ）、上記ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳ［％］を上記設定値ＤＲＧＤＴＹ［％］で固定する（経過時間ｔ２  〜ｔ３  ）。
【０１５６】
Ｎ，Ｐレンジから走行レンジへシフトした際、微小の遅れ時間をもってエンジンに負荷がかかるため、ただちにＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを０→設定値ＤＲＧＤＴＹ［％］に設定すると図（ｃ）の破線で示すようにエンジン回転数ＮＥ  が一時的に上昇してフィーリングが悪化する。
【０１５７】
また、ＡＴ車走行レンジ補正を行わないとＮ，Ｐレンジから走行レンジにシフトしたとき急激にエンジン負荷がかかり、図（ｃ）の二点鎖線で示すようにエンジン回転数が低下してしまい、クローズドループ補正Ｉ分ＩＳＣＩによってエンジン回転数が収束するまでに時間がかかってしまう。
【０１５８】
従って、走行レンジにシフトした際、エンジン負荷の伝達遅れ時間に相当する所定遅れ時間ＩＳＣＡＴ１  経過後に、ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを設定値ＤＲＧＤＴＹに達するまで徐々に増加させてＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを用いて設定されるデューティ比ＩＳＣＯＮを徐々に増加し、ＩＳＣバルブ１３により空気量を徐々に増加させることで、エンジン回転数変動が防止され、フィーリングが向上する。
【０１５９】
一方、走行レンジ（ＦＬＡＧＡＴ＝１）からＮ，Ｐレンジ（ＦＬＡＧＡＴ＝０）にシフトすると（経過時間ｔ３  ）、所定遅れ時間ＩＳＣＡＴ２［ｓｅｃ］の計時が開始され、この遅れ時間ＩＳＣＡＴ２［ｓｅｃ］経過後、ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを演算サイクルごとに小量の設定値ＤＬＴＡＴ２［％］で０になるまで減算する（ＩＳＣＡＴＤＳ←ＩＳＣＡＴＤＳ−ＤＬＴＡＴ２、経過時間ｔ４  ）。
【０１６０】
走行レンジからＮ，Ｐレンジへシフトした際、微小の遅れ時間をもってエンジン負荷が急減するため、直ちにＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを０にすると、変速機側のエンジンへの負荷が完全にはなくなっていないので、図（ｃ）の破線で示すようにエンジン回転数が一時的に低下しフィーリングが悪化する。
【０１６１】
また、ＡＴ車走行レンジ補正を行わないと走行レンジからＮ，Ｐレンジへシフトした際、急激にエンジン負荷が減少するため頭（ｃ）の二点鎖線で示すようにエンジン回転数の吹上りを生じフィーリングが悪くなる。
【０１６２】
従って、Ｎ，Ｐレンジへシフトした際、所定遅れ時間ＩＳＣＡＴ２経過後に、ＡＴ車走行レンジ補正値ＩＳＣＡＴＤＳを０［％］になるまで徐々に減少させてデューティ比ＩＳＣＯＮを徐々に減じ、ＩＳＣバルブ１３により空気量を徐々に減少させることで、このときのエンジン回転数変動を防止し、フィーリングを向上する。
（加減速補正設定サブルーチン）
図１３，図１４は５１．２ｍｓｅｃ毎に割込み実行される補正値設定ルーチンにおいて実行（Ｓ２０３参照）される加減速補正ＤＳＨＰＴ設定のサブルーチンである。
【０１６３】
まず、Ｓ１００１  でアイドルスイッチ１２ｂがＯＦＦかを判断し、ＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）の場合Ｓ１００２  へ進み、ＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）の場合Ｓ１００３  へ進む。
【０１６４】
Ｓ１００２  へ進むと走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝０（Ｎ，Ｐレンジ）の場合Ｓ１００４  へ進み、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ１００５  へ進む。
【０１６５】
Ｓ１００４  へ進むとスロットル開度センサ１２ａで検出したスロットル開度ＴＨＶに基づきＲＯＭ４９の一連のアドレスに格納されているＮ，Ｐレンジ用加減速補正テーブルＴＤＡＳＨＮを補間計算付きで参照して加減速補正ＤＳＨＰＴ［％］を設定した後Ｓ１００６  へ進む。
【０１６６】
また、Ｓ１００２  からＳ１００５  へ進むと上記スロットル開度ＴＨＶに基づきＲＯＭ４９の一連のアドレスに格納されている走行レンジ用加減速補正テーブルＴＤＡＳＨＤを補間計算付きで参照して加減速補正ＤＳＨＰＴ［％］を設定した後Ｓ１００６  へ進む。
【０１６７】
セレクトレバーがＮレンジあるいはＰレンジにシフトされている状態ではエンジンに負荷がかかっておらず、スロットルバルブ１１ｄ，１１ｅが開となる場合はレーシング、空吹かしなどの状態であり、スロットル開度変化に応じるエンジン回転数ＮＥの変化が走行レンジのときよりも大きい。
【０１６８】
したがって、Ｎ，Ｐレンジ用加減速補正テーブルＴＤＡＳＨＮの各領域に格納されているスロットル開度ＴＨＶに対応する加減速補正ＤＳＨＰＴは、走行レンジ時に採用する走行レンジ用加減速補正テーブルＴＤＡＳＨＤに格納されている加減速補正ＤＳＨＰＴに比し大きな値に設定されており、これにより、エンジン負荷に応じた制御性を得ることができる。
【０１６９】
そして、Ｓ１００４  あるいはＳ１００５  からＳ１００６  へ進むと上記加減速補正ＤＳＨＰＴでＲＡＭ５０の所定アドレスに格納されている今回の加減速補正（ＤＳＨＰＴ）ＮＥＷ  を設定する（（ＤＳＨＰＴ）ＮＥＷ←ＤＳＨＰＴ）。
【０１７０】
その後、Ｓ１００７  へ進むと、上記今回の加減速補正（ＤＳＨＰＴ）ＮＥＷと、前回のルーチンで設定した加減速補正（ＤＳＨＰＴ）ＯＬＤとを比較し、（ＤＳＨＰＴ）ＮＥＷ＜（ＤＳＨＰＴ）ＯＬＤ（スロットル開度減少）の場合Ｓ１００８  へ進み、（ＤＳＨＰＴ）ＮＥＷ≧（ＤＳＨＰＴ）ＯＬＤ（スロットル開度増加あるいは変化なし）の場合Ｓ１０３０  へジャンプする。
【０１７１】
Ｓ１００８  へ進むと走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝０（Ｎ，Ｐレンジ）の場合Ｓ１００９  へ進み、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ１０１０  へ進む。
【０１７２】
Ｓ１００９  へ進むと設定値ＤＤＡＳＨＮで減量値ＤＤＡＳＨ［％］を設定して（ＤＤＡＳＨ←ＤＤＡＳＨＮ）、Ｓ１０１１  へ進む。また、Ｓ１０１０  へ進むと設定値ＤＤＡＳＨＤ（但し、ＤＤＡＳＨＮ＞ＤＤＡＳＨＤ）で減量値ＤＤＡＳＨ［％］を設定して（ＤＤＡＳＨ←ＤＤＡＳＨＤ）、Ｓ１０１１  へ進む。
【０１７３】
なお、スロットル開度減少時のエンジン回転数落ちは走行レンジの際よりも無負荷状態であるＮ，Ｐレンジの方が敏速であるため、（ＤＳＨＰＴ）ＮＥＷ＜（ＤＳＨＰＴ）ＯＬＤのときの加減速補正値ＤＳＨＰＴの減量値ＤＤＡＳＨをＮ，Ｐレンジのときには走行レンジに比し大きく設定している。
【０１７４】
そして、Ｓ１０１１  へ進むと前回の加減速補正（ＤＳＨＰＴ）ＯＬＤから上記減量値ＤＤＡＳＨを減算した値で加減速補正値ＤＳＨＰＴを設定する（ＤＳＨＰＴ←（ＤＳＨＰＴ）ＯＬＤ−ＤＤＡＳＨ）。
【０１７５】
一方、上記Ｓ１００１  でアイドルスイッチ１２ｂがＯＮのスロットル全閉状態と判断されてＳ１００３  へ進むと、走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝０（Ｎ，Ｐレンジ）の場合Ｓ１０１２  へ進み、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ１０１３  へ進む。
【０１７６】
Ｓ１０１２  へ進むと設定値ＮＤＡＳＨＮ［％］でオフセット値ＮＤＡＳＨを設定し（ＮＤＡＳＨ←ＮＤＡＳＨＮ）、また、Ｓ１０１３  へ進むと設定値ＮＤＡＳＨＤ（但し、ＮＤＡＳＨＮ＞ＮＤＡＳＨＤ）［％］でオフセット値ＮＤＡＳＨを設定し（ＮＤＡＳＨ←ＮＤＡＳＨＤ）、その後、それぞれＳ１０１４  へ進む。
【０１７７】
そして、Ｓ１０１４  へ進むとエンジン回転数ＮＥとアイドル目標回転数ＮＳＥＴに上記オフセット値ＮＤＡＳＨを加算した値とを比較し、ＮＥ≧ＮＳＥＴ＋ＮＤＡＳＨの場合Ｓ１０１５  へ進み、ＮＥ＜ＮＳＥＴ＋ＮＤＡＳＨの場合Ｓ１０１６  へ進む。
【０１７８】
Ｓ１０１５  へ進むと走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝０（Ｎ，Ｐレンジ）の場合Ｓ１０１７  へ進みダッシュポット保持値ＲＤＡＳＨを予め設定した設定値ＲＤＡＳＨＮ［％］で設定し（ＲＤＡＳＨ←ＲＤＡＳＨＮ）、また、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ１０１８  へ進みダッシュポット保持値ＲＤＡＳＨを予め設定した設定値ＲＤＡＳＨＤ［％］で設定し（ＲＤＡＳＨ←ＲＤＡＳＨＤ）、その後、Ｓ１０１９  へそれぞれ進む。
【０１７９】
そして、Ｓ１０１９  へ進むとＲＡＭ５０の所定アドレスに格納されている現時点の加減速補正ＤＳＨＰＴを読出し、この加減速補正ＤＳＨＰＴと上記ダッシュポット保持値ＲＤＡＳＨとを比較し、ＤＳＨＰＴ≦ＲＤＡＳＨの場合Ｓ１０２０  へ進み、上記ダッシュポット保持値ＲＤＡＳＨにて加減速補正ＤＳＨＰＴを設定し（ＤＳＨＰＴ←ＲＤＡＳＨ）、Ｓ１０３０  へ進む。
【０１８０】
また、Ｓ１０１９  でＤＳＨＰＴ＞ＲＤＡＳＨと判断されてＳ１０２１  へ進むと走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝０（Ｎ，Ｐレンジ）の場合Ｓ１０２２  へ進み、ＦＬＡＧＡＴ＝１（走行レンジ）の場合Ｓ１０２３  へ進む。
【０１８１】
Ｓ１０２２  へ進むと設定値ＤＤＳＨ１Ｎ［％］で第１の減量値ＤＤＳＨ１を設定し（ＤＤＳＨ１←ＤＤＳＨ１Ｎ）、また、Ｓ１０２３  へ進むと設定値ＤＤＳＨ１Ｄ（但し、ＤＤＳＨ１Ｄ＜ＤＤＳＨ１Ｎ）［％］で第１の減量値ＤＤＳＨ１を設定し（ＤＤＳＨ１←ＤＤＳＨ１Ｄ）、その後、Ｓ１０２４  へそれぞれ進む。
【０１８２】
そして、Ｓ１０２４  へ進むと加減速補正ＤＳＨＰＴから上記第１の減量値ＤＤＳＨ１を減算した値で上記加減速補正ＤＳＨＰＴを更新し（ＤＳＨＰＴ←ＤＳＨＰＴ−ＤＤＳＨ１）、Ｓ１０３０  へ進む。
【０１８３】
一方、Ｓ１０１４  でＮＥ＜ＮＳＥＴ＋ＮＤＡＳＨと判断されてＳ１０１６  へ進むと、加減速補正ＤＳＨＰＴが０以下かを判断し、ＤＳＨＰＴ≦０の場合Ｓ１０２５  へ進み、加減速補正ＤＳＨＰＴを０に固定（ＤＳＨＰＴ←０）した後、Ｓ１０３０  へ進む。また、ＤＳＨＰＴ＞０の場合Ｓ１０２６  へ進む。
【０１８４】
Ｓ１０２６  へ進むと、走行レンジ判別フラグＦＬＡＧＡＴの値を参照し、ＦＬＡＧＡＴ＝０（Ｎ，Ｐレンジ）の場合Ｓ１０２７  へ進み、ＦＬＡＧＡＴ＝１（走行レンジ）の場合１０２８へ進む。
【０１８５】
Ｓ１０２７  へ進むと設定値ＤＤＳＨ２Ｎ（但し、ＤＤＳＨ１Ｎ＞ＤＤＳＨ２Ｎ）［％］で第２の減量値ＤＤＳＨ２を設定し（ＤＤＳＨ２←ＤＤＳＨ２Ｎ）、また、Ｓ１０２８  へ進むと設定値ＤＤＳＨ２Ｄ（但し、ＤＤＳＨ１Ｄ＞ＤＤＳＨ２Ｄ）［％］で第２の減量値ＤＤＳＨ２を設定し（ＤＤＳＨ２←ＤＤＳＨ２Ｄ）、それぞれＳ１０２９  へ進む。
【０１８６】
Ｓ１０２９  では加減速補正ＤＳＨＰＴから上記第２の減量値ＤＤＳＨ２を減算した値で上記加減速補正ＤＳＨＰＴを更新した後（ＤＳＨＰＴ←ＤＳＨＰＴ−ＤＤＳＨ２）、Ｓ１０３０  へ進む。
【０１８７】
上記第１，第２の減量値ＤＤＳＨ１，ＤＤＳＨ２を設定する各設定値ＤＤＳＨ１Ｎ，ＤＤＳＨ２Ｎ，ＤＤＳＨ１Ｄ，ＤＤＳＨ２ＤをＤＤＳＨ１Ｎ＞ＤＤＳＨ２Ｎ，ＤＤＳＨ１Ｄ＞ＤＤＳＨ２Ｄに設定したことで、スロットル全閉時エンジン回転数ＮＥ  がアイドル目標回転数ＮＳＥＴに低下する際に、エンジン回転数ＮＥがアイドル目標回転数ＮＳＥＴに近付いたら加減速補正ＤＳＨＰＴに対する減量値を小さな値とすることにより、エンジン回転数ＮＥのアイドル目標回転数ＮＳＥＴへの収束性がよくなり、制御ハンチングを防止することができる。
【０１８８】
そして、Ｓ１００７，Ｓ１０１１，Ｓ１０２０，Ｓ１０２４，Ｓ１０２５  あるいは、Ｓ１０２９  からＳ１０３０  へ進むと、Ｓ１００４，Ｓ１００５，Ｓ１０１１，Ｓ１０２０，Ｓ１０２４，Ｓ１０２５，あるいは、Ｓ１０２９  で設定した加減速補正ＤＳＨＰＴでＲＡＭ５０の所定アドレスに格納されている前回の加減速補正（ＤＳＨＰＴ）ＯＬＤ  を更新し（（ＤＳＨＰＴ）ＯＬＤ←ＤＳＨＰＴ）、ルーチンを抜ける。
【０１８９】
上記加減速補正設定の代表例を図３１のタイムチャートに従って説明する。
【０１９０】
アイドルスイッチ１２ｂがＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）からＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）になり（経過時間ｔ１  ）、スロットル開度ＴＨＶが次第に大きくなる加速運転では、エンジン回転数ＮＥがスロットル開度ＴＨＶに応じて上昇する。このとき、スロットル開度ＴＨＶに基づいて設定する加減速補正ＤＳＨＰＴが演算周期ごとに上昇し、この加減速補正ＤＳＨＰＴ（ＩＳＣＴＲ）を取入れて設定するＩＳＣバルブ１３のデューティ比ＩＳＣＯＮが大きくなり、ＩＳＣバルブ１３の開度が増大される（経過時間ｔ１  〜ｔ２  およびｔ３  〜ｔ４  ）。
【０１９１】
また、スロットル開度ＴＨＶがほぼ一定の定常運転では上記加減速補正ＤＳＨＰＴが一定になる（経過時間ｔ２  〜ｔ３  、およびｔ４  〜ｔ５  ）。
【０１９２】
スロットルバルブ１１ｄ，１１ｅが急閉すると吸気管圧力が急速に低下し、吸気ポート４、および、インテークマニホルド５の内壁面等に付着していた付着燃料が燃焼室に一気に吸込まれると共に、スロットルバルブ１１ｄ，１１ｅの急閉に伴う吸入空気量の減少により空燃比のオーバーリッチが生起されるが、スロットルバルブ１１ｄ，１１ｅの閉弁移行時（経過時間ｔ５  ）において、スロットル開度ＴＨＶに応じて加減速補正ＤＳＨＰＴが設定されており、この加減速補正ＤＳＨＰＴ分、デューティ比ＩＳＣＯＮが大きく設定されることにより、スロットル開度ＴＨＶに比例してＩＳＣバルブ１３の開度が確保され、スロットルバルブ１１ｄ，１１ｅの閉弁移行後、アイドルスイッチ１２ｂがＯＮ（スロットル全閉）するまでの間（経過時間ｔ５  〜ｔ６  ）、加減速補正ＤＳＨＰＴはスロットルバルブ１１ｄ，１１ｅの閉弁速度に拘らず、演算周期（５１．２ｍｓｅｃ）毎に設定値ＤＤＡＳＨずつ減少されるため、この間、ＩＳＣバルブ１３によって空気量が確保されると共に、吸気管圧力の低下が補償され、空燃比のオーバーリッチが防止される。これによって、スロットルバルブ急閉直後の空燃比オーバーリッチに起因する失火、異常燃焼が防止されて、排気エミッションが改善される。
【０１９３】
なお、スロットル開弁状態からスロットル全閉状態に移行する際の加減速補正ＤＳＨＰＴは、スロットル開度ＴＨＶに応じた値に設定されているので、スロットル全閉移行後のダッシュポット期間が常に適正に得られる。
【０１９４】
そして、アイドルスイッチ１２ｂがＯＮするとダッシュポット保持値ＲＤＡＳＨまで上記加減速補正ＤＳＨＰＴを演算周期ごとに第１の設定値ＤＤＳＨ１（但し、ＤＤＡＳＨ＞ＤＤＳＨ１＞ＤＤＳＨ２）ずつ減少させる（経過時間ｔ６  〜ｔ７  ）。これにより、スロットル全閉移行時には加減速補正ＤＳＨＰＴの減少率が比較的大きくなり、目標回転数への復帰時間が短縮される。
【０１９５】
その後、加減速補正ＤＳＨＰＴが上記ダッシュポット保持値ＲＤＡＳＨに達したら、この値を、上記エンジン回転数ＮＥがアイドル目標回転数ＮＳＥＴにオフセット値ＮＤＡＳＨを加算した値に低下するまで維持し（経過時間ｔ７  〜ｔ８  ）、エンジン回転数ＮＥがアイドル目標回転数ＮＳＥＴ  にオフセット値ＮＤＡＳＨを加算した値により低下したら、上記エンジン回転数ＮＥがアイドル目標回転数ＮＳＥＴに達するまで、上記第１の減量値ＤＤＳＨ１より小さい値の第２の減量値ＤＤＳＨ２で上記加減速補正ＤＳＨＰＴを演算周期ごとに減算する（経過時間ｔ８  以後）。
【０１９６】
その結果、アイドルスイッチ１２ｂのＯＮ後、エンジン回転数ＮＥがアイドル目標回転数ＮＳＥＴに達するまでの間、上記加減速補正ＤＳＨＰＴを用いて設定されるデューティ比ＩＳＣＯＮの減少率が順次小さくなり、ＩＳＣバルブ１３の開度減少率も順次小さくなる。これにより、アイドル目標回転数ＮＳＥＴに近付く際のエンジン回転数ＮＥの低下速度を減少させ、エンストを防止すると共に、エンジン回転数ＮＥのアイドル目標回転数ＮＳＥＴへの収束性を向上する。
【０１９７】
（ダッシュポット補正値設定割込みルーチン）
図１５は設定時間毎、例えば１００ｍｓｅｃ  毎に割込み実行するダッシュポット補正値設定ルーチンである。
【０１９８】
まず、Ｓ１１０１  でアイドルスイッチ１２ｂがＯＮかを判断し、ＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）の場合Ｓ１１０２  へ進み、ＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）の場合Ｓ１１０４  へ進む。
【０１９９】
Ｓ１１０２  ではエンジン回転数ＮＥ  と予め設定したダッシュポット判別回転数ＤＨＥＫＮとを比較し、ＮＥ＜ＤＨＥＫＮの場合Ｓ１１０３  へ進み、ＮＥ≧ＤＨＥＫＮの場合Ｓ１１０４  へ進む。このダッシュポット判別回転数ＤＨＥＫＮはエアコン補正などのアイドルアップを加味したアイドル回転数近傍の値（例えば１９００ｒｐｍ）である。
【０２００】
Ｓ１１０１  あるいはＳ１１０２  からＳ１１０４  へ進むとダッシュポット補正値ＤＨＥＮＢを０に設定（ＤＨＥＮＢ←０）した後、Ｓ１１１３  へ進む。
【０２０１】
また、Ｓ１１０２  からＳ１１０３  へ進むと前回のルーチン実行時（１００ｍｓｅｃ前）に設定しＲＡＭ５０の所定アドレスに格納したエンジン回転数（ＮＥ）ＯＬＤを読出し、Ｓ１１０５  で、前回のエンジン回転数（ＮＥ）ＯＬＤと現在のエンジン回転数ＮＥとの差から設定時間（１００ｍｓｅｃ）におけるエンジン回転数低下量ＮＤＯＷＮを算出する（ＮＤＯＷＮ←（ＮＥ）ＯＬＤ  −ＮＥ）。
【０２０２】
そして、Ｓ１１０６  で上記エンジン回転数低下量ＮＤＯＷＮと設定値ＤＮＥＳ１とを比較し、ＮＤＯＷＮ＜ＤＮＥＳ１の場合Ｓ１１０７  へ進み、エンジン回転数低下量が少ない状態（緩減速）であることを示すエンジン回転数低下量判別フラグＦＬＡＧＤＨをセット（ＦＬＡＧＤＨ←１）し、Ｓ１１１４  へ進む。
【０２０３】
また、Ｓ１１０６  でＮＤＯＷＮ≧ＤＮＥＳ１と判断されてＳ１１０８  へ進むと、上記エンジン回転数低下量ＮＤＯＷＮと設定値ＤＮＥＳ２（但し、ＤＮＥＳ１＜ＤＮＥＳ２）とを比較し、ＮＤＯＷＮ＜ＤＮＥＳ２の場合Ｓ１１０９  へ進みダッシュポット補正値ＤＨＥＮＢを設定値ＤＨＮＥＢ１［％］で設定し（ＤＨＥＮＢ←ＤＨＮＥＢ１）、Ｓ１１１３  へ進む。また、ＮＤＯＷＮ≧ＤＮＥＳ２の場合Ｓ１１１０  へ進む。
【０２０４】
Ｓ１１１０  では、上記エンジン回転数低下量ＮＤＯＷＮと設定値ＤＮＥＳ３（但し、ＤＮＥＳ２＜ＤＮＥＳ３）とを比較し、ＮＤＯＷＮ＜ＤＮＥＳ３の場合Ｓ１１１へ進みダッシュポット補正値ＤＨＥＮＢを設定値ＤＨＮＥＢ２（但し、ＤＨＮＥＢ１＜ＤＨＮＥＢ２）［％］で設定し（ＤＨＥＮＢ←ＤＨＮＥＢ２）、Ｓ１１１３  へ進む。また、ＮＤＯＷＮ≧ＤＮＥＳ３の場合Ｓ１１１２  へ進みダッシュポット補正値ＤＨＥＮＢを設定値ＤＨＮＥＢ３（但し、ＤＨＮＥＢ２＜ＤＨＮＥＢ３）［％］で設定し（ＤＨＥＮＢ←ＤＨＮＥＢ３）、Ｓ１１１３  へ進む。
【０２０５】
上記Ｓ１１０４，Ｓ１１０９，Ｓ１１１１，Ｓ１１１２  からＳ１１１３  へ進むとエンジン回転数低下量判別フラグＦＬＡＧＤＨをクリア（ＦＬＡＧＤＨ←０、低下量大）し、Ｓ１１１４  へ進む。
【０２０６】
そして、Ｓ１１０７  あるいはＳ１１１３  からＳ１１１４  へ進むと、現在のエンジン回転数ＮＥでＲＡＭ５０の所定アドレスに格納されている前回のエンジン回転数（ＮＥ）ＯＬＤを更新（（ＮＥ）ＯＬＤ←ＮＥ）し、ルーチンを抜ける。
【０２０７】
また、図１６は５１．２ｍｓｅｃ毎に割込み実行される補正値設定ルーチンにおいて実行（Ｓ２０４参照）されるダッシュポット補正値更新サブルーチンである。
【０２０８】
まず、Ｓ１２０１  でエンジン回転数低下量判別フラグＦＬＡＧＤＨの値を参照し、ＦＬＡＧＤＨ＝１（低下量小）の場合Ｓ１２０２  へ進み、ＦＬＡＧＤＨ＝０（低下量大）の場合ルーチンを抜ける。
【０２０９】
Ｓ１２０２  へ進むとダッシュポット補正値ＤＨＥＮＢ［％］が０以下かを判別し、ＤＨＥＮＢ≦０の場合Ｓ１２０３  へ進みダッシュポット補正値ＤＨＥＮＢを０［％］に設定（ＤＨＥＮＢ←０）した後、ルーチンを抜ける。
【０２１０】
また、Ｓ１２０２  でＤＨＥＮＢ＞０と判断されてＳ１２０４  へ進むと、上記ダッシュポット補正値ＤＨＥＮＢから設定値ＤＤＦＥＢ（微小値）で減算した値で、このダッシュポット補正値ＤＨＥＮＢを更新（ＤＨＥＮＢ←ＤＨＥＮＢ−ＤＤＦＥＢ）し、ルーチンを抜ける。
【０２１１】
図３２にダッシュポット補正値設定の代表例のタイムチャートを示す。
【０２１２】
スロットルバルブ１１ｄ，１１ｅの急閉による急減速時等、アイドルスイッチ１２ｂがＯＦＦ状態からＯＮ状態（スロットルバルブ１１ｄ，１１ｅが全閉状態）へ移行してエンジン回転数ＮＥが急激に低下し、ダッシュポット判別回転数ＤＨＥＫＮ（例えば、１９００ｒｐｍ）以下になり、エンジン回転数低下量ＮＤＯＷＮの比較的大きい（ＤＮＥＳ３≦ＮＤＯＷＮ）区間（経過時間ｔ１  〜ｔ２  ）では大きな値の設定値ＤＨＮＥＢ３［％］でダッシュポット補正値ＤＨＥＮＢを設定する。
【０２１３】
エンジン回転数ＮＥが急激に落ち込んだときにダッシュポット補正を行わないと、図の破線で示すように、エンジン回転数がそのまま落込みエンストしてしまう。そのため、スロットルバルブ１１ｄ，１１ｅが開の状態から全閉状態へ移行したときに、エンジン回転数ＮＥがアイドル回転数近傍の設定値ＤＨＥＫＮ（例えば、１９００ｒｐｍ）以下に急激に低下した際、エンジン回転数の低下量ＮＤＯＷＮ（＝（ＮＥ）ＯＬＤ−ＮＥ）が大きいほどダッシュポット補正値ＤＨＥＮＢを大きくすることで、ＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮを大きくし、このＩＳＣバルブ１３の開度を大きくして空気量を増加させてエンジン回転数ＮＥの落込みを防ぐ。
【０２１４】
その後、エンジン回転数低下量ＮＤＯＷＮが、ＤＮＥＳ２≦ＮＤＯＷＮ＜ＤＮＥＳ３の区間（経過時間ｔ２  〜ｔ３  ）では中間の値の設定値ＤＨＮＥＢ２［％］でダッシュポット補正値ＤＨＥＮＢを設定する。
【０２１５】
次いで、エンジン回転数低下量ＮＤＯＷＮが、ＤＮＥＳ１≦ＮＤＯＷＮ＜ＤＮＥＳ２の区間（経過時間ｔ３  〜ｔ４  ）では比較的小さな値の設定値ＤＨＮＥＢ１［％］でダッシュポット補正値ＤＨＥＮＢを設定する。
【０２１６】
エンジン回転数低下量ＮＤＯＷＮが比較的小さくなった状態でもダッシュポット補正値ＤＨＥＮＢを設定値ＤＨＮＥＢ３のままにしておくと、図の一点鎖線で示すように回転変動を生じアイドル回転数への収束性が悪くなる。
【０２１７】
そして、上記エンジン回転数低下量ＮＤＯＷＮが、ＮＤＯＷＮ＜ＤＮＥＳ１の区間（経過時間ｔ４  以後）では上記ダッシュポット補正値ＤＨＥＮＢを０になるまで演算周期（５１．２ｍｓｅｃ）毎に微小な設定値ＤＤＦＥＢずつ減算する。
【０２１８】
すなわち、経過時間ｔ４  のときにダッシュポット補正値ＤＨＥＮＢを０にするとＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮが急減するためにエンジン回転数ＮＥが、図の破線で示すように落込んでしまいアイドル回転数への収束性が悪くなってしまう。したがって、エンジン回転数ＮＥの低下量ＮＤＯＷＮの減少に伴い、ダッシュポット補正値ＤＨＥＮＢを減少させることでアイドル回転数への収束性を良くする。
【０２１９】
（ラジファン補正設定サブルーチン）
図１７は５１．２ｍｓｅｃ毎に割込み実行される補正値設定ルーチンにおいて実行（Ｓ２０５参照）されるラジファン補正ＩＳＣＲＡＳ  設定のサブルーチンである。
【０２２０】
まず、Ｓ１３０１  で、メインコンピュータ４１内のデータに基づいてラジエータファン６２の動作を制御するラジエータファンリレー６３がＯＮかを判別し、ＯＮの場合Ｓ１３０２  へ進み、ＯＦＦの場合Ｓ１３０３  へ進む。
【０２２１】
Ｓ１３０２  へ進むとＲＡＭ５０の所定アドレスに格納されているラジファン補正ＩＳＣＲＡＳを設定値ＲＡＳ［％］で設定し（ＩＳＣＲＡＳ←ＲＡＳ）、ルーチンを抜ける。また、Ｓ１３０３  へ進むと上記ラジファン補正ＩＳＣＲＡＳを０［％］に設定し（ＩＳＣＲＡＳ←０）、ルーチンを抜ける。
【０２２２】
なお、上記ラジファン補正ＩＳＣＲＡＳの設定をタイムチャートによって示せば図３３の通りである。
【０２２３】
ラジエータファン６２が作動しているときは、ラジエータファンモータにより消費電流が大きく、オルタネータ（発電機）の発電量も大きくなるため、エンジン１にかかる負荷もこれに相応する分大きくなりエンジン回転数ＮＥが低下しようとするが、ラジエータファン６２がＯＮのとき、ＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮをラジファン補正ＩＳＣＲＡＳによって大きくして、ＩＳＣバルブ１３の開度を増大させることによりエンジン回転数ＮＥの低下を防止する。
【０２２４】
（パワステ補正値設定サブルーチン）
図１８，図１９は５１．２ｍｓｅｃ毎に割込み実行される補正値設定ルーチンにおいて実行（Ｓ２０６参照）されるパワステ補正値ＩＳＣＰＳ設定のサブルーチンである。このサブルーチンで設定されるパワステ補正値ＩＳＣＰＳは、転舵角が大きくパワーステアリングオイルポンプを駆動するエンジン１の負荷が大きくなり、エンジン回転数ＮＥが低下するのを補償するものである。
【０２２５】
まず、Ｓ１４０１  でパワーステアリング転舵スイッチ５８（以下「パワステ転舵スイッチ」と略称する）がＯＮかを判断し、ＯＮ（転舵角大）の場合Ｓ１４０２  へ進み、ＯＦＦ（転舵角小）の場合Ｓ１４０９  へ進む。
【０２２６】
Ｓ１４０２  へ進むと車速センサ５６で検出した車速ＶＳＰと設定値ＶＳＰＰＳ［Ｋｍ／ｈ］とを比較し、ＶＳＰ≦ＶＳＰＰＳの場合Ｓ１４０３  へ進み、ＶＳＰ＞ＶＳＰＰＳの場合Ｓ１４０９  へ進む。
【０２２７】
Ｓ１４０３  へ進むと、冷却水温センサ２１で検出した冷却水温ＴＷ  と設定値ＴＷＰＳ  ［℃］とを比較し、ＴＷ≧ＴＷＰＳの場合Ｓ１４０４  へ進み、ＴＷ＜ＴＷＰＳの場合Ｓ１４０９  へ進む。
【０２２８】
上記Ｓ１４０２  において、車速ＶＳＰが設定値ＶＳＰＰＳ以上のときには走行によるエンジン負荷が大きいためパワステオイルポンプを駆動するエンジン負荷が相対的に小さくなる。したがって、パワステ補正値ＩＳＣＰＳによる補償が不要になる。また、Ｓ１４０３  において、暖機未完（ＴＷ＜ＴＷＰＳ）のときには基本特性値ＩＳＣＴＷが大きく設定されるので相対的にパワステオイルポンプを駆動するためのエンジン負荷が小さくなり、パワステ補正値ＩＳＣＰＳによる補償が不要になる。
【０２２９】
Ｓ１４０４  へ進むと、前回ルーチン実行時にアイドル状態の場合に１にセットされているアイドル回転数判別フラグＦＬＡＧＰＳの値を参照し、ＦＬＡＧＰＳ＝１（前回アイドル状態）の場合Ｓ１４０５  へ進み、ＦＬＡＧＰＳ＝０（前回アイドル解除状態）の場合Ｓ１４０６  へ進む。
【０２３０】
Ｓ１４０５  へ進むと設定値ＩＳＰＳＮＨ［ｒｐｍ］でアイドル判別回転数ＩＳＰＳＮを設定し（ＩＳＰＳＮ←ＩＳＰＳＮＨ）、Ｓ１４０７  へ進む。また、Ｓ１４０６  へ進むと設定値ＩＳＰＳＮＬ（但し、ＩＳＰＳＮＬ＜ＩＳＰＳＮＨ）［ｒｐｍ］でアイドル判別回転数ＩＳＰＳＮを設定し（ＩＳＰＳＮ←ＩＳＰＳＮＬ）、Ｓ１４０７  へ進む。
図３４に示すように、アイドル判別回転数ＩＳＰＳＮを設定する際にアイドル状態（ＦＬＡＧＰＳ＝１）とアイドル解除状態（ＦＬＡＧＰＳ＝０）とでヒステリシスを設けることにより、Ｓ１４０７  におけるアイドル状態判別の制御ハンチングを防止するようにしている
Ｓ１４０７  へ進むとエンジン回転数ＮＥとアイドル判別回転数ＩＳＰＳＮとを比較し、ＮＥ＞ＩＳＰＳＮの場合、アイドル解除状態と判断しＳ１４０８  へ進みアイドル回転数判別フラグＦＬＡＧＰＳをクリア（ＦＬＡＧＰＳ←０）した後Ｓ１４０９  へ進む。また、ＮＥ≦ＩＳＰＳＮの場合アイドル状態と判断し、Ｓ１４１０  へ進む。
【０２３１】
Ｓ１４１０  ではエアコンスイッチ８９がＯＦＦかを判断し、ＯＦＦの場合Ｓ１４１１  へ進み、ＯＮの場合Ｓ１４１２  へ進む。
【０２３２】
Ｓ１４１１  へ進むと、メインコンピュータ４１で演算したＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮに基づき、エアコンＯＦＦ時のパワステ補正値ＩＳＣＰＳをテーブル参照あるいは演算により設定し、Ｓ１４１３  へ進む。また、Ｓ１４１２  へ進むとメインコンピュータ４１で演算したＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮに基づきエアコンＯＮ時のパワステ補正値ＩＳＣＰＳをテーブル参照あるいは演算により設定しＳ１４１３  へ進む。
【０２３３】
図３５（ｂ）に示すように、実線で示すエアコンＯＦＦ時のパワステ補正値ＩＳＣＰＳは、一点鎖線で示すエアコンＯＮ時のパワステ補正値ＩＳＣＰＳよりも大きく設定する。すなわち、エアコンＯＮ時には、エアコン補正値ＩＳＣＡＣによりデューティ比ＩＳＣＯＮが大きく設定されるため、相対的にパワステによるエンジン負荷が少くなり、よって、エアコンＯＦＦ時よりもパワステ補正値ＩＳＣＰＳを小さく設定している。
【０２３４】
また、Ｓ１４１１  あるいはＳ１４１２  で設定するパワステ補正値ＩＳＣＰＳは、デューティ比ＩＳＣＯＮが大きい（小さい）ときにはエンジン１への負荷が大きく（小さく）、ＩＳＣバルブ１３の開度を大きく（小さく）して空気量を増加（減少）させ、エンジン回転数ＮＥの低下（上昇）を防止しているが、このときのエンジンにかかっている全負荷に対してパワステポンプによる負荷は相対的に小さい（大きい）ため小さく（大きく）設定している。
【０２３５】
そして、上記Ｓ１４１１  あるいはＳ１４１２  からＳ１４１３  へ進むと、アイドル回転数判別フラグＦＬＡＧＰＳをセット（ＦＬＡＧＰＳ←１）した後、ルーチンを抜ける。
【０２３６】
また、Ｓ１４０１，Ｓ１４０２，Ｓ１４０３，あるいは、Ｓ１４０８  からＳ１４０９  へ進むと、パワステ補正値ＩＳＣＰＳが０以下かを判別し、ＩＳＣＰＳ≦０の場合Ｓ１４１４  へ進みパワステ補正値ＩＳＣＰＳを０［％］に設定した後（ＩＳＣＰＳ←０）、ルーチンを抜ける。ＩＳＣＰＳ＞０の場合にはＳ１４１５  へ進み、パワステ補正値ＩＳＣＰＳから設定値ＤＩＳＣＰＳを減算してパワステ補正値ＩＳＣＰＳを更新した後（ＩＳＣＰＳ←ＩＳＣＰＳ−ＤＩＳＣＰＳ）、ルーチンを抜ける。
【０２３７】
図３５にパワステ補正値設定の代表的なタイムチャートを示す。
【０２３８】
暖機完了後のアイドル時、転舵角が大となりパワステ転舵スイッチ５８がＯＮすると、デューティ比ＩＳＣＯＮに応じたパワステ補正値ＩＳＣＰＳ（エアコンスイッチ８９がＯＦＦのときとＯＮのときによって相違する）が設定される（経過時間ｔ１  ）。
【０２３９】
これにより、転舵角大に伴うパワステオイルポンプ駆動負荷が増大した際に、パワステ補正値ＩＳＣＰＳによりＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮを大きくし、ＩＳＣバルブ１３の開度を大きくして空気量を増加させることでエンジン回転数の落込みが防止される。
【０２４０】
また、転舵角が小さくなり、パワステ転舵スイッチ５８がＯＮからＯＦＦに切換った直後（経過時間ｔ２  ）、直ちにパワステ補正値ＩＳＣＰＳを０［％］にすると、ＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮがパワステ補正値ＩＳＣＰＳ分、急減し、かつ、低下してはいるがパワステオイルポンプ駆動負荷が存在するため、図（ｃ）の二点鎖線で示すようにエンジン回転数ＮＥが大きく変動してしまうが、上記パワステ補正値ＩＳＣＰＳが０になるまで、演算周期（５１．２ｍｓｅｃ）毎に上記パワステ補正値ＩＳＣＰＳを設定値ＤＩＳＣＰＳずつ減算することで、ＩＳＣバルブ１３の開度を徐々に減少させて空気量を補償し、これによって、図（ｃ）の実線で示すようにエンジン回転数ＮＥの変動が防止される。
【０２４１】
（エアコンクラッチ補正値設定サブルーチン）
図２０は５１．２ｍｓｅｃ毎に割込み実行される補正値設定ルーチンにおいて実行（Ｓ２０７参照）されるエアコンクラッチ補正値ＩＳＣＣＬＨ設定のサブルーチンである。まず、Ｓ１５０１  でエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合Ｓ１５０２  へ進み、ＯＦＦの場合Ｓ１５０３  へ進む。
【０２４２】
Ｓ１５０２  へ進むとエアコンスイッチ８９がＯＮ→ＯＦＦ後設定時間ＴＣＬＨ［ＳＥＣ］経過したかを判別するためのエアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴＣＬＨ（ダウンカウンタ）を、上記設定時間ＴＣＬＨに相当する設定値ＴＡＣＣＬＨで設定し（ＣＯＵＮＴＣＬＨ←ＴＡＣＣＬＨ）、Ｓ１５０５へ進む。
【０２４３】
また、Ｓ１５０３  へ進むとエアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴＣＬＨの値を参照し、ＣＯＵＮＴＣＬＨ≠０の場合Ｓ１５０４  へ進み、カウントダウン（ＣＯＵＮＴＣＬＨ←ＣＯＵＮＴＣＬＨ−１）した後、Ｓ１５０５  へ進む。
【０２４４】
Ｓ１５０２  あるいはＳ１５０４  からＳ１５０５  へ進むとエアコンクラッチ補正値ＩＳＣＣＬＨを設定値ＤＩＳＣＬＨ［％］で設定した後（ＩＳＣＣＬＨ←ＤＩＳＣＬＨ）、ルーチンを抜ける。
【０２４５】
一方、Ｓ１５０３  でＣＯＵＮＴＣＬＨ１＝０であり、エアコンスイッチ８９をＯＮ→ＯＦＦ後、設定時間ＴＣＬＨ［ＳＥＣ５］経過したと判断してＳ１５０６  へ進むと上記エアコンクラッチ補正値ＩＳＣＣＬＨを０［％］に設定した後（ＩＳＣＣＬＨ←０）、ルーチンを抜ける。
【０２４６】
図３６に上記エアコンクラッチ補正値ＩＳＣＣＬＨの設定と、エアコンスイッチ８９のＯＮ／ＯＦＦ、エアコンクラッチリレー６５のＯＮ／ＯＦＦ、可変容量エアコンコンプレッサ６４の容量制御、および、エンジン回転数ＮＥとの関係を示す。
【０２４７】
まず、可変容量エアコンコンプレッサ６４に対する容量制御について述べる。エアコンスイッチ８９をＯＮするとメインコンピュータ４１により、設定遅れ時間ＡＣＥＮＴ（例えば、０．３ｓｅｃ）経過後、エアコンクラッチリレー６５がＯＮされて可変容量エアコンコンプレッサ６４のマグネットクラッチ６４ａが接続し、コンプレッサ６４が駆動され、メインコンピュータ４１からの要求容量信号に従いエアコン制御ユニット８１からコンプレッサ６４へコンプレッサ容量（ＤＵＴＹ）信号が出力され、コンプレッサ６４の容量が最小容量（ＭＩＮ）から設定容量に次第に増加される。そして、エアコンスイッチ８９をＯＦＦすると、上記可変容量エアコンコンプレッサ６４に対するコンプレッサ容量（ＤＵＴＹ）により、コンプレッサ６４の容量が最少容量（ＭＩＮ）に次第に減少され、エアコンスイッチ８９のＯＦＦ後、エアコンコンプレッサ６４の容量が最小容量（ＭＩＮ）に到達したと看做し得る十分な時間ＡＣＣＬＴＭ（例えば、８ｓｅｃ）経過後エアコンクラッチリレー６５がＯＦＦされる。
【０２４８】
このため、エアコンススイッチ８９のＯＮと同時に（経過時間ｔ１  ）、エアコンクラッチ補正値ＩＳＣＣＬＨを設定値ＤＩＳＣＬＨに設定し、ＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮを上記エアコンクラッチ補正分ＩＳＣＣＬＨ分増大させてＩＳＣバルブ１３の開度を増大させ、空気量を増加させることでエンジン回転数ＮＥを上昇させてエアコンクラッチリレー６５のＯＮによるコンプレッサ６４駆動のエンジン負荷増大に伴うエンジン回転数低下を防止する。
【０２４９】
その後、エアコンスイッチ８９をＯＦＦすると（経過時間ｔ２  ）、上記可変容量エアコンコンプレッサ６４の容量が次第に低下されると共に、前述のエアコン補正値ＩＳＣＡＣが次第に減少され（図７，８、及び図２９参照）、これに伴いＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮが減少することでＩＳＣバルブ１３の開度が減少して空気量が減少し、エンジン回転数ＮＥがエアコンＯＦＦ時の目標回転数に復帰される。
【０２５０】
可変容量コンプレッサ６４の容量が下がりきったとき（経過時間ｔ３  ）からマグネットクラッチ６４ａが切れるまで（エアコンクラッチリレー６５がＯＦＦするまで）の間Ｔ１  は、クラッチのフリクションが残っている。このため、可変容量エアコンコンプレッサ６４のマグネットクラッチ６４ａが切れた瞬間にクラッチによるフリクションが急になくるため図（ｅ）に破線で示すように一時的な回転数の吹上がりによる回転変動が生じフィーリングが悪化してしまう。
【０２５１】
エアコンクラッチ補正はこのクラッチのフリクションによるエンジン負荷を補償するためのものであり、エアコンスイッチ８９をＯＮしてから、エアコンスイッチ８９のＯＦＦ後、設定時間ＡＣＣＬＴＭ経過後エアコンクラッチリレー６５がＯＦＦし、可変容量エアコンコンプレットサ６４のマグネットクラッチ６４ａが完全に切れるまで、すなわち、エアコンスイッチ８９のＯＦＦ後、設定時間ＴＣＬＨ（ＴＣＬＨ＞ＡＣＣＬＴＭ）を経過するまでの間、エアコンクラッチ補正値ＩＳＣＣＬＨを設定値ＤＩＳＣＬＨに設定してＩＳＣバルブ１３に対するディーティ比ＩＳＣＯＮをこの間大きくし、エアコンクラッチ６４ａが切れたときエアコンクラッチ補正ＩＳＣＣＬＨを０にすることで、エアコンクラッチ６４ａが切れた瞬間にクラッチによるフリクションがなくなりエンジン負荷が減少した分、ＩＳＣＯＮを減少させてＩＳＣバルブ１３の開度を減少させ空気量を減じ、このときの回転変動を防止する。これにより、図（ｅ）の実線で示すように、エアコンクラッチ７６４ａが切れた直後の一時的な回転数の吹上りによる回転変動が解消し、フィーリングが向上する。
【０２５２】
（始動後補正設定割込みルーチン）
図２１はＩＳＣバルブ制御メインルーチンにおいて設定する始動時／通常時制御判別フラグＦＬＡＧＳＴが１→０になった時点で割込み実行する始動後補正初期値設定ルーチンである。
【０２５３】
始動時／通常時制御判別フラグＦＬＡＧＳＴがＦＬＡＧＳＴ＝１（始動時制御）からＦＬＡＧＳＴ＝０（通常時制御）に移行した直後、すなわち、スタータスイッチ６１がＯＮ→ＯＦＦで、かつ、エンジン回転数ＮＥがＮＥ≠０のときである始動時制御終了直後に割込みスタートすると、まず、Ｓ１６０１  で冷却水温ＴＷに基づき始動後補正初期値テーブルＴＩＳＣＳＤ（冷却水温ＴＷが低いほど大きな値が格納されている）を補間計算付で参照して始動後補正ＩＳＣＳＤの初期値を設定する。
【０２５４】
次いで、Ｓ１６０２  で冷却水温ＴＷに基づき始動後補正更新割込時間テーブルＴＴＤＩＳＣ（冷却水温ＴＷが低いほど長い時間の値が格納されている）を補間計算付で参照して始動後補正更新割込時間ＴＤＩＳＣを設定する。
【０２５５】
そして、Ｓ１６０３  で上記始動後補正更新割込時間ＴＤＩＳＣ毎の割込を許可してルーチンを抜ける。
【０２５６】
図２２は始動後補正更新割込時間毎に割込み実行される始動後補正設定ルーチンで、始動時制御から通常時制御へのデューティ比ＩＳＣＯＮのつながりを良くし、始動性を向上させるものである。
【０２５７】
まず、Ｓ１７０１  でＲＡＭ５０の所定アドレスに格納されている始動後補正ＩＳＣＳＤが０以下かを判断し、ＩＳＣＳＤ＞０の場合Ｓ１７０２  へ進み上記始動後補正ＩＳＣＳＤを設定値ＤＩＳＣＳＤで減算した値で更新し（ＩＳＣＳＤ←ＩＳＣＳＤ−ＤＩＳＣＳＤ）、ルーチンを抜ける。
【０２５８】
一方、Ｓ１７０１  でＩＳＣＳＤ≦０と判断されてＳ１７０３  へ進むと、ＲＡＭ５０の所定アドレスに格納されている始動後補正ＩＳＣＳＤを０［％］に固定して（ＩＳＣＳＤ←０）、Ｓ１７０４  へ進み、始動後補正更新割込時間ＴＤＩＳＣごとの割込みを禁止し、ルーチンを抜ける。
【０２５９】
始動後補正設定の代表例を図３７のタイムチャートに従って説明する。
【０２６０】
スタータスイッチ６１がＯＮ、あるいは、エンジン回転数ＮＥが０のとき（始動時／通常時制御判別フラグＦＬＡＧＳＴ＝１）始動後補正プログラムは実行されず（経過時間ｔ０  〜ｔ１  ）、スタータスイッチ６１がＯＮ→ＯＦＦ直後で、エンジン回転数ＮＥがＮＥ≠０のとき始動後補正ＩＳＣＳＤの初期値が設定される（経過時間ｔ１  ）。
【０２６１】
次いで、上記始動後補正ＩＳＣＳＤを０になるまで始動後補正更新割込時間ＴＤＩＳＣ毎に設定値ＤＩＳＣＳＤずつ減少させる。
【０２６２】
また、図３８にＩＳＣバルブ１３を制御するデューティ比ＩＳＣＯＮの変化と始動後補正ＩＳＣＳＤとの関係を示す。
【０２６３】
始動時制御（ＦＬＡＧＳＴ＝１）時においてはＩＳＣバルブ制御のメインルーチンにおいて設定するデューティ比ＩＳＣＯＮが比較的大きな値に設定されており、通常時制御へ移行すると（経過時間ｔ１）、各種補正項により緻密に制御されるため図の一点鎖線で示すようにつながりが悪くなり始動性が低下する。
【０２６４】
始動後補正ＩＳＣＳＤはこれを補償するためのものであり、始動時制御において設定されるデューティ比ＩＳＣＯＮは、冷却水温ＴＷに基づき設定される始動時特性値ＩＳＣＳＴが大部分を占め、冷却水温ＴＷが低いほど始動時特性値ＩＳＣＳＴが大きく設定されるため（図１参照）、始動時制御から通常時制御に移行する際のＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮの段差が大きくなる。
【０２６５】
このため、冷却水温ＴＷが低いほど、図３７の実線で示すように始動後補正ＩＳＣＳＤの初期値を大きく設定すると共に、始動後補正割込時間ＴＤＩＳＣを長く設定して始動後補正ＩＳＣＳＤが０になるまでの時間を長くし（経過時間ｔ１  〜ｔ３  ）、一方、冷却水温ＴＷが高いほど、図３７の破線で示すように始動後補正ＩＳＣＳＤの初期値を小さくし、かつ、始動後補正割込時間ＴＤＩＳＣを短く設定して始動後補正ＩＳＣＳＤが０になるまでの時間を短くすることで（経過時間ｔ１  〜ｔ２  ）、如何なる温度条件下においても始動時制御から通常時制御に移行する際のＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮのつながりを、図３８の実線で示すようにスムーズにし、ＩＳＣバルブ１３の開度変化の段差を解消してＩＳＣバルブ１３による空気流量の急変を防止し、始動性を向上する。
【０２６６】
（クローズドループ補正Ｉ分更新ルーチン）
図２３〜図２５は設定時間毎、例えば１０ｍｓｅｃ毎に割込み実行されるクローズドループ補正Ｉ分更新手順を示すフローチャートである。
【０２６７】
まず、Ｓ１８０１  でＩＳＣバルブ制御メインルーチンにおいて設定する始動時／通常時制御判別フラグＦＬＡＧＳＴの値を参照し、ＦＬＡＧＳＴ＝１（始動時あるいはエンスト中）の場合Ｓ１８０２  へ進み、ＦＬＡＧＳＴ＝０（通常時）の場合Ｓ１８０３  へ進む。
【０２６８】
Ｓ１８０２  へ進むと始動後通常運転（通常時制御）へ移行してから設定時間ＬＲＮＩＳＳ［ＳＥＣ］経過したかを判断するための通常時制御移行時間判別カウント値ＣＯＵＮＴＳＴＩ（ダウンカウンタ）に、上記設定時間ＬＲＮＩＳＳに相当する設定値ＣＯＵＮＴＬＲＮＩＳＳをセットし（ＣＯＵＮＴＳＴＩ←ＣＯＵＮＴＬＲＮＩＳＳ）、Ｓ１８５８へ進み、クローズドループ補正Ｉ分ＩＳＣＩを０［％］に設定してＳ１８５９  に進む。
【０２６９】
また、Ｓ１８０３  へ進むと上記通常時制御移行時間判別カウント値ＣＯＵＮＴＳＴＩの値を参照し、ＣＯＵＮＴＳＴＩ≠０の場合、通常時制御へ移行した後、設定時間ＬＲＮＩＳＳ経過していないと判断してＳ１８０４へ進み、カウント値ＣＯＵＮＴＳＴＩをカウントダウンし（ＣＯＵＮＴＳＴＩ←ＣＯＵＮＴＳＴＩ−１）、Ｓ１８０５へ進む。一方、ＣＯＵＮＴＳＴＩ＝０の場合、通常時制御へ移行してから設定時間経過したと判断し、Ｓ１８０５  へ進む。
【０２７０】
Ｓ１８０５  へ進むと冷却水温ＴＷと設定温度ＬＲＮＩＴＷ［℃］とを比較し、ＴＷ≧ＬＲＮＩＴＷの場合Ｓ１８０６  へ進み、ＴＷ＜ＬＲＮＩＴＷの場合Ｓ１８１０  へ進む。Ｓ１８０６  へ進むと前回のルーチン時に読出した始動時／通常時制御判別フラグ（ＦＬＡＧＳＴ）ＯＬＤの値を参照し、（ＦＬＡＧＳＴ）ＯＬＤ＝１（前回ルーチン実行時、始動時制御）の場合、通常時制御移行初回と判断してクローズドループ補正Ｉ分初期設定すべくＳ１８０７  へ進み、（ＦＬＡＧＳＴ）ＯＬＤ＝０の場合Ｓ１８１０  へ進む。
【０２７１】
Ｓ１８０７  ではエアコンスイッチ８９がＯＮかどうかを判断し、ＯＮの場合Ｓ１８０８  へ進み、ＯＦＦの場合Ｓ１８０９  へ進む。
【０２７２】
Ｓ１８０８  へ進むとバックアップＲＡＭ５０ａに格納されているエアコンＯＮ時のＩ分学習値ＡＣＯＮＩを読出してクローズドループ補正Ｉ分ＩＳＣＩをエアコンＯＮ時のＩ分学習値ＡＣＯＮＩで初期設定し、また、Ｓ１８０９  へ進むと、クローズドループ補正Ｉ分ＩＳＣＩ  をバックアップＲＡＭ５０ａに格納されているエアコンＯＦＦ時のＩ分学習値ＡＣＯＦＦＩで初期設定し、それぞれＳ１８１０  へ進む。
【０２７３】
上記各Ｉ分学習値ＡＣＯＮＩ，ＡＣＯＦＦＩは後述するクローズドループ補正Ｉ分学習値学習サブルーチンで更新され、バックアップＲＡＭ５０ａの所定アドレスに格納されているもので、スタータスイッチ６１がＯＮ→ＯＦＦ（始動時制御から通常時制御）へ移行した直後の１回だけ、前回のエンジン運転時にエアコン作動状態に応じて学習したＩ分学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩによりクローズドループ補正Ｉ分ＩＳＣＩ  を初期設定する。これによりクローズドループ補正Ｉ分が直ちに補償され、制御性が向上する。
【０２７４】
また、上記各学習値ＡＣＯＮＩ、ＡＣＯＦＦＩをエアコンの作動状態別に設定しているので、エンジン負荷に応じたクローズドループ補正Ｉ分ＩＳＣＩを初期設定することができ、エンジン回転をスムーズに立上げることができる。
【０２７５】
そして、Ｓ１８１０  へ進むと前述のクローズド／オープンループ制御判別サブルーチンで設定したクローズド／オープンループ制御判別フラグＦＬＡＧＣＬの値を参照し、ＦＬＡＧＣＬ＝１（クローズドループ制御）の場合Ｓ１８１１  へ進み、ＦＬＡＧＣＬ＝０（オープンループ制御）の場合、後述の補正量ΔＩを更新することなくＳ１８１２  へ進む。
【０２７６】
Ｓ１８１１  へ進むと、始動後補正ＩＳＣＳＤの値を参照して始動後補正実行中（ＩＳＣＳＤ≠０）かを判断し、ＩＳＣＳＤ≠０の場合Ｓ１８１３  へ進み、ＩＳＣＳＤ＝０の場合Ｓ１８１７  へ進む。Ｓ１８１３  へ進むと冷却水温ＴＷと設定温度ＴＷＡＳ［℃］とを比較し、ＴＷ≧ＴＷＡＳ（暖機完了）の場合Ｓ１８１４  へ進み、ＴＷ＜ＴＷＡＳ（暖機中）の場合Ｓ１８１７  へ進む。Ｓ１８１４  へ進むと、車速ＶＳＰと設定値ＶＳＡＳ［Ｋｍ／ｈ］とを比較し、ＶＳＰ＜ＶＳＡＳ（停車）の場合Ｓ１８１５  へ進み、ＶＳＰ≧ＶＳＡＳ（走行）の場合Ｓ１８１７  へ進む。
【０２７７】
その後、Ｓ１８１５  へ進むとクローズドループ補正Ｉ分ＩＳＣＩに始動後補正ＩＳＣＳＤを加算した値で上記クローズドループ補正Ｉ分ＩＳＣＩを更新し（ＩＳＣＩ←ＩＳＣＩ＋ＩＳＣＳＤ）、Ｓ１８１６  へ進み上記始動後補正ＩＳＣＳＤを上記クローズドループ補正Ｉ分に移行させた分、この始動後補正ＩＳＣＳＤをクリアし（ＩＳＣＳＤ←０）、Ｓ１８１７  へ進む。
【０２７８】
図３９の（ａ），（ｂ）に示すようにオープンループ制御からクローズドループ制御へ移行した際、始動後補正ＩＳＣＳＤ（ＩＳＣＡＳ）のクローズドループ補正Ｉ分ＩＳＣＩへの移行を行わず前述した始動後補正設定ルーチン（図２２）を始動後補正ＩＳＣＳＤが０になるまで実行するとすれば、このクローズドループ補正Ｉ分ＩＳＣＩが収束するまでの間、デューティ比ＩＳＣＯＮに段差が生じエンジン回転数ＮＥが変動してしまう。この対策として後述する補正量ΔＩを大きくすることも考えられるが、この補正量ΔＩを極端に大きくすると収束性が悪化しエンジン回転数ＮＥにハンチングが生じる。
【０２７９】
これに対し、図３９の（ｃ），（ｄ）に示すように所定条件成立時（ＴＷ≧ＴＷＡＳ、且つ、ＶＳＰ＜ＶＳＡＳ）、オープンループ制御からクローズドループ制御に移行した際、始動後補正ＩＳＣＳＤ（ＩＳＣＡＳ）がＩＳＣＳＤ≠０のとき、始動後補正ＩＳＣＳＤ（ＩＳＣＡＳ）をクローズドループ補正Ｉ分ＩＳＣＩに移行させているので、増量分をクローズドループ補正Ｉ分ＩＳＣＩで補うようになり、オープンループ制御からクローズドループ制御へのつながりが良くなり、このときのエンジン回転数ＮＥの変動が防止される。
【０２８０】
その後、上記Ｓ１８１１，Ｓ１８１３，Ｓ１８１４  あるいは、Ｓ１８１６  からＳ１８１７  へ進むとアイドル目標回転数ＮＳＥＴとエンジン回転数ＮＥとの差回転ΔＮを求め（ΔＮ←ＮＳＥＴ−ＮＥ）、Ｓ１８１８  へ進みエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合Ｓ１８１９
へ進み、ＯＦＦの場合Ｓ１８２０  へ進む。
【０２８１】
Ｓ１８１９  へ進むと上記差回転ΔＮと設定値ＮＩＨ３（ＮＩＨ３＜０）とを比較し、ΔＮ≦ＮＩＨ３の場合Ｓ１８２６  へ進み、補正量ΔＩを設定値ＴＩＰＴＡＨ３（ＴＩＰＴＡＨ３＜０）に設定し（ΔＩ←ＴＩＰＴＡＨ３）、Ｓ１８４５  へ進む。
【０２８２】
また、上記Ｓ１８１９  でΔＮ＞ＮＩＨ３の場合にはＳ１８２１  へ進み、上記差回転ΔＮと設定値ＮＩＨ２（但し、ＮＩＨ３＜ＮＩＨ２＜０）とを比較し、ΔＮ≦ＮＩＨ２の場合、Ｓ１８２７  へ進み補正値ΔＩを設定値ＴＩＰＴＡＨ２（但し、ＴＩＰＴＡＨ３＜ＴＩＰＡＴＡＨ２＜０）に設定し（ΔＩ←ＴＩＰＴＡＨ２）、Ｓ１８４５  へ進む。また、ΔＮ＞ＮＩＨ２の場合Ｓ１８２２  へ進み差回転ΔＮと設定値ＮＩＨ１（但し、ＮＩＨ２＜ＮＩＨ１＜０）とを比較し、ΔＮ≦ＮＩＨ１の場合Ｓ１８２８  へ進み補正量ΔＩを設定値ＴＩＰＴＡＨ１（但し、ＴＩＰＴＡＨ２＜ＴＩＰＴＡＨ１＜０）で設定し（ΔＩ←ＴＩＰＴＡＨ１）、Ｓ１８４５  へ進む。
【０２８３】
また、上記Ｓ１８２２  でΔＮ＞ＮＩＨ１と判断されてＳ１８２３  へ進むと差回転ΔＮと０とを比較し、ΔＮ≦０の場合Ｓ１８２９  へ進み補正量ΔＩを設定値ＴＩＰＴＡＨ（但し、ＴＩＰＴＡＨ１＜ＴＩＰＴＡＨ，ＴＩＰＡＴＨ＝０［％］）で設定し（ΔＩ←ＴＩＰＴＡＨ）、Ｓ１８４５  へ進む。また、ΔＮ＞０の場合Ｓ１８２４  へ進む。  Ｓ１８２４  へ進むと差回転ΔＮと設定値ＮＩＬ１（但し、０＜ＮＩＬ１）とを比較し、ΔＮ≦ＮＩＬ１の場合Ｓ１８３０  へ進み、補正量ΔＩを設定値ＴＩＰＴＡＬ（但し、ＴＩＰＴＡＨ≦ＴＩＰＡＴＬ）で設定し（ΔＩ←ＴＩＰＴＡＬ）、Ｓ１８４５  へ進む。また、ΔＮ＞ＮＩＬ１の場合Ｓ１８２５  へ進む。
【０２８４】
Ｓ１８２５  へ進むと、差回転ΔＮと設定値ＮＩＬ２（但し、ＮＩＬ１＜ＮＩＬ２）とを比較し、ΔＮ≦ＮＩＬ２の場合Ｓ１８３１  へ進み、補正量ΔＩをＴＩＰＴＡＬ１（但し、ＴＩＰＴＡＬ＜ＴＩＰＴＡＬ１）で設定し（ΔＩ←ＴＩＰＴＡＬ１）、Ｓ１８４５  へ進む。また、ΔＮ＞ＮＩＬ２の場合Ｓ１８３２  へ進み補正量ΔＩを設定値ＴＩＰＴＡＬ２（但し、ＴＩＰＴＡＬ１＜ＴＩＰＴＡＬ２）で設定し（ΔＩ←ＴＩＰＴＡＬ２）、Ｓ１８４５  へ進む。
【０２８５】
図４０に補正量ΔＩと差回転ΔＮとの関係を示す。図からも分かるように差回転ΔＮが小さければ補正量ΔＩも小さく設定される。これによりアイドル目標回転数ＮＳＥＴに対するエンジン回転数ＮＥの収束性がよくなる。
【０２８６】
一方、上記Ｓ１８１８  でエアコンスイッチ８９がＯＦＦと判断されてＳ１８２０  へ進むと、このＳ１８２０，Ｓ１８３３  〜Ｓ１８３７  において、差回転ΔＮと設定値ＮＩＨ３，ＮＩＨ２，ＮＩＨ１，０，ＮＩＬ１，ＮＩＬ２とを上述と同様に比較し、Ｓ１８２０  でΔＮ≦ＮＩＨ３と判断されてＳ１８３８  へ進むと補正量ΔＩを設定値ＴＩＰＲＴＨ３で（但し、ＴＩＰＲＴＨ３＜０）設定し（ΔＩ←ＴＩＰＲＴＨ３）、Ｓ１８４５  へ進む。
【０２８７】
Ｓ１８３３  でΔＮ≦ＮＩＨ２と判断されてＳ１８３９  へ進むと補正量ΔＩを設定値ＴＩＰＲＴＨ２（但し、ＴＩＰＲＴＨ３＜ＴＩＰＲＴＨ２＜０）で設定し（ΔＩ←ＴＩＰＲＴＨ２）、Ｓ１８４５  へ進む。
【０２８８】
Ｓ１８３４  でΔＮ≦ＮＩＨ１と判断されてＳ１８４０  へ進むと補正量ΔＩを設定値ＴＩＰＲＴＨ１（但し、ＴＩＰＲＴＨ２＜ＴＩＰＲＴＨ１＜０）で設定し（ΔＩ←ＴＩＰＲＴＨ）、Ｓ１８４５  へ進む。
【０２８９】
Ｓ１８３５  でΔＮ≦０と判断されてＳ１８４１  へ進むと補正量ΔＩを設定値ＴＩＰＲＴＨ（但し、ＴＩＰＲＴＨ１＜ＴＩＰＲＴＨ，ＴＩＰＲＴＨ＝０［％］）で設定し（ΔＩ←ＴＩＰＲＴＨ）、Ｓ１８４５  へ進む。
【０２９０】
Ｓ１８３６  でΔＮ≦ＮＩＬ１と判断されてＳ１８４２  へ進むと補正量ΔＩを設定値ＴＩＰＲＴＬ（但し、ＴＩＰＲＴＨ≦ＴＩＰＲＴＬ）で設定し（ΔＩ←ＴＩＰＲＴＬ）、Ｓ１８４５  へ進む。
【０２９１】
Ｓ１８３７  でΔＮ≦ＮＩＬ２と判断されてＳ１８４３  へ進むと補正量ΔＩを設定値ＴＩＰＲＴＬ１（但し、ＴＩＰＲＴＬ＜ＴＩＰＲＴＬ１）で設定し（ΔＩ←ＴＩＰＲＴＬ１）、Ｓ１８４５  へ進む。また、Ｓ１８３７  でΔＮ＞ＮＩＬ２と判断されてＳ１８４４  へ進むと、補正量ΔＩを設定値ＴＩＰＲＴＬ２（但し、ＴＩＰＲＴＬ１＜ＴＩＰＲＴＬ２）で設定し（ΔＩ←ＴＩＰＲＴＬ２）、Ｓ１８４５  へ進む。
【０２９２】
そして、Ｓ１８２６  〜Ｓ１８３２  ，あるいは、Ｓ１８３８  〜Ｓ１８４４  のいずれかからＳ１８４５  へ進むと、ＲＡＭ５０の所定アドレスに格納されているクローズドループ補正Ｉ分ＩＳＣＩをこのクローズドループ補正Ｉ分ＩＳＣＩに上記Ｓ１８２６  〜Ｓ１８３２  ，Ｓ１８３８  〜Ｓ１８４４  のいずれかで設定した補正量ΔＩを加算した値で更新し（ＩＳＣＩ←ＩＳＣＩ＋ΔＩ）、Ｓ１８４６  へ進む。
【０２９３】
図４１にアイドル目標回転数ＮＳＥＴに対するエンジン回転数ＮＥの変動と、補正量ΔＩおよびクローズドループ補正Ｉ分ＩＳＣＩとの関係をタイムチャートによって示す。
【０２９４】
［経過時間ｔ０  〜ｔ１  ］
アイドル目標回転数ＮＳＥＴに対しエンジン回転数ＮＥが設定値ＮＩＨ３以上であるため（ΔＮ≦ＮＩＨ３）、エンジン回転数ＮＥを下げるべく補正量ΔＩを最小の設定値ＴＩＰＴＡＨ３で設定する（Ｓ１８２６  ）。
【０２９５】
その結果、クローズドループ補正Ｉ分ＩＳＣＩが上記設定値ＴＩＰＴＡＨ３だけ低い値になり、その分、ＩＳＣバルブ１３に対するディーティ比ＩＳＣＯＮが低下してＩＳＣバルブ１３の開度が減少し、エンジン回転数ＮＥが低下する。
【０２９６】
［経過時間ｔ１  〜ｔ２  ］
次いで、差回転ΔＮが設定値ＮＩＨ３とＮＩＨ２との間に収まると、補正量ΔＩが設定値ＴＩＰＴＡＨ２で設定され（Ｓ１８２７  ）、クローズドループ補正Ｉ分ＩＳＣＩが設定値ＴＩＰＴＡＨ２分だけ更に低くなる。
【０２９７】
［経過時間ｔ２  〜ｔ３  ］
その後、差回転ΔＮが設定値ＮＩＨ２とＮＩＨ１との間に収まると、補正量ΔＩが設定値ＴＩＰＴＡＨ１で設定され（Ｓ１８２８  ）、クローズドループ補正Ｉ分ＩＳＣＩが設定値ＴＩＰＴＡＨ１分だけ低くなり、エンジン回転数ＮＥが低下する。
【０２９８】
そして、差回転ΔＮが設定値ＮＩＨ１と０との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＨ（０［％］）で設定され（Ｓ１８２９  ）、したがって、クローズドループ補正Ｉ分ＩＳＣＩは変化しない。
【０２９９】
その後、差回転ΔＮが設定値０とＮＩＬ１との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＬ（ＴＩＰＴＡＨ≦ＴＩＰＴＡＬ）で設定される（Ｓ１８３０  ）。
【０３００】
［経過時間ｔ３  〜ｔ４  ］
次いで、差回転ΔＮが設定値ＮＩＬ１とＮＩＬ２との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＬ１で設定され（Ｓ１８３１  ）、クローズドループ補正Ｉ分ＩＳＣＩが上記設定値ＴＩＰＴＡＬ１分だけ高くなる。
【０３０１】
［経過時間ｔ４  〜ｔ５  ］
その後、エンジン回転数ＮＥがアイドル目標回転数ＮＳＥＴに対して設定値ＮＩＬ２より低くなると（ΔＮ＞ＮＩＬ２）補正量ΔＩが設定値ＴＩＰＴＡＬ２で設定され（Ｓ１８３２  ）、クローズドループ補正Ｉ分ＩＳＣＩが上記設定値ＴＩＰＴＡＬ２だけ高くなる。
【０３０２】
［経過時間ｔ５  〜ｔ６  ］
また、差回転ΔＮが設定値ＮＩＬ２とＮＩＬ１との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＬ１で設定され（Ｓ１８３１  ）、クローズドループ補正Ｉ分ＩＳＣＩが設定値ＴＩＰＴＡＬ１だけ高くなる。
【０３０３】
そして、差回転ΔＮが設定値ＮＩＬ１とＮＩＨ１との間に収まっている間は設定値ＴＩＰＴＡＬとＴＩＰＴＡＨとが０［％］であるためクローズドループ補正Ｉ分ＩＳＣＩは変化しない。
【０３０４】
［経過時間ｔ６  以後］
一方、差回転ΔＮが設定値ＮＩＨ１とＮＩＨ２との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＨ１で設定され、その後、差回転ΔＮが設定値ＮＩＨ１とＮＩＬ１との間に収束し、補正量ΔＩが設定値ＴＩＰＴＡＬ，ＴＩＰＴＡＨ（いずれも０［％］）に設定されるため、クローズドループ補正Ｉ分ＩＳＣＩは一定となる。
【０３０５】
上記Ｓ１８４５  でクローズドループ補正Ｉ分ＩＳＣＩを設定した後、Ｓ１８４６  へ進むと、クローズドループ補正Ｉ分の学習サブルーチン（詳細は後述する）が実行される。
【０３０６】
次いで、Ｓ１８４７  で通常時制御移行時間判別カウント値ＣＯＵＮＴＳＴＩの値を参照し、ＣＯＵＮＴＳＴＩ≠０（始動後設定時間ＬＲＮＩＳＳ内）の場合Ｓ１８４８  へ進み、ＣＯＵＮＴＳＴＩ＝０の場合Ｓ１８５０  へ進む。
【０３０７】
Ｓ１８４８  へ進むと、冷却水温ＴＷと暖機再始動かどうかを判断する予め設定された暖機完了判定値ＬＲＮＩＴＷとを比較し、ＴＷ≧ＬＲＮＩＴＷ（暖機再始動）の場合Ｓ１８４９  へ進み、ＴＷ＜ＬＲＮＩＴＷ（エンジン冷態状態）の場合Ｓ１８５０  へ進む。
【０３０８】
Ｓ１８４９  へ進むと、クローズドループ補正Ｉ分ＩＳＣＩと下限値ＩＭＩＮＢＬとを比較し、ＩＳＣＩ≦ＩＭＩＮＢＬの場合Ｓ１８５３  へ進み、上記クローズドループ補正Ｉ分ＩＳＣＩを上記下限値ＩＭＩＮＢＬで設定してＳ１８５９  へ進む。
【０３０９】
一方、Ｓ１８４９  でＩＳＣＩ＞ＩＭＩＮＢＬと判断されるとＳ１８５１  へ進み、上記クローズドループ補正Ｉ分ＩＳＣＩと上限値ＩＭＡＸＢＬとを比較し、ＩＳＣＩ≧ＩＭＡＸＢＬの場合、Ｓ１８５４  へ進み、上記クローズドループ補正Ｉ分ＩＳＣＩを上記上限値ＩＭＡＸＢＬで設定しＳ１８５９  へ進む。また、ＩＳＣＩ＜ＩＭＡＸＢＬの場合、上記クローズドループ補正Ｉ分ＩＳＣＩが許容範囲（ＩＭＡＸＢＬ＞ＩＳＣＩ＞ＩＭＩＮＢＬ）に収まっていると判断し、そのままＳ１８５９  へ進む。
【０３１０】
また、Ｓ１８４７  ，あるいは、Ｓ１８４８  からＳ１８５０  へ進むと、上記クローズドループ補正Ｉ分ＩＳＣＩと、前述のＩＳＣバルブ制御メインルーチンで設定したデューティ制限下限値ＩＭＩＮＣＬから前述の基本特性値設定サブルーチンで設定した基本特性値ＩＳＣＴＷを減算した値（下限値）とを比較し、ＩＳＣＩ≦（ＩＭＩＮＣＬ−ＩＳＣＴＷ）の場合Ｓ１８５５  へ進み、上記クローズドループ補正Ｉ分ＩＳＣＩを上記下限値（ＩＭＩＮＣＬ−ＩＳＣＴＷ）で設定し（ＩＳＣＩ←ＩＭＩＮＣＬ−ＩＳＣＴＷ）、Ｓ１８５９  へ進む。
【０３１１】
また、Ｓ１８５０  でＩＳＣＩ＞（ＩＭＩＮＣＬ−ＩＳＣＴＷ）の場合にはＳ１８５２  へ進み、クローズドループ補正Ｉ分ＩＳＣＩと、ＩＳＣバルブ制御メインルーチンで設定したデューティ制限上限値ＩＭＡＸＣＬ  から基本特性値ＩＳＣＴＷを減算した値（上限値）とを比較し、ＩＳＣＩ≧（ＩＭＩＮＣＬ−ＩＳＣＴＷ）の場合にはＳ１８５６  へ進み、上記クローズドループ補正Ｉ分ＩＳＣＩを上記上限値（ＩＭＡＸＣＬ  −ＩＳＣＴＷ）で設定し（ＩＳＣＩ←ＩＭＩＮＣＬ−ＩＳＣＴＷ）、Ｓ１８５９  へ進む。Ｓ１８５２  でＩＳＣＩ＜（ＩＭＩＮＣＬ−ＩＳＣＴＷ）の場合には、上記クローズドループ補正Ｉ分ＩＳＣＩが許容範囲（（ＩＭＩＮＣＬ−ＩＳＣＴＷ）＜ＩＳＣＩ＜（ＩＭＡＸＣＬ  −ＩＳＣＴＷ））に収まっていると判断し、そのままＳ１８５９  へ進む。
【０３１２】
ＩＳＣバルブ１３に対するデューティ比ＩＳＣＯＮの大部分は基本特性値ＩＳＣＴＷであり、デューティ制限下限値ＩＭＩＮＣＬから基本特性値ＩＳＣＴＷを減算することで、基本特性値ＩＳＣＴＷ以外の補正項に対する下限値を設定し、また、デューティ制限上限値ＩＭＡＸＣＬ  から基本特性値ＩＳＣＴＷを減算することで上限値を設定する。
【０３１３】
但し、〈１〉始動後、所定時間ＬＲＮＩＳＳ［ｓｅｃ］以内の場合（Ｓ１８４７  ）、且つ、〈２〉冷却水温ＴＷ  と暖機再始動かを判断する暖機完了判定値ＬＲＮＩＴＷとがＴＷ≧ＬＲＮＩＴＷの場合（Ｓ１８４８  ）、暖機再始動時と判断し、オープンループ、クローズドループ制御を問わず
ＩＭＩＮＢＬ≦ＩＳＣＩ≦ＩＭＡＸＢＬ
とする。
【０３１４】
暖機再始動において通常時制御に移行したとき、クローズドループ補正Ｉ分ＩＳＣＩの初期設定の際に（Ｓ１８０８  、あるいは、Ｓ１８０９  ）、クローズドループ補正Ｉ分ＩＳＣＩが小さな値（負の値を含む）の学習値ＡＣＯＮＩ（エアコンスイッチ８９がＯＮ時）、あるいは、学習値ＡＣＯＦＦＩ（エアコンスイッチ８９がＯＦＦ時）で更新されるとエンジン回転数ＮＥが低下してしまい、著しい場合はエンストしてしまう。このため、上限値、下限値をそれぞれ設定値ＩＭＩＮＢＬ，ＩＭＡＸＢＬとして、クローズドループ補正Ｉ分ＩＳＣＩの上限値、下限値をシフトアップさせることで再始動性を改善させている（図４１（ｃ）参照）。
【０３１５】
一方、上記Ｓ１８１０  でＦＬＡＧＣＬ＝０（オープンループ制御）と判断されてＳ１８１２  へ進むと冷却水温ＴＷと、オープンループ制御中の冷却水温ＴＷが低水温かを判断する設定値ＴＷＣＬ［℃］とを比較し、ＴＷ≦ＴＷＣＬの場合Ｓ１８５７  へ進み、ＴＷ＞ＴＷＣＬの場合既述したＳ１８４７  へ進む。
【０３１６】
Ｓ１８５７  へ進むとクローズドループ補正Ｉ分ＩＳＣＩの値を参照し、ＩＳＣＩ＜０の場合Ｓ１８５８  へ進み、上記クローズドループ補正Ｉ分ＩＳＣＩを０に設定した後（ＩＳＣＩ←０）、Ｓ１８５９  へ進む。また、ＩＳＣＩ≧０の場合上記Ｓ１８４７  へ進む。
【０３１７】
このように、オープンループ制御中（ＦＬＡＧＣＬ＝０）の冷却水温ＴＷが低水温時（ＴＷ≦ＴＷＣＬ）で、かつ、クローズドループ補正Ｉ分ＩＳＣＩが負側にあるとき（ＩＳＣＩ＜０）には、このクローズドループ補正Ｉ分ＩＳＣＩを０に設定している（ＩＳＣＩ←０）。すなわち、後述する学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩにより設定したクローズドループ補正Ｉ分ＩＳＣＩが負側のときにはデューティ比ＩＳＣＯＮが小さくなり、ＩＳＣバルブ１３の開度が減少してエンジン回転数ＮＥが低下する方向に作用し、これを防止するため、スタータスイッチ６１がＯＮからＯＦＦ（始動時制御→通常時制御）へ移行した直後に学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩにより設定されるクローズドループ補正Ｉ分ＩＳＣＩの下限値を０としている。
【０３１８】
そして、Ｓ１８５３  〜Ｓ１８５６  ，あるいは、Ｓ１８５８  のいずれかからＳ１８５９  へ進むと、今回の始動時／通常時制御判別フラグＦＬＡＧＳＴでＲＡＭ５０の所定アドレスに格納されている次回のルーチンで使用する前回の始動時／通常時制御判別フラグ（ＦＬＡＧＳＴ）ＯＬＤを更新し（（ＦＬＡＧＳＴ）ＯＬＤ←ＦＬＡＧＳＴ）、ルーチンを抜ける。
【０３１９】
なお、本実施例においてはクローズドループ補正Ｉ分ＩＳＣＩを、比例積分制御（ＰＩ制御）を用いずに積分制御（Ｉ制御）のみで設定しているので、緻密なフィードバック制御が実行される。
【０３２０】
（クローズドループ補正Ｉ分学習サブルーチン）
図２６はクローズドループ補正Ｉ分更新手順において実行（Ｓ１８４６  参照）されるクローズドループ補正Ｉ分学習サブルーチンである。
【０３２１】
まず、Ｓ１９０１  〜Ｓ１９０８  で学習条件が成立しているかを判断する。
【０３２２】
すなわち、Ｓ１９０１  では、冷却水温ＴＷと暖機完了判定値ＬＲＮＩＴＷ［℃］とを比較し、ＴＷ≧ＬＲＮＩＴＷ（エンジン暖機完了状態）の場合Ｓ１９０２  へ進み、ＴＷ＜ＬＲＮＩＴＷ（エンジン冷態状態）の場合Ｓ１９１３  へ進む。
【０３２３】
Ｓ１９０２  へ進むとパワステ補正値ＩＳＣＰＳの値を参照）し、ＩＳＣＰＳ＝０（パワーステアリング転舵角小）の場合Ｓ１９０３  へ進み、ＩＳＣＰＳ≠０の場合Ｓ１９１３  へ進む。
【０３２４】
Ｓ１９０３  へ進むと、エアコンスイッチ８９がＯＦＦかを判断し、ＯＦＦの場合Ｓ１９０４  へ進み、ＯＮの場合Ｓ１９０５  へ進む。
【０３２５】
Ｓ１９０４  へ進むと、ラジファン補正値ＩＳＣＲＡの値を参照し、ＩＳＣＲＡ＝０（ラジエータファン６２がＯＦＦ）の場合Ｓ１９０５  へ進み、ＩＳＣＲＡ≠０の場合Ｓ１９１３  へ進む。
【０３２６】
そして、Ｓ１９０３  あるいはＳ１９０４  からＳ１９０５  へ進むと、加減速補正ＤＳＨＰＴの値を参照し、ＤＳＨＰＴ＝０の場合Ｓ１９０６  へ進み、ＤＳＨＰＴ≠０の場合Ｓ１９１３  へ進む。
【０３２７】
Ｓ１９０６  へ進むとダッシュポット補正値ＤＨＥＮＢの値を参照し、ＤＨＥＮＢ＝０の場合、すなわち、ＤＳＨＰＴ＝０、且つ、ＤＨＥＮＢ＝０でアイドル定常状態と判断される場合には、Ｓ１９０７  へ進み、ＤＨＥＮＢ≠０の場合Ｓ１９１３  へ進む。
【０３２８】
Ｓ１９０７  へ進むと、クローズドループ補正Ｉ分ＩＳＣＩ  の補正量ΔＩを参照し、ΔＩ＝０（エンジン回転数ＮＥがアイドル目標回転数ＮＳＥＴの許容範囲内視鏡に収束している状態）の場合Ｓ１９０８  へ進み、ΔＩ≠０の場合Ｓ１９１３  へ進む。
【０３２９】
Ｓ１９０８  へ進むと、学習可能な状態が所定時間以上継続しているかどうかを判別すべく、所定時間に相当する設定値ＬＲＩＳＣＴと学習条件成立判別カウント値ＣＯＵＮＴＩＳＣＩとを比較し、ＣＯＵＮＴＩＳＣＩ≧ＬＲＩＳＣＴの場合、学習条件成立と判断してＳ１９０９  へ進む。また、ＣＯＵＮＴＩＳＣＩ＜ＬＲＩＳＣＴの場合、Ｓ１９１０  へ進みカウント値ＣＯＵＮＴＩＳＣＩをカウントアップし（ＣＯＵＮＴＩＳＣＩ←ＣＯＵＮＴＩＳＣＩ＋１）、ルーチンを抜ける。
【０３３０】
一方、Ｓ１９０９  へ進むと、エアコンスイッチ８９がＯＮかを判断し、ＯＮの場合Ｓ１９１１  へ進みバックアップＲＡＭ５０ａの所定アドレスに格納されているエアコンＯＮ時のＩ分学習値ＡＣＯＮＩを現時点におけるクローズドループ補正Ｉ分ＩＳＣＩの値で更新し（ＡＣＯＮＩ←ＩＳＣＩ）、Ｓ１９１３  へ進む。ＯＦＦの場合Ｓ１９１２  へ進み、バックアップＲＡＭ５０ａの所定アドレスに格納されているエアコンＯＦＦ時のＩ分学習値ＡＣＯＦＦＩを現時点におけるクローズドループ補正Ｉ分ＩＳＣＩの値で更新し（ＡＣＯＦＦＩ←ＩＳＣＩ）、Ｓ１９１３  へ進む。
【０３３１】
そして、Ｓ１９０１  ，Ｓ１９０２  ，Ｓ１９０４  〜Ｓ１９０７  ，Ｓ１９１１  、あるいは、Ｓ１９１２  のいずれかからＳ１９１３  へ進むと上記カウント値ＣＯＵＮＴＩＳＣＩをクリアし（ＣＯＵＮＴＩＳＣＩ←０）、ルーチンを抜ける。
【０３３２】
ところで、図４２（ａ）に破線で示すように、クローズドループ補正Ｉ分ＩＳＣＩを設定する際にＩ分学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩを使用しないと、始動時制御からオープンループ制御を介してクローズドループ制御へ移行するまでの間に差分が生じる。その結果、図４２（ｂ）に破線で示すように、初爆はするが完爆へはなかなか移行せず、始動時制御からオープンループ制御へ移行するときにエンジン回転数ＮＥの立上りにもたつきが生じる。
【０３３３】
一方、図４２（ａ）に実線で示すようにクローズドループ補正Ｉ分にＩ分学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩを加味することで始動時制御からクローズドループ制御へ移行するまでの間の差分が改善され図４２（ｂ）に実線で示すように初爆から完爆へ直ちに移行し、エンジン回転数ＮＥの立上りがスムーズになり始動性が向上する。
【０３３４】
【発明の効果】
以上説明したように請求項１記載の発明によれば、暖機再始動時におけるフィードバック補正値の上限値と下限値とをシフトアップした値で設定すれば、エンストなどを有効に防止することができ制御性が向上し、再始動性が改善される。
【０３３５】
この際、請求項２に記載したように、フィードバック補正値を積分制御のみで設定するようにすれば、上記請求項１記載の発明の効果に加え、より緻密なフィードバック制御を実行することが可能となる。
【図面の簡単な説明】
【図１】図１，図２はＩＳＣバルブ制御手順を示すフローチャート。
【図２】同上
【図３】補正値設定手順を示すフローチャート。
【図４】基本特性値設定手順を示すフローチャート。
【図５】アイドル目標回転数設定手順を示すフローチャート。
【図６】クローズド／オープンループ制御判別手順を示すフローチャート。
【図７】図７，図８はエアコン補正値設定手順を示すフローチャート。
【図８】同上
【図９】エアコンスイッチＯＦＦ→ＯＮ時のエアコン補正学習手順を示すフローチャート。
【図１０】エアコンスイッチＯＮ→ＯＦＦ時のエアコン補正学習手順を示すフローチャート。
【図１１】図１１，図１２はＡＴ車走行レンジ補正値設定手順を示すフローチャート。
【図１２】同上
【図１３】図１３，図１４は加減速補正設定手順を示すフローチャート。
【図１４】同上
【図１５】ダッシュポット補正値設定手順を示すフローチャート。
【図１６】ダッシュポット補正値更新手順を示すフローチャート。
【図１７】ラジファン補正設定手順を示すフローチャート。
【図１８】図１８，図１９はパワステ補正値設定手順を示すフローチャート。
【図１９】同上
【図２０】エアコンクラッチ補正値設定手順を示すフローチャート。
【図２１】始動後補正初期値設定手順を示すフローチャート。
【図２２】始動後補正設定手順を示すフローチャート。
【図２３】図２３〜図２５はクローズドループ補正Ｉ分更新手順を示すフローチャート。
【図２４】同上
【図２５】同上
【図２６】クローズドループ補正Ｉ分学習手順を示すフローチャート。
【図２７】エンジン制御系の概略図。
【図２８】制御装置の構成図。
【図２９】エアコンスイッチとエアコン補正値とエンジン回転数の関係を示すタイムチャート。
【図３０】走行レンジ、またはＮ，Ｐレンジと、ＡＴ車走行レンジ補正とエンジン回転数の関係を示すタイムチャート。
【図３１】アイドルスイッチとスロットル開度と加減速補正とエンジン回転数の関係を示すタイムチャート。
【図３２】アイドルスイッチとエンジン回転数とダッシュポット補正値の関係を示すタイムチャート。
【図３３】ラジエータファンＯＮ／ＯＦＦとラジファン補正の関係を示すタイムチャート。
【図３４】アイドル判別回転数を設定する際のヒステリシスを示すタイムチャート。
【図３５】パワステ転舵スイッチとパワステ補正値とエンジン回転数の関係を示すタイムチャート。
【図３６】エアコンスイッチとエアコンクラッチリレーとエアコンコンプレッサの容量とエアコンクラッチ補正値とエンジン回転数の関係を示すタイムチャート。
【図３７】始動後補正の変化を示すタイムチャート。
【図３８】デューティ比の変化を示すタイムチャート。
【図３９】始動後補正値のクローズドループ補正Ｉ分への移行を示すタイムチャート。
【図４０】クローズドループ補正Ｉ分の補正量と差回転との関係を示す説明図。
【図４１】エンジン回転数とクローズドループ補正Ｉ分の補正量とクローズドループ補正Ｉ分との関係を示すタイムチャート。
【図４２】クローズドループ補正Ｉ分の学習値の使用状況を示すタイムチャートである。
【符号の説明】
６ｅ…エアバイパス通路
１１ｄ，１１ｅ…スロットルバルブ
１３…ＩＳＣバルブ
５０ａ…記憶手段（バックアップＲＡＭ）
８９…エアコンスイッチ
ＡＣＯＦＦＩ…エアコンオフ時学習値
ＡＣＯＮＩ…エアコンオン時学習値
ＤＩＳＣＳＤ，ＩＳＣＢＡＣ…設定値
ＩＭＡＸＣＬ−ＩＳＣＴＷ，ＩＭＡＸＢＬ，ＩＭＡＸＣＬ…上限値
ＩＭＩＮＣＬ−ＩＳＣＴＷ，ＩＭＩＮＢＬ…下限値
ＩＭＡＸ…上限基本値
ＩＳＣＩ…フィードバック補正値（クローズドループ補正Ｉ分）
ＩＳＣＯＮ…開度設定値（デューティ比）
ＩＳＣＳＤ…始動後補正
ＩＳＣＴＷ…基本特性値
ＮＥ…エンジン回転数
ＮＳＥＴ…アイドル目標回転数
△Ｎ…差（差回転）
ＴＤＩＳＣ…設定時間（始動後補正更新割込時間）
ＴＩＳＣＳＤ…始動後補正初期値テーブル
ＴＷ…エンジン温度（冷却水温度）
【図１】
0003612286.tif 000003
【図２】
0003612286.tif 000004
【図３】
0003612286.tif 000005
【図４】
0003612286.tif 000006
【図５】
0003612286.tif 000007
【図６】
0003612286.tif 000008
【図７】
0003612286.tif 000009
【図８】
0003612286.tif 000010
【図９】
0003612286.tif 000011
【図１０】
0003612286.tif 000012
【図１１】
0003612286.tif 000013
【図１２】
0003612286.tif 000014
【図１３】
0003612286.tif 000015
【図１４】
0003612286.tif 000016
【図１５】
0003612286.tif 000017
【図１６】
0003612286.tif 000018
【図１７】
0003612286.tif 000019
【図１８】
0003612286.tif 000020
【図１９】
0003612286.tif 000021
【図２０】
0003612286.tif 000022
【図２１】
0003612286.tif 000023
【図２２】
0003612286.tif 000024
【図２３】
0003612286.tif 000025
【図２４】
0003612286.tif 000026
【図２５】
0003612286.tif 000027
【図２６】
0003612286.tif 000028
【図２７】
0003612286.tif 000029
【図２８】
0003612286.tif 000030
【図２９】
0003612286.tif 000031
【図３０】
0003612286.tif 000032
【図３１】
0003612286.tif 000033
【図３２】
0003612286.tif 000034
【図３３】
0003612286.tif 000035
【図３４】
0003612286.tif 000036
【図３５】
0003612286.tif 000037
【図３６】
0003612286.tif 000038
【図３７】
0003612286.tif 000039
【図３８】
0003612286.tif 000040
【図３９】
0003612286.tif 000041
【図４０】
0003612286.tif 000042
【図４１】
0003612286.tif 000043
【図４２】
0003612286.tif 000044