(57)【特許請求の範囲】
【請求項１】
少なくともエンジン温度に基づいて設定された基本特性値を、パワーステアリング転舵スイッチがオンされた時、パワステ補正値により補正して、スロットルバルブをバイパスするエアバイパス通路に介装されたＩＳＣバルブの開度を設定し、吸入空気量を増量するエンジンのＩＳＣバルブ制御方法において、
アイドル状態およびエアコンスイッチの状態を判断し、
上記パワーステアリング転舵スイッチがオンでアイドル状態のとき上記パワステ補正値を設定すると共に、該パワステ補正値を、上記エアコンスイッチがオンの場合はエアコンスイッチがオフの場合よりも小さい値に設定し、上記エアコンスイッチがオフの場合はエアコンスイッチがオンの場合よりも大きい値に設定し、
上記パワーステアリング転舵スイッチがオフ、或いは非アイドル状態になったとき、上記パワステ補正値をゼロになるまで演算周期毎に設定値づつ減少させる
ことを特徴とするエンジンのＩＳＣバルブ制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＳＣバルブの開度により、パワーステアリングを転舵したときのパワーステアリングポンプの駆動によってエンジンにかかる負荷を補償するエンジンのＩＳＣバルブ制御方法に関する。
【０００２】
【従来の技術】
一般に、アイドル運転において、変速機のシフトがＤレンジ、１、２速、…などのいわゆる走行レンジにシフトされている場合は、Ｎ，Ｐレンジにシフトされている場合に比べてエンジンにかかる負荷が大きくなるため、スロットルバルブをバイパスするエアバイパス通路に介装したＩＳＣ（アイドルスピードコントロール）バルブの開度を走行レンジ補正値で大きく設定して吸入空気流量を増加させて、エンジン負荷を補償し、アイドル回転数の安定化を図っている。
【０００３】
また、パワーステアリングを転舵したとき、この転舵角が比較的大きいとパワーステアリングポンプの駆動力がエンジン負荷として大きくかかるため、上述と同様にＩＳＣバルブの開度をパワステ補正値により大きく設定してエンジンにかかる負荷を補償している。
【０００４】
【発明が解決しようとする課題】
しかし、このエンジンにかかる負荷を例えば、特開昭５５−９８６２９号公報に開示されているエアコン増量補正のごとく、変速機が走行レンジにシフトされたことを検出した後に直ちに走行レンジ補正値により増量補正すると、エンジンの駆動力の伝達遅れにより、増量補正直後にエンジン回転数が一時的に上昇してしまいフィーリングが悪化する。
【０００５】
また、変速機のシフトを走行レンジからＮ，Ｐレンジに切換えたときに直ちに走行レンジ補正値を解除すると、このときのエンジン負荷が微少の遅れ時間をもって減少するものであるため、エンジン回転数が一時的に低下し、フィーリングが悪化してしまう。
【０００６】
一方、エアコンコンプレッサの負荷と上記パワーステアリングポンプの負荷あるいはエンジンにかかる各種負荷の総量とを比較した場合、上記エアコンコンプレッサの負荷が相対的に小さく、したがって、パワーステアリングポンプの負荷を補償すべくパワステ補正を実行しても、エンジンにかかるパワーステアリングポンプ以外の負荷が相対的に大きいため、さほど大きな効果を得ることはできない。
【０００７】
さらに、転舵角が大から小に切換った際に、直ちにパワステ補正値を解除すると、このとき、パワーステアリングポンプ駆動負荷が遅れ時間をもって減少するため、エンジン回転数が変動し、フィーリングが悪化する。
【０００８】
本発明は、上記事情に鑑みてなされたもので、その目的は、エアコンスイッチのＯＮ／ＯＦＦに拘らず常に適正なパワステ補正を行うと共に、転舵角が大から小に切換わった直後においてもエンジン回転数の変動が少なく、フィーリングの良好なエンジンのＩＳＣバルブ制御方法を提供することにある。
【００１０】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の発明は、少なくともエンジン温度に基づいて設定された基本特性値を、パワーステアリング転舵スイッチがオンされた時、パワステ補正値により補正して、スロットルバルブをバイパスするエアバイパス通路に介装されたＩＳＣバルブの開度を設定し、吸入空気量を増量するエンジンのＩＳＣバルブ制御方法において、アイドル状態およびエアコンスイッチの状態を判断し、上記パワーステアリング転舵スイッチがオンでアイドル状態のとき上記パワステ補正値を設定すると共に、該パワステ補正値を、上記エアコンスイッチがオンの場合はエアコンスイッチがオフの場合よりも小さい値に設定し、上記エアコンスイッチがオフの場合はエアコンスイッチがオンの場合よりも大きい値に設定し、上記パワーステアリング転舵スイッチがオフ、或いは非アイドル状態になったとき、上記パワステ補正値をゼロになるまで演算周期毎に設定値づつ減少させることを特徴とする。
【００１２】
請求項１記載の発明は、パワーステアリング転舵スイッチがオンされた時、少なくともエンジン温度に基づいて設定された基本特性値をパワステ補正値により補正してＩＳＣバルブの開度を設定し、吸入空気量を増量するに際し、アイドル状態およびエアコンスイッチの状態を判断する。そして、パワーステアリング転舵スイッチがオンでアイドル状態のときパワステ補正値を設定すると共に、該パワステ補正値を、エアコンスイッチがオンの場合はエアコンスイッチがオフの場合よりも小さい値に設定し、エアコンスイッチがオフの場合はエアコンスイッチがオンの場合よりも大きい値に設定する。そして、パワーステアリング転舵スイッチがオフ、或いは非アイドル状態になったとき、パワステ補正値を、該パワステ補正値による補正無しに対応するゼロになるまで演算周期毎に設定値づつ減少させる。
【００１４】
【発明の実施の形態】
以下、図面に基づいて本発明の実施の一形態を説明する。
図面は本発明の一形態を示し、図１，図２はＩＳＣバルブ制御手順を示すフローチャート、図３は補正値設定手順を示すフローチャート、図４は基本特性値設定手順を示すフローチャート、図５はアイドル目標回転数設定手順を示すフローチャート、図６はクローズド／オープンループ制御判別手順を示すフローチャート、図７，図８はエアコン補正値設定手順を示すフローチャート、図９はエアコンスイッチＯＦＦ→ＯＮ時のエアコン補正学習手順を示すフローチャート、図１０はエアコンスイッチＯＮ→ＯＦＦ時のエアコン補正学習手順を示すフローチャート、図１１，図１２はＡＴ車走行レンジ補正値設定手順を示すフローチャート、図１３，図１４は加減速補正設定手順を示すフローチャート、図１５はダッシュポット補正値設定手順を示すフローチャート、図１６はダッシュポット補正値更新手順を示すフローチャート、図１７はラジファン補正設定手順を示すフローチャート、図１８、図１９はパワステ補正値設定手順を示すフローチャート、図２０はエアコンクラッチ補正値設定手順を示すフローチャート、図２１は始動後補正初期値設定手順を示すフローチャート、図２２は始動後補正設定手順を示すフローチャート、図２３〜図２５はクローズドループ補正Ｉ分更新手順を示すフローチャート、図２６はクローズドループ補正Ｉ分学習手順を示すフローチャートである。
【００１５】
又、図２７はエンジン制御系の概略図、図２８は制御装置の構成図、図２９はエアコンスイッチとエアコン補正値とエンジン回転数の関係を示すタイムチャート、図３０は走行レンジ、またはＮ，Ｐレンジと、ＡＴ車走行レンジ補正とエンジン回転数の関係を示すタイムチャート、図３１はアイドルスイッチとスロットル開度と加減速補正とエンジン回転数の関係を示すタイムチャート、図３２はアイドルスイッチとエンジン回転数とダッシュポット補正値の関係を示すタイムチャート、図３３はラジエータファンＯＮ／ＯＦＦとラジファン補正の関係を示すタイムチャート、図３４はアイドル判別回転数を設定する際のヒステリシスを示すタイムチャート、図３５はパワステ転舵スイッチとパワステ補正値とエンジン回転数の関係を示すタイムチャート、図３６はエアコンスイッチとエアコンクラッチリレーとエアコンコンプレッサの容量とエアコンクラッチ補正値とエンジン回転数の関係を示すタイムチャート、図３７は始動後補正の変化を示すタイムチャート、図３８はデューティ比の変化を示すタイムチャート、図３９は始動後補正値のクローズドループ補正Ｉ分への移行を示すタイムチャート、図４０はクローズドループ補正Ｉ分の補正量と差回転との関係を示す説明図、図４１はエンジン回転数とクローズドループ補正Ｉ分の補正量とクローズドループ補正Ｉ分との関係を示すタイムチャート、図４２はクローズドループ補正Ｉ分の学習値の使用状況を示すタイムチャートである。
【００１６】
［エンジン制御系の構成］
図２７において、図中の符号１はエンジン本体で、図においては６気筒水平対向型エンジンを示す。このエンジン本体１は、シリンダブロック２がクランクシャフト１ａを中心として両側のバンク（図の右側が左バンク、左側が右バンク）に２分割されており、例えば、右バンクに＃１，＃３，＃５気筒の気筒群が配置され、左バンクに＃２，＃４，＃６気筒の気筒群が配置されている。
【００１７】
上記各バンクの各シリンダヘッド３には、それぞれ吸気ポート４が形成され、各吸気ポート４にインテークマニホルド５が連通されている。また、このインテークマニホルド５の上流に、各バンクに対応して共鳴管６ａ，６ｂが連通され、この各共鳴管６ａ，６ｂ間を結ぶ通路６ｃに可変吸気バルブ１１ｃが介装されている。なお、この共鳴管６ａ，６ｂ、通路６ｃ、および、可変吸気バルブ１１ｃで可変共鳴過給システムが構成されている。
【００１８】
さらに、上記各共鳴管６ａ，６ｂの上流がスロットルチャンバ１１ａ，１１ｂを開してサージタンク７に連通されている。
【００１９】
上記サージタンク７の上流側に、吸気管８を介してエアクリーナ９が取付けられており、このエアクリーナ９の直下流に吸入空気量センサ（図においては、ホットフィルム式エアフローメータ）１０が介装されている。
【００２０】
また、上記各スロットルチャンバ１１ａ，１１ｂに、スロットルバルブ１１ｄ，１１ｅ（いわゆる、ツインスロットルバルブ）が介装され、一方のスロットルバルブ１１ｅにスロットル開度センサ１２ａとスロットルバルブ全閉を検出するアイドルスイッチ１２ｂとが連設されている。
【００２１】
さらに、上記スロットルチャンバ１１ａ，１１ｂのスロットルバルブ１１ｄ，１１ｅの下流側が通路６ｄによって連通され、この通路６ｄと上記サージタンク７とを連通するエアーバイパス通路６ｅに、アイドルスピードコントロール（ＩＳＣ）バルブ１３が介装されている。
【００２２】
また、上記インテークマニホルド５の各気筒の各吸気ポート４の直上流側にインジェクタ１４が配設され、さらに、上記各シリンダヘッド３の各気筒毎に、その先端を燃焼室に露呈する点火プラグ１５が取付けられている。この点火プラグ１５の端子部には、点火コイル１５ａが直接取付けられ、イグナイタ１６に接続されている。
【００２３】
上記インジェクタ１４には、燃料タンク１７内に設けられたインタンク式の燃料ポンプ１８から燃料フィルタ１９を経て燃料が圧送され、プレッシャレギュレータ２０にて調圧させる。
【００２４】
また、上記シリンダブロック２に形成された冷却水通路（図示せず）に冷却水温センサ２１が臨まされるとともに、上記シリンダブロック２の各バンクに、それぞれ、右バンクノックセンサ２２ａ、左バンクノックセンサ２２ｂが取付けられており、上記各シリンダヘッド３の各排気ポート２３から、各バンク毎に設けられた各排気管２４ａ，２４ｂが連通されている。
【００２５】
上記各排気管２４ａ，２４ｂには、それぞれ、右バンクＯ2 センサ２５ａ，左バンクＯ2 センサ２５ｂが臨まされ、各Ｏ2 センサ２５ａ，２５ｂの下流側に、それぞれ、触媒コンバータ２６ａ，２６ｂが介装され、さらに、各触媒コンバータ２６ａ，２６ｂの下流側合流部に、触媒コンバータ２７が介装されている。
【００２６】
一方、エンジン本体１のクランクシャフト１ａに、クランク角検出用クランクロータ２９とグループ気筒判別用クランクロータ３０とが所定間隔を開けて軸着されている。また、この各クランクロータ２９，３０の外周に被検出体である突起を検出する電磁ピックアップなどからなる第一のクランク角センサ３１，第二のクランク角センサ３２がそれぞれ対設されている。また、カムシャフト３３に軸着したカムロータ３３ａの外周にカム角センサ３４が対設されている。このカム角センサ３４は特定気筒の圧縮上死点を判別するもので、このカム角センサ３４からのカムパルスと第２のクランク角センサ３２からのグループ判別パルスとで個々の気筒を判別する。
【００２７】
なお、上記各クランクロータ２９，３０、上記カムロータ３３ａの外周には突起の代りにスリットを設けてもよく、また、両クランク角センサ３１，３２、カム角センサ３４は電磁ピックアップなどの電磁センサに限らず光センサなどでも良い。
【００２８】
［制御装置の回路構成］
一方、図２８において、符号４０はマイクロコンピュータからなる制御装置（ＥＣＵ）で、このＥＣＵ４０は点火時期制御、燃料噴射制御などを行うメインコンピュータ４１と、ノック検出処理を行う専用のサブコンピュータ４２との２つのコンピュータから構成されている。
【００２９】
また、上記ＥＣＵ４０内には定電圧回路４３が内蔵され、この定電圧回路４３から各部へ安定化電圧が供給される。この定電圧回路４３は、ＥＣＵリレー４４のリレー接点を介してバッテリ４５に接続され、上記ＥＣＵリレー４４のリレーコイルがキースイッチ４６を介して上記バッテリ４５に接続されている。また、上記バッテリ４５に燃料ポンプリレー４７のリレー接点を介して燃料ポンプ１８が接続されている。
【００３０】
上記メインコンピュータ４１は、メインＣＰＵ４８、ＲＯＭ４９、ＲＡＭ５０、バックアップＲＡＭ５０ａ、タイマ５１、シリアルインターフェース（ＳＣＩ）５２、及び、Ｉ／Ｏインターフェース５３がバスライン５４を介して互いに接続されている。また、上記バックアップＲＡＭ５０ａには上記定電圧回路４３を介して常時バックアップ電圧が印加されている。
【００３１】
上記Ｉ／Ｏインターフェース５３の入力ポートには、吸入空気量センサ１０，スロットル開度センサ１２ａ、冷却水温センサ２１、右バンクＯ2 センサ２５ａ、左バンクＯ2 センサ２５ｂ、大気圧センサ５５、及び車速センサ５６がＡ／Ｄ変換器５７ａを介して接続されているとともに、アイドルスイッチ１２ｂ、第１，第２のクランク角センサ３１，３２、カム角センサ３４が接続され、また、上記バッテリ４５が接続されてバッテリ電圧がモニタされる。
【００３２】
さらに、上記Ｉ／Ｏインターフェース５３の入力ポートには、転舵状態を検出するパワーステアリング転舵スイッチ５８、自動変速機のセレクトレバーがニュートラルにセットされているかを検出するニュートラルスイッチ５９、パーキングにセットされているかを検出するパーキングスイッチ６０、始動状態を検出するスタータスイッチ６１が接続されている。
【００３３】
また、上記Ｉ／Ｏインターフェース５３の出力ポートには、イグナイタ１６が接続され、さらにＩＳＣバルブ１３、インジェクタ１４、ラジエータファン６２の駆動を制御するラジエータファンリレー６３のリレーコイル、可変容量エアコンコンプレッサ６４のエアコンクラッチ６４ａの接／断を操作するエアコンクラッチリレー６５のリレーコイルが駆動回路５７ｂを介して接続されている。
【００３４】
一方、サブコンピュータ４２は、サブＣＰＵ６６、ＲＯＭ６７、ＲＡＭ６８、タイマ６９、ＳＣＩ７０、及び、Ｉ／Ｏインターフェース７１がバスライン７２を介して互いに接続されて構成されている。
【００３５】
上記Ｉ／Ｏインターフェース７１の入力ポートには、上記第１，第２のクランク角センサ３１，３２、カム角センサ３４が接続されているとともに、右バンクノックセンサ２２ａ、左バンクノックセンサ２２ｂが、それぞれアンプ７３、周波数フィルタ７４、Ａ／Ｄ変換器７５を介して接続されている。
【００３６】
上記各ノックセンサ２２ａ，２２ｂは、例えばノック振動とほぼ同じ固有周波数を持つ振動子と、この振動子の振動加速度を検知して電気信号に変換する圧電素子とから構成される共振形のノックセンサで、エンジンの爆発行程における燃焼圧力波によりシリンダブロックなどに伝わる振動を検出し、その振動波形をノック信号として出力する。
【００３７】
このノック信号は上記アンプ７３により所定のレベルに増幅された後、上記周波数フィルタ７４により必要な周波数成分が抽出され、Ａ／Ｄ変換器７５でアナログデータからデジタルデータに変換される。
【００３８】
上記メインコンピュータ４１と上記サブコンピュータ４２とは、ＳＣＩ５２，７０を介したシリアル回線により接続されているとともに、上記サブコンピュータ４２のＩ／Ｏインターフェース７１の出力ポートが、上記メインコンピュータ４１のＩ／Ｏインターフェース５３の入力ポートに接続されている。
【００３９】
上記メインコンピュータ４１では、クランクパルスに基づいて点火時期などを演算し、所定の点火時期に達すると、該当気筒に点火信号を出力し、一方、上記サブコンピュータ４２では、クランクパルスの入力間隔からエンジン回転数を算出し、このエンジン回転数とエンジン負荷とに基づいて各ノックセンサ２２ａ，２２ｂからのノック信号のサンプル区間を設定し、このサンプル区間で各ノックセンサ２２ａ，２２ｂからのノック信号を高速にＡ／Ｄ変換して振動波形を忠実にデジタルデータに変換し、ノック発生の有無を判定する。
【００４０】
このノック発生の有無の判定結果は、サブコンピュータ４２のＩ／Ｏインターフェース７１に出力され、ノック発生の場合には、ＳＣＩ７０，５２を介したシリアル回線を通じてサブコンピュータ４２から上記メインコンピュータ４１にノックデータが読込まれ、上記メインコンピュータ４１では、このノックデータに基づいて直ちに該当気筒の点火時期を遅らせ、ノックを回避する。
【００４１】
また、符号８１はエアコン制御ユニットで、ＣＰＵ８２、ＲＯＭ８３、ＲＡＭ８４、Ｉ／Ｏインターフェース８５がバスライン８６を介して接続され、イグニッションスイッチ８７を介してバッテリ４５に接続する定電圧回路８８から各部に安定化電圧が供給される。
【００４２】
上記Ｉ／Ｏインターフェース８５の入力ポートには、エアコンスイッチ８９、上記メインコンピュータ４１のＩ／Ｏインターフェース５３が接続されており、上記メインコンピュータ４１から上記エアコン制御ユニット８１へ上記可変容量エアコンコンプレッサ６４に対する要求容量（ＤＵＴＹ）信号を出力する。
【００４３】
また、上記Ｉ／Ｏインターフェース８５の出力ポートには、上記可変容量エアコンコンプレッサ６４に設けた可変容量制御バルブ（図示せず）が接続されて、容量（ＤＵＴＹ）信号を出力するとともに、メインコンピュータ４１のＩ／Ｏインターフェース５３の入力ポートに接続されて、エアコンスイッチ８９がＯＮしたかどうかの信号が出力される。
【００４４】
［動作］
次に、上記構成による本形態のＩＳＣバルブ１３の制御動作について説明する。
【００４５】
（ＩＳＣバルブ制御メインルーチン）
図１，図２はメインコンピュータ４１で実行するＩＳＣバルブ制御手順を示すメインルーチンで、所定演算周期ごとに実行される。
【００４６】
まず、ステップ（以下「Ｓ」と略称）101 で、モニタしたバッテリ電圧に基づきバッテリ電圧補正値ＩＳＣVBを設定する。バッテリ電圧が低いとＩＳＣバルブ１３が所定開度に達しなくなるため、上記バッテリ電圧補正値ＩＳＣVBはバッテリ電圧が低いほど大きな値に設定される。
【００４７】
そして、S102で大気圧補正係数ＫALT を設定する。大気圧が低いと吸入空気流量も相対的に低くなるため、上記大気圧補正係数ＫALT は大気圧が低いほど大きな値に設定される。
【００４８】
その後、S103へ進むと、始動判別を行うべくスタータスイッチ６１がＯＮか判断し、ＯＮの場合始動中と判断してS104へ進み、ＯＦＦの場合エンジン停止あるいはエンジン稼動中と判断してS105へ進む。
【００４９】
S105では第１のクランク角センサ３１出力により検出したエンジン回転数ＮEに基づきエンジン停止中かを判断し、ＮE ＝０（エンジン停止中）の場合S104へ進み、ＮE ≠０（エンジン稼動中）の場合S114へ進む。
【００５０】
S103あるいはS105で、始動中あるいはエンジン停止中と判断された場合には、S104へ進み、始動時制御処理が実行される。S104へ進むと、冷却水温センサ２１で検出した冷却水温ＴW に基づき始動時特性値テーブルＴＩＳＣＳＴを補間計算付きで参照して始動時特性値ＩＳＣSTを設定する。
【００５１】
そして、S106へ進み、上記始動時特性値ＩＳＣSTとバッテリ電圧補正値ＩＳＣVBとを加算した値に上記大気圧補正係数ＫALT を乗算してＩＳＣバルブ１３の開度設定値であるデューティ比ＩＳＣONを設定する（ＩＳＣON←（ＩＳＣST＋ＩＳＣVB）×ＫALT）。
【００５２】
その後、S107で、後述するクローズド／オープンループ制御判別サブルーチンで用いるエンジン始動後の経過時間が設定時間ＴＭＡＳＩ［sec］に達したかを判別するための始動後経過時間判別カウント値ＣＯＵＮＴST（ダウンカウンタ）に、設定時間ＴＭＡＳＩに相当する設定値ＣＯＵＮＴSTをセット（ＣＯＵＮＴST←ＣＯＵＮＴTMASI）した後、S108へ進み、後述する始動後補正ＩＳＣSD、クローズドループ補正Ｉ分ＩＳＣI 設定の際に用いる始動時／通常時制御判別フラグＦＬＡＧSTを、現在始動時制御を実行していることを示すためセット（ＦＬＡＧST←１）した後S109へ進む。
【００５３】
S109では、上記デューティ比ＩＳＣONとオープンループ制御時の下限値ＩＭＩＮOPとを比較し、ＩＳＣON≦ＩＭＩＮOPの場合、設定したデューティ比ＩＳＣONが下限値以下であるため、S110で、上記デューティ比ＩＳＣONを上記下限値ＩＭＩＮOPで設定し（ＩＳＣON←ＩＭＩＮOP）、S138へ進む。
【００５４】
一方、上記S109で、ＩＳＣON＞ＩＭＩＮOPの場合にはS111へ進み、上記冷却水温ＴW に基づき上限値テーブルＴＢＭＸＯＰを参照して上限値ＩMAXOP を設定する。この上限値テーブルＴＢＭＸＯＰには、冷却水温ＴW が低ければ始動性がより困難になるため高い値の上限値ＩMAXOP が格納されている。
【００５５】
そして、S112で上記デューティ比ＩＳＣONと上記上限値ＩMAXOP とを比較し、ＩＳＣON≧ＩMAXOP の場合、S113へ進み、デューティ比ＩＳＣONを上記上限値ＩMAXOP で固定し（ＩＳＣON←ＩMAXOP）、S138へ進む。また、ＩＳＣON＜ＩMAXOP
の場合、そのままS138へ進む。
【００５６】
一方、上記S105で、ＮE ≠０（エンジン稼動中）と判断された場合にはS114へ進み、通常時制御処理が実行される。S114へ進むと、始動時／通常時制御判別フラグＦＬＡＧSTをクリア（ＦＬＡＧST←０、通常時制御）し、S115で基本特性値設定サブルーチン（詳細は後述する）を実行して基本特性値ＩＳＣTWを設定し、S116でアイドル目標回転数設定サブルーチン（詳細は後述する）を実行してアイドル目標回転数ＮSET を設定し、S117でクローズド／オープンループ制御判別サブルーチン（詳細は後述する）を実行してクローズドループ制御かオープンループ制御かを判別した後、S118へ進む。
【００５７】
S118では、後述する補正値設定ルーチン（51.2msec毎に割込み実行）で設定したエアコン補正値ＩＳＣACを読出し、S119で上記補正値設定ルーチンで設定したＡＴ車走行レンジ補正値ＩＳＣATDSにて当該メインルーチンで使用するギヤ位置補正値ＩＳＣATを設定し（ＩＳＣAT←ＩＳＣATDS）、S120で上記補正値設定ルーチンで設定した加減速補正ＤSHPTで加減速補正値ＩＳＣTRを設定し（ＩＳＣTR←ＤSHPT）、S121で始動後補正値ＩＳＣASを後述する各割込みルーチンで設定した始動後補正値ＩＳＣSDで設定し（ＩＳＣAS←ＩＳＣSD）、S122で上記補正値設定ルーチンで更新したダッシュポット補正値ＤＨＥＮＢを読出し、S123で後述するクローズドループ補正Ｉ分更新手順（10msec毎に割込み実行）で設定したクローズドループ補正Ｉ分ＩＳＣI にて当該メインルーチンで使用するクローズドループ補正値ＩＳＣCLを設定する（ＩＳＣCL←ＩＳＣI）。
【００５８】
そして、S124で上記補正値設定ルーチンで設定したラジファン補正ＩＳＣRASにて、当該メインルーチンで使用するラジファン補正値ＩＳＣRAを設定し（ＩＳＣRA←ＩＳＣRAS）、また、S125で上記補正値設定ルーチンで設定したパワステ補正値ＩＳＣPSを読出し、S126で上記補正値設定ルーチンで設定したエアコンクラッチ補正値ＩＳＣCLH を読み出す。
【００５９】
その後、S127で上記基本特性値ＩＳＣTW、エアコン補正値ＩＳＣAC、ギヤ位置補正値ＩＳＣAT、加減速補正値ＩＳＣTR、始動後補正値ＩＳＣAS、ダッシュポット補正値ＤＨＥＮＢ、クローズドループ補正値ＩＳＣCL、ラジファン補正値ＩＳＣRA、パワステ補正値ＩＳＣPS、エアコンクラッチ補正値ＩＳＣCLH 、バッテリ電圧補正値ＩＳＣVBを加算した値に大気圧補正係数ＫALT を乗算してデューティ比ＩＳＣONを次式に示す如く設定する。
【００６０】
ＩＳＣON←（ＩＳＣTW＋ＩＳＣAC＋ＩＳＣAT＋ＩＳＣTR＋ＩＳＣAS＋ＤＨＥＮＢ＋ＩＳＣCL＋ＩＳＣRA＋ＩＳＣPS＋ＩＳＣCLH ＋ＩＳＣVB）×ＫALT
そして、S128でクローズドループ制御選択時に１にセットされるクローズド／オープンループ制御判別フラグＦＬＡＧCLの値を参照し、ＦＬＡＧCL＝１でクローズドループ制御が選択されている場合S129へ進み、ＦＬＡＧCL＝０でオープンループ制御が選択されている場合には、始動時と同様のデューティ制限を実行すべくS109へ戻る。
【００６１】
S129へ進むと、上記デューティ比ＩＳＣONとクローズドループ制御時の下限値ＩＭＩＮＣＬとを比較し、ＩＳＣON≦ＩＭＩＮＣＬの場合S130へ進み上記デューティ比ＩＳＣONを上記下限値ＩＭＩＮＣＬに設定して（ＩＳＣON←ＩＭＩＮＣＬ）、S138へ進む。上記下限値ＩＭＩＮＣＬ、あるいはＩＭＩＮOPは、デューティ比ＩＳＣONが不必要に低下してＩＳＣバルブ１３の開度が低下しＩＳＣバルブ１３による空気流量低下に伴いアイドル回転数が低下することによるフィーリングの悪化およびエンストを防止するために設定するものである。
【００６２】
一方、S129で、ＩＳＣON＞ＩＭＩＮＣＬと判断されてS131へ進むと、冷却水温ＴW に基づきテーブルＴＢＭＸCLを補間計算付で参照して上限基本値ＩMAXを設定する。この上限基本値ＩMAX はデューティ比ＩＳＣONが不必要に大きくなり、アイドル回転数が過回転になるのを防止するために設定するもので、テーブル上においては、冷却水温ＴW が高いほど基本特性値ＩＳＣTWが小さくなり、したがってデューティ比ＩＳＣONも小さくなるため、上限基本値ＩMAX も冷却水温ＴW が高くなるに従い小さな値が格納されている。
【００６３】
その後、S132へ進むとエアコンスイッチ８９がＯＮかを判断し、ＯＮ状態の場合S133へ進み上限基本値エアコン補正ＩD1を設定値ＩSCBAC で設定し（ＩD1←ＩSCBAC）、また、ＯＦＦ状態の場合S134へ進み上限基本値エアコン補正ＩD1をクリアする（ＩD1←０）。
【００６４】
そして、S135で上記上限基本値ＩMAX に上限基本値エアコン補正ＩD1を加算して上限値ＩＭＡＸＣＬ を設定する（ＩＭＡＸＣＬ ←ＩMAX ＋ＩD1）。エアコンが駆動状態ではアイドルアップされているために上限値ＩＭＡＸＣＬ もエアコン補正値ＩD1分だけ高く設定する。
【００６５】
そして、S136で上記デューティ比ＩＳＣONと上記上限値ＩＭＡＸＣＬ とを比較し、ＩＳＣON≧ＩＭＡＸＣＬ の場合S137へ進みデューティ比ＩＳＣONを上記上限値ＩＭＡＸＣＬ に設定して（ＩＳＣON←ＩＭＡＸＣＬ）、S138へ進む。また、ＩＳＣON＜ＩＭＡＸＣＬの場合、デューティ比ＩＳＣONが許容範囲に収まっている（ＩＭＩＮＣＬ＜ＩＳＣON＜ＩＭＡＸＣＬ）ためそのままS138へ進む。
【００６６】
その後、S110,S113,S130,S136 、あるいは、S137からS138へ進むと、上記各ステップで設定したデューティ比ＩＳＣONに対応するデューティ信号ＤＵＴＹをＩＳＣバルブ１３のコイルへ出力して（ＤＵＴＹ←ＩＳＣON）、ルーチンを抜ける。
【００６７】
なお、ＩＳＣバルブ１３に対するデューティ信号ＤＵＴＹは、次回ルーチン実行時に新たにデューティ信号ＤＵＴＹが設定されるまでの間、出力保持される。（補正値設定ルーチン）図３は設定時間毎、例えば51.2msec毎に割込み実行される補正値設定ルーチンである。
【００６８】
まず、S201でエアコン補正値設定サブルーチン（詳細は後述）を実行してエアコン補正値ＩＳＣACを設定し、S202でＡＴ車走行レンジ補正値設定サブルーチン（詳細は後述する）を実行してＡＴ車走行レンジ補正値ＩＳＣATDSを設定し、S203で加減速補正設定サブルーチン（詳細は後述）を実行して加減速補正ＤSHPTを設定し、S204でダッシュポット補正値更新サブルーチン（詳細は後述）を実行してダッシュポット補正値ＤＨＥＮＢを更新し、S205でラジファン補正設定サブルーチン（詳細は後述）を実行してラジファン補正ＩＳＣRAS を設定し、S206でパワステ補正値設定サブルーチン（詳細は後述）を実行してパワステ補正値ＩＳＣPSを設定し、S207でエアコンクラッチ補正値設定サブルーチン（詳細は後述）を実行してエアコンクラッチ補正値ＩＳＣCLH を設定してルーチンを抜ける。
【００６９】
（基本特性値設定サブルーチン）
図４はメインルーチンにおいて実行（S115参照）される基本特性値ＩＳＣTW設定のサブルーチンで、基本特性値ＩＳＣTWを放置（停車状態）暖機と走行暖機とに区別して設定する。
【００７０】
まず、S301〜S303で車輌が完全に停車状態かを判断する。S301ではアイドルスイッチ１２ｂがＯＮかを判断し、ＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）の場合S302へ進み、ＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）の場合S305へ進む。
【００７１】
S302ではパーキングスイッチ６０がＯＮ（セレクトレバーがＰレンジにセットされている状態）の場合S303へ進み、ＯＦＦの場合S305へ進む。
【００７２】
S303では車速センサ５６で検出した車速ＶＳＰに基づき車速ＶＳＰが０かを判断し、ＶＳＰ＝０（停車状態）の場合S304へ進み、ＶＳＰ≠０（走行状態）の場合S305へ進む。
【００７３】
S304へ進むと、放置／走行暖機判別フラグＦＬＡＧTIS をセットし（ＦＬＡＧTIS ←１，放置暖機）、S306で冷却水温ＴW に基づき放置暖機基本特性値テーブルＴＩＳＴＷＳを補間計算付きで参照して基本特性値ＩＳＣTWを設定した後、ルーチンを抜ける。
【００７４】
放置暖機の基本特性値ＩＳＣTWは、変速機がＰレンジにシフトされており、完全に車輌が停止した状態であるため、ＩＳＣバルブ１３の開度を大きくしてＩＳＣバルブ１３によって吸入空気量を増大させエンジン回転数を高めエンジン暖機完了時間を短縮させるため走行暖機よりも高い値に設定されている。なお、燃料消費率およびフィーリングを考慮しておのずと上限があるが、実験などから最適な基本特性値ＩＳＣTWを冷却水温ＴW をパラメータとして求めテーブル化してＲＯＭ４９にストアしておく。
【００７５】
一方、S301,S302,あるいは、S303からS305へ進むと放置／走行暖機判別フラグＦＬＡＧTIS をクリアし（ＦＬＡＧTIS ←０、走行暖機）、S307で冷却水温ＴWに基づき走行暖機基本特性値テーブルＴＩＳＴＷＲを補間計算付きで参照して基本特性値ＩＳＣTWを設定した後、ルーチンを抜ける。
【００７６】
走行暖機は、変速機がＤレンジ（１速，２速…を含む）、あるいは、Ｎレンジにシフトされた状態であり、アクセル踏込み、および走行時の違和感を防ぐため実験により走行暖機時の最適な基本特性値ＩＳＣTWを冷却水温ＴW をパラメータとして求めＲＯＭ４９にテーブル化してストアしておくもので、放置暖機よりも低い値に設定されている。
【００７７】
（アイドル目標回転数設定サブルーチン）
図５はメインルーチンにおいて実行（S116参照）されるアイドル目標回転数ＮSET 設定のサブルーチンである。
【００７８】
まず、S401で放置／走行暖機判別フラグＦＬＡＧTIS の値を参照し、ＦＬＡＧTIS ＝１（放置暖機）の場合S402へ進み、ＦＬＡＧTIS ＝０（走行暖機）の場合S403へ進む。
【００７９】
S402へ進むと、冷却水温ＴW に基づき放置暖機時目標回転数テーブルＴＮＳＥＴＳを補間計算付きで参照して放置暖機時目標回転数ＮSETSを設定し、S404でＲＡＭ５０の所定アドレスに格納されているアイドル目標回転数ＮSET を上記放置暖機時目標回転数ＮSETSにて設定した後（ＮSET ←ＮSETS）、S406へ進む。
【００８０】
上記放置暖機時目標回転数テーブルＴＮＳＥＴＳはＲＯＭ４９に格納されているもので、各領域には予め実験などから求めた最適な目標回転数ＮSETSが格納されている。また、上記放置暖機時は変速機がＰレンジにシフトされており、完全に車輌が停止した状態であるため、暖機時間を短縮すべく各領域の目標回転数ＮSETSは後述する走行暖機時目標回転数ＮSETRよりも高い値に設定されている。
【００８１】
一方、上記S401で走行暖機（ＦＬＡＧTIS ＝０）と判断されてS403へ進むと、冷却水温ＴW に基づき走行暖機時目標回転数テーブルＴＮＳＥＴＲを補間計算付きで参照して走行暖機時の目標回転数ＮSETRを設定し、S405へ進みＲＡＭ５０の所定アドレスに格納されているアイドル目標回転数ＮSET を上記走行暖機時目標回転数ＮSETRに設定した後（ＮSET ←ＮSETR）、S406へ進む。
【００８２】
上記走行暖機時目標回転数テーブルＴＮＳＥＴＲはＲＯＭ４９に格納されているもので、目標回転数ＮSETRを冷却水温ＴW をパラメータとして求めたものであり、放置暖機よりも低い値に設定されている。
【００８３】
そして、S404あるいはS405からS406へ進むと、ニュートラルスイッチ５９がＯＦＦ（セレクトレバーがＮレンジ以外にセット）かを判断し、ＯＦＦの場合S407へ進み、ＯＮの場合変速機に動力が伝達されておらずエンジン１に負荷がかかってないためS409へ進む。
【００８４】
また、S407へ進むとパーキングスイッチ６０がＯＦＦ（セレクトレバーがＰレンジ以外にセット）かを判断し、ＯＦＦの場合セレクトレバーがＤレンジ、１速、２速などの走行レンジにシフトされてエンジンに負荷がかかっていると判断してS408へ進み、また、ＯＮの場合セレクトレバーがＰレンジにシフトされており、エンジン１に負荷がかかっていないためS409へ進む。
【００８５】
上記S407からS408へ進むと、放置／走行暖機判別フラグＦＬＡＧTISの値を参照し、ＦＬＡＧTIS ＝０（走行暖機）の場合S410へ進み、ＦＬＡＧTIS ＝１（放置暖機）の場合S411へジャンプする。
【００８６】
S410へ進むと、走行中であるためアイドル目標回転数ＮSET を設定値ＤＮＡＴ分シフトアップすべく、上記S403で設定した目標回転数ＮSETRに設定値ＤＮＡＴを加算した値でＲＡＭ５０の所定アドレスに格納されている上記アイドル目標回転数ＮSET を設定し（ＮSET ←ＮSETR＋ＤＮＡＴ）、S411へ進む。
【００８７】
S411へ進むとエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合S412へ進み、予め設定した走行レンジエアコンＯＮ時目標回転数下限値ＤＡＲＣＯＮと上記アイドル目標回転数ＮSET とを比較し、ＮSET ≦ＤＡＲＣＯＮの場合S413へ進み、上記アイドル目標回転数ＮSET をエアコン負荷に対処するための下限リミッタである上記走行レンジエアコンＯＮ時目標回転数下限値ＤＡＲＣＯＮにて設定した後（ＮSET ←ＤＡＲＣＯＮ）、ルーチンを抜ける。
【００８８】
また、上記S411でエアコンスイッチ８９がＯＦＦと判断され、あるいはS412でＮSET ＞ＤＡＲＣＯＮと判断された場合にはそのままルーチンを抜ける。
【００８９】
一方、S406あるいはS407からS409へ進むと、エアコンスイッチ８９がＯＮかを判断し、ＯＮの場合S414へ進みアイドル目標回転数ＮSET と予め設定したＮ，ＰレンジエアコンＯＮ時目標回転数下限値ＮＡＲＣＯＮとを比較し、ＮSET ≦ＮＡＲＣＯＮの場合S415へ進み、上記アイドル目標回転数ＮSET をエアコンＯＮ時の負荷に対処するための下限リミッタであるＮ，ＰレンジエアコンＯＮ時目標回転数ＮＡＲＣＯＮにて設定した後（ＮSET ←ＮＡＲＣＯＮ）、ルーチンを抜ける。また、S409でエアコンスイッチ８９がＯＦＦと判断され、あるいは、S414でＮSET ＞ＮＡＲＣＯＮと判断された場合、そのままルーチンを抜ける。
【００９０】
（クローズド／オープンループ制御判別サブルーチン）
図６はメインルーチンにおいて実行（S117参照）されるクローズド／オープンループ制御判別サブルーチンである。まず、S501で始動後設定時間ＴＭＡＳＩ［sec］経過したかを判別すべく、始動後経過時間判別カウント値ＣＯＵＮＴSTの値を参照し、ＣＯＵＮＴST＝０の場合、即ち、始動後設定時間経過したと判断した場合S502へ進み、ＣＯＵＮＴST≠０の場合S503へ進み、始動後経過時間判別カウント値ＣＯＵＮＴSTをカウントダウンし（ＣＯＵＮＴST←ＣＯＵＮＴST−１）、エンジン始動後、設定時間を経過しておらずエンジン回転数が未だ不安定と推定されるためオープンループ制御を選択すべくS527へジャンプしてクローズド／オープンループ制御判別フラグＦＬＡＧCLをクリアしてルーチンを抜ける。
【００９１】
一方、S502へ進むとアイドルスイッチ１２ｂがＯＮかを判断し、ＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）の場合S504へ進み、ＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）の場合、オープンループ制御を選択すべく、S527へジャンプする。
【００９２】
また、上記S502からS504へ進むとニュートラルスイッチ５９がＯＮかを判断し、ＯＦＦの場合S505へ進みパーキングスイッチ６０がＯＮかを判別し、ＯＮの場合S509へ進み、ＯＦＦの場合S506へ進む。
【００９３】
S504およびS505でニュートラルスイッチ５９、パーキングスイッチ６０が共にＯＦＦであり、セレクトレバーがＮレンジ、Ｐレンジ以外のレンジ、即ち、走行レンジにセットされていると判断されてS506へ進むと、ニュートラルスイッチ５９、あるいは、パーキングスイッチ６０がＯＮ後、すなわち、Ｐ，Ｎレンジ移行後の経過時間が設定時間ＡＴＣ［sec］に達したかを判別するためのＰ，Ｎレンジ移行後経過時間判別カウント値ＣＯＵＮＴAT（ダウンカウンタ）に、上記設定時間ＡＴＣに相当する設定値ＣＯＵＮＴATC をセットした後S507へ進み、車速センサ５６で検出した車速ＶＳＰと予め設定した走行時クローズド／オープンループ制御を判別する車速ＶＳＰFBA とを比較し、ＶＳＰ＜ＶＳＰFBA の場合S508へ進み、ＶＳＰ≧ＶＳＰFBA の場合オープンループ制御を選択すべくS527へ進む。そして、S508へ進むと第１のクランク角センサ３１出力に基づき検出したエンジン回転数ＮEと予め設定したクローズド／オープンループ制御判別エンジン回転数ＲＰＭFBとを比較し、ＮE ＜ＲＰＭFBの場合S513へ進み、ＮE ≧ＲＰＭFBの場合オープンループ制御を選択すべくS527へ進む。
【００９４】
また、Ｎレンジ、あるいはＰレンジと判別されて上記S504あるいはS505からS509へ進むとＰ，Ｎレンジ移行後経過時間判別カウント値ＣＯＵＮＴATの値を参照し、ＣＯＵＮＴAT＝０の場合、走行レンジからＰレンジ、あるいはＮレンジに移行した後設定時間ＡＴＣ［sec］経過したと判断してS510へ進む。
【００９５】
一方、S509でＣＯＵＮＴAT≠０と判断されてS511へ進むと上記Ｐ，Ｎレンジ移行後経過時間判別カウント値ＣＯＵＮＴATをカウントダウンし（ＣＯＵＮＴAT←ＣＯＵＮＴAT−１）、走行レンジからＰ，Ｎレンジへ移行後、設定時間が経過しておらず、エンジン負荷急変に伴い未だエンジン回転数が安定していないと推定し、S527へジャンプしてオープンループ制御を選択する。
【００９６】
また、S509でＣＯＵＮＴAT＝０と判断されてS510へ進むと車速センサ５６で検出した車速ＶＳＰと予め設定した停車時クローズド／オープンループ制御を判断する車速ＶＳＰOPA とを比較し、ＶＳＰ≧ＶＳＰOPA の場合S512へ進み、上記エンジン回転数ＮE と前述のアイドル目標回転数設定サブルーチンで設定したアイドル目標回転数ＮSET に設定値ＮＣＬＯＰを加算した値とを比較し、ＮE ＜ＮSET＋ＮＣＬＯＰの場合S513へ進み、また、ＮE ≧ＮSET ＋ＮＣＬＯＰの場合、オープンループ制御を選択すべくS527へジャンプする。
【００９７】
また、上記S510でＶＳＰ＜ＶＳＰOPA の場合、あるいは、S512でＮE＜ＮSET＋ＮＣＬＯＰの場合には、S513へ進み、エンジン回転数ＮE とアイドル目標回転数ＮSET に設定値ＤＮＡＣＦを減算した値とを比較し、ＮE ＜ＮSET −ＤＮＡＣＦの場合にはS517へ進み、ＮE ≧ＮSET −ＤＮＡＣＦの場合にはS514へ進む。S514ではエアコンスイッチ８９がＯＦＦか否かを判別し、エアコンスイッチ８９がＯＮの場合には、S515でエアコンＯＮ→ＯＦＦ後の経過時間が設定時間ＡＯＦＦ［sec］に達したかを判別するためのエアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴA （ダウンカウンタ）に、上記設定時間ＡＯＦＦに相当する設定値ＣＯＵＮＴAOFFをセットし（ＣＯＵＮＴA ←ＣＯＵＮＴAOFF）、現在エアコンスイッチ８９がＯＮでエアコン補正過渡時のため、オープンループ制御を実行すべくS527へジャンプする。
【００９８】
一方、S514でエアコンスイッチ８９がＯＦＦと判断されてS516へ進むと、上記エアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴA の値を参照し、ＣＯＵＮＴA ＝０の場合、エアコンスイッチ８９がＯＮ→ＯＦＦ後設定時間ＡＯＦＦ［sec］経過したと判断しS517へ進む。また、ＣＯＵＮＴA ≠０の場合S518へ進み、エアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴA をカウントダウンし（ＣＯＵＮＴA ←ＣＯＵＮＴA −１）、オープンループ制御を選択すべくS527へ進む。
【００９９】
そして、上記S513あるいS516からS517へ進むと、上記アイドル目標回転数ＮSET からエンジン回転数ＮE を減算して差回転ΔＮを求め、S519で、上記差回転ΔＮと設定値ＮＤPSとを比較し、ΔＮ≧ＮＤPSの場合S520へ進み、ΔＮ＜ＮＤPSの場合S527へ進む。
【０１００】
S520へ進むと、上記差回転ΔＮと設定値ＤＮＦＢ（但し、ＤＮＦＢ≧ＮＤPS）とを比較し、ΔＮ≦ＤＮＦＢの場合S521へ進み、ΔＮ＞ＤＮＦＢの場合クローズドループ制御条件成立と判断してS525へ進み、クローズドループ制御を選択すべく、クローズド／オープンループ制御判別フラグＦＬＡＧCLをセットしてルーチンを抜ける。
【０１０１】
S521へ進むと、後述する加減速補正設定サブルーチンで設定される加減速補正ＤSHPTの値を参照し、ＤSHPT＝０の場合S522へ進み、ＤSHPT≠０の場合S523へ進む。
【０１０２】
S522へ進むと後述するダッシュポット補正値設定ルーチンで設定されるダッシュポット補正値ＤＨＥＮＢの値を参照し、ＤＨＥＮＢ≠０の場合S523へ進み、ＤＨＥＮＢ＝０の場合S524へ進む。
【０１０３】
S523では、加減速補正ＤSHPT＝０、あるいは、ダッシュポット補正値ＤＨＥＮＢ＝０の状態が設定時間ＣＬＳＤ［sec］経過したかを判別するための定常状態移行判別カウント値ＣＯＵＮＴCL（ダウンカウンタ）に、上記設定時間ＣＬＳＤに相当する設定値ＣＯＵＮＴCLSDをセットし（ＣＯＵＮＴCL←ＣＯＵＮＴCLSD）、現在、加減速補正あるいはダッシュポット補正が実行されている過渡状態のためオープンループ制御を選択すべくS527へ進む。
【０１０４】
一方、S522からS524へ進むと上記定常状態移行判別カウント値ＣＯＵＮＴCLの値を参照し、ＣＯＵＮＴCL＝０の場合定常状態でありクローズドループ制御条件成立と判断し、クローズドループ制御を選択すべくS525へ進み、ＣＯＵＮＴCL≠０の場合S526へ進み、定常状態移行判別カウント値ＣＯＵＮＴCLをカウントダウンした後（ＣＯＵＮＴCL←ＣＯＵＮＴCL−１）、S527へ進む。
【０１０５】
そして、S520あるいはS524からS525へ進むとクローズド／オープンループ制御判別フラグＦＬＡＧCLをセット（ＦＬＡＧCL←１、クローズドループ制御選択）し、ルーチンを抜ける。
【０１０６】
また、S502,S503,S507,S508,S511,S512,S515,S518,S519,S523 あるいは、S526からS527へ進むとクローズド／オープンループ制御判別フラグＦＬＡＧCLをクリア（ＦＬＡＧCL←０、オープンループ制御選択）し、ルーチンを抜ける。
【０１０７】
なお、上記フローチャートによるクローズドループ制御条件をまとめれば以下の〈１〉〜〈７〉の通りであり、それ以外ではオープンループ制御となる。
【０１０８】
〈１〉始動後、所定時間ＴＭＡＳＩ［sec］経過していること
〈２〉アイドルスイッチ１２ｂがＯＮであること
〈３〉（ｉ）ニュートラルスイッチ５９、および、パーキングスイッチ６０がＯＮで、車速ＶＳＰ＜ＶＳＰOPA であること又は（ｉｉ）ニュートラルスイッチ５９、およびパーキングスイッチ６０がＯＮで、ＶＳＰ≧ＶＳＰOPA ［Km/h］ではあるが、エンジン回転数ＮE ＜（ＮSET＋ＮＣＬＯＰ）［rpm］であること又は（ｉｉｉ）ニュートラルスイッチ５９、またはパーキングスイッチ６０がともにＯＦＦで、車速ＶＳＰ＜ＶＳＰFBA ［Km/h］、かつ、エンジン回転数ＮE＜ＲＰＭFB［rpm］であること
〈４〉（ｉ）エアコンスイッチ８９がＯＮで、エアコン過渡補正値ＩＳＣACF＝０、あるいは、ＩＳＣACF ≠０［％］であっても、エンジン回転数ＮE ＜（ＮＮSET −ＤＮＡCF）［rpm］であること又は（ｉｉ）エアコンスイッチ８９がＯＦＦで、ＯＮ→ＯＦＦ後所定時間ＡＯＦＦ［sec］経過後、あるいは、エンジン回転数ＮE ＜（ＮSET −ＤＮＡＣＦ）［rpm］であること
〈５〉ニュートラルスイッチ５９、あるいは、パーキングスイッチ６０がＯＮで、ＯＦＦ→ＯＮ後所定時間ＡＴＣ［sec］経過後であること
〈６〉パワステ補正値ＩＳＣPS＝０、あるいは、ＩＳＣPS≠０［％］であっても、差回転ΔＮ≧ＮＤPS［rpm］であること
〈７〉（ｉ）〈１〉〜〈６〉を全て満たし、かつ、加減速補正ＤSHPT＝０［％］およびダッシュポット補正ＤＨＥＮＢ＝０［％］の状態が所定時間ＣＬＳＤ［sec］継続しているか、または、所定時間ＣＬＳＤ［sec］継続していない場合でも差回転ΔＮ＞ＤＮＦＢ［rpm］であること又は（ｉｉ）〈１〉〜〈６〉を全て満たし、かつ、加減速補正ＤSHPT≠０［％］あるいはダッシュポット補正ＤＨＥＮＢ≠０［％］でも、差回転ΔＮ＞ＤＮＦＢ［rpm］であること（エアコン補正値設定サブルーチン）図７，図８は、51.2msec毎に割込み実行される補正値設定ルーチンにおいて実行（S201参照）されるエアコン補正値ＩＳＣAC設定のサブルーチンである。
【０１０９】
まず、S601でニュートラルスイッチ５９がＯＮかを判断し、ＯＦＦの場合S602へ進み、ＯＮの場合Ｎレンジと判断してS603へ進む。
【０１１０】
S602へ進むとパーキングスイッチ６０がＯＮかを判断し、ＯＮの場合、Ｐレンジと判断してS603へ進み、ＯＦＦの場合、走行レンジと判断してS604へ進む。
【０１１１】
S603へ進むと走行レンジ判別フラグＦＬＡＧATをクリア（ＦＬＡＧAT←０、ＮまたはＰレンジ）しS605へ進み、また、S604へ進むと走行レンジ判別フラグＦＬＡＧATをセットし（ＦＬＡＧAT←１、走行レンジ）、S605へ進む。
【０１１２】
S605ではエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合S606へ進み、ＯＦＦの場合S607へ進み、エアコンスイッチ８９がＯＮしたときから設定時間ＡＯＮ［sec］経過したかを判別するためのエアコン過渡補正終了判別カウント値ＣＯＵＮＴAC（ダウンカウンタ）に、上記設定時間ＡＯＮに相当する設定値ＣＯＵＮＴAON をセットし（ＣＯＵＮＴAC←ＣＯＵＮＴAON）、S620へ進む。
【０１１３】
上記S605でエアコンスイッチ８９がＯＮと判断されてS606へ進むと、エアコン過渡補正終了判別カウント値ＣＯＵＮＴACの値を参照し、ＣＯＵＮＴAC≠０の場合、エアコンスイッチＯＦＦ→ＯＮ後設定時間ＡＯＮ経過していないと判断し、S608へ進み、また、ＣＯＵＮＴAC＝０の場合エアコンスイッチＯＦＦ→ＯＮ後設定時間ＡＯＮ経過したと判断してS611へ進む。
【０１１４】
S608へ進むとエアコン過渡補正終了判別カウント値ＣＯＵＮＴACをカウントダウンした後（ＣＯＵＮＴAC←ＣＯＵＮＴAC−１）、S609へ進みエンジン回転数ＮE とアイドル目標回転数ＮSET に設定値ＤＮＡＣを加算した設定上限値とを比較しＮE ≦ＮSET ＋ＤＮＡＣの場合エンジン回転数ＮE が設定回転数より低いと判断しS610へ進み、また、ＮE ＞ＮSET ＋ＤＮＡＣの場合エンジン回転数ＮE が設定回転数より高いと判断してS611へ進む。
【０１１５】
S610へ進むと走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝１（走行レンジ）の場合S612へ進み、ＦＬＡＧAT＝０（ＮまたはＰレンジ）の場合S613へ進む。
【０１１６】
S612へ進むとエアコン過渡補正値ＩＳＣACF を設定値ＡＣＦＦＤにて初期値設定した後（ＩＳＣACF ←ＡＣＦＦＤ［％］）、S616へ進む。また、S613へ進むとエアコン過渡補正値ＩＳＣACF を設定値ＡＣＦＦＮにて初期値設定した後（ＩＳＣACF ←ＡＣＦＦＮ［％］）、S616へ進む。
【０１１７】
一方、上記S606あるいはS609からS611へ進むと、エアコン過渡補正値ＩＳＣACF が０［％］以下かを判断し、ＩＳＣACF ≦０の場合S614へ進み、上記エアコン過渡補正値ＩＳＣACF を０［％］に設定した後（ＩＳＣACF ←０）、S616へ進む。また、ＩＳＣACF ＞０の場合、エアコン過渡補正値ＩＳＣACF から設定値ＤＡＣＦＦを減算した値で上記エアコン過渡補正値ＩＳＣACF を更新した後（ＩＳＣACF ←ＩＳＣACF −ＤＡＣＦＦ）、S616へ進む。
【０１１８】
上記S612〜S615のいずれかからS616へ進むと走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝１（走行レンジ）の場合S617へ進み、ＦＬＡＧAT＝０（Ｐ，Ｎレンジ）の場合S618へ進む。
【０１１９】
S617へ進むとエアコン定常補正値ＩＳＣACS を設定値ＡＣＤＴＹで設定した後（ＩＳＣACS ←ＡＣＤＴＹ）、S619へ進む。また、S618へ進むとエアコン定常補正値ＩＳＣACS をバックアップＲＡＭ５０ａの所定アドレスから読出したエアコン学習補正値ＭＡＣＤＴＹ（後述するエアコン補正学習ルーチンで設定される）で設定した後（ＩＳＣACS ←ＭＡＣＤＴＹ）、S619へ進む。
【０１２０】
上記S617あるいはS618からS619へ進むと、上記エアコン過渡補正値ＩＳＣACFに上記エアコン定常補正値ＩＳＣACS を加算した値でエアコン補正値ＩＳＣAC［％］を設定し（ＩＳＣAC←ＩＳＣACF ＋ＩＳＣACS）、ルーチンを抜ける。
【０１２１】
一方、上記S607からS620へ進むと、エアコン補正値ＩＳＣACを読出し、エアコン補正値ＩＳＣACが０［％］以下かを判断し、ＩＳＣAC≦０の場合S621へ進みエアコン補正値ＩＳＣACを０［％］に設定した後（ＩＳＣAC←０）、ルーチンを抜ける。
【０１２２】
また、ＩＳＣAC＞０の場合S622へ進み、上記エアコン補正値ＩＳＣACと設定値ＩＳＣACD ［％］（０％に近い値）とを比較し、ＩＳＣAC≧ＩＳＣACD の場合S623へ進み、ＩＳＣAC＜ＩＳＣACD の場合エアコン補正値ＩＳＣACが０［％］に近づいているため制御ハンチングを防止し収束性を良くするため減算量を少くすべく、S624へ進む。
【０１２３】
S623へ進むと走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝１（走行レンジ）の場合S626へ進み減量値ＤＳＡＣを設定値ＤＳＡＣ１Ｄ［％］で設定して（ＤＳＡＣ←ＤＳＡＣ１Ｄ）、S630へ進む。また、ＦＬＡＧAT＝０（Ｐ，Ｎレンジ）の場合S627へ進み減量値ＤＳＡＣを設定値ＤＳＡＣ１Ｎで設定して（ＤＳＡＣ←ＤＳＡＣ１Ｎ）、S630へ進む。
【０１２４】
また、上記S622からS624へ進むと走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝１（走行レンジ）の場合S628へ進み減量値ＤＳＡＣを設定値ＤＳＡＣ２Ｄ（但し、ＤＳＡＣ１Ｄ＞ＤＳＡＣ２Ｄ）で設定し（ＤＳＡＣ←ＤＳＡＣ２Ｄ）、S630へ進む。また、ＦＬＡＧAT＝０（Ｐ，Ｎレンジ）の場合S629へ進み、減量値ＤＳＡＣを設定値ＤＳＡＣ２Ｎ（但し、ＤＳＡＣ１Ｎ＞ＤＳＡＣ２Ｎ）で設定した後（ＤＳＡＣ←ＤＳＡＣ２Ｎ）、S630へ進む。
【０１２５】
上記S626〜S629の何れかかS630へ進むとエアコン補正値ＩＳＣACを上記減量値ＤＳＡＣで減算した後（ＩＳＣAC←ＩＳＣAC−ＤＳＡＣ）、ルーチンを抜ける。
【０１２６】
上記エアコン補正値設定の代表例を図２９のタイムチャートにしたがって説明する。
【０１２７】
エアコンスイッチ８９をＯＦＦからＯＮにセットすると、設定時間ＡＯＮ［sec］の間エアコン補正値ＩＳＣACが予め設定されたエアコン定常補正値ＩＳＣACS（ＡＣＤＴＹ，あるいは、ＭＡＣＤＴＹ）とエアコン過渡補正値ＩＳＣACF（ＡＣＦＦＤ、あるいは、ＡＣＦＦＮ）とを加算した値に設定され（経過時間ｔ1〜ｔ2）、設定時間ＡＯＮ［sec］の間、エンジン回転数ＮE がアイドル目標回転数ＮSET に設定値ＤＮＡＣを加算した回転数に近づくように制御される。
【０１２８】
すなわち、エアコン補正値ＩＳＣACがエアコン過渡補正値ＩＳＣACFを加算していない値で設定されると、エアコンスイッチ８９をＯＮした直後にエアコンコンプレッサ駆動による負荷が急にエンジンにかかるため、図（ｃ）の破線で示すようにエンジン回転数が大きく変動しフィーリングが悪化する。
【０１２９】
したがって、エアコンスイッチ８９がＯＮ後、設定時間ＡＯＮの間、エアコン過渡補正値ＩＳＣACF によりエアコン補正値ＩＳＣACを大きくしてＩＳＣバルブ１３に対するデューティ比ＩＳＣONを大きくし、ＩＳＣバルブ１３の開度を増大させて空気量を増加させることで、エアコンスイッチＯＮ直後のエアコンコンプレッサ駆動による急激な負荷変動に伴うエンジン回転数ＮE の落ち込みを防止し、図（ｃ）の実線で示すように安定したフィーリングを得ることができる。
【０１３０】
そして、設定時間ＡＯＮ［sec］経過すると、上記エアコン過渡補正値ＩＳＣACF を０になるまで演算サイクルごとに設定値ＤＡＣＦＦずつ減量する（経過時間ｔ2 〜ｔ3）。このように、エアコン過渡補正値ＩＳＣACF を経時的に徐々に減少させることで、エアコン駆動時のアイドルアップ回転数へエンジン回転数ＮE をスムーズに移行させることができる。
【０１３１】
その後、上記エアコンスイッチ８９をＯＦＦすると（経過時間ｔ4）、上記エアコン補正値ＩＳＣACを演算サイクルごとに設定値ＤＳＡＣ１ＤあるいはＤＳＡＣ１Ｎだけ、上記エアコン補正値ＩＳＣACを設定値ＩＳＣＡＣＤになるまで減量する。
【０１３２】
そして、上記エアコン補正値ＩＳＣACが設定値ＩＳＣＡＣＤに達したら（経過時間ｔ5）、上記エアコン補正値ＩＳＣACを演算サイクルごとに設定値ＤＳＡＣ２ＤあるいはＤＳＡＣ２Ｎずつ０になるまで減量する。
【０１３３】
すなわち、エアコンスイッチ８９をＯＮからＯＦＦにしたとき、上記エアコン補正値ＩＳＣACをいきなり０にすると、特に可変容量エアコンコンプレッサ６４を用いているため、エアコンスイッチＯＮ→ＯＦＦ後所定時間内はエアコンクラッチリレー６５が未だＯＮ（接続）しており、かつ、エアコン容量制御により、エアコンコンプレッサ駆動によるエンジンに対する負荷が残っているため、図（ｃ）の破線で示すようにエンジン回転数落ちが生じてしまう。
【０１３４】
また、エアコンスイッチ８９のＯＦＦ後、大きいままの減量値で上記エアコン補正値ＩＳＣACを減量すると図（ｃ）の一点鎖線で示すようにＩＳＣAC＝０近傍におけるエンジン回転数ＮE の収束性が悪くなる。
【０１３５】
従って、エアコンスイッチ８９のＯＦＦ後、エアコン補正値ＩＳＣACが設定値ＩＳＣACD に低下するまでの間、エアコン補正値ＩＳＣACを演算周期ごとに第１の減算値ずつ減量し、ＩＳＣバルブ１３の開度を徐々に減じて空気量を徐々に減少させることで、エアコンスイッチをＯＦＦした直後に残っているエアコンコンプレッサ６４からのフリクションによるエンジン回転数落ちを防止し、その後、エアコン補正値ＩＳＣACが設定値ＩＳＣACD 以下に低下したら、エアコン補正値ＩＳＣACを演算周期ごとに第１の減算値よりも小さい第２の減算値ずつ０になるまで減量し、エアコン補正値ＩＳＣACを用いて設定されるデューティ比ＩＳＣONの減少率を小さくしてＩＳＣバルブ１３の開度減少率を小さくすることで、エアコンＯＦＦ時のアイドル目標回転数ＮSET に近付く際のエンジン回転数ＮE の低下速度を減少させてエンジン回転数ＮE の目標回転数に対する収束性を向上する。
【０１３６】
（エアコン補正学習ルーチン）
図９はエアコンスイッチ８９のＯＦＦ→ＯＮ時に割込み実行するルーチンで、まず、S101でクローズド／オープンループ制御判別フラグＦＬＡＧCLの値を参照し、ＦＬＡＧCL＝１（クローズドループ制御中）の場合S702へ進み、ＦＬＡＧCL＝０（オープンループ制御中）の場合S707へ進む。
【０１３７】
S702へ進むと、後述するクローズドループ補正Ｉ分更新ルーチンで設定される現在のクローズドループ補正Ｉ分ＩＳＣI を読出しＲＡＭ５０の所定アドレスに現在のフィードバック制御値ＭＩＳＣＩとして格納し（ＭＩＳＣＩ←ＩＳＣI）、S703でタイマＴＩＭＥＲLRN をスタートさせ、S704でエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合S705へ進み、ＯＦＦの場合S707へ進む。S705へ進むとクローズド／オープンループ制御判別フラグＦＬＡＧCLの値を参照し、ＦＬＡＧCL＝１（クローズドループ制御中）の場合S706へ進み、ＦＬＡＧCL＝０（オープンループ制御中）の場合S707へ進む。
【０１３８】
S706へ進むとタイマＴＩＭＥＲLRN の計時と予め設定した時間ＴＡＣＬＲＮとを比較し、ＴＩＭＥＲLRN ≧ＴＡＣＬＲＮの場合、エアコンスイッチ８９がＯＮの状態がクローズドループ制御中で設定時間経過したと判断してS708へ進み、また、ＴＩＭＥＲLRN ＜ＴＡＣＬＲＮの場合S704へ戻る。
【０１３９】
一方、上記S701，S704あるいは、S705からS707へ進むとタイマＴＩＭＥＲLRNをリセット（ＴＩＭＥＲLRN ←０）した後、ルーチンを抜ける。
【０１４０】
また、上記S708へ進むとタイマＴＩＭＥＲLRN をリセット（ＴＩＭＥＲLRN ←０）した後、S709で現時点のクローズドループ補正Ｉ分ＩＳＣI を読出し、ＲＡＭ５０の所定アドレスに設定時間ＴＡＣＬＲＮ経過後のフィードバック制御値ＬＩＳＣI として格納する。
【０１４１】
そして、S710へ進み、バックアップＲＡＭ５０ａの所定アドレスに格納されているエアコン補正学習値ＭＡＣＤＴＹを次式から求めた値で更新し、ルーチンを抜ける。
【０１４２】
ＭＡＣＤＴＹ←ＭＡＣＤＴＹ＋［（ＬＩＳＣI −ＭＩＳＣＩ）×ＫＡＣＯＮ］ＫＡＣＯＮ：Ｉ分移行率図１０はエアコンスイッチ８９のＯＮ→ＯＦＦ時に割込み実行するルーチンで、まず、S801でクローズド／オープンループ制御判別フラグＦＬＡＧCLの値を参照し、ＦＬＡＧCL＝１（クローズドループ制御中）の場合S802へ進み、ＦＬＡＧCL＝０（オープンループ制御中）の場合、そのままルーチンを抜ける。
【０１４３】
S802へ進むとＲＡＭ５０の所定アドレスに格納されているフィードバック制御値ＭＩＳＣＩ（エアコンスイッチ８９がＯＦＦ→ＯＮ時の値）を読出し、S803で現在のクローズドループ補正Ｉ分ＩＳＣI を読出し、ＲＡＭ５０の所定のアドレスに現在のフィードバック制御ＬＩＳＣI として格納する（ＬＩＳＣI ←ＩＳＣI）。
【０１４４】
そして、S804へ進み、バックアップＲＡＭ５０ａの所定アドレスに格納されているエアコン補正学習値ＭＡＣＤＴＹを次式から求めた値で更新し、ルーチンを抜ける。
【０１４５】
ＭＡＣＤＴＹ←ＭＡＣＤＴＹ＋［（ＬＩＳＣI −ＭＩＳＣＩ）×ＫＡＣＯＮ］以上のように、エアコンＯＮ時、クローズドループ制御中の場合、そのときのフィードバック制御値ＭＩＳＣＩとその後同一条件（クローズドループ制御中、かつ、エアコンスイッチ８９がＯＮの状態）が設定時間ＴＡＣＬＲＮ継続した時のフィードバック制御値ＬＩＳＣＩとの差に基づきエアコン補正学習値ＭＡＣＤＴＹを設定し、前述のエアコン補正値設定サブルーチンにおいてＰ，Ｎレンジにおけるエアコン補正値ＩＳＣACを設定する際に、エアコン定常補正値ＩＳＣACとしてエアコン補正学習値ＭＡＣＤＴＹを用いることでＩＳＣバルブ１３の経年劣化などを補償し、エアコンＯＮ時において所定のアイドルアップを常に行うことができる。なお、走行レンジ時においてはエンジン負荷がＮ，Ｐレンジに較べて相対的に大きくなるためＩＳＣバルブ１３の劣化の影響は少なく、したがって、学習補正値を用いる必要はない。
【０１４６】
また、エアコンスイッチ８９がＯＦＦ→ＯＮ時の割込みのみならず、ＯＮ→ＯＦＦ時の割込みをも実行することで、その後に上記エアコンスイッチ８９がＯＦＦ→ＯＮ時に実行する割込みルーチンで設定するエアコン補正学習値ＭＡＣＤＴＹと前回のＯＦＦ→ＯＮ時に設定したエアコン補正学習値ＭＡＣＤＴＹとの間のずれを補償することができる。
【０１４７】
（ＡＴ車走行レンジ補正値設定サブルーチン）
図１１，図１２は51.2msec毎に割込み実行される補正値設定ルーチンにおいて実行（S202参照）されるＡＴ車走行レンジ補正値ＩＳＣATDS設定のサブルーチンである。
【０１４８】
まず、S901で前述したエアコン補正値設定サブルーチンで設定される走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝１（走行レンジ）の場合S902へ進み、ＦＬＡＧAT＝０（Ｐ，Ｎレンジ）の場合S903へ進む。
【０１４９】
S902へ進むと、後述するS913で設定するＰ，Ｎレンジから走行レンジへシフトした際の遅れ時間ＩＳＣＡＴ１［sec］に相当する走行レンジ移行判別カウント値ＣＯＵＮＴAT1 （ダウンカウンタ）の値を参照し、ＣＯＵＮＴAT1 ＝０の場合S904へ進む。さらに、ＣＯＵＮＴAT1 ≠０の場合S905へ進み、走行レンジ移行判別カウント値ＣＯＵＮＴAT1 をカウントダウンして（ＣＯＵＮＴAT1 ←ＣＯＵＮＴAT1 −１）S908へ進む。
【０１５０】
また、上記S902で走行レンジ状態（ニュートラルスイッチ５９、パーキングスイッチ６０が共にＯＦＦ）が遅れ時間ＩＳＣＡＴ１以上継続した（ＣＯＵＮＴAT1 ＝０）と判断してS904へ進むと、ＲＡＭ５０の所定アドレスに格納されているＡＴ車走行レンジ補正値ＩＳＣATDSと設定値ＤＲＧＤＴＹとを比較し、ＩＳＣATDS≧ＤＲＧＤＴＹの場合、S906へ進み上記ＡＴ車走行レンジ補正値ＩＳＣATDSを上記設定値ＤＲＧＤＴＹで設定して（ＩＳＣATDS←ＤＲＧＤＴＹ）、S908へ進む。また、ＩＳＣATDS＜ＤＲＧＤＴＹの場合、S907へ進み上記ＡＴ車走行レンジ補正値ＩＳＣATDSに小量設定値ＤＬＴＡＴ１（但し、ＤＬＴＡＴ１＜ＤＲＧＤＴＹ）を加算した値で上記ＡＴ車走行レンジ補正値ＩＳＣATDSを更新して（ＩＳＣATDS←ＩＳＣATDS＋ＤＬＴＡＴ１）、S908へ進む。
【０１５１】
そして、S905，S906、あるいは、S907からS908へ進むと走行レンジからＮ，Ｐレンジへシフトした際の遅れ時間ＩＳＣAT2A［sec］に相当する設定値ＣＯＵＮＴISCAT2でＮ，Ｐレンジ移行判別カウント値ＣＯＵＮＴAT2 （ダウンカウンタ）をセットして（ＣＯＵＮＴAT2 ←ＣＯＵＮＴISCAT2）、ルーチンを抜ける。
【０１５２】
一方、S901でＮ，Ｐレンジ（ＦＬＡＧAT＝０）と判断されてS903へ進むと、Ｎ，Ｐレンジ移行判別カウント値ＣＯＵＮＴAT2 の値を参照し、ＣＯＵＮＴAT2 ≠０の場合S909へ進み、上記カウント値ＣＯＵＮＴAT2 をカウントダウンして（ＣＯＵＮＴAT2 ←ＣＯＵＮＴAT2 −１）、S913へ進む。
【０１５３】
また、上記S903でＣＯＵＮＴAT2 ＝０と判断されてS910へ進むと、上記ＡＴ車走行レンジ補正値ＩＳＣATDSが０以下かを判断し、ＩＳＣATDS＞０の場合S911へ進みＡＴ車走行レンジ補正値ＩＳＣATDSから小量設定値ＤＬＴＡＴ２を減算した値で上記ＡＴ車走行レンジ補正値ＩＳＣATDSを設定して（ＩＳＣATDS←ＩＳＣATDS−ＤＬＴＡＴ２）、S913へ進む。また、ＩＳＣATDS≦０の場合S912へ進み上記ＡＴ車走行レンジ補正値ＩＳＣATDSを０［％］に設定（ＩＳＣATDS←０）して、S913へ進む。
【０１５４】
そして、S909，S911、あるいは、S912からS913へ進むと、Ｎ，Ｐレンジから走行レンジへシフトした際の遅れ時間ＩＳＣＡＴ１［sec］に相当するカウント値ＣＯＵＮＴISCAT1で走行レンジ移行判別カウント値ＣＯＵＮＴAT1 をセットした後（ＣＯＵＮＴAT1 ←ＣＯＵＮＴISCAT1）、ルーチンを抜ける。
【０１５５】
上記ＡＴ車走行レンジ補正値設定の代表例を図３０のタイムチャートに従って説明する。
【０１５６】
Ｎ，Ｐレンジ（ＦＬＡＧAT＝０）から走行レンジ（ＦＬＡＧAT＝１）にシフトすると（経過時間ｔ1）、所定遅れ時間ＩＳＣＡＴ１［sec］の計時が開始され、この遅れ時間ＩＳＣＡＴ１［sec］経過後、演算サイクルごとに小量の設定値ＤＬＴＡＴ１［％］を加算し（ＩＳＣATDS←ＩＳＣATDS＋ＤＬＴＡＴ１）、ＡＴ車走行レンジ補正値ＩＳＣATDS［％］が設定値ＤＲＧＤＴＹ［％］に達したら（経過時間ｔ2）、上記ＡＴ車走行レンジ補正値ＩＳＣATDS［％］を上記設定値ＤＲＧＤＴＹ［％］で固定する（経過時間ｔ2 〜ｔ3）。
【０１５７】
Ｎ，Ｐレンジから走行レンジへシフトした際、微小の遅れ時間をもってエンジンに負荷がかかるため、ただちにＡＴ車走行レンジ補正値ＩＳＣATDSを０→設定値ＤＲＧＤＴＹ［％］に設定すると図（ｃ）の破線で示すようにエンジン回転数ＮE が一時的に上昇してフィーリングが悪化する。
【０１５８】
また、ＡＴ車走行レンジ補正を行わないとＮ，Ｐレンジから走行レンジにシフトしたとき急激にエンジン負荷がかかり、図（ｃ）の一点鎖線で示すようにエンジン回転数が低下してしまい、クローズドループ補正Ｉ分ＩＳＣI によってエンジン回転数が収束するまでに時間がかかってしまう。
【０１５９】
従って、走行レンジにシフトした際、エンジン負荷の伝達遅れ時間に相当する所定遅れ時間ＩＳＣAT1 経過後に、ＡＴ車走行レンジ補正値ＩＳＣATDSを設定値ＤＲＧＤＴＹに達するまで徐々に増加させてＡＴ車走行レンジ補正値ＩＳＣATDSを用いて設定されるデューティ比ＩＳＣONを徐々に増加し、ＩＳＣバルブ１３により空気量を徐々に増加させることで、エンジン回転数変動が防止され、フィーリングが向上する。
【０１６０】
一方、走行レンジ（ＦＬＡＧAT＝１）からＮ，Ｐレンジ（ＦＬＡＧAT＝０）にシフトすると（経過時間ｔ3）、所定遅れ時間ＩＳＣＡＴ２［sec］の計時が開始され、この遅れ時間ＩＳＣＡＴ２［sec］経過後、ＡＴ車走行レンジ補正値ＩＳＣATDSを演算サイクルごとに小量の設定値ＤＬＴＡＴ２［％］で０になるまで減算する（ＩＳＣATDS←ＩＳＣATDS−ＤＬＴＡＴ２、経過時間ｔ4）。
【０１６１】
走行レンジからＮ，Ｐレンジへシフトした際、微小の遅れ時間をもってエンジン負荷が急減するため、直ちにＡＴ車走行レンジ補正値ＩＳＣATDSを０にすると、変速機側のエンジンへの負荷が完全にはなくなっていないので、図（ｃ）の破線で示すようにエンジン回転数が一時的に低下しフィーリングが悪化する。
【０１６２】
また、ＡＴ車走行レンジ補正を行わないと走行レンジからＮ，Ｐレンジへシフトした際、急激にエンジン負荷が減少するため図（ｃ）の二点鎖線で示すようにエンジン回転数の吹上がりを生じフィーリングが悪くなる。
【０１６３】
従って、Ｎ，Ｐレンジへシフトした際、所定遅れ時間ＩＳＣAT2経過後に、ＡＴ車走行レンジ補正値ＩＳＣATDSを０[％]になるまで徐々に減少させてデューティ比ＩＳＣONを徐々に減じ、ＩＳＣバルブ１３により空気量を徐々に減少させることで、このときのエンジン回転数変動を防止し、フィーリングを向上する。
【０１６４】
（加減速補正設定サブルーチン）
図１３，図１４は51.2msec毎に割込み実行される補正値設定ルーチンにおいて実行（S203参照）される加減速補正ＤＳＨＰＴ設定のサブルーチンである。
【０１６５】
まず、S1001 でアイドルスイッチ１２ｂがＯＦＦかを判断し、ＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）の場合S1002 へ進み、ＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）の場合S1003 へ進む。
【０１６６】
S1002 へ進むと走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝０（Ｎ，Ｐレンジ）の場合S1004 へ進み、ＦＬＡＧAT＝１（走行レンジ）の場合S1005 へ進む。
【０１６７】
S1004 へ進むとスロットル開度センサ１２ａで検出したスロットル開度ＴＨＶに基づきＲＯＭ４９の一連のアドレスに格納されているＮ，Ｐレンジ用加減速補正テーブルＴＤＡＳＨＮを補間計算付きで参照して加減速補正ＤＳＨＰＴ［％］を設定した後S1006 へ進む。
【０１６８】
また、S1002 からS1005 へ進むと上記スロットル開度ＴＨＶに基づきＲＯＭ４９の一連のアドレスに格納されている走行レンジ用加減速補正テーブルＴＤＡＳＨＤを補間計算付きで参照して加減速補正ＤＳＨＰＴ［％］を設定した後S1006へ進む。
【０１６９】
セレクトレバーがＮレンジあるいはＰレンジにシフトされている状態ではエンジンに負荷がかかっておらず、スロットルバルブ１１ｄ，１１ｅが開となる場合はレーシング、空吹かしなどの状態であり、スロットル開度変化に応じるエンジン回転数ＮE の変化が走行レンジのときよりも大きい。
【０１７０】
したがって、Ｎ，Ｐレンジ用加減速補正テーブルＴＤＡＳＨＮの各領域に格納されているスロットル開度ＴＨＶに対応する加減速補正ＤＳＨＰＴは、走行レンジ時に採用する走行レンジ用加減速補正テーブルＴＤＡＳＨＤに格納されている加減速補正ＤＳＨＰＴに比し大きな値に設定されており、これにより、エンジン負荷に応じた制御性を得ることができる。
【０１７１】
そして、S1004 あるいはS1005 からS1006 へ進むと上記加減速補正ＤＳＨＰＴでＲＡＭ５０の所定アドレスに格納されている今回の加減速補正（ＤＳＨＰＴ）NEW を設定する（（ＤＳＨＰＴ）NEW ←ＤＳＨＰＴ）。
【０１７２】
その後、S1007 へ進むと、上記今回の加減速補正（ＤＳＨＰＴ）NEWと、前回のルーチンで設定した加減速補正（ＤＳＨＰＴ）OLD とを比較し、（ＤＳＨＰＴ）NEW ＜（ＤＳＨＰＴ）OLD （スロットル開度減少）の場合S1008 へ進み、（ＤＳＨＰＴ）NEW ≧（ＤＳＨＰＴ）OLD （スロットル開度増加あるいは変化なし）の場合S1030 へジャンプする。
【０１７３】
S1008 へ進むと走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝０（Ｎ，Ｐレンジ）の場合S1009 へ進み、ＦＬＡＧAT＝１（走行レンジ）の場合S1010 へ進む。
【０１７４】
S1009 へ進むと設定値ＤＤＡＳＨＮで減量値ＤＤＡＳＨ［％］を設定して（ＤＤＡＳＨ←ＤＤＡＳＨＮ）、S1011 へ進む。また、S1010 へ進むと設定値ＤＤＡＳＨＤ（但し、ＤＤＡＳＨＮ＞ＤＤＡＳＨＤ）で減量値ＤＤＡＳＨ［％］を設定して（ＤＤＡＳＨ←ＤＤＡＳＨＤ）、S1011 へ進む。
【０１７５】
なお、スロットル開度減少時のエンジン回転数落ちは走行レンジの際よりも無負荷状態であるＮ，Ｐレンジの方が敏速であるため、（ＤＳＨＰＴ）NEW＜（ＤＳＨＰＴ）OLD のときの加減速補正値ＤＳＨＰＴの減量値ＤＤＡＳＨをＮ，Ｐレンジのときには走行レンジに比し大きく設定している。
【０１７６】
そして、S1011 へ進むと前回の加減速補正（ＤＳＨＰＴ）OLD から上記減量値ＤＤＡＳＨを減算した値で加減速補正値ＤＳＨＰＴを設定する（ＤＳＨＰＴ←（ＤＳＨＰＴ）OLD −ＤＤＡＳＨ）。
【０１７７】
一方、上記S1001 でアイドルスイッチ１２ｂがＯＮのスロットル全閉状態と判断されてS1003 へ進むと、走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝０（Ｎ，Ｐレンジ）の場合S1012 へ進み、ＦＬＡＧAT＝１（走行レンジ）の場合S1013 へ進む。
【０１７８】
S1012 へ進むと設定値ＮＤＡＳＨＮ［％］でオフセット値ＮＤＡＳＨを設定し（ＮＤＡＳＨ←ＮＤＡＳＨＮ）、また、S1013 へ進むと設定値ＮＤＡＳＨＤ（但し、ＮＤＡＳＨＮ＞ＮＤＡＳＨＤ）［％］でオフセット値ＮＤＡＳＨを設定し（ＮＤＡＳＨ←ＮＤＡＳＨＤ）、その後、それぞれS1014 へ進む。
【０１７９】
そして、S1014 へ進むとエンジン回転数ＮE とアイドル目標回転数ＮSET に上記オフセット値ＮＤＡＳＨを加算した値とを比較し、ＮE ≧ＮSET ＋ＮＤＡＳＨの場合S1015 へ進み、ＮE ＜ＮSET ＋ＮＤＡＳＨの場合S1016 へ進む。
【０１８０】
S1015 へ進むと走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝０（Ｎ，Ｐレンジ）の場合S1017 へ進みダッシュポット保持値ＲＤＡＳＨを予め設定した設定値ＲＤＡＳＨＮ［％］で設定し（ＲＤＡＳＨ←ＲＤＡＳＨＮ）、また、ＦＬＡＧAT＝１（走行レンジ）の場合S1018 へ進みダッシュポット保持値ＲＤＡＳＨを予め設定した設定値ＲＤＡＳＨＤ［％］で設定し（ＲＤＡＳＨ←ＲＤＡＳＨＤ）、その後、S1019 へそれぞれ進む。
【０１８１】
そして、S1019 へ進むとＲＡＭ５０の所定アドレスに格納されている現時点の加減速補正ＤＳＨＰＴを読出し、この加減速補正ＤＳＨＰＴと上記ダッシュポット保持値ＲＤＡＳＨとを比較し、ＤＳＨＰＴ≦ＲＤＡＳＨの場合S1020 へ進み、上記ダッシュポット保持値ＲＤＡＳＨにて加減速補正ＤＳＨＰＴを設定し（ＤＳＨＰＴ←ＲＤＡＳＨ）、S1030 へ進む。
【０１８２】
また、S1019 でＤＳＨＰＴ＞ＲＤＡＳＨと判断されてS1021 へ進むと走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝０（Ｎ，Ｐレンジ）の場合S1022 へ進み、ＦＬＡＧAT＝１（走行レンジ）の場合S1023 へ進む。
【０１８３】
S1022 へ進むと設定値ＤＤＳＨ１Ｎ［％］で第１の減量値ＤＤＳＨ１を設定し（ＤＤＳＨ１←ＤＤＳＨ１Ｎ）、また、S1023 へ進むと設定値ＤＤＳＨ１Ｄ（但し、ＤＤＳＨ１Ｄ＜ＤＤＳＨ１Ｎ）［％］で第１の減量値ＤＤＳＨ１を設定し（ＤＤＳＨ１←ＤＤＳＨ１Ｄ）、その後、S1024 へそれぞれ進む。
【０１８４】
そして、S1024 へ進むと加減速補正ＤＳＨＰＴから上記第１の減量値ＤＤＳＨ１を減算した値で上記加減速補正ＤＳＨＰＴを更新し（ＤＳＨＰＴ←ＤＳＨＰＴ−ＤＤＳＨ１）、S1030 へ進む。
【０１８５】
一方、S1014 でＮE ＜ＮSET ＋ＮＤＡＳＨと判断されてS1016 へ進むと、加減速補正ＤＳＨＰＴが０以下かを判断し、ＤＳＨＰＴ≦０の場合S1025 へ進み、加減速補正ＤＳＨＰＴを０に固定（ＤＳＨＰＴ←０）した後、S1030 へ進む。また、ＤＳＨＰＴ＞０の場合S1026 へ進む。
【０１８６】
S1026 へ進むと、走行レンジ判別フラグＦＬＡＧATの値を参照し、ＦＬＡＧAT＝０（Ｎ，Ｐレンジ）の場合S1027 へ進み、ＦＬＡＧAT＝１（走行レンジ）の場合1028へ進む。
【０１８７】
S1027 へ進むと設定値ＤＤＳＨ２Ｎ（但し、ＤＤＳＨ１Ｎ＞ＤＤＳＨ２Ｎ）［％］で第２の減量値ＤＤＳＨ２を設定し（ＤＤＳＨ２←ＤＤＳＨ２Ｎ）、また、S1028 へ進むと設定値ＤＤＳＨ２Ｄ（但し、ＤＤＳＨ１Ｄ＞ＤＤＳＨ２Ｄ）［％］で第２の減量値ＤＤＳＨ２を設定し（ＤＤＳＨ２←ＤＤＳＨ２Ｄ）、それぞれS1029 へ進む。
【０１８８】
S1029 では加減速補正ＤＳＨＰＴから上記第２の減量値ＤＤＳＨ２を減算した値で上記加減速補正ＤＳＨＰＴを更新した後（ＤＳＨＰＴ←ＤＳＨＰＴ−ＤＤＳＨ２）、S1030 へ進む。
【０１８９】
上記第１，第２の減量値ＤＤＳＨ１，ＤＤＳＨ２を設定する各設定値ＤＤＳＨ１Ｎ，ＤＤＳＨ２Ｎ，ＤＤＳＨ１Ｄ，ＤＤＳＨ２ＤをＤＤＳＨ１Ｎ＞ＤＤＳＨ２Ｎ，ＤＤＳＨ１Ｄ＞ＤＤＳＨ２Ｄに設定したことで、スロットル全閉時エンジン回転数ＮE がアイドル目標回転数ＮSET に低下する際に、エンジン回転数ＮEがアイドル目標回転数ＮSET に近付いたら加減速補正ＤＳＨＰＴに対する減量値を小さな値とすることにより、エンジン回転数ＮE のアイドル目標回転数ＮSET への収束性がよくなり、制御ハンチングを防止することができる。
【０１９０】
そして、S1007,S1011,S1020,S1024,S1025 あるいは、S1029 からS1030へ進むと、S1004,S1005,S1011,S1020,S1024,S1025,あるいは、S1029 で設定した加減速補正ＤＳＨＰＴでＲＡＭ５０の所定アドレスに格納されている前回の加減速補正（ＤＳＨＰＴ）OLD を更新し（（ＤＳＨＰＴ）OLD ←ＤＳＨＰＴ）、ルーチンを抜ける。
【０１９１】
上記加減速補正設定の代表例を図３１のタイムチャートに従って説明する。
【０１９２】
アイドルスイッチ１２ｂがＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）からＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）になり（経過時間ｔ1）、スロットル開度ＴＨＶが次第に大きくなる加速運転では、エンジン回転数ＮEがスロットル開度ＴＨＶに応じて上昇する。このとき、スロットル開度ＴＨＶに基づいて設定する加減速補正ＤＳＨＰＴが演算周期ごとに上昇し、この加減速補正ＤＳＨＰＴ（ＩＳＣTR）を取入れて設定するＩＳＣバルブ１３のデューティ比ＩＳＣONが大きくなり、ＩＳＣバルブ１３の開度が増大される（経過時間ｔ1 〜ｔ2およびｔ3 〜ｔ4）。
【０１９３】
また、スロットル開度ＴＨＶがほぼ一定の定常運転では上記加減速補正ＤＳＨＰＴが一定になる（経過時間ｔ2 〜ｔ3 、およびｔ4 〜ｔ5）。
【０１９４】
スロットルバルブ１１ｄ，１１ｅが急閉すると吸気管圧力が急速に低下し、吸気ポート４、および、インテークマニホルド５の内壁面等に付着していた付着燃料が燃焼室に一気に吸込まれると共に、スロットルバルブ１１ｄ，１１ｅの急閉に伴う吸入空気量の減少により空燃比のオーバーリッチが生起されるが、スロットルバルブ１１ｄ，１１ｅの閉弁移行時（経過時間ｔ5）において、スロットル開度ＴＨＶに応じて加減速補正ＤＳＨＰＴが設定されており、この加減速補正ＤＳＨＰＴ分、デューティ比ＩＳＣONが大きく設定されることにより、スロットル開度ＴＨＶに比例してＩＳＣバルブ１３の開度が確保され、スロットルバルブ１１ｄ，１１ｅの閉弁移行後、アイドルスイッチ１２ｂがＯＮ（スロットル全閉）するまでの間（経過時間ｔ5 〜ｔ6）、加減速補正ＤＳＨＰＴはスロットルバルブ１１ｄ，１１ｅの閉弁速度に拘らず、演算周期（51.2msec) 毎に設定値ＤＤＡＳＨずつ減少されるため、この間、ＩＳＣバルブ１３によって空気量が確保されると共に、吸気管圧力の低下が補償され、空燃比のオーバーリッチが防止される。これによって、スロットルバルブ急閉直後の空燃比オーバーリッチに起因する失火、異常燃焼が防止されて、排気エミッションが改善される。
【０１９５】
なお、スロットル開弁状態からスロットル全閉状態に移行する際の加減速補正ＤＳＨＰＴは、スロットル開度ＴＨＶに応じた値に設定されているので、スロットル全閉移行後のダッシュポット期間が常に適正に得られる。
【０１９６】
そして、アイドルスイッチ１２ｂがＯＮするとダッシュポット保持値ＲＤＡＳＨまで上記加減速補正ＤＳＨＰＴを演算周期ごとに第１の設定値ＤＤＳＨ１（但し、ＤＤＡＳＨ＞ＤＤＳＨ１＞ＤＤＳＨ２）ずつ減少させる（経過時間ｔ6〜ｔ7）。これにより、スロットル全閉移行時には加減速補正ＤＳＨＰＴの減少率が比較的大きくなり、目標回転数への復帰時間が短縮される。
【０１９７】
その後、加減速補正ＤＳＨＰＴが上記ダッシュポット保持値ＲＤＡＳＨに達したら、この値を、上記エンジン回転数ＮE がアイドル目標回転数ＮSET にオフセット値ＮＤＡＳＨを加算した値に低下するまで維持し（経過時間ｔ7 〜ｔ8）、エンジン回転数ＮE がアイドル目標回転数ＮSET にオフセット値ＮＤＡＳＨを加算した値により低下したら、上記エンジン回転数ＮE がアイドル目標回転数ＮSETに達するまで、上記第１の減量値ＤＤＳＨ１より小さい値の第２の減量値ＤＤＳＨ２で上記加減速補正ＤＳＨＰＴを演算周期ごとに減算する（経過時間ｔ8 以後）。
【０１９８】
その結果、アイドルスイッチ１２ｂのＯＮ後、エンジン回転数ＮE がアイドル目標回転数ＮSET に達するまでの間、上記加減速補正ＤＳＨＰＴを用いて設定されるデューティ比ＩＳＣONの減少率が順次小さくなり、ＩＳＣバルブ１３の開度減少率も順次小さくなる。これにより、アイドル目標回転数ＮSET に近付く際のエンジン回転数ＮE の低下速度を減少させ、エンストを防止すると共に、エンジン回転数ＮE のアイドル目標回転数ＮSET への収束性を向上する。
【０１９９】
（ダッシュポット補正値設定割込みルーチン）
図１５は設定時間毎、例えば100msec 毎に割込み実行するダッシュポット補正値設定ルーチンである。
【０２００】
まず、S1101 でアイドルスイッチ１２ｂがＯＮかを判断し、ＯＮ（スロットルバルブ１１ｄ，１１ｅが全閉）の場合S1102 へ進み、ＯＦＦ（スロットルバルブ１１ｄ，１１ｅが開）の場合S1104 へ進む。
【０２０１】
S1102 ではエンジン回転数ＮE と予め設定したダッシュポット判別回転数ＤＨＥＫＮとを比較し、ＮE ＜ＤＨＥＫＮの場合S1103 へ進み、ＮE ≧ＤＨＥＫＮの場合S1104 へ進む。このダッシュポット判別回転数ＤＨＥＫＮはエアコン補正などのアイドルアップを加味したアイドル回転数近傍の値（例えば1900rpm）である。
【０２０２】
S1101 あるいはS1102 からS1104 へ進むとダッシュポット補正値ＤＨＥＮＢをクリアした後（ＤＨＥＮＢ←０）、S1113 へ進む。
【０２０３】
また、S1102 からS1103 へ進むと前回のルーチン実行時（100msec前）に設定しＲＡＭ５０の所定アドレスに格納したエンジン回転数（ＮE）OLD を読出し、S1105 で、前回のエンジン回転数（ＮE）OLD と現在のエンジン回転数ＮEとの差から設定時間（100msec）におけるエンジン回転数低下量ＮDOWNを算出する（ＮDOWN←（ＮE）OLD −ＮE）。
【０２０４】
そして、S1106 で上記エンジン回転数低下量ＮDOWNと設定値ＤＮＥＳ１とを比較し、ＮDOWN＜ＤＮＥＳ１の場合S1107 へ進み、エンジン回転数低下量が少ない状態（緩減速）であることを示すエンジン回転数低下量判別フラグＦＬＡＧDHをセット（ＦＬＡＧDH←１）し、S1114 へ進む。
【０２０５】
また、S1106 でＮDOWN≧ＤＮＥＳ１と判断されてS1108 へ進むと、上記エンジン回転数低下量ＮDOWNと設定値ＤＮＥＳ２（但し、ＤＮＥＳ１＜ＤＮＥＳ２）とを比較し、ＮDOWN＜ＤＮＥＳ２の場合S1109 へ進みダッシュポット補正値ＤＨＥＮＢを設定値ＤＨＮＥＢ１［％］で設定し（ＤＨＥＮＢ←ＤＨＮＥＢ１）、S1113 へ進む。また、ＮDOWN≧ＤＮＥＳ２の場合S1110 へ進む。
【０２０６】
S1110 では、上記エンジン回転数低下量ＮDOWNと設定値ＤＮＥＳ３（但し、ＤＮＥＳ２＜ＤＮＥＳ３）とを比較し、ＮDOWN＜ＤＮＥＳ３の場合S111へ進みダッシュポット補正値ＤＨＥＮＢを設定値ＤＨＮＥＢ２（但し、ＤＨＮＥＢ１＜ＤＨＮＥＢ２）［％］で設定し（ＤＨＥＮＢ←ＤＨＮＥＢ２）、S1113 へ進む。また、ＮDOWN≧ＤＮＥＳ３の場合S1112 へ進みダッシュポット補正値ＤＨＥＮＢを設定値ＤＨＮＥＢ３（但し、ＤＨＮＥＢ２＜ＤＨＮＥＢ３）［％］で設定し（ＤＨＥＮＢ←ＤＨＮＥＢ３）、S1113 へ進む。
【０２０７】
上記S1104,S1109,S1111,S1112 からS1113 へ進むとエンジン回転数低下量判別フラグＦＬＡＧDHをクリア（ＦＬＡＧDH←０、低下量大）し、S1114 へ進む。
【０２０８】
そして、S1107 あるいはS1113 からS1114 へ進むと、現在のエンジン回転数ＮE でＲＡＭ５０の所定アドレスに格納されている前回のエンジン回転数（ＮE）OLD を更新（（ＮE）OLD ←ＮE）し、ルーチンを抜ける。
【０２０９】
また、図１６は51.2msec毎に割込み実行される補正値設定ルーチンにおいて実行（S204参照）されるダッシュポット補正値更新サブルーチンである。
【０２１０】
まず、S1201 でエンジン回転数低下量判別フラグＦＬＡＧDHの値を参照し、ＦＬＡＧDH＝１（低下量小）の場合S1202 へ進み、ＦＬＡＧDH＝０（低下量大）の場合ルーチンを抜ける。
【０２１１】
S1202 へ進むとダッシュポット補正値ＤＨＥＮＢ［％］が０以下かを判別し、ＤＨＥＮＢ≦０の場合S1203 へ進みダッシュポット補正値ＤＨＥＮＢを０［％］に設定（ＤＨＥＮＢ←０）した後、ルーチンを抜ける。
【０２１２】
また、S1202 でＤＨＥＮＢ＞０と判断されてS1204 へ進むと、上記ダッシュポット補正値ＤＨＥＮＢから設定値ＤＤＦＥＢ（微小値）で減算した値で、このダッシュポット補正値ＤＨＥＮＢを更新（ＤＨＥＮＢ←ＤＨＥＮＢ−ＤＤＦＥＢ）し、ルーチンを抜ける。
【０２１３】
図３２にダッシュポット補正値設定の代表例のタイムチャートを示す。
【０２１４】
スロットルバルブ１１ｄ，１１ｅの急閉による急減速時等、アイドルスイッチ１２ｂがＯＦＦ状態からＯＮ状態（スロットルバルブ１１ｄ，１１ｅが全閉状態）へ移行してエンジン回転数ＮE が急激に低下し、ダッシュポット判別回転数ＤＨＥＫＮ（例えば、1900rpm）以下になり、エンジン回転数低下量ＮDOWNの比較的大きい（ＤＮＥＳ３≦ＮDOWN）区間（経過時間ｔ1 〜ｔ2）では大きな値の設定値ＤＨＮＥＢ３［％］でダッシュポット補正値ＤＨＥＮＢを設定する。
【０２１５】
エンジン回転数ＮE が急激に落ち込んだときにダッシュポット補正を行わないと、図の破線で示すように、エンジン回転数がそのまま落込みエンストしてしまう。そのため、スロットルバルブ１１ｄ，１１ｅが開の状態から全閉状態へ移行したときに、エンジン回転数ＮE がアイドル回転数近傍の設定値ＤＨＥＫＮ（例えば、1900rpm）以下に急激に低下した際、エンジン回転数の低下量ＮDOWN（＝（ＮE）OLD −ＮE）が大きいほどダッシュポット補正値ＤＨＥＮＢを大きくすることで、ＩＳＣバルブ１３に対するデューティ比ＩＳＣONを大きくし、このＩＳＣバルブ１３の開度を大きくして空気量を増加させてエンジン回転数ＮE の落込みを防ぐ。
【０２１６】
その後、エンジン回転数低下量ＮDOWNが、ＤＮＥＳ２≦ＮDOWN＜ＤＮＥＳ３の区間（経過時間ｔ2 〜ｔ3）では中間の値の設定値ＤＨＮＥＢ２［％］でダッシュポット補正値ＤＨＥＮＢを設定する。
【０２１７】
次いで、エンジン回転数低下量ＮDOWNが、ＤＮＥＳ１≦ＮDOWN＜ＤＮＥＳ２の区間（経過時間ｔ3 〜ｔ4）では比較的小さな値の設定値ＤＨＮＥＢ１［％］でダッシュポット補正値ＤＨＥＮＢを設定する。
【０２１８】
エンジン回転数低下量ＮDOWNが比較的小さくなった状態でもダッシュポット補正値ＤＨＥＮＢを設定値ＤＨＮＥＢ３のままにしておくと、図の一点鎖線で示すように回転変動を生じアイドル回転数への収束性が悪くなる。
【０２１９】
そして、上記エンジン回転数低下量ＮDOWNが、ＮDOWN＜ＤＮＥＳ１の区間（経過時間ｔ4 以後）では上記ダッシュポット補正値ＤＨＥＮＢを０になるまで演算周期（51.2msec）毎に微小な設定値ＤＤＦＥＢずつ減算する。
【０２２０】
すなわち、経過時間ｔ4 のときにダッシュポット補正値ＤＨＥＮＢを０にするとＩＳＣバルブ１３に対するデューティ比ＩＳＣONが急減するためにエンジン回転数ＮE が、図の破線で示すように落込んでしまいアイドル回転数への収束性が悪くなってしまう。したがって、エンジン回転数ＮE の低下量ＮDOWNの減少に伴い、ダッシュポット補正値ＤＨＥＮＢを減少させることでアイドル回転数への収束性を良くする。
【０２２１】
（ラジファン補正設定サブルーチン）
図１７は51.2msec毎に割込み実行される補正値設定ルーチンにおいて実行（S205参照）されるラジファン補正ＩＳＣRAS 設定のサブルーチンである。
【０２２２】
まず、S1301 で、メインコンピュータ４１内のデータに基づいてラジエータファン６２の動作を制御するラジエータファンリレー６３がＯＮかを判別し、ＯＮの場合S1302 へ進み、ＯＦＦの場合S1303 へ進む。
【０２２３】
S1302 へ進むとＲＡＭ５０の所定アドレスに格納されているラジファン補正ＩＳＣRAS を設定値ＲＡＳ［％］で設定し（ＩＳＣRAS ←ＲＡＳ）、ルーチンを抜ける。また、S1303 へ進むと上記ラジファン補正ＩＳＣRAS を０［％］に設定し（ＩＳＣRAS ←０）、ルーチンを抜ける。
【０２２４】
なお、上記ラジファン補正ＩＳＣRAS の設定をタイムチャートによって示せば図３３の通りである。
【０２２５】
ラジエータファン６２が作動しているときは、ラジエータファンモータにより消費電流が大きく、オルタネータ（発電機）の発電量も大きくなるため、エンジン１にかかる負荷もこれに相応する分大きくなりエンジン回転数ＮE が低下しようとするが、ラジエータファン６２がＯＮのとき、ＩＳＣバルブ１３に対するデューティ比ＩＳＣONをラジファン補正ＩＳＣRAS によって大きくして、ＩＳＣバルブ１３の開度を増大させることによりエンジン回転数ＮE の低下を防止する。（パワステ補正値設定サブルーチン）図１８，図１９は51.2msec毎に割込み実行される補正値設定ルーチンにおいて実行（S206参照）されるパワステ補正値ＩＳＣPS設定のサブルーチンである。このサブルーチンで設定されるパワステ補正値ＩＳＣPSは、転舵角が大きくパワーステアリングオイルポンプを駆動するエンジン１の負荷が大きくなり、エンジン回転数ＮE が低下するのを補償するものである。
【０２２６】
まず、S1401 でパワーステアリング転舵スイッチ（以下「パワステ転舵スイッチ」と略称する）５８がＯＮかを判断し、ＯＮ（転舵角大）の場合S1402へ進み、ＯＦＦ（転舵角小）の場合S1409 へ進む。
【０２２７】
S1402 へ進むと車速センサ５６で検出した車速ＶＳＰと設定値ＶＳＰPS［Km/h］とを比較し、ＶＳＰ≦ＶＳＰPSの場合S1403 へ進み、ＶＳＰ＞ＶＳＰPSの場合S1409 へ進む。
【０２２８】
S1403 へ進むと、冷却水温センサ２１で検出した冷却水温ＴW と設定値ＴWPS［℃］とを比較し、ＴW ≧ＴWPS の場合S1404 へ進み、ＴW ＜ＴWPS の場合S1409 へ進む。
【０２２９】
上記S1402 において、車速ＶＳＰが設定値ＶＳＰPS以上のときには走行によるエンジン負荷が大きいためパワステオイルポンプを駆動するエンジン負荷が相対的に小さくなる。したがって、パワステ補正値ＩＳＣPSによる補償が不要になる。また、S1403 において、暖機未完（ＴW ＜ＴWPS）のときには基本特性値ＩＳＣTWが大きく設定されるので相対的にパワステオイルポンプを駆動するためのエンジン負荷が小さくなり、パワステ補正値ＩＳＣPSによる補償が不要になる。
【０２３０】
S1404 へ進むと、前回ルーチン実行時にアイドル状態の場合に１にセットされているアイドル回転数判別フラグＦＬＡＧPSの値を参照し、ＦＬＡＧPS＝１（前回アイドル状態）の場合S1405 へ進み、ＦＬＡＧPS＝０（前回アイドル解除状態）の場合S1406 へ進む。
【０２３１】
S1405 へ進むと設定値ＩＳＰＳＮＨ［rpm］でアイドル判別回転数ＩＳＰＳＮを設定し（ＩＳＰＳＮ←ＩＳＰＳＮＨ）、S1407 へ進む。また、S1406 へ進むと設定値ＩＳＰＳＮＬ（但し、ＩＳＰＳＮＬ＜ＩＳＰＳＮＨ）［rpm］でアイドル判別回転数ＩＳＰＳＮを設定し（ＩＳＰＳＮ←ＩＳＰＳＮＬ）、S1407 へ進む。図３４に示すように、アイドル判別回転数ＩＳＰＳＮを設定する際にアイドル状態（ＦＬＡＧPS＝１）とアイドル解除状態（ＦＬＡＧPS＝０）とでヒステリシスを設けることにより、S1407 におけるアイドル状態判別の制御ハンチングを防止するようにしている。
【０２３２】
S1407 へ進むとエンジン回転数ＮE とアイドル判別回転数ＩＳＰＳＮとを比較し、ＮE ＞ＩＳＰＳＮの場合、アイドル解除状態と判断しS1408 へ進みアイドル回転数判別フラグＦＬＡＧPSをクリア（ＦＬＡＧPS←０）した後S1409 へ進む。また、ＮE ≦ＩＳＰＳＮの場合アイドル状態と判断し、S1410 へ進む。
【０２３３】
S1410 ではエアコンスイッチ８９がＯＦＦかを判断し、ＯＦＦの場合S1411 へ進み、ＯＮの場合S1412 へ進む。
【０２３４】
S1411 へ進むと、メインコンピュータ４１で演算したＩＳＣバルブ１３に対するデューティ比ＩＳＣONに基づき、エアコンＯＦＦ時のパワステ補正値ＩＳＣPSをテーブル参照あるいは演算により設定し、S1413 へ進む。また、S1412 へ進むとメインコンピュータ４１で演算したＩＳＣバルブ１３に対するデューティ比ＩＳＣONに基づきエアコンＯＮ時のパワステ補正値ＩＳＣPSをテーブル参照あるいは演算により設定しS1413 へ進む。
【０２３５】
図３５（ｂ）に示すように、実線で示すエアコンＯＦＦ時のパワステ補正値ＩＳＣPSは、一点鎖線で示すエアコンＯＮ時のパワステ補正値ＩＳＣPSよりも大きく設定する。すなわち、エアコンＯＮ時には、エアコン補正値ＩＳＣACによりデューティ比ＩＳＣONが大きく設定される。換言すれば、エアコンＯＮ時は、相対的にパワステによるエンジン負荷が少なくなり、よって、エアコンＯＦＦ時よりもパワステ補正値ＩＳＣPSを小さく設定している。
【０２３６】
また、S1411 あるいはS1412 で設定するパワステ補正値ＩＳＣPSは、デューティ比ＩＳＣONが大きい（小さい）ときにはエンジン１への負荷が大きく（小さく）、ＩＳＣバルブ１３の開度を大きく（小さく）して空気量を増加（減少）させ、エンジン回転数ＮE の低下（上昇）を防止しているが、このときのエンジンにかかっている全負荷に対してパワステポンプによる負荷は相対的に小さい（大きい）ため小さく（大きく）設定している。
【０２３７】
そして、上記S1411 あるいはS1412 からS1413 へ進むと、アイドル回転数判別フラグＦＬＡＧPSをセット（ＦＬＡＧPS←１）した後、ルーチンを抜ける。
【０２３８】
また、S1401,S1402,S1403,あるいは、S1408 からS1409 へ進むと、パワステ補正値ＩＳＣPSが０以下かを判別し、ＩＳＣPS≦０の場合S1414 へ進みパワステ補正値ＩＳＣPSを０［％］に設定した後（ＩＳＣPS←０）、ルーチンを抜ける。ＩＳＣPS＞０の場合にはS1415 へ進み、パワステ補正値ＩＳＣPSから設定値ＤＩＳＣＰＳを減算してパワステ補正値ＩＳＣPSを更新した後（ＩＳＣPS←ＩＳＣPS−ＤＩＳＣＰＳ）、ルーチンを抜ける。
【０２３９】
図３５にパワステ補正値設定の代表的なタイムチャートを示す。
【０２４０】
暖機完了後のアイドル時、転舵角が大となりパワステ転舵スイッチ５８がＯＮすると、デューティ比ＩＳＣONに応じたパワステ補正値ＩＳＣPS（エアコンスイッチ８９がＯＦＦのときとＯＮのときによって相違する）が設定される（経過時間ｔ1）。
【０２４１】
これにより、転舵角大に伴うパワステオイルポンプ駆動負荷が増大した際に、パワステ補正値ＩＳＣPSによりＩＳＣバルブ１３に対するデューティ比ＩＳＣONを大きくし、ＩＳＣバルブ１３の開度を大きくして空気量を増加させることでエンジン回転数の落込みが防止される。
【０２４２】
また、転舵角が小さくなり、パワステ転舵スイッチ５８がＯＮからＯＦＦに切換った直後（経過時間ｔ2）、直ちにパワステ補正値ＩＳＣPSを０［％］にすると、ＩＳＣバルブ１３に対するデューティ比ＩＳＣONがパワステ補正値ＩＳＣPS分、急減し、かつ、低下してはいるがパワステオイルポンプ駆動負荷が存在するため、図（ｃ）の二点鎖線で示すようにエンジン回転数ＮE が大きく変動してしまうが、上記パワステ補正値ＩＳＣPSが０になるまで、演算周期（51.2msec）毎に上記パワステ補正値ＩＳＣPSを設定値ＤＩＳＣＰＳずつ減算することで、ＩＳＣバルブ１３の開度を徐々に減少させて空気量を補償し、これによって、図（ｃ）の実線で示すようにエンジン回転数ＮE の変動が防止される。
【０２４３】
（エアコンクラッチ補正値設定サブルーチン）
図２０は51.2msec毎に割込み実行される補正値設定ルーチンにおいて実行（S207参照）されるエアコンクラッチ補正値ＩＳＣCLH 設定のサブルーチンである。まず、S1501 でエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合S1502 へ進み、ＯＦＦの場合S1503 へ進む。
【０２４４】
S1502 へ進むとエアコンスイッチ８９がＯＮ→ＯＦＦ後設定時間ＴＣＬＨ［sec］経過したかを判別するためのエアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴCLH （ダウンカウンタ）を、上記設定時間ＴＣＬＨに相当する設定値ＴＡＣＣＬＨで設定し（ＣＯＵＮＴCLH ←ＴＡＣＣＬＨ）、S1505 へ進む。
【０２４５】
また、S1503 へ進むとエアコンＯＮ→ＯＦＦ後経過時間判別カウント値ＣＯＵＮＴCLH の値を参照し、ＣＯＵＮＴCLH ≠０の場合S1504 へ進み、カウントダウン（ＣＯＵＮＴCLH ←ＣＯＵＮＴCLH −１）した後、S1505 へ進む。
【０２４６】
S1502 あるいはS1504 からS1505 へ進むとエアコンクラッチ補正値ＩＳＣCLHを設定値ＤＩＳＣＬＨ［％］で設定した後（ＩＳＣCLH ←ＤＩＳＣＬＨ）、ルーチンを抜ける。
【０２４７】
一方、S1503 でＣＯＵＮＴCLH ＝０であり、エアコンスイッチ８９をＯＮ→ＯＦＦ後、設定時間ＴＣＬＨ［sec］経過したと判断してS1506 へ進むと上記エアコンクラッチ補正値ＩＳＣCLH を０［％］に設定した後（ＩＳＣCLH ←０）、ルーチンを抜ける。
【０２４８】
図３６に上記エアコンクラッチ補正値ＩＳＣCLH の設定と、エアコンスイッチ８９のＯＮ／ＯＦＦ、エアコンクラッチリレー６５のＯＮ／ＯＦＦ、可変容量エアコンコンプレッサ６４の容量制御、および、エンジン回転数ＮE との関係を示す。
【０２４９】
まず、可変容量エアコンコンプレッサ６４に対する容量制御について述べる。エアコンスイッチ８９をＯＮするとメインコンピュータ４１により、設定遅れ時間ＡＣＥＮＴ（例えば、0.3sec）経過後、エアコンクラッチリレー６５がＯＮされて可変容量エアコンコンプレッサ６４のエアコンクラッチ６４ａが接続し、コンプレッサ６４が駆動され、メインコンピュータ４１からの要求容量信号に従いエアコン制御ユニット８１からコンプレッサ６４へコンプレッサ容量（ＤＵＴＹ）信号が出力され、コンプレッサ６４の容量が最小容量（ＭＩＮ）から設定容量に次第に増加される。そして、エアコンスイッチ８９をＯＦＦすると、上記可変容量エアコンコンプレッサ６４に対するコンプレッサ容量（ＤＵＴＹ）信号により、コンプレッサ６４の容量が最小容量（ＭＩＮ）に次第に減少され、エアコンスイッチ８９のＯＦＦ後、エアコンコンプレッサ６４の容量が最小容量（ＭＩＮ）に到達したと看做し得る十分な時間ＡＣＣＬＴＭ（例えば、8sec）経過後エアコンクラッチリレー６５がＯＦＦされる。
【０２５０】
このため、エアコンスイッチ８９のＯＮと同時に（経過時間ｔ1）、エアコンクラッチ補正値ＩＳＣCLH を設定値ＤＩＳＣＬＨに設定し、ＩＳＣバルブ１３に対するデューティ比ＩＳＣONを上記エアコンクラッチ補正分ＩＳＣCLH 分増大させてＩＳＣバルブ１３の開度を増大させ、空気量を増加させることでエンジン回転数ＮE を上昇させてエアコンクラッチリレー６５のＯＮによるコンプレッサ６４駆動のエンジン負荷増大に伴うエンジン回転数低下を防止する。
【０２５１】
その後、エアコンスイッチ８９をＯＦＦすると（経過時間ｔ2）、上記可変容量エアコンコンプレッサ６４の容量が次第に低下されると共に、前述のエアコン補正値ＩＳＣACが次第に減少され（図７，８、および図２９参照）、これに伴いＩＳＣバルブ１３に対するデューティ比ＩＳＣONが減少することでＩＳＣバルブ１３の開度が減少して空気量が減少し、エンジン回転数ＮE がエアコンＯＦＦ時の目標回転数に復帰される。
【０２５２】
可変容量エアコンコンプレッサ６４の容量が下がりきったとき（経過時間ｔ3）からエアコンクラッチ６４ａが切れるまで（エアコンクラッチリレー６５がＯＦＦするまで）の間Ｔ1 は、クラッチのフリクションが残っている。このため、可変容量エアコンコンプレッサ６４のエアコンクラッチ６４ａが切れた瞬間にクラッチによるフリクションが急になくなるため図（ｅ）に破線で示すように一時的な回転数の吹上がりによる回転変動が生じフィーリングが悪化してしまう。
【０２５３】
エアコンクラッチ補正は、このクラッチのフリクションによるエンジン負荷を補償するためのものであり、エアコンスイッチ８９をＯＮしてから、エアコンスイッチ８９のＯＦＦ後、設定時間ＡＣＣＬＴＭ経過後エアコンクラッチリレー６５がＯＦＦし、可変容量エアコンコンプレッサ６４のエアコンクラッチ６４ａが完全に切れるまで、すなわち、エアコンスイッチ８９のＯＦＦ後、設定時間ＴＣＬＨ（ＴＣＬＨ＞ＡＣＣＬＴＭ）を経過するまでの間、エアコンクラッチ補正値ＩＳＣCLHを設定値ＤＩＳＣＬＨに設定してＩＳＣバルブ１３に対するデューティ比ＩＳＣONをこの間大きくし、エアコンクラッチ６４ａが切れたときエアコンクラッチ補正ＩＳＣCLH を０にすることで、エアコンクラッチ６４ａが切れた瞬間にクラッチによるフリクションがなくなりエンジン負荷が減少した分、ＩＳＣONを減少させてＩＳＣバルブ１３の開度を減少させ空気量を減じ、このときの回転変動を防止する。これにより、図（ｅ）の実線で示すように、エアコンクラッチ６４ａが切れた直後の一時的な回転数の吹上がりによる回転変動が解消し、フィーリングが向上する。
【０２５４】
（始動後補正設定割込みルーチン）
図２１はＩＳＣバルブ制御メインルーチンにおいて設定する始動時／通常時制御判別フラグＦＬＡＧSTが１→０になった時点で割込み実行する始動後補正初期値設定ルーチンである。
【０２５５】
始動時／通常時制御判別フラグＦＬＡＧSTがＦＬＡＧST＝１（始動時制御）からＦＬＡＧST＝０（通常時制御）に移行した直後、すなわち、スタータスイッチ６１がＯＮ→ＯＦＦで、かつ、エンジン回転数ＮE がＮE ≠０のときである始動時制御終了直後に割込みスタートすると、まず、S1601 で冷却水温ＴW に基づき始動後補正初期値テーブルＴＩＳＣSD（冷却水温ＴW が低いほど大きな値が格納されている）を補間計算付で参照して始動後補正ＩＳＣSDの初期値を設定する。次いで、S1602 で冷却水温ＴW に基づき始動後補正更新割込時間テーブルＴＴDISC（冷却水温ＴW が低いほど長い時間の値が格納されている）を補間計算付で参照して始動後補正更新割込時間ＴDISCを設定する。
【０２５６】
そして、S1603 で上記始動後補正更新割込時間ＴDISC毎の割込を許可してルーチンを抜ける。
【０２５７】
図２２は始動後補正更新割込時間毎に割込み実行される始動後補正設定ルーチンで、始動時制御から通常時制御へのデューティ比ＩＳＣONのつながりを良くし、始動性を向上させるものである。
【０２５８】
まず、S1701 でＲＡＭ５０の所定アドレスに格納されている始動後補正ＩＳＣSDが０以下かを判断し、ＩＳＣSD＞０の場合S1702 へ進み上記始動後補正ＩＳＣSDを設定値ＤＩＳＣＳＤで減算した値で更新し（ＩＳＣSD←ＩＳＣSD−ＤＩＳＣＳＤ）、ルーチンを抜ける。
【０２５９】
一方、S1701 でＩＳＣSD≦０と判断されてS1703 へ進むと、ＲＡＭ５０の所定アドレスに格納されている始動後補正ＩＳＣSDを０［％］に固定して（ＩＳＣSD←０）、S1704 へ進み、始動後補正更新割込時間ＴDISCごとの割込みを禁止し、ルーチンを抜ける。
【０２６０】
始動後補正設定の代表例を図３７のタイムチャートに従って説明する。
【０２６１】
スタータスイッチ６１がＯＮ、あるいは、エンジン回転数ＮE が０のとき（始動時／通常時制御判別フラグＦＬＡＧST＝１）始動後補正プログラムは実行されず（経過時間ｔ0 〜ｔ1）、スタータスイッチ６１がＯＮ→ＯＦＦ直後で、エンジン回転数ＮE がＮE ≠０のとき始動後補正ＩＳＣSDの初期値か設定される（経過時間ｔ1）。
【０２６２】
次いで、上記始動後補正ＩＳＣSDを０になるまで始動後補正更新割込時間ＴDISC毎に設定値ＤＩＳＣＳＤずつ減少させる。
【０２６３】
また、図３８にＩＳＣバルブ１３を制御するデューティ比ＩＳＣONの変化と始動後補正ＩＳＣSDとの関係を示す。
【０２６４】
始動時制御（ＦＬＡＧST＝１）時においてはＩＳＣバルブ制御のメインルーチンにおいて設定するデューティ比ＩＳＣONが比較的大きな値に設定されており、通常時制御へ移行すると（経過時間t1）、各種補正項により緻密に制御されるため図の一点鎖線で示すようにデューティ比ＩＳＣONのつながりが悪くなり始動性が低下する。
【０２６５】
始動後補正ＩＳＣSDはこれを補償するためのものであり、始動時制御において設定されるデューティ比ＩＳＣONは、冷却水温ＴW に基づき設定される始動時特性値ＩＳＣSTが大部分を占め、冷却水温ＴW が低いほど始動時特性値ＩＳＣSTが大きく設定されるため（図１参照）、始動時制御から通常時制御に移行する際のＩＳＣバルブ１３に対するデューティ比ＩＳＣONの段差が大きくなる。
【０２６６】
このため、冷却水温ＴW が低いほど、図３７の実線で示すように始動後補正ＩＳＣSDの初期値を大きく設定すると共に、始動後補正割込時間ＴDISCを長く設定して始動後補正ＩＳＣSDが０になるまでの時間を長くし（経過時間ｔ1 〜ｔ3）、一方、冷却水温ＴW が高いほど、図３７の破線で示すように始動後補正ＩＳＣSDの初期値を小さくし、かつ、始動後補正割込時間ＴDISCを短く設定して始動後補正ＩＳＣSDが０になるまでの時間を短くすることで（経過時間ｔ1 〜ｔ2）、如何なる温度条件下においても始動時制御から通常時制御に移行する際のＩＳＣバルブ１３に対するデューティ比ＩＳＣONのつながりを、図３８の実線で示すようにスムーズにし、ＩＳＣバルブ１３の開度変化の段差を解消してＩＳＣバルブ１３による空気流量の急変を防止し、始動性を向上する。
【０２６７】
（クローズドループ補正Ｉ分更新ルーチン）
図２３〜図２５は設定時間毎、例えば10msec毎に割込み実行されるクローズドループ補正Ｉ分更新手順を示すフローチャートである。
【０２６８】
まず、S1801 でＩＳＣバルブ制御メインルーチンにおいて設定する始動時／通常時制御判別フラグＦＬＡＧSTの値を参照し、ＦＬＡＧST＝１（始動時あるいはエンスト中）の場合S1802 へ進み、ＦＬＡＧST＝０（通常時）の場合S1803へ進む。
【０２６９】
S1802 へ進むと始動後通常運転（通常時制御）へ移行してから設定時間ＬＲＮＩＳＳ［sec］経過したかを判断するための通常時制御移行時間判別カウント値ＣＯＵＮＴSTI （ダウンカウンタ）に、上記設定時間ＬＲＮＩＳＳに相当する設定値ＣＯＵＮＴLRNISSをセットし（ＣＯＵＮＴSTI ←ＣＯＵＮＴLRNISS）、S1858 へ進み、クローズドループ補正Ｉ分ＩＳＣI を０［％］に設定してS1859 に進む。
【０２７０】
また、S1803 へ進むと上記通常時制御移行時間判別カウント値ＣＯＵＮＴSTIの値を参照し、ＣＯＵＮＴSTI ≠０の場合、通常時制御へ移行した後、設定時間ＬＲＮＩＳＳ経過していないと判断してS1804 へ進み、カウント値ＣＯＵＮＴSTI をカウントダウンし（ＣＯＵＮＴSTI ←ＣＯＵＮＴSTI −１）、S1805 へ進む。一方、ＣＯＵＮＴSTI ＝０の場合、通常時制御へ移行してから設定時間経過したと判断し、S1805 へ進む。
【０２７１】
S1805 へ進むと冷却水温ＴW と設定温度ＬＲＮＩＴＷ［℃］とを比較し、ＴW≧ＬＲＮＩＴＷの場合S1806 へ進み、ＴW ＜ＬＲＮＩＴＷの場合S1810 へ進む。S1806 へ進むと前回のルーチン実行時に読出した始動時／通常時制御判別フラグ（ＦＬＡＧST）OLD の値を参照し、（ＦＬＡＧST）OLD ＝１（前回ルーチン実行時、始動時制御）の場合、通常時制御移行初回と判断してクローズドループ補正Ｉ分を初期設定すべくS1807 へ進み、（ＦＬＡＧST）OLD ＝０の場合S1810 へ進む。
【０２７２】
S1807 ではエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合S1808へ進み、ＯＦＦの場合S1809 へ進む。
【０２７３】
S1808 へ進むとバックアップＲＡＭ５０ａに格納されているエアコンＯＮ時のＩ分学習値ＡＣＯＮＩを読出してクローズドループ補正Ｉ分ＩＳＣI をエアコンＯＮ時のＩ分学習値ＡＣＯＮＩで初期設定し、また、S1809 へ進むと、クローズドループ補正Ｉ分ＩＳＣI をバックアップＲＡＭ５０ａに格納されているエアコンＯＦＦ時のＩ分学習値ＡＣＯＦＦＩで初期設定し、それぞれS1810 へ進む。
【０２７４】
上記各Ｉ分学習値ＡＣＯＮＩ，ＡＣＯＦＦＩは後述するクローズドループ補正Ｉ分学習値学習サブルーチンで更新され、バックアップＲＡＭ５０ａの所定アドレスに格納されているもので、スタータスイッチ６１がＯＮ→ＯＦＦ（始動時制御から通常時制御）へ移行した直後の１回だけ、前回のエンジン運転時にエアコン作動状態に応じて学習したＩ分学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩによりクローズドループ補正Ｉ分ＩＳＣI を初期設定する。これによりクローズドループ補正Ｉ分ＩＳＣI が直ちに補償され、制御性が向上する。
【０２７５】
また、上記各学習値ＡＣＯＮＩ，ＡＣＯＦＦＩをエアコンの作動状態別に設定しているので、エンジン負荷に応じたクローズドループ補正Ｉ分ＩＳＣIを初期設定することができ、エンジン回転をスムーズに立上げることができる。
【０２７６】
そして、S1810 へ進むと前述のクローズド／オープンループ制御判別サブルーチンで設定したクローズド／オープンループ制御判別フラグＦＬＡＧCLの値を参照し、ＦＬＡＧCL＝１（クローズドループ制御）の場合S1811 へ進み、ＦＬＡＧCL＝０（オープンループ制御）の場合、後述の補正量ΔＩを更新することなくS1812 へ進む。
【０２７７】
S1811 へ進むと、始動後補正ＩＳＣSDの値を参照して始動後補正実行中（ＩＳＣSD≠０）かを判断し、ＩＳＣSD≠０の場合S1813 へ進み、ＩＳＣSD＝０の場合S1817 へ進む。S1813 へ進むと冷却水温ＴW と設定温度ＴＷＡＳ［℃］とを比較し、ＴW ≧ＴＷＡＳ（暖機完了）の場合S1814 へ進み、ＴW ＜ＴＷＡＳ（暖機中）の場合S1817 へ進む。S1814 へ進むと、車速ＶＳＰと設定値ＶＳＡＳ［Km/h］とを比較し、ＶＳＰ＜ＶＳＡＳ（停車）の場合S1815 へ進み、ＶＳＰ≧ＶＳＡＳ（走行）の場合S1817 へ進む。
【０２７８】
その後、S1815 へ進むとクローズドループ補正Ｉ分ＩＳＣI に始動後補正ＩＳＣSDを加算した値で上記クローズドループ補正Ｉ分ＩＳＣI を更新し（ＩＳＣI ←ＩＳＣI ＋ＩＳＣSD）、S1816 へ進み上記始動後補正ＩＳＣSDを上記クローズドループ補正Ｉ分に移行させた分、この始動後補正ＩＳＣSDをクリアし（ＩＳＣSD←０）、S1817 へ進む。
【０２７９】
図３９の（ａ），（ｂ）に示すようにオープンループ制御からクローズドループ制御へ移行した際、始動後補正ＩＳＣSD（ＩＳＣAS）のクローズドループ補正Ｉ分ＩＳＣI への移行を行わないと、このクローズドループ補正Ｉ分ＩＳＣIが収束するまでの間、デューティ比ＩＳＣONに段差が生じエンジン回転数ＮE が変動してしまう。この対策として後述する補正量ΔＩを大きくすることも考えられるが、この補正量ΔＩを極端に大きくすると収束性が悪化しエンジン回転数ＮEにハンチングが生じる。
【０２８０】
これに対し、図３９の（ｃ），（ｄ）に示すように所定条件成立時（ＴW ≧ＴＷＡＳ、且つ、ＶＳＰ＜ＶＳＡＳ）、オープンループ制御からクローズドループ制御に移行した際、始動後補正ＩＳＣSD（ＩＳＣAS）がＩＳＣSD≠０のとき、始動後補正ＩＳＣSD（ＩＳＣAS）をクローズドループ補正Ｉ分ＩＳＣI に移行させているので、増量分をクローズドループ補正Ｉ分ＩＳＣI で補うようにしており、オープンループ制御からクローズドループ制御へのつながりが良くなり、このときのエンジン回転数ＮE の変動が防止される。
【０２８１】
その後、上記S1811,S1813,S1814 あるいは、S1816 からS1817 へ進むとアイドル目標回転数ＮSET とエンジン回転数ＮE との差回転ΔＮを求め（ΔＮ←ＮSET−ＮE）、S1818 へ進みエアコンスイッチ８９がＯＮかを判断し、ＯＮの場合S1819 へ進み、ＯＦＦの場合S1820 へ進む。
【０２８２】
S1819 へ進むと上記差回転ΔＮと設定値ＮＩＨ３（ＮＩＨ３＜０）とを比較し、ΔＮ≦ＮＩＨ３の場合S1826 へ進み、補正量ΔＩを設定値ＴＩＰＴＡＨ３（ＴＩＰＴＡＨ３＜０）に設定し（ΔＩ←ＴＩＰＴＡＨ３）、S1845 へ進む。
【０２８３】
また、上記S1819SでΔＮ＞ＮＩＨ３の場合にはS1821へ進み、上記差回転ΔＮと設定値ＮＩＨ２（但し、ＮＩＨ３＜ＮＩＨ２＜０）とを比較し、ΔＮ≦ＮＩＨ２の場合、S1827 へ進み補正量ΔＩを設定値ＴＩＰＴＡＨ２（但し、ＴＩＰＴＡＨ３＜ＴＩＰＡＴＡＨ２＜０）に設定し（ΔＩ←ＴＩＰＴＡＨ２）、S1845 へ進む。また、ΔＮ＞ＮＩＨ２の場合S1822 へ進み差回転ΔＮと設定値ＮＩＨ１（但し、ＮＩＨ２＜ＮＩＨ１＜０）とを比較し、ΔＮ≦ＮＩＨ１の場合S1828 へ進み補正量ΔＩを設定値ＴＩＰＴＡＨ１（但し、ＴＩＰＴＡＨ２＜ＴＩＰＴＡＨ１＜０）で設定し（ΔＩ←ＴＩＰＴＡＨ１）、S1845 へ進む。
【０２８４】
また、上記S1822 でΔＮ＞ＮＩＨ１と判断されてS1823 へ進むと差回転ΔＮと０とを比較し、ΔＮ≦０の場合S1829 へ進み補正量ΔＩを設定値ＴＩＰＴＡＨ（但し、ＴＩＰＴＡＨ１＜ＴＩＰＴＡＨ，ＴＩＰＡＴＨ＝０［％］）で設定し（ΔＩ←ＴＩＰＴＡＨ）、S1845 へ進む。また、ΔＮ＞０の場合S1824 へ進む。S1824 へ進むと差回転ΔＮと設定値ＮＩＬ１（但し、０＜ＮＩＬ１）とを比較し、ΔＮ≦ＮＩＬ１の場合S1830 へ進み、補正量ΔＩを設定値ＴＩＰＴＡＬ（但し、ＴＩＰＴＡＨ≦ＴＩＰＡＴＬ）で設定し（ΔＩ←ＴＩＰＴＡＬ）、S1845 へ進む。また、ΔＮ＞ＮＩＬ１の場合S1825 へ進む。
【０２８５】
S1825 へ進むと、差回転ΔＮと設定値ＮＩＬ２（但し、ＮＩＬ１＜ＮＩＬ２）とを比較し、ΔＮ≦ＮＩＬ２の場合S1831 へ進み、補正量ΔＩをＴＩＰＴＡＬ１（但し、ＴＩＰＴＡＬ＜ＴＩＰＴＡＬ１）で設定し（ΔＩ←ＴＩＰＴＡＬ１）、S1845 へ進む。また、ΔＮ＞ＮＩＬ２の場合S1832 へ進み補正量ΔＩを設定値ＴＩＰＴＡＬ２（但し、ＴＩＰＴＡＬ１＜ＴＩＰＴＡＬ２）で設定し（ΔＩ←ＴＩＰＴＡＬ２）、S1845 へ進む。
【０２８６】
図４０に補正量ΔＩと差回転ΔＮとの関係を示す。図からも分かるように差回転ΔＮが小さければ補正量ΔＩも小さく設定される。これによりアイドル目標回転数ＮSET に対するエンジン回転数ＮE の収束性がよくなる。
【０２８７】
一方、上記S1818 でエアコンスイッチ８９がＯＦＦと判断されてS1820へ進むと、このS1820,S1833 〜S1837 において、差回転ΔＮと設定値ＮＩＨ３，ＮＩＨ２，ＮＩＨ１，０，ＮＩＬ１，ＮＩＬ２とを上述と同様に比較し、S1820 でΔＮ≦ＮＩＨ３と判断されてS1838 へ進むと補正量ΔＩを設定値ＴＩＰＲＴＨ３（但し、ＴＩＰＲＴＨ３＜０）で設定し（ΔＩ←ＴＩＰＲＴＨ３）、S1845 へ進む。S1833 でΔＮ≦ＮＩＨ２と判断されてS1839 へ進むと補正量ΔＩを設定値ＴＩＰＲＴＨ２（但し、ＴＩＰＲＴＨ３＜ＴＩＰＲＴＨ２＜０）で設定し（ΔＩ←ＴＩＰＲＴＨ２）、S1845 へ進む。
【０２８８】
S1834 でΔＮ≦ＮＩＨ１と判断されてS1840 へ進むと補正量ΔＩを設定値ＴＩＰＲＴＨ１（但し、ＴＩＰＲＴＨ２＜ＴＩＰＲＴＨ１＜０）で設定し（ΔＩ←ＴＩＰＲＴＨ）、S1845 へ進む。
【０２８９】
S1835 でΔＮ≦０と判断されてS1841 へ進むと補正量ΔＩを設定値ＴＩＰＲＴＨ（但し、ＴＩＰＲＴＨ１＜ＴＩＰＲＴＨ，ＴＩＰＲＴＨ＝０［％］）で設定し（ΔＩ←ＴＩＰＲＴＨ）、S1845 へ進む。
【０２９０】
S1836 でΔＮ≦ＮＩＬ１と判断されてS1842 へ進むと補正量ΔＩを設定値ＴＩＰＲＴＬ（但し、ＴＩＰＲＴＨ≦ＴＩＰＲＴＬ）で設定し（ΔＩ←ＴＩＰＲＴＬ）、S1845 へ進む。
【０２９１】
S1837 でΔＮ≦ＮＩＬ２と判断されてS1843 へ進むと補正量ΔＩを設定値ＴＩＰＲＴＬ１（但し、ＴＩＰＲＴＬ＜ＴＩＰＲＴＬ１）で設定し（ΔＩ←ＴＩＰＲＴＬ１）、S1845 へ進む。また、S1837 でΔＮ＞ＮＩＬ２と判断されてS1844へ進むと、補正量ΔＩを設定値ＴＩＰＲＴＬ２（但し、ＴＩＰＲＴＬ１＜ＴＩＰＲＴＬ２）で設定し（ΔＩ←ＴＩＰＲＴＬ２）、S1845 へ進む。
【０２９２】
そして、S1826 〜S1832 ，あるいは、S1838 〜S1844 のいずれかからS1845 へ進むと、ＲＡＭ５０の所定アドレスに格納されているクローズドループ補正Ｉ分ＩＳＣI をこのクローズドループ補正Ｉ分ＩＳＣI に上記S1826 〜S1832 ，S1838 〜S1844 のいずれかで設定した補正量ΔＩを加算した値で更新し（ＩＳＣI ←ＩＳＣI ＋ΔＩ）、S1846 へ進む。
【０２９３】
図４１にアイドル目標回転数ＮSET に対するエンジン回転数ＮE の変動と、補正量ΔＩおよびクローズドループ補正Ｉ分ＩＳＣI との関係をタイムチャートによって示す。
【０２９４】
［経過時間ｔ0 〜ｔ1］
アイドル目標回転数ＮSET に対しエンジン回転数ＮE が設定値ＮＩＨ３以上であるため（ΔＮ≦ＮＩＨ３）、エンジン回転数ＮEを下げるべく補正量ΔＩを最小の設定値ＴＩＰＴＡＨ３で設定する（S1826）。
【０２９５】
その結果、クローズドループ補正Ｉ分ＩＳＣI が上記設定値ＴＩＰＴＡＨ３だけ低い値になり、その分、ＩＳＣバルブ１３に対するデューティ比ＩＳＣONが低下してＩＳＣバルブ１３の開度が減少し、エンジン回転数ＮE が低下する。
【０２９６】
［経過時間ｔ1 〜ｔ2］
次いで、差回転ΔＮが設定値ＮＩＨ３とＮＩＨ２との間に収まると、補正量ΔＩが設定値ＴＩＰＴＡＨ２で設定され（S1827）、クローズドループ補正Ｉ分ＩＳＣI が設定値ＴＩＰＴＡＨ２分だけ更に低くなる。
【０２９７】
［経過時間ｔ2 〜ｔ3］
その後、差回転ΔＮが設定値ＮＩＨ２とＮＩＨ１との間に収まると、補正量ΔＩが設定値ＴＩＰＴＡＨ１で設定され（S1828）、クローズドループ補正Ｉ分ＩＳＣI が設定値ＴＩＰＴＡＨ１分だけ低くなり、エンジン回転数ＮE が低下する。
【０２９８】
そして、差回転ΔＮが設定値ＮＩＨ１と０との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＨ（０［％］）で設定され（S1829）、したがって、クローズドループ補正Ｉ分ＩＳＣI は変化しない。
【０２９９】
その後、差回転ΔＮが設定値０とＮＩＬ１との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＬ（ＴＩＰＴＡＨ≦ＴＩＰＴＡＬ）で設定される（S1830）。
【０３００】
［経過時間ｔ3 〜ｔ4］
次いで、差回転ΔＮが設定値ＮＩＬ１とＮＩＬ２との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＬ１で設定され（S1831）、クローズドループ補正Ｉ分ＩＳＣI が上記設定値ＴＩＰＴＡＬ１分だけ高くなる。
【０３０１】
［経過時間ｔ4 〜ｔ5］
その後、エンジン回転数ＮE がアイドル目標回転数ＮSET に対して設定値ＮＩＬ２より低くなると（ΔＮ＞ＮＩＬ２）、補正量ΔＩが設定値ＴＩＰＴＡＬ２で設定され（S1832）、クローズドループ補正Ｉ分ＩＳＣI が上記設定値ＴＩＰＴＡＬ２だけ高くなる。
【０３０２】
［経過時間ｔ5 〜ｔ6］
また、差回転ΔＮが設定値ＮＩＬ２とＮＩＬ１との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＬ１で設定され（S1831）、クローズドループ補正Ｉ分ＩＳＣI
が設定値ＴＩＰＴＡＬ１だけ高くなる。
【０３０３】
そして、差回転ΔＮが設定値ＮＩＬ１とＮＩＨ１との間に収まっている間は設定値ＴＩＰＴＡＬとＴＩＰＴＡＨとが０［％］であるためクローズドループ補正Ｉ分ＩＳＣI は変化しない。
【０３０４】
［経過時間ｔ6 以後］
一方、差回転ΔＮが設定値ＮＩＨ１とＮＩＨ２との間に収まると補正量ΔＩが設定値ＴＩＰＴＡＨ１で設定され、その後、差回転ΔＮが設定値ＮＩＨ１とＮＩＬ１との間に収束し、補正量ΔＩが設定値ＴＩＰＴＡＬ，ＴＩＰＴＡＨ（いずれも０［％］）に設定されるため、クローズドループ補正Ｉ分ＩＳＣI は一定となる。
【０３０５】
上記S1845 でクローズドループ補正Ｉ分ＩＳＣI を設定した後、S1846へ進むと、クローズドループ補正Ｉ分の学習サブルーチン（詳細は後述する）が実行される。
【０３０６】
次いで、S1847 で通常時制御移行時間判別カウント値ＣＯＵＮＴSTIの値を参照し、ＣＯＵＮＴSTI ≠０（始動後設定時間ＬＲＮＩＳＳ内）の場合S1848へ進み、ＣＯＵＮＴSTＩ＝０の場合S1850 へ進む。
【０３０７】
S1848 へ進むと、冷却水温ＴW と暖機再始動かを判断する予め設定された暖機完了判定値ＬＲＮＩＴW とを比較し、ＴW ≧ＬＲＮＩＴW （暖機再始動）の場合S1849 へ進み、ＴW ＜ＬＲＮＩＴW （エンジン冷態状態）の場合S1850 へ進む。
【０３０８】
S1849 へ進むと、クローズドループ補正Ｉ分ＩＳＣI と下限値ＩＭＩＮＢＬとを比較し、ＩＳＣI ≦ＩＭＩＮＢＬの場合S1853 へ進み、上記クローズドループ補正Ｉ分ＩＳＣI を上記下限値ＩＭＩＮＢＬで設定してS1859 へ進む。
【０３０９】
一方、S1849 でＩＳＣI ＞ＩＭＩＮＢＬと判断されるとS1851 へ進み、上記クローズドループ補正Ｉ分ＩＳＣI と上限値ＩＭＡＸＢＬとを比較し、ＩＳＣI ≧ＩＭＡＸＢＬの場合、S1854 へ進み、上記クローズドループ補正Ｉ分ＩＳＣI を上記上限値ＩＭＡＸＢＬで設定しS1859 へ進む。また、ＩＳＣI ＜ＩＭＡＸＢＬの場合、上記クローズドループ補正Ｉ分ＩＳＣI が許容範囲（ＩＭＡＸＢＬ＞ＩＳＣI ＞ＩＭＩＮＢＬ）に収まっていると判断し、そのままS1859 へ進む。
【０３１０】
また、S1847 ，あるいは、S1848 からS1850 へ進むと、上記クローズドループ補正Ｉ分ＩＳＣI と、前述のＩＳＣバルブ制御メインルーチンで設定したデューティ制限下限値ＩＭＩＮＣＬから前述の基本特性値設定サブルーチンで設定した基本特性値ＩＳＣTWを減算した値（下限値）とを比較し、ＩＳＣI ≦（ＩＭＩＮＣＬ−ＩＳＣTW）の場合S1855 へ進み、上記クローズドループ補正Ｉ分ＩＳＣI を上記下限値（ＩＭＩＮＣＬ−ＩＳＣTW）で設定し（ＩＳＣI ←ＩＭＩＮＣＬ−ＩＳＣTW）、S1859 へ進む。
【０３１１】
また、S1850 でＩＳＣI ＞（ＩＭＩＮＣＬ−ＩＳＣTW）の場合にはS1852へ進み、クローズドループ補正Ｉ分ＩＳＣI とＩＳＣバルブ制御メインルーチンで設定したデューティ制限上限値ＩＭＡＸＣＬ から基本特性値ＩＳＣTWを減算した値（上限値）とを比較し、ＩＳＣI ≧（ＩＭＡＸＣＬ −ＩＳＣTW）の場合にはS1856 へ進み、上記クローズドループ補正Ｉ分ＩＳＣI を上記上限値（ＩＭＡＸＣＬ −ＩＳＣTW）で設定し（ＩＳＣI ←ＩＭＡＸＣＬ −ＩＳＣTW）、S1859 へ進む。S1852 でＩＳＣI ＜（ＩＭＡＸＣＬ −ＩＳＣTW）の場合には、上記クローズドループ補正Ｉ分ＩＳＣI が許容範囲（（ＩMINCL −ＩＳＣTW）＜ＩＳＣI ＜（ＩＭＡＸＣＬ −ＩＳＣTW））に収まっていると判断し、そのままS1859 へ進む。
【０３１２】
ＩＳＣバルブ１３に対するデューティ比ＩＳＣONの大部分は基本特性値ＩＳＣTWであり、デューティ制限下限値ＩＭＩＮＣＬから基本特性値ＩＳＣTWを減算することで、基本特性値ＩＳＣTW以外の補正項に対する下限値を設定し、また、デューティ制限上限値ＩＭＡＸＣＬ から基本特性値ＩＳＣTWを減算することで上限値を設定する。
【０３１３】
但し、〈１〉始動後、所定時間ＬＲＮＩＳＳ［sec］以内の場合（S1847）、且つ、〈２〉冷却水温ＴW と暖機再始動かを判断する暖機完了判定値ＬＲＮＩＴＷとがＴW ≧ＬＲＮＩＴＷの場合（S1848）、暖機再始動時と判断し、オープンループ、クローズドループ制御を問わずＩＭＩＮＢＬ≦ＩＳＣI ≦ＩＭＡＸＢＬとする。
【０３１４】
暖機再始動において通常時制御に移行したとき、クローズドループ補正Ｉ分ＩＳＣI の初期設定の際に（S1808 、あるいはS1809）、クローズドループ補正Ｉ分ＩＳＣI が小さな値（負の値を含む）の学習値ＡＣＯＮＩ（エアコンスイッチ８９がＯＮ時）、あるいは、学習値ＡＣＯＦＦＩ（エアコンスイッチ８９がＯＦＦ時）で更新されるとエンジン回転数ＮE が低下してしまい、著しい場合はエンストしてしまう。このため、上限値、下限値をそれぞれ設定値ＩＭＩＮＢＬ，ＩＭＡＸＢＬとして、クローズドループ補正Ｉ分ＩＳＣI の上限値、下限値をシフトアップさせることで再始動性を改善させている（図４１（ｃ）参照）。
【０３１５】
一方、上記S1810 でＦＬＡＧCL＝０（オープンループ制御）と判断されてS1812 へ進むと冷却水温ＴW と、オープンループ制御中の冷却水温ＴW が低水温かを判断する設定値ＴWCL ［℃］とを比較し、ＴW ≦ＴWCL の場合S1857 へ進み、ＴW ＞ＴWCL の場合既述したS1847 へ進む。
【０３１６】
S1857 へ進むとクローズドループ補正Ｉ分ＩＳＣI の値を参照し、ＩＳＣI ＜０の場合S1858 へ進み、上記クローズドループ補正Ｉ分ＩＳＣI をクリアした後（ＩＳＣI ←０）、S1859 へ進む。また、ＩＳＣI ≧０の場合上記S1847へ進む。
【０３１７】
このように、オープンループ制御中（ＦＬＡＧCL＝０）の冷却水温ＴWが低水温時（ＴW ≦ＴWCL）で、かつ、クローズドループ補正Ｉ分ＩＳＣI が負側にあるとき（ＩＳＣI ＜０）には、このクローズドループ補正Ｉ分ＩＳＣI をクリアする（ＩＳＣI ←０）。すなわち、後述する学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩにより設定したクローズドループ補正Ｉ分ＩＳＣI が負側のときにはデューティ比ＩＳＣONが小さくなり、ＩＳＣバルブ１３の開度が減少してエンジン回転数ＮE が低下する方向に作用し、これを防止するため、スタータスイッチ６１がＯＮからＯＦＦ（始動時制御→通常時制御）へ移行した直後に学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩにより設定されるクローズドループ補正Ｉ分ＩＳＣI の下限値を０としている。
【０３１８】
そして、S1853 〜S1856 ，あるいは、S1858 のいずれかからS1859 へ進むと、今回の始動時／通常時制御判別フラグＦＬＡＧSTでＲＡＭ５０の所定アドレスに格納されている次回のルーチンで使用する前回の始動時／通常時制御判別フラグ（ＦＬＡＧST）OLD を更新し（（ＦＬＡＧST）OLD ←ＦＬＡＧST）、ルーチンを抜ける。
【０３１９】
（クローズドループ補正Ｉ分学習サブルーチン）
図２６はクローズドループ補正Ｉ分更新手順において実行（S1846 参照）されるクローズドループ補正Ｉ分学習サブルーチンである。
【０３２０】
まず、S1901 〜S1908 で学習条件が成立しているかを判断する。すなわち、S1901 では、冷却水温ＴW と暖機完了判定値ＬＲＮＩＴW［℃］とを比較し、ＴW ≧ＬＲＮＩＴW （エンジン暖機完了状態）の場合S1902 へ進み、ＴW ＜ＬＲＮＩＴW （エンジン冷態状態）の場合S1913 へ進む。
【０３２１】
S1902 へ進むとパワステ補正値ＩＳＣPSの値を参照し、ＩＳＣPS＝０（パワーステアリング転舵角小）の場合S1903 へ進み、ＩＳＣPS≠０の場合S1913へ進む。
【０３２２】
S1903 へ進むと、エアコンスイッチ８９がＯＦＦかを判断し、ＯＦＦの場合S1904 へ進み、ＯＮの場合S1905 へ進む。
【０３２３】
S1904 へ進むと、ラジファン補正値ＩＳＣRAS の値を参照し、ＩＳＣRA＝０（ラジエータファン６２がＯＦＦ）の場合S1905 へ進み、ＩＳＣRA≠０の場合S1913 へ進む。
【０３２４】
そして、S1903 あるいはS1904 からS1905 へ進むと、加減速補正ＤSHPTの値を参照し、ＤSHPT＝０の場合S1906 へ進み、ＤSHPT≠０の場合S1913 へ進む。
【０３２５】
S1906 へ進むとダッシュポット補正値ＤＨＥＮＢの値を参照し、ＤＨＥＮＢ＝０の場合、すなわち、ＤＳＨＰＴ＝０、かつ、ＤＨＥＮＢ＝０でアイドル状態と判断される場合には、S1907 へ進み、ＤＨＥＮＢ≠０の場合S1913 へ進む。
【０３２６】
S1907 へ進むと、クローズドループ補正Ｉ分ＩＳＣI の補正量ΔＩを参照し、ΔＩ＝０（エンジン回転数ＮE がアイドル目標回転数ＮSET の許容範囲内に収束している状態）の場合S1908 へ進み、ΔＩ≠０の場合S1913 へ進む。
【０３２７】
S1908 へ進むと、学習可能な状態が所定時間以上継続しているかどうかを判別すべく、所定時間に相当する設定値ＬＲＩＳＣＴと学習条件成立判別カウント値ＣＯＵＮＴISCIとを比較し、ＣＯＵＮＴISCI≧ＬＲＩＳＣＴの場合、学習条件成立と判断してS1909 へ進む。また、ＣＯＵＮＴISCI＜ＬＲＩＳＣＴの場合、S1910 へ進みカウント値ＣＯＵＮＴISCIをカウントアップし（ＣＯＵＮＴISCI←ＣＯＵＮＴISCI＋１）、ルーチンを抜ける。
【０３２８】
一方、S1909 へ進むと、エアコンスイッチ８９がＯＮかを判断し、ＯＮの場合S1911 へ進みバックアップＲＡＭ５０ａの所定アドレスに格納されているエアコンＯＮ時のＩ分学習値ＡＣＯＮＩを現時点におけるクローズドループ補正Ｉ分ＩＳＣI の値で更新し（ＡＣＯＮＩ←ＩＳＣI）、S1913 へ進む。ＯＦＦの場合S1912 へ進み、バックアップＲＡＭ５０ａの所定アドレスに格納されているエアコンＯＦＦ時のＩ分学習値ＡＣＯＦＦＩを現時点におけるクローズドループ補正Ｉ分ＩＳＣI の値で更新し（ＡＣＯＦＦＩ←ＩＳＣI）、S1913 へ進む。
【０３２９】
そして、S1901,S1902,S1904 〜S1907 ，S1911 、あるいは、S1912 のいずれかからS1913 へ進むと上記カウント値ＣＯＵＮＴISCIをクリアし（ＣＯＵＮＴISCI←０）、ルーチンを抜ける。
【０３３０】
ところで、図４２（ａ）に破線で示すように、クローズドループ補正Ｉ分ＩＳＣI を設定する際にＩ分学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩを使用しないと、始動時制御からオープンループ制御を介してクローズドループ制御へ移行するまでの間に差分が生じる。その結果、図４２（ｂ）に破線で示すように、初爆はするが完爆へはなかなか移行せず、始動時制御からオープンループ制御へ移行するときにエンジン回転数ＮE の立上がりにもたつきが生じる。
【０３３１】
一方、図４２（ａ）に実線で示すようにクローズドループ補正Ｉ分にＩ分学習値ＡＣＯＮＩあるいはＡＣＯＦＦＩを加味することで始動時制御からクローズドループ制御へ移行するまでの間の差分が改善され図４２（ｂ）に実線で示すように初爆から完爆へ直ちに移行し、エンジン回転数ＮE の立上がりがスムーズになり始動性が向上する。
【０３３２】
【発明の効果】
以上説明したように、請求項１記載の発明によれば、パワーステアリング転舵スイッチがオンされた時、少なくともエンジン温度に基づいて設定された基本特性値をパワステ補正値により補正してＩＳＣバルブの開度を設定し、吸入空気量を増量するに際し、アイドル状態およびエアコンスイッチの状態を判断する。そして、パワーステアリング転舵スイッチがオンでアイドル状態のときパワステ補正値を設定するので、車両走行等の非アイドル時には、エンジンにかかる全負荷に対してパワーステアリングポンプ駆動によるエンジン負荷は僅少となり、パワーステアリングポンプ駆動に伴うエンジン負荷増加の影響を無視でき、このとき、パワステ補正値によってＩＳＣバルブ開度設定値を増加する不要な補正を解消することができ、制御性を向上することができる。
そして、パワーステアリング転舵スイッチがオンでアイドル状態のとき、パワステ補正値を、エアコンスイッチがオンの場合はエアコンスイッチがオフの場合よりも小さい値に設定し、エアコンスイッチがオフの場合はエアコンスイッチがオンの場合よりも大きい値に設定するので、エアコンスイッチがオンし、エアコンコンプレッサ駆動負荷により、その分パワーステアリングポンプの負荷が相対的に小さくなる場合に、エンジン回転数が必要以上に高くなることがなく、エアコンスイッチのオン／オフに拘らず常に適正なパワステ補正を行うことができ、フィーリングを向上することができる。
そして、パワーステアリング転舵スイッチがオフ、或いは非アイドル状態になったとき、パワステ補正値を、該パワステ補正値による補正無しに対応するゼロになるまで演算周期毎に設定値づつ減少させるので、パワーステアリング転舵スイッチがオンからオフに移行した直後は、パワーステアリングポンプ駆動負荷が未だ存在しており駆動負荷が漸次的に減少するが、これに対応してパワステ補正値によって漸次的に吸入空気量を減少することができる。従って、パワーステアリング転舵角が大から小に切換わった直後のエンジン負荷変化に一致して、吸入空気量を的確に減少させることが可能となり、エンジン回転数の変動を防止し、且つ、エンジン回転数の収束性を向上することができ、良好なフィーリングを得ることができる。
また、非アイドル状態への移行に伴い、パワステ補正を解除するに際して、このときにもパワステ補正値を、該パワステ補正値による補正無しに対応するゼロになるまで演算周期毎に設定値づつ減少させるので、ＩＳＣバルブに対する開度設定量のつながりがスムーズになり、制御性を向上することができる。
【図面の簡単な説明】
【図１】ＩＳＣバルブ制御手順を示すフローチャート(その１)。
【図２】ＩＳＣバルブ制御手順を示すフローチャート(その２)。
【図３】補正値設定手順を示すフローチャート。
【図４】基本特性値設定手順を示すフローチャート。
【図５】アイドル目標回転数設定手順を示すフローチャート。
【図６】クローズド／オープンループ制御判別手順を示すフローチャート。
【図７】エアコン補正値設定手順を示すフローチャート(その１)。
【図８】エアコン補正値設定手順を示すフローチャート(その２)。
【図９】エアコンスイッチＯＦＦ→ＯＮ時のエアコン補正学習手順を示すフローチャート。
【図１０】エアコンスイッチＯＮ→ＯＦＦ時のエアコン補正学習手順を示すフローチャート。
【図１１】ＡＴ車走行レンジ補正値設定手順を示すフローチャート(その１)。
【図１２】ＡＴ車走行レンジ補正値設定手順を示すフローチャート(その２)。
【図１３】加減速補正設定手順を示すフローチャート(その１)。
【図１４】加減速補正設定手順を示すフローチャート(その２)。
【図１５】ダッシュポット補正値設定手順を示すフローチャート。
【図１６】ダッシュポット補正値更新手順を示すフローチャート。
【図１７】ラジファン補正設定手順を示すフローチャート。
【図１８】パワステ補正値設定手順を示すフローチャート(その１)。
【図１９】パワステ補正値設定手順を示すフローチャート(その２)。
【図２０】エアコンクラッチ補正値設定手順を示すフローチャート。
【図２１】始動後補正初期値設定手順を示すフローチャート。
【図２２】始動後補正設定手順を示すフローチャート。
【図２３】クローズドループ補正Ｉ分更新手順を示すフローチャート(その１)。
【図２４】クローズドループ補正Ｉ分更新手順を示すフローチャート(その２)。
【図２５】クローズドループ補正Ｉ分更新手順を示すフローチャート(その３)。
【図２６】クローズドループ補正Ｉ分学習手順を示すフローチャート。
【図２７】エンジン制御系の概略図。
【図２８】制御装置の構成図。
【図２９】エアコンスイッチとエアコン補正値とエンジン回転数の関係を示すタイムチャート。
【図３０】走行レンジ、またはＮ，Ｐレンジと、ＡＴ車走行レンジ補正とエンジン回転数の関係を示すタイムチャート。
【図３１】アイドルスイッチとスロットル開度と加減速補正とエンジン回転数の関係を示すタイムチャート。
【図３２】アイドルスイッチとエンジン回転数とダッシュポット補正値の関係を示すタイムチャート。
【図３３】ラジエータファンＯＮ／ＯＦＦとラジファン補正の関係を示すタイムチャート。
【図３４】アイドル判別回転数を設定する際のヒステリシスを示すタイムチャート。
【図３５】パワステ転舵スイッチとパワステ補正値とエンジン回転数の関係を示すタイムチャート。
【図３６】エアコンスイッチとエアコンクラッチリレーとエアコンコンプレッサの容量とエアコンクラッチ補正値とエンジン回転数の関係を示すタイムチャート。
【図３７】始動後補正の変化を示すタイムチャート。
【図３８】デューティ比の変化を示すタイムチャート。
【図３９】始動後補正値のクローズドループ補正Ｉ分への移行を示すタイムチャート。
【図４０】クローズドループ補正Ｉ分の補正量と差回転との関係を示す説明図。
【図４１】エンジン回転数とクローズドループ補正Ｉ分の補正量とクローズドループ補正Ｉ分との関係を示すタイムチャート。
【図４２】クローズドループ補正Ｉ分の学習値の使用状況を示すタイムチャートである。
【符号の説明】
６ｅ  エアバイパス通路
１１ｄ，１１ｅ  スロットルバルブ
１３  ＩＳＣバルブ
５８  パワーステアリング転舵スイッチ
８９  エアコンスイッチ
ＤＩＳＣＰＳ  設定値
ＩＳＣON  開度設定値（デューティ比）
ＩＳＣTW  基本特性値
ＩＳＣPS  パワステ補正値
ＴW   エンジン温度（冷却水温）
【図１】
0003769213.tif 000002
【図２】
0003769213.tif 000003
【図３】
0003769213.tif 000004
【図４】
0003769213.tif 000005
【図５】
0003769213.tif 000006
【図６】
0003769213.tif 000007
【図７】
0003769213.tif 000008
【図８】
0003769213.tif 000009
【図９】
0003769213.tif 000010
【図１０】
0003769213.tif 000011
【図１１】
0003769213.tif 000012
【図１２】
0003769213.tif 000013
【図１３】
0003769213.tif 000014
【図１４】
0003769213.tif 000015
【図１５】
0003769213.tif 000016
【図１６】
0003769213.tif 000017
【図１７】
0003769213.tif 000018
【図１８】
0003769213.tif 000019
【図１９】
0003769213.tif 000020
【図２０】
0003769213.tif 000021
【図２１】
0003769213.tif 000022
【図２２】
0003769213.tif 000023
【図２３】
0003769213.tif 000024
【図２４】
0003769213.tif 000025
【図２５】
0003769213.tif 000026
【図２６】
0003769213.tif 000027
【図２７】
0003769213.tif 000028
【図２８】
0003769213.tif 000029
【図２９】
0003769213.tif 000030
【図３０】
0003769213.tif 000031
【図３１】
0003769213.tif 000032
【図３２】
0003769213.tif 000033
【図３３】
0003769213.tif 000034
【図３４】
0003769213.tif 000035
【図３５】
0003769213.tif 000036
【図３６】
0003769213.tif 000037
【図３７】
0003769213.tif 000038
【図３８】
0003769213.tif 000039
【図３９】
0003769213.tif 000040
【図４０】
0003769213.tif 000041
【図４１】
0003769213.tif 000042
【図４２】
0003769213.tif 000043