JP4329332B2 - 電子制御装置及び制御プログラム - Google Patents
電子制御装置及び制御プログラム Download PDFInfo
- Publication number
- JP4329332B2 JP4329332B2 JP2002329588A JP2002329588A JP4329332B2 JP 4329332 B2 JP4329332 B2 JP 4329332B2 JP 2002329588 A JP2002329588 A JP 2002329588A JP 2002329588 A JP2002329588 A JP 2002329588A JP 4329332 B2 JP4329332 B2 JP 4329332B2
- Authority
- JP
- Japan
- Prior art keywords
- calculation result
- target value
- calculation
- floating
- value
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/499—Denomination or exception handling, e.g. rounding or overflow
- G06F7/49905—Exception handling
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/04—Programme control other than numerical control, i.e. in sequence controllers or logic controllers
- G05B19/042—Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
- G06F7/483—Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
Landscapes
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Automation & Control Theory (AREA)
- Combined Controls Of Internal Combustion Engines (AREA)
- Programmable Controllers (AREA)
Description
【発明の属する技術分野】
本発明は、浮動小数点演算機能を備えた電子制御装置に関する。
【0002】
【従来の技術】
近年、高性能マイクロプロセッサの出現などエレクトロニクス技術の進歩を背景として、機械技術と電子技術とが結びついたメカトロニクス技術の進歩が著しい。メカトロニクスの進歩の一部として、自動車等の車両にも多くのコンピュータシステムが採用されてきている。このような車載用のコンピュータシステムは、省資源、省エネルギー、走行性能、安全性、快適性等を追求するものであり、車両内のエンジン・駆動系、走行・安全系、エンターテイメント系、及びその他の随所に搭載されている。
【0003】
このようなコンピュータシステムは、電子制御装置(ECU)の単位で車両に搭載されている。そして最近では、電子制御装置が、浮動小数点演算プロセッサ(FPU:Floating-Point Unit )を搭載するのが一般的になっている。浮動小数点演算プロセッサを搭載することにより、浮動小数点型データによる演算が可能となり、固定小数点型データに比べて細かい精度で演算結果が得られるからである。
【0004】
浮動小数点型データは、当業者の間ではよく知られたものであり、種々の規格でデータ形式が決まっている。例えば、IEEE754規格に従う単精度の浮動小数点型データは、1ビットの符号部、8ビットの指数部、23ビットの仮数部で構成されており、この計4バイトのデータが7桁の分解能を有することになる。
【0005】
そして、このような浮動小数点型データでは、「0/0」や「+∞−∞」といった、数値として表現できない演算結果を「非数」として表現できるようになっている。例えば上記規格では、仮数部が「0」以外で8ビットの指数部が全て「1」の場合を「非数」として取り扱うことが定められている。
【0006】
ところで、このような「非数」は、上述したような演算に関係なく、演算時や読み出し時などにおけるノイズの影響によっても生じることがある。すなわち、指数部が全て「1」に書き換えられてしまった場合に、仮数部が「0」でなければ、「非数」となってしまう。
【0007】
そして、このような「非数」が生じると、この「非数」を用いた演算結果は全て「非数」となってしまう。したがって、「非数」が発生した場合には、短時間のうちに「非数」を正常値に書き換える必要がある。
そこで、これを解決するための手法として、従来より、▲1▼:タイマ割込などを用いて、浮動小数点型データの格納領域に「非数」があるか否かを一括して検索し、「非数」が発見された場合には、その「非数」に対してデフォルト値を代入する、という手法や、▲2▼:上記▲1▼と同様に、浮動小数点型データの格納領域に「非数」があるか否かを一括して検索し、「非数」が発見された場合には、CPUリセットを行い、初期化ルーチンを起動して浮動小数点型データを全て初期化する、という手法がある。
【0008】
なお、上述した手法▲1▼,▲2▼は、コンピュータシステムにおいて通常行われる一般的なものであり、公知・公用の技術に該当するので、特に先行技術文献は開示しない。
【0009】
【発明が解決しようとする課題】
しかしながら、上記▲1▼の手法では、メモリ領域を圧迫してしまうという問題がある。
ここで、その理由について説明する。
【0010】
まず、個別具体的に「非数」の発生を考える。
(1)A+B→C、すなわちAとBとの和をCに代入する演算処理の場合
この場合、もし、演算結果であるCが「非数」となれば、そのCを用いた他の演算結果も「非数」となってしまう。しかしながら、その後、A,Bが「非数」とならなければ、次にこの演算処理が行われた場合、Cは正常値に復帰することになる。つまり、この場合には、短時間のうちにC及びCを用いた演算結果が自然と正常値に書き換えられることとなる。
【0011】
(2)A+B→A、すなわちAとBとの和をAに代入する演算処理の場合
この場合、演算結果であるAが「非数」となれば、Aを用いたその後の演算結果は全て「非数」となってしまう。そしてこのときは、次にこの演算処理が行われても、「非数」となったAを用いてAを算出するため、Aが正常値に復帰することはない。つまり、この場合には、A及びAを用いた演算結果が正常値に書き換えられることがない。
【0012】
このように、上記(2)の如く前回の演算結果を用いて今回の演算結果を算出する演算処理の場合に、「非数」の発生が問題となることが分かる。
ところが、上記▲1▼の手法では、上記(1)の場合のように自然と「非数」から正常値に復帰し得る浮動小数点型データの各々に対しても、予めデフォルト値を用意しておくこととなり、そのデフォルト値の記憶に非常に多くのメモリ領域が必要となってしまうのである。
【0013】
一方、CPUをリセットする上記▲2▼の手法では、デフォルト値を準備しておく必要はないものの、動作中のシステムを一時的にせよ停止させることとなるため、制御の信頼性向上という面から妥当でない。
なお、上記各問題は、「非数」だけでなく「無限大」の場合も同様に生じる。例えば上記IEEE754規格に従う4バイトの浮動小数点型データは、仮数部が「0」で8ビットの指数部の全てが「1」のときに、「無限大」として扱われる。
【0014】
本発明は、このような問題を解決するためになされたものであり、メモリ領域を圧迫することなく、また、動作中のシステムを停止させることなく、「非数」や「無限大」を示す浮動小数点型データを短時間で正常値に復帰させること目的とする。
【0015】
【課題を解決するための手段及び発明の効果】
本発明の電子制御装置は、浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能である。
そして特に、前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、チェック処理を実行する。
【0016】
この演算処理は、制御プログラム中で繰り返し実行される浮動小数点型データの演算処理であり、チェック処理とは、演算結果が「非数」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するものである。
つまり、演算結果が一度「非数」になると、正常値に復帰する可能性のない、上記(2)のような演算処理に対して、演算結果が「非数」か否かのチェックを行い、「非数」であれば、その演算結果を示す浮動小数点型データのみにデフォルト値の代入を行うのである。
【0017】
これによって、「非数」を示す浮動小数点型データを短時間で正常値に復帰させることができる。そしてこのときは、全ての浮動小数点型データに対してデフォルト値を用意しておく必要がなく、メモリ領域を圧迫することがない。さらに、動作中のシステムを停止させることがないため、制御の信頼性を低下させることもない。
【0018】
なお、このようなチェック処理は、演算結果が「非数」になった場合だけでなく、「無限大」となった場合に行うものとすることが考えられる(請求項2)。これによって、「無限大」を示す浮動小数点型データを短時間で正常値に復帰させることができる。もちろん、演算結果が「非数」又は「無限大」になった場合の両方をチェックするものとしてもよい(請求項3)。これによって、「非数」や「無限大」を示す浮動小数点型データを短時間で正常値に復帰させることができる。
【0019】
さらに、上記各請求項1,2,3においては、上述した演算処理が、演算結果を所定の目標値に追従させる追従処理であり、チェック処理において、上述のデフォルト値として、目標値を代入するようにしている。具体的に、追従処理は、目標値との偏差に基づき、演算結果を目標値に収束させる処理であることが考えられる(請求項4)。また、目標値を基準として、当該目標値の前後で演算結果を振動させる処理であることが考えられる(請求項5)。前者のように演算結果が目標値に収束する場合はもちろん、後者のように、目標値の前後を演算結果が振動する場合でも、目標値は演算結果のとり得る値であるため、演算結果に固定値を代入する場合と比べ、目標値を代入することが制御上妥当である。そして、制御処理において繰り返し算出される目標値を用いているため、デフォルト値としての固定値を記憶しておく必要がなく、メモリ領域を圧迫する可能性をさらに小さくすることができる。
【0020】
次に、請求項6に記載の電子制御装置は、請求項1〜5の電子制御装置において、当該装置は車両用の電子制御装置であると共に、前記制御対象は車両に設けられる車載機器であり、更に、前記演算処理は、前記車載機器の制御に用いられる制御値を演算結果として算出する処理であることを特徴としている。
【0021】
そして、このような電子制御装置によれば、前記演算処理によって算出される制御値が「非数」や「無限大」になって制御対象としての車載機器の挙動が予測できないものとなってしまうことを、メモリ領域を圧迫することなく且つ動作を一時停止させることなく、確実に防止することができるようになる。
【0022】
本発明においては、特に、前記演算処理が、演算結果としての制御値を所定の目標値に追従させる追従処理であると共に、チェック処理では、上述のデフォルト値として、目標値を代入する、という構成を採用したものであり、この場合、目標値は、本来、制御値のとり得る値であるため、例えば、制御値が目標値へ到達する前に「非数」又は「無限大」となった場合には、その制御値が速やかに目標値へと設定されることとなり、制御値の目標値への追従が正常時よりも遅れてしまうことが防止されるため、制御対象としての車載機器の挙動を速やかに目標の状態へと変化させることができる。また例えば、制御値が目標値へ到達した後に「非数」又は「無限大」となった場合には、その制御値が速やかに正常時と同じ目標値へと再設定されることとなるため、制御対象としての車載機器の挙動を正常時と同じものにすることができる。
【0023】
以上は、電子制御装置の発明として説明してきたが、本発明は、特定の演算処理に対して実行されるチェック処理に特徴を有する。したがって、制御プログラムの発明として実現することもできる(請求項7以下)。このような制御プログラムの場合、例えば、フロッピー(登録商標)ディスク、MO、DVD、CD−ROM、ハードディスク等のコンピュータ読み取り可能な記録媒体に記録し、必要に応じて電子制御装置のコンピュータシステムにロードして起動することにより用いることができる。この他、ROMやバックアップRAMに、制御プログラムを記録しておき、このROMあるいはバックアップRAMをコンピュータに組み込んで用いてもよい。
【0024】
【発明の実施の形態】
以下、本発明を具体化した一実施例を図面を参照して説明する。
図1は、本発明の「電子制御装置」を具体化したエンジン制御装置(以下「エンジンECU」という。)1の構成を表すブロック図である。エンジンECU1は、車両に搭載された内燃機関型エンジン(制御対象としての車載機器に相当)の制御を行う。
【0025】
エンジンECU1は、エンジンのクランク軸が所定角度回転する毎にパルス状の信号を出力する回転角センサ、エンジンの特定の気筒のピストンが所定位置(例えば上死点:TDC)にくる度にパルス状の信号を出力する基準位置センサ、エンジンの冷却水の温度を検出する水温センサ、及び酸素濃度を計測する酸素濃度センサ等、エンジンの運転状態を検出する様々なセンサ30からの信号を入力して波形整形やA/D変換を行う入力回路21と、入力回路21からのセンサ信号に基づき、エンジンを制御するための様々な処理を実行するマイコン10と、マイコン10からの制御データに応じて、エンジンに取付けられたインジェクタ(燃料噴射装置)及びイグナイタ(点火装置)等のアクチュエータ40を駆動する出力回路22とを、備えている。
【0026】
そして、マイコン10には、制御プログラムを実行する周知のCPU11と、CPU11によって実行される制御プログラムを記憶するROM12と、CPU11による演算結果等を記憶するためのRAM13と、浮動小数点演算を実行するFPU14と、I/Oや各種レジスタ、フリーランカウンタ等(図示省略)とが備えられている。
【0027】
このように構成されたエンジンECU1は、各種センサ30から入力回路21を介して入力される信号に基づき、出力回路22に接続されたアクチュエータ40を駆動する、エンジン制御処理を行う。
そして、このようなエンジン制御処理は、上述したようにROM12に記憶される制御プログラムに基づいてなされるが、FPU14による浮動小数点演算によって、精度の高い制御が可能となる。
【0028】
この浮動小数点演算は浮動小数点型データを用いた演算であり、このため、RAM13には、浮動小数点型データの格納領域が確保される。図2に示す如くである。ここでは、変数RamA,RamB,・・・,RamCが浮動小数点型データであり、RamD,・・・がその他の型のデータとして格納されている。
【0029】
浮動小数点型データは、当業者の間ではよく知られたものであり、種々の規格でデータ形式が決まっている。例えば、IEEE754規格に従う単精度の浮動小数点型データは、図3(a)に示すように、1ビットの符号部、8ビットの指数部、23ビットの仮数部で構成されており、この計4バイトのデータが7桁の分解能を有することになる。
【0030】
そして、この規格の浮動小数点データでは、数値として表現できない「非数」や「無限大」が、図3(b)のように示される。つまり、指数部の8ビットが全て「1」であり、すなわち指数部が10進表記で「255」であり、仮数部が「0」以外のときが「非数」、仮数部が「0」のときが「無限大」を示すことになっている。
【0031】
「非数」や「無限大」は、演算時や読み出し時などにおけるノイズの影響によっても生じることがある。すなわち、指数部が全て「1」に書き換えられてしまった場合である。
ところが、制御プログラム中で繰り返し実行される演算処理の中で、前回の演算結果を用いて今回の演算結果を算出する演算処理では、演算結果を示す浮動小数点型データが一度「非数」や「無限大」になってしまうと、次の演算結果も「非数」や「無限大」になってしまう。その結果、演算結果の異常が継続してしまうことになる。
【0032】
具体的には、演算結果を示す浮動小数点型の変数RamAを目標値に追従させる、なまし演算などが一例として挙げられる。これは、次の式1に示すようなものである。
「RamA=(目標値−RamA)×K+RamA」…式1
なお、「=」は、右辺の演算結果を左辺へ代入することを意味する。また、定数Kは「なまし係数」である。
【0033】
上記式1に示した演算においては、前回の演算結果RamA(右辺にあるもの)を用いて、今回の演算結果RamA(左辺にあるもの)を算出するため、変数RamAが一度「非数」や「無限大」になると、その後の演算結果は全て「非数」や「無限大」となってしまう。
【0034】
そこで、本実施例では、このような前回の演算結果を用いて今回の演算結果を算出するような演算処理に対し、チェック処理を行うようにした。
図4は、上記式1の演算処理に対応して設けられたチェック処理を示すフローチャートである。
【0035】
まず最初のステップ(以下、ステップを単に記号Sで示す。)100において、変数RamAが「非数」であるか否かを判断する。例えば、変数RamAがIEEE754規格に従う単精度の浮動小数点型データであれば、変数RamAの指数部が「255」であり、かつ、仮数部が「0」でない場合を「非数」として判断する(図3(b)参照)。ここで変数RamAが「非数」であると判断された場合(S100:YES)、S130へ移行する。一方、変数RamAが「非数」でないと判断された場合(S100:NO)、S110へ移行する。
【0036】
S110では、変数RamAが「無限大」であるか否かを判断する。例えば、変数RamAがIEEE754規格に従う単精度の浮動小数点型データであれば、変数RamAの指数部が「255」であり、かつ、仮数部が「0」である場合を「無限大」として判断する(図3(b)参照)。ここで変数RamAが「無限大」であると判断された場合(S110:YES)、S130へ移行する。一方、変数RamAが「無限大」でないと判断された場合(S100:NO)、S120へ移行する。
【0037】
変数RamAが「非数」、「無限大」のいずれでもないと判断された場合に移行するS120では、上記式1に示した通常の演算処理を行い、その後、本チェック処理を終了する。
一方、変数RamAが「非数」又は「無限大」であると判断された場合に移行するS130では、変数RamAに目標値を代入し、その後、本チェック処理を終了する。
【0038】
ここで目標値を代入するのは、上記式1で示した演算処理が、図5(a)に示すように、目標値に演算結果が収束する、なまし演算だからである。もちろん、目標値などがない場合は、ここで固定的なデフォルト値を代入すればよい。
なお、厳密に言うと、図4の例では、S100,S110,及びS130の処理が、本発明におけるチェック処理に相当している。
【0039】
以上のように本実施例のエンジンECU1では、前回の演算結果を用いて今回の演算結果を算出する特定の演算処理(S120)に対して、図4のS110,S110,及びS130からなるチェック処理を実行するようにしているため、「非数」や「無限大」を示す浮動小数点型データを短時間で正常値に復帰させることができる。
【0040】
特に、例えば図2に示したRAM13の浮動小数点型データの格納領域に「非数」があるか否かを一括して検索し、「非数」の発見時にその「非数」に対してデフォルト値を代入する、といった前述の手法▲1▼のように、RAM13内の全ての各浮動小数点型データに対してデフォルト値を用意しておく必要がないため、メモリ領域を圧迫することがない。また更に、前述した手法▲2▼のように、動作中のシステムを停止させることがないため、制御の信頼性を低下させることもない。
【0041】
しかも、演算結果が目標値に追従するような処理では、デフォルト値として、目標値を代入するようにした。このようにすれば、固定値をデフォルト値とする場合と比べ、妥当な制御が期待できる。そして、制御プログラムにおいて算出される目標値を用いれば、デフォルト値としての固定値を記憶しておく必要がなく、メモリ領域を圧迫する可能性をさらに小さくすることができる。
【0042】
次に、上記図4のような処理を実行することによる効果を一層明らかにするために、本実施例のエンジンECU1で実行される噴射量補正処理の内容について、図6のフローチャートを用い説明する。
まず、以下に説明する噴射量補正処理は、制御プログラム中の他の処理で算出されている基本燃料噴射量Tbaに補正係数Fsmを乗ずることで、インジェクタを駆動するのに実際に用いる燃料噴射量Tを算出するものであり、一定時間毎に実行される。なお、もちろん、燃料噴射量T、基本燃料噴射量Tba、及び補正係数Fsmの各々は、浮動小数点型データである。そして更に、この噴射量補正処理では、補正係数Fsmを、下記の式2に示すなまし演算により、アクセル開度が全開か否かによって2通りの値に設定される目標値Ftgにゆっくりと追従するように算出している。
【0043】
「Fsm=(Ftg−Fsm)×K+Fsm」…式2
なお、式2は、前述した式1のRamAをFsmに置き換えると共に、式1の目標値をFtgに置き換えたものである。また、以下の説明において、燃料噴射量T、基本燃料噴射量Tba、及び補正係数Fsmの各々は、前述した図4の変数RamAと同様に、IEEE754規格に従う単精度の浮動小数点型データであるものとする。
【0044】
図6の噴射量補正処理の実行が開始されると、まずS210にて、アクセル開度が全開であるか否かを判定し、アクセル開度が全開でなければ、S220に進んで、補正係数Fsmの目標値Ftgを通常値(この例では1.0)に設定する。
【0045】
また、上記S210でアクセル開度が全開であると判定した場合には、S230に移行して、補正係数Fsmの目標値Ftgを上記通常値よりも大きい値(この例では1.5)に設定する。
そして、上記S220又はS230で目標値Ftgの値を設定すると、S240に進んで、補正係数Fsmが「非数」であるか否かを判断する。つまり、前述した図4のS100と同様に、補正係数Fsmの指数部が「255」であり、かつ、仮数部が「0」でなければ、「非数」であると判断する。
【0046】
ここで、補正係数Fsmが「非数」であると判断した場合には(S240:YES)、S270へ移行する。
また、補正係数Fsmが「非数」でないと判断した場合には(S240:NO)、S250へ移行する。
【0047】
そして、S250では、補正係数Fsmが「無限大」であるか否かを判断する。つまり、前述した図4のS110と同様に、補正係数Fsmの指数部が「255」であり、かつ、仮数部が「0」であれば、「無限大」であると判断する。
ここで、補正係数Fsmが「無限大」であると判断した場合には(S250:YES)、S270へ移行する。
【0048】
また、補正係数Fsmが「無限大」でないと判断した場合には(S250:NO)、S260へ移行する。
よって、S260へは、補正係数Fsmが「非数」と「無限大」との何れでもないと判断した場合に移行することとなる。そして、このS260では、上記式2に示したなまし演算処理により、今回の補正係数Fsmを算出する。
【0049】
一方、補正係数Fsmが「非数」又は「無限大」であると判断した場合には、S270に移行することとなり、このS270では、補正係数Fsmに目標値Ftgを代入する。
尚、上記S260での式2のなまし演算に用いられる目標値Ftgの値と、上記S270で補正係数Fsmに代入される目標値Ftgの値は、上記S220又はS230で現在設定されている値(即ち、1.0又は1.5)である。
【0050】
そして、上記S260又はS270の処理を行った後、S280に移行して、下記の式3により、基本燃料噴射量Tbaと補正係数Fsmとから燃料噴射量Tを算出し、その後、本噴射量補正処理を終了する。
「燃料噴射量T=基本燃料噴射量Tab×補正係数Fsm」…式3
つまり、この噴射量補正処理では、図7又は図8の破線に示すように、アクセル開度が全開になったことを検出すると(S210:YES)、補正係数Fsmの目標値Ftgを、1.0から1.5に増加させて(S230)、通常時よりも燃料噴射量Tが大きくなるようにし、また、アクセル開度が全開でないことを検出すると(S210:NO)、補正係数Fsmの目標値Ftgを1.0に戻して(S220)、燃料噴射量Tの増量補正を止めるようにしている。
【0051】
そして、図7(a)又は図8(a)の実線に示すように、この噴射量補正処理においても、前述した図4のS120と同様に、S260のなまし演算処理により、補正係数Fsmを緩やかに目標値Ftgへと追従させるようにして、燃料噴射量Tの急変を抑制している。
【0052】
そして更に、この噴射量補正処理においても、図4のS100,S110,及びS130と同様の、S240,S250,及びS270からなるチェック処理により、なまし演算の演算結果である補正係数Fsmが「非数」又は「無限大」であると判断した場合には、その補正係数Fsmに目標値Ftgを代入するようにしている。
【0053】
よって、このような噴射量補正処理を実行するエンジンECU1によれば、なまし演算処理によって算出される制御値としての補正係数Fsmが「非数」又は「無限大」になってエンジンの挙動が予測できないものとなってしまうことを、メモリ領域を圧迫することなく且つ動作を一時停止させることなく、確実に防止することができる。
【0054】
そして特に、図6の噴射量補正処理では、補正係数Fsmが「非数」又は「無限大」であると判断した場合に(S240:YES又はS250:YES)、その補正係数Fsmに目標値Ftgを代入するようにしているため(S270)、例えば、図7(b)における時刻taに示すように、補正係数Fsmが目標値Ftg(ここでは1.5)に到達する前に「非数」又は「無限大」となった場合には、その補正係数Fsmは、速やかに目標値Ftgへと設定されることとなる。
【0055】
よって、補正係数Fsmの目標値Ftgへの追従が正常時よりも遅れてしまうことが防止され、その結果、制御対象としてのエンジンの挙動を速やかに目標の状態へと変化させることができる。
また例えば、図8(b)における時刻tbに示すように、補正係数Fsmが目標値Ftg(ここでは1.5)へ到達した後に「非数」又は「無限大」となった場合には、その補正係数Fsmは、速やかに正常時と同じ目標値Ftgへと再設定されることとなる。よって、エンジンの挙動を正常時と同じものにすることができる。
【0056】
尚、図6のS270において、補正係数Fsmに、目標値Ftgではなく、予め定めた固定値を代入するように構成しても、エンジンの挙動が予測できないものとなってしまうことを防止することができる。
但し、補正係数Fsmに固定値を代入するように構成した場合には、上記図7(b)及び図8(b)に示した効果が得られないという点で不利な面もある。
【0057】
例えば、補正係数Fsmに代入する固定値が1.0であるとする。
この場合、図7(c)に示すように、補正係数Fsmが目標値Ftgに到達する前の時刻taで「非数」又は「無限大」となったならば、その補正係数Fsmは、一旦、目標値Ftg(ここでは1.5)ではない固定値(=1.0)に設定されてから、目標値Ftgへと接近していくこととなる。
【0058】
よって、補正係数Fsmの目標値Ftgへの追従が正常時よりも遅れてしまうことととなり、その結果、エンジンの挙動を目標の状態へと変化させるのに時間がかかってしまう可能性がある。具体的な現象として、図7(c)に示す状況が発生した場合には、補正係数Fsmが目標値Ftgよりも小さい期間が長くなるため、燃料噴射量Tが少な目になってしまい、アクセル全開に対するレスポンスが悪くなる可能性がある。
【0059】
また、図8(c)に示すように、補正係数Fsmが目標値Ftgへ到達した後の時刻tbで「非数」又は「無限大」となったならば、その補正係数Fsmは、目標値Ftg(ここでは1.5)ではない固定値(=1.0)に設定されてから、再び、その固定値から目標値Ftgへと接近していくこととなり(つまり、なまし演算がやり直されることとなり)、エンジンの挙動が正常時のものから多少なりとも変化してしまう。
【0060】
このようなことから、補正係数Fsmが「非数」又は「無限大」であると判断した場合には、その補正係数Fsmに目標値Ftgを代入するように構成するのが好ましい。尚、上記図6の例では、補正係数Fsmが、制御対象としての車載機器の制御に用いられる制御値に相当している。
【0061】
以上、本発明の一実施例について説明したが、本発明は前述した実施例に何等限定されるものではなく、本発明の主旨を逸脱しない範囲において種々なる形態で実施し得る。
(イ)上記実施例で例示したチェック処理では、「非数」及び「無限大」のチェックを行っていたが、少なくともいずれか一方のチェックを行うようにしてもよい。
【0062】
また、「非数」及び「無限大」の両方のチェックを図4中のS100,S110又は図6中のS240,250で別々に行っていたが、変数RamA又は補正係数FsmがIEEE754規格に従う浮動小数点型データであれば、一つにまとめることもできる。つまり、例えば単精度の浮動小数点型データの場合、指数部が「255」であれば、そのデータは「非数」又は「無限大」であると判断することができるからである。また、このようなことは、倍精度の浮動小数点型データについても同様である。
【0063】
さらにまた、図4中のS100やS110の判断処理を、S120の演算処理の後で実行したり、同様に、図6中のS240やS250の判断処理を、S260の演算処理の後で実行するようにしてもよい。
(ロ)上記実施例では、演算結果が目標値に徐々に収束するような、なまし演算を例に挙げて説明した。
【0064】
これに対して、例えば、図5(b)に示すような目標値に基づくフィードバック制御の演算処理においても、デフォルト値として、目標値を採用することができる。演算結果RamAが最終的に目標値に収束するからである。
また例えば、図5(c)に示すように、目標値を基準として変数RamAが振動するような演算処理に対しても、デフォルト値として、目標値を採用することができる。図5(c)中に記号Pで示したように、変数RamAが目標値をとり得るからである。
【図面の簡単な説明】
【図1】 実施例のエンジンECUの概略構成を示すブロック図である。
【図2】 RAMに格納される浮動小数点型データを示す説明図である。
【図3】 IEEE754規格の浮動小数点型データを示す説明図である。
【図4】 チェック処理を例示する説明図である。
【図5】 演算処理における目標値と演算結果との関係を示す説明図である。
【図6】 エンジンECUで実行される噴射量補正処理を表すフローチャートである。
【図7】 図6の噴射量補正処理の作用を説明する図のその1である。
【図8】 図6の噴射量補正処理の作用を説明する図のその2である。
【符号の説明】
1…エンジン制御装置(エンジンECU) 10…マイコン
11…CPU 12…ROM
13…RAM 14…FPU
21…入力回路 22…出力回路
30…センサ 40…アクチュエータ
Claims (12)
- 浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置において、
前記制御プログラム中で繰り返し実行される浮動小数点型データの演算処理であって、
前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「非数」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を実行し、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする電子制御装置。 - 浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置において、
前記制御プログラム中で繰り返し実行される浮動小数点型データの演算処理であって、
前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「無限大」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を実行し、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする電子制御装置。 - 浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置において、
前記制御プログラム中で繰り返し実行される浮動小数点型データの演算処理であって、
前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「非数」又は「無限大」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を実行し、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする電子制御装置。 - 請求項1〜3の何れか1項に記載の電子制御装置において、
前記追従処理は、前記目標値との偏差に基づき、前記演算結果を目標値に収束させる処理であることを特徴とする電子制御装置。 - 請求項1〜3の何れか1項に記載の電子制御装置において、
前記追従処理は、前記目標値を基準として、当該目標値の前後で前記演算結果を振動させる処理であること
を特徴とする電子制御装置。 - 請求項1〜5の何れか1項に記載の電子制御装置において、
当該装置は車両用の電子制御装置であると共に、前記制御対象は車両に設けられる車載機器であり、
前記演算処理は、前記車載機器の制御に用いられる制御値を前記演算結果として算出する処理であること、
を特徴とする電子制御装置。 - 浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置に搭載される制御プログラムにおいて、
繰り返し実行される浮動小数点型データの演算処理であって、前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「非数」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を備えており、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする制御プログラム。 - 浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置に搭載される制御プログラムにおいて、
繰り返し実行される浮動小数点型データの演算処理であって、前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「無限大」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を備えており、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする制御プログラム。 - 浮動小数点演算プロセッサを備え、制御対象を制御するための制御プログラムを実行可能な電子制御装置に搭載される制御プログラムにおいて、
繰り返し実行される浮動小数点型データの演算処理であって、前回の演算結果を用いて今回の演算結果を算出する演算処理に対し、当該演算結果が「非数」又は「無限大」である場合には、演算結果を示す浮動小数点型データのみにデフォルト値を代入するチェック処理を備えており、
更に、前記演算処理は、前記演算結果を所定の目標値に追従させる追従処理であり、
前記チェック処理では、前記デフォルト値として、前記目標値を代入すること
を特徴とする制御プログラム。 - 請求項7〜9の何れか1項に記載の制御プログラムにおいて、
前記追従処理は、前記目標値との偏差に基づき、前記演算結果を目標値に収束させる処理であること
を特徴とする制御プログラム。 - 請求項7〜9の何れか1項に記載の制御プログラムにおいて、
前記追従処理は、前記目標値を基準として、当該目標値の前後で前記演算結果を振動させる処理であること
を特徴とする制御プログラム。 - 請求項7〜12の何れか1項に記載の制御プログラムにおいて、
当該プログラムは、前記制御対象として、車両に設けられる車載機器を制御するための制御プログラムであり、
前記演算処理は、前記車載機器の制御に用いられる制御値を前記演算結果として算出する処理であること、
を特徴とする制御プログラム。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002329588A JP4329332B2 (ja) | 2002-01-15 | 2002-11-13 | 電子制御装置及び制御プログラム |
US10/337,854 US6816777B2 (en) | 2002-01-15 | 2003-01-08 | Electronic control system expediting floating point processing |
DE10301065A DE10301065A1 (de) | 2002-01-15 | 2003-01-14 | Elektronisches Steuersystem zur Beschleunigung einer Fließpunktverarbeitung |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002006057 | 2002-01-15 | ||
JP2002-6057 | 2002-01-15 | ||
JP2002329588A JP4329332B2 (ja) | 2002-01-15 | 2002-11-13 | 電子制御装置及び制御プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003280891A JP2003280891A (ja) | 2003-10-02 |
JP4329332B2 true JP4329332B2 (ja) | 2009-09-09 |
Family
ID=26625518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002329588A Expired - Fee Related JP4329332B2 (ja) | 2002-01-15 | 2002-11-13 | 電子制御装置及び制御プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US6816777B2 (ja) |
JP (1) | JP4329332B2 (ja) |
DE (1) | DE10301065A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6904543B2 (en) * | 1999-12-24 | 2005-06-07 | Denso Corporation | Electronic control having floating-point data check function |
US10540143B2 (en) | 2015-10-24 | 2020-01-21 | Alan A. Jorgensen | Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof |
US9817662B2 (en) | 2015-10-24 | 2017-11-14 | Alan A Jorgensen | Apparatus for calculating and retaining a bound on error during floating point operations and methods thereof |
CN106055275A (zh) * | 2016-05-24 | 2016-10-26 | 深圳市敢为软件技术有限公司 | 数据压缩记录方法及装置 |
JP7027857B2 (ja) * | 2017-12-07 | 2022-03-02 | 株式会社デンソー | 制御装置 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0619740B2 (ja) | 1988-02-17 | 1994-03-16 | 日本電装株式会社 | 制御用データメモリのデータ保護方法 |
US5201296A (en) * | 1992-03-30 | 1993-04-13 | Caterpillar Inc. | Control system for an internal combustion engine |
US6082187A (en) * | 1998-12-18 | 2000-07-04 | Caterpillar Inc. | Method for detecting a power loss condition of a reciprocating internal combustion engine |
US6199007B1 (en) * | 1996-07-09 | 2001-03-06 | Caterpillar Inc. | Method and system for determining an absolute power loss condition in an internal combustion engine |
US6393554B1 (en) * | 1998-01-28 | 2002-05-21 | Advanced Micro Devices, Inc. | Method and apparatus for performing vector and scalar multiplication and calculating rounded products |
DE19817686A1 (de) * | 1998-04-21 | 1999-10-28 | Wabco Gmbh | Verfahren zur Bestimmung einer Vergleichsgröße |
US6175911B1 (en) * | 1998-08-21 | 2001-01-16 | Advanced Micro Devices, Inc. | Method and apparatus for concurrently executing multiplication and iterative operations |
JP3983394B2 (ja) * | 1998-11-09 | 2007-09-26 | 株式会社ルネサステクノロジ | 幾何学処理プロセッサ |
US6714197B1 (en) * | 1999-07-30 | 2004-03-30 | Mips Technologies, Inc. | Processor having an arithmetic extension of an instruction set architecture |
JP2001138758A (ja) | 1999-11-12 | 2001-05-22 | Toyota Motor Corp | 燃料タンク |
US6904543B2 (en) | 1999-12-24 | 2005-06-07 | Denso Corporation | Electronic control having floating-point data check function |
-
2002
- 2002-11-13 JP JP2002329588A patent/JP4329332B2/ja not_active Expired - Fee Related
-
2003
- 2003-01-08 US US10/337,854 patent/US6816777B2/en not_active Expired - Lifetime
- 2003-01-14 DE DE10301065A patent/DE10301065A1/de not_active Ceased
Also Published As
Publication number | Publication date |
---|---|
JP2003280891A (ja) | 2003-10-02 |
US6816777B2 (en) | 2004-11-09 |
US20030135322A1 (en) | 2003-07-17 |
DE10301065A1 (de) | 2003-07-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8484266B2 (en) | Embedded control system with floating-point conversion | |
JP4329332B2 (ja) | 電子制御装置及び制御プログラム | |
JP7027857B2 (ja) | 制御装置 | |
KR920006921B1 (ko) | 엔진제어방법 | |
JP3551875B2 (ja) | 浮動小数点演算機能を有した電子制御装置 | |
JP4645519B2 (ja) | 演算処理装置,制御装置およびプログラム | |
JP5379712B2 (ja) | 車載制御装置 | |
JP3666226B2 (ja) | 電子制御装置 | |
JP2004278483A (ja) | 浮動小数点演算機能を有する電子制御装置 | |
JP3729133B2 (ja) | 車両用電子制御装置及び制御プログラム | |
JP2004225668A (ja) | 電子制御装置及び該電子制御装置の記憶装置 | |
JP2001282505A (ja) | 浮動小数点演算機能を有した電子制御装置 | |
US6904543B2 (en) | Electronic control having floating-point data check function | |
JP2016162330A (ja) | 電子制御装置 | |
JP2001099678A (ja) | 電子制御装置 | |
JP4058870B2 (ja) | 浮動小数点演算機能を有した電子制御装置 | |
JP3690365B2 (ja) | 浮動小数点演算によるなまし計算の収束判定方法及び電子制御装置 | |
JP2001196933A (ja) | 浮動小数点演算機能を有した電子制御装置 | |
JP6528697B2 (ja) | 電子制御装置およびコード生成プログラム | |
JP2013104387A (ja) | エンジン制御装置 | |
JP3612248B2 (ja) | 固定小数点演算回路 | |
JPH11212763A (ja) | 電子制御装置 | |
JPH1183883A (ja) | 車輪速度演算装置 | |
JP2021133849A (ja) | パラメータ算出装置及びパラメータ算出方法 | |
JP2000347882A (ja) | 制御プログラムの処理装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050324 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20070912 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070918 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20071109 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071204 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080624 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080821 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090224 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090424 |
|
A911 | Transfer to examiner for re-examination before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20090430 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090526 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090608 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4329332 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120626 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120626 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130626 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140626 Year of fee payment: 5 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |