(57)【要約】【課題】バックアップメモリに格納する浮動小数点数形式のデータの非数の有無の判定及び初期化を、演算負荷を増加させることなく実行できる組込み制御装置を提供する。【解決手段】マイクロコンピュータへの動作電源遮断時、組込み制御装置は、バックアップメモリに格納する浮動小数点数形式のデータの非数の有無を判定し、非数を有すると判定した場合、非数を有する浮動小数点数形式のデータを初期化する。マイクロコンピュータへの動作電源投入時、組込み制御装置は、動作電源遮断時にバックアップメモリに格納した浮動小数点数形式のデータのサム値と、動作電源遮断時にバックアップメモリに格納した浮動小数点数形式のデータのサム値とを比較することにより非数の有無を判定し、非数を有すると判定したとき、非数を有する浮動小数点数形式のデータを初期化する。【選択図】図１
2010266976.tif 000002
【特許請求の範囲】
【請求項１】
浮動小数点数形式のデータの演算を行う演算処理装置と、バックアップメモリと、を有するマイクロコンピュータを備えた組込み制御装置において、
前記演算処理装置は、
前記マイクロコンピュータへの動作電源遮断時に、前記バックアップメモリに格納する浮動小数点数形式のデータ領域における非数の有無を判定し、前記バックアップメモリに格納する浮動小数点数形式のデータ領域に非数が存在すると判定したとき、非数を有する浮動小数点数形式のデータ領域を初期化し、
前記マイクロコンピュータへの動作電源投入時に、動作電源遮断時に前記バックアップメモリに格納した浮動小数点数形式のデータ領域のサム値と、動作電源投入時に前記バックアップメモリに格納した浮動小数点数形式のデータ領域のサム値とを比較して、前記バックアップメモリに格納する浮動小数点数形式のデータ領域における非数の有無を判定し、前記バックアップメモリに格納する浮動小数点数形式のデータ領域に非数が存在すると判定したとき、非数を有する浮動小数点数形式のデータ領域を初期化する
ことを特徴とする組込み制御装置。
【請求項２】
請求項１に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源遮断時における非数の有無の判定は、
前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について実行する
ことを特徴とする組込み制御装置。
【請求項３】
請求項１に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源遮断時における非数の初期化は、
前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について実行する
ことを特徴とする組込み制御装置。
【請求項４】
請求項１に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源投入時における前記サム値の比較による非数の有無の判定は、
前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について電源遮断時に演算されるサム値と、前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について電源投入時に演算されるサム値との比較により実行する
ことを特徴とする組込み制御装置。
【請求項５】
請求項１に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源投入時における非数の初期化は、
前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について実行する
ことを特徴とする組込み制御装置。
【請求項６】
請求項１又は請求項４に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源の遮断中に再度動作電源が投入された場合にあって、前記動作電源遮断時における前記バックアップメモリの浮動小数点数形式の記憶領域のデータに対する前記非数の判定又は初期化が演算の途中であったとき、
電源遮断時に前記非数の判定に使用された領域のサム値と当該領域についての電源投入時のサム値の比較は、前記演算が終わった範囲の全体又はその所定範囲について実行する
ことを特徴とする組込み制御装置。
【請求項７】
請求項１に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源の遮断中に再度動作電源が投入された場合にあって、前記動作電源遮断時における前記バックアップメモリの浮動小数点数形式の記憶領域のデータに対する前記非数の判定又は初期化が演算の途中であったとき、
前記電源遮断時のサム値と電源投入時のサム値の比較は実行せずに、浮動小数点のデータ範囲の全体又はその所定範囲について非数の有無を判定する
ことを特徴とする組込み制御装置。
【請求項８】
請求項１又は請求項５に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源の遮断中に再度動作電源が投入された場合にあって、前記動作電源遮断時における前記バックアップメモリの浮動小数点数形式の記憶領域のデータに対する前記非数の判定又は初期化が演算の途中であったとき、
前記マイクロコンピュータへの動作電源投入時の非数の初期化は、電源遮断時に前記非数の判定に使用された領域についてのみ実行する
ことを特徴とする組込み制御装置。
【請求項９】
請求項１又は請求項５に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源の遮断中に再度動作電源が投入された場合にあって、前記動作電源遮断時の前記バックアップメモリの浮動小数点数形式の記憶領域のデータの前記非数の判定又は初期化又は前記サム値演算が演算の途中であったとき、
前記マイクロコンピュータへの動作電源投入時、前記バックアップメモリの非数を初期化しない
ことを特徴とする組込み制御装置。
【請求項１０】
請求項２〜請求項７のいずれか１項に記載の組込み制御装置において、
前記所定範囲は、
前記バックアップメモリの浮動小数点数形式の記憶領域のデータを、制御変数と制御状態を観測するためのモニタ変数に区分した場合における、前記制御変数の領域である
ことを特徴とする組込み制御装置。
【請求項１１】
請求項２〜請求項７のいずれか１項に記載の組込み制御装置において、
前記所定範囲は、
前記バックアップメモリの浮動小数点数形式の記憶領域のデータを、各制御で重要な変数と重要でない変数に区分した場合における、前記各制御で重要な変数の領域である
ことを特徴とする組込み制御装置。
【請求項１２】
請求項２〜請求項７のいずれか１項に記載の組込み制御装置において、
前記所定範囲は、
前記バックアップメモリの浮動小数点数形式の記憶領域の全領域である
ことを特徴とする組込み制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御対象機器に対する制御信号を生成する制御装置に関する。例えば、浮動小数点演算を行う中央演算処理装置を備えた組込み制御装置に関する。
【背景技術】
【０００２】
近年、自動車における排気・燃費規制が強化され、要求される操安性・安全性レベルが向上している。そこで、自動車の組込み制御装置においても、制御精度の向上が求められ、浮動小数点数演算を行う中央演算処理装置を備えた制御コントロールユニットが採用され始めた。
【０００３】
浮動小数点数の形式は、ＩＥＥＥ７５４規格によって定義されている。このうち、単精度記憶形式の浮動小数点数は、上位ビットから１ビットの符号部と、８ビットの指数部と、２３ビットの仮数部で定義されている。倍精度記憶形式の浮動小数点は、上位ビットから１ビットの符号部と、１１ビットの指数部と、５２ビットの仮数部で定義されている。これら浮動小数点数で表現可能なデータは、ゼロ、正規化数、非正規化数、無限大、非数のように分類される。このうち、非数は、浮動小数点演算の結果として、不正なオペランドを与えられたために生じた結果を表す値又はシンボルである。非数は、指数部が全て１であり、仮数部が０以外のビットパターンで与えられる。
【０００４】
ＩＥＥＥ７５４規格による浮動小数点演算の場合、非数を使用した演算結果は常に非数となり、演算の途中で非数が発生するとそれが後続する演算に伝播する。このため、フィードバック系の制御や組込み制御装置で頻繁に用いられる学習制御で非数が一旦発生すると、その発生以降で学習制御が機能しなくなるという問題がある。
【０００５】
組込み制御装置において、この非数が発生する条件は、主に２つ考えられる。１つ目の条件は、制御装置へのノイズにより学習制御などに用いられるバックアップメモリ内の浮動小数点数形式のデータの値が非数のビットパターンとなってしまう等の場合である。２つ目の条件は、０÷０や、＋∞−∞といった数値で表現できない浮動小数点数演算によって非数が発生する場合である。
【０００６】
特許文献１に開示された技術では、バックアップメモリの浮動小数点数形式のデータの記憶領域のデータをマイクロコンピュータへの電源投入に伴うシステムの初期化処理の際に非数の有無を判定する。そして、非数が有ると判定された場合、バックアップメモリにおける浮動小数点数形式のデータ領域を初期化する。これにより、たとえ非数が発生した場合でも、マイクロコンピュータへの電源投入に伴うシステムの初期化処理の際に非数が発生したデータ領域を初期化することができる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４０５８８７０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
従来技術を用いれば、マイクロコンピュータへの電源投入に伴うシステムの初期化処理の際に非数の有無を判定し、非数が存在する場合にはバックアップメモリの該当領域を初期化することができる。ただし、一般的にエンジン制御などの組込み制御においては、マイクロコンピュータへの電源投入時に、多数の制御処理を実行しなければならない。このため、従来技術をそのまま応用したのでは演算負荷が増加する可能性がある。
【０００９】
そこで、本発明者は、バックアップメモリに格納される浮動小数点数形式のデータについての非数の発生の有無の判定及び初期化を、演算負荷を増加させることなく実行できる組込み制御装置を提案する。
【課題を解決するための手段】
【００１０】
マイクロコンピュータへの動作電源の遮断時、本発明に係る組込み制御装置の演算装置は、バックアップメモリに格納する浮動小数点数形式のデータの非数の有無を判定する。そして、バックアップメモリに格納する浮動小数点数形式のデータが非数を有すると判定された場合、前述した演算装置は、非数を有する浮動小数点数形式のデータを初期化する。一方、マイクロコンピュータへの動作電源の投入時、前述した演算装置は、動作電源遮断時にバックアップメモリに格納した浮動小数点数形式のデータのサム値と、動作電源投入時にバックアップメモリに格納した浮動小数点数形式のデータのサム値を比較し、バックアップメモリに格納する浮動小数点数形式のデータの非数の有無を判定する。そして、バックアップメモリに格納する浮動小数点数形式のデータが非数を有すると判定された場合、前述した演算装置は、非数を有する浮動小数点数形式のデータを初期化する。
【００１１】
なお、ここでのバックアップメモリとは、マイクロコンピュータへの動作電源遮断中においてもバッテリ電源からの給電により不揮発な状態となる読み書き可能な記憶装置や電気的に書き換え可能な読み取り専用記憶装置（例えばＥＥＰＲＯＭやフラッシュメモリ）等である。
【発明の効果】
【００１２】
本発明の採用により、バックアップメモリに格納する浮動小数点数形式のデータの非数の有無の判定又は初期化を、演算負荷を増加させることなく実行することができる。
【図面の簡単な説明】
【００１３】
【図１】形態例に係る組込み制御装置のシステム構成例を示す図である。
【図２】形態例に係る組込み制御装置で使用するバックアップメモリの形態を説明する図である。
【図３】マイクロコンピュータへの動作電源の投入から動作電源の遮断までの間に実行される基本的な処理動作の流れを説明するフローチャートである。
【図４】IEEE754規格で定められた浮動小数点形式を説明する図である。
【図５】IEEE754規格で定められた浮動小数点形式によって表現可能なデータ形式を説明する図である。
【図６】従来技術による非数の初期化動作を説明するフローチャートである。
【図７Ａ】形態例による非数の初期化動作を説明するフローチャートである。
【図７Ｂ】形態例による非数の初期化動作を説明するフローチャートである。
【図８】形態例による非数の他の初期化動作例を説明するフローチャートである。
【図９】形態例による非数の他の初期化動作例を説明するフローチャートである。
【図１０】形態例による非数の他の初期化動作例を説明するフローチャートである。
【図１１】バックアップメモリ領域内に設定する所定範囲の例を説明する図である。
【図１２】バックアップメモリ領域内に設定する所定範囲の例を説明する図である。
【図１３】バックアップメモリ領域内に設定する所定範囲の例を説明する図である。
【発明を実施するための形態】
【００１４】
以下、図面に基づいて、形態例に係る組み込み制御装置について説明する。なお、形態例における説明や図面は、専ら発明を説明することを目的としたものであり、既知の技術との組み合わせや置換も可能である。
【００１５】
（Ａ）装置の全体構成
図１に、形態例に係る組込み制御装置の全体構成を示す。図１に示す組み込み制御装置は、制御コントロールユニット（Ｃ／Ｕ）１０と、Ｃ／Ｕ１０に給電するバッテリ１９とを有している。なお、制御コントロールユニット（Ｃ／Ｕ）１０は、中央演算処理装置（ＣＰＵ）１２と、読み取り専用記憶装置（ＲＯＭ）１３と、読み書き可能な記憶装置（ＲＡＭ）１４と、制御対象機器１６との間で信号を送受信する入出力装置（Ｉ／Ｏ）１５とで構成される。因みに、制御対象機器１６には、センサ１７とアクチュエータ１８が実装されている。
【００１６】
ここで、ＣＰＵ１２は、浮動小数点数形式の演算を実行できる単一プロセッサであっても良いし、浮動小数点演算用プロセッサとそれ以外の演算用プロセッサとで構成される形態でも良い。
【００１７】
この形態例の場合、ＲＡＭ１４は、バックアップメモリとして使用される。このため、ＲＡＭ１４に対しては、バッテリ１９からマイクロコンピュータ１１への動作電源の遮断（以下、「動作電源遮断」という。）時にも、バッテリ１９からの給電によって不揮発な状態が維持される。もっとも、図２に示すように、マイクロコンピュータ１１は、バックアップメモリとして、フラッシュメモリ２０や電気的に書き換え可能な読み取り専用記憶装置（ＥＥＰＲＯＭ）２１等を使用することもできる。
【００１８】
（Ｂ）動作電源の投入から動作電源の遮断までに実行される基本動作
（Ｂ−１）動作の概要
図３に、バッテリ１９からマイクロコンピュータ１１に対する動作電源の投入（以下、「動作電源投入」という。）から動作電源遮断までの基本的な流れを示す。まず、動作電源の投入により、マイクロコンピュータ１１の動作が開始される（ステップ３１）。次に、マイクロコンピュータ１１は、初期化が必要なバックアップメモリの領域とＲＡＭ１４の領域を初期化する（ステップ３２）。この後、マイクロコンピュータ１１は、動作電源遮断命令が発生するまでステップ３３の処理を繰り返し実行する。ステップ３３において、マイクロコンピュータ１１は、センサ１７からの信号やバックアップメモリ（ＲＡＭ１４、フラッシュメモリ２０、ＥＥＰＲＯＭ２１等）に格納されている値、ＲＯＭ１３に格納されている制御プログラムに基づいて制御処理を実行し、アクチュエータ１７に制御信号を出力する。この処理実行中に動作電源遮断命令が発生した場合、マイクロコンピュータ１１は、バックアップが必要な変数をバックアップメモリ領域へ格納する（ステップ３４）。この後、マイクロコンピュータ１１は、動作電源を遮断する（ステップ３５）。ただし、バックアップメモリ領域が、動作電源遮断中においてもバッテリ１９からの給電により不揮発な状態となるＲＡＭ１４である場合には、バックアップが必要な変数が既にバックアップメモリ領域に格納されているため、ステップ３４は不要となる。
【００１９】
（Ｂ−２）実施例
以下では、Ｃ／Ｕ１０が車載のエンジン制御コントロールユニットであり、制御対象機器１６がガソリン噴射式内燃機関であり、センサ１７が吸入空気量センサ、エンジン回転数センサ及び空燃費センサであり、アクチュエータ１７が燃料噴射弁であるものとする。
【００２０】
イグニッションスイッチがオン操作されて、エンジン制御コントロールユニットに動作電源が投入されると、エンジン制御コントロールユニットは、初期化が必要なバックアップメモリ領域とＲＡＭ領域を初期化する。また、エンジン制御コントロールユニットは、吸入空気量センサから得た吸入空気量情報とエンジン回転数センサから得たエンジン回転数情報とによって算出される燃料噴射量に対し、目標空燃費と空燃費センサの差分から算出した燃料噴射量補正係数を乗算して燃料噴射量とする。そして、エンジン制御コントロールユニットは、算出された燃料噴射量に基づいて燃料噴射弁の開弁時間を制御する信号を出力する。エンジン制御コントロールユニットは、動作電源が投入されている間、この処理動作を繰り返し実行する。
【００２１】
一方、イグニッションスイッチがオフ操作された場合、エンジン制御コントロールユニットは、バックアップが必要な燃料噴射量補正係数をバックアップメモリ領域へ格納する。この後、エンジン制御コントロールユニットに対する動作電源が遮断される。ただし、バックアップメモリ領域が動作電源遮断中においてもバッテリ１９からの給電を受けて不揮発な状態となるＲＡＭ１４の場合、バックアップが必要な変数は既にバックアップメモリ領域に格納されている。このため、燃料噴射量補正係数を改めてＲＡＭ１４に格納する処理は不要となる。
【００２２】
次回のイグニッションスイッチのオン操作時、エンジン制御コントロールユニットは、バックアップメモリ領域に格納されている燃料噴射量補正係数を用いて燃料噴射量を補正する。
【００２３】
なお、制御対象機器１６は、前述したガソリン噴射式内燃機関以外の機器でも構わない。例えば制御対象機器１６はエアコンでも良い。制御対象機器１６がエアコンの場合、制御コントロールユニット１０はエアコンの制御コントローラとなる。また例えば制御対象機器１６は電気モータでも良い。制御対象機器１６が電気モータの場合、制御コントロールユニット１０は電気モータの制御コントローラとなる。いずれにしても、ハードウェアにソフトウェアが予め組み込まれた組込み制御装置であれば、この明細書において説明する技術を適用することができる。
【００２４】
（Ｃ）データ形式
ここでは、燃料噴射量の算出に使用されるデータ形式の例を説明する。図４に、ＩＥＥＥ７５４規格で定められた浮動小数点数形式４１を示す。浮動小数点数形式４１は、ｂｉｔ「３１」からなる１ビット長の符号部４２、ｂｉｔ「３０」〜「２３」からなる８ビット長の指数部４３、ｂｉｔ「２２」〜「０」からなる２３ビット長の仮数部４４の計４バイト長のデータ形式で与えられる。
【００２５】
なお、浮動小数点数形式４１は、図５に示すように、指数部と仮数部の組み合わせで、指数部と仮数部の全ビットが「０」となるゼロ５１、指数部の何れかのビットが「０」となる正規化数５２、指数部の全ビットが「０」で仮数部の何れかのビットが「１」となる非正規化数５３、指数部の全ビットが「１」で仮数部の全ビットが「０」の無限大５４、指数部の全ビットが「１」で仮数部の何れかのビットが「１」となる非数５５に分類される。
【００２６】
（Ｄ）初期化動作例
ここでは、図６及び図７Ａ、図７Ｂを参照して、従来技術による非数の初期化動作と、形態例に係る非数の初期化動作の違いを説明する。
（Ｄ−１）従来例の初期化動作（電源投入から電源遮断までの動作）
まず、図６（ａ）〜図６（ｃ）を参照して、従来技術によるバックアップメモリ内の浮動小数点数形式データの非数の初期化動作を説明する。図６（ａ）は従来技術の基本動作を示し、図６（ｂ）はイニシャルルーチンの内容を示し、図６（ｃ）は非数チェックルーチンを示している。
【００２７】
図６（ａ）に示すように、動作電源が投入されると（ステップ３１）、エンジン制御コントロールユニットは、イニシャルルーチンを起動する（ステップ６０）。図６（ｂ）に示すイニシャルルーチンの内容は後述する。イニシャルルーチンが終了すると、エンジン制御コントロールユニットは、動作電源遮断命令が発生するまでループ処理（ステップ３３）を繰り返し実行する。ステップ３３において、エンジン制御コントロールユニットは、センサ１７から得られた信号やバックアップメモリに格納されている値、ＲＯＭ１３に格納されている制御プログラム等に応じて制御処理を実行し、アクチュエータ１８に対して制御信号を出力する。
【００２８】
動作電源遮断命令が発生すると、エンジン制御コントロールユニットは、バックアップが必要な変数をバックアップメモリ領域へ格納し（ステップ３４）、続いて動作電源を遮断する（ステップ３５）。ただし、この場合も、バックアップメモリ領域が、動作電源遮断中においてもバッテリ１９からの給電が継続されて不揮発な状態となるＲＡＭ１４の場合には、バックアップの必要な変数が既にバックアップメモリ領域に格納されているので、改めて変数を格納する処理動作は不要とされる。
【００２９】
次に、イニシャルルーチン（図６（ｂ））を説明する。イニシャルルーチンが起動されると、エンジン制御コントロールユニットは、非数チェックルーチンを起動する（ステップ６１）。図６（ｃ）に示す非数チェックルーチンの内容は後述する。非数チェックルーチンが終了すると、エンジン制御コントロールユニットは、非数チェックルーチンにおいて非数の発生が確認されたか否かを判定する（ステップ６２）。非数の発生が確認された場合（ステップ６２で肯定結果が得られた場合）、エンジン制御コントロールユニットは、バックアップメモリ領域を初期化する（ステップ６３）。一方、非数の発生が確認されなかった場合（ステップ６２で否定結果が得られた場合）、エンジン制御コントロールユニットは、ステップ６３をパスしてステップ６４に移行する。ステップ６４の実行時、エンジン制御コントロールユニットは、非数発生の有無に関わらず、その他の初期化処理を実行し、イニシャルルーチンを終了する。
【００３０】
次に、非数チェックルーチン（図６（ｃ））を説明する。非数チェックルーチンが開始されると、エンジン制御コントロールユニットは、ループ処理（ステップ６５）を起動する。このループ処理では、バックアップメモリにおける浮動小数点領域の先頭アドレスから最終アドレスまでを範囲として、ステップ６６とステップ６７の処理が繰り返し実行される。まず、ステップ６６において、エンジン制御コントロールユニットは、指定アドレスの指数部の全てが「１」であるか否かを判定する。この判定処理において肯定結果が得られた場合（全て「１」の場合）、エンジン制御コントロールユニットは、ステップ６７に進む。一方、判定処理で否定結果が得られた場合（指数部の全てが「１」ではなかった場合）、エンジン制御コントロールユニットは、ステップ６７をスキップして次のアドレスに進む。ステップ６７において、エンジン制御コントロールユニットは、仮数部が全て「０」であるか否かを判定する。この判定処理において肯定結果が得られた場合（全て「０」の場合）、エンジン制御コントロールユニットは、次のアドレスに進む。一方、判定処理で否定結果が得られた場合（仮数部の全てが「０」ではなかった場合）、エンジン制御コントロールユニットは、フラグの成立等により非数の発生を宣言し、繰り返し処理を即座に終了する（ステップ６８）。なお、非数の発生が確認されることなく、全てのアドレスについての判定処理が終了した場合にも、エンジン制御コントロールユニットは、非数チェックルーチンを終了する。
【００３１】
（Ｄ−２）形態例の処理化動作（電源投入から電源遮断までの動作）
次に、図７Ａ（ａ）〜（ｃ）及び図７Ｂ（ｄ）〜（ｅ）を参照して、形態例に係るバックアップメモリ内の浮動小数点数形式データの非数の初期化動作を説明する。図７Ａ（ａ）は形態例における基本動作を示し、図７Ａ（ｂ）は第１のイニシャルルーチンの内容を示し、図７Ａ（ｃ）は第１の非数チェックルーチンを示し、図７Ｂ（ｄ）は第２のイニシャルルーチンの内容を示し、図７Ｂ（ｅ）は第２の非数チェックルーチンを示している。
【００３２】
図７Ａ（ａ）に示すように、動作電源が投入されると（ステップ３１）、エンジン制御コントロールユニットは、第１のイニシャルルーチンを起動する（ステップ７００）。図７Ａ（ｂ）に示す第１のイニシャルルーチンの内容は後述する。第１のイニシャルルーチンが終了すると、エンジン制御コントロールユニットは、動作電源遮断命令が発生するまでループ処理（ステップ３３）を繰り返し実行する。ステップ３３において、エンジン制御コントロールユニットは、センサ１７から得られた信号やバックアップメモリに格納されている値、ＲＯＭ１３に格納されている制御プログラム等に応じて制御処理を実行し、アクチュエータ１７に対して制御信号を出力する。
【００３３】
動作電源遮断命令が発生すると、エンジン制御コントロールユニットは、第２のイニシャルルーチンを起動する（ステップ７０１）。図７Ｂ（ｄ）に示す第２のイニシャルルーチンの内容は後述する。第２のイニシャルルーチンが終了すると、エンジン制御コントロールユニットは、バックアップが必要な変数をバックアップメモリ領域へ格納し（ステップ３４）、続いて動作電源を遮断する（ステップ３５）。ただし、この場合も、バックアップメモリ領域が、動作電源遮断中においてもバッテリ１９からの給電が継続されて不揮発な状態となるＲＡＭ１４の場合には、バックアップの必要な変数が既にバックアップメモリ領域に格納されているので、改めて変数を格納する処理動作は不要とされる。以上のように、従来例と形態例との違いの一つは、イニシャルルーチンが１回実行されるか２回実行されるかである。
【００３４】
更に、各イニシャルルーチンの内容にも、従来例と形態例には違いがある。まず、動作電源の投入直後に実行される第１のイニシャルルーチン（図７Ａ（ｂ））について説明する。第１のイニシャルルーチンが起動されると、エンジン制御コントロールユニットは、第１の非数チェックルーチンを起動する（ステップ７０２）。図７Ａ（ｃ）に示す第１の非数チェックルーチンの内容は後述する。第１の非数チェックルーチンが終了すると、エンジン制御コントロールユニットは、第１の非数チェックルーチンにおいて非数の発生が確認されたか否かを判定する（ステップ６２）。非数の発生が確認された場合（ステップ６２で肯定結果が得られた場合）、エンジン制御コントロールユニットは、バックアップメモリ領域の所定範囲を初期化する（ステップ７０３）。この所定範囲の与え方については後述する。一方、非数の発生が確認されなかった場合（ステップ６２で否定結果が得られた場合）、エンジン制御コントロールユニットは、ステップ７０３をパスしてステップ６４に移行する。ステップ６４の実行時、エンジン制御コントロールユニットは、非数発生の有無に関わらず、その他の初期化処理を実行し、イニシャルルーチンを終了する。
【００３５】
次に、第１の非数チェックルーチン（図７Ａ（ｃ））を説明する。第１の非数チェックルーチンが開始されると、エンジン制御コントロールユニットは、バックアップメモリ領域の所定範囲についてサム値を演算する（ステップ７０４）。この所定範囲は、図７Ｂ（ｄ）のステップ７０８で使用した所定範囲と同じものを使用する。この後、エンジン制御コントロールユニットは、ステップ７０４で算出された電源投入時のサム値と、後述するステップ７０８で算出される電源遮断時のサム値とを比較する（ステップ７０５）。両者が一致する場合（ステップ７０５で肯定結果が得られた場合）、エンジン制御コントロールユニットは、非数が発生していないものと判定して第１の非数チェックルーチンを終了する。一方、両者が一致しない場合（ステップ７０５で否定結果が得られた場合）、エンジン制御コントロールユニットは、非数の発生を確認すると共にフラグを成立させる等の宣言を行って第１の非数チェックルーチンを終了する。
【００３６】
次に、動作電源の遮断命令発生後に実行される第２のイニシャルルーチン（図７Ｂ（ｄ））を説明する。第２のイニシャルルーチンが起動されると、エンジン制御コントロールユニットは、第２の非数チェックルーチンを起動する（ステップ７０６）。図７Ｂ（ｅ）に示す第２の非数チェックルーチンの内容は後述する。第２の非数チェックルーチンが終了すると、エンジン制御コントロールユニットは、第２の非数チェックルーチンにおいて非数の発生が確認されたか否かを判定する（ステップ６２）。非数の発生が確認された場合（ステップ６２で肯定結果が得られた場合）、エンジン制御コントロールユニットは、バックアップメモリ領域の所定範囲を初期化する（ステップ７０７）。この所定範囲の与え方については後述する。一方、非数の発生が確認されなかった場合（ステップ６２で否定結果が得られた場合）、エンジン制御コントロールユニットは、ステップ７０７をパスしてステップ７０８に移行する。ステップ７０８の実行時、エンジン制御コントロールユニットは、非数発生有無に関わらず、バックアップメモリに格納した浮動小数点数形式における所定範囲のデータのサム値を演算し、その結果をバックアップメモリ領域に格納してイニシャルルーチンを終了する。ここでの所定範囲は、後述するように予め与えておく。
【００３７】
次に、第２の非数チェックルーチン（図７Ｂ（ｅ））を説明する。第２の非数チェックルーチンが開始されると、エンジン制御コントロールユニットは、バックアップメモリに格納した所定範囲の浮動小数点形式のデータのうちの所定範囲のデータの塊を処理単位としてループ処理（ステップ７０９）を実行する。このループ処理において、エンジン制御コントロールユニットは、所定範囲のデータの塊の指数部の全てが「１」であり、かつ、仮数部の何れかに「１」があるか否かを判定する（ステップ７１０）。
【００３８】
判定処理で否定結果が得られた場合、エンジン制御コントロールユニットは、次のデータの塊の処理に移行する。一方、肯定結果が得られた場合、エンジン制御コントロールユニットは、非数が発生したことをフラグの成立等により宣言し、その時点で繰り返し処理を終了する。なお、非数の発生が確認されることなく、全てのデータの塊について前述した判定処理が終了した場合にも、エンジン制御コントロールユニットは、非数チェックルーチンを終了する。
【００３９】
（Ｄ−３）形態例による効果
従来手法ではステップ３３の制御処理の以前に設けていたステップ６０（図６）と同等のイニシャルルーチンを、この形態例の場合には、演算負荷が低い動作電源遮断命令後のステップ７０１（第２のイニシャルルーチン）へ移動する。しかも、この形態例の場合には、非数の判定を所定範囲に限定する。この結果、形態例の場合には、動作電源投入（ステップ３１）から制御処理（ステップ３３）への移行時までの演算負荷を低減することができる。
【００４０】
また、形態例の場合には、制御処理（ステップ３３）の前に実行する第１のイニシャルルーチンでは、図７Ａ（ｃ）に示すように、所定範囲のサム値のみの比較により非数の発生を確認するため、チェックから初期化までの演算負荷を数十パーセント低減することができる。
【００４１】
（Ｄ−４）形態例の処理化動作（遮断動作中に電源の再投入があった場合の動作）
以上の説明では、第２のイニシャルルーチンが完了した後に動作電源が遮断され、その途中で動作電源が再投入しないことを前提とした。
【００４２】
しかし、実際の運用では、動作電源の遮断命令から動作電源が実際に遮断されるまでの間に再度動作電源が投入される場合も考えられる。すなわち、図７Ａ（ａ）の第２のイニシャルルーチン（ステップ７０１）の実施中に、動作電源が再投入される場合も考えられる。
【００４３】
以下では、図８、図９、図１０を参照して、動作電源遮断命令から動作電源が遮断されるまでの間に再度動作電源が投入された場合におけるバックアップメモリ内の浮動小数点数形式データの非数の初期化動作を説明する。
【００４４】
（１）動作例１
まず、図８を参照して１つ目の動作例を説明する。この場合、形態例に係るエンジン制御コントロールユニットは、第２のイニシャルルーチンを図８に示すように短縮し、動作電源投入命令を待機させる。
【００４５】
第２の非数チェックルーチン（ステップ７０７）が既に起動している場合、エンジン制御コントロールユニットは、図７Ｂ（ｅ）の繰り返し処理を強制的に中断し、第２の非数チェックルーチンを強制的に終了する。
【００４６】
そして、ステップ８１において、エンジン制御コントロールユニットは、第２の非数チェックルーチンのうち判定処理又は演算処理が完了しているバックアップメモリ領域の範囲についてのみサム値を演算する。この際、エンジン制御コントロールユニットは、演算処理又は判定処理が完了している領域を識別できる情報（例えば該当領域の先頭アドレスと終了アドレス）を対応するサム値と共に格納する。
【００４７】
その後、エンジン制御コントロールユニットは、図７Ａ（ａ）のステップ３１、ステップ７００を順番に実行する。すなわち、第１のイニシャルルーチン（ステップ７００）を実行する。この際、第１のイニシャルルーチンでは、第２のイニシャルルーチンで処理が完了した範囲を、ステップ７０３及びステップ７０４の所定範囲に設定する。これにより、動作電源投入時に演算されるサム値の演算範囲と電源遮断動作中に中断したサム値の演算範囲の同一性が確保され、ステップ７０５において意味のある判定動作を行うことができる。すなわち、動作電源の遮断中に電源が再度投入された場合にも、動作電源遮断動作中に非数判定が行われた領域に関しては、動作電源投入時に非数の有無を判定することができる。また、非数が発見された場合には、同領域を初期化することができる。
【００４８】
（２）動作例２
続いて、図９を参照して２つ目の動作例を説明する。この動作例は、第２のイニシャルルーチンの実施が不完全に終了した場合に好適な他の第１のイニシャルルーチンを表している。この動作例の場合、エンジン制御コントロールユニットは、第１のイニシャルルーチンとして、図７Ａ（ｃ）に示した第１の非数チェックルーチンを使用するのではなく、図７Ｂ（ｅ）に示した第２の非数チェックルーチンを使用する。この動作例の採用により、エンジン制御コントロールユニットは、動作電源の再投入時にバックアップメモリ内にある浮動小数点数形式データの全てのデータについて非数の有無を判定することができ、同領域の初期化も実現できる。
【００４９】
（３）動作例３
最後に、図１０を参照して３つ目の動作例を説明する。この動作例は、第２の動作例と同様に、第２のイニシャルルーチンの実施が不完全に終了した場合に好適な他の第１のイニシャルルーチンを表している。この動作例の場合、エンジン制御コントロールユニットは、図７Ａ（ｂ）のステップ７０２、ステップ６２、ステップ７０３を実施せず、バックアップメモリを初期化しない。この動作例は、演算負荷が大きいときに適した動作である。このように、この動作例の場合には、動作電源の再投入時には非数の判定処理と初期化処理の両方を省略することができる。このため、この動作例を採用したエンジン制御コントロールユニットでは、動作電源の再投入時における演算負荷を大幅に低減することができる。
【００５０】
（Ｅ）所定範囲の実施例
ここでは、図１１〜１３を参照して、非数の判定処理や初期化の範囲を規定する所定範囲に関する実施例を説明する。
（Ｅ−１）実施例１
図１１を参照して、所定範囲に関する１つ目の実施例を説明する。図１１に示すバックアップメモリ領域１１０は、浮動小数点数の領域１１１と、固定小数点数の領域１１２に区分される。浮動小数点数の領域１１１と固定小数点数の領域１１２は、データのアライメントや読み書きの容易さ等を考慮すると、各領域が区分された状態で連続して格納されることが望ましい。しかし、本実施例におけるバックアップメモリのデータ構造は、各領域が区分された状態で連続して格納されていない場合にも適用される。
【００５１】
また、図１１では、浮動小数点数の領域１１１を制御変数の領域１１３と、制御状態を観測するためのモニタ変数の領域１１４とに区分して格納した状態を表している。勿論、浮動小数点数の領域１１１の場合も、読み書きの容易さ等を考慮すると、各変数の領域は区分された状態で連続して格納されていることが望ましい。しかし、本実施例における浮動小数点の領域１１１のデータ構造も、各領域が区分された状態で連続して格納されていない場合にも適用される。
【００５２】
この１つ目の実施例では、制御変数の領域１１３を、図７Ａ及び図７Ｂにおける所定範囲とする。この実施例の場合、制御変数の領域１１３に対して、優先的に各種処理を実行することが可能となる。例えば演算負荷が高い状態の場合には、所定範囲を制御変数の領域１１３とすることにより、演算負荷を低減することができる。また、動作電源の遮断中に動作電源が再投入された場合等においては、この実施例のように制御変数の領域１１３を優先的に処理することにより、非数を一掃できる可能性を高めることができる。
【００５３】
（Ｅ−２）実施例２
図１２を参照して、所定範囲に関する２つ目の実施例を説明する。図１２の場合も、バックアップメモリ領域１１０は、浮動小数点数の領域１１１と固定小数点の領域１１２に区分される。これらの区分が必須でないこと等は実施例１と同じである。この実施例の場合、浮動小数点数の領域１１１を、各制御で重要な変数の領域１１５と重要でない変数の領域１１６に区分してデータを格納する。この場合も、区分した変数毎に連続してデータを格納することは必須でない。しかし、読み書きの容易さ等を考慮すると、やはり各データが連続的に格納されることが望ましいことは実施例１と同様である。
【００５４】
この２つ目の実施例では、各制御で重要な変数の領域１１６を所定範囲とする。この実施例の場合、各制御で重要な変数の領域１１６に対して、優先的に各種処理を実行することが可能となる。例えば演算負荷が高い状態の場合には、所定の範囲を各制御で重要な変数の領域１１６とすることにより、演算負荷を低減することができる。また、動作電源の遮断中に動作電源が再投入された場合等においては、この実施例のように各制御で重要な変数の領域１１６を優先的に処理することにより、非数を一掃できる可能性を高めることができる。
【００５５】
（Ｅ−３）実施例３
図１３を参照して、所定範囲に関する３つ目の実施例を説明する。図１３の場合も、バックアップメモリ領域１１０は、浮動小数点数の領域１１１と固定小数点の領域１１２に区分される。これらの区分が必須でないことは実施例１と同じである。この実施例の場合、浮動小数点数の領域１１１の全領域１１７を所定範囲とする。すなわち、この実施例では、非数が発生し易い浮動小数点の領域１１１を所定範囲とする。従って、この実施例の場合には、バックアップメモリ内の非数の一掃が可能性となる。
【００５６】
（Ｆ）その他
前述の形態例の場合には、単精度浮動小数点数データ形式を扱う組込み制御装置の場合について各形態例を説明したが、倍精度浮動小数点データ形式を扱う組込み制御装置についても前述した仕組みを同様に適用することができる。
【００５７】
また、本発明は、前述した形態例の説明に限定されるものではなく、特許請求の範囲に記載された発明の範囲において様々な変更が可能であることは当業者によって容易に理解される。
【符号の説明】
【００５８】
１０…制御コントロールユニット（Ｃ／Ｕ）、１１…マイクロコンピュータ、１２…中央演算処理装置（ＣＰＵ）、１３…読み取り専用記憶装置（ＲＯＭ）、１４…読み書き可能な記憶装置（ＲＡＭ）、１５…入出力装置（Ｉ／Ｏ）、１６…制御対象機器、１７…センサ、１８…アクチュエータ、１９…車載バッテリ、２０…フラッシュメモリ、２１…電気的に書き換え可能な読み取り専用記憶装置（ＥＥＰＲＯＭ）。
【図１】
2010266976.tif 000003
【図２】
2010266976.tif 000004
【図３】
2010266976.tif 000005
【図４】
2010266976.tif 000006
【図５】
2010266976.tif 000007
【図６】
2010266976.tif 000008
【図７Ａ】
2010266976.tif 000009
【図７Ｂ】
2010266976.tif 000010
【図８】
2010266976.tif 000011
【図９】
2010266976.tif 000012
【図１０】
2010266976.tif 000013
【図１１】
2010266976.tif 000014
【図１２】
2010266976.tif 000015
【図１３】
2010266976.tif 000016