(57)【特許請求の範囲】
【請求項１】
制御対象物を制御するための制御プログラムを処理内容毎に分割してなる個別処理プログラムに従って、所定のタイミングで個々に処理を行う複数の処理手段と、
前記各個別処理プログラムに従う処理を周期的に起動させるための起動プログラムに従って、該個別処理プログラム毎に予め定められた所定の起動タイミングにて起動指令を出力することにより、前記各処理手段を起動可能に構成された起動制御手段と、
を備えた電子制御装置において、
当該電子制御装置は、エンジンを前記制御対象物として制御するための通常モードと、前記通常モードとは異なる動作モードとで動作可能に構成されており、
前記通常モードとは異なる動作モードにおいて不要な個別処理プログラムを示す判別情報を記憶した判別情報記憶手段を備え、
前記起動制御手段は、当該電子制御装置の動作モードを判断し、該判断の結果、該動作モードが前記通常モードでないとき、前記判別情報を参照することにより、個別処理プログラムについて該動作モードでの実行が必要であるか不要であるかを判別することを、前記起動指令を前記起動タイミングで出力する前に実行すると共に、該判別の結果、実行が不要である個別処理プログラムに対応する処理手段への起動指令の出力を禁止する起動禁止手段を備えたことを特徴とする電子制御装置。
【請求項２】
請求項１記載の電子制御装置において、
前記通常モードとは、前記エンジンに備えられたインジェクタを駆動するモードであることを特徴とする電子制御装置。
【請求項３】
請求項１または請求項２に記載の電子制御装置において、
前記通常モードとは異なる動作モードとは、
当該電子制御装置に不具合があるか否かを検査する検査モード、及び前記制御プログラムを外部からの操作に従って書き換える書換モードの少なくとも一方であることを特徴とする電子制御装置。
【請求項４】
請求項１ないし請求項３のいずれかに記載の電子制御装置において、
前記個別処理プログラムは、起動タイミングが共通の個別処理プログラム毎に、前記通常モードとは異なる動作モードにおいて必要なものと不要なものとに区分され、
前記判別情報は、前記起動タイミングから、前記通常モードとは異なる動作モードにおいて不要な個別処理プログラムを判別可能に構成され、
前記起動禁止手段は、前記判断の結果、当該電子制御装置の動作モードが前記通常モードでないとき、該判断時の起動タイミングに基づき前記判別情報を参照することにより、該動作モードにおいて不要な個別処理プログラムを判別することを特徴とする電子制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、周期的なプログラムの起動により制御対象物を制御する電子制御装置に関する。
【０００２】
【従来の技術】
従来より、制御対象物（例えばエンジン）を制御するための電子制御装置においては、一定時間毎、或いは制御対象の動作に同期したタイミング毎に（例えば、クランクの回転に同期したタイミングで）、各種の処理（例えば演算処理やアクチュエータの駆動処理など）を実行することにより、所定の制御対象物に対する制御処理が実現されている。即ち、制御対象を制御するための制御プログラムは、処理内容に応じて分けられた複数のプログラム（以下、「個別処理プログラム」という。）で構成され、これら個別処理プログラムの呼び出し（即ち、個別処理プログラムに従う処理の起動）を行うタイミングをコントロールするための起動プログラムに従って、各個別処理プログラムに従う処理を夫々予め定められたタイミングで起動させる。
【０００３】
【発明が解決しようとする課題】
ところで、電子制御装置には、制御対象物を普通に駆動制御するモード（以下「通常モード」という。）だけでなく、電子制御装置を構成する電子部品や配線パターンなどに不具合がないかどうかを検査するモード（検査モード）、電子制御装置のプログラムを書き換えるモード（書換モード）など、通常モードとは異なる動作モード（以下、解決課題の欄では「特殊モード」という。）で動作可能に構成されたものがある。
【０００４】
こうした特殊モードにおいては、通常モードにて使用される個別処理プログラムの全てを呼び出すことは必ずしも必要でなく、通常モードと同様の全個別処理プログラム（即ち、通常モードで必要な個別処理プログラムの全て）に従う処理を実行したのでは無駄な動作を行うこととなるし、また却って、特殊モードで実現されるべき本来の機能が損なわれる可能性もある。
【０００５】
そのため従来は、各個別処理プログラムに従う処理において、起動されるとまず現在の動作モードが通常モードであるかどうかを判断し、通常モードであれば通常の処理を行うが、特殊モードの場合には以降の処理の実行を中止することにより、そうした不具合の発生を防止していた。図６は、個別処理プログラムに従う処理として、内燃機関型エンジンに設けられたインジェクタ（燃料噴射弁）を駆動するための処理（インジェクタ駆動処理）を例示したものである。図６に示す様に、インジェクタ駆動処理が所定のタイミングで起動されると、まずその時点での（即ち、現在の）動作モードを判断し（Ｓ５００）、通常モードである場合（Ｓ５００：ＹＥＳ）には、インジェクタを駆動するための処理（駆動電流を流す動作など）を行うが（Ｓ５１０）、通常モードでない場合（Ｓ５００：ＮＯ）には、以降の処理を行わず（この例では、Ｓ５１０の処理）速やかに当該インジェクタ駆動処理を終了するという具合である。
【０００６】
ところが、この様な構成では、電子制御装置の動作モードが何であろうとも各個別処理プログラムに従う処理が夫々所定のタイミングで起動される。そして、通常モードであっても、その各個別処理プログラムに従う処理中で当該電子制御装置の動作モードの判断が行われることから、制御対象物の制御処理の効率が悪くなるという問題が発生してしまう。
【０００７】
本発明は、こうした問題に鑑み為されたものであり、周期的なプログラムの起動により制御対象物を制御する電子制御装置において、制御対象物を制御する通常モード以外の動作モードを有する場合であっても、処理効率が低下することを抑制することを目的とする。
【０００８】
【課題を解決するための手段及び発明の効果】
上記課題を解決するためになされた本発明（請求項１記載）の電子制御装置においては、複数の処理手段が、所定のタイミングで個々の処理を行うことにより制御対象物を制御するものとして構成されている。これらの処理手段は、制御対象物を制御するための制御プログラムを処理内容毎に分割して構成された個別処理プログラムに従って、電子制御装置のＣＰＵが処理を行うことにより実現される機能手段である。
【０００９】
個別処理プログラムに従う処理は所定のタイミングで周期的に起動されるものであって、その周期的な起動タイミングは各個別処理プログラム毎に予め定められている。そして、これら個別処理プログラムに従う処理は、起動制御手段から各処理手段に対して起動指令が送られることにより開始される。この起動制御手段は、個別処理プログラムに従う処理を周期的に起動させるための起動プログラムに従って、電子制御装置のＣＰＵが処理を行うことによって実現される機能手段である。なお、ここで「周期的に起動する」とは、時間に同期して周期的に起動する場合、および制御対象物の動作に同期して周期的に起動する場合を含む。
【００１０】
ここで本発明の電子制御装置は、エンジンを制御対象物として制御するための通常モードと、通常モードとは異なる動作モードとで動作可能に構成されたものであるが、こうした構成においても処理効率の低下を抑制するため、通常モードとは異なる動作モードにおいて不要な個別処理プログラムを示す判別情報を記憶した判別情報記憶手段を備えると共に、起動制御手段には、次の様に作用する起動禁止手段が特に設けられている。
【００１１】
起動禁止手段は、起動制御手段と同じく、上記起動プログラムに従って電子制御装置のＣＰＵが動作することによって実現される機能手段である。起動禁止手段は、まず当該電子制御装置の動作モードを判断（以下、単に「モード判断」ともいう。）する。そして起動禁止手段は、その判断の結果、当該電子制御装置の動作モードが通常モードでないときには、判別情報を参照することにより、該動作モードにおいて各個別処理プログラムについて実行が必要であるか不要であるかを判別する（以下、必要性判別と称す）。ただし、モード判断と、必要性判別とは、起動制御手段から所定の起動タイミングで起動指令が出力される前に実行される。
そして、起動禁止手段は、必要性判別での結果、実行が不要な個別処理プログラムに対応する処理手段への起動指令の出力を禁止する。
なお、通常モードとは、請求項２に記載のように、エンジンに備えられたインジェクタを駆動するモードであり、通常モードとは異なる動作モードとは、請求項３に記載のように、当該電子制御装置に不具合があるか否かを検査する検査モード、及び前記制御プログラムを外部からの操作に従って書き換える書換モードの少なくとも一方であることが望ましい。
【００１２】
顧みるに、従来の電子制御装置においては、通常モードであっても、或いは通常モード以外の動作モード（例えば、上述の書換モードや検査モードなど）であっても、全ての処理手段に対して常に起動指令を出力していたことから、各処理手段は自己が起動される都度、モード判断を毎回行う必要があった。即ち、起動プログラムに従う処理では単に、所定の起動タイミングで各個別処理プログラムの呼び出しを行うだけであり、呼び出された各個別処理プログラムに従う処理で夫々モード判断を行い、動作モードに応じて、処理を続行するか中止するかを決定していた。
【００１３】
しかし、本発明の電子制御装置における起動プログラムに従う処理では、各個別処理プログラムの呼び出しを行う前にモード判断を行い、通常モードでなければ、その動作モード（即ち、通常モード以外の動作モード）において不要な個別処理プログラムの呼び出しを禁止するのである。
【００１４】
従って、本発明の電子制御装置においては、各個別処理プログラムに従う処理の中でモード判断を行う必要がなくなるため、制御対象物に対する制御処理を効率的に行うことができる。
また、通常モードでない動作モードにおいても、その動作モードに不要な個別処理プログラムの呼び出しを行わないことから、処理効率が向上する。即ち、一のプログラムに従う処理を行っているときに、他のプログラムに従う処理を呼び出す場合は、現在実行中の当該処理の実行を一時中断し、他の処理の実行を終了した後に、中断していた処理の実行を再開することとなる。中断していた処理の実行を再開するためには、中断直前のＣＰＵの内部状態（即ち、プログラムカウンタや各種レジスタの値）を、ＲＡＭのスタック領域に格納しておくなどの手続きが必要である。しかし、本発明の電子制御装置においては、その動作モードに不要な個別処理プログラムの呼び出しを行わないことから、こうした手続きも不要となり、処理負担が軽減されるのである。
【００１５】
また、従来の電子制御装置においては、各個別処理プログラム中にモード判断を行うための処理が記述されていたが、電子制御装置の仕様変更や他機種へプログラム移植を行う際、各動作モードにおける当該個別処理プログラムの要・不要や、動作モードの有無が変わる場合があるため、そうした場合にモード判断処理を記述した部分の見直しが各個別処理プログラム毎に必要となっていた。しかし、本発明の電子制御装置によれば、モード判断処理を各個別処理プログラム中に記述する必要はなく、起動プログラム中に記述すればよいことから、上の様な場合であっても、起動プログラムについてのみ見直せばよい。そのため、電子制御装置に使用されるソフトウェアの生産性を向上できるという効果も得られる。
【００１６】
さて、不要な個別処理プログラムを判別するには、起動プログラムの中に「その動作モードにおいて不要な個別処理プログラム」を示す情報（例えば名称など）を直に記述しておき、それに従って判別を行うことが考えられる。しかし、そうした場合、「その動作モードにおいて不要な個別処理プログラム」が「必要なもの」に変わるなど、電子制御装置の仕様変更や他機種への移植に伴う仕様変化があったときには、起動プログラム自体を書き換える必要があり面倒である。
【００１８】
しかしながら、この様に構成された本発明の電子制御装置によれば、「その動作モードにおいて不要な個別処理プログラム」が、「その動作モードにおいて必要なもの」に変わるなどの仕様変更があったときであっても、判別情報の内容を書き換えるだけで対応できる。つまり、電子制御装置の仕様変更等があった場合でも、設計変更を容易に行うことができるという効果を奏する。なお、判別情報記憶手段は、電気的に書き換え可能な不揮発性メモリ（例えば、フラッシュＲＯＭなど）により構成すれば、当該電子制御装置が市場に出荷された後も容易に設定を変更できるので好ましい。
【００１９】
さて、本発明の電子制御装置においては、判別情報を、各個別処理プログラムについて個々に「必要」か「不要」かを示したものとして構成し、通常モード以外の動作モードであるときには、１つ１つの個別処理プログラムについて、その動作モードで必要か不要かを判断してもよい。しかし、請求項４に記載の様にすると、更に効率的な処理実行を図ることができる。
【００２０】
即ち、請求項４に記載の電子制御装置においては、個別処理プログラムを、起動タイミングが共通の個別処理プログラム毎に、通常モードとは異なる動作モードにおいて必要なものと不要なものとに区分している。例えば、ある共通の起動タイミング（例えば、「１ms毎」、…）を有する個別処理プログラムが複数あるものとし、それらをプログラムＡ〜Ｃとすると、「それらプログラムＡ〜Ｃが全て、その動作モードにおいて必要」か「それらプログラムＡ〜Ｃが全て、その動作モードにおいて不要」かのどちらかになるよう、各個別処理プログラムを区分けするのである。
【００２１】
そして判別情報を、起動タイミングに基づいて「通常モードとは異なる動作モードにおいて不要な個別処理プログラム」を判別できるような構成とすると共に、起動禁止手段を、モード判断の結果、通常モードでないとき、その判断時の起動タイミングに基づいて、判別情報を参照することにより、その動作モードにおいて不要な個別処理プログラムを判別するよう構成するのである。
【００２２】
この様に構成された請求項４に記載の電子制御装置によれば、１つ１つの個別処理プログラムについて「その動作モードにおいて必要か不要か」を判断するのではなく、個別処理プログラム毎に予め設定されている「起動タイミング」に基づき、その起動タイミングを有する個別処理プログラム全体について「その動作モードにおいて必要か不要か」を判別するのである。このため、こうした判別処理を速やかに行うことができ、更に電子制御装置の処理効率を向上させることができる。
【００２３】
【発明の実施の形態】
以下に、本発明の一実施例を図面と共に説明する。
図１は、一実施例としての電子制御装置（以下、ＥＣＵという）２の電気的構成を示す説明図である。このＥＣＵ２は自動車に搭載され、エンジンの制御を行うためのエンジン制御装置として構成されている。
【００２４】
図１に示すように、ＥＣＵ２は、エンジンの運転状態に応じた信号を出力する各種センサ（例えば、クランク角センサ２２など）からの信号を取り込むための入力回路８と、入力回路８にて取り込まれた信号等に基づき、エンジンに対する最適制御量を演算し、その演算結果に基づき制御信号を出力するＣＰＵ１０と、ＣＰＵ１０に対して一定周期のクロック信号を入力するクロック発生器１１と、ＣＰＵ１０からの制御信号を受けて、エンジンに燃料を噴射供給するインジェクタ２４などの各種アクチュエータを駆動する出力回路１２と、ＣＰＵ１０がエンジンを制御するのに必要な制御プログラム及び制御データなどを格納するフラッシュＲＯＭ１４と、ＣＰＵ１０が動作するのに必要な他のプログラムを格納するＲＯＭ１６と、ＣＰＵ１０の演算結果等を一時的に格納する揮発性のＲＡＭ１８と、当該ＥＣＵ２と外部装置（例えばフラッシュＲＯＭ１４の記憶内容を外部から書き換えるためのメモリ書換装置や、ＥＣＵ２の検査装置など）との間でのデータ送受を図る通信回路２０とを備えている。
【００２５】
フラッシュＲＯＭ１４は、電気的にデータの消去及び書き込みが可能な不揮発性メモリであり、請求項の「判別情報記憶手段」に相当するものである。これには、ＥＣＵ２が制御するエンジンに合ったエンジン制御用の制御プログラム及び制御データ、制御プログラムを所定のタイミングで周期的に起動させるための起動プログラムが格納されている。また、ＲＯＭ１６は、データの書き換えが不能な不揮発性メモリであり、これには、当該ＥＣＵ２のブートプログラムやデータが格納されている。
【００２６】
このように構成されたＥＣＵ２に動作電力が供給されると、ＣＰＵ１０においてブートプログラムに従う処理が実行され、ＥＣＵ２の処理動作の基板となるオペレーションシステムが起動されるほか、ＥＣＵ２を構成する各部が動作可能な状態となる。そしてＣＰＵ１０では、オペレーションシステムの付加機能により、クロック発生器１１からのクロック信号を計数することにより時間を計測し、予め定められた一定時間毎（本実施例では、１ms毎）に図２に示す時間同期起動制御処理が起動される。
【００２７】
この時間同期起動制御処理は、請求項の「起動制御手段」としてＣＰＵ１０が行う処理である。具体的には、時間に同期して（換言すれば、時間を計測するための計時手段たるクロック発生器１１からの信号に同期して）、「個別処理プログラム」としてのプログラム部品を周期的に起動させるものであって、図３に示す時間同期起動コントローラ（「起動プログラム」に相当するもの）に従って、行われる処理である。
【００２８】
エンジン制御を実現するための制御は、図３に示す様に、時間に同期した処理を行うべく構成されたプログラム部品Ａ，Ｂ，Ｃ，…や、エンジンのクランク軸の回転に同期した処理を行うべく構成されたプログラム部品α，β，γ，…などに従う処理により実現される。ただし、本実施例のＥＣＵ２おいては、これらプログラム部品は、必ずしもエンジン制御を実現するだけのものとして構成されている訳ではない。その中には、エンジン制御を行う通常モードのときにのみ必要なプログラム部品もあるし、検査モードや書換モードなどの、通常モード以外の動作モードの時にのみ必要なプログラムもあるし、また、各動作モードで必要なもの（ＲＡＭ１８に対して所定時間毎に制御データなどを書き込む処理を行うためのものなど）もある。なお、この内、通常モードにて必要なプログラム部品が、請求項の「個別処理プログラム」に相当する。
【００２９】
これらプログラム部品の内、プログラム部品Ａ，Ｂ，Ｃその他の時間に同期した処理を行うためのプログラム部品は、時間同期起動コントローラからの起動指令により呼び出される。そして、プログラム部品α，β，γその他のクランク軸の回転に同期した処理を行うためのプログラム部品は、クランク同期起動コントローラからの起動指令により呼び出される。これら時間同期起動コントローラおよびクランク同期起動コントローラは、請求項の「起動プログラム」に相当するものであり、この内、時間同期起動コントローラは上述の如く１ms毎に呼び出され、クランク同期コントローラは、クランク軸が予め定められた所定角度（本実施例では７．５℃Ａ）回転する毎に呼び出される。
【００３０】
この様な時間同期コントローラに従って行われる時間同期起動制御処理の内容について、図２と共に以下に説明する。
この時間同期起動制御処理が開始されると、まずカウント値ＣＮＴを「１」増加させる（Ｓ１０）。このカウント値ＣＮＴは、ＥＣＵ２への電源投入後から当該時間同期起動制御処理の起動回数を計数するために、ＲＡＭ１８に定義された変数であり、ＥＣＵ２の電源投入後にリセット（「０」を設定）される。なお、カウント値ＣＮＴのビット長には制限があるので、上限値になると再び「０」からの計数が行われることとなる。
【００３１】
そしてＳ１０の後、次に、現在におけるＥＣＵ２の動作モードを判断する（Ｓ２０）。このモード判断の結果、ＥＣＵ２の動作モードが「通常モード」である場合には、図４（ａ）に示す様な通常モード用マスクデータが読み込まれる（Ｓ３０）。このマスクデータは、共通の起動タイミングを有するプログラム部品毎に、通常モードにおいて「必要」か「不要」かを示す情報であり、「必要」なものについては「０」が設定され、「不要」なものについては「１」が設定された８ビットのビットパターンとして構成されている。
【００３２】
具体的には、次の如くである。即ち、時間に同期して呼び出されるプログラム部品Ａ，Ｂ，Ｃ，…は、図４（ｂ）に示す如く、「１ms」、「２ms」、「４ms」、「８ms」、「１６ms」、「６４ms」、「１２８ms」（つまり、時間同期起動コントローラの起動周期の整数倍。より詳しくは、２n倍（ｎ：整数）。）の何れかの起動周期を有するものとして設定されており、その起動タイミングは、「１ms毎」、「２ms毎」、「４ms毎」、「８ms毎」、「１６ms毎」、「６４ms毎」、「１２８ms毎」となる。そして、各起動タイミングには、夫々複数のプログラム部品が配分されている。この図４（ｂ）は、起動周期とプログラム部品との対応を規定した情報テーブル（フラッシュＲＯＭ１４に格納されている）を示すものであるが、後述の「起動指令の出力」は、この情報テーブルに従って行われる。
【００３３】
そして、各起動タイミング毎に、通常モードにおいて「必要（：０）」か「不要（：１）」かを予め定めているのが、通常モード用マスクデータである。例えば、このマスクデータの第７ビットbit7は、起動タイミングが「１ms毎」であるプログラム部品（例えば図４（ｂ）では、プログラム部品Ａ、…など）について、通常モードにおいて「必要」か「不要」かを規定する情報である。また第６ビットbit6は、起動タイミングが「２ms毎」であるプログラム部品（プログラム部品Ｂ、…など）について、通常モードにおいて「必要」か「不要」かを規定する部分である。以下、同様に、第５ビットbit5が「４ms毎」、第４ビットbit4が「８ms毎」、第３ビットbit3が「１６ms毎」、第２ビットbit2が「３２ms毎」、第１ビットbit1が「６４ms毎」、第０ビットbit0が「１２８ms毎」というようにして、各桁のビットが夫々起動タイミングに対応している。
【００３４】
そして本実施例のＥＣＵ２においては、通常モード以外の動作モードとして、検査モードや書換モードなどの動作モードで動作可能に構成されている。検査モードでは、ＥＣＵ２を構成するハードウェアを検査するための動作モードである。例えば、配線パターンがショートしていないかどうか、トランジスタなどの電子部品が正しく動作するかどうかなどの検査である。また、書換モードは、フラッシュＲＯＭ１４に格納された制御プログラムを、通信回路２０を介した外部操作により書き換える際の動作モードである。こうした、通常モード以外の動作モードについても、それぞれの動作モード毎に、通常モードと同様の形式のマスクデータが用意されている。
【００３５】
即ち、各起動タイミング別（「１ms毎」、…、「１２８ms毎」）に、検査モードにおいて「必要（：０）」か「不要（：１）」かを予め定めた情報が、検査モード用マスクデータであり、各起動タイミング別に、検査モードにおいて「必要（：０）」か「不要（：１）」かを予め定めた情報が、検査モード用マスクデータであり、これら検査モード用および書換モード用マスクデータが、請求項の「判別情報」に相当するものである。そして、上記のモード判断処理（Ｓ２０）において、検査モードであると判断された場合には、検査モード用マスクデータが読み込まれ（Ｓ４０）、また書換モードであると判断された場合には、書換モード用マスクデータが読み込まれる（Ｓ５０）。なお、マスクデータ（通常モード用、検査モード用および書換モード用のマスクデータ）は、「判別情報記憶手段」としてのフラッシュＲＯＭ１４に格納され、通信回路２０を介して外部から書き換えできるようになっている。
【００３６】
こうして、モード判断（Ｓ２０）およびその判断結果に応じたマスクデータを読み込んだ（Ｓ３０〜Ｓ５０の何れか）後、次に、「１ms用のビット」（即ち、第７ビットbit7）が「１」かどうかを判断する（Ｓ６０）。なお、「XXms用のビット」とは、「XXms毎」の起動タイミングに対応するビットを意味する。
【００３７】
ここで、「１ms用のビット」＝「１」であれば（Ｓ６０：ＹＥＳ）、起動タイミングが「１ms毎」であるプログラム部品（プログラム部品Ａ，…等）に従う処理は起動させないものと判断し、速やかにＳ８０に移行するが、「１ms用のビット」＝「１」でなければ（Ｓ６０：ＮＯ）、「１ms起動指令を出力」し（Ｓ７０）、その後、Ｓ８０に移行する。ここで、「XXms起動指令を出力」とは、起動タイミングが「XXms毎」であるプログラム部品に従う処理を実行することを意味する。
【００３８】
次にＳ８０では、カウント値ＣＮＴが「２」の倍数であるかどうかを判断することにより、現在「２ms毎」の起動タイミングであるかどうかを判断する。即ち、この時間同期起動制御処理は１ms毎に起動されるものであり、当該処理が２回起動される毎に、「２ms毎」の起動タイミングとなるのである。
【００３９】
そして、カウント値ＣＮＴが「２」の倍数である場合には（Ｓ８０：ＹＥＳ）、「２ms用のビット」＝「１」かどうかを判断し（Ｓ９０）、「２ms用のビット」＝「１」でないとき（Ｓ９０：ＮＯ）、「２ms起動指令を出力」し（Ｓ１００）、現在「４ms毎」の起動タイミングであるかどうかを判断する処理に移行する（図示せず）。
【００４０】
一方、カウント値ＣＮＴが「２」の倍数でないとき（Ｓ８０：ＮＯ）や、「２ms用のビット」＝「１」であるとき（Ｓ９０：ＹＥＳ）には、「２ms起動指令の出力」は行わず、そのまま、上記の「現在が「４ms毎」の起動タイミングかどうかを判断する処理」に移行する。
【００４１】
以下同様にして、現在、所定の起動タイミング（「４ms毎」、…、「６４ms毎」）であるかどうかを順次判断し、所定の起動タイミングであり、且つ、その起動タイミングに対応するビットの値が「１」でない場合には、その起動タイミングに対応するプログラム部品に従う処理を実行する。そして、所定の起動タイミングであっても、その起動タイミングに対応するビットの値が「１」である場合には、その起動タイミングに対応するプログラム部品に従う処理を実行を禁止する。
【００４２】
そして最後に、Ｓ１１０にて、カウント値ＣＮＴが「１２８」の倍数であるかどうかを判断することにより、現在「１２８ms毎」の起動タイミングであるかどうかを判断する。ここでカウント値ＣＮＴが「１２８」の倍数である場合には（Ｓ１１０：ＹＥＳ）、「１２８ms用のビット」＝「１」かどうかを判断し（Ｓ１２０）、「２ms用のビット」＝「１」でないとき（Ｓ１２０：ＮＯ）、「１２８ms起動指令を出力」した後（Ｓ１３０）、当該時間同期起動制御処理を終了する。
【００４３】
一方、カウント値ＣＮＴが「１２８」の倍数でないとき（Ｓ１１０：ＮＯ）や、「１２８ms用のビット」＝「１」であるとき（Ｓ１２０：ＹＥＳ）には、「１２８ms起動指令の出力」は行わず、そのまま当該時間同期起動制御処理を終了する。
【００４４】
以上の様に、時間同期起動コントローラに従って行われる時間同期起動制御処理は、自己の起動周期である「１ms」を基本周期として、それを分周することによって、起動タイミングを得ている。即ち、基本周期を１／２分周することによって、周期「２ms」の起動タイミングを得ることができ、基本周期を１／４分周することによって、周期「４ms」の起動タイミングを得る。同様にして基本周期を、所定の割合（１／８，１／１６，１／３２，１／６４，１／１２８）で分周することによって、所定周期（８，１６，３２，６４，１２８）毎の起動タイミングを夫々得ている。
【００４５】
そして、各起動タイミングで起動指令を出力する前（即ち、起動タイミング毎）に、モード判断を行い、通常モード以外の動作モードである場合には、その動作モードには必要がないプログラム部品の呼び出しを禁止しているのである。即ち、Ｓ６０、Ｓ９０，Ｓ１２０が請求項の「起動禁止手段」として機能している。
【００４６】
ところで、本実施例のＥＣＵ２では、こうした時間同期起動コントローラに従う処理とは別に、クランク同期コントローラに従うクランク同期起動制御処理も行われる（図示せず）。クランク角センサ２２は、エンジンのクランク軸の回転に同期した信号（クランク角信号）を出力しており、ＣＰＵ１０では、オペレーションシステムの付加機能により、そのクランク角信号に基づいて、クランク軸の回転角度が計算される。
【００４７】
そして、所定のクランク角度毎（例えば７．５℃Ａ毎）に割込信号が発生される。クランク同期コントローラに従うクランク同期起動制御処理では、その割込信号の発生周期を基本周期とし、これを所定の割合で分周することによって起動タイミング（例えば、「７．５℃Ａ毎」、「１５℃Ａ毎」、「３０℃Ａ毎」、…）を設定する。そして、クランク同期起動制御用に予め用意された、通常モード用、検査モード用および書換モード用のマスクデータ（図示せず）に基づいて、現在の動作モードに応じたプログラム部品に従う処理のみを起動する。つまり、クランク同期コントローラに従う処理は、制御対象物であるエンジンの動作に同期して起動され、エンジンの動作に同期して周期的に所定のプログラム部品を呼び出すのである。
【００４８】
図５は、請求項の「処理手段」としてＣＰＵ１０がプログラム部品に従って行う処理の一例を示すフローチャートであり、この図では、インジェクタの駆動を行うためのインジェクタ駆動処理を示している。上述の様に、本実施例のＥＣＵ２においては、起動コントローラにおいてモード判断を行い、その動作モードに応じたプログラム部品のみが呼び出される。そのため、プログラム部品に従う処理中ではモード判断を行う必要はない。例えば、このインジェクタ駆動処理の如く、起動されると直ちに、インジェクタを駆動するための処理（駆動電流を流す動作など）を行う（Ｓ２００）、というように本来行うべき処理のみを行えばよいことになる。
【００４９】
以上の様に構成された本実施例のＥＣＵ２によれば、所定の起動タイミングとなっても、各プログラム部品の呼び出しを行う前にモード判断を行い、その動作モード（通常モード、検査モード或いは書換モード）において不要なプログラム部品の呼び出しを禁止する（Ｓ６０，Ｓ９０，Ｓ１２０など）。従って、各プログラム部品に従う処理の中でモード判断を行う必要がなくなるため、通常モードにおいては、制御対象物に対する制御処理を効率的に行うことができる。
【００５０】
また、通常モードのみならず、通常モードでない動作モードにおいても、その動作モードに不要なプログラム部品の呼び出しを行わないことから、処理効率が向上する。即ち、一のプログラムに従う処理を行っているときに、他のプログラムに従う処理を呼び出す場合は、現在実行中の当該処理の実行を一時中断し、他の処理の実行を終了した後に、中断していた処理の実行を再開することとなる。中断していた処理の実行を再開するためには、中断直前のＣＰＵの内部状態（即ち、プログラムカウンタや各種レジスタの値）を、ＲＡＭのスタック領域に格納しておくなどの待避処理が必要である。しかし、本発明のＥＣＵ２においては、その動作モードに不要なプログラム部品の呼び出しを行わないことから、こうした待避処理も不要となり、処理負担が軽減されるのである。
【００５１】
また、従来のＥＣＵ２においては、各プログラム部品中にモード判断を行うための処理が記述されていたが、ＥＣＵ２の仕様変更や他機種へプログラム移植を行う際、各動作モードにおける当該プログラム部品の要・不要や、動作モードの有無が変わる場合があるため、そうした場合にモード判断処理を記述した部分の見直しが各プログラム部品毎に必要となっていた。しかし、本発明のＥＣＵ２によれば、モード判断処理を各プログラム部品中に記述する必要はなく、起動プログラム中に記述すればよいことから、上の様な場合であっても、起動プログラムについてのみ見直せばよい。そのため、ＥＣＵ２に使用されるソフトウェアの生産性を向上できるという効果も得られる。
【００５２】
また、本実施例のＥＣＵ２においては、各動作モード（通常モード、検査モード、書換モード）において不要なプログラム部品は、それら各動作モード毎のマスクデータ（図４（ａ））に基づいて判別することができる。従って、仕様変更によって、検査モードや書換モードにおいて不要なプログラム部品であったが、「必要なもの」に変わることがあっても、そのマスクデータの内容を書き換えるだけで対応できる。また、他機種にプログラム移植を行う場合でも、容易に変更することできる。
【００５３】
また、マスクデータを、電気的に書き換え可能な不揮発性メモリであるフラッシュＲＯＭ１４に格納していることから、当該ＥＣＵ２が市場に出荷された後で設定変更が容易となり更に好ましい。
また、本実施例のＥＣＵ２においては、プログラム部品を、起動タイミングが共通のもの毎に（即ち起動タイミングに基づいて、グループ分けを行い、そのグループに含まれるプログラム部品を一まとめにして）、検査モードや書換モードにおいて必要なものと不要なものとに区分している。そしてマスクデータを、起動タイミングに基づいて、各動作モード（通常モード、検査モード、書換モード）において不要なプログラム部品を判別できるように構成している。そして、起動指令の出力前には、モード判断を行い、そのモード判断時の起動タイミングおよび動作モードに基づいて、マスクデータを参照することにより、その動作モードにおいて不要なプログラム部品を判別するよう構成するのである。
【００５４】
つまり、１つ１つのプログラム部品について「その動作モードにおいて必要か不要か」を判断するのではなく、プログラム部品毎に予め設定されている「起動タイミング」に基づき、その起動タイミングを有するプログラム部品全体について「その動作モードにおいて必要か不要か」を判別するのである。このため、こうした判別処理を速やかに行うことができ、更にＥＣＵ２の処理効率を向上させることができる。
【００５５】
また、本実施例のＥＣＵ２においては、検査モード用或いは書換モード用の（即ち、通常モード以外の動作モード用の）マスクデータと同様の形式を有するマスクデータを、通常モード用にも備えており、通常モードには必要のないプログラム部品の呼び出しを禁止するようにしている。そのため、通常モードでは必要がなかったプログラム部品が、仕様変更等により必要なものとなったり、必要であったものが不要となったりした場合であっても容易に対応することができる。
【００５６】
以上、本発明の一実施例について説明したが、本発明は上記実施例に限定される物ではなく、種々の態様を取ることができる。
例えば、上記実施例における電子制御装置では、自動車に搭載するものとして説明したが、これに限られるものではなく、起動プログラム（起動コントローラ）により個別制御プログラム（プログラム部品）を起動させることにより、所定の制御対象物を制御するものであれば、様々な電子制御装置に対して本発明を適用することができる。
【００５７】
また、上記実施例の電子制御装置では、通常モード以外の動作モードとして、検査モードや書換モードを有するものとして説明したが、これらに限られるものではない。
【図面の簡単な説明】
【図１】  一実施例としての電子制御装置の電気的構成を示す説明図である。
【図２】  時間同期起動コントローラに従って、ＣＰＵにより実行される時間同期起動制御処理を示すフローチャートである。
【図３】  ＣＰＵが実行する処理を記述したプログラムの構成を示す説明図である。
【図４】  時間同期起動制御を図る際に使用される各動作モード用のマスクデータ、および、起動周期（起動タイミング）とプログラム部品との対応を規定したテーブルを示す説明図である。
【図５】  プログラム部品（個別処理プログラム）の一例としてのインジェクタ駆動処理を示すフローチャートである。
【図６】  従来のプログラム部品（個別処理プログラム）の一例としてのインジェクタ駆動処理を示すフローチャートである。
【符号の説明】
２…電子制御装置、８…入力回路、１０…ＣＰＵ、１１…クロック発生器、１２…出力回路、 １４…フラッシュＲＯＭ、１６…ＲＯＭ、１８…ＲＡＭ、２０…通信回路、２２…クランク角センサ、２４…インジェクタ。
【図１】
0004277396.tif 000002
【図２】
0004277396.tif 000003
【図３】
0004277396.tif 000004
【図４】
0004277396.tif 000005
【図５】
0004277396.tif 000006
【図６】
0004277396.tif 000007