(57)【要約】車載センサの仕様にかかわらず、自動車用制御プログラムを共通して使用することができる自動車用制御装置を提供する。制御ＰＧ１０２１〜１０２４は、起動ＰＧ１０４により起動される。クランク角センサドライバ１０３１ａは、ＩＯコントローラ３０を介してクランク角センサ５１より送られてくるクランク角センサ信号からイベント発生を検出し、起動ＰＧ１０４に通知する。そして、起動ＰＧ１０４は、クランク角センサドライバ１０３１ａよりのイベント発生通知回数を計測し、前記通知回数が示すクランク角がいずれかの制御ＰＧ１０２１〜１０２４の起動タイミングとなったならば、起動対象の制御ＰＧ１０２１〜１０２４を起動して、制御対象デバイスの制御に必要な制御情報（気筒番号と気筒間時間）をこの起動対象の制御ＰＧ１０２１〜１０２４に渡す。
2003033895.tif 000002
【特許請求の範囲】
【請求項１】
車載装置を制御するための少なくとも１つの自動車用制御プログラムを含む各種プログラムを記憶するメモリと、前記メモリに記憶されているプログラムを実行するプロセッサと、前記車載装置および車載センサと情報を送受するＩＯコントローラと、を有する自動車用制御装置であって、
前記メモリには、
前記少なくとも１つの自動車用制御プログラムに加えて、ＩＯデバイスドライバプログラムおよび制御プログラム起動プログラムが記憶されており、
前記ＩＯデバイスドライバプログラムは、
前記プロセッサに、前記ＩＯコントローラを介して前記車載センサから受け取るセンサ信号を用いてイベント発生タイミングを検出し、前記制御プログラム起動プログラムに、イベント発生を通知する通知処理を実行させ、
前記制御プログラム起動プログラムは、
前記プロセッサに、前記ＩＯデバイスドライバプログラムよりのイベント発生通知回数に応じて、前記少なくとも１つの自動車用制御プログラムのうちの１つを起動する起動処理を実行させること
を特徴とする自動車用制御装置。
【請求項２】
車載装置を制御するための少なくとも１つの自動車用制御プログラムを含む各種プログラムを記憶するメモリと、前記メモリに記憶されているプログラムを実行するプロセッサと、前記車載装置および車載センサと情報を送受するＩＯコントローラと、を有する自動車用制御装置であって、
前記メモリには、
前記少なくとも１つの自動車用制御プログラムに加えて、制御プログラム起動プログラムが記憶されており、
前記ＩＯコントローラは、
前記車載センサから受け取るセンサ信号を用いてイベント発生タイミングを検出し、前記プロセッサにイベント発生を通知する通知処理を行なう機能を有し、
前記制御プログラム起動プログラムは、
前記プロセッサに、前記ＩＯコントローラよりのイベント発生通知回数に応じて、前記少なくとも１つの自動車用制御プログラムのうちの１つを起動する起動処理を実行させること
を特徴とする自動車用制御装置。
【請求項３】
請求項１または２記載の自動車用制御装置であって、
前記メモリには、前記少なくとも１つの自動車用制御プログラムとして、エンジンの点火を制御する点火制御プログラムと、前記エンジンの噴射を制御する噴射制御プログラムと、前記エンジンの吸気を制御する吸気制御プログラムと、前記エンジンの排気を制御する排気制御プログラムとが、記憶されており、
前記車載センサは、
クランク角度センサであり、
前記通知処理は、
前記クランク角度センサから受け取るクランク角センサ信号より求まるクランク角が予め定められた複数の角度のうちのいずれかとなったときをイベント発生タイミングとして検出し、
前記起動処理は、
イベント発生通知回数を計測し、前記イベント発生通知回数より求まるクランク角に応じて、前記点火制御プログラム、前記噴射制御プログラム、前記吸気制御プログラムおよび前記排気制御プログラムのうちの１つを選択して起動すること
を特徴とする自動車用制御装置。
【請求項４】
請求項３記載の自動車用制御装置であって、
前記起動処理は、
イベント発生通知回数に加えてイベント発生通知間隔をも計測し、これらの計測値に基づいて、ピストンがシリンダ内の所定位置にある気筒の気筒番号、および、ある気筒のピストンがシリンダ内の前記所定位置に到達してから他の気筒のピストンがシリンダ内の前記所定位置に到達するまでの時間である気筒間時間を、起動対象の自動車用制御プログラムが利用する制御情報として算出すること
を特徴とする自動車用制御装置。
【請求項５】
請求項３または４記載の自動車用制御装置であって、
前記自動車用制御プログラムは、
次に起動されるき自動車用制御プログラムの起動タイミングを示すクランク角を決定し、当該クランク角を、前記次に起動されるべき自動車用制御プログラムの識別情報と共に、前記制御プログラム起動プログラムに通知し、
前記制御プログラム起動プログラムは、
前記自動車用制御プログラムよりの通知内容に従い、前記自動車用制御プログラムの起動タイミングを示すクランク角を更新すること
を特徴とする自動車用制御装置。
【発明の詳細な説明】
技術分野
本発明は、自動車用制御装置に関し、特に、クランク角度センサからの情報に基づいて点火系装置および噴射系装置を制御するエンジン制御用装置に関する。
背景技術
自動車用制御装置は、車載センサからのセンサ信号に基づいてイベントの発生を検出し、このイベントに同期して車載装置を制御する。例えば、エンジン制御装置では、クランク角度センサからのセンサ信号に同期して、点火系装置や噴射系装置を制御する。このようなエンジン制御装置において、高精度なエンジン制御を実現するためには、クランク角度を精度よく検出することが要求される。特開平５−３３２１８４号公報には、クランク角度を精度良く推定するための技術が開示されている。
発明の開示
ところで、自動車制御装置には、一般に、車載装置を制御するための自動車用制御プログラムを含む各種プログラムを記憶するメモリと、前記メモリに記憶されているプログラムを実行するプロセッサと、前記車載装置および車載センサと情報を送受するＩＯコントローラと、を備えたマイクロプロセッサユニットが用いられる。ここで、従来の自動車用制御装置では、自動車用制御プログラムが、ＩＯコントローラを介して車載センサから送られてくるセンサ信号に基づいて、イベントの発生を検出するようにしていた。つまり、自動車用制御プログラム自体に、センサ信号を処理するためのインターフェースを組込んでいた。
しかしながら、例えば、クランク角度検出のためのセンサ信号は、クランク角度センサの仕様によって異なる。このため、従来は、クランク角度センサの仕様毎に、クランク角度センサからのセンサ信号に同期して、点火系装置や噴射系装置を制御するエンジン制御プログラムを用意しなければならかった。これでは、ソフトウエアの生産効率が悪い。
本発明は、上記事情に鑑みてなされたものであり、本発明の目的は、車載センサの仕様にかかわらず、自動車用制御プログラムを共通して使用することができる自動車用制御装置を提供することにある。
上記課題を解決するために、本発明の自動車制御装置は、車載装置を制御するための少なくとも１つの自動車用制御プログラムを含む各種プログラムを記憶するメモリと、前記メモリに記憶されているプログラムを実行するプロセッサと、前記車載装置および車載センサと情報を送受するＩＯコントローラと、を有する。前記メモリには、前記少なくとも１つの自動車用制御プログラムに加えて、ＩＯデバイスドライバプログラムおよび制御プログラム起動プログラムが記憶されている。
ここで、前記ＩＯデバイスドライバプログラムは、前記プロセッサに、前記ＩＯコントローラを介して前記車載センサから受け取るセンサ信号を用いてイベント発生タイミングを検出し、前記制御プログラム起動プログラムに、イベント発生を通知する通知処理を実行させる。
また、前記制御プログラム起動プログラムは、前記プロセッサに、前記ＩＯデバイスドライバプログラムよりのイベント発生通知回数に応じて、前記少なくとも１つの自動車用制御プログラムのうちの１つを起動する起動処理を実行させる。
本発明によれば、前記自動車用制御プログラムは、前記制御プログラム起動プログラムによって起動される。また、前記制御プログラム起動プログラムは、前記ＩＯデバイスドライバプログラムよりのイベント発生通知回数に応じて、前記少なくとも１つの自動車用制御プログラムのうちの１つを起動する。したがって、前記車載センサの仕様に対応した前記ＩＯデバイスドライバプログラムを用意することにより、前記車載センサの仕様にかかわらず、前記少なくとも１つの自動車用制御プログラムを共通して使用することが可能となる。
なお、本発明において、前記ＩＯデバイスドライバプログラムを用意する代わりに、前記ＩＯコントローラに、前記車載センサから受け取るセンサ信号を用いてイベント発生タイミングを検出し、前記プロセッサにイベント発生を通知する通知処理を行なう機能を設けてもよい。そして、前記制御プログラム起動プログラムが、前記プロセッサに、前記ＩＯコントローラよりのイベント発生通知回数に応じて、前記少なくとも１つの自動車用制御プログラムのうちの１つを起動する起動処理を実行させるようにしてもよい。
また、本発明において、前記自動車用制御プログラムが点火系装置や噴射系装置を制御するためのエンジン制御プログラムである場合、より具体的には、前記少なくとも１つの自動車用制御プログラムとして、前記メモリに、前記エンジンの点火を制御する点火制御プログラム、前記エンジンの噴射を制御する噴射制御プログラム、前記エンジンの吸気を制御する吸気制御プログラム、および、前記エンジンの排気を制御する排気制御プログラムが記憶されている場合、前記車載センサには、クランク角度センサが該当する。
この場合、前記通知処理は、前記クランク角度センサから受け取るセンサ信号より求まるクランク角度が予め定められた複数の角度のうちのいずれかとなったときをイベント発生タイミングとして検出する。また、前記起動処理は、イベント発生通知回数を計測し、前記イベント発生通知回数より求まるクランク角度に応じて、前記点火制御プログラム、前記噴射制御プログラム、前記吸気制御プログラムおよび前記排気制御プログラムのうちの１つを選択して起動する。
このとき、イベント発生通知回数に加えてイベント発生通知間隔をも計測し、これらの計測値に基づいて、ピストンがシリンダ内の所定位置にある気筒の気筒番号、および、ある気筒のピストンがシリンダ内の前記所定位置に到達してから他の気筒のピストンがシリンダ内の前記所定位置に到達するまでの時間である気筒間時間を、起動対象の自動車用制御プログラムが利用する制御情報として算出するようにしてもよい。
発明を実施するための最良の形態
以下に、本発明の一実施形態について説明する。
図１は、本発明の一実施形態が適用されたエンジン制御装置の概略構成図である。
図示するように、本実施形態のエンジン制御装置は、エンジン制御プログラムを含む各種プログラムを記憶するメモリ１０と、メモリ１０に記憶されているプログラムを実行するＣＰＵ２０と、クランク角センサ５１およびエンジンを構成する各装置（プラグ等の点火系デバイス５２、インジェクタ等の噴射系デバイス５３、吸気バルブ等の吸気系デバイス５４および排気バルブ等の排気系デバイス５５）と情報を送受するＩＯコントローラ３０と、これらの各装置１０〜３０を相互接続するバス４０と、を備える。このような構成は、例えばマイクロプロセッサユニットを用いることにより実現できる。
メモリ１０には、本エンジン制御装置を統括的に制御するためのＯＳ１０１と、エンジンを制御するためのエンジン制御ＰＧ（プログラム）群１０２と、ＩＯコントローラ３０に接続された各種デバイスを駆動するためのＩＯデバイスドライバ群１０３と、起動ＰＧ１０４と、が記憶されている。
ＯＳ１０１としては、例えばオー・エス・イー・ケイ（ＯＳＥＫ）発行、オー・エス・イー・ケイ／ブイ・ディー・エックス  オペレーティングシステム（ＯＳＥＫ／ＶＤＸ  ＯＳ）仕様書（バージョン２．１、２０００年）に記載されているＯＳＥＫ−ＯＳの機能（いわゆるリアルタイムＯＳ）を実現するプログラムが利用される。
エンジン制御ＰＧ群１０２には、点火系デバイス５２を制御するための点火制御ＰＧ１０２１と、噴射系デバイス５３を制御するための噴射制御ＰＧ１０２２と、吸気系デバイス５４を制御するための吸気制御ＰＧ１０２３と、排気系デバイス５５を制御するための排気制御ＰＧ１０２４と、が含まれる。
ＩＯデバイスドライバ群１０３には、クランク角センサドライバ１０３１と、点火系ドライバ１０３２と、噴射系ドライバ１０３３と、吸気系ドライバ１０３４と、排気系ドライバ１０３５とを有する。
クランク角センサドライバ１０３１は、ＣＰＵ２０に次の処理を実行させる。すなわち、ＩＯコントローラ３０を介してクランク角センサ５１から送られてくるクランク角センサ信号を受信し、このクランク角センサ信号より求まるクランク角が、予め定めた複数の角度のうちのいずれかになったときに、イベント発生を検出し、起動ＰＧ１０４にイベント発生を通知する。
ここで、このクランク角センサ信号より求まるクランク角が、予め定めた複数の角度のうちのいずれかになったか否かの判断は、クランク角センサ信号と、クランク角センサドライバ１０３１が有するイベント発生条件ＴＢ（テーブル）１０３１ａとを用いて行なう。
図２は、ＩＯコントローラ３０を介してクランク角センサ５１から送られてくるクランク角センサ信号と、イベント発生の検出タイミングとの関係を説明するための図である。
この例において、クランク角センサ信号は２種類の信号Ａ、Ｂで構成されている。クランク角センサ５１は、クランク角が２０度、１１０度、２００度および２９０度のいずれかになると、信号Ａをハイにする。ここで、クランク角が２０度の場合は、他のクランク角の場合に比べてハイレベル時間を長くする。また、クランク角センサ５１は、クランク角の１５度間隔毎に立下るパルス信号Ｂを出力する。
したがって、例えば、信号Ｂの立下りに同期してカウント値を１つ増やし、クランク角が２０度であることを示す信号Ａのハイレベル信号の立上がり後、最初の信号Ｂの立下り（つまり、クランク角が３０度のとき）に同期してカウント値をリセットするように構成されたイベント発生用カウンタを、クランク角センサドライバ１０３１に組込むことで、このイベント発生用カウンタのカウント値からイベント発生を検出することができる。
以上のようなイベント発生用カウンタをクランク角センサドライバ１０３１に組込んだ場合において、例えば、クランク角が９０度、１８０度、２７０度および３６０度（０度）のいずれかになったときに、イベント発生を起動ＰＧ１０４に通知させるには、イベント発生条件ＴＢ（テーブル）１０３１ａに、イベント発生条件として４、１０、１６、２２を登録しておけばよい。そして、図２に示すように、イベント発生用カウンタのカウント値が、イベント発生条件ＴＢ（テーブル）１０３１ａの登録値となったときに、イベント発生をクランク角センサドライバ１０３１から起動ＰＧ１０４へ通知させるようにればよい。
点火系ドライバ１０３２、噴射系ドライバ１０３３、吸気系ドライバ１０３４および排気系ドライバ１０３５は、それぞれＣＰＵ２０に、次の処理を実行させる。すなわち、点火系ドライバ１０３２は、点火制御ＰＧ１０２１よりの指示に従い、点火用コンデンサの通電や点火プラグの点火といった、点火系デバイス５２の駆動を行なう。噴射系ドライバ１０３３は、噴射制御ＰＧ１０２２よりの指示に従い、インジェクタよりの燃料噴射といった、噴射系デバイス５３の駆動を行なう。吸気系ドライバ１０３４は、吸気制御ＰＧ１０２３よりの指示に従い、吸気バルブの開閉といった、吸気系デバイス５４の、駆動を行なう。そして、排気系ドライバ１０３５は、排気制御ＰＧ１０２４よりの指示に従い、排気バルブの開閉といった、排気系デバイス５５の駆動を行なう。
起動ＰＧ１０４は、ＣＰＵ２０に、クランク角センサドライバ１０３１よりのイベント発生通知回数に応じて、エンジン制御ＰＧ群１０２のうちの１つを起動する起動処理を実行させる。ここで、起動ＰＧ１０４は、メモリ１０等に設けられたＣＰＵ２０のワークエリア領域に、制御ＰＧ起動ＴＢ１０４ａを形成する。
図３は、制御ＰＧ起動ＴＢ１０４ａの登録内容例を示す図である。
図示するように、制御ＰＧ起動ＴＢ１０４ａには、エンジンを構成する気筒毎に、エンジン制御ＰＧ群１０２に含まれる各制御ＰＧ１０２１〜１０２４の起動タイミングを示すクランク角を登録するための気筒ＴＢ１０４ｂが設けられている。ここで、初期状態（エンジン制御装置の起動時）では、各気筒ＴＢ１０４ｂに、各制御ＰＧ１０２１〜１０２４の起動タイミングを示すクランク角として、デフォルトの値が設定される。しかし、その後、各制御ＰＧ１０２１〜１０２４よりの指示に従い更新される。
図４を用いて、起動ＰＧ１０４の動作をより詳細に説明する。図４は、起動ＰＧ１０４の動作を説明するためのフロー図である。
まず、起動ＰＧ１０４は、クランク角センサドライバ１０３１よりイベント通知を受け取ると（Ｓ１００１）、クランク角センサドライバ１０３１より前回イベント通知を受け取ってから今回受け取るまでのイベント通知間隔に基づいて、気筒間時間を計算する。そして、この気筒間時間を、メモリ１０等に設けられたＣＰＵ２０のワークエリア領域に登録・更新する（Ｓ１００２）。
ここで、気筒間時間とは、エンジンのある気筒のピストンがシリンダ内の所定位置に到達してから、他の気筒のピストンがシリンダ内の前記所定位置に到達するまでの時間を意味し、エンジンの単位時間当たりの回転数に応じて変化する。この気筒間時間は、エンジン制御ＰＧ群１０２に含まれている各制御ＰＧ１０２１〜１０２４によるエンジン各部の制御に利用される。
なお、ここでは、クランク角の所定角度間隔毎に、クランク角センサドライバ１０３１からイベント通知される場合を前提している。このため、前回のイベント通知および今回のイベント通知のイベント通知間隔（つまりクランク角が所定角度変化するのに要した時間）から、気筒間時間を求めることができる。しかし、クランク角センサドライバ１０３１からのイベント通知がクランク角の所定角度間隔毎でない場合は、例えば、クランク角の１回転分のイベント通知を受け取るのに要した時間を計測しておき、この時間から気筒間時間を求めるようにしてもよい。
次に、起動ＰＧ１０４は、前記ワークエリア領域に登録されているイベント通知回数に１を追加した値が所定値に到達したか否かを調べる（Ｓ１００３）。ここで、所定値は、クランク角が１回転したことを示すイベント通知回数に設定する。例えば、図２に示す例では、所定値は「４」になる。
Ｓ１００３において、前記ワークエリア領域に登録されているイベント通知回数に１を追加した値が所定値に到達したならば、ワークエリア領域に登録されているこのイベント通知回数を「１」に更新する（Ｓ１００４）。到達していないならば、前記ワークエリア領域に登録されているこのイベント通知回数に「１」を追加する（Ｓ１００５）。
次に、起動ＰＧ１０４は、前記ワークエリア領域に登録されているイベント通知回数からクランク角を算出する（Ｓ１００６）。それから、ＰＧ起動ＴＢ１０４ａ内に、算出したクランク角が登録されている気筒ＴＢ１０４ｂがあるか否かを調べる（Ｓ１００７）。そのような気筒ＴＢ１０４ｂがあるならば、この気筒ＴＢ１０４ｂにおいて、算出したクランク角に対応付けられている制御ＰＧ１０２１〜１０２４を起動する（Ｓ１００８）と共に、この気筒ＴＢ１０４ｂに対応する気筒の識別情報である気筒番号と、前記ワークエリア領域に登録されている気筒間時間とを、起動する制御ＰＧ１０２１〜１０２４が使用する制御情報として、当該制御ＰＧ１０２１〜１０２４に渡す（Ｓ１００９）。
これにより、制御ＰＧ１０２１〜１０２４は、気筒間時間に基づいて、気筒番号より特定される気筒を構成する制御対象デバイスの制御タイミングを決定し、制御を行なう。
例えば、点火制御ＰＧ１０２１は、気筒間時間に基づいて、気筒番号より特定される気筒の点火用コンデンサの通電開始タイミングやプラグの点火タイミングを決定する。そして、決定されたタイミングに従い、気筒番号より特定される気筒の点火用コンデンサの通電開始やプラグの点火を行なうように、点火系ドライバ１０３２に指示する。また、噴射制御ＰＧ１０２２は、気筒間時間に基づいて、気筒番号より特定される気筒のインジェクタの噴射開始および終了タイミングを決定する。そして、決定されたタイミングに従い、気筒番号より特定される気筒のインジェクタの噴射開始や噴射終了を行なうように、噴射系ドライバ１０３３に指示する。また、吸気制御ＰＧ１０２３は、気筒間時間に基づいて、気筒番号より特定される気筒の吸気バルブの開閉タイミングを決定する。そして、決定されたタイミングに従い、気筒番号より特定される気筒の吸気バルブの開閉を行なうように、吸気系ドライバ１０３４に指示する。また、排気制御ＰＧ１０２４は、気筒間時間に基づいて、気筒番号より特定される気筒の排気バルブの開閉タイミングを決定する。そして、決定されたタイミングに従い、気筒番号より特定される気筒の排気バルブの開閉を行なうように、吸気系ドライバ１０３５に指示する。
また、制御ＰＧ１０２１〜１０２４は、気筒間時間と、以上のようにして決定した制御対象デバイスの制御タイミングとに基づいて、制御ＰＧ１０２１〜１０２４の次の起動タイミング（クランク角）を決定し、決定内容を起動ＰＧ１０４に渡す。
例えば、制御ＰＧ１０２１〜１０２４は、気筒番号より特定される気筒を構成する制御対象デバイスを次に制御すべき制御ＰＧ１０２１〜１０２４の起動タイミングを決定する。
この場合、吸気制御ＰＧ１０２３は、気筒間時間と吸気バルブの開閉タイミングとに基づいて、噴射制御ＰＧ１０２２を起動すべきクランク角を決定し、この決定したクランク角と前記気筒番号と噴射制御ＰＧ１０２２の識別情報とを起動ＰＧ１０４に渡す。また、噴射制御ＰＧ１０２２は、気筒間時間とインジェクタの噴射開始および終了タイミングとに基づいて、点火制御ＰＧ１０２１を起動すべきクランク角を決定し、この決定したクランク角と前記気筒番号と点火制御ＰＧ１０２１の識別情報とを起動ＰＧ１０４に渡す。また、点火制御ＰＧ１０２１は、気筒間時間と点火用コンデンサの通電開始タイミングおよびプラグの点火タイミングとに基づいて、排気制御ＰＧ１０２４を起動すべきクランク角を決定し、この決定したクランク角と前記気筒番号と排気制御ＰＧ１０２４の識別情報とを起動ＰＧ１０４に渡す。また、排気制御ＰＧ１０２４は、気筒間時間と排気バルブの開閉タイミングとに基づいて、吸気制御ＰＧ１０２３を起動すべきクランク角を決定し、この決定したクランク角と前記気筒番号と吸気制御ＰＧ１０２３の識別情報とを起動ＰＧ１０４に渡す。
あるいは、制御ＰＧ１０２１〜１０２４は、自身が制御対象デバイスを次に制御するための起動タイミングを決定する。
この場合、吸気制御ＰＧ１０２３は、気筒間時間と吸気バルブの開閉タイミングと今回制御する吸気バルブを持つ気筒とに基づいて、自身が次に起動されるべきクランク角を決定し、この決定したクランク角と自身が次回制御する気筒の気筒番号と自身（吸気制御ＰＧ１０２３）の識別情報とを起動ＰＧ１０４に渡す。また、噴射制御ＰＧ１０２２は、気筒間時間とインジェクタの噴射開始および終了タイミングと今回制御するインジェクタを持つ気筒とに基づいて、自身が次に起動されるべきクランク角を決定し、この決定したクランク角と自身が次回制御する気筒の気筒番号と自身（噴射制御ＰＧ１０２２）の識別情報とを起動ＰＧ１０４に渡す。また、点火制御ＰＧ１０２１は、気筒間時間と点火用コンデンサの通電開始タイミングおよびプラグの点火タイミングと今回制御する点火用コンデンサおよびプラグを持つ気筒とに基づいて、自身が次に起動されるべきクランク角を決定し、この決定したクランク角と自身が次回制御する気筒の気筒番号と自身（点火制御ＰＧ１０２１）の識別情報とを起動ＰＧ１０４に渡す。また、排気制御ＰＧ１０２４は、気筒間時間と排気バルブの開閉タイミングと今回制御する排気バルブを持つ気筒とに基づいて、自身が次に起動されるべきクランク角を決定し、この決定したクランク角と自身が次回制御する気筒の気筒番号と自身（排気制御ＰＧ１０２４）の識別情報とを起動ＰＧ１０４に渡す。
さて、起動ＰＧ１０４は、制御ＰＧ１０２１〜１０２４より、クランク角、気筒番号および制御ＰＧの識別情報を受け取ると（Ｓ１０１０）、制御ＰＧ起動ＴＢ１０４ａの中から前記気筒番号に対応する気筒ＴＢ１０４ｂを検索する。そして、検出した気筒ＴＢ１０４ｂに登録されている、前記制御ＰＧ１０２１〜１０２４より受け取った識別情報により特定される制御ＰＧの起動タイミングを示すクランク角を、前記制御ＰＧ１０２１〜１０２４より受け取ったクランク角に更新する（Ｓ１０１１）。
以上、起動ＰＧ１０４の動作について説明した。
次に、起動ＰＧ１０４から制御ＰＧ１０２１〜１０２４への制御情報の通知方法の一例について説明する。
先ず、起動ＰＧ１０４は、メモリ１０等に設けられたＣＰＵ２０のワークエリア領域に、図５に示すような制御情報格納ＴＢ１０４ｃを形成する。ここで、符号１０４１は、制御ＰＧ１０２１〜１０２４の識別情報を格納するためのフィールド、符号１０４２は、制御情報（気筒番号と気筒間時間）を格納するためのフィールドである。
さて、起動ＰＧ１０４は、図４のＳ１００９において、起動対象の制御ＰＧ１０２１〜１０２４のフィールド１０４１に対応付けられているフィールド１０４２に、制御情報（気筒番号と気筒間時間）を格納する。そして、以上のようにして制御情報格納ＴＢ１０４ｃに格納した制御情報を、引数として制御ＰＧ１０２１〜１０２４に渡したり、制御ＰＧ１０２１〜１０２４が処理の中で取得したり、あるいは、制御ＰＧ１０２１〜１０２４の引数に対しデータ格納先のポインタを渡すことにより、起動ＰＧ１０４から制御ＰＧ１０２１〜１０２４へ制御情報を通知する。
図６は、起動ＰＧ１０４が、制御情報を引数として制御ＰＧ１０２１〜１０２４に渡す場合におけるプログラムコードの記述例（Ｃ言語）を示している。Ｃ言語において、データを引数としてアプリケーションに渡す場合、データ値のコピーが行なわれる。このとき、アプリケーションの実行中に、データ値が他のアプリケーションによって破壊される心配がない。
図６において、符号１０４３は、制御情報を引数として制御ＰＧ１０２１〜１０２４に渡すための起動ＰＧ１０４のプログラムコード例を、そして、符号１０４４は、引数に設定された制御情報を起動ＰＧ１０４から受け取るための制御ＰＧ１０２１〜１０２４のプログラムコード例を示している。プログラムコード１０４３により、起動ＰＧ１０４は、起動対象の制御ＰＧ１０２１〜１０２４を指定する（１０４３ａ）と共に、引数に設定する気筒番号および気筒間時間を制御情報格納ＴＢ１０４ｃから入手する（１０４３ｂ）。一方、プログラムコード１０４３により、制御ＰＧ１０２１〜１０２４は、気筒番号と気筒間時間を起動ＰＧ１０４よりコピーする。
図７は、制御ＰＧ１０２１〜１０２４が、処理の実行中に制御情報を起動ＰＧ１０４から取得する場合におけるプログラムコードの記述例（Ｃ言語）を示している。
図７において、符号１０４５は、制御ＰＧ１０２１〜１０２４を起動するための起動ＰＧ１０４のプログラムコード例を、そして、符号１０４６は、制御情報を起動ＰＧ１０４から受け取るための制御ＰＧ１０２１〜１０２４のプログラムコード例を示している。この場合、起動ＰＧ１０４側に、制御情報格納ＴＢ１０４ｃから制御情報を取得するための記述は不要になる（プログラムコード１０４５）。一方、制御ＰＧ１０２１〜１０２４側に、制御情報格納ＴＢ１０４ｃから制御情報を取得するための記述が必要になる（プログラムコード１０４６）。
図８は、起動ＰＧ１０４が、制御情報の格納先ポインタを引数として制御ＰＧ１０２１〜１０２４に渡す場合におけるプログラムコードの記述例（Ｃ言語）を示している。
図８において、符号１０４７は、制御情報の格納先ポインタを引数として制御ＰＧ１０２１〜１０２４に渡すための起動ＰＧ１０４のプログラムコード例を、そして、符号１０４８は、引数に設定された格納先ポインタにある制御情報を受け取るための制御ＰＧ１０２１〜１０２４のプログラムコード例を示している。プログラムコード１０４７により、起動ＰＧ１０４は、気筒番号および気筒間時間を制御情報格納ＴＢ１０４ｃから入手する（１０４７ａ）と共に、入手した気筒番号および気筒間時間の格納先ポインタを指定する（１０４７ｂ）。一方、プログラムコード１０４８により、制御ＰＧ１０２１〜１０２４は、指定された格納先ポインタにある気筒番号と気筒間時間を入手する。
なお、図６〜図８に示す例において、「起動対象の制御ＰＧの識別情報」と示されている部分には、起動対象の制御ＰＧの識別情報を示すコード（図５に示す例では、「ＯｎＰｌｕｇ」、「ＯｎＩｎｊｅｃ」、「ＯｎＩｎｈａ」および「ＯｎＥｘｈａ」のいずれか）が記述される。「処理内容の記述」と示されている部分には、具体的な処理内容を示すコードが記述される。「制御情報取得」と記述されている部分には、制御情報取得命令を示すコードが記述される。そして、「制御情報格納先アドレス」と記述されている部分には、制御情報（ここでは、「ｃｙｒｉｎｄｅｒ＿ｎｕｍｂｅｒ」と「ｃｙｒｉｎｄｅｒ＿ｔｉｍｅ」）のアドレス情報が記述される。
また、図６〜図８に示す例において、制御情報として気筒番号「ｃｙｒｉｎｄｅｒ＿ｎｕｍｂｅｒ」および気筒間時間「ｃｙｒｉｎｄｅｒ＿ｔｉｍｅ」を想定しているが、その他の制御情報も、図６〜図８と同様にすることで、起動ＰＧ１０４から制御ＰＧ１０２１〜１０２４へ通知することができる。
次に、制御ＰＧ１０２１〜１０２４から起動ＰＧ１０４への、制御ＰＧ起動ＴＢ１０４ａ更新内容の通知方法の一例について説明する。
例えば、制御ＰＧ１０２１〜１０２４および起動ＰＧ１０４間に、「Ｓｅｔ”起動対象の制御ＰＧの識別情報”（気筒番号、クランク角）」といったインターフェースを用意する。そして、上記のインターフェースを介して、制御ＰＧ１０２１〜１０２４が起動ＰＧ１０４に、起動対象の制御ＰＧの識別情報、気筒番号およびクランク角を通知することで、起動ＰＧが、制御ＰＧ起動ＴＢ１０４ａ内の前記気筒番号に対応する気筒ＴＢ１０４ｃを特定し、この気筒ＴＢ１０４ｃ内の前記起動対象の制御ＰＧの識別情報に対応する起動タイミングを、前記クランク角に更新する。
以上、本発明の一実施形態について説明した。
本実施形態において、制御ＰＧ１０２１〜１０２４は、起動ＰＧ１０４により起動される。また、起動ＰＧ１０４は、クランク角センサドライバ１０３１ａよりのイベント発生通知回数を計測し、前記通知回数が示すクランク角がいずれかの制御ＰＧ１０２１〜１０２４の起動タイミングとなったならば、起動対象の制御ＰＧ１０２１〜１０２４を起動して、制御対象デバイスの制御に必要な制御情報（気筒番号と気筒間時間）をこの起動対象の制御ＰＧ１０２１〜１０２４に渡す。
したがって、本実施形態によれば、制御ＰＧ１０２１〜１０２４は、クランク角センサ信号を処理するためのインターフェースの代わりに、起動ＰＧ１０４とのインターフェースを用意すればよい。つまり、クランク角センサ５１の仕様に対応したクランク角センサドライバ１０３１ａを用意することにより、クランク角センサ５１の仕様にかかわらず、制御ＰＧ１０２１〜１０２４を共通して使用することが可能となる。
また、本実施形態において、制御ＰＧ１０２１〜１０２４は、気筒間時間と自身が決定した制御対象デバイスの制御タイミングとに基づいて、制御ＰＧ１０２１〜１０２４の次の起動タイミング（クランク角度）を決定し、決定内容を起動ＰＧ１０４に渡すようにしている。そして、起動ＰＧ１０４は、渡された起動タイミングに従って制御ＰＧ１０２１〜１０２４を起動するようにしている。このようにすることで、エンジンの動作状態に応じて制御ＰＧ１０２１〜１０２４の起動タイミングを調節でき、これにより、より細やかなエンジン制御が可能となる。
なお、本発明は、上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。
例えば、上記の実施形態では、クランク角センサドライバ１０３１が、ＩＯコントローラ３０を介してクランク角センサ５１から送られてくるクランク角センサ信号をモニタしてイベント発生を検出し、起動ＰＧ１０４にイベント発生を通知するようにしている。しかし、クランク角センサドライバ１０３１の代わりに、ＩＯコントローラ３０に上記の実行機能を設けてもよい。例えば、日立社製のコントローラ「ＳＨ７０５５Ｆ」に搭載されているコンペアマッチタイマを利用することで、クランク角センサ信号からイベント発生を検出することができる。
また、上記の実施形態において、各制御ＰＧ１０２１〜１０２４は、制御対象デバイスの制御タイミングの演算、次に起動すべき制御ＰＧ１０２１〜１０２４の起動タイミングの演算、および、制御対象デバイスの制御実行を行なうものとして説明した。
しかし、本発明はこれに限定されない。各制御ＰＧ１０２１〜１０２４は、制御対象デバイスの制御タイミングの演算および次に起動すべき制御ＰＧ１０２１〜１０２４の起動タイミングの演算を行なうものとし、制御対象デバイスの制御実行は、別のプログラムが行なうようにしてもよい。例えば、点火制御ＰＧ１０２１は、点火用コンデンサの通電開始タイミングおよびプラグの点火タイミングの演算と、次に起動すべき制御ＰＧ１０２１〜１０２４の起動タイミングの演算とを行ない、点火用コンデンサの通電制御およびプラグの点火制御は、点火制御ＰＧ１０２１とは別に設けられたプログラム（コンデンサ制御ＰＧ、プラグ制御ＰＧ）で行なうようにしてもよい。この場合、点火制御ＰＧ１０２１が、点火用コンデンサの通電開始タイミングおよびプラグの点火タイミングを気筒番号と共に起動ＰＧ１０４に通知し、起動ＰＧ１０４が、イベント通知回数より求まるクランク角が点火用コンデンサの通電開始タイミングあるいはプラグの点火タイミングとなったならば、コンデンサ制御ＰＧあるいはプラグ制御ＰＧに、点火用コンデンサの通電開始あるいはプラグの点火を気筒番号と共に通知する。
このようにすれば、制御対象デバイスの制御実行を行なうプログラムも、制御ＰＧ１０２１〜１０２４と同様に、クランク角センサ信号を処理するためのインターフェースの代わりに、起動ＰＧ１０４とのインターフェースを用意すれば済む。
また、上記の実施形態では、エンジン制御を行なうエンジン制御装置に本発明を適用した場合を例にとり説明したが、本発明は、車載センサからの信号に基づいて車載装置を制御する自動車制御用装置に広く適用できる。
以上説明したように、本発明によれば、車載センサの仕様にかかわらず、自動車用制御プログラムを共通して使用することができる自動車用制御装置を提供できる。
【図面の簡単な説明】
図１は、本発明の一実施形態が適用されたエンジン制御装置の概略構成図である。
図２は、図１において、ＩＯコントローラ３０を介してクランク角センサ５１から送られてくるクランク角センサ信号と、イベント発生の検出タイミングとの関係を説明するための図である。
図３は、図１に示す制御ＰＧ起動ＴＢ１０４ａの登録内容例を示す図である。
図４は、図１に示す起動ＰＧ１０４の動作を説明するためのフロー図である。
図５は、図１に示す起動ＰＧ１０４が形成する制御情報格納ＴＢ１０４ｃの登録内容例を示す図である。
図６は、図１において、起動ＰＧ１０４が、制御情報を引数として制御ＰＧ１０２１〜１０２４に渡す場合におけるプログラムコードの記述例（Ｃ言語）を示す図である。
図７は、図１において、制御ＰＧ１０２１〜１０２４が、処理の実行中に制御情報を起動ＰＧ１０４から取得する場合におけるプログラムコードの記述例（Ｃ言語）を示す図である。
図８は、図１において、起動ＰＧ１０４が、制御情報の格納先ポインタを引数として制御ＰＧ１０２１〜１０２４に渡す場合におけるプログラムコードの記述例（Ｃ言語）を示す図である。
【図１】
2003033895.tif 000003
【図２】
2003033895.tif 000004
【図３】
2003033895.tif 000005
【図５】
2003033895.tif 000006
【図４】
2003033895.tif 000007
【図６】
2003033895.tif 000008
【図７】
2003033895.tif 000009
【図８】
2003033895.tif 000010
【国際調査報告】
2003033895.tif 000011
2003033895.tif 000012
2003033895.tif 000013