(57)【特許請求の範囲】
【請求項１】
浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置において、
前記制御プログラム中で繰り返し実行される浮動小数点型データの演算処理であって、
前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「非数」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を実行し、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする電子制御装置。
【請求項２】
浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置において、
前記制御プログラム中で繰り返し実行される浮動小数点型データの演算処理であって、
前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「無限大」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を実行し、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする電子制御装置。
【請求項３】
浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置において、
前記制御プログラム中で繰り返し実行される浮動小数点型データの演算処理であって、
前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「非数」又は「無限大」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を実行し、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする電子制御装置。
【請求項４】
請求項１〜３の何れか１項に記載の電子制御装置において、
前記追従処理は、前記目標値との偏差に基づき、前記演算結果を目標値に収束させる処理であることを特徴とする電子制御装置。
【請求項５】
請求項１〜３の何れか１項に記載の電子制御装置において、
前記追従処理は、前記目標値を基準として、当該目標値の前後で前記演算結果を振動させる処理であること
を特徴とする電子制御装置。
【請求項６】
請求項１〜５の何れか１項に記載の電子制御装置において、
当該装置は車両用の電子制御装置であると共に、前記制御対象は車両に設けられる車載機器であり、
前記演算処理は、前記車載機器の制御に用いられる制御値を前記演算結果として算出する処理であること、
を特徴とする電子制御装置。
【請求項７】
浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置に搭載される制御プログラムにおいて、
繰り返し実行される浮動小数点型データの演算処理であって、前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「非数」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を備えており、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする制御プログラム。
【請求項８】
浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置に搭載される制御プログラムにおいて、
繰り返し実行される浮動小数点型データの演算処理であって、前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「無限大」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を備えており、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする制御プログラム。
【請求項９】
浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置に搭載される制御プログラムにおいて、
繰り返し実行される浮動小数点型データの演算処理であって、前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「非数」又は「無限大」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を備えており、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする制御プログラム。
【請求項１０】
請求項７〜９の何れか１項に記載の制御プログラムにおいて、
前記追従処理は、前記目標値との偏差に基づき、前記演算結果を目標値に収束させる処理であること
を特徴とする制御プログラム。
【請求項１１】
請求項７〜９の何れか１項に記載の制御プログラムにおいて、
前記追従処理は、前記目標値を基準として、当該目標値の前後で前記演算結果を振動させる処理であること
を特徴とする制御プログラム。
【請求項１２】
請求項７〜１２の何れか１項に記載の制御プログラムにおいて、
当該プログラムは、前記制御対象として、車両に設けられる車載機器を制御するための制御プログラムであり、
前記演算処理は、前記車載機器の制御に用いられる制御値を前記演算結果として算出する処理であること、
を特徴とする制御プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、浮動小数点演算機能を備えた電子制御装置に関する。
【０００２】
【従来の技術】
近年、高性能マイクロプロセッサの出現などエレクトロニクス技術の進歩を背景として、機械技術と電子技術とが結びついたメカトロニクス技術の進歩が著しい。メカトロニクスの進歩の一部として、自動車等の車両にも多くのコンピュータシステムが採用されてきている。このような車載用のコンピュータシステムは、省資源、省エネルギー、走行性能、安全性、快適性等を追求するものであり、車両内のエンジン・駆動系、走行・安全系、エンターテイメント系、及びその他の随所に搭載されている。
【０００３】
このようなコンピュータシステムは、電子制御装置（ＥＣＵ）の単位で車両に搭載されている。そして最近では、電子制御装置が、浮動小数点演算プロセッサ（ＦＰＵ：Floating-Point Unit ）を搭載するのが一般的になっている。浮動小数点演算プロセッサを搭載することにより、浮動小数点型データによる演算が可能となり、固定小数点型データに比べて細かい精度で演算結果が得られるからである。
【０００４】
浮動小数点型データは、当業者の間ではよく知られたものであり、種々の規格でデータ形式が決まっている。例えば、ＩＥＥＥ７５４規格に従う単精度の浮動小数点型データは、１ビットの符号部、８ビットの指数部、２３ビットの仮数部で構成されており、この計４バイトのデータが７桁の分解能を有することになる。
【０００５】
そして、このような浮動小数点型データでは、「０／０」や「＋∞−∞」といった、数値として表現できない演算結果を「非数」として表現できるようになっている。例えば上記規格では、仮数部が「０」以外で８ビットの指数部が全て「１」の場合を「非数」として取り扱うことが定められている。
【０００６】
ところで、このような「非数」は、上述したような演算に関係なく、演算時や読み出し時などにおけるノイズの影響によっても生じることがある。すなわち、指数部が全て「１」に書き換えられてしまった場合に、仮数部が「０」でなければ、「非数」となってしまう。
【０００７】
そして、このような「非数」が生じると、この「非数」を用いた演算結果は全て「非数」となってしまう。したがって、「非数」が発生した場合には、短時間のうちに「非数」を正常値に書き換える必要がある。
そこで、これを解決するための手法として、従来より、▲１▼：タイマ割込などを用いて、浮動小数点型データの格納領域に「非数」があるか否かを一括して検索し、「非数」が発見された場合には、その「非数」に対してデフォルト値を代入する、という手法や、▲２▼：上記▲１▼と同様に、浮動小数点型データの格納領域に「非数」があるか否かを一括して検索し、「非数」が発見された場合には、ＣＰＵリセットを行い、初期化ルーチンを起動して浮動小数点型データを全て初期化する、という手法がある。
【０００８】
なお、上述した手法▲１▼，▲２▼は、コンピュータシステムにおいて通常行われる一般的なものであり、公知・公用の技術に該当するので、特に先行技術文献は開示しない。
【０００９】
【発明が解決しようとする課題】
しかしながら、上記▲１▼の手法では、メモリ領域を圧迫してしまうという問題がある。
ここで、その理由について説明する。
【００１０】
まず、個別具体的に「非数」の発生を考える。
（１）Ａ＋Ｂ→Ｃ、すなわちＡとＢとの和をＣに代入する演算処理の場合
この場合、もし、演算結果であるＣが「非数」となれば、そのＣを用いた他の演算結果も「非数」となってしまう。しかしながら、その後、Ａ，Ｂが「非数」とならなければ、次にこの演算処理が行われた場合、Ｃは正常値に復帰することになる。つまり、この場合には、短時間のうちにＣ及びＣを用いた演算結果が自然と正常値に書き換えられることとなる。
【００１１】
（２）Ａ＋Ｂ→Ａ、すなわちＡとＢとの和をＡに代入する演算処理の場合
この場合、演算結果であるＡが「非数」となれば、Ａを用いたその後の演算結果は全て「非数」となってしまう。そしてこのときは、次にこの演算処理が行われても、「非数」となったＡを用いてＡを算出するため、Ａが正常値に復帰することはない。つまり、この場合には、Ａ及びＡを用いた演算結果が正常値に書き換えられることがない。
【００１２】
このように、上記（２）の如く前回の演算結果を用いて今回の演算結果を算出する演算処理の場合に、「非数」の発生が問題となることが分かる。
ところが、上記▲１▼の手法では、上記（１）の場合のように自然と「非数」から正常値に復帰し得る浮動小数点型データの各々に対しても、予めデフォルト値を用意しておくこととなり、そのデフォルト値の記憶に非常に多くのメモリ領域が必要となってしまうのである。
【００１３】
一方、ＣＰＵをリセットする上記▲２▼の手法では、デフォルト値を準備しておく必要はないものの、動作中のシステムを一時的にせよ停止させることとなるため、制御の信頼性向上という面から妥当でない。
なお、上記各問題は、「非数」だけでなく「無限大」の場合も同様に生じる。例えば上記ＩＥＥＥ７５４規格に従う４バイトの浮動小数点型データは、仮数部が「０」で８ビットの指数部の全てが「１」のときに、「無限大」として扱われる。
【００１４】
本発明は、このような問題を解決するためになされたものであり、メモリ領域を圧迫することなく、また、動作中のシステムを停止させることなく、「非数」や「無限大」を示す浮動小数点型データを短時間で正常値に復帰させること目的とする。
【００１５】
【課題を解決するための手段及び発明の効果】
本発明の電子制御装置は、浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能である。
そして特に、前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、チェック処理を実行する。
【００１６】
この演算処理は、制御プログラム中で繰り返し実行される浮動小数点型データの演算処理であり、チェック処理とは、演算結果が「非数」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するものである。
つまり、演算結果が一度「非数」になると、正常値に復帰する可能性のない、上記（２）のような演算処理に対して、演算結果が「非数」か否かのチェックを行い、「非数」であれば、その演算結果を示す浮動小数点型データのみにデフォルト値の代入を行うのである。
【００１７】
これによって、「非数」を示す浮動小数点型データを短時間で正常値に復帰させることができる。そしてこのときは、全ての浮動小数点型データに対してデフォルト値を用意しておく必要がなく、メモリ領域を圧迫することがない。さらに、動作中のシステムを停止させることがないため、制御の信頼性を低下させることもない。
【００１８】
なお、このようなチェック処理は、演算結果が「非数」になった場合だけでなく、「無限大」となった場合に行うものとすることが考えられる（請求項２）。これによって、「無限大」を示す浮動小数点型データを短時間で正常値に復帰させることができる。もちろん、演算結果が「非数」又は「無限大」になった場合の両方をチェックするものとしてもよい（請求項３）。これによって、「非数」や「無限大」を示す浮動小数点型データを短時間で正常値に復帰させることができる。
【００１９】
さらに、上記各請求項１，２，３においては、上述した演算処理が、演算結果を所定の目標値に追従させる追従処理であり、チェック処理において、上述のデフォルト値として、目標値を代入するようにしている。具体的に、追従処理は、目標値との偏差に基づき、演算結果を目標値に収束させる処理であることが考えられる（請求項４）。また、目標値を基準として、当該目標値の前後で演算結果を振動させる処理であることが考えられる（請求項５）。前者のように演算結果が目標値に収束する場合はもちろん、後者のように、目標値の前後を演算結果が振動する場合でも、目標値は演算結果のとり得る値であるため、演算結果に固定値を代入する場合と比べ、目標値を代入することが制御上妥当である。そして、制御処理において繰り返し算出される目標値を用いているため、デフォルト値としての固定値を記憶しておく必要がなく、メモリ領域を圧迫する可能性をさらに小さくすることができる。
【００２０】
次に、請求項６に記載の電子制御装置は、請求項１〜５の電子制御装置において、当該装置は車両用の電子制御装置であると共に、前記制御対象は車両に設けられる車載機器であり、更に、前記演算処理は、前記車載機器の制御に用いられる制御値を演算結果として算出する処理であることを特徴としている。
【００２１】
そして、このような電子制御装置によれば、前記演算処理によって算出される制御値が「非数」や「無限大」になって制御対象としての車載機器の挙動が予測できないものとなってしまうことを、メモリ領域を圧迫することなく且つ動作を一時停止させることなく、確実に防止することができるようになる。
【００２２】
本発明においては、特に、前記演算処理が、演算結果としての制御値を所定の目標値に追従させる追従処理であると共に、チェック処理では、上述のデフォルト値として、目標値を代入する、という構成を採用したものであり、この場合、目標値は、本来、制御値のとり得る値であるため、例えば、制御値が目標値へ到達する前に「非数」又は「無限大」となった場合には、その制御値が速やかに目標値へと設定されることとなり、制御値の目標値への追従が正常時よりも遅れてしまうことが防止されるため、制御対象としての車載機器の挙動を速やかに目標の状態へと変化させることができる。また例えば、制御値が目標値へ到達した後に「非数」又は「無限大」となった場合には、その制御値が速やかに正常時と同じ目標値へと再設定されることとなるため、制御対象としての車載機器の挙動を正常時と同じものにすることができる。
【００２３】
以上は、電子制御装置の発明として説明してきたが、本発明は、特定の演算処理に対して実行されるチェック処理に特徴を有する。したがって、制御プログラムの発明として実現することもできる（請求項７以下）。このような制御プログラムの場合、例えば、フロッピー（登録商標）ディスク、ＭＯ、ＤＶＤ、ＣＤ−ＲＯＭ、ハードディスク等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じて電子制御装置のコンピュータシステムにロードして起動することにより用いることができる。この他、ＲＯＭやバックアップＲＡＭに、制御プログラムを記録しておき、このＲＯＭあるいはバックアップＲＡＭをコンピュータに組み込んで用いてもよい。
【００２４】
【発明の実施の形態】
以下、本発明を具体化した一実施例を図面を参照して説明する。
図１は、本発明の「電子制御装置」を具体化したエンジン制御装置（以下「エンジンＥＣＵ」という。）１の構成を表すブロック図である。エンジンＥＣＵ１は、車両に搭載された内燃機関型エンジン（制御対象としての車載機器に相当）の制御を行う。
【００２５】
エンジンＥＣＵ１は、エンジンのクランク軸が所定角度回転する毎にパルス状の信号を出力する回転角センサ、エンジンの特定の気筒のピストンが所定位置（例えば上死点：ＴＤＣ）にくる度にパルス状の信号を出力する基準位置センサ、エンジンの冷却水の温度を検出する水温センサ、及び酸素濃度を計測する酸素濃度センサ等、エンジンの運転状態を検出する様々なセンサ３０からの信号を入力して波形整形やＡ／Ｄ変換を行う入力回路２１と、入力回路２１からのセンサ信号に基づき、エンジンを制御するための様々な処理を実行するマイコン１０と、マイコン１０からの制御データに応じて、エンジンに取付けられたインジェクタ（燃料噴射装置）及びイグナイタ（点火装置）等のアクチュエータ４０を駆動する出力回路２２とを、備えている。
【００２６】
そして、マイコン１０には、制御プログラムを実行する周知のＣＰＵ１１と、ＣＰＵ１１によって実行される制御プログラムを記憶するＲＯＭ１２と、ＣＰＵ１１による演算結果等を記憶するためのＲＡＭ１３と、浮動小数点演算を実行するＦＰＵ１４と、Ｉ／Ｏや各種レジスタ、フリーランカウンタ等（図示省略）とが備えられている。
【００２７】
このように構成されたエンジンＥＣＵ１は、各種センサ３０から入力回路２１を介して入力される信号に基づき、出力回路２２に接続されたアクチュエータ４０を駆動する、エンジン制御処理を行う。
そして、このようなエンジン制御処理は、上述したようにＲＯＭ１２に記憶される制御プログラムに基づいてなされるが、ＦＰＵ１４による浮動小数点演算によって、精度の高い制御が可能となる。
【００２８】
この浮動小数点演算は浮動小数点型データを用いた演算であり、このため、ＲＡＭ１３には、浮動小数点型データの格納領域が確保される。図２に示す如くである。ここでは、変数ＲａｍＡ，ＲａｍＢ，・・・，ＲａｍＣが浮動小数点型データであり、ＲａｍＤ，・・・がその他の型のデータとして格納されている。
【００２９】
浮動小数点型データは、当業者の間ではよく知られたものであり、種々の規格でデータ形式が決まっている。例えば、ＩＥＥＥ７５４規格に従う単精度の浮動小数点型データは、図３（ａ）に示すように、１ビットの符号部、８ビットの指数部、２３ビットの仮数部で構成されており、この計４バイトのデータが７桁の分解能を有することになる。
【００３０】
そして、この規格の浮動小数点データでは、数値として表現できない「非数」や「無限大」が、図３（ｂ）のように示される。つまり、指数部の８ビットが全て「１」であり、すなわち指数部が１０進表記で「２５５」であり、仮数部が「０」以外のときが「非数」、仮数部が「０」のときが「無限大」を示すことになっている。
【００３１】
「非数」や「無限大」は、演算時や読み出し時などにおけるノイズの影響によっても生じることがある。すなわち、指数部が全て「１」に書き換えられてしまった場合である。
ところが、制御プログラム中で繰り返し実行される演算処理の中で、前回の演算結果を用いて今回の演算結果を算出する演算処理では、演算結果を示す浮動小数点型データが一度「非数」や「無限大」になってしまうと、次の演算結果も「非数」や「無限大」になってしまう。その結果、演算結果の異常が継続してしまうことになる。
【００３２】
具体的には、演算結果を示す浮動小数点型の変数ＲａｍＡを目標値に追従させる、なまし演算などが一例として挙げられる。これは、次の式１に示すようなものである。
「ＲａｍＡ＝（目標値−ＲａｍＡ）×Ｋ＋ＲａｍＡ」…式１
なお、「＝」は、右辺の演算結果を左辺へ代入することを意味する。また、定数Ｋは「なまし係数」である。
【００３３】
上記式１に示した演算においては、前回の演算結果ＲａｍＡ（右辺にあるもの）を用いて、今回の演算結果ＲａｍＡ（左辺にあるもの）を算出するため、変数ＲａｍＡが一度「非数」や「無限大」になると、その後の演算結果は全て「非数」や「無限大」となってしまう。
【００３４】
そこで、本実施例では、このような前回の演算結果を用いて今回の演算結果を算出するような演算処理に対し、チェック処理を行うようにした。
図４は、上記式１の演算処理に対応して設けられたチェック処理を示すフローチャートである。
【００３５】
まず最初のステップ（以下、ステップを単に記号Ｓで示す。）１００において、変数ＲａｍＡが「非数」であるか否かを判断する。例えば、変数ＲａｍＡがＩＥＥＥ７５４規格に従う単精度の浮動小数点型データであれば、変数ＲａｍＡの指数部が「２５５」であり、かつ、仮数部が「０」でない場合を「非数」として判断する（図３（ｂ）参照）。ここで変数ＲａｍＡが「非数」であると判断された場合（Ｓ１００：ＹＥＳ）、Ｓ１３０へ移行する。一方、変数ＲａｍＡが「非数」でないと判断された場合（Ｓ１００：ＮＯ）、Ｓ１１０へ移行する。
【００３６】
Ｓ１１０では、変数ＲａｍＡが「無限大」であるか否かを判断する。例えば、変数ＲａｍＡがＩＥＥＥ７５４規格に従う単精度の浮動小数点型データであれば、変数ＲａｍＡの指数部が「２５５」であり、かつ、仮数部が「０」である場合を「無限大」として判断する（図３（ｂ）参照）。ここで変数ＲａｍＡが「無限大」であると判断された場合（Ｓ１１０：ＹＥＳ）、Ｓ１３０へ移行する。一方、変数ＲａｍＡが「無限大」でないと判断された場合（Ｓ１００：ＮＯ）、Ｓ１２０へ移行する。
【００３７】
変数ＲａｍＡが「非数」、「無限大」のいずれでもないと判断された場合に移行するＳ１２０では、上記式１に示した通常の演算処理を行い、その後、本チェック処理を終了する。
一方、変数ＲａｍＡが「非数」又は「無限大」であると判断された場合に移行するＳ１３０では、変数ＲａｍＡに目標値を代入し、その後、本チェック処理を終了する。
【００３８】
ここで目標値を代入するのは、上記式１で示した演算処理が、図５（ａ）に示すように、目標値に演算結果が収束する、なまし演算だからである。もちろん、目標値などがない場合は、ここで固定的なデフォルト値を代入すればよい。
なお、厳密に言うと、図４の例では、Ｓ１００，Ｓ１１０，及びＳ１３０の処理が、本発明におけるチェック処理に相当している。
【００３９】
以上のように本実施例のエンジンＥＣＵ１では、前回の演算結果を用いて今回の演算結果を算出する特定の演算処理（Ｓ１２０）に対して、図４のＳ１１０，Ｓ１１０，及びＳ１３０からなるチェック処理を実行するようにしているため、「非数」や「無限大」を示す浮動小数点型データを短時間で正常値に復帰させることができる。
【００４０】
特に、例えば図２に示したＲＡＭ１３の浮動小数点型データの格納領域に「非数」があるか否かを一括して検索し、「非数」の発見時にその「非数」に対してデフォルト値を代入する、といった前述の手法▲１▼のように、ＲＡＭ１３内の全ての各浮動小数点型データに対してデフォルト値を用意しておく必要がないため、メモリ領域を圧迫することがない。また更に、前述した手法▲２▼のように、動作中のシステムを停止させることがないため、制御の信頼性を低下させることもない。
【００４１】
しかも、演算結果が目標値に追従するような処理では、デフォルト値として、目標値を代入するようにした。このようにすれば、固定値をデフォルト値とする場合と比べ、妥当な制御が期待できる。そして、制御プログラムにおいて算出される目標値を用いれば、デフォルト値としての固定値を記憶しておく必要がなく、メモリ領域を圧迫する可能性をさらに小さくすることができる。
【００４２】
次に、上記図４のような処理を実行することによる効果を一層明らかにするために、本実施例のエンジンＥＣＵ１で実行される噴射量補正処理の内容について、図６のフローチャートを用い説明する。
まず、以下に説明する噴射量補正処理は、制御プログラム中の他の処理で算出されている基本燃料噴射量Ｔｂａに補正係数Ｆｓｍを乗ずることで、インジェクタを駆動するのに実際に用いる燃料噴射量Ｔを算出するものであり、一定時間毎に実行される。なお、もちろん、燃料噴射量Ｔ、基本燃料噴射量Ｔｂａ、及び補正係数Ｆｓｍの各々は、浮動小数点型データである。そして更に、この噴射量補正処理では、補正係数Ｆｓｍを、下記の式２に示すなまし演算により、アクセル開度が全開か否かによって２通りの値に設定される目標値Ｆｔｇにゆっくりと追従するように算出している。
【００４３】
「Ｆｓｍ＝（Ｆｔｇ−Ｆｓｍ）×Ｋ＋Ｆｓｍ」…式２
なお、式２は、前述した式１のＲａｍＡをＦｓｍに置き換えると共に、式１の目標値をＦｔｇに置き換えたものである。また、以下の説明において、燃料噴射量Ｔ、基本燃料噴射量Ｔｂａ、及び補正係数Ｆｓｍの各々は、前述した図４の変数ＲａｍＡと同様に、ＩＥＥＥ７５４規格に従う単精度の浮動小数点型データであるものとする。
【００４４】
図６の噴射量補正処理の実行が開始されると、まずＳ２１０にて、アクセル開度が全開であるか否かを判定し、アクセル開度が全開でなければ、Ｓ２２０に進んで、補正係数Ｆｓｍの目標値Ｆｔｇを通常値（この例では１．０）に設定する。
【００４５】
また、上記Ｓ２１０でアクセル開度が全開であると判定した場合には、Ｓ２３０に移行して、補正係数Ｆｓｍの目標値Ｆｔｇを上記通常値よりも大きい値（この例では１．５）に設定する。
そして、上記Ｓ２２０又はＳ２３０で目標値Ｆｔｇの値を設定すると、Ｓ２４０に進んで、補正係数Ｆｓｍが「非数」であるか否かを判断する。つまり、前述した図４のＳ１００と同様に、補正係数Ｆｓｍの指数部が「２５５」であり、かつ、仮数部が「０」でなければ、「非数」であると判断する。
【００４６】
ここで、補正係数Ｆｓｍが「非数」であると判断した場合には（Ｓ２４０：ＹＥＳ）、Ｓ２７０へ移行する。
また、補正係数Ｆｓｍが「非数」でないと判断した場合には（Ｓ２４０：ＮＯ）、Ｓ２５０へ移行する。
【００４７】
そして、Ｓ２５０では、補正係数Ｆｓｍが「無限大」であるか否かを判断する。つまり、前述した図４のＳ１１０と同様に、補正係数Ｆｓｍの指数部が「２５５」であり、かつ、仮数部が「０」であれば、「無限大」であると判断する。
ここで、補正係数Ｆｓｍが「無限大」であると判断した場合には（Ｓ２５０：ＹＥＳ）、Ｓ２７０へ移行する。
【００４８】
また、補正係数Ｆｓｍが「無限大」でないと判断した場合には（Ｓ２５０：ＮＯ）、Ｓ２６０へ移行する。
よって、Ｓ２６０へは、補正係数Ｆｓｍが「非数」と「無限大」との何れでもないと判断した場合に移行することとなる。そして、このＳ２６０では、上記式２に示したなまし演算処理により、今回の補正係数Ｆｓｍを算出する。
【００４９】
一方、補正係数Ｆｓｍが「非数」又は「無限大」であると判断した場合には、Ｓ２７０に移行することとなり、このＳ２７０では、補正係数Ｆｓｍに目標値Ｆｔｇを代入する。
尚、上記Ｓ２６０での式２のなまし演算に用いられる目標値Ｆｔｇの値と、上記Ｓ２７０で補正係数Ｆｓｍに代入される目標値Ｆｔｇの値は、上記Ｓ２２０又はＳ２３０で現在設定されている値（即ち、１．０又は１．５）である。
【００５０】
そして、上記Ｓ２６０又はＳ２７０の処理を行った後、Ｓ２８０に移行して、下記の式３により、基本燃料噴射量Ｔｂａと補正係数Ｆｓｍとから燃料噴射量Ｔを算出し、その後、本噴射量補正処理を終了する。
「燃料噴射量Ｔ＝基本燃料噴射量Ｔａｂ×補正係数Ｆｓｍ」…式３
つまり、この噴射量補正処理では、図７又は図８の破線に示すように、アクセル開度が全開になったことを検出すると（Ｓ２１０：ＹＥＳ）、補正係数Ｆｓｍの目標値Ｆｔｇを、１．０から１．５に増加させて（Ｓ２３０）、通常時よりも燃料噴射量Ｔが大きくなるようにし、また、アクセル開度が全開でないことを検出すると（Ｓ２１０：ＮＯ）、補正係数Ｆｓｍの目標値Ｆｔｇを１．０に戻して（Ｓ２２０）、燃料噴射量Ｔの増量補正を止めるようにしている。
【００５１】
そして、図７（ａ）又は図８（ａ）の実線に示すように、この噴射量補正処理においても、前述した図４のＳ１２０と同様に、Ｓ２６０のなまし演算処理により、補正係数Ｆｓｍを緩やかに目標値Ｆｔｇへと追従させるようにして、燃料噴射量Ｔの急変を抑制している。
【００５２】
そして更に、この噴射量補正処理においても、図４のＳ１００，Ｓ１１０，及びＳ１３０と同様の、Ｓ２４０，Ｓ２５０，及びＳ２７０からなるチェック処理により、なまし演算の演算結果である補正係数Ｆｓｍが「非数」又は「無限大」であると判断した場合には、その補正係数Ｆｓｍに目標値Ｆｔｇを代入するようにしている。
【００５３】
よって、このような噴射量補正処理を実行するエンジンＥＣＵ１によれば、なまし演算処理によって算出される制御値としての補正係数Ｆｓｍが「非数」又は「無限大」になってエンジンの挙動が予測できないものとなってしまうことを、メモリ領域を圧迫することなく且つ動作を一時停止させることなく、確実に防止することができる。
【００５４】
そして特に、図６の噴射量補正処理では、補正係数Ｆｓｍが「非数」又は「無限大」であると判断した場合に（Ｓ２４０：ＹＥＳ又はＳ２５０：ＹＥＳ）、その補正係数Ｆｓｍに目標値Ｆｔｇを代入するようにしているため（Ｓ２７０）、例えば、図７（ｂ）における時刻ｔａに示すように、補正係数Ｆｓｍが目標値Ｆｔｇ（ここでは１．５）に到達する前に「非数」又は「無限大」となった場合には、その補正係数Ｆｓｍは、速やかに目標値Ｆｔｇへと設定されることとなる。
【００５５】
よって、補正係数Ｆｓｍの目標値Ｆｔｇへの追従が正常時よりも遅れてしまうことが防止され、その結果、制御対象としてのエンジンの挙動を速やかに目標の状態へと変化させることができる。
また例えば、図８（ｂ）における時刻ｔｂに示すように、補正係数Ｆｓｍが目標値Ｆｔｇ（ここでは１．５）へ到達した後に「非数」又は「無限大」となった場合には、その補正係数Ｆｓｍは、速やかに正常時と同じ目標値Ｆｔｇへと再設定されることとなる。よって、エンジンの挙動を正常時と同じものにすることができる。
【００５６】
尚、図６のＳ２７０において、補正係数Ｆｓｍに、目標値Ｆｔｇではなく、予め定めた固定値を代入するように構成しても、エンジンの挙動が予測できないものとなってしまうことを防止することができる。
但し、補正係数Ｆｓｍに固定値を代入するように構成した場合には、上記図７（ｂ）及び図８（ｂ）に示した効果が得られないという点で不利な面もある。
【００５７】
例えば、補正係数Ｆｓｍに代入する固定値が１．０であるとする。
この場合、図７（ｃ）に示すように、補正係数Ｆｓｍが目標値Ｆｔｇに到達する前の時刻ｔａで「非数」又は「無限大」となったならば、その補正係数Ｆｓｍは、一旦、目標値Ｆｔｇ（ここでは１．５）ではない固定値（＝１．０）に設定されてから、目標値Ｆｔｇへと接近していくこととなる。
【００５８】
よって、補正係数Ｆｓｍの目標値Ｆｔｇへの追従が正常時よりも遅れてしまうことととなり、その結果、エンジンの挙動を目標の状態へと変化させるのに時間がかかってしまう可能性がある。具体的な現象として、図７（ｃ）に示す状況が発生した場合には、補正係数Ｆｓｍが目標値Ｆｔｇよりも小さい期間が長くなるため、燃料噴射量Ｔが少な目になってしまい、アクセル全開に対するレスポンスが悪くなる可能性がある。
【００５９】
また、図８（ｃ）に示すように、補正係数Ｆｓｍが目標値Ｆｔｇへ到達した後の時刻ｔｂで「非数」又は「無限大」となったならば、その補正係数Ｆｓｍは、目標値Ｆｔｇ（ここでは１．５）ではない固定値（＝１．０）に設定されてから、再び、その固定値から目標値Ｆｔｇへと接近していくこととなり（つまり、なまし演算がやり直されることとなり）、エンジンの挙動が正常時のものから多少なりとも変化してしまう。
【００６０】
このようなことから、補正係数Ｆｓｍが「非数」又は「無限大」であると判断した場合には、その補正係数Ｆｓｍに目標値Ｆｔｇを代入するように構成するのが好ましい。尚、上記図６の例では、補正係数Ｆｓｍが、制御対象としての車載機器の制御に用いられる制御値に相当している。
【００６１】
以上、本発明の一実施例について説明したが、本発明は前述した実施例に何等限定されるものではなく、本発明の主旨を逸脱しない範囲において種々なる形態で実施し得る。
（イ）上記実施例で例示したチェック処理では、「非数」及び「無限大」のチェックを行っていたが、少なくともいずれか一方のチェックを行うようにしてもよい。
【００６２】
また、「非数」及び「無限大」の両方のチェックを図４中のＳ１００，Ｓ１１０又は図６中のＳ２４０，２５０で別々に行っていたが、変数ＲａｍＡ又は補正係数ＦｓｍがＩＥＥＥ７５４規格に従う浮動小数点型データであれば、一つにまとめることもできる。つまり、例えば単精度の浮動小数点型データの場合、指数部が「２５５」であれば、そのデータは「非数」又は「無限大」であると判断することができるからである。また、このようなことは、倍精度の浮動小数点型データについても同様である。
【００６３】
さらにまた、図４中のＳ１００やＳ１１０の判断処理を、Ｓ１２０の演算処理の後で実行したり、同様に、図６中のＳ２４０やＳ２５０の判断処理を、Ｓ２６０の演算処理の後で実行するようにしてもよい。
（ロ）上記実施例では、演算結果が目標値に徐々に収束するような、なまし演算を例に挙げて説明した。
【００６４】
これに対して、例えば、図５（ｂ）に示すような目標値に基づくフィードバック制御の演算処理においても、デフォルト値として、目標値を採用することができる。演算結果ＲａｍＡが最終的に目標値に収束するからである。
また例えば、図５（ｃ）に示すように、目標値を基準として変数ＲａｍＡが振動するような演算処理に対しても、デフォルト値として、目標値を採用することができる。図５（ｃ）中に記号Ｐで示したように、変数ＲａｍＡが目標値をとり得るからである。
【図面の簡単な説明】
【図１】  実施例のエンジンＥＣＵの概略構成を示すブロック図である。
【図２】  ＲＡＭに格納される浮動小数点型データを示す説明図である。
【図３】  ＩＥＥＥ７５４規格の浮動小数点型データを示す説明図である。
【図４】  チェック処理を例示する説明図である。
【図５】  演算処理における目標値と演算結果との関係を示す説明図である。
【図６】  エンジンＥＣＵで実行される噴射量補正処理を表すフローチャートである。
【図７】  図６の噴射量補正処理の作用を説明する図のその１である。
【図８】  図６の噴射量補正処理の作用を説明する図のその２である。
【符号の説明】
１…エンジン制御装置（エンジンＥＣＵ）    １０…マイコン
１１…ＣＰＵ                                １２…ＲＯＭ
１３…ＲＡＭ                                １４…ＦＰＵ
２１…入力回路                              ２２…出力回路
３０…センサ                                ４０…アクチュエータ
【図１】
0004329332.tif 000002
【図２】
0004329332.tif 000003
【図３】
0004329332.tif 000004
【図４】
0004329332.tif 000005
【図５】
0004329332.tif 000006
【図６】
0004329332.tif 000007
【図７】
0004329332.tif 000008
【図８】
0004329332.tif 000009