(57)【特許請求の範囲】
【請求項１】
浮動小数点型データを演算するための浮動小数点演算機能を有し、所定の制御プログラムに従い各種制御を実施する自動車用電子制御装置において、
浮動小数点型データが非数であるか否かを判定する非数判定手段と、
前記非数判定手段により非数である旨が判定されたとき、浮動小数点演算に代えて、整数型データとして算出された値をパラメータとしたマップデータの補間演算を実施し、これによって得られた補間値をバックアップ値として用いるバックアップ処理を実施するバックアップ手段と、
を備えることを特徴とする自動車用電子制御装置。
【請求項２】
前記非数判定手段は、浮動小数点演算毎にその際に用いられる浮動小数点型データが非数であるか否かを判定することを特徴とする請求項１に記載の自動車用電子制御装置。
【請求項３】
前記非数判定手段は、浮動小数点演算毎に影響を与える浮動小数点型データが非数であるか否かを判定することを特徴とする請求項１に記載の自動車用電子制御装置。
【請求項４】
前記非数判定手段は、全ての浮動小数点型データのうちいずれかが１つでも非数であるか否かを判定することを特徴とする請求項１に記載の自動車用電子制御装置。
【請求項５】
浮動小数点型データが非数であれば、その旨を表す非数判定フラグをその都度セットし、
前記非数判定手段は、非数判定フラグを参照して非数か否かを判定し、前記バックアップ手段は、
前記非数判定フラグの判定結果に応じてバックアップ処理を実施することを特徴とする請求項１〜４のいずれか一項に記載の自動車用電子制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、浮動小数点演算機能を有した自動車用電子制御装置に関するものである。
【０００２】
【従来の技術】
一般に、自動車のエンジン制御などに適用される電子制御装置（ＥＣＵ）では、従来より整数型データ（固定小数点型データ）を用いて各種演算を実施していたが、近年では浮動小数点演算プロセッサ（ＦＰＵ：Floating-Point Unit ）の導入により、浮動小数点型データによる演算が実施できるようになった。浮動小数点型データによれば、固定小数点型データに比べて非常に細かい精度で演算結果が得られる。
【０００３】
浮動小数点型データは例えばＩＥＥＥ７５４規格に従い構成され、図１０（ａ）に示されるようにその内訳として、１ビットの符号部と、８ビットの指数部と、２３ビットの仮数部とを有する。こうして仮数部が２３ビットで構成される４バイト（単精度記憶形式）の浮動小数点型データの場合、７桁の分解能（0.0000001 の分解能）を持つ。
【０００４】
また、図１０（ｂ）には、単精度記憶形式でのビットパターンが示され、浮動小数点型データは、指数部と仮数部の組み合わせにより正規化数、非正規化数、無限大、ゼロ及び非数に区別される。ここで、非数以外は数値を表し、非数は数値でないことを表す。例えば、０／０や＋∞−∞といった数値として表現できない演算結果を表す場合に非数が用いられる。
【０００５】
【発明が解決しようとする課題】
上記の通り浮動小数点型データには非数というデータ形式があり、非数を含む、例えば四則演算の結果は全て非数となり無効となる。例えば、比較演算において非数が１以上か以下かを比較した場合、その結果は何れも偽となる。そのため、電子制御装置内で非数が発生した場合、その演算結果（出力値）は全く保障できないという問題がある。
【０００６】
エンジン制御において非数が発生する条件としては主に２つ考えられる。一つ目の条件は、電子制御装置の動作中やバッテリバックアップ中にノイズにより浮動小数点型のＲＡＭ値が書き換わってＲＡＭ値そのものが非数に変わる場合である。例えば、ノイズにより浮動小数ＲＡＭ値がＦＦＦＦＦＦＦＦｈ（全ビット”１”）に書き換わる場合等である。二つ目の条件は、浮動小数点演算に用いられる引数がノイズ等によって書き換わり、０／０のような演算を行って二次的に非数が発生する場合である。
【０００７】
ここで、図１１に示すエンジン回転数の演算処理にてその事例を説明する。つまり、図１１の処理では、エンジンの３６０°ＣＡ（クランク角）の回転に要した時間Ｔ３６０を算出してそれをＦＲ０値として記憶し（ステップ９００）、ＦＲ０＝０でないことを条件に、「１ｓｅｃ」をＦＲ１に、「６０」をＦＲ２にセットする（ステップ９１０〜９３０）。
【０００８】
その後、演算式
ＦＲ０＝ＦＲ１／ＦＲ０×ＦＲ２
により、ＦＲ０値を算出し（ステップ９４０）、ＦＲ０値をエンジン回転数Ｎｅとする（ステップ９５０）。
【０００９】
上記図１１の処理において、仮にステップ９３０の直後にノイズ等によりＦＲ０，ＦＲ１値が各々０に変化した場合を想定する。この場合、ステップ９４０では「０／０」の演算が行われ、ステップ９４０の演算結果であるＦＲ０値が非数となる。その結果、エンジン回転数が正しく算出できないこととなる。
【００１０】
また例えば、燃料噴射量ｆの演算式は、次式のように示される。
ｆ＝  Ｆbase×ｆＨＬ
ここで、Ｆbaseは、整数型データとして算出された基本噴射量であり、ｆＨＬは、浮動小数点型データとして算出された負荷補正量である。この演算において、負荷補正量ｆＨＬが非数である場合、算出結果の燃料噴射量ｆの値も非数となり、正常な燃料噴射が実施できなくなる。
【００１１】
本発明は、上記問題に着目してなされたものであって、その目的とするところは、浮動小数点演算機能を有した電子制御装置において、非数の発生に伴う制御不良を未然に防止することができる自動車用電子制御装置を提供することである。
【００１２】
【課題を解決するための手段】
請求項１に記載の発明によれば、非数判定手段により、浮動小数点型データが非数であるか否かが判定され、非数である旨が判定されたとき、バックアップ手段により、浮動小数点演算に代えて、整数型データとして算出された値をパラメータとしたマップデータの補間演算が実施され、これによって得られた補間値がバックアップ値として用いられるバックアップ処理が実施される。つまり、浮動小数点演算において、非数を含むデータで実施される演算結果は全て非数となるため、正しい制御データを得ることができなくなるが、本発明では、浮動小数点型データが非数である場合、浮動小数点演算に代わるバックアップ処理が実施される。これにより、非数の発生に伴う制御不良を未然に防止することができる。特に、バックアップ手段が実行するバックアップ処理として、浮動小数点型データに代えて、整数型データとして算出された値をパラメータとしたマップデータの補間演算を実施し、これによって得られた補間値をバックアップ値として用いるため、浮動小数点演算により得られる制御データに比べるとその精度は劣るが、非数発生時に制御が中断されることなく継続できる。すなわちこの場合、浮動小数点型データを用いた浮動小数点演算と比較して演算結果の精度は劣るが、整数型データに応じた制御データ（補間値）をバックアップ値として算出できるので、制御性の悪化を抑制できる。
【００１３】
請求項２に記載の発明によれば、浮動小数点演算毎にその際に用いられる浮動小数点型データが非数であるか否かが判定されるので、その時々の浮動小数点演算が誤りなく実施される。つまり、非数を含む演算により無効となる浮動小数点演算を確実に判定できる。
【００１４】
請求項３に記載の発明によれば、浮動小数点演算毎に影響を与える浮動小数点型データが非数であるか否かが判定される。この場合、浮動小数点演算に影響を与える浮動小数点型データとは、例えば浮動小数点演算の前提条件として用いられるデータであり、この浮動小数点型データが非数の時に、本来の浮動小数点演算とは異なるバックアップ処理を行うことにより、誤って浮動小数点演算が実施され制御性が悪化するといった不都合を回避できる。
【００１５】
請求項４に記載の発明によれば、全ての浮動小数点型データのうちいずれか１つでも非数であるか否かが判定される。つまり、浮動小数点型データのうちのいずれか１つでも非数となる際には、その発生要因（具体的には、ノイズ）がある環境下でマイクロコンピュータが動作していると判断できる。従って、その際には、いつ非数が発生してもおかしくないので、全ての浮動小数点演算が禁止されるとともに、その浮動小数点演算に代わるバックアップ処理が実施される。
【００１６】
請求項５に記載の発明によれば、浮動小数点演算にて得られた浮動小数点型データが非数であれば、その旨を表す非数判定フラグがセットされ、非数判定手段によって、非数判定フラグが参照されることで非数か否かが判定される。そして、非数判定フラグの判定結果によりバックアップ処理が実施される。この場合、同じ浮動小数点型データを複数の浮動小数点演算に用いる場合や、請求項４に記載のように全ての浮動小数点型データのうちいずれか１つでも非数であるか否かを判定する場合に適用すれば、処理を簡素化できるので実用上好ましいものとなる。
【００１９】
【発明の実施の形態】
以下、この発明を具体化した実施の形態を図面に従って説明する。図１は、エンジン制御システムの概略を示すブロック図である。本システムにおいて、車載エンジン１は、例えばガソリン噴射式多気筒内燃機関として構成される。
【００２０】
エンジン制御ＥＣＵ１０はマイクロコンピュータ（以下、マイコンという）１１を備え、そのマイコン１１には中央演算処理装置（ＣＰＵ）１２と、読み書き可能な記憶装置（ＲＡＭ）１３と、読み取り専用記憶装置（ＲＯＭ）１４と、浮動小数点演算プロセッサ（ＦＰＵ）１５と、入出力装置（Ｉ／Ｏ）１６とが設けられている。ここで、ＦＰＵ１５は浮動小数点形式の演算を実施し、ＣＰＵ１２は浮動小数点形式以外の演算を実施する。また、Ｉ／Ｏ１６には周知のＡ／Ｄ変換器が含まれる。
【００２１】
ＥＣＵ１０には、エンジン１に設けられたセンサ群からエンジン運転状態を表す各種情報が入力される。センサ群は、例えばエンジン回転数を検出するための回転数センサ２、吸気管圧力を検出するための吸気圧センサ３、冷却水温を検出するための水温センサ４、排ガス中の酸素濃度から空燃比（Ａ／Ｆ）を検出するためのＡ／Ｆセンサ５などからなる。そして、ＥＣＵ１０は、前記入力されるセンサ信号を基に、図示しないインジェクタによる燃料噴射の制御や、点火装置による点火時期の制御などを実施する。
【００２２】
ＦＰＵ１５により演算される浮動小数点型データは、既述の通り例えばＩＥＥＥ７５４規格に従い構成され、単精度記憶形式であれば図１０（ａ）に示すデータ形式を有する。また、図１０（ｂ）の如く、浮動小数点型データは、指数部と仮数部との組み合わせにより正規化数、非正規化数、無限大、ゼロ及び非数に区別される。
【００２３】
本実施の形態では、ＦＰＵ１５による浮動小数点演算の結果（浮動小数点型データ）が非数になった場合に、その旨を判定し、浮動小数点演算を実施しないようにしている。具体的に、ＦＰＵ１５を用いた浮動小数点演算を実施する処理としては、燃料噴射量の算出処理や、点火時期の算出処理があり、例えば、燃料噴射量ｆは次式のように算出される。
【００２４】
ｆ＝  Ｆbase×ｆＨＬ
ここで、Ｆbaseは、整数型データとして算出された基本噴射量であり、ｆＨＬは浮動小数点型データとして算出された負荷補正量である。従って、ＦＰＵ１５を用いて燃料噴射量ｆを算出する際に、負荷補正量ｆＨＬが非数である場合、その演算結果（噴射量ｆの値）も非数となってしまう。このため、本実施の形態では、負荷補正量ｆＨＬが非数である場合には、ＦＰＵ１５を用いた燃料噴射量ｆの演算を禁止し、それに代わるバックアップ処理にて燃料噴射量ｆを求めるようにしている。
【００２５】
ここで、ＣＰＵ１２により実行される処理のうち、負荷補正量ｆＨＬの算出処理を図２を用い、燃料噴射量算出処理を図３を用いて説明する。なお、図２の処理は、所定時間毎に実施される時間同期処理であり、図３の処理は、回転数センサ２のパルス信号に基づき、所定クランク角毎に実施されるクランク同期処理である。
【００２６】
図２に示すように、ＣＰＵ１２は、ステップ１００にてエンジン回転数が３０００ｒｐｍ以上であるか否かを判定し、３０００ｒｐｍ以上であれば、ステップ１１０に移行する。ステップ１１０にてＣＰＵ１２は、エンジン水温が６０℃以上であるか否かを判定し、６０℃以上であれば、ステップ１２０に移行する。そして、同ステップ１２０にて、ＦＰＵ１５を用い次式のように負荷補正量ｆＨＬを求める。
【００２７】
ｆＨＬ＝ｆＮｅ×ＭＡＦ×ｆＧａｉｎ
ここで、ｆＮｅは、回転数センサ２のパルス信号に基づき浮動小数点型データとして算出されたエンジン回転数であり、ＭＡＦは、吸気圧センサ３の検出値であって、吸気管圧力（吸気圧）に基づく整数型データの電圧値である。また、ｆＧａｉｎは、浮動小数点型データで設定された定数である。
【００２８】
このように、負荷補正の前提条件として、回転数が３０００ｒｐｍ以上、かつ水温が６０℃以上の条件が成立した場合にＦＰＵ１５による浮動小数点演算が実施され、浮動小数点型データの負荷補正量ｆＨＬが算出される。
【００２９】
一方、回転数が３０００ｒｐｍ未満、或いは水温が６０℃未満の場合には、ステップ１００或いはステップ１１０にて否定判別され、ステップ１３０においてＣＰＵ１２は、負荷補正量ｆＨＬに固定値として浮動小数点型データである「１．０」を代入した後本処理を終了する。
【００３０】
次に、噴射量算出処理を図３を用いて説明する。
先ず、ＣＰＵ１２は、ステップ２００にて、エンジン回転数と吸気圧とに基づき整数型データの基本噴射量Ｆbaseを算出し、続くステップ２１０にて、負荷補正量ｆＨＬが非数であるか否かを判定する。つまり、既述のように、負荷補正量ｆＨＬは、浮動小数点型データとして求められており、その補正量ｆＨＬの値のｂｉｔ３０〜２３が”１１１１１１１１”で、かつ、補正量ｆＨＬの値のｂｉｔ２２〜０のうちいずれかが”１”であるか否かを判定する。そして、ステップ２１０にて否定判別された場合、ＣＰＵ１２はステップ２２０に移行して、ＦＰＵ１５を用い、次式の浮動小数点演算にて燃料噴射量ｆを算出する。
【００３１】
ｆ＝ Ｆbase×ｆＨＬ
つまり、燃料噴射量ｆは、基本噴射量Ｆbaseに負荷補正量ｆＨＬを乗算することにより算出され、その値は浮動小数点型データとして算出される。その後、ステップ２３０にてＣＰＵ１２は、算出値が非数か否かを判定し、算出値が非数でない旨を判定した場合、浮動小数点演算にて得られた燃料噴射量ｆの値が正しいものとして本処理を終了する。
【００３２】
一方、ステップ２１０またはステップ２３０にて肯定判別された場合、ＣＰＵ１２は、ステップ２４０に移行して、ＦＰＵ１５を用いることなく整数型データの基本噴射量Ｆbaseを燃料噴射量ｆに代入した後本処理を終了する。
【００３３】
次いで、点火時期ｅの算出処理を図４を用いて説明する。なお、同処理にて使用される負荷補正量ｅＨＬも前記燃料噴射量ｆの算出処理における負荷補正量ｆＨＬと同様に浮動小数点演算により求められた浮動小数点型データである。
【００３４】
先ず、ＣＰＵ１２は、ステップ３００にて、エンジン回転数と吸気圧とに基づき整数型データの基本点火時期Ｅbaseを算出し、続くステップ３１０にて、負荷補正量ｅＨＬが非数であるか否かを判定する。そして、ステップ３１０にて否定判別された場合、ＣＰＵ１２はステップ３２０に移行して、ＦＰＵ１５を用い次式の浮動小数点演算にて点火時期ｅを算出する。
【００３５】
ｅ＝Ｅbase×ｅＨＬ
つまり、点火時期ｅは、基本点火時期Ｅbaseに負荷補正量ｅＨＬを乗算することにより算出され、その値は浮動小数点型データとして算出される。その後、ステップ３３０にてＣＰＵ１２は、算出値が非数か否かを判定し、算出値が非数でない旨を判定した場合、浮動小数点演算にて得られた点火時期ｅの値が正しいものとして本処理を終了する。
【００３６】
一方、ステップ３１０またはステップ３３０にて肯定判別された場合、 ＣＰＵ１２は、ステップ３４０に移行して、ＦＰＵ１５を用いることなく整数型データの基本点火時期Ｅbaseを点火時期ｅに代入した後本処理を終了する。
【００３７】
なお、本実施の形態では、図３のステップ２１０，２３０、図４のステップ３１０，３３０の処理が非数判定手段に相当し、図３のステップ２４０、図４のステップ３４０の処理がバックアップ手段に相当する。
【００３８】
以上詳述した本実施の形態によれば、以下に示す効果が得られる。
（１）浮動小数点演算に使用される浮動小数点型データ（負荷補正量ｆＨＬ，ｅＨＬ）が非数である場合、その浮動小数点演算に代わるバックアップ処理が実施される。この場合、浮動小数点演算において非数を含む四則演算の結果は非数となり無効となるが、浮動小数点演算に用いられる浮動小数点型データが非数であるとき、その無効となる浮動小数点演算を禁止することができる。このようにすれば、制御データとしての燃料噴射量ｆ、点火時期ｅが非数となることを回避でき、非数の発生に伴う制御不良を未然に防止することができる。
【００３９】
（２）本実施の形態では、非数の発生時のバックアップ処理として、整数型データの基本噴射量Ｆbaseを燃料噴射量ｆに、整数型データの基本点火時期Ｅbaseを点火時期ｅに代入するようにした。つまり、制御データのバックアップ値として制御に支障のない値を代入するようにしている。このようにすれば、バックアップ処理に伴うＲＯＭ容量の増加を抑制できる。
【００４０】
以下に、本発明における第２〜第４の実施の形態を説明する。但し、第２〜第４の実施の形態におけるＥＣＵ１０の構成は、図１に示す第１の実施の形態と同じであり、ＣＰＵ１２により実行される処理が第１の実施の形態と異なる。
【００４１】
（第２の実施の形態）
本発明における第２の実施の形態を図５及び図６を用いて説明する。
上記第１の実施の形態では、浮動小数点演算に使用される浮動小数点型データ（負荷補正量ｆＨＬ）が非数であるか否かを判定するものであったが、本実施の形態では、演算に使用される浮動小数点型データではなく、その演算に影響を与える浮動小数点型データが非数であるか否かを判定している。また、本実施の形態において、負荷補正量ｆＨＬは、加速時、減速時で異なる演算式で算出されるようになっており、加速または減速の判定は、負荷変化量に相当するパラメータｆＤＬにより判定されている。同パラメータｆＤＬは、エンジン回転数及び吸気圧に基づいて算出された浮動小数点型データであって、パラメータｆＤＬが正の値であれば加速を意味し、負の値であれば減速を意味する。
【００４２】
ここで、本実施の形態における負荷補正量ｆＨＬの算出処理を図５を用いて説明する。図５のフローチャートは、前記図２の一部を変更したものであり、図５のステップ１００，１１０，１３０は共通の処理を示す。
【００４３】
要するに、エンジン回転数が３０００ｒｐｍ未満、または水温が６０℃未満のいずれかの条件が成立した場合（ステップ１００、ステップ１１０において否定判別された場合）、ステップ１３０にて負荷補正量ｆＨＬに固定値として浮動小数点型データである「１．０」を代入し本処理を終了する。
【００４４】
一方、エンジン回転数が３０００ｒｐｍ以上、かつ水温が６０℃以上である場合、ステップ４００にて、ＣＰＵ１２は、パラメータｆＤＬが非数であるか否かを判定する。そして、 パラメータｆＤＬが非数でない旨が判定された場合、ＣＰＵ１２はステップ４１０に移行して、パラメータｆＤＬを用いて加速または減速かを判定する。ここで、パラメータｆＤＬが「０」よりも大きい値であれば、ステップ４２０に進みＦＰＵ１５を用い加速時の浮動小数点演算（ｆＮｅ×ＭＡＦ×ｆＧａｉｎ１）を実施して、浮動小数点型データの負荷補正量ｆＨＬを算出した後本処理を終了する。また、パラメータｆＤＬが「０」以下の値であれば、ステップ４３０に進みＦＰＵ１５を用い減速時の浮動小数点演算（ｆＮｅ×ＭＡＦ×ｆＧａｉｎ２）を実施して、浮動小数点型データの負荷補正量ｆＨＬを算出した後本処理を終了する。なお、ｆＧａｉｎ１は、浮動小数点型データで設定された加速用の定数であり、ｆＧａｉｎ２は、浮動小数点型データで設定された減速用の定数である。
【００４５】
一方、ステップ４００にてパラメータｆＤＬが非数である旨が判定された場合は、ステップ４４０に移行して、整数型データの固定値「１」を負荷補正量ＦＨＬに代入した後本処理を終了する。なおここで、整数型データの負荷補正量ＦＨＬは、ＲＡＭ１３において、浮動小数点型データの負荷補正量ｆＨＬとは別に確保された記憶領域に格納される。
【００４６】
次に、本実施の形態における噴射量算出処理を図６を用いて説明する。図６のフローチャートは、前記図３の一部を変更したものであり、図６のステップ２００，２２０，２３０，２４０は共通の処理を示す。
【００４７】
つまり、ステップ２００にて基本噴射量Ｆbaseを算出した後、ステップ５００にて、負荷変化量に相当するパラメータｆＤＬが非数であるか否かを判定する。そして、パラメータｆＤＬが非数である旨が判定された場合、ＣＰＵ１２はステップ５１０にて、ＦＰＵ１５を用いることなく整数型データの固定値「１」を代入した負荷補正量ＦＨＬと基本噴射量Ｆbaseとを乗算することにより燃料噴射量ｆ（＝Ｆbase×ＦＨＬ）を算出する。
【００４８】
一方、ステップ５００にてパラメータｆＤＬが非数でない旨が判定された場合、ＣＰＵ１２はステップ２２０にて、ＦＰＵ１５を用いた浮動小数点演算にて燃料噴射量ｆ（＝Ｆbase×ｆＨＬ）を算出する。そして、ＣＰＵ１２はステップ２３０にて、算出値が非数であるか否かを判定し、非数でなければ本処理を終了し、非数であれば、ステップ２４０にて、燃料噴射量ｆとして基本噴射量Ｆbaseを代入した後本処理を終了する。
【００４９】
なお、本実施の形態では、図５のステップ４００、図６のステップ５００及びステップ２３０の処理が非数判定手段に相当し、図５のステップ４４０、図６のステップ５１０及びステップ２４０の処理がバックアップ手段に相当する。
【００５０】
要するに、浮動小数点演算に影響を与える浮動小数点データ、即ち、浮動小数点演算の前提条件として用いられる浮動小数点型データが非数である場合、前提条件を正しく判定できずに誤って浮動小数点演算が実施されるおそれがある。これに対し、本実施の形態では、前提条件として用いられる浮動小数点型データが非数である旨が判定されたとき、浮動小数点演算に代わる処理が実施される。その結果、誤って浮動小数点演算が実施され不的確な制御データが算出されることでエンジン１の制御性が悪化するといった不都合を回避できる。
【００５１】
（第３の実施の形態）
次に、本発明における第３の実施の形態を図７及び図８を用いて説明する。
本実施の形態では、全ての浮動小数点型データのうちいずれか一つでも非数となったとき、全ての浮動小数点演算が禁止され、それに代わるバックアップ処理が実施されるようになっている。
【００５２】
その具体例として、先ず、燃料噴射量ｆの算出処理を図７を用いて説明する。図７のフローチャートは、前記図３の一部を変更したものであり、図７のステップ２００，２２０，２３０，２４０は共通の処理を示す。
【００５３】
図７では、非数判定フラグＸＡＬＬを用いており、同フラグＸＡＬＬは、全ての浮動小数点型データのうちいずれかが一つでも非数となったときに「１」がセットされる。例えば、負荷補正量ｆＨＬやｅＨＬ等を算出するための浮動小数点演算の処理（図示略）において、浮動小数点演算の算出値が非数である場合、非数判定フラグＸＡＬＬに「１」がセットされる。
【００５４】
図７のフローチャートについて詳述すると、ステップ２００にて基本噴射量Ｆbaseを算出した後、ＣＰＵ１２はステップ６００に移行して、非数判定フラグＸＡＬＬが「１」であるか否かを判定する。そして、非数判定フラグＸＡＬＬが「０」である旨が判定されたとき、ＣＰＵ１２はステップ２２０に移行して、ＦＰＵ１５を用い浮動小数点演算にて燃料噴射量ｆ（＝Ｆbase×ｆＨＬ）を算出するとともに、ステップ２３０にて算出値が非数であるか否かを判定する。そして、ステップ２３０にて、演算値が非数でない旨を判定したとき本処理を終了し、非数である旨を判定したとき、ステップ６１０に移行して非数判定フラグＸＡＬＬに「１」をセットする。そして、ステップ２４０に移行し燃料噴射量ｆとして基本噴射量Ｆbaseを代入した後本処理を終了する。
【００５５】
また、非数判定フラグＸＡＬＬに「１」がセットされた場合、ステップ６００にて肯定判定され、ステップ２４０にて燃料噴射量ｆとして基本噴射量Ｆbaseを代入した後本処理を終了する。つまり、非数判定フラグＸＡＬＬに「１」がセットされると、ステップ２２０の浮動小数点演算を迂回して、浮動小数点演算に代わるバックアップ処理として、ステップ２４０の処理が実施される。
【００５６】
次に、点火時期ｅの算出処理を図８を用いて説明する。図８のフローチャートは、前記図４の一部を変更したものであり、図８のステップ３００，３２０，３３０，３４０は共通の処理を示す。
【００５７】
図８の処理においても、ステップ３２０の浮動小数点演算を行う前に、ステップ７００にて、非数判定フラグＸＡＬＬが「１」であるか否かを判定する。そして、非数判定フラグＸＡＬＬが「１」である旨を判定したとき、ステップ３２０の浮動小数点演算を迂回し、ステップ３２０の浮動小数点演算に代わるバックアップ処理として、ステップ３４０にて点火時期ｅに基本点火時期Ｅbaseをセットする。また、ステップ３２０の浮動小数点演算による算出値が非数である旨を判定したとき、ステップ７１０に移行して非数判定フラグＸＡＬＬに「１」をセットした後、ステップ３４０の処理を実施する。
【００５８】
つまり、本実施の形態では、エンジン制御に用いられる全ての浮動小数点演算において、その演算結果が非数である旨が判定されたとき、共通の非数判定フラグＸＡＬＬをセットするようにしている。そして、浮動小数点演算について、その演算が実施される前に、非数判定フラグＸＡＬＬがセットされているか否かを判定し、そのフラグＸＡＬＬがセットされていれば、全ての浮動小数点演算を禁止して、それに代わるバックアップ処理を実施するようにしている。
【００５９】
なお、本実施の形態では、図７のステップ２３０、ステップ６００、図８のステップ３３０、ステップ７００の処理が非数判定手段に相当し、図７のステップ２４０、図８のステップ３４０の処理がバックアップ手段に相当する。
【００６０】
実際に、浮動小数点型データのうちいずれかが１つでも非数となる際には、その発生要因（具体的には、ノイズ）がある環境下でマイコン１１が動作していると判断できる。従って、その際には、いつ非数が発生してもおかしくないので、全ての浮動小数点演算が禁止されるとともに、その浮動小数点演算に代わるバックアップ処理が実施される。
【００６１】
また、本実施の形態では、非数判定フラグＸＡＬＬを用いて、非数であるか否かを判定するようにしているので、全ての浮動小数点データについてその値により非数であるか否かを判定する場合と比較して、処理を簡素化でき実用上好ましいものとなる。
【００６２】
上述の通り、いずれかの浮動小数点データで非数が発生し、それに伴いフラグＸＡＬＬがセットされた場合において、ノイズ等の非数発生要因が解消され、浮動小数点データが正常な値に戻った時には、フラグＸＡＬＬをリセットして本来の浮動小数点演算を再開するよう構成してもよい。これにより、ノイズ等に起因して一時的に非数が発生する際に、バックアップ処理が長時間継続されることはなく、高精度な浮動小数点演算に復帰できる。
【００６３】
（第４の実施の形態）
次に、本発明における第４の実施の形態を図９を用いて説明する。図９のフローチャートは、前記図２の一部を変更したものであり、図１０のステップ１００〜１３０は共通の処理を示す。
【００６４】
詳述すると、エンジン回転数が３０００ｒｐｍ未満、水温が６０℃未満のいずれかの条件が成立した場合（ステップ１００、ステップ１１０において否定判別された場合）、ステップ１３０にて負荷補正量ｆＨＬに固定値として浮動小数点型データである「１．０」を代入し本処理を終了する。一方、エンジン回転数が３０００ｒｐｍ以上、かつ水温が６０℃以上である場合（ステップ１００、ステップ１１０のいずれも肯定判別された場合）、ＣＰＵ１２はステップ８００に進み、浮動小数点型データとして算出されたエンジン回転数ｆＮｅが非数であるか否かを判定する。そして、エンジン回転数ｆＮｅが非数でない旨を判定したとき、ステップ１２０にて、ＦＰＵ１５を用い浮動小数点演算を実施して、浮動小数点型データの負荷補正量ｆＨＬ（ｆＮｅ×ＭＡＦ×ｆＧａｉｎ ）を算出した後に本処理を終了する。一方、エンジン回転数ｆＮｅが非数である旨を判定したとき、ＣＰＵ１２はステップ８１０にて、ＦＰＵ１５を用いることなく、整数型データとして算出されたエンジン回転数Ｎｅと整数型データの吸気圧ＭＡＦとをパラメータとしたマップデータの補間演算を実施する。そして、ＣＰＵ１２は、整数型データとして得られた補間値を変換することにより浮動小数点型データとして負荷補正量ｆＨＬに代入し、本処理を終了する。
【００６５】
なお、本実施の形態では、ステップ８００の処理が非数判定手段に相当し、ステップ８１０の処理がバックアップ手段に相当する。
このように、本実施の形態では、浮動小数点型データが非数である旨が判定されたとき、浮動小数点演算に代えて、整数型データを用いた演算が実施される。この場合、浮動小数点演算と比較して演算結果の精度は劣るが、整数型データに対応した制御データをバックアップ値として算出できるので、実用上好ましいものとなる。
【００６６】
なお本発明は、上記以外に次の形態にて具体化できる。
上記第１の実施の形態において、図３のステップ２１０では、浮動小数点型データの負荷補正量ｆＨＬの値により非数であるか否かを判定していたが、フラグを用いて判定してもよい。つまり、図２のステップ１２０における浮動小数点演算の算出値が非数である場合、負荷補正量ｆＨＬが非数である旨を示す非数判定フラグをセットし、図３のステップ２１０にて、同フラグを参照することによって負荷補正量ｆＨＬが非数か否かを判定する。同様に、図４のステップ３１０、図５のステップ４００等の処理においても、非数判定フラグを用い浮動小数点型データが非数であるか否かを判定してもよい。この場合、非数判定フラグを参照することによって、浮動小数点型データが非数であるか否かを判定できる。よって、同じ浮動小数点型データを複数の浮動小数点演算に用いる場合に適用すれば、処理を簡素化できるので実用上好ましいものとなる。
【００６７】
上記第２の実施の形態では、浮動小数点演算に影響を与える浮動小数点型データとして、パラメータｆＤＬに具体化したがこれに限定するものではない。例えば、浮動小数点演算を実施するための前提条件として、空燃比補正量等の浮動小数点型データを用いる場合、その空燃比補正量が非数であるか否かを判定し、非数であれば浮動小数点演算を禁止して、それに代わるバックアップ処理を実施する。
【００６８】
また例えば、浮動小数点演算毎に影響を与える浮動小数点型データが非数であるか否かを判定するものとして、非数発生時に、点火制御、噴射制御等の各種制御毎に区分して非数判定を行うようにする。具体的には、点火制御、噴射制御等の各種制御毎に、共通の非数判定フラグを用意し、例えば、点火制御の浮動小数点演算にて、非数が発生したとき点火制御用の非数判定フラグをセットし、その非数判定フラグを用いて、点火制御にて実施される全ての浮動小数点演算を禁止する。このようにしても、非数の発生により浮動小数点演算に悪影響が及ぶことを防止できる。
【００６９】
上記各実施の形態では、単精度記憶形式の浮動小数点型データを扱う電子制御装置（ＥＣＵ）１０について例示したが、倍精度記憶形式の浮動小数点型データを扱う電子制御装置にも適用できる。
【００７０】
以上の説明では自動車用エンジン制御を例に本発明を述べたが、このように自動車の走行に関与する電子制御装置に本発明を適用することで、自動車の制御システムの信頼性を高めることができる。
【図面の簡単な説明】
【図１】発明の実施の形態におけるエンジン制御システムの概要を示すブロック図。
【図２】第１の実施の形態における負荷補正量算出処理を示すフローチャート。
【図３】第１の実施の形態における噴射量算出処理を示すフローチャート。
【図４】第１の実施の形態における点火時期算出処理を示すフローチャート。
【図５】第２の実施の形態における負荷補正量算出処理を示すフローチャート。
【図６】第２の実施の形態における噴射量算出処理を示すフローチャート。
【図７】第３の実施の形態における噴射量算出処理を示すフローチャート。
【図８】第３の実施の形態における点火時期算出処理を示すフローチャート。
【図９】第４の実施の形態における負荷補正量算出処理を示すフローチャート。
【図１０】浮動小数点型データの構成を示す図。
【図１１】回転数演算処理を示すフローチャート。
【符号の説明】
１０…エンジン制御ＥＣＵ（電子制御装置）、１１…マイコン、１２…ＣＰＵ、１５…ＦＰＵ（浮動小数点演算プロセッサ）。
【図１】
0003644350.tif 000002
【図２】
0003644350.tif 000003
【図３】
0003644350.tif 000004
【図４】
0003644350.tif 000005
【図５】
0003644350.tif 000006
【図６】
0003644350.tif 000007
【図７】
0003644350.tif 000008
【図８】
0003644350.tif 000009
【図９】
0003644350.tif 000010
【図１０】
0003644350.tif 000011
【図１１】
0003644350.tif 000012