説明

浮動小数点演算を用いた組込み制御装置

【課題】バックアップメモリに格納する浮動小数点数形式のデータの非数の有無の判定及び初期化を、演算負荷を増加させることなく実行できる組込み制御装置を提供する。
【解決手段】マイクロコンピュータへの動作電源遮断時、組込み制御装置は、バックアップメモリに格納する浮動小数点数形式のデータの非数の有無を判定し、非数を有すると判定した場合、非数を有する浮動小数点数形式のデータを初期化する。マイクロコンピュータへの動作電源投入時、組込み制御装置は、動作電源遮断時にバックアップメモリに格納した浮動小数点数形式のデータのサム値と、動作電源遮断時にバックアップメモリに格納した浮動小数点数形式のデータのサム値とを比較することにより非数の有無を判定し、非数を有すると判定したとき、非数を有する浮動小数点数形式のデータを初期化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、制御対象機器に対する制御信号を生成する制御装置に関する。例えば、浮動小数点演算を行う中央演算処理装置を備えた組込み制御装置に関する。
【背景技術】
【0002】
近年、自動車における排気・燃費規制が強化され、要求される操安性・安全性レベルが向上している。そこで、自動車の組込み制御装置においても、制御精度の向上が求められ、浮動小数点数演算を行う中央演算処理装置を備えた制御コントロールユニットが採用され始めた。
【0003】
浮動小数点数の形式は、IEEE754規格によって定義されている。このうち、単精度記憶形式の浮動小数点数は、上位ビットから1ビットの符号部と、8ビットの指数部と、23ビットの仮数部で定義されている。倍精度記憶形式の浮動小数点は、上位ビットから1ビットの符号部と、11ビットの指数部と、52ビットの仮数部で定義されている。これら浮動小数点数で表現可能なデータは、ゼロ、正規化数、非正規化数、無限大、非数のように分類される。このうち、非数は、浮動小数点演算の結果として、不正なオペランドを与えられたために生じた結果を表す値又はシンボルである。非数は、指数部が全て1であり、仮数部が0以外のビットパターンで与えられる。
【0004】
IEEE754規格による浮動小数点演算の場合、非数を使用した演算結果は常に非数となり、演算の途中で非数が発生するとそれが後続する演算に伝播する。このため、フィードバック系の制御や組込み制御装置で頻繁に用いられる学習制御で非数が一旦発生すると、その発生以降で学習制御が機能しなくなるという問題がある。
【0005】
組込み制御装置において、この非数が発生する条件は、主に2つ考えられる。1つ目の条件は、制御装置へのノイズにより学習制御などに用いられるバックアップメモリ内の浮動小数点数形式のデータの値が非数のビットパターンとなってしまう等の場合である。2つ目の条件は、0÷0や、+∞−∞といった数値で表現できない浮動小数点数演算によって非数が発生する場合である。
【0006】
特許文献1に開示された技術では、バックアップメモリの浮動小数点数形式のデータの記憶領域のデータをマイクロコンピュータへの電源投入に伴うシステムの初期化処理の際に非数の有無を判定する。そして、非数が有ると判定された場合、バックアップメモリにおける浮動小数点数形式のデータ領域を初期化する。これにより、たとえ非数が発生した場合でも、マイクロコンピュータへの電源投入に伴うシステムの初期化処理の際に非数が発生したデータ領域を初期化することができる。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特許第4058870号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
従来技術を用いれば、マイクロコンピュータへの電源投入に伴うシステムの初期化処理の際に非数の有無を判定し、非数が存在する場合にはバックアップメモリの該当領域を初期化することができる。ただし、一般的にエンジン制御などの組込み制御においては、マイクロコンピュータへの電源投入時に、多数の制御処理を実行しなければならない。このため、従来技術をそのまま応用したのでは演算負荷が増加する可能性がある。
【0009】
そこで、本発明者は、バックアップメモリに格納される浮動小数点数形式のデータについての非数の発生の有無の判定及び初期化を、演算負荷を増加させることなく実行できる組込み制御装置を提案する。
【課題を解決するための手段】
【0010】
マイクロコンピュータへの動作電源の遮断時、本発明に係る組込み制御装置の演算装置は、バックアップメモリに格納する浮動小数点数形式のデータの非数の有無を判定する。そして、バックアップメモリに格納する浮動小数点数形式のデータが非数を有すると判定された場合、前述した演算装置は、非数を有する浮動小数点数形式のデータを初期化する。一方、マイクロコンピュータへの動作電源の投入時、前述した演算装置は、動作電源遮断時にバックアップメモリに格納した浮動小数点数形式のデータのサム値と、動作電源投入時にバックアップメモリに格納した浮動小数点数形式のデータのサム値を比較し、バックアップメモリに格納する浮動小数点数形式のデータの非数の有無を判定する。そして、バックアップメモリに格納する浮動小数点数形式のデータが非数を有すると判定された場合、前述した演算装置は、非数を有する浮動小数点数形式のデータを初期化する。
【0011】
なお、ここでのバックアップメモリとは、マイクロコンピュータへの動作電源遮断中においてもバッテリ電源からの給電により不揮発な状態となる読み書き可能な記憶装置や電気的に書き換え可能な読み取り専用記憶装置(例えばEEPROMやフラッシュメモリ)等である。
【発明の効果】
【0012】
本発明の採用により、バックアップメモリに格納する浮動小数点数形式のデータの非数の有無の判定又は初期化を、演算負荷を増加させることなく実行することができる。
【図面の簡単な説明】
【0013】
【図1】形態例に係る組込み制御装置のシステム構成例を示す図である。
【図2】形態例に係る組込み制御装置で使用するバックアップメモリの形態を説明する図である。
【図3】マイクロコンピュータへの動作電源の投入から動作電源の遮断までの間に実行される基本的な処理動作の流れを説明するフローチャートである。
【図4】IEEE754規格で定められた浮動小数点形式を説明する図である。
【図5】IEEE754規格で定められた浮動小数点形式によって表現可能なデータ形式を説明する図である。
【図6】従来技術による非数の初期化動作を説明するフローチャートである。
【図7A】形態例による非数の初期化動作を説明するフローチャートである。
【図7B】形態例による非数の初期化動作を説明するフローチャートである。
【図8】形態例による非数の他の初期化動作例を説明するフローチャートである。
【図9】形態例による非数の他の初期化動作例を説明するフローチャートである。
【図10】形態例による非数の他の初期化動作例を説明するフローチャートである。
【図11】バックアップメモリ領域内に設定する所定範囲の例を説明する図である。
【図12】バックアップメモリ領域内に設定する所定範囲の例を説明する図である。
【図13】バックアップメモリ領域内に設定する所定範囲の例を説明する図である。
【発明を実施するための形態】
【0014】
以下、図面に基づいて、形態例に係る組み込み制御装置について説明する。なお、形態例における説明や図面は、専ら発明を説明することを目的としたものであり、既知の技術との組み合わせや置換も可能である。
【0015】
(A)装置の全体構成
図1に、形態例に係る組込み制御装置の全体構成を示す。図1に示す組み込み制御装置は、制御コントロールユニット(C/U)10と、C/U10に給電するバッテリ19とを有している。なお、制御コントロールユニット(C/U)10は、中央演算処理装置(CPU)12と、読み取り専用記憶装置(ROM)13と、読み書き可能な記憶装置(RAM)14と、制御対象機器16との間で信号を送受信する入出力装置(I/O)15とで構成される。因みに、制御対象機器16には、センサ17とアクチュエータ18が実装されている。
【0016】
ここで、CPU12は、浮動小数点数形式の演算を実行できる単一プロセッサであっても良いし、浮動小数点演算用プロセッサとそれ以外の演算用プロセッサとで構成される形態でも良い。
【0017】
この形態例の場合、RAM14は、バックアップメモリとして使用される。このため、RAM14に対しては、バッテリ19からマイクロコンピュータ11への動作電源の遮断(以下、「動作電源遮断」という。)時にも、バッテリ19からの給電によって不揮発な状態が維持される。もっとも、図2に示すように、マイクロコンピュータ11は、バックアップメモリとして、フラッシュメモリ20や電気的に書き換え可能な読み取り専用記憶装置(EEPROM)21等を使用することもできる。
【0018】
(B)動作電源の投入から動作電源の遮断までに実行される基本動作
(B−1)動作の概要
図3に、バッテリ19からマイクロコンピュータ11に対する動作電源の投入(以下、「動作電源投入」という。)から動作電源遮断までの基本的な流れを示す。まず、動作電源の投入により、マイクロコンピュータ11の動作が開始される(ステップ31)。次に、マイクロコンピュータ11は、初期化が必要なバックアップメモリの領域とRAM14の領域を初期化する(ステップ32)。この後、マイクロコンピュータ11は、動作電源遮断命令が発生するまでステップ33の処理を繰り返し実行する。ステップ33において、マイクロコンピュータ11は、センサ17からの信号やバックアップメモリ(RAM14、フラッシュメモリ20、EEPROM21等)に格納されている値、ROM13に格納されている制御プログラムに基づいて制御処理を実行し、アクチュエータ17に制御信号を出力する。この処理実行中に動作電源遮断命令が発生した場合、マイクロコンピュータ11は、バックアップが必要な変数をバックアップメモリ領域へ格納する(ステップ34)。この後、マイクロコンピュータ11は、動作電源を遮断する(ステップ35)。ただし、バックアップメモリ領域が、動作電源遮断中においてもバッテリ19からの給電により不揮発な状態となるRAM14である場合には、バックアップが必要な変数が既にバックアップメモリ領域に格納されているため、ステップ34は不要となる。
【0019】
(B−2)実施例
以下では、C/U10が車載のエンジン制御コントロールユニットであり、制御対象機器16がガソリン噴射式内燃機関であり、センサ17が吸入空気量センサ、エンジン回転数センサ及び空燃費センサであり、アクチュエータ17が燃料噴射弁であるものとする。
【0020】
イグニッションスイッチがオン操作されて、エンジン制御コントロールユニットに動作電源が投入されると、エンジン制御コントロールユニットは、初期化が必要なバックアップメモリ領域とRAM領域を初期化する。また、エンジン制御コントロールユニットは、吸入空気量センサから得た吸入空気量情報とエンジン回転数センサから得たエンジン回転数情報とによって算出される燃料噴射量に対し、目標空燃費と空燃費センサの差分から算出した燃料噴射量補正係数を乗算して燃料噴射量とする。そして、エンジン制御コントロールユニットは、算出された燃料噴射量に基づいて燃料噴射弁の開弁時間を制御する信号を出力する。エンジン制御コントロールユニットは、動作電源が投入されている間、この処理動作を繰り返し実行する。
【0021】
一方、イグニッションスイッチがオフ操作された場合、エンジン制御コントロールユニットは、バックアップが必要な燃料噴射量補正係数をバックアップメモリ領域へ格納する。この後、エンジン制御コントロールユニットに対する動作電源が遮断される。ただし、バックアップメモリ領域が動作電源遮断中においてもバッテリ19からの給電を受けて不揮発な状態となるRAM14の場合、バックアップが必要な変数は既にバックアップメモリ領域に格納されている。このため、燃料噴射量補正係数を改めてRAM14に格納する処理は不要となる。
【0022】
次回のイグニッションスイッチのオン操作時、エンジン制御コントロールユニットは、バックアップメモリ領域に格納されている燃料噴射量補正係数を用いて燃料噴射量を補正する。
【0023】
なお、制御対象機器16は、前述したガソリン噴射式内燃機関以外の機器でも構わない。例えば制御対象機器16はエアコンでも良い。制御対象機器16がエアコンの場合、制御コントロールユニット10はエアコンの制御コントローラとなる。また例えば制御対象機器16は電気モータでも良い。制御対象機器16が電気モータの場合、制御コントロールユニット10は電気モータの制御コントローラとなる。いずれにしても、ハードウェアにソフトウェアが予め組み込まれた組込み制御装置であれば、この明細書において説明する技術を適用することができる。
【0024】
(C)データ形式
ここでは、燃料噴射量の算出に使用されるデータ形式の例を説明する。図4に、IEEE754規格で定められた浮動小数点数形式41を示す。浮動小数点数形式41は、bit「31」からなる1ビット長の符号部42、bit「30」〜「23」からなる8ビット長の指数部43、bit「22」〜「0」からなる23ビット長の仮数部44の計4バイト長のデータ形式で与えられる。
【0025】
なお、浮動小数点数形式41は、図5に示すように、指数部と仮数部の組み合わせで、指数部と仮数部の全ビットが「0」となるゼロ51、指数部の何れかのビットが「0」となる正規化数52、指数部の全ビットが「0」で仮数部の何れかのビットが「1」となる非正規化数53、指数部の全ビットが「1」で仮数部の全ビットが「0」の無限大54、指数部の全ビットが「1」で仮数部の何れかのビットが「1」となる非数55に分類される。
【0026】
(D)初期化動作例
ここでは、図6及び図7A、図7Bを参照して、従来技術による非数の初期化動作と、形態例に係る非数の初期化動作の違いを説明する。
(D−1)従来例の初期化動作(電源投入から電源遮断までの動作)
まず、図6(a)〜図6(c)を参照して、従来技術によるバックアップメモリ内の浮動小数点数形式データの非数の初期化動作を説明する。図6(a)は従来技術の基本動作を示し、図6(b)はイニシャルルーチンの内容を示し、図6(c)は非数チェックルーチンを示している。
【0027】
図6(a)に示すように、動作電源が投入されると(ステップ31)、エンジン制御コントロールユニットは、イニシャルルーチンを起動する(ステップ60)。図6(b)に示すイニシャルルーチンの内容は後述する。イニシャルルーチンが終了すると、エンジン制御コントロールユニットは、動作電源遮断命令が発生するまでループ処理(ステップ33)を繰り返し実行する。ステップ33において、エンジン制御コントロールユニットは、センサ17から得られた信号やバックアップメモリに格納されている値、ROM13に格納されている制御プログラム等に応じて制御処理を実行し、アクチュエータ18に対して制御信号を出力する。
【0028】
動作電源遮断命令が発生すると、エンジン制御コントロールユニットは、バックアップが必要な変数をバックアップメモリ領域へ格納し(ステップ34)、続いて動作電源を遮断する(ステップ35)。ただし、この場合も、バックアップメモリ領域が、動作電源遮断中においてもバッテリ19からの給電が継続されて不揮発な状態となるRAM14の場合には、バックアップの必要な変数が既にバックアップメモリ領域に格納されているので、改めて変数を格納する処理動作は不要とされる。
【0029】
次に、イニシャルルーチン(図6(b))を説明する。イニシャルルーチンが起動されると、エンジン制御コントロールユニットは、非数チェックルーチンを起動する(ステップ61)。図6(c)に示す非数チェックルーチンの内容は後述する。非数チェックルーチンが終了すると、エンジン制御コントロールユニットは、非数チェックルーチンにおいて非数の発生が確認されたか否かを判定する(ステップ62)。非数の発生が確認された場合(ステップ62で肯定結果が得られた場合)、エンジン制御コントロールユニットは、バックアップメモリ領域を初期化する(ステップ63)。一方、非数の発生が確認されなかった場合(ステップ62で否定結果が得られた場合)、エンジン制御コントロールユニットは、ステップ63をパスしてステップ64に移行する。ステップ64の実行時、エンジン制御コントロールユニットは、非数発生の有無に関わらず、その他の初期化処理を実行し、イニシャルルーチンを終了する。
【0030】
次に、非数チェックルーチン(図6(c))を説明する。非数チェックルーチンが開始されると、エンジン制御コントロールユニットは、ループ処理(ステップ65)を起動する。このループ処理では、バックアップメモリにおける浮動小数点領域の先頭アドレスから最終アドレスまでを範囲として、ステップ66とステップ67の処理が繰り返し実行される。まず、ステップ66において、エンジン制御コントロールユニットは、指定アドレスの指数部の全てが「1」であるか否かを判定する。この判定処理において肯定結果が得られた場合(全て「1」の場合)、エンジン制御コントロールユニットは、ステップ67に進む。一方、判定処理で否定結果が得られた場合(指数部の全てが「1」ではなかった場合)、エンジン制御コントロールユニットは、ステップ67をスキップして次のアドレスに進む。ステップ67において、エンジン制御コントロールユニットは、仮数部が全て「0」であるか否かを判定する。この判定処理において肯定結果が得られた場合(全て「0」の場合)、エンジン制御コントロールユニットは、次のアドレスに進む。一方、判定処理で否定結果が得られた場合(仮数部の全てが「0」ではなかった場合)、エンジン制御コントロールユニットは、フラグの成立等により非数の発生を宣言し、繰り返し処理を即座に終了する(ステップ68)。なお、非数の発生が確認されることなく、全てのアドレスについての判定処理が終了した場合にも、エンジン制御コントロールユニットは、非数チェックルーチンを終了する。
【0031】
(D−2)形態例の処理化動作(電源投入から電源遮断までの動作)
次に、図7A(a)〜(c)及び図7B(d)〜(e)を参照して、形態例に係るバックアップメモリ内の浮動小数点数形式データの非数の初期化動作を説明する。図7A(a)は形態例における基本動作を示し、図7A(b)は第1のイニシャルルーチンの内容を示し、図7A(c)は第1の非数チェックルーチンを示し、図7B(d)は第2のイニシャルルーチンの内容を示し、図7B(e)は第2の非数チェックルーチンを示している。
【0032】
図7A(a)に示すように、動作電源が投入されると(ステップ31)、エンジン制御コントロールユニットは、第1のイニシャルルーチンを起動する(ステップ700)。図7A(b)に示す第1のイニシャルルーチンの内容は後述する。第1のイニシャルルーチンが終了すると、エンジン制御コントロールユニットは、動作電源遮断命令が発生するまでループ処理(ステップ33)を繰り返し実行する。ステップ33において、エンジン制御コントロールユニットは、センサ17から得られた信号やバックアップメモリに格納されている値、ROM13に格納されている制御プログラム等に応じて制御処理を実行し、アクチュエータ17に対して制御信号を出力する。
【0033】
動作電源遮断命令が発生すると、エンジン制御コントロールユニットは、第2のイニシャルルーチンを起動する(ステップ701)。図7B(d)に示す第2のイニシャルルーチンの内容は後述する。第2のイニシャルルーチンが終了すると、エンジン制御コントロールユニットは、バックアップが必要な変数をバックアップメモリ領域へ格納し(ステップ34)、続いて動作電源を遮断する(ステップ35)。ただし、この場合も、バックアップメモリ領域が、動作電源遮断中においてもバッテリ19からの給電が継続されて不揮発な状態となるRAM14の場合には、バックアップの必要な変数が既にバックアップメモリ領域に格納されているので、改めて変数を格納する処理動作は不要とされる。以上のように、従来例と形態例との違いの一つは、イニシャルルーチンが1回実行されるか2回実行されるかである。
【0034】
更に、各イニシャルルーチンの内容にも、従来例と形態例には違いがある。まず、動作電源の投入直後に実行される第1のイニシャルルーチン(図7A(b))について説明する。第1のイニシャルルーチンが起動されると、エンジン制御コントロールユニットは、第1の非数チェックルーチンを起動する(ステップ702)。図7A(c)に示す第1の非数チェックルーチンの内容は後述する。第1の非数チェックルーチンが終了すると、エンジン制御コントロールユニットは、第1の非数チェックルーチンにおいて非数の発生が確認されたか否かを判定する(ステップ62)。非数の発生が確認された場合(ステップ62で肯定結果が得られた場合)、エンジン制御コントロールユニットは、バックアップメモリ領域の所定範囲を初期化する(ステップ703)。この所定範囲の与え方については後述する。一方、非数の発生が確認されなかった場合(ステップ62で否定結果が得られた場合)、エンジン制御コントロールユニットは、ステップ703をパスしてステップ64に移行する。ステップ64の実行時、エンジン制御コントロールユニットは、非数発生の有無に関わらず、その他の初期化処理を実行し、イニシャルルーチンを終了する。
【0035】
次に、第1の非数チェックルーチン(図7A(c))を説明する。第1の非数チェックルーチンが開始されると、エンジン制御コントロールユニットは、バックアップメモリ領域の所定範囲についてサム値を演算する(ステップ704)。この所定範囲は、図7B(d)のステップ708で使用した所定範囲と同じものを使用する。この後、エンジン制御コントロールユニットは、ステップ704で算出された電源投入時のサム値と、後述するステップ708で算出される電源遮断時のサム値とを比較する(ステップ705)。両者が一致する場合(ステップ705で肯定結果が得られた場合)、エンジン制御コントロールユニットは、非数が発生していないものと判定して第1の非数チェックルーチンを終了する。一方、両者が一致しない場合(ステップ705で否定結果が得られた場合)、エンジン制御コントロールユニットは、非数の発生を確認すると共にフラグを成立させる等の宣言を行って第1の非数チェックルーチンを終了する。
【0036】
次に、動作電源の遮断命令発生後に実行される第2のイニシャルルーチン(図7B(d))を説明する。第2のイニシャルルーチンが起動されると、エンジン制御コントロールユニットは、第2の非数チェックルーチンを起動する(ステップ706)。図7B(e)に示す第2の非数チェックルーチンの内容は後述する。第2の非数チェックルーチンが終了すると、エンジン制御コントロールユニットは、第2の非数チェックルーチンにおいて非数の発生が確認されたか否かを判定する(ステップ62)。非数の発生が確認された場合(ステップ62で肯定結果が得られた場合)、エンジン制御コントロールユニットは、バックアップメモリ領域の所定範囲を初期化する(ステップ707)。この所定範囲の与え方については後述する。一方、非数の発生が確認されなかった場合(ステップ62で否定結果が得られた場合)、エンジン制御コントロールユニットは、ステップ707をパスしてステップ708に移行する。ステップ708の実行時、エンジン制御コントロールユニットは、非数発生有無に関わらず、バックアップメモリに格納した浮動小数点数形式における所定範囲のデータのサム値を演算し、その結果をバックアップメモリ領域に格納してイニシャルルーチンを終了する。ここでの所定範囲は、後述するように予め与えておく。
【0037】
次に、第2の非数チェックルーチン(図7B(e))を説明する。第2の非数チェックルーチンが開始されると、エンジン制御コントロールユニットは、バックアップメモリに格納した所定範囲の浮動小数点形式のデータのうちの所定範囲のデータの塊を処理単位としてループ処理(ステップ709)を実行する。このループ処理において、エンジン制御コントロールユニットは、所定範囲のデータの塊の指数部の全てが「1」であり、かつ、仮数部の何れかに「1」があるか否かを判定する(ステップ710)。
【0038】
判定処理で否定結果が得られた場合、エンジン制御コントロールユニットは、次のデータの塊の処理に移行する。一方、肯定結果が得られた場合、エンジン制御コントロールユニットは、非数が発生したことをフラグの成立等により宣言し、その時点で繰り返し処理を終了する。なお、非数の発生が確認されることなく、全てのデータの塊について前述した判定処理が終了した場合にも、エンジン制御コントロールユニットは、非数チェックルーチンを終了する。
【0039】
(D−3)形態例による効果
従来手法ではステップ33の制御処理の以前に設けていたステップ60(図6)と同等のイニシャルルーチンを、この形態例の場合には、演算負荷が低い動作電源遮断命令後のステップ701(第2のイニシャルルーチン)へ移動する。しかも、この形態例の場合には、非数の判定を所定範囲に限定する。この結果、形態例の場合には、動作電源投入(ステップ31)から制御処理(ステップ33)への移行時までの演算負荷を低減することができる。
【0040】
また、形態例の場合には、制御処理(ステップ33)の前に実行する第1のイニシャルルーチンでは、図7A(c)に示すように、所定範囲のサム値のみの比較により非数の発生を確認するため、チェックから初期化までの演算負荷を数十パーセント低減することができる。
【0041】
(D−4)形態例の処理化動作(遮断動作中に電源の再投入があった場合の動作)
以上の説明では、第2のイニシャルルーチンが完了した後に動作電源が遮断され、その途中で動作電源が再投入しないことを前提とした。
【0042】
しかし、実際の運用では、動作電源の遮断命令から動作電源が実際に遮断されるまでの間に再度動作電源が投入される場合も考えられる。すなわち、図7A(a)の第2のイニシャルルーチン(ステップ701)の実施中に、動作電源が再投入される場合も考えられる。
【0043】
以下では、図8、図9、図10を参照して、動作電源遮断命令から動作電源が遮断されるまでの間に再度動作電源が投入された場合におけるバックアップメモリ内の浮動小数点数形式データの非数の初期化動作を説明する。
【0044】
(1)動作例1
まず、図8を参照して1つ目の動作例を説明する。この場合、形態例に係るエンジン制御コントロールユニットは、第2のイニシャルルーチンを図8に示すように短縮し、動作電源投入命令を待機させる。
【0045】
第2の非数チェックルーチン(ステップ707)が既に起動している場合、エンジン制御コントロールユニットは、図7B(e)の繰り返し処理を強制的に中断し、第2の非数チェックルーチンを強制的に終了する。
【0046】
そして、ステップ81において、エンジン制御コントロールユニットは、第2の非数チェックルーチンのうち判定処理又は演算処理が完了しているバックアップメモリ領域の範囲についてのみサム値を演算する。この際、エンジン制御コントロールユニットは、演算処理又は判定処理が完了している領域を識別できる情報(例えば該当領域の先頭アドレスと終了アドレス)を対応するサム値と共に格納する。
【0047】
その後、エンジン制御コントロールユニットは、図7A(a)のステップ31、ステップ700を順番に実行する。すなわち、第1のイニシャルルーチン(ステップ700)を実行する。この際、第1のイニシャルルーチンでは、第2のイニシャルルーチンで処理が完了した範囲を、ステップ703及びステップ704の所定範囲に設定する。これにより、動作電源投入時に演算されるサム値の演算範囲と電源遮断動作中に中断したサム値の演算範囲の同一性が確保され、ステップ705において意味のある判定動作を行うことができる。すなわち、動作電源の遮断中に電源が再度投入された場合にも、動作電源遮断動作中に非数判定が行われた領域に関しては、動作電源投入時に非数の有無を判定することができる。また、非数が発見された場合には、同領域を初期化することができる。
【0048】
(2)動作例2
続いて、図9を参照して2つ目の動作例を説明する。この動作例は、第2のイニシャルルーチンの実施が不完全に終了した場合に好適な他の第1のイニシャルルーチンを表している。この動作例の場合、エンジン制御コントロールユニットは、第1のイニシャルルーチンとして、図7A(c)に示した第1の非数チェックルーチンを使用するのではなく、図7B(e)に示した第2の非数チェックルーチンを使用する。この動作例の採用により、エンジン制御コントロールユニットは、動作電源の再投入時にバックアップメモリ内にある浮動小数点数形式データの全てのデータについて非数の有無を判定することができ、同領域の初期化も実現できる。
【0049】
(3)動作例3
最後に、図10を参照して3つ目の動作例を説明する。この動作例は、第2の動作例と同様に、第2のイニシャルルーチンの実施が不完全に終了した場合に好適な他の第1のイニシャルルーチンを表している。この動作例の場合、エンジン制御コントロールユニットは、図7A(b)のステップ702、ステップ62、ステップ703を実施せず、バックアップメモリを初期化しない。この動作例は、演算負荷が大きいときに適した動作である。このように、この動作例の場合には、動作電源の再投入時には非数の判定処理と初期化処理の両方を省略することができる。このため、この動作例を採用したエンジン制御コントロールユニットでは、動作電源の再投入時における演算負荷を大幅に低減することができる。
【0050】
(E)所定範囲の実施例
ここでは、図11〜13を参照して、非数の判定処理や初期化の範囲を規定する所定範囲に関する実施例を説明する。
(E−1)実施例1
図11を参照して、所定範囲に関する1つ目の実施例を説明する。図11に示すバックアップメモリ領域110は、浮動小数点数の領域111と、固定小数点数の領域112に区分される。浮動小数点数の領域111と固定小数点数の領域112は、データのアライメントや読み書きの容易さ等を考慮すると、各領域が区分された状態で連続して格納されることが望ましい。しかし、本実施例におけるバックアップメモリのデータ構造は、各領域が区分された状態で連続して格納されていない場合にも適用される。
【0051】
また、図11では、浮動小数点数の領域111を制御変数の領域113と、制御状態を観測するためのモニタ変数の領域114とに区分して格納した状態を表している。勿論、浮動小数点数の領域111の場合も、読み書きの容易さ等を考慮すると、各変数の領域は区分された状態で連続して格納されていることが望ましい。しかし、本実施例における浮動小数点の領域111のデータ構造も、各領域が区分された状態で連続して格納されていない場合にも適用される。
【0052】
この1つ目の実施例では、制御変数の領域113を、図7A及び図7Bにおける所定範囲とする。この実施例の場合、制御変数の領域113に対して、優先的に各種処理を実行することが可能となる。例えば演算負荷が高い状態の場合には、所定範囲を制御変数の領域113とすることにより、演算負荷を低減することができる。また、動作電源の遮断中に動作電源が再投入された場合等においては、この実施例のように制御変数の領域113を優先的に処理することにより、非数を一掃できる可能性を高めることができる。
【0053】
(E−2)実施例2
図12を参照して、所定範囲に関する2つ目の実施例を説明する。図12の場合も、バックアップメモリ領域110は、浮動小数点数の領域111と固定小数点の領域112に区分される。これらの区分が必須でないこと等は実施例1と同じである。この実施例の場合、浮動小数点数の領域111を、各制御で重要な変数の領域115と重要でない変数の領域116に区分してデータを格納する。この場合も、区分した変数毎に連続してデータを格納することは必須でない。しかし、読み書きの容易さ等を考慮すると、やはり各データが連続的に格納されることが望ましいことは実施例1と同様である。
【0054】
この2つ目の実施例では、各制御で重要な変数の領域116を所定範囲とする。この実施例の場合、各制御で重要な変数の領域116に対して、優先的に各種処理を実行することが可能となる。例えば演算負荷が高い状態の場合には、所定の範囲を各制御で重要な変数の領域116とすることにより、演算負荷を低減することができる。また、動作電源の遮断中に動作電源が再投入された場合等においては、この実施例のように各制御で重要な変数の領域116を優先的に処理することにより、非数を一掃できる可能性を高めることができる。
【0055】
(E−3)実施例3
図13を参照して、所定範囲に関する3つ目の実施例を説明する。図13の場合も、バックアップメモリ領域110は、浮動小数点数の領域111と固定小数点の領域112に区分される。これらの区分が必須でないことは実施例1と同じである。この実施例の場合、浮動小数点数の領域111の全領域117を所定範囲とする。すなわち、この実施例では、非数が発生し易い浮動小数点の領域111を所定範囲とする。従って、この実施例の場合には、バックアップメモリ内の非数の一掃が可能性となる。
【0056】
(F)その他
前述の形態例の場合には、単精度浮動小数点数データ形式を扱う組込み制御装置の場合について各形態例を説明したが、倍精度浮動小数点データ形式を扱う組込み制御装置についても前述した仕組みを同様に適用することができる。
【0057】
また、本発明は、前述した形態例の説明に限定されるものではなく、特許請求の範囲に記載された発明の範囲において様々な変更が可能であることは当業者によって容易に理解される。
【符号の説明】
【0058】
10…制御コントロールユニット(C/U)、11…マイクロコンピュータ、12…中央演算処理装置(CPU)、13…読み取り専用記憶装置(ROM)、14…読み書き可能な記憶装置(RAM)、15…入出力装置(I/O)、16…制御対象機器、17…センサ、18…アクチュエータ、19…車載バッテリ、20…フラッシュメモリ、21…電気的に書き換え可能な読み取り専用記憶装置(EEPROM)。

