(57)【特許請求の範囲】
【請求項１】
符号部、指数部及び仮数部から構成される浮動小数点型データを演算する電子制御装置において、
制御値の浮動小数点型データをなまし演算するなまし演算手段と、
所望の分解能を持たせるべく、有効となるビット数を前記仮数部の上位から指定し、該指定した有効ビット数に応じて前記仮数部を近似する近似手段と、
制御値とそのなまし値とについて、前記近似手段による近似後の値を比較する比較手段と、
該比較した結果、近似後の制御値とそのなまし値とが一致した時点で、前記なまし演算手段による演算を終了し、なまし値を制御値に収束させる収束手段と
を備えることを特徴とする電子制御装置。
【請求項２】
前記近似手段は、
前記仮数部の有効ビット数の次のビットが「０」か「１」かを判別する判別手段と、
前記仮数部の有効ビット数の次のビットが「１」であれば、当該ビットを「１」だけ切り上げる切上手段と、
前記仮数部の有効ビット数の次のビット以降を「０」にクリアするクリア手段と
からなる請求項１に記載の電子制御装置。
【請求項３】
車両用エンジンの各種制御を司る電子制御装置であって、
前記有効ビット数は、制御値そのもの、若しくは該制御値が適用されるエンジン制御種に応じて設定されるものである請求項１又は請求項２に記載の電子制御装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、符号部、指数部及び仮数部から構成される浮動小数点型データを演算する電子制御装置に関するものである。
【０００２】
【従来の技術】
一般に、エンジン制御などに適用される電子制御装置（ＥＣＵ）においては、急激な制御値の変化を避けるためになまし演算が実施される。例えば下記の式を用いてなまし演算が実施される。
【０００３】
今回のなまし値＝（前回のなまし値−制御値）×なまし率＋制御値
つまり、なまし値と制御値との差になまし率を乗算し、その積と制御値との和により今回のなまし値を決定していた。しかし、従来既存のＥＣＵでは整数型データにてなまし値を扱うため、小数点以下が桁落ちし、なまし値が制御値に収束しないという制御上の問題があった。
【０００４】
これに対し近年では、浮動小数点演算プロセッサ（ＦＰＵ：Floating-Point Unit ）を導入し、浮動小数点型データによりエンジン制御を実施することが検討されている。浮動小数点型データは、符号部、指数部及び仮数部により構成され、例えば４バイトからなる浮動小数点型データの場合、２３ビットの仮数部を有することで、常に７桁の精度（１／２^23 ≒0.0000001 の精度）で演算が実施されるようになり、従来の整数型データに比べて非常に細かい精度が得られる。
【０００５】
【発明が解決しようとする課題】
浮動小数点型データを用いてなまし演算を行う場合、演算値の精度が良くなる分、従来のような桁落ちは少なくなる。ところが、なまし値が制御値に近づくにつれてなましが緩やかになり過ぎてしまい、なまし値の収束に時間がかかるという問題が生ずる。
【０００６】
本発明は、上記問題に着目してなされたものであって、その目的とするところは、浮動小数点型データのなまし演算時において、収束までの時間を短縮することができる電子制御装置を提供することである。
【０００７】
【課題を解決するための手段】
上記目的を達成するために、請求項１に記載の発明は、符号部、指数部及び仮数部から構成される浮動小数点型データを演算する電子制御装置において、制御値の浮動小数点型データをなまし演算するなまし演算手段と、所望の分解能を持たせるべく、有効となるビット数を前記仮数部の上位から指定し、該指定した有効ビット数に応じて前記仮数部を近似する近似手段と、制御値とそのなまし値とについて、前記近似手段による近似後の値を比較する比較手段と、該比較した結果、近似後の制御値とそのなまし値とが一致した時点で、前記なまし演算手段による演算を終了し、なまし値を制御値に収束させる収束手段とを備える。
【０００８】
要するに、制御値が変化した際、浮動小数点型データでなましていくと、なまし値の精度が向上する反面、その収束に時間がかかり過ぎるという問題がある。これに対し上記構成では、有効ビット数の任意指定により浮動小数点型データの近似を行い、なましを必要最低限の精度に下げることとした。つまり、浮動小数点型データの仮数部の有効ビット数を操作することで、精度を任意に調整する。そして、近似後の制御値となまし値とが一致した時点でなまし値を制御値に収束させる。これにより、なまし演算が必要なだけ実施されるようになる。その結果、浮動小数点型データのなまし演算時において、収束までの時間を短縮することができる。
【０００９】
実際には、請求項２に記載したように、前記仮数部の有効ビット数の次のビットが「０」か「１」かを判別し（判別手段）、前記仮数部の有効ビット数の次のビットが「１」であれば、当該ビットを「１」だけ切り上げ（切上手段）、前記仮数部の有効ビット数の次のビット以降を「０」にクリアする（クリア手段）。上記構成によれば、浮動小数点型データの近似処理が簡単に且つ的確に実施できるようになる。
【００１０】
請求項３に記載の発明では、車両用エンジンの各種制御を司る電子制御装置であって、前記有効ビット数は、制御値そのもの、若しくは該制御値が適用されるエンジン制御種に応じて設定されるものとしている。例えば燃料噴射制御や電子スロットル制御の制御値、或いは吸入空気量やスロットル開度のデータなど、要求精度が比較的高い場合には、有効ビット数を大きくする。また逆に、例えば燃料ガスのパージ制御の制御値、或いは水温のデータなど、要求精度が比較的低い場合には、有効ビット数を小さくする。これにより、如何なるエンジン制御においてもその制御精度を確保しつつ、制御値に対して適切ななまし演算を実施することが可能となる。
【００１１】
【発明の実施の形態】
以下、この発明を具体化した一実施の形態を図面に従って説明する。図１は、エンジン制御システムの概略を示すブロック図である。本システムにおいて、車載エンジン１は、例えばガソリン噴射式多気筒内燃機関として構成される。
【００１２】
エンジン制御ＥＣＵ１０はマイクロコンピュータ（以下、マイコンという）１１を備え、その中には中央演算処理装置（ＣＰＵ）１２と、読み書き可能な記憶装置（ＲＡＭ）１３と、読み取り専用記憶装置（ＲＯＭ）１４と、浮動小数点演算プロセッサ（ＦＰＵ）１５と、入出力装置（Ｉ／Ｏ）１６とが設けられている。同ＥＣＵ１０には、エンジン１に設けられたセンサ２から、エンジン運転状態を表す各種情報が入力される。センサ２は、例えば吸入空気量を検出するためのエアフローメータ、冷却水温を検出するための水温センサ、スロットル開度を検出するためのスロットル開度センサなどからなる。そして、ＥＣＵ１０は、前記入力されるセンサ信号を基に、図示しないインジェクタによる燃料噴射の制御や燃料ガスのパージ制御などを実施する。
【００１３】
上記センサ２により検出された実際の値（以下、実値という）はノイズ等を含み、そのままでは制御に使えない。つまり、実値は変動が激しく、この値をそのまま制御に使うと、誤動作のおそれがある。そのため、ＥＣＵ１０は、前記入力した実値に対してなまし演算を施してノイズを除去した後、そのなまし値を制御に使用する。
【００１４】
ここで、ＦＰＵ１５は浮動小数点形式の演算を実施する。同ＦＰＵ１５により演算される浮動小数点型データは例えばＩＥＥＥ７５４規格に従い構成され、図２に示されるようにその内訳として、１ビットの符号部と、８ビットの指数部と、２３ビットの仮数部とを有する。仮数部が２３ビットで構成される４バイトの浮動小数点型データの場合、７桁の分解能（0.0000001 の分解能）を有するものであるが、本実施の形態では、仮数部の上位ｎビットを「有効ビット数」として指定することで、仮数部の分解能を必要最低限に下げることとしている。
【００１５】
次に、本実施の形態における作用を説明する。図３は、センサ検出値を取り込むための時間割込み処理を示すフローチャートであり、同処理はエンジン制御ＥＣＵ１０内のＣＰＵ１２により例えば８ｍｓ周期で実行される。図３の処理では、センサ検出値（実値ａ）を所定周期でなまし演算し、その都度、実値ａ又はなまし値ｂのいずれかを制御値として出力する。こうした処理の過程において、ＦＰＵ１５により実値ａ及びなまし値ｂを浮動小数点演算すると共に、浮動小数点型データの仮数部について上位ｎ個分の有効ビットを指定する（図２参照）。そして、この有効ビット数ｎの範囲内において実値ａ及びなまし値ｂを近似し、近似後の両値ａ，ｂが一致した時点で、なまし値が十分に収束したとみなしてなまし演算を終了する。
【００１６】
図３において、ＣＰＵ１２は、先ずステップ１１０でセンサ２から実値ａを読み込む。また、ＣＰＵ１２は、ステップ１２０でその際に取り込まれるセンサ検出値の種類に応じて有効ビット数ｎを設定する。この場合、水温など、要求精度が比較的低いものについては有効ビット数ｎを小さくし（例えば、ｎ＝８）、吸入空気量など、要求精度が比較的高いものについては有効ビット数ｎを大きくする（例えば、ｎ＝１６）。但し、本実施の形態では便宜上、ｎ＝１０とした時の事例について記載する。
【００１７】
その後、ＣＰＵ１２は、ステップ１３０で実値ａをなまし演算する。すなわち、
今回のなまし値＝（前回のなまし値−実値）×なまし率＋実値
としてなまし値ｂを算出する。この際、ａ，ｂの各値は、ＦＰＵ１５により浮動小数点型で高速演算されるようになっている。
【００１８】
さらにその後、ＣＰＵ１２は、ステップ２００で前記ａ，ｂの各値を同一の有効ビット数ｎで近似する。但しこの近似処理については、図４を用いて後述する。
【００１９】
その後、ＣＰＵ１２は、ステップ１４０で近似後のａ，ｂの各値が一致するか否かを判別する。そして、ａ≠ｂであれば、ＣＰＵ１２は、ステップ１５０でなまし値ｂを制御値として出力し、その後本ルーチンを一旦終了する。ａ＝ｂであれば、ＣＰＵ１２はステップ１６０で実値ａを制御値として出力し、その後本ルーチンを一旦終了する。
【００２０】
図４は、前記図３のステップ２００における近似処理を示すフローチャートである。図４において、ＣＰＵ１２は、先ずステップ２０１で実値ａを符号部ａs と、指数部ａx と、仮数部ａy とに分割し、続くステップ２０２でなまし値ｂを符号部ｂs と、指数部ｂx と、仮数部ｂy とに分割する。
【００２１】
その後、ＣＰＵ１２は、ステップ２０３で実値ａの仮数部ａy においてその（２３−ｎ−１）ビット目が「１」であるか否かを判別する。ここで、「ｎ」は仮数部ａy における有効ビット数であって、上記ステップ２０３では、前記図２の浮動小数点型データにおいて、右端から数えて（２３−ｎ−１）ビット目が「０」か「１」かが判別される。
【００２２】
ステップ２０３がＮＯであれば、ＣＰＵ１２はそのままステップ２０５に進み、ステップ２０３がＹＥＳであればステップ２０４を経由してステップ２０５に進む。ステップ２０４では、ＣＰＵ１２は、仮数部ａy に「２^(23-n-1) 」を加算する。これにより、仮数部ａy の（２３−ｎ）ビット目が切り上げられる。また、ＣＰＵ１２は、ステップ２０５で仮数部ａy の０〜（２３−ｎ−１）ビットを全て「０」にクリアする。ステップ２０３〜２０５によれば、仮数部ａy が有効ビット数ｎで近似されることになる。
【００２３】
仮数部ａy の近似処理を実例にて説明する。図５に示されるように有効ビット数ｎを「１０」とした場合、例えば浮動小数点型（float 型）の制御値「0x3F800FFF（１０進で1.0004882 ）」〜「0x3F7FF000（１０進で0.99975586）」の間にある値は、全て「0x3F800000（１０進で1.0000000 ）」として近似されるようになる。すなわち、
・仮数部ａy の（２３−ｎ−１）＝１２ビット目が「１」の場合（例えば、図５の0x3F7FF000の場合）には、仮数部ａy に「２^12 」が加算される（ステップ２０４）。また、仮数部ａy の０〜１２ビット目が強制的に「０」にクリアされる（ステップ２０５）。これにより、「0x3F7FF000」が「0x3F800000」として近似される。
・仮数部ａy の（２３−ｎ−１）＝１２ビット目が「０」の場合（例えば、図５の0x3F800FFFの場合）には、仮数部ａy の０〜１２ビット目が強制的に「０」にクリアされる（ステップ２０５）。これにより、「0x3F800FFF」が「0x3F800000」として近似される。
【００２４】
その後、ＣＰＵ１２は、ステップ２０６で仮数部ａy の２３ビット目が「１」であるか否かを判別する。仮数部ａy の２３ビット目が「１」の場合のみ、ＣＰＵ１２は、ステップ２０７で指数部ａx に「１」を加算すると共に、続くステップ２０８で仮数部ａy の２３ビット目を「０」にする。
【００２５】
一方、ステップ２０９〜２１４では、前記ステップ２０３〜２０８と同様の手順にて、なまし値ｂの仮数部ｂy を有効ビット数ｎにて近似する。各ステップを簡単に記述すれば、
・ステップ２０９では、なまし値ｂの仮数部ｂy においてその（２３−ｎ−１）ビット目が「１」であるか否かを判別する。
・ステップ２１０では、仮数部ｂy に「２^(23-n-1) 」を加算する。
・ステップ２１１では、仮数部ｂy の０〜（２３−ｎ−１）ビットを全て「０」にクリアする。
・ステップ２１２では、仮数部ｂy の２３ビット目が「１」であるか否かを判別する。
・ステップ２１２がＹＥＳの場合のみ、ステップ２１３で指数部ｂx に「１」を加算すると共に、続くステップ２１４で仮数部ａy の２３ビット目を「０」にする。
【００２６】
上記図３，４の処理に基づく、制御値のなまし動作について図６を用いて説明する。例えば実値（制御値）が「ａ０」から「ａ１」にステップ的に変化した際、所定周期で７桁の精度でなまし演算が実施されると共に、そのなまし値が有効ビット数ｎで近似される。このなまし演算により実値に含まれるノイズ等が除去される。そして、なまし前と後とについて各々の近似値が比較され、両値が不一致であれば、なまし値が制御値として出力される（時刻ｔ１〜ｔ２の期間）。また、なまし前と後との各々の近似値が一致すれば、その時点でなまし演算が終了され、なまし値が実値ａ１に強制的に収束させられる（時刻ｔ２）。すなわち、時刻ｔ２では、実値に対してなまし値が十分に収束したとみなされて実値が制御値として出力される。これにより、なまし演算が継続されてなかなか収束しない従来装置（図の二点鎖線）に比べ、収束までの時間が短縮される。
【００２７】
なお本実施の形態では、前記図３のステップ１３０が請求項記載のなまし演算手段に相当する。また、同ステップ２００（図４）が近似手段に相当し、このうち、図４のステップ２０３，２０９が判別手段に、ステップ２０４，２１０が切上手段に、ステップ２０５，２１１がクリア手段に、それぞれ相当する。さらに、図３のステップ１４０が比較手段に相当し、同ステップ１６０が収束手段に相当する。
【００２８】
以上詳述した本実施の形態によれば、以下に示す効果が得られる。
（ａ）有効ビット数ｎの任意指定により浮動小数点型データの近似を行ってなましを必要最低限の精度に下げ、近似後の実値（制御値）となまし値とが一致した時点でなまし値を実値に収束させるようにした。これにより、浮動小数点型データのなまし演算が必要なだけ実施されるようになり、収束までの時間を短縮することができる。
【００２９】
（ｂ）各値ａ，ｂの近似に際し、仮数部の有効ビット数ｎの次のビットが「０」か「１」かを判別し、仮数部の有効ビット数ｎの次のビットが「１」であれば当該ビットを「１」だけ切り上げ、仮数部の有効ビット数ｎの次のビット以降を「０」にクリアするようにした。上記構成によれば、浮動小数点型データの近似処理が簡単に且つ的確に実施できるようになる。
【００３０】
（ｃ）制御値（信号を入力するセンサ）に応じて有効ビット数ｎを可変に設定するようにした。これにより、如何なる制御値でもその精度を確保しつつ、制御値に対して適切ななまし演算を実施することが可能となる。
【００３１】
なお、本発明の実施の形態は、上記以外に次の形態にて実現できる。
上記実施の形態では、制御値（信号を入力するセンサ）に応じて有効ビット数ｎを可変に設定したが、これを変更する。エンジン制御種に応じて有効ビット数ｎを可変に設定する。例えば燃料噴射制御や電子スロットル制御など、要求精度が比較的高い場合には、有効ビット数ｎを大きくし、逆に燃料ガスのパージ制御の制御値など、要求精度が比較的低い場合には、有効ビット数ｎを小さくする。
【００３２】
上記実施の形態では、センサ検出値のなましに本発明の近似処理を適用したが、これに代えて、各種アクチュエータ（ドライバ回路）に対する制御指令値のなましに本発明を適用してもよい。
【００３３】
上記実施の形態では、図２の如く、仮数部の最上位ビット（２３ビット目）から数えて有効ビット数を指定したが、最下位ビット（１ビット目）から数えて有効ビット数を指定してもよい。要は、仮数部の上位ｎビットを有効ビット数として指定できる構成であればよい。
【図面の簡単な説明】
【図１】発明の実施の形態におけるエンジン制御システムの概略を示すブロック図。
【図２】浮動小数点型データの構成を示す図。
【図３】ＣＰＵによる時間割込みルーチンを示すフローチャート。
【図４】近似処理の詳細を示すフローチャート。
【図５】仮数部の近似の処理を具体的に示す図。
【図６】制御値の推移を示すタイムチャート。
【符号の説明】
１…エンジン、１０…エンジン制御ＥＣＵ（電子制御装置）、１１…マイコン、１２…なまし演算手段，近似手段，比較手段，収束手段を構成するＣＰＵ、１５…ＦＰＵ（浮動小数点演算プロセッサ）。
【図１】
0003666226.tif 000002
【図２】
0003666226.tif 000003
【図３】
0003666226.tif 000004
【図４】
0003666226.tif 000005
【図５】
0003666226.tif 000006
【図６】
0003666226.tif 000007