(57)【特許請求の範囲】
【請求項１】
起動周期が互いに整数倍の関係になる複数の制御プログラムを実行し、車両の運転状態を表すセンサ類の検出結果に応じた車両制御を行う車両制御装置であって、
前記制御プログラムの起動を管理するための管理データであって、該制御プログラムの起動周期の大きさの順に序列的に対応させた変数からなる管理データを記憶するメモリと、
前記制御プログラムの起動周期がその整数倍となる周期にてカウントされるタイマカウンタと、
前記タイマカウンタのカウント値が所定値に達したか否かを判断し、該所定値に達していない場合には管理データとしての変数を第１の値に設定し、該所定値に達した場合には管理データとしての変数を第２の値に設定する管理データ設定手段と、
前記管理データ設定手段によりメモリに設定された管理データに基づいて制御プログラムを実行し、前記管理データである変数の値を変化させ、この変化した変数の値に対応する制御プログラムを実行するようにした制御プログラム実行手段と
を備えたことを特徴とする車両制御装置。
【請求項２】
請求項１に記載の車両制御装置において、
前記タイマカウンタのカウント値が前記所定値に達した際に設定される第２の管理データは、そのとき起動されるべき制御プログラムのうち、当該起動周期が最も大きい制御プログラムに対応する変数値であり、
前記制御プログラム実行手段は、前記メモリの管理データの値に基づいて該データに対応する制御プログラムを実行するものであって、前記起動周期が最も大きい制御プログラムを実行後、起動周期がより小さい制御プログラムに対応する値となるように管理データを更新し、前記起動されるべき制御プログラムの実行と管理データの更新とを、最小の起動周期の制御プログラムが実行し終わるまで繰り返す車両制御装置。
【請求項３】
起動周期が互いに整数倍の関係になる複数の制御プログラムを実行し、車両の運転状態を表すセンサ類の検出結果に応じた車両制御を行う車両制御装置であって、
前記制御プログラムの起動を管理するための管理データであって、該制御プログラムの起動周期の大きさの順に序列的に対応させた変数からなる第１の管理データを記憶するとともに、最小の起動周期よりも大きい起動周期を有する制御プログラムを起動するか否かを判断するための変数からなる第２の管理データを記憶するメモリと、
前記制御プログラムの起動周期がその整数倍となる周期にてカウントされるタイマカウンタと、
前記制御プログラムの最小の起動周期毎に前記第１の管理データを所定の値に設定するとともに、前記タイマカウンタのカウント値が所定値に達したか否かを判断し、前記カウント値が該所定値に達していない場合には前記第２の管理データを第１の値とし、前記カウント値が該所定値に達した場合には前記第２の管理データを第２の値として設定する管理データ設定手段と、
前記管理データ設定手段により設定された前記第１の管理データに基づいて前記最小の起動周期の制御プログラムを実行し、さらに前記第１の管理データの値と前記第２の管理データの値とを比較することにより、最小の起動周期よりも大きい起動周期を有する前記制御プログラムを実行するか否かを判断するようにした制御プログラム実行手段と
を備えることを特徴とする車両制御装置。
【請求項４】
前記メモリに記憶される管理データとして、カウンタを使用する請求項１〜３のいずれかに記載の車両制御装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
この発明は、起動周期が互いに整数倍の関係になる複数の制御プログラムを実行し、車両の運転状態を表すセンサ類の検出結果に応じた車両制御を行う車両制御装置に関するものである。
【０００２】
【従来の技術】
近年の車両においては、マイクロコンピュータを用いて総合的な電子制御を行う車両用電子制御装置（ＥＣＵ）が搭載されており、その車両用電子制御装置は高精度化の要求によりさらに多様化且つ複雑化の一途にある。そこで従来より、マイクロコンピュータにかかる負荷を軽減すると共に、処理効率を向上させるための各種の制御装置が提案されている。
【０００３】
例えば特開昭５６−１０５５０７号公報に開示されている車両制御装置では、起動周期の異なる複数の制御プログラムに関し、その起動周期を各々整数倍の関係になるように設定している。そして、起動周期の小さい制御プログラムの実行回数により、それよりも長い起動周期の制御プログラムを管理している。また、ＲＡＭ（メモリ）にはステータスレジスタ（ＳＲ）群が設けられ、同ＳＲ群の各ビットには起動周期の異なる制御プログラムを個々に管理するための起動フラグが割り当てられている。そして、この車両制御装置では、起動周期が長い制御プログラムについて起動管理に必要な負荷を削減している。
【０００４】
【発明が解決しようとする課題】
ところが、上記従来の車両制御装置においては、以下に示す問題が生じる。
即ち、起動周期の異なる制御プログラムを起動する際、各制御プログラムの起動フラグの状態に基づいて起動させるため、少なくとも制御プログラム数と同数のビット数が起動フラグに割り当てられる。そのため、制御プログラム数が増大した場合、多くのＲＡＭ領域が必要となると共に、フラグ操作プログラム用ＲＯＭ領域が必要になるという問題を招く。
【０００５】
この発明は、上記問題に着目してなされたものであって、その目的とするところは、新規な構成にて制御プログラムの管理を行うと共に、メモリの使用効率を向上させることができる車両制御装置を提供することにある。
【０００６】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載の発明は、起動周期が互いに整数倍の関係になる複数の制御プログラムを実行し、車両の運転状態を表すセンサ類の検出結果に応じた車両制御を行う車両制御装置として、前記制御プログラムの起動を管理するための管理データであって、該制御プログラムの起動周期の大きさの順に序列的に対応させた変数からなる管理データを記憶するメモリと、前記制御プログラムの起動周期がその整数倍となる周期にてカウントされるタイマカウンタと、前記タイマカウンタのカウント値が所定値に達したか否かを判断し、該所定値に達していない場合には管理データとしての変数を第１の値に設定し、該所定値に達した場合には管理データとしての変数を第２の値に設定する管理データ設定手段と、前記管理データ設定手段によりメモリに設定された管理データに基づいて制御プログラムを実行し、前記管理データである変数の値を変化させ、この変化した変数の値に対応する制御プログラムを実行するようにしたことを要旨としている。
【０００７】
請求項２に記載の発明は、請求項１に記載の車両制御装置において、前記タイマカウンタのカウント値が前記所定値に達した際に設定される第２の管理データは、そのとき起動されるべき制御プログラムのうち、当該起動周期が最も大きい制御プログラムに対応する変数値であり、前記制御プログラム実行手段は、前記メモリの管理データの値に基づいて該データに対応する制御プログラムを実行するものであって、前記起動周期が最も大きい制御プログラムを実行後、起動周期がより小さい制御プログラムに対応する値となるように管理データを更新し、前記起動されるべき制御プログラムの実行と管理データの更新とを、最小の起動周期の制御プログラムが実行し終わるまで繰り返すようにしている。
【０００８】
請求項３に記載の発明は、起動周期が互いに整数倍の関係になる複数の制御プログラムを実行し、車両の運転状態を表すセンサ類の検出結果に応じた車両制御を行う車両制御装置として、前記制御プログラムの起動を管理するための管理データであって、該制御プログラムの起動周期の大きさの順に序列的に対応させた変数からなる第１の管理データを記憶するとともに、最小の起動周期よりも大きい起動周期を有する制御プログラムを起動するか否かを判断するための変数からなる第２の管理データを記憶するメモリと、前記制御プログラムの起動周期がその整数倍となる周期にてカウントされるタイマカウンタと、前記制御プログラムの最小の起動周期毎に前記第１の管理データを所定の値に設定するとともに、前記タイマカウンタのカウント値が所定値に達したか否かを判断し、前記カウント値が該所定値に達していない場合には前記第２の管理データを第１の値とし、前記カウント値が該所定値に達した場合には前記第２の管理データを第２の値として設定する管理データ設定手段と、前記管理データ設定手段により設定された前記第１の管理データに基づいて前記最小の起動周期の制御プログラムを実行し、さらに前記第１の管理データの値と前記第２の管理データの値とを比較することにより、最小の起動周期よりも大きい起動周期を有する前記制御プログラムを実行するか否かを判断するようにした制御プログラム実行手段とを備えるようにしたことを要旨としている。
【０００９】
請求項４に記載の発明は、前記メモリに記憶される管理データとして、カウンタを使用するようにしている。
【００１０】
【作用】
請求項１に記載の発明によれば、起動周期が互いに整数倍の関係になる複数の制御プログラム（例えば、４ｍｓ処理，１６ｍｓ処理，１２８ｍｓ処理）が用意されている。そして、管理データ設定手段は、制御プログラムの起動周期がその整数倍となる周期にてカウントされるタイマカウンタのカウント値が所定値に達したか否かを判断し、該所定値に達していない場合には管理データとしての変数を第１の値に設定し、該所定値に達した場合には管理データとしての変数を第２の値に設定する。また、制御プログラム実行手段は、管理データ設定手段によりメモリに設定された管理データに基づいて制御プログラムを実行し、管理データである変数の値を変化させ、この変化した変数の値に対応する制御プログラムを実行する。この場合、制御プログラムは、その起動周期の大きさの順に序列的に対応させた変数からなる管理データにて管理される。その結果、各制御プログラムの起動フラグを個々にメモリの記憶領域に割り当てていた従来技術とは異なり、プログラム管理に関するメモリの使用領域が削減される。
【００１１】
請求項２に記載の発明において、タイマカウンタのカウント値が所定値に達した際に設定される第２の管理データについてこれを、そのとき起動されるべき制御プログラムのうち、当該起動周期が最も大きい制御プログラムに対応する変数値とする。また、制御プログラム実行手段は、メモリの管理データの値に基づいて該データに対応する制御プログラムを実行するものであり、起動周期が最も大きい制御プログラムを実行後、起動周期がより小さい制御プログラムに対応する値となるように管理データを更新し、起動されるべき制御プログラムの実行と管理データの更新とを、最小の起動周期の制御プログラムが実行し終わるまで繰り返す。この場合、１つの管理データを変化させることにより、複数の制御プログラムを起動周期に応じて管理できる。
【００１２】
即ち、３つの制御プログラム（４ｍｓ処理，１６ｍｓ処理，１２８ｍｓ処理）を管理する場合を例にすれば、４ｍｓ処理と１６ｍｓ処理とが起動される際、管理データ設定手段は、１６ｍｓ処理に対応する変数を管理データとして設定する。そして、制御プログラム実行手段は、１６ｍｓ処理を実行した後、４ｍｓ処理を連続して実行する。また、４ｍｓ処理と１６ｍｓ処理と１２８ｍｓ処理とが起動される際、管理データ設定手段は、１２８ｍｓ処理に対応する変数を管理データとして設定する。そして、制御プログラム実行手段は、１２８ｍｓ処理を実行した後、１６ｍｓ処理と４ｍｓ処理とを連続して実行する。
【００１３】
請求項３に記載の発明によれば、起動周期が互いに整数倍の関係になる複数の制御プログラム（例えば、４ｍｓ処理，１６ｍｓ処理，１２８ｍｓ処理）が用意されている。そして、メモリには、制御プログラムの起動周期の大きさの順に序列的に対応させた変数からなる第１の管理データと、最小の起動周期よりも大きい起動周期を有する制御プログラムを起動するか否かを判断するための変数からなる第２の管理データとが記憶されている。そして、管理データ設定手段は、制御プログラムの起動周期がその整数倍となる周期にてカウントされるタイマカウンタのカウント値が所定値に達したか否かを判断し、該所定値に達していない場合には第２の管理データを第１の値に設定し、該所定値に達した場合には第２の管理データを第２の値に設定する。そして、制御プログラム実行手段は、管理データ設定手段により設定された第１の管理データに基づいて最小の起動周期の制御プログラムを実行し、さらに第１の管理データの値と第２の管理データの値とを比較することにより、最小の起動周期よりも大きい起動周期を有する制御プログラムを実行するか否かを判断する。この場合、起動周期の短い制御プログラムから先に実行されることで、車両制御において変動量の大きいデータを扱う制御プログラム（短い周期の制御プログラム）が優先され、高精度な車両制御が実現できる。
【００１５】
請求項４に記載の発明によれば、メモリに記憶される管理データとして、カウンタが使用されるため、上記請求項１〜３に記述した制御プログラムの管理が容易に実現される。
【００１６】
【実施例】
（第１実施例）
以下、この発明の車両制御装置をエンジン制御装置に具体化した第１実施例について図面に従って説明する。
【００１７】
図１は、本実施例におけるエンジン制御装置の全体構成を概略的に示す図である。同図に示すように、エンジン本体１はシリンダ２内にピストン３を備えており、このピストン３の上方にはシリンダヘッド１ａ，シリンダブロック１ｂにより区画された燃焼室４が形成されている。燃焼室４には点火プラグ２１が配設されている。燃焼室４は、吸気バルブ５及び排気バルブ６を介して吸気管７及び排気管８に連通している。
【００１８】
吸気管７にはスロットルバルブ９が配設されており、同バルブ９にはスロットルセンサ１０が連結されている。スロットルセンサ１０は、スロットルバルブ９が所定の開度以上に開いたか否か、或いはスロットルバルブ９の開く速度が所定値より速いか否か等を検出するためのものである。また、吸気管７において、前記スロットルバルブ９の上流側にはベーン式エアフローメータ１１が配設され、同じく下流側には負圧センサ１２が配設されている。エアフローメータ１１は、エンジンへの吸入空気量を検出してその検出値に対応する電圧を発生する。負圧センサ１２は、吸気管負圧を検出してその検出値に対応する電圧を発生する。
【００１９】
水温センサ１３はウォータジャケット１ｃに付設されており、同ウォータジャケット１ｃ内を循環する冷却水の温度を検出してその検出値に対応する電圧を発生する。スタータスイッチ１４は、図示しないスタータモータを駆動する際に閉成され、エンジンが始動（クランキング）状態にあることを示す信号を発生する。そして、エアフローメータ１１、負圧センサ１２及び水温センサ１３からの出力電圧、さらに、スタータスイッチ１４及びストッロルセンサ１０からの信号は、後述する電子制御装置（以下、ＥＣＵという）１５に送り込まれる。
【００２０】
ディストリビュータ１６には、そのディストリビュータ軸１６ａが所定角度回転する毎に角度位置信号を発生する基準位置センサ１７及びクランク角センサ１８が設けられている。本実施例の場合、基準位置センサ１７，クランク角センサ１８は、それぞれクランク角に換算して３６０°ＣＡ、３０°ＣＡ毎に角度位置信号を発生し、それらの２種の角度位置信号はＥＣＵ１５に送り込まれる。
【００２１】
ＥＣＵ１５から出力される点火信号は点火装置１９に送り込まれ、この信号により点火装置１９内のパワートランジスタ（図示しない）が点火コイル２０の一次電流の通電及び遮断を制御する。点火コイル２０から得られる高圧の二次電流はディストリビュータ１６を介して点火プラグ２１に送り込まれる。
【００２２】
図２は、ＥＣＵ１５の電気的構成を示すブロック図である。同図に示すように、ＥＣＵ１５内に設けられたマイクロコンピュータ２３は、入出力ポート２４、ＣＰＵ（中央処理装置）２５、ＲＯＭ（リードオンリメモリ）２６、ＲＡＭ（ランダムアクセスメモリ）２７及び点火制御回路２８を備えている。これらの構成要素はバス２９を介して接続されており、このバス２９を介して入出力データの転送が行われるようになっている。ＲＯＭ２６内には、点火時期演算用割り込み処理プログラム、その他の処理プログラム、及びそれらの演算処理に必要な種々のデータが予め格納されている。
【００２３】
エアフローメータ１１、負圧センサ１２及び水温センサ１３からの電圧信号は、アナログマルチプレクサを含むＡ／Ｄ変換器３０に送り込まれる。そして、その後前記電圧信号がＡ／Ｄ変換器３０にて所定の変換周期で順次２進の信号に変換され、入出力ポート２４に送り込まれる。また、スタータスイッチ１４及びスロットルセンサ１０からの信号は入力バッファ３１に入力された後、入出力ポート２４に送り込まれる。基準位置センサ１７及びクランク角サンサ１８からのクランク角３６０°ＣＡ及び３０°ＣＡの角度位置信号は、波形整形回路３２で矩形状の基準位置信号及びクランク角信号に波形整形された後、入出力ポート２４に送り込まれる。
【００２４】
点火制御回路２８は、ＣＰＵ２５によって算出された点火コイル２０の通電開始時期に関する出力データ、及び通電終了時期、即ち点火プラグ２１の点火時期に関する出力データから点火信号を生成する回路である。そして、点火制御回路２８にて生成された点火信号は、出力回路３３を介して点火装置１９に送り込まれる。
【００２５】
ＲＡＭ２７内には、制御プログラム等の状態を表すステータスレジスタ（以下、ＳＲという）群が設けられており、その構成を図３に示す。図３においてＳＲ１〜ＳＲｎは各種演算に使用され、例えば、ＳＲ１は吸入空気量の演算に、ＳＲ２はエンジン回転数の演算に、ＳＲ３は点火時期の演算に使用される。また、各々のＳＲ１〜ＳＲｎには、上記の各種演算に必要な処理（制御プログラム）を起動周期毎に管理するための管理データＫＤが割り当てられている。管理データＫＤは、制御プログラムの起動周期の大きさの順に序列的に対応させた変数にて構成されており、本実施例では、３ビットのカウンタからなっている。
【００２６】
なお、本実施例ではＣＰＵ２５により管理データ設定手段及び制御プログラム実行手段が構成され、ＲＡＭ２７（ＳＲ群）によりメモリが構成されている。
以下、上記の如く構成されたエンジン制御装置の作用について説明する。
【００２７】
図４は、電源の投入に伴いＣＰＵ２５により実行されるベースルーチンを示すフローチャートである。さて、図４のルーチンがスタートすると、ＣＰＵ２５は先ずステップ１００で初期化処理を実行する。このとき、図５の初期化ルーチンに示すように、ステップ１１０〜１４０においてＳＲ１〜ＳＲｎの管理データＫＤが順に「０」にクリアされることにより、ＲＡＭ２７内のＳＲ群が全て初期化される。
【００２８】
その後、ＣＰＵ２５はステップ２００で吸入空気量を、ステップ３００でエンジン回転数を演算すると共に、ステップ４００で上記演算結果（吸入空気量，エンジン回転数）に基づいてエンジン運転状態に対応した点火時期を演算する。なお、図示はしないが、このベースルーチンでは上記ステップ２００〜４００の演算処理の他に、インジェクタによる燃料噴射量の演算やＩＳＣ弁等の制御量の演算が実施される。
【００２９】
次いで、図４のステップ２００に示した吸入空気量の演算処理について、図６に示すサブルーチンに基づいて詳細に説明する。図６のルーチンは、起動周期の異なる複数の処理を実行する。具体的には、吸入空気量の算出処理（ステップ２０７）と吸入空気量の補正処理（ステップ２０９）とは４ｍｓ周期で実行され、水温補正項の算出処理（ステップ２０３）と負圧補正項の算出処理（ステップ２０５）とは１００ｍｓ周期で実行される。これらの処理は、ＳＲ１に設定される管理データＫＤにて管理される。図７は、４ｍｓ割り込み毎に管理データＫＤを設定する管理データ設定ルーチンを示している。
【００３０】
図７の管理データ設定ルーチンを説明する。図７において、ＣＰＵ２５は、ステップ５００でタイマカウンタＣｔを「１」インクリメントし、続くステップ５１０でタイマカウンタＣｔが「２５」であるか否かを判別する。そして、Ｃｔ≠「２５」であれば、ＣＰＵ２５はステップ５２０で管理データＫＤを「３」とする。また、Ｃｔ＝「２５」であれば、ＣＰＵ２５はステップ５３０で管理データＫＤを「１」とすると共に、続くステップ５４０でタイマカウンタＣｔを「０」にクリアする。即ち、図７によれば、４ｍｓ毎にタイマカウンタＣｔがカウントされ、その都度、ＫＤ＝「３」が設定される。また、１００ｍｓ経過時にのみＫＤ＝「１」が設定される。
【００３１】
一方、図６の吸入空気量演算ルーチンにおいて、ＣＰＵ２５は、ステップ２０１で管理データＫＤが「０」であるか否かを判別し、ＫＤ＝「０」であればそのまま本ルーチンを終了する。また、ＫＤ≠「０」であれば、ＣＰＵ２５はステップ２０２〜２０９にて管理データＫＤに応じた処理を起動させる。
【００３２】
詳しくは、ＣＰＵ２５は、ステップ２０２でＫＤ＝「１」であるか否かを判別し、ＫＤ＝「１」であれば、ステップ２０３で水温センサ１３による検出結果に基づいて水温補正項を算出する（１００ｍｓ処理が起動される）。ＣＰＵ２５は、ステップ２０４でＫＤ＝「２」であるか否かを判別し、ＫＤ＝「２」であれば、ステップ２０５で負圧センサ１２による検出結果に基づいて負圧補正項を算出する（１００ｍｓ処理が起動される）。ＣＰＵ２５は、ステップ２０６でＫＤ＝「３」であるか否かを判別し、ＫＤ＝「３」であれば、ステップ２０７でエアフローメータ１１による検出結果に基づいて吸入空気量を算出する（４ｍｓ処理が起動される）。さらに、ＣＰＵ２５は、ステップ２０８でＫＤ＝「４」であるか否かを判別し、ＫＤ＝「４」であれば、ステップ２０９で上記水温補正項，負圧補正項に基づいて吸入空気量を補正する（４ｍｓ処理が起動される）。
【００３３】
その後、ＣＰＵ２５は、ステップ２１０で管理データＫＤを「１」インクリメントし、続くステップ２１１で管理データＫＤが「５」以上であるか否かを判別する。この場合、ＫＤ＜「５」であれば、ＣＰＵ２５は本ルーチンをそのまま終了し、ＫＤ≧「５」であれば、ステップ２１２で管理データＫＤを「０」とした後、本ルーチンを終了する。
【００３４】
要するに、上記図６及び図７のルーチンによれば、タイマカウンタＣｔ＝「１」〜「２４」の場合には、図７のステップ５２０でＫＤ＝「３」が設定された後、図６のステップ２０７，２０９で４ｍｓ処理（吸入空気量の算出処理，吸入空気量の補正処理）が実行される。このとき、図６のステップ２０７，２０９は、図４のループにより連続して実行される。
【００３５】
また、タイマカウンタＣｔ＝「２５」の場合には、図７のステップ５３０でＫＤ＝「１」が設定された後、図６のステップ２０３，２０５で１００ｍｓ処理（水温補正項の算出処理，負圧補正項の算出処理）が実行されると共に、図６のステップ２０７，２０９で４ｍｓ処理（吸入空気量の算出処理，吸入空気量の補正処理）が実行される。このとき、図６のステップ２０３，２０５，２０７，２０９は、図４のループにより連続して実行される。以上の如く、管理データＫＤを用いて、起動周期の異なる制御プログラムが管理される。
【００３６】
そして、以上詳述した本実施例のエンジン制御装置では、以下に示す効果を発揮する。以下、（１）ＲＡＭ２７の使用量、（２）ＲＯＭ２６の使用量、（３）処理時間に分けてそれぞれの効果を従来技術と比較しながら説明する。
【００３７】
（１）ＲＡＭ２７の使用量
本実施例では、起動周期の異なる制御プログラムの管理をＳＲ（ステータスレジスタ）内の１つの管理データＫＤにて行うようにした。より具体的には、管理データＫＤを「０」〜「５」の範囲で変化する変数とし、ＳＲ１の３ビットを管理データＫＤ（カウンタ）に割り当てた。この場合、制御プログラム毎に起動フラグを割り当てていた従来の制御装置と比較して、ビット数の削減を図ることができる。即ち、上述の如く４つの制御プログラム（図６のステップ２０３，２０５，２０７，２０９）を管理する場合、従来はその管理に４ビット（処理数×１ビット）の起動フラグが必要であったが、本実施例では３ビットでよく、１ビット削除することができる。このビット数の削減は、制御プログラムの数が増大するに従い効果を増し、ＲＡＭ２７の使用量削減が実現できる。
【００３８】
（２）ＲＯＭ２６の使用量
本実施例では、ＳＲ１〜ＳＲｎに１つずつの管理データＫＤが割り当てたため、電源投入時の初期化処理（図５の処理）において、各ＳＲに対して１命令で初期化を完了することができる。この場合、従来技術では、各ＳＲの初期化に際し、制御プログラム毎の起動フラグを１つずつクリアしていたため、制御プログラム数が４であれば４命令（処理数×１命令）が必要であったが、これを３命令分、削減することができる。
【００３９】
また、本実施例では、図６の吸入空気量演算ルーチンにおいて、ＳＲ１に設定した管理データＫＤを用いて起動周期の異なる制御プログラムの起動を管理した。この場合、従来技術では、各制御プログラム毎に起動フラグの判定と、制御プログラムの実行後における起動フラグのクリアとが必要であったため、やはり制御プログラム数の増加と共に、命令数の増大を招いていた。これに対して、本実施例では、上記従来の起動フラグのクリアに相当する命令が常に図６のステップ２１０〜２１２で置き換えられ、制御プログラム数の増加時にも命令数の増加が抑制される。
【００４０】
さらに、本実施例では、図７の４ｍｓ割り込み処理において、その時に実行される制御プログラム数に関係なく１命令にて管理データＫＤを設定するようにした（図７のステップ５２０或いは５３０）。この場合、従来技術では、その時に実行される制御プログラム数に応じて起動フラグをセットする命令が必要であったが、この命令数を大幅に削減することができる。
【００４１】
（３）処理時間
本実施例では、前述の如くＲＯＭ２６の使用量を大幅に削減したことにより、各種プログラムにおける命令数の削減に応じた処理時間の短縮化が実現される。即ち、図５におけるＳＲ１〜ＳＲｎの初期化時間の短縮、図６における制御プログラムの管理時間の短縮、図７における定期割り込み処理の実行時間の短縮等が実現される。
【００４２】
また、図６の吸入空気量の演算処理において、従来技術では、いずれかの制御プログラム（４ｍｓ処理，１００ｍｓ処理）の起動時でなくとも毎回、全起動フラグの確認命令が必要であったが、本実施例では、図６のステップ２０１の命令のみでよく、毎回の処理時間が大幅に削減できる。なお、本実施例では、上記の如く毎回の処理時間を少なくした反面、制御プログラムの起動時（図６のステップ２０１の肯定判別時）には管理データＫＤの更新や判定のための処理時間が必要となる。しかし、制御プログラムの起動回数は、図４のループによる全処理回数に対して少数であるため問題となることはなく、毎回の処理時間を少なくしたことで図４の他の演算処理等への影響を少なくすることができる。
【００４３】
なお、上記第１実施例の変形例としては、次の様態が挙げられる。
例えば、図６の吸入空気量演算ルーチンにおいて、同一周期の制御プログラム（ステップ２０３及び２０５，ステップ２０７及び２０９）を同一の管理データＫＤで管理するようにしてもよい。即ち、ステップ２０３及び２０５（１００ｍｓ処理）を管理する管理データＫＤを「１」とし、ステップ２０７及び２０９（４ｍｓ処理）を管理する管理データＫＤを「２」とする。この場合、管理データＫＤを「０」〜「３」の範囲で変化する変数としてＳＲ１の２ビットで構成することができる。
（第２実施例）
次に本発明の第２実施例について、上記第１実施例との相違点を中心に説明する。上記第１実施例では、異なる起動周期の制御プログラムの起動タイミングが重複した際、起動周期の大きい制御プログラムから順に実行していたが、第２実施例では起動周期の小さい制御プログラムから順に実行するようにしている。
【００４４】
図８は前記図４のベースルーチンにおける任意のサブルーチンを示したフローチャートであり、このフローは前記第１実施例の図６に相当する。図８は、４ｍｓ周期（例えば、図６の吸入空気量の算出処理）で起動される４ｍｓ処理と、１００ｍｓ周期で起動される１００ｍｓ処理（例えば、図６の水温補正項の算出処理）とを有している。また、図９は４ｍｓ割り込みである管理データ設定ルーチンであり、このルーチンは前記第１実施例の図７に相当する。なお、本実施例において、ＳＲ１には、第１の管理データＫＤ１と第２の管理データＫＤ２とが設定されるようになっている。
【００４５】
図９の管理データ設定ルーチンを説明する。図９において、ＣＰＵ２５は、ステップ７００で第１の管理データＫＤ１を「１」とし、続くステップ７１０でタイマカウンタＣｔを「１」インクリメントする。その後、ＣＰＵ２５は、ステップ７２０でタイマカウンタＣｔが「２５」であるか否かを判別する。そして、Ｃｔ≠「２５」であれば、ＣＰＵ２５はステップ７３０で第２の管理データＫＤ２を「１」とする。また、Ｃｔ＝「２５」であれば、ＣＰＵ２５はステップ７４０で第２の管理データＫＤ２を「２」とすると共に、続くステップ７５０でタイマカウンタＣｔを「０」にクリアする。即ち、図９では、１００ｍｓ毎にＫＤ２＝「２」が設定され、４ｍｓ毎にＫＤ２＝「１」が設定される。
【００４６】
一方、図８において、ＣＰＵ６は、ステップ６００で第１の管理データＫＤ１が「０」であるか否かを判別し、ＫＤ１＝「０」であればそのまま本ルーチンを終了し、ＫＤ１≠「０」であればステップ６１０〜６４０にて第１の管理データＫＤ１に応じた処理を起動させる。
【００４７】
詳しくは、ＣＰＵ２５は、ステップ６１０でＫＤ１＝「１」であるか否かを判別し、ＫＤ１＝「１」であれば、ステップ６２０で４ｍｓ処理を実行する。また、ＣＰＵ２５は、ステップ６３０でＫＤ１＝「２」であるか否かを判別し、ＫＤ１＝「２」であれば、ステップ６４０で１００ｍｓ処理を実行する。
【００４８】
その後、ＣＰＵ２５は、ステップ６５０でＫＤ１≧ＫＤ２であるか否かを判別する。この場合、ＫＤ１＜ＫＤ２であれば、ＣＰＵ２５はステップ６６０で第１の管理データＫＤ１を「１」インクリメントした後、本ルーチンを終了する。また、ＫＤ１≧ＫＤ２であれば、ＣＰＵ２５はステップ６７０で第１の管理データＫＤ１を「０」とした後、本ルーチンを終了する。
【００４９】
要するに、上記図８及び図９のルーチンによれば、図７のステップ７００で４ｍｓ毎にＫＤ１＝「１」となり、図８のステップ６２０に示す４ｍｓ処理が実行される。そして、タイマカウンタＣｔ＝「１」〜「２４」の場合には、図９のステップ７３０でＫＤ２＝「１」が設定されることにより、そのとき起動される制御プログラムのうちで起動周期が最も大きい制御プログラムがＫＤ１＝「１」に相当する４ｍｓ処理となる。従って、この場合には、図８のステップ６２０に示す４ｍｓ処理のみが起動される。
【００５０】
また、タイマカウンタＣｔ＝「２５」の場合には、図９のステップ７４０でＫＤ２＝「２」が設定されることにより、起動周期が最も大きい制御プログラムがＫＤ１＝「２」に相当する１００ｍｓ処理となる。従って、この場合には、図８のステップ６２０に示す４ｍｓ処理が起動された後、ＫＤ１＝「２」となって、図８のステップ６４０に示す１００ｍｓ処理が起動される。
【００５１】
本第２実施例によれば、ＳＲ１に第１及び第２の管理データＫＤ１，ＫＤ２を設定するため、第１実施例と比較してＳＲ１の領域が多くなるが、制御プログラム数に合わせて乗算的に増加する従来技術と比較した場合には全体としてメモリ使用領域の削減を図ることができる。
【００５２】
また、第２実施例によれば、起動周期の短い制御プログラムから先に実行されることで、車両制御において変動量の大きいデータを扱う制御プログラム（短い周期の制御プログラム）が優先され、高精度な車両制御を実現することができる。
【００５３】
なお、上記各実施例の変形例としては、次の様態が挙げられる。
上記各実施例では、図６或いは図８のルーチンにおいて４ｍｓ処理と１００ｍｓ処理とを実行するようにしていたが、さらに４００ｍｓ処理を加える等、３つ以上の処理を処理を組み合わせることもできる。
【００５４】
また、上記各実施例では、図６或いは図８のルーチンにおいてＳＲ１に設定される管理データをインクリメトすることで、管理データを変更していたがこれをデクリメントする構成に変更してもよい。
【００５５】
【発明の効果】
請求項１に記載の発明によれば、新規な構成にて制御プログラムの管理を行い、メモリ使用効率を向上させることができるという優れた効果を発揮する。この場合、管理対象となる制御プログラム数が多くなるほど、その効果を大きくすることができる。
【００５６】
請求項２に記載の発明によれば、１つの管理データを変化させることにより、複数の制御プログラムに対して起動周期に応じた管理をより効率的に行うことができる。
【００５７】
請求項３に記載の発明によれば、起動周期の短い制御プログラムが先に実行されることで、車両制御において変動量の大きいデータを扱う制御プログラムが優先され、高精度な車両制御を実現することができる。
【００５８】
請求項４に記載の発明によれば、上述した起動周期の異なる制御プログラムの管理を容易に実現することができる。
【図面の簡単な説明】
【図１】実施例におけるエンジン制御装置の概略を示す構成図である。
【図２】ＥＣＵ及びその周辺機器の電気的構成を示すブロック図である。
【図３】ＲＡＭ内のステータスレジスタ群を示す構成図である。
【図４】ＣＰＵにより実行されるベースルーチンを示すフローチャートである。
【図５】ＣＰＵにより実行される初期化ルーチンを示すフローチャートである。
【図６】第１実施例において、ＣＰＵにより実行される吸入空気量演算ルーチンを示すフローチャートである。
【図７】第１実施例において、ＣＰＵにより実行される管理データ設定ルーチンを示すフローチャートである。
【図８】第２実施例において、ＣＰＵにより実行されるサブルーチンを示すフローチャートである。
【図９】第２実施例において、ＣＰＵにより実行される管理データ設定ルーチンを示すフローチャートである。
【符号の説明】
１０…センサ類をなすスロットルセンサ、１１…センサ類をなすエアフローメータ、１２…センサ類をなす負圧センサ、１３…センサ類をなす水温センサ、１４…センサ類をなすスタータスイッチ、１７…センサ類をなす基準位置センサ、１８…センサ類をなすクランク角センサ、２５…管理データ設定手段，制御プログラム実行手段としてのＣＰＵ、２７…メモリとしてのＲＡＭ。
【図１】
0003577742.tif 000002
【図２】
0003577742.tif 000003
【図３】
0003577742.tif 000004
【図４】
0003577742.tif 000005
【図５】
0003577742.tif 000006
【図６】
0003577742.tif 000007
【図７】
0003577742.tif 000008
【図８】
0003577742.tif 000009
【図９】
0003577742.tif 000010