(57)【要約】【課題】浮動小数点演算機能を有する電子制御装置において、浮動小数点演算により非数が発生した際には、演算により求められた変数同士の相関関係を保持し、処理負荷を大きくすることなく非数による制御不良を防止する。【解決手段】浮動小数点演算プロセッサが演算した浮動小数点型データを保存するＲＡＭ１５の記憶領域３１を複数の記憶部３２Ａに分割し、幾つかの連続した記憶部３２Ａの集合であるブロック（吸気制御ブロック３３Ａ、噴射制御ブロック３３Ｂ等）を制御単位で割り当てておく。ここで、各制御が終了する度に、ブロック単位で記憶部３２Ａに非数３２Ｂがあるか否かを判定し、非数３２Ｂがあると判定すると、ブロックの先頭アドレスからブロックの終了アドレスまでを一括して初期化する。この結果、変数同士の相関関係を保持し、ＲＡＭ１５の初期化の際の処理負荷を軽減しながら、非数３２Ｂ発生時の制御不良を防ぐことができる。【選択図】図５
2008152801.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点型データを演算する浮動小数点演算手段を有し、所定の制御プログラムに従った制御を実行する電子制御装置において、
複数の浮動小数点型データを記憶可能なブロックの集合から成るメモリと、
前記浮動小数点演算手段により演算された浮動小数点型データを前記メモリの所定のブロックに記憶させる書込み手段と、
前記浮動小数点演算手段により演算された浮動小数点型データが非数であるか否かを判定する非数判定手段と、
前記メモリに記憶された浮動小数点型データをブロック単位で初期化する初期化手段と、
を備え、
前記浮動小数点演算手段は、複数の制御対象に対して、それぞれ浮動小数点演算を実行し、
前記メモリのブロックは、前記浮動小数点演算手段が実行する制御単位毎に定められており、
前記非数判定手段は、前記浮動小数点演算手段による複数の浮動小数点演算が前記ブロック単位で終了する毎に前記浮動小数点型データが非数であるか否かを判定し、
前記初期化手段は、前記非数判定手段が前記浮動小数点型データを非数であると判定した場合に、前記メモリの内、前記書込み手段が前記非数を書き込むブロックを選択的に初期化すること
を特徴とする電子制御装置。
【請求項２】
前記非数判定手段は、
前記浮動小数点演算手段による演算毎に該演算された浮動小数点型データが非数であるか否かを判定し、非数であれば非数である旨のフラグを立てるフラグ制御手段と、
前記フラグを参照することによって浮動小数点型データが非数であるか否かを判定するフラグチェック手段と、
を備えたことを特徴とする請求項１に記載の電子制御装置。
【請求項３】
前記書込み手段が浮動小数点型データを書き込むメモリ内のブロックは、前記メモリを複数に分割して設定されているメモリ領域のうち、連続したメモリ領域により構成されていることを特徴とする請求項１または請求項２に記載の電子制御装置。
【請求項４】
前記初期化手段は前記メモリのブロックに既定値を書き込むことにより前記ブロックを初期化することを特徴とする請求項１〜請求項３の何れかに記載の電子制御装置。
【請求項５】
当該電子制御装置は、自動車のエンジン制御のために搭載されるエンジン制御装置であることを特徴とする請求項１〜請求項４の何れかに記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、浮動小数点演算機能を備えた電子制御装置に関する。
【背景技術】
【０００２】
従来より、浮動小数点型データを用いて演算を行う装置として、自動車のエンジン制御等に使用される電子制御装置が知られている。
この電子制御装置では、浮動小数点演算プロセッサ（ＦＰＵ）を用いて、浮動小数点型データの演算を実施しているので、固定小数点型データを用いる場合と比べて、非常に高精度な演算が可能である。
【０００３】
また、浮動小数点演算を実行する際の固有の問題として、非数（数値ではない値）が発生した場合、非数が発生した後の演算が全て非数となり、制御不能になる虞があるため、制御不能にならないようにするために、次のような電子制御装置が開発されている（例えば、特許文献１および特許文献２参照）。
【０００４】
特許文献１に記載の電子制御装置では、浮動小数点型データを記憶するＲＡＭ全体の中に非数があるか否かを判定し、ＲＡＭ内に非数があると判定すれば、ＲＡＭ全体を一括して初期化することにより、この装置が制御不能になることを回避していた。
【０００５】
また、特許文献２に記載の電子制御装置では、ＲＡＭ内の非数が発生した部分のみを初期化し、ＲＡＭ内の非数を消去することにより、この装置が制御不能になることを回避していた。
【特許文献１】特開２００１−１８４１９２号公報
【特許文献２】特開２００１−２８２５０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載の電子制御装置では、ＲＡＭ内を一括して初期化しており、非数の影響が及ばないＲＡＭ内の領域までも初期化を行うので、初期化に伴う処理負荷が大きくなり、初期化に時間がかかるという問題点があった。また反対に、ＲＡＭ内の非数が発生した部分のみを初期化すると、ある条件の場合には、必ずある値を一定値にするといった相関関係がある制御を行う場合に、この相関関係を保持できなくなるという問題点があった。
【０００７】
また、特許文献２に記載の電子制御装置では、非数発生時に固定小数点のバックアップ演算に移行してしまうため、高度な演算が行えなくなると同時に、バックアップ処理に膨大なＲＯＭを消費する可能性がある。
【０００８】
上記であげた相関関係を具体的に説明すると次のようなものがある。例えば、エンジンの燃料噴射量の制御において、燃料噴射量の変数と、燃料カットフラグの値との間には、前述の相関関係があり、燃料カットフラグがＯＮのときには、燃料噴射量の変数は必ず０に設定することになっている。しかし、燃料カットフラグの値に非数が発生し、この値のみの初期化を行うと、燃料噴射量の変数に０以外の値が入ってしまうことがある。このようになると、燃料噴射量の変数と、燃料カットフラグの値との間の相関関係が崩れてしまうので、燃料噴射制御としては好ましくない。
【０００９】
そこで、このような問題点を鑑み、浮動小数点演算機能を有する電子制御装置において、浮動小数点演算により非数が発生した際には、演算により求められた変数同士の相関関係を保持し、処理負荷を大きくすることなく非数による制御不良を防止することを本発明の目的とする。
【課題を解決するための手段】
【００１０】
かかる目的を達成するために成された本発明の電子制御装置においては、浮動小数点型データが非数であるか否かを判定する非数判定手段が、浮動小数点演算手段により演算された浮動小数点型データを非数であると判定した場合に、初期化手段は、メモリ内の所定のブロックに浮動小数点型データを記憶させる書込み手段が非数を書き込むブロックを、選択的に初期化する。
【００１１】
つまり、浮動小数点演算手段による演算結果が非数である場合に、メモリ全体を初期化するのでは、初期化に伴う処理負荷が大きいので、非数の影響が及ばない正常なデータをできる限り初期化しないようにしながら、更に、演算した数値間の相関関係を保持するために、メモリに設定されたブロック単位でデータを初期化するようにしているのである。
【００１２】
このようにすると、メモリの初期化の際に処理負荷を軽減しながら、非数発生時の制御不良を防ぐことができる。また、数値間の相関関係を保持することができる。
また、初期化手段が初期化するメモリ内のブロックは、数値間の相関関係があるデータを記憶させるように設定されていれば、メモリ内で、どのように分割されていてもよいが、浮動小数点演算手段が複数の制御対象に対して浮動小数点演算を実行する場合には、本発明のように、メモリ内のブロックは、浮動小数点演算手段が実行する制御単位毎に定められているとよい。
【００１３】
つまり、数値間に相関関係があるデータは、前述した燃料噴射量の変数と、燃料カットフラグの値との関係のように、１つの制御（この場合は燃料噴射の制御）をするのに用いられることが多いので、本発明のように、制御単位でメモリ内のブロックを設定し、初期化手段は制御単位で設定されたブロックを初期化すればよいのである。
【００１４】
このようにすれば、数値間の相関関係があるデータを確実に初期化することができる。また、制御単位で分離したプログラムを作成することができるので、効率よくプログラムの作成や変更等をすることができる。
【００１５】
加えて、非数判定手段は、書込み手段により浮動小数点型データがメモリに書き込まれる前に、非数であるか否かを判定する。
つまり、浮動小数点型データが非数であるか否かを判定する前に書込みを行うと、判定するまでに他の制御により参照されてしまうことがあり、仮に参照されたデータが非数だった場合には、他の制御が制御不能になる虞があるため、本発明の電子制御装置では、書込み手段によるメモリへの書込み前に浮動小数点型データが非数であるか否かを判定しているのである。
【００１６】
このようにすると、非数を判定するまでに浮動小数点型データが他の制御に使用されることを防ぐことができるので、浮動小数点型データが非数であることにより、他の制御が制御不良になることを防止することができる。
【００１７】
また、非数判定手段は、浮動小数点演算手段による演算が前記ブロック単位で終了する毎に、ブロック単位で浮動小数点型データが非数であるか否かを判定するようにしてもよい。
【００１８】
ところで、非数判定手段は、請求項２に記載のように、浮動小数点演算手段による演算毎に該演算された浮動小数点型データが非数であるか否かを判定し、非数であれば非数である旨のフラグを立てるフラグ制御手段と、フラグを参照することによって浮動小数点型データが非数であるか否かを判定するフラグチェック手段と、を備えていてもよい。
【００１９】
また、書込み手段が浮動小数点型データを書き込むメモリ内のブロックは、メモリ内で分散して配置されていてもよいが、請求項３に記載のように、連続したメモリ領域により構成されていてもよい。
【００２０】
このようにすると、例えば、初期化手段による初期化の際に、同じ値（初期値）をブロックに書き込む処理を行う場合、初期化するブロックが分散されて配置されているよりも、連続したメモリ領域に配置されているほうが、初期化する際の処理負荷を軽くすることができる。
【００２１】
更に、請求項４に記載のように、初期化手段がメモリのブロックを初期化する際には、メモリのブロックに既定値を書き込むように構成されていてもよい。
この既定値とは、制御不良にならないような無難な値であって、このような既定値を初期化の際にブロックに書き込むようにしているので、浮動小数点演算手段により非数が発生しても継続して制御を実行することができる。
【００２２】
また、上述の電子制御装置は、請求項５に記載のように、自動車のエンジン制御のためのエンジン制御装置として自動車に搭載されていること望ましい。
自動車には、点火プラグやメータ類が多く搭載されており、それらから発生するノイズが多いため、浮動小数点演算手段による演算中に、意図しない非数の発生が予想される。しかし、このような環境であっても、請求項５に記載のように、請求項１〜請求項４の何れかに記載の電子制御装置をエンジン制御装置に使用すれば、高精度な演算をしながら、非数発生により制御不能になることを回避できる。
【発明を実施するための最良の形態】
【００２３】
以下に本発明にかかる実施の形態を図面と共に説明する。
〔実施例１〕
本発明の電子制御装置が適用されたエンジン制御ＥＣＵの構成について、図１を用いて説明する。図１は、エンジン制御ＥＣＵ１（本発明でいうエンジン制御装置）を構成する各部の結合関係を示すブロック図である。
【００２４】
例えば、ガソリン噴射式多気筒内燃機関であるエンジン１１の制御を行うエンジン制御ＥＣＵ１は、ＣＰＵ１４と、ＲＡＭ１５（本発明でいうメモリ）と、ＲＯＭ１６と、浮動小数点演算プロセッサ１７（ＦＰＵ。本発明でいう浮動小数点演算手段。）と、入出力装置１８（Ｉ／Ｏ）とを備えている。
【００２５】
ＦＰＵ１７およびＣＰＵ１４は、ＲＯＭ１６に格納されたプログラムに基づいて駆動する。また、ＦＰＵ１７は浮動小数点型データの演算を実施し、ＣＰＵ１４は浮動小数点型データ以外の演算を実施する。
【００２６】
Ｉ／Ｏ１８は、周知のＡ／Ｄ変換器、およびＤ／Ａ変換器が含まれており、エンジン１１内やその近傍に設置された、エアフロメータ、吸気温センサ（図示省略）、スロットル開度センサ等のセンサ類１２からの検知信号（アナログ信号）をディジタル信号に変換すると共に、エンジン制御ＥＣＵ１からエンジン１１に送られる制御信号（ディジタル信号）をアナログ信号に変換する。
【００２７】
次に、ＲＡＭ１５について図２を用いて説明する。図２は、ＲＡＭ１５の構造を示す模式図である。
ＲＡＭ１５は、例えば、常時、車載バッテリ（図示省略）から給電を受け、記憶内容を保持するように構成された不揮発性メモリであって、図２に示すように、ＲＡＭ１５の記憶領域３１を複数の記憶部３２Ａに分割し、幾つかの連続した記憶部３２Ａの集合であるブロック（吸気制御ブロック３３Ａ、噴射制御ブロック３３Ｂ、点火制御ブロック３３Ｃ等）から構成されている。
【００２８】
また、ＲＡＭ１５は、ＦＰＵ１７およびＣＰＵ１４により演算された浮動小数点型データを格納すると共に、ＦＰＵ１７およびＣＰＵ１４が吸気制御等の各種制御を実行する際の作業領域としても使用される。
【００２９】
尚、ＦＰＵ１７およびＣＰＵ１４が各種制御を実行し、その演算結果を書き込むＲＡＭ１５内の位置（アドレス）は、実行する制御内容により指定されており、例えば、吸気制御であれば、演算により求められた変数は、必ずＲＡＭ１５内の吸気制御ブロック３３Ａ内に格納される。
【００３０】
次に、ＦＰＵ１７が取り扱う浮動小数点型データについて図３を用いて説明する。図３は、浮動小数点型データの構成を示す説明図である。
ＦＰＵ１７が取り扱う浮動小数点型データは、例えば、ＩＥＥＥ７５４規格に従い構成されており、図３（Ａ）に示すように、４バイトの浮動小数点型データ（単精度記憶形式）であって、その内訳は、１ビットの符号部と、８ビットの指数部と、２３ビットの仮数部とを有する。
【００３１】
また、図３（Ｂ）の単精度記憶形式でのビットパターンに示す表から解るように、指数部と仮数部との組合せにより、正規化数、非正規化数、ゼロ、無限大、および非数に識別される。
【００３２】
尚、非数とは、数値ではないことを意味し、例えば、０／０や＋∞−∞のように、数値として表現できない演算結果を表す場合に用いられる。
このように構成されたエンジン制御ＥＣＵ１のうち、ＦＰＵ１７の動作について図４を用いて説明する。図４はＦＰＵ１７が実行するエンジン制御変数演算処理を示すフローチャートである。
【００３３】
尚、図４に示すエンジン制御変数演算処理において、Ｓ１５２およびＳ１５４は本発明でいう書込み手段、Ｓ１０２、Ｓ１０５、およびＳ１０８は非数判定手段、Ｓ１０３、Ｓ１０６、およびＳ１０９は初期化手段に該当する。
【００３４】
図４（Ａ）に示すように、エンジン制御変数演算処理では、先ず、Ｓ１０１にて、吸気制御変数演算処理を実行する。
Ｓ１０１の吸気制御変数演算処理は、図４（Ｂ）に示すように、Ｓ１５１にて、例えば、吸入空気量等の変数Ａ１を、センサ類１２に含まれるエアフロメータ（図示省略）の電圧に基づいて演算し、Ｓ１５２に移行する。
【００３５】
Ｓ１５２では、演算により求めた変数Ａ１をＲＡＭ１５内の吸気制御ブロック３３Ａ内に書き込む。
次に、Ｓ１５３に進み、Ｓ１５１〜Ｓ１５２と同様に、例えば、吸気温補正値等の変数Ｃ１をセンサ類１２に含まれる吸気温センサからの検知に基づいて演算し、Ｓ１５４では、演算により求めた変数Ａ２をＲＡＭ１５内の吸気制御ブロック３３Ａ内に書き込む。
【００３６】
以下、同様にして変数Ａ３、Ａ４、…、を演算および書き込みの処理を繰返し、全ての変数に対する演算および書き込みの処理が完了すると吸気制御変数演算処理を終了し、図４（Ａ）のＳ１０２に移行する。
【００３７】
Ｓ１０２では、ＲＡＭ１５内の吸気制御ブロック３３Ａに非数３２Ｂ（図５参照）があるか否かを判定する。具体的には、吸気制御ブロック３３Ａの先頭アドレスから吸気制御ブロック３３Ａの終了アドレスまでを４バイト単位で選択し、順次選択する記憶部３２Ａを変更しながら、各記憶部３２Ａに記憶されている変数の指数部（ビット３０〜２３）が全て「１」であり、且つ、この変数の仮数部（ビット２２〜０）のうち少なくとも１つ「１」である場合（図３参照）、非数３２Ｂであると判定する。
【００３８】
また、判定方法として演算毎に非数チェックしておき、発生をフラグに累積させてＳ１０２で累積フラグが立っているかどうかを見ることで非数の発生を判定してもよい。ＦＰＵ１７を搭載したマイコンは上記累積フラグレジスタを実装している場合が多いためこれを利用してもよい。
【００３９】
このようにして、ＲＡＭ１５内の吸気制御ブロック３３Ａに非数３２Ｂがないと判定すれば（Ｓ１０２；ＮＯ）、そのままＳ１０４に進み、ＲＡＭ１５内の吸気制御ブロック３３Ａに非数３２Ｂがあると判定すれば（Ｓ１０２；ＹＥＳ）、Ｓ１０３に進み、ＲＡＭ１５内の吸気制御ブロック３３Ａを初期化した後に、Ｓ１０４に進む。
【００４０】
ここで、Ｓ１０３の動作を図５を用いて説明する。図５は、ＲＡＭ１５の初期化範囲を示す説明図である。
図５に示すように、ＲＡＭ１５内の吸気制御ブロック３３Ａには、非数３２Ｂが含まれている。この際、Ｓ１０２にて（図４参照）、吸気制御ブロック３３Ａに非数３２Ｂがあると判定されると、Ｓ１０３では、吸気制御ブロック３３Ａの先頭アドレスから吸気制御ブロック３３Ａの終了アドレスまでを一括して初期化する。
【００４１】
尚、初期化とは、制御に支障がない数値（既定値）を上書きする処理を意味する。
次に、図４（Ａ）におけるＳ１０４では、噴射制御変数演算処理を行う。
噴射制御変数演算処理は、図４（Ｂ）に示す吸気制御変数演算処理と同様の手順で、それぞれの変数を演算する処理を行い、演算により求められた変数をＲＡＭ１５内の噴射制御ブロック３３Ｂに書込む処理を行う（図示省略）。
【００４２】
以下、Ｓ１０２〜Ｓ１０３と同様に、Ｓ１０５では、ＲＡＭ１５内の噴射制御ブロック３３Ｂに非数３２Ｂがあるか否かを判定し、ＲＡＭ１５内の吸気制御ブロック３３Ａに非数３２Ｂがないと判定すれば（Ｓ１０５；ＮＯ）、そのままＳ１０７に進み、ＲＡＭ１５内の噴射制御ブロック３３Ｂに非数３２Ｂがあると判定すれば（Ｓ１０５；ＹＥＳ）、Ｓ１０６に進み、ＲＡＭ１５内の噴射制御ブロック３３Ｂを初期化した後に、Ｓ１０７に進む。
【００４３】
Ｓ１０７の点火制御変数演算処理は、図４（Ｂ）に示す吸気制御変数演算処理および噴射制御変数制御処理と同様に、それぞれの変数を演算する処理を行い、演算により求められた変数をＲＡＭ１５内の点火制御ブロック３３Ｃに書込む処理を行う（図示省略）。
【００４４】
以下、Ｓ１０２〜Ｓ１０３と同様に、Ｓ１０８では、ＲＡＭ１５内の点火制御ブロック３３Ｃに非数３２Ｂがあるか否かを判定し、ＲＡＭ１５内の点火制御ブロック３３Ｃに非数３２Ｂがないと判定すれば（Ｓ１０８；ＮＯ）、例えば、排気制御変数演算処理等の制御を行い、それら全ての処理が終了するとＳ１０１に戻りエンジン制御変数演算処理を繰り返す。
【００４５】
また、ＲＡＭ１５内の点火制御ブロック３３Ｃに非数３２Ｂがあると判定すれば（Ｓ１０８；ＹＥＳ）、Ｓ１０９に進み、ＲＡＭ１５内の噴射制御ブロック３３Ｂを初期化した後に、例えば、排気制御変数演算処理等の制御を行い、それら全ての処理が終了するとＳ１０１に戻りエンジン制御変数演算処理を繰り返す。
【００４６】
以上のように詳述したエンジン制御ＥＣＵ１を使用した際の効果について以下に説明する。
本実施例のエンジン制御ＥＣＵ１は、ＦＰＵ１７により演算し、ＲＡＭ１５内の記憶部３２Ａに書き込まれた値に非数３２Ｂがあるか否かを判定し、非数３２Ｂがあると判定した場合には、非数３２Ｂが含まれる制御ブロック（例えば、吸気制御ブロック３３Ａ）を初期化するので、ＲＡＭ１５の初期化の際の処理負荷を軽減しながら、非数３２Ｂ発生時の制御不良を防ぐことができる。
【００４７】
また、前述した燃料噴射量の変数と、燃料カットフラグの値との関係のように、数値間に相関関係があるデータが存在する場合であっても、数値間に相関関係があるデータは１つの制御（この場合は燃料噴射の制御）をするのに用いられることが多いので、本実施例のエンジン制御ＥＣＵ１であれば、制御ブロック単位でＲＡＭ１５内のブロックの初期化を行うので、数値間の相関関係があるデータを確実に初期化することができる。また、制御単位で分離したプログラムを作成することができるので、効率よくプログラムの作成や変更等をすることができる。
【００４８】
また、浮動小数点型データを書き込むＲＡＭ１５内の各ブロックは、連続したアドレスが割り当てられた記憶部３２Ａにより構成されているので（図２参照）、例えば、ＲＡＭ１５内のブロックの初期化の際に、同じ値（初期値）をブロックに書き込む処理を行う場合、初期化するブロックが分散されて配置されているよりも、ＲＡＭ１５内のブロックを初期化する際の処理負荷を軽くすることができる。
【００４９】
また、ＲＡＭ１５内のブロックを初期化する際には、ＲＡＭ１５内のブロックに制御不良にならないような無難な値である既定値を書き込むようにしているので、ＦＰＵ１７の演算により非数３２Ｂが発生しても継続して制御を実行することができる。
【００５０】
更に、エンジン制御ＥＣＵ１は、点火プラグやメータ類等から発生するノイズが多く、ＦＰＵ１７による演算中に、意図しない非数３２Ｂの発生が予想される環境にある自動車に搭載されているが、このような環境であっても、上述のように、ＦＰＵ１７による演算結果が非数３２Ｂであると判定した場合には、非数３２Ｂが含まれる制御ブロックの初期化を行うので、高精度な演算をしながら、非数３２Ｂ発生により制御不能になることを回避できる。
【００５１】
以下、本実施例における変形例について説明する。尚、ここで述べる変形例は一例に過ぎず、本発明の技術的思想および技術分野に属する限り、多種多様の形態を採りうることは言うまでもない。
【００５２】
本実施例におけるエンジン制御ＥＣＵ１では、各制御（吸気制御、噴射制御等）を順に行ったが、特にこのようにする必要はなく、各制御を同時に並行して行ってもよい。
また、本実施例におけるエンジン制御ＥＣＵ１では、ＲＡＭ１５の各ブロックを制御単位で設定したが、特に制御単位で各ブロックを設定しなくても、数値間の相関関係があるデータを同時に初期化できるように、各ブロックを設定すればよい。
【００５３】
更に、本実施例におけるＲＡＭ１５内の各ブロックは、連続したアドレスが割り当てられた記憶部３２Ａにより構成されているが、各ブロックは連続したアドレスが割り当てられた記憶部３２Ａにより構成されている必要はなく、ＲＡＭ１５内で分散して配置されていてもよい。
【００５４】
上記に説明したようなエンジン制御ＥＣＵ１であっても、高精度な演算をしながら、非数３２Ｂ発生により制御不能になることを回避できる。
また、本実施例は、本発明の電子制御装置を自動車に使用した一例であるが、特に自動車に限らず、浮動小数点データを取り扱う制御を行うものであれば、本発明の電子制御装置を利用することができる。
【００５５】
〔実施例２〕
次に、本実施例（実施例２）のエンジン制御ＥＣＵ２の搭載された、ＦＰＵ１７の動作について図６および図７を用いて説明する。図６はＦＰＵ１７が実行するエンジン制御変数演算処理を示すフローチャート、図７はＲＡＭ１５の構造を示す模式図である。
【００５６】
ここで、実施例１で詳述したエンジン制御ＥＣＵ１と、本実施例（実施例２）のエンジン制御ＥＣＵ２とは、ＦＰＵ１７が行うエンジン制御変数演算処理とが異なるのみで、その他の構成は同様である。従って、本実施例のエンジン制御ＥＣＵ２が実施例１のエンジン制御ＥＣＵ１と同様の箇所については、同一の符号を付して説明を省略し、異なる箇所のみについて詳述する。
【００５７】
図６（Ａ）に示すように、エンジン制御変数演算処理は、Ｓ２０１にて、吸気制御変数演算処理を行い、Ｓ２０２にて、噴射制御変数演算処理を行い、Ｓ２０３にて、噴射制御変数演算処理を行い、以下、例えば、排気制御変数演算処理等の演算処理を連続して行い、全ての演算処理が終了すると、Ｓ２０１に戻り、エンジン制御変数演算処理を繰り返す。
【００５８】
また、Ｓ２０１の吸気制御変数演算処理では、図６（Ｂ）に示すような処理を行う。
図６（Ｂ）におけるＳ２５１では、例えば、吸入空気量等の変数Ｂ１を、センサ類１２に含まれるエアフロメータ（図示省略）の電圧に基づいて演算し、Ｓ２５２に移行する。
【００５９】
ここで、ＲＡＭ１５内の吸気制御ブロック３３Ａに含まれる記憶部３２Ｃは、図７に示すように、吸気制御内のみに使用される非参照データ５２Ａと、吸気制御以外でも使用される参照データ５２Ｂとに分類され、Ｓ２５１で演算した吸入空気量等の変数Ｂ１は、このうちの参照データ５２Ｂに属する。
【００６０】
次に、Ｓ２５２では、Ｓ２５１にて演算された変数Ｂ１が非数３２Ｂであるか否かを判定する。変数Ｂ１が非数３２Ｂでないと判定すれば（Ｓ２５２；ＮＯ）、Ｓ２５３に進み、変数Ｂ１が非数３２Ｂであると判定すれば（Ｓ２５２；ＹＥＳ）、Ｓ２５９に進む。
【００６１】
Ｓ２５３では、演算により求めた変数Ｂ１をＲＡＭ１５内の吸気制御ブロック３３Ａ内に書き込み、Ｓ２５４に進む。
Ｓ２５４では、例えば、吸気温補正値等の変数Ｃ１をセンサ類１２に含まれる吸気温センサからの検知に基づいて演算し、Ｓ２５５では、演算により求めた変数Ｃ１をＲＡＭ１５内の吸気制御ブロック３３Ａ内に書き込む。
【００６２】
ここで、吸気温補正値等の変数Ｃ１は、吸気制御内のみに使用される非参照データ５２Ａに該当し（図７参照）、演算した変数Ｃ１が非参照データ５２Ａに該当する場合にはＳ２５２のように、変数Ｃ１が非数３２Ｂであるか否かの判定は行わない。尚、演算された各変数Ｂ１、Ｃ１が非参照データ５２Ａおよび参照データ５２Ｂの何れに属するかは、予めＲＯＭ１６に記憶されている。
【００６３】
次にＳ２５６に移行し、例えば、参照データ５２Ｂに属する吸気管圧力等の変数Ｂ２を、センサ類１２に含まれるエアフロメータの電圧に基づいて演算し、Ｓ２５７に移行する。
【００６４】
次に、Ｓ２５７では、Ｓ２５６にて演算された変数Ｂ２が非数３２Ｂであるか否かを判定する。変数Ｂ２が非数３２Ｂでないと判定すれば（Ｓ２５７；ＮＯ）、そのままＳ２５８に進み、変数Ｂ２が非数３２Ｂであると判定すれば（Ｓ２５７；ＹＥＳ）、Ｓ２５９に進む。
【００６５】
Ｓ２５８では、演算により求めた変数Ｂ１をＲＡＭ１５内の吸気制御ブロック３３Ａ内に書き込み、以下、同様に変数Ｂ３、Ｂ４、…、Ｃ２、Ｃ３、…の演算、非数３２Ｂであるか否かの判定、および書き込みの処理を繰り返し、全ての変数に対する演算および書き込みの処理が完了すると吸気制御変数演算処理を終了する。
【００６６】
また、前述のように、参照データ５２Ｂである変数Ｂ１（またはＢ２）を非数３２Ｂであると判定すれば（Ｓ２５２またはＳ２５７；ＮＯ）、Ｓ２５９に移行し、Ｓ２５９では、ＲＡＭ１５内の吸気制御ブロック３３Ａを初期化する。この動作は、図４（Ａ）のＳ１０３と同様であるため説明を省略する。
【００６７】
吸気制御変数演算処理（Ｓ２０１）を終了すると図６（Ａ）のＳ２０２の噴射制御変数演算処理を行う。
噴射制御変数演算処理は、図６（Ｂ）に示す吸気制御変数演算処理と同様の手順で、それぞれの変数を演算する処理を行い、演算により求められた変数をＲＡＭ１５内の噴射制御ブロック３３Ｂに書込む処理を行う（図示省略）。
【００６８】
以下、同様にして、Ｓ２０３の点火制御変数演算処理、図示しない排気制御変数演算処理等の処理を行い、それら全ての処理が終了するとＳ２０１に戻りエンジン制御変数演算処理を繰り返す。
【００６９】
尚、図６に示すエンジン制御変数演算処理において、Ｓ２５３およびＳ２５８は本発明でいう書込み手段、Ｓ２５２およびＳ２５８は非数判定手段、ＳＳ２５９は初期化手段に該当する。
【００７０】
以上のように詳述したエンジン制御ＥＣＵ２であれば、実施例１にて詳述したエンジン制御ＥＣＵ１とは、ＲＡＭ１５内の記憶部３２Ａにデータを書き込んでから非数３２Ｂであるか否かの判定を行うか（実施例１）、データを書き込む前に非数３２Ｂであるか否かの判定を行うか（実施例２）の点で異なるが、同様の効果および変形例が考えられる。
【００７１】
特に、本実施例（実施例２）のエンジン制御ＥＣＵ２では、ＦＰＵ１７が非数３２Ｂであるか否かを判定するのは、ＦＰＵ１７が演算した浮動小数点型データのうち、他の制御対象に対する制御の際に参照される参照データ５２Ｂのみに対してであるので、判定のための処理負荷を更に軽減することができる。また、実行中の制御以外の制御に非数３２Ｂの影響が伝播することを防ぐことができる。
【００７２】
更に、本実施例（実施例２）のエンジン制御ＥＣＵ２では、参照データ５２ＢがＲＡＭ１５に書き込まれる前に、非数３２Ｂであるか否かを判定するので、参照データ５２Ｂが非数３２Ｂであるか否かを判定する前に書込みを行い、参照データ５２Ｂが非数３２Ｂであるのに、参照データ５２Ｂが非数３２Ｂか否かを判定するまでに他の制御により参照され、他の制御が制御不能になることを防止することができる。
【図面の簡単な説明】
【００７３】
【図１】エンジン制御ＥＣＵを構成する各部の結合関係を示すブロック図である。
【図２】ＲＡＭの構造を示す模式図である。
【図３】浮動小数点型データの構成を示す説明図である。
【図４】実施例１のＦＰＵが実行するエンジン制御変数演算処理を示すフローチャートである。
【図５】ＲＡＭの初期化範囲を示す説明図である。
【図６】実施例２のＦＰＵが実行するエンジン制御変数演算処理を示すフローチャートである。
【図７】実施例２のＲＡＭの構造を示す模式図である。
【符号の説明】
【００７４】
１、２…エンジン制御ＥＣＵ、１１…エンジン、１２…センサ類、１４…ＣＰＵ、１５…ＲＡＭ、１６…ＲＯＭ、１７…浮動小数点演算プロセッサ（ＦＰＵ）、１８…入出力装置（Ｉ／Ｏ）、３１…記憶領域、３２Ａ、Ｃ…記憶部、３２Ｂ…非数、３３Ａ…吸気制御ブロック、３３Ｂ…噴射制御ブロック、３３Ｃ…点火制御ブロック、５２Ａ…非参照データ、５２Ｂ…参照データ。
【図１】
2008152801.tif 000003
【図２】
2008152801.tif 000004
【図３】
2008152801.tif 000005
【図４】
2008152801.tif 000006
【図５】
2008152801.tif 000007
【図６】
2008152801.tif 000008
【図７】
2008152801.tif 000009