(57)【特許請求の範囲】
【請求項１】
浮動小数値を演算するための浮動小数点演算機能を有し、所定の制御プログラムに従い各種制御を実施するマイクロコンピュータと、マイクロコンピュータへの動作電源の遮断時にも記憶内容を保持し、且つ浮動小数点型データの記憶領域を有する不揮発性メモリとを備えた電子制御装置であって、
前記マイクロコンピュータは、前記不揮発性メモリの浮動小数点型データの記憶領域のデータについて非数の有無を判定する非数判定手段と、
前記非数判定手段により非数が有ると判定された時、前記不揮発性メモリの浮動小数点型データの記憶領域のデータを初期化するデータ初期化手段と、
を備え、
前記非数判定手段は、マイクロコンピュータへの電源投入に伴うシステムの初期化処理に際し、前記不揮発性メモリの浮動小数点型データの記憶領域について非数判定を実施することを特徴とする電子制御装置。
【請求項２】
前記データ初期化手段は、前記不揮発性メモリの浮動小数点型データの記憶領域のデータの初期化に際し、制御に支障のないデフォルト値を前記不揮発性メモリの浮動小数点型データの記憶領域に書き込む請求項１に記載の電子制御装置。
【請求項３】
前記非数判定手段は、マイクロコンピュータの通常動作時においても各種制御の空き時間に前記不揮発性メモリの浮動小数点型データの記憶領域について非数判定を実施する請求項１又は２に記載の電子制御装置。
【請求項４】
前記非数判定手段は、マイクロコンピュータの通常動作時においても前記不揮発性メモリの浮動小数点型データの記憶領域について非数判定を実施し、前記マイクロコンピュータは、その通常動作時において前記非数判定手段により非数有りの旨が判定されると、マイクロコンピュータをリセットする請求項１〜３のいずれか一項に記載の電子制御装置。
【請求項５】
マイクロコンピュータから周期的に出力されるウォッチドッグクリア信号を監視し、このウォッチドッグクリア信号の反転の周期性が崩れる都度、マイクロコンピュータに対してリセット信号を出力するウォッチドッグ回路をさらに備え、
前記非数判定手段は、マイクロコンピュータの通常動作時においても前記不揮発性メモリの浮動小数点型データの記憶領域について非数判定を実施し、前記マイクロコンピュータは、その通常動作時において前記非数判定手段により非数有りの旨が判定された時、前記ウォッチドッグクリア信号の反転動作を中止する請求項１〜４のいずれか一項に記載の電子制御装置。
【請求項６】
前記非数判定手段は、マイクロコンピュータの通常動作時においても前記不揮発性メモリの浮動小数点型データの記憶領域について非数判定を実施し、
前記マイクロコンピュータの通常動作時において、前記非数判定手段により非数有りの旨が判定された時、全ての割り込みを禁止する請求項１〜５のいずれか一項に記載の電子制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、浮動小数点演算機能を備えた電子制御装置に関するものである。
【０００２】
【従来の技術】
一般に、自動車のエンジン制御などに適用される電子制御装置（ＥＣＵ）では、従来より固定小数点型データを用いて各種演算を実施していたが、近年では浮動小数点演算プロセッサ（ＦＰＵ：Floating-Point Unit ）の導入により、浮動小数点型データによる演算が実施できるようになった。浮動小数点型データによれば、固定小数点型データに比べて非常に細かい精度で演算結果が得られる。
【０００３】
浮動小数点型データは例えばＩＥＥＥ７５４規格に従い構成され、図８（ａ）に示されるようにその内訳として、１ビットの符号部と、８ビットの指数部と、２３ビットの仮数部とを有する。こうして仮数部が２３ビットで構成される４バイト（単精度記憶形式）の浮動小数点型データの場合、７桁の分解能（0.0000001 の分解能）を持つ。
【０００４】
また、図８（ｂ）には、単精度記憶形式でのビットパターンが示され、浮動小数点型データは、指数部と仮数部の組み合わせにより正規化数、非正規化数、無限大、ゼロ及び非数に区別される。ここで、非数以外は数値を表し、非数は数値でないことを表す。例えば、０／０や＋∞−∞といった数値として表現できない演算結果を表す場合に非数が用いられる。
【０００５】
【発明が解決しようとする課題】
上記の通り浮動小数点型データには非数というデータ形式があり、電子制御装置内で非数が一つでも発生又は存在した場合、同装置内で非数が増殖してしまう可能性がある。更に非数を含む、例えば四則演算の結果は全て非数となり無効となる。例えば、比較演算において非数が１以上か以下かを比較した場合、その結果は何れも偽となる。そのため、電子制御装置内で非数が発生した場合、その演算結果（出力値）は全く保障できないという問題がある。
【０００６】
エンジン制御において非数が発生する条件としては主に２つ考えられる。一つ目の条件は、電子制御装置の動作中やバッテリバックアップ中にノイズにより浮動小数点型のＲＡＭ値が書き換わってＲＡＭ値そのものが非数に変わる場合である。例えば、ノイズにより浮動小数ＲＡＭ値がＦＦＦＦＦＦＦＦｈ（全１ビット）に書き換わる場合等である。二つ目の条件は、浮動小数点演算に用いられる引数がノイズ等によって書き換わり、０／０のような演算を行って二次的に非数が発生する場合である。図９に示すエンジン回転数の演算処理にてその事例を説明する。
【０００７】
つまり、図９の処理では、エンジンの３６０°ＣＡ（クランク角）の回転に要した時間Ｔ３６０を算出してそれをＦＲＯ値として記憶し（ステップ５０１）、ＦＲＯ＝０でないことを条件に、「１ｓｅｃ」をＦＲ１に、「６０」をＦＲ２にセットする（ステップ５０２〜５０４）。
【０００８】
その後、演算式
ＦＲ０＝ＦＲ１／ＦＲ０＊ＦＲ２
により、ＦＲ０値を算出し（ステップ５０５）、ＦＲ０値をエンジン回転数Ｎｅとする（ステップ５０６）。
【０００９】
上記図９の処理において、仮にステップ５０４の直後にノイズ等によりＦＲ０，ＦＲ１値が各々０に変化した場合を想定する。この場合、ステップ５０５では「０／０」の演算が行われ、ステップ５０５の演算結果であるＦＲ０値が非数となる。その結果、エンジン回転数が正しく算出できないこととなる。
【００１０】
本発明は、上記問題に着目してなされたものであって、その目的とするところは、浮動小数点演算機能を有した電子制御装置において、非数の発生に伴う制御不良を未然に防止することができる電子制御装置を提供することである。
【００１１】
【課題を解決するための手段】
請求項１に記載の電子制御装置では、マイクロコンピュータは、不揮発性メモリの浮動小数点型データの記憶領域のデータについて非数の有無を判定し（非数判定手段）、非数が有ると判定された時、前記不揮発性メモリの浮動小数点型データの記憶領域のデータを初期化する（データ初期化手段）。かかる場合、非数が存在するメモリデータが初期化されることで非数が一掃される。それ故、マイクロコンピュータによる各種制御において、非数を含むデータが存在することが原因となる種々の不都合が回避できる。その結果、非数の発生に伴う制御不良を未然に防止することができる。また、非数判定手段は、マイクロコンピュータへの電源投入に伴うシステムの初期化処理に際し、不揮発性メモリの浮動小数点型データの記憶領域について非数判定を実施する。この場合、仮にマイクロコンピュータの動作停止中にノイズ等が原因で不揮発性メモリの浮動小数点型データが破壊されて非数が発生したとしても、それが電源投入直後、すなわち制御開始前に適正に検出でき、制御への悪影響が未然に防止される。
なお、上記不揮発性メモリとしては、バッテリ電源からの給電によりデータ不揮発の状態となり記憶内容を保持するバックアップＲＡＭ（スタンバイＲＡＭとも言う）や、ＥＥＰＲＯＭ、フラッシュＲＯＭ等を含む。
【００１２】
特に、請求項２に記載したように、不揮発性メモリの浮動小数点型データの記憶領域のデータの初期化に際し、制御に支障のないデフォルト値を不揮発性メモリの浮動小数点型データの記憶領域に書き込むことで、このデフォルト値を用いて各種制御が実施できる。
【００１５】
請求項３に記載の発明では、マイクロコンピュータの通常動作時においても各種制御の空き時間に非数判定を実施するので、大量の浮動小数点型データが存在し、その非数判定に時間を要する場合にも、他の制御に及ぶ影響が抑えられる。また本構成は、マイクロコンピュータの演算負荷の観点からも有効であると言える。
【００１６】
請求項４に記載の発明では、マイクロコンピュータは、その通常動作時において前記非数判定手段により非数有りの旨が判定されると、マイクロコンピュータをリセットする。従って、マイクロコンピュータのリセットに伴う初期化処理にて非数が一掃される。
【００１７】
請求項５に記載の発明では、マイクロコンピュータは、その通常動作時において前記非数判定手段により非数有りの旨が判定された時、ウォッチドッグクリア（ＷＤＣ）信号の反転動作を中止する。つまり、ウォッチドッグクリア信号の反転動作を中止することで同信号の周期性が崩れ、ウォッチドッグ回路がマイクロコンピュータに対してリセット信号を出力する。これにより、マイクロコンピュータにリセットがかかり、そのリセットに伴う初期化処理にて非数が一掃される。
【００１８】
かかる場合、請求項６に記載したように、マイクロコンピュータの通常動作時において非数有りの旨が判定された時、全ての割り込みを禁止すると良い。これにより、非数の存在が確認されてから消去されるまでの間に非数が原因で制御性が悪化するといった不都合が確実に防止できる。
【００１９】
【発明の実施の形態】
以下、この発明を具体化した一実施の形態を図面に従って説明する。図１は、エンジン制御システムの概略を示すブロック図である。本システムにおいて、車載エンジン１は、例えばガソリン噴射式の多気筒内燃機関として構成される。
【００２０】
エンジン制御ＥＣＵ１０はマイクロコンピュータ（以下、マイコンという）１１を備え、同マイコン１１はＣＰＵ１２、ＲＡＭ１３、ＲＯＭ１４、ＦＰＵ（浮動小数点演算プロセッサ）１５、Ｉ／Ｏ（入出力装置）１６を備える。ここで、ＦＰＵ１５は浮動小数点形式の演算を実施し、ＣＰＵ１２は浮動小数点形式以外の演算を実施する。Ｉ／Ｏ１６には周知のＡ／Ｄ変換器が含まれる。ＲＡＭ１３は、イグニッションスイッチのＯＦＦ時にも図示しない車載バッテリからの給電を受けて記憶内容を保持する記憶素子であり、本実施の形態ではこのＲＡＭ１３が不揮発性メモリ（バックアップＲＡＭ）に該当する。但し、不揮発性メモリとして、ＥＥＰＲＯＭやフラッシュＲＯＭ等を備える構成であっても良い。
【００２１】
また、ＥＣＵ１０は、ウォッチドッグ回路としてのＷＤＣ（ウォッチドッグクリア）監視装置１８を備える。このＷＤＣ監視装置１８は、マイコン１１から周期的に出力されるＷＤＣ信号を監視し、同ＷＤＣ信号が途絶えるなど、その周期性が崩れる都度、マイコン１１にリセット信号を出力する。なお、ウォッチドッグ回路がマイコン１１内に内蔵される構成であっても良い。
【００２２】
例えば図２に示されるように、ＷＤＣ信号は４ｍｓ周期でＨ／Ｌを反転する信号として出力され、その反転エッジが所定時間（図では３２ｍｓ）検出されないと、ＷＤＣ監視装置１８はリセット信号を立ち下げる。またその後、リセットが解除されると、４ｍｓ周期で反転するＷＤＣ信号が再びＷＤＣ監視装置１８に取り込まれる。
【００２３】
ＥＣＵ１０には、エンジン１に設けられたセンサ２からエンジン運転状態を表す各種情報が入力される。センサ２は、例えば吸入空気量を検出するためのエアフロメータ、冷却水温を検出するための水温センサ、スロットル開度を検出するためのスロットル開度センサなどからなる。そして、ＥＣＵ１０は、前記入力されるセンサ信号を基に、図示しないインジェクタによる燃料噴射の制御や燃料ガスのパージ制御などを実施する。
【００２４】
ＦＰＵ１５により演算される浮動小数点型データは、既述の通り例えばＩＥＥＥ７５４規格に従い構成され、単精度記憶形式であれば図８（ａ）に示すデータ形式を有する。また、図８（ｂ）の如く、浮動小数点型データは、指数部と仮数部との組み合わせにより正規化数、非正規化数、無限大、ゼロ及び非数に区別される。
【００２５】
一方、図３にはＲＡＭ１３の構成例を示す。ＲＡＭ１３は、浮動小数ＲＡＭ領域と、固定小数ＲＡＭ領域と、スタック領域とに大別できる。浮動小数ＲＡＭ領域は４バイトずつ区分され、その開始アドレスには”ＳＴＡＲＴ”が付与され、終了アドレスには”ＥＮＤ”が付与されている。なおこの場合、ＲＡＭ１３内では、固定小数ＲＡＭ領域やスタック領域と分離して浮動小数ＲＡＭ領域が固めて配置されると良い。
【００２６】
本実施の形態では、ＥＣＵ１０への動作電源の投入前にノイズ等の影響によりＲＡＭ１３にて保持されている浮動小数点型データが非数になったり、或いは、ＥＣＵ１０の通常動作中に浮動小数点型データが非数になったりした場合に、その旨を判定し、非数を除去するためのデータ初期化処理を実施する。非数チェックを行う対象は、ソフトウエアに定義されている定数及びＲＡＭデータである。以下、ＣＰＵ１２により実行される図４〜図７の各処理に従い、本実施の形態の要旨を詳しく説明する。
【００２７】
先ず始めに、ＥＣＵ１０への電源投入直後における非数のチェック手順を図４のフローチャートに従い説明する。図４は、電源投入直後に起動されるイニシャルルーチンであり、本ルーチンが「データ初期化手段」に相当する。
【００２８】
ステップ１０１では、非数の有無を示す非数発生フラグを「０」にしておく。次に、ステップ１０２では、非数チェックルーチンを呼び出す。この非数チェックルーチンでは、浮動小数ＲＡＭ領域において非数の有無が判定されるが、その詳細は図５にて後述する。
【００２９】
続くステップ１０３では、非数発生フラグが「０」か否かを判別し、非数発生フラグが「０」であれば、非数がないのでそのままステップ１０６に進む。ステップ１０６では、その他の初期化処理を実行した後、本処理を終了する。
【００３０】
また、浮動小数ＲＡＭ領域の何れかに非数があれば非数発生フラグが「１」になるため、ステップ１０４に進み、浮動小数ＲＡＭ領域を初期化する。すなわち、浮動小数ＲＡＭ領域に、制御に支障のないデフォルト値を書き込み、非数を消去する。この初期化処理によって非数は存在しなくなるため、ステップ１０５では非数発生フラグを「０」とする。続くステップ１０６ではその他の初期化処理を実行し、その後、本処理を終了する。
【００３１】
次に、図５のフローチャートに従い、非数チェックルーチンの詳細を説明する。なお、このルーチンが「非数判定手段」に相当する。本処理では、浮動小数ＲＡＭの開始アドレスＳＴＡＲＴから終了アドレスＥＮＤまでの各領域について、指数部（ｂｉｔ３０〜２３）が全て「１」で且つ、仮数部（ｂｉｔ２２〜０）が全て「０」でない組み合わせかどうかにより、非数の有無を判定する。
【００３２】
詳しくは、開始値ＳＴＡＲＴから終了値ＥＮＤまで変数Ｒ１を４バイト単位で順次変更してアドレスを設定しながら、以下のループ処理を実施する。このとき、ステップ２０１では、変数Ｒ１が示すアドレスの内容をＲ０値として取り込む。また、ステップ２０２では、Ｒ０値のｂｉｔ３０〜２３が”１１１１１１１１”であるか否かを判別し、ステップ２０３では、Ｒ０値のｂｉｔ２２〜０が全て０であるか否かを判別する。
【００３３】
ステップ２０２がＮＯの場合、又はステップ２０２，２０３が共にＹＥＳの場合、その時該当するアドレスの浮動小数点型データは非数でなく、次の浮動小数点型データのアドレスに移行する。また、ステップ２０２がＹＥＳで且つ、ステップ２０３がＮＯの場合、浮動小数ＲＡＭ領域に非数が存在するとみなし、ステップ２０４で非数発生フラグに「１」を入れて処理を終了する。
【００３４】
一方、ＥＣＵ１０の通常動作時には、図６に示すアイドルルーチンにて非数の有無をチェックする。ここで、アイドルルーチンとは、時間周期や回転信号同期で処理される各種制御の空き時間に実行される処理であり、通常ＥＣＵ１０が扱う各種処理の中で最も優先度の低いタスク中で実行される処理である。
【００３５】
図６のステップ３０１では、前記図５の非数チェックルーチンを呼び出し、非数の有無に応じて非数発生フラグを操作する。続くステップ３０２では、ＲＯＭ１４のチェックサムやマイコン１１内のレジスタの確認処理等といった、各種制御を実施する。
【００３６】
そして、図７に示す４ｍｓ処理では、上記図６のアイドルルーチンで実施した非数チェックの結果をモニタする。すなわち、図７のステップ４０１では、非数発生フラグが「１」であるか否かを判別する。非数発生フラグ＝０であり、非数が存在しない場合はステップ４０２に進み、ＷＤＣ信号を反転させる。かかる場合、ＷＤＣ信号が４ｍｓ周期で反転するので、ＣＰＵ１２が正常動作していることをＷＤＣ監視装置１８に知らしめることができる。続くステップ４０３では、各種センサ検出値のＡ／Ｄ変換処理等、４ｍｓ周期で処理される各種制御を実行し、その後、本処理を一旦終了する。
【００３７】
また、非数発生フラグ＝１であり、非数が存在する場合は、ステップ４０４に進んで全ての割り込みを禁止し、その後、無限ループに突入する。つまり、無限ループに突入することでそれ以降ＷＤＣ信号が反転しなくなるため、同ＷＤＣ信号の周期性が崩れ、所定期間後（３２ｍｓ経過後）にＷＤＣ監視装置１８からマイコン１１にリセット信号が出力される。それ故、そのマイコン１１のリセットに伴うイニシャルルーチン（図４の処理）において、改めて非数発生フラグが確認されると共に、同処理にて非数が一掃される。
【００３８】
上記図７の処理では、非数が存在する場合、全ての割り込みを禁止して無限ループに突入するため、仮に非数有りの判定後、リセット信号が発行されるまでの間に非数により各種制御に悪影響が及ぶといった不都合が回避される。つまり、非数有りの判定後に割り込みが許可されていると、発生した割り込み処理の中で非数が用いられて制御が異常になるおそれがあるが、上記図７によればこうした不都合が生じない。
【００３９】
以上詳述した本実施の形態によれば、以下に示す効果が得られる。
（イ）浮動小数ＲＡＭ領域について非数の有無を判定し、非数が有ると判定された時、ＲＡＭデータを初期化することにより非数が一掃される。それ故、マイコン１１による各種制御において、非数を含むデータが存在することが原因となる種々の不都合が回避できる。その結果、非数の発生に伴う制御不良を未然に防止することができる。
【００４０】
（ロ）制御に支障のないデフォルト値をＲＡＭデータとして書き込んで浮動小数ＲＡＭ領域を初期化するので、このデフォルト値を用いて各種制御が実施できる。
【００４１】
（ハ）マイコン１１への電源投入に伴うシステムの初期化処理（イニシャルルーチン）に際し、ＲＡＭ１３の浮動小数ＲＡＭ領域について非数判定を実施する。この場合、仮にマイコン１１の動作停止中にノイズ等が原因でＲＡＭ１３の浮動小数点型データが破壊されて非数が発生したとしても、それが電源投入直後、すなわち制御開始前に適正に検出でき、制御への悪影響が未然に防止される。
【００４２】
（ニ）マイコン１１の通常動作時において各種制御の空き時間に非数判定を実施するので、大量の浮動小数点型データが存在し、その非数判定に時間を要する場合にも、他の制御に影響が及ぶことはない。つまり、他の制御が既定のスケジューリング通りに実行されなくなるといった不都合が回避される。また本構成は、マイコン１１の演算負荷の観点からも有効であると言える。
【００４３】
（ホ）非数有りの旨が判定された時、ＷＤＣ信号の反転動作を中止するので、マイコン１１にリセットがかかり、そのリセットに伴う初期化処理にて非数を一掃することができる。
【００４４】
（ヘ）非数有りの旨が判定された時、全ての割り込みを禁止し且つ無限ループに突入するので、非数の存在が確認されてから消去されるまでの間に非数が原因で制御性が悪化するといった不都合が確実に防止できる。
【００４５】
なお本発明は、上記以外に次の形態にて実現できる。
非数判定手段を実現する構成として図５の非数チェックルーチンを説明したが、こうしたソフトウエアでの具体化以外に、マイコンのハード構成にて当該手段を具体化しても良い。
【００４６】
上記実施の形態では、通常動作時においてＷＤＣ監視装置１８を用いてマイコン１１のリセットを操作したが、該リセットの操作は既述の構成に限定されない。マイコン１１自身でソフト的にリセットする構成であっても良い。
【００４７】
上記実施の形態では、単精度記憶形式の浮動小数点型データを扱う電子制御装置（ＥＣＵ）について例示したが、倍精度記憶形式の浮動小数点型データを扱う電子制御装置にも適用できる。
【図面の簡単な説明】
【図１】発明の実施の形態におけるエンジン制御システムの概略を示すブロック図。
【図２】ＷＤＣ信号の形態を示すタイムチャート。
【図３】ＲＡＭの構成例を示す図。
【図４】イニシャルルーチンを示すフローチャート。
【図５】非数チェックルーチンを示すフローチャート。
【図６】アイドルルーチンを示すフローチャート。
【図７】４ｍｓ処理を示すフローチャート。
【図８】浮動小数点型データの構成を示す図。
【図９】回転数演算処理を示すフローチャート。
【符号の説明】
１…エンジン、１０…エンジン制御ＥＣＵ（電子制御装置）、１１…マイコン、１２…非数判定手段，データ初期化手段を構成するＣＰＵ、１３…ＲＡＭ（メモリ）、１５…ＦＰＵ（浮動小数点演算プロセッサ）、１８…ＷＤＣ監視装置。
【図１】
0004058870.tif 000002
【図２】
0004058870.tif 000003
【図３】
0004058870.tif 000004
【図４】
0004058870.tif 000005
【図５】
0004058870.tif 000006
【図６】
0004058870.tif 000007
【図７】
0004058870.tif 000008
【図８】
0004058870.tif 000009
【図９】
0004058870.tif 000010