【特許請求の範囲】
【請求項1】
浮動小数点数形式のデータの演算を行う演算処理装置と、バックアップメモリと、を有するマイクロコンピュータを備えた組込み制御装置において、
前記演算処理装置は、
前記マイクロコンピュータへの動作電源遮断時に、前記バックアップメモリに格納する浮動小数点数形式のデータ領域における非数の有無を判定し、前記バックアップメモリに格納する浮動小数点数形式のデータ領域に非数が存在すると判定したとき、非数を有する浮動小数点数形式のデータ領域を初期化し、
前記マイクロコンピュータへの動作電源投入時に、動作電源遮断時に前記バックアップメモリに格納した浮動小数点数形式のデータ領域のサム値と、動作電源投入時に前記バックアップメモリに格納した浮動小数点数形式のデータ領域のサム値とを比較して、前記バックアップメモリに格納する浮動小数点数形式のデータ領域における非数の有無を判定し、前記バックアップメモリに格納する浮動小数点数形式のデータ領域に非数が存在すると判定したとき、非数を有する浮動小数点数形式のデータ領域を初期化する
ことを特徴とする組込み制御装置。
【請求項2】
請求項1に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源遮断時における非数の有無の判定は、
前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について実行する
ことを特徴とする組込み制御装置。
【請求項3】
請求項1に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源遮断時における非数の初期化は、
前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について実行する
ことを特徴とする組込み制御装置。
【請求項4】
請求項1に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源投入時における前記サム値の比較による非数の有無の判定は、
前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について電源遮断時に演算されるサム値と、前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について電源投入時に演算されるサム値との比較により実行する
ことを特徴とする組込み制御装置。
【請求項5】
請求項1に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源投入時における非数の初期化は、
前記バックアップメモリに格納した浮動小数点数形式のデータ範囲の全体又はその所定範囲について実行する
ことを特徴とする組込み制御装置。
【請求項6】
請求項1又は請求項4に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源の遮断中に再度動作電源が投入された場合にあって、前記動作電源遮断時における前記バックアップメモリの浮動小数点数形式の記憶領域のデータに対する前記非数の判定又は初期化が演算の途中であったとき、
電源遮断時に前記非数の判定に使用された領域のサム値と当該領域についての電源投入時のサム値の比較は、前記演算が終わった範囲の全体又はその所定範囲について実行する
ことを特徴とする組込み制御装置。
【請求項7】
請求項1に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源の遮断中に再度動作電源が投入された場合にあって、前記動作電源遮断時における前記バックアップメモリの浮動小数点数形式の記憶領域のデータに対する前記非数の判定又は初期化が演算の途中であったとき、
前記電源遮断時のサム値と電源投入時のサム値の比較は実行せずに、浮動小数点のデータ範囲の全体又はその所定範囲について非数の有無を判定する
ことを特徴とする組込み制御装置。
【請求項8】
請求項1又は請求項5に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源の遮断中に再度動作電源が投入された場合にあって、前記動作電源遮断時における前記バックアップメモリの浮動小数点数形式の記憶領域のデータに対する前記非数の判定又は初期化が演算の途中であったとき、
前記マイクロコンピュータへの動作電源投入時の非数の初期化は、電源遮断時に前記非数の判定に使用された領域についてのみ実行する
ことを特徴とする組込み制御装置。
【請求項9】
請求項1又は請求項5に記載の組込み制御装置において、
前記マイクロコンピュータへの動作電源の遮断中に再度動作電源が投入された場合にあって、前記動作電源遮断時の前記バックアップメモリの浮動小数点数形式の記憶領域のデータの前記非数の判定又は初期化又は前記サム値演算が演算の途中であったとき、
前記マイクロコンピュータへの動作電源投入時、前記バックアップメモリの非数を初期化しない
ことを特徴とする組込み制御装置。
【請求項10】
請求項2〜請求項7のいずれか1項に記載の組込み制御装置において、
前記所定範囲は、
前記バックアップメモリの浮動小数点数形式の記憶領域のデータを、制御変数と制御状態を観測するためのモニタ変数に区分した場合における、前記制御変数の領域である
ことを特徴とする組込み制御装置。
【請求項11】
請求項2〜請求項7のいずれか1項に記載の組込み制御装置において、
前記所定範囲は、
前記バックアップメモリの浮動小数点数形式の記憶領域のデータを、各制御で重要な変数と重要でない変数に区分した場合における、前記各制御で重要な変数の領域である
ことを特徴とする組込み制御装置。
【請求項12】
請求項2〜請求項7のいずれか1項に記載の組込み制御装置において、
前記所定範囲は、
前記バックアップメモリの浮動小数点数形式の記憶領域の全領域である
ことを特徴とする組込み制御装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7A】
image rotate

【図7B】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2010−266976(P2010−266976A)
【公開日】平成22年11月25日(2010.11.25)
【国際特許分類】
【出願番号】特願2009−116058(P2009−116058)
【出願日】平成21年5月13日(2009.5.13)
【出願人】(509186579)日立オートモティブシステムズ株式会社 (2,205)
【Fターム(参考)】