(57)【要約】【課題】演算精度を高めつつ、変数同士の積のオーバーフローを防止する。【解決手段】データ処理方法は、温度を取得するステップ（Ｓ５０４）と、マップから係数α（１）を読み出すステップ（Ｓ５０６）と、マップから係数α（２）を読み出すステップ（Ｓ５０８）と、温度が第１の所定値以下である場合に（Ｓ５１０にてＹＥＳ）、判定フラグをＯＮにするステップ（Ｓ５１２）と、温度が第１の所定値より大きく（Ｓ５１０にてＮＯ）、第２の所定値以上である場合に（Ｓ５１４にてＹＥＳ）、判定フラグをＯＦＦにするステップ（Ｓ５１６）と、判定フラグがＯＮであるとき（Ｓ５１８にてＹＥＳ）、α（２）とｘとの積を算出するステップ（Ｓ５２０）と、判定フラグがＯＮでないとき（Ｓ５１８にてＮＯ）、α（１）とｘとの積を算出するステップ（Ｓ５２４）とを含む。【選択図】        図５
2004272795.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータの処理を行なう装置であって、
データを記憶するための記憶手段と、
予め定められた最下位ビットを有するデータを取得するための取得手段と、
前記記憶手段および前記取得手段に接続され、前記取得されたデータと、前記記憶された第１の最下位ビットを有する第１のデータとの積が予め定められた範囲に含まれるか否かを判断するための判断手段と、
前記判断手段に接続され、前記判断の結果に基づいて、前記第１のデータと、前記第１の最下位ビットよりも大きな第２の最下位ビットを有する第２のデータとのいずれかのデータを選択するための選択手段と、
前記選択されたいずれかのデータと前記取得されたデータとの積を算出するための算出手段とを含む、データ処理装置。
【請求項２】
前記選択手段は、前記取得されたデータと前記第１のデータとの積が前記予め定められた範囲に含まれるときは、前記第１のデータを選択するための手段を含む、請求項１に記載のデータ処理装置。
【請求項３】
前記選択手段は、前記取得されたデータと前記第１のデータとの積が前記予め定められた範囲から逸脱するときは、前記第２のデータを選択するための手段を含む、請求項１に記載のデータ処理装置。
【請求項４】
前記取得されたデータは上限値および下限値が設定されたデータであり、前記取得されたデータおよび前記第１のデータは符号付きのデータであって、
前記予め定められた範囲は、前記第１のデータと前記取得されたデータの最小値との積を上回る範囲および前記第１のデータと前記取得されたデータの最大値との積を下回る範囲のいずれかである、請求項１〜３のいずれかに記載のデータ処理装置。
【請求項５】
前記取得されたデータは上限値および下限値が設定されたデータであり、前記取得されたデータおよび前記第１のデータは符号なしのデータであって、
前記予め定められた範囲は、前記第１のデータと前記取得されたデータの最大値との積を下回る範囲である、請求項１〜３のいずれかに記載のデータ処理装置。
【請求項６】
複数のデータの処理を行なう方法であって、
データを予め準備する準備ステップと、
予め定められた最下位ビットを有するデータを取得する取得ステップと、
前記取得されたデータと、前記準備された第１の最下位ビットを有する第１のデータとの積が予め定められた範囲に含まれるか否かを判断する判断ステップと、
前記判断の結果に基づいて、前記第１のデータと、前記第１の最下位ビットよりも大きな第２の最下位ビットを有する第２のデータとのいずれかのデータを選択する選択ステップと、
前記選択されたいずれかのデータと前記取得されたデータとの積を算出する算出ステップとを含む、データ処理方法。
【請求項７】
前記選択ステップは、前記取得されたデータと前記第１のデータとの積が前記予め定められた範囲に含まれるときは、前記第１のデータを選択するステップを含む、請求項６に記載のデータ処理方法。
【請求項８】
前記選択ステップは、前記取得されたデータと前記第１のデータとの積が前記予め定められた範囲から逸脱するときは、前記第２のデータを選択するステップを含む、請求項６に記載のデータ処理方法。
【請求項９】
前記取得されたデータは上限値および下限値が設定されたデータであり、前記取得されたデータおよび前記第１のデータは符号付きのデータであって、
前記予め定められた範囲は、前記第１のデータと前記取得されたデータの最小値との積を上回る範囲および前記第１のデータと前記取得されたデータの最大値との積を下回る範囲のいずれかである、請求項６〜８のいずれかに記載のデータ処理方法。
【請求項１０】
前記取得されたデータは上限値および下限値が設定されたデータであり、前記取得されたデータおよび前記第１のデータは符号なしのデータであって、
前記予め定められた範囲は、前記第１のデータと前記取得されたデータの最大値との積を下回る範囲である、請求項６〜８のいずれかに記載のデータ処理方法。
【請求項１１】
請求項６〜１０に記載のデータ処理方法をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のデータを処理する技術に関し、特に、変数同士の積のオーバーフローを防止しつつ、処理結果の精度を確保する処理装置、処理方法およびその方法を実現するためのプログラムに関する。
【０００２】
【従来の技術】
複数の変数を使用するデータ処理をコンピュータに実行させる場合、データ処理の結果に要求する特性に応じて各変数の大きさを適切に設定する必要がある。たとえば、データ処理に精度を求める場合、変数の最下位ビット（以下、ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）と表わす。）を細かくする必要がある。この場合、データ処理に使用される変数の大きさによっては、処理結果（たとえば、変数と変数との積）がデータ処理プログラム上にて定義された変数の上限値を上回ったり（オーバーフロー）、下限値を下回ったり（アンダーフロー）する場合がある。また、このようなオーバーフローあるいはアンダーフローを防ぐために、その変数のＬＳＢを粗くすると、その処理結果の精度が悪化するため、その処理結果を使用する制御に影響を与える場合がある。
【０００３】
このような問題に対して、たとえば特開昭６０−５３３９号公報（特許文献１）は、オーバーフローやアンダーフローの発生を防止することができるデジタル信号処理装置を開示する。このデジタル信号処理装置は、各単位演算段において演算結果のオーバーフローもしくはアンダーフローが生じたとき、その単位演算段の入力デジタルデータの値を０．５倍もしくは２倍にして演算を再度実行させる入力値変更回路と、オーバーフローを＋１、アンダーフローを−１として全段についてその発生回数を累積する累積回路と、最終段の出力に対して２Ｒ倍（Ｒは、累積回路による累積値）の補正を行なう補正回路とを含む。
【０００４】
このデジタル信号処理装置によると、最終の演算結果が出力される前に、途中の単位演算において発生したオーバーフローあるいはアンダーフローの回数に基づいて、処理に使用される入力値が変更される。演算はその変更された入力値に基づいて再度行われ、演算結果が出力される前に、その結果は入力値の変更に合わせて補正される。これにより、オーバーフローあるいはアンダーフローの発生を未然に防ぐことができる。
【０００５】
【特許文献１】
特開昭６０−５３３９号公報
【０００６】
【発明が解決しようとする課題】
しかしながら、特許文献１に開示された技術によると、演算結果のオーバーフローあるいはアンダーフローを防止することはできても、演算結果の精度を高めることができないという問題があった。
【０００７】
また、各演算ごとにオーバーフローあるいはアンダーフローが発生するか否かを判断し、オーバーフローあるいはアンダーフローが発生する場合にはそれらがなくなるまで入力データを０．５倍、あるいは２倍するため、入力データの大きさによっては、処理が遅延する場合があった。
【０００８】
本発明は、上述の課題を解決するためになされたものであって、その目的は、データ処理を遅延させることなく、オーバーフローの発生を防止しつつ、演算結果の精度を確保することができるデータ処理装置、処理方法およびその方法を実現するためのプログラムを提供することである。
【０００９】
【課題を解決するための手段】
第１の発明に係るデータ処理装置は、複数のデータの処理を行なう装置であって、データを記憶するための記憶手段と、予め定められた最下位ビットを有するデータを取得するための取得手段と、記憶手段および取得手段に接続され、取得されたデータと、記憶された第１の最下位ビットを有する第１のデータとの積が予め定められた範囲に含まれるか否かを判断するための判断手段と、判断手段に接続され、判断の結果に基づいて、第１のデータと、第１の最下位ビットよりも大きな第２の最下位ビットを有する第２のデータとのいずれかのデータを選択するための選択手段と、選択されたいずれかのデータと取得されたデータとの積を算出するための算出手段とを含む。
【００１０】
第１の発明によると、取得手段が予め定められた最下位ビットを有するデータを取得すると、判断手段は、そのデータと、第１の最下位ビットを有する第１のデータとの積（以下、単に積と表わす。）が予め定められた範囲に含まれるか否かを判断する。選択手段は、判断の結果に基づいて、第１のデータと、第１の最下位ビットよりも大きな第２の最下位ビットを有する第２のデータとのいずれかを選択する。たとえば、その積が予め定められた範囲に含まれると判断されると、第１のデータが選択される。このとき、その積のオーバーフローを防止しつつ、積の精度を高めることができる。また、たとえばその積が予め定められた範囲に含まれないと判断されると、第２のデータが選択される。このとき、積のオーバーフローが防止される。このようにすると、演算結果のオーバーフローを防止できる範囲で、その精度を向上させることができる。これにより、演算結果の精度を悪化させることなくオーバーフローの発生を防止することができるデータ処理装置を提供することができる。
【００１１】
第２の発明に係るデータ処理装置は、第１の発明の構成に加えて、選択手段は、取得されたデータと第１のデータとの積が予め定められた範囲に含まれるときは、第１のデータを選択するための手段を含む。
【００１２】
第２の発明によると、その積が予め定められた範囲に含まれるとき第１のデータが選択されるため、演算結果の精度を高めつつオーバーフローを防止することができる。
【００１３】
第３の発明に係るデータ処理装置は、第１の発明の構成に加えて、選択手段は、取得されたデータと第１のデータとの積が予め定められた範囲から逸脱するときは、第２のデータを選択するための手段を含む。
【００１４】
第３の発明によると、その積が予め定められた範囲から逸脱するとき第２のデータが選択されるため、演算結果のオーバーフローを防止することができる。
【００１５】
第４の発明に係るデータ処理装置は、第１〜３のいずれかの発明の構成に加えて、取得されたデータは上限値および下限値が設定されたデータである。取得されたデータおよび第１のデータは符号付きのデータである。予め定められた範囲は、第１のデータと取得されたデータの最小値との積を上回る範囲および第１のデータと取得されたデータの最大値との積を下回る範囲のいずれかである。
【００１６】
第４の発明によると、取得されたデータが上限値および下限値が設定されたデータであって、取得されたデータおよび第１のデータが符号付きのデータである場合に、オーバーフローの発生を防止しつつ、演算結果の精度を高めることができる。すなわち、その積が、第１のデータと取得されたデータの最小値との積を上回る範囲および第１のデータと取得されたデータの最大値との積を下回る範囲のいずれかに含まれる場合、第１のデータが選択されるため、オーバーフローを防止しつつ演算結果の精度を高めることができる。あるいは、その積がそのような範囲にない場合には第２のデータが選択されるため、オーバーフローは発生しない。
【００１７】
第５の発明に係るデータ処理装置は、第１〜３のいずれかの発明の構成に加えて、取得されたデータは上限値および下限値が設定されたデータである。取得されたデータおよび第１のデータは符号なしのデータである。予め定められた範囲は、第１のデータと取得されたデータの最大値との積を下回る範囲である。
【００１８】
第５の発明によると、取得されたデータが上限値および下限値が設定されたデータであって、取得されたデータおよび第１のデータが符号なしのデータである場合に、取得されたデータに対応させてオーバーフローの発生を防止しつつ、演算結果の精度を高めることができる。すなわち、その積が、第１のデータと取得されたデータの最大値との積を下回るとき、第１のデータが選択されるため、オーバーフローを防止しつつ演算結果の精度を高めることができる。また、その積が第１のデータと取得されたデータの最大値との積を上回る場合には第２のデータが選択されるため、オーバーフローは発生しない。
【００１９】
第６の発明に係るデータ処理方法は、複数のデータの処理を行なう方法であって、データを予め準備する準備ステップと、予め定められた最下位ビットを有するデータを取得する取得ステップと、取得されたデータと、準備された第１の最下位ビットを有する第１のデータとの積が予め定められた範囲に含まれるか否かを判断する判断ステップと、判断の結果に基づいて、第１のデータと、第１の最下位ビットよりも大きな第２の最下位ビットを有する第２のデータとのいずれかのデータを選択する選択ステップと、選択されたいずれかのデータと取得されたデータとの積を算出する算出ステップとを含む。
【００２０】
第６の発明によると、取得ステップにて、予め定められた最下位ビットを有するデータが取得されると、判断ステップにて、そのデータと、第１の最下位ビットを有する第１のデータとの積（以下、単に積と表わす。）が予め定められた範囲に含まれるか否かが判断される。選択ステップにて、判断の結果に基づいて、第１のデータと、第１の最下位ビットよりも大きな第２の最下位ビットを有する第２のデータとのいずれかが選択される。たとえば、その積が予め定められた範囲に含まれると判断されると、第１のデータが選択される。このとき、その積のオーバーフローを防止しつつ、積の精度を高めることができる。また、たとえばその積が予め定められた範囲に含まれないと判断されると、第２のデータが選択される。このとき、積のオーバーフローが防止される。このようにすると、演算結果のオーバーフローを防止できる範囲で、その精度を向上させることができる。これにより、演算結果の精度を高めつつ、オーバーフローの発生を防止することができるデータ処理方法を提供することができる。
【００２１】
第７の発明に係るデータ処理方法は、第６の発明の構成に加えて、選択ステップは、取得されたデータと第１のデータとの積が予め定められた範囲に含まれるときは、第１のデータを選択するステップを含む。
【００２２】
第７の発明によると、その積が予め定められた範囲に含まれるとき第１のデータが選択されるため、演算結果の精度を高めつつオーバーフローを防止することができる。
【００２３】
第８の発明に係るデータ処理方法は、第６の発明の構成に加えて、選択ステップは、取得されたデータと第１のデータとの積が予め定められた範囲から逸脱するときは、第２のデータを選択するステップを含む。
【００２４】
第８の発明によると、その積が予め定められた範囲から逸脱するとき第２のデータが選択されるため、演算結果のオーバーフローを防止することができる。
【００２５】
第９の発明に係るデータ処理方法は、第６〜８のいずれかの発明の構成に加えて、取得されたデータは上限値および下限値が設定されたデータである。取得されたデータおよび第１のデータは符号付きのデータである。予め定められた範囲は、第１のデータと取得されたデータの最小値との積を上回る範囲および第１のデータと取得されたデータの最大値との積を下回る範囲のいずれかである。
【００２６】
第９の発明によると、取得されたデータが上限値および下限値が設定されたデータであって、取得されたデータおよび第１のデータが符号付きのデータである場合に、オーバーフローの発生を防止しつつ、演算結果の精度を高めることができる。すなわち、その積が、第１のデータと取得されたデータの最小値との積を上回る範囲および第１のデータと取得されたデータの最大値との積を下回る範囲のいずれかに含まれる場合、第１のデータが選択されるため、オーバーフローを防止しつつ演算結果の精度を高めることができる。あるいは、その積がそのような範囲にない場合には第２のデータが選択されるため、オーバーフローは発生しない。
【００２７】
第１０の発明に係るデータ処理方法は、第６〜８のいずれかの発明の構成に加えて、取得されたデータは上限値および下限値が設定されたデータである。取得されたデータおよび第１のデータは符号なしのデータである。予め定められた範囲は、第１のデータと取得されたデータの最大値との積を下回る範囲である。
【００２８】
第１０の発明によると、取得されたデータが上限値および下限値が設定されたデータであって、取得されたデータおよび第１のデータが符号なしのデータである場合に、取得されたデータに対応させてオーバーフローの発生を防止しつつ、演算結果の精度を高めることができる。すなわち、その積が、第１のデータと取得されたデータの最大値との積を下回るとき、第１のデータが選択されるため、オーバーフローを防止しつつ演算結果の精度を高めることができる。また、その積が第１のデータと取得されたデータの最大値との積を上回る場合には第２のデータが選択されるため、オーバーフローは発生しない。
【００２９】
第１１の発明に係るプログラムは、第６〜１０のいずれかの発明に係るデータ処理方法をコンピュータに実行させる。
【００３０】
第１１の発明によると、演算結果の精度を高めつつ積のオーバーフローを防ぐことができるデータ処理方法をコンピュータに実行させることができる。
【００３１】
【発明の実施の形態】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰返さない。
【００３２】
図１を参照して、本発明の実施の形態に係るデータ処理装置を搭載した車両の制御ブロック図について説明する。このデータ処理装置は、たとえば各センサから受信する温度、電圧などの信号値に基づいて、バッテリ１１０の残存容量を算出するために使用される。
【００３３】
図１に示すように、この車両は、バッテリＥＣＵ（Ｅｌｅｃｔｒｏｎｉｃ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）１００と、バッテリ１１０と、ＳＭＲ（Ｓｙｓｔｅｍ  Ｍａｉｎ  Ｒｅｌａｙ）１２０と、インバータ１３０と、モータ１４０と、モニタ１５０と、電圧センサ１６０と、電流センサ１７０と、バッテリ温度センサ１８０とを含む。
【００３４】
バッテリＥＣＵ１００は、最下位ビットが異なる複数のデータを記憶しているメモリ１０２と、外部から受信した信号に基づいてデータを取得するための取得回路と、記憶されているデータと取得されたデータとの積が所定の範囲に含まれるか否かを判断する判断回路と、その判断の結果に基づいて複数のデータのうちから適切なデータを選択する選択回路とを含む。
【００３５】
バッテリ１１０は、６つのセル１１２と、セルコントローラ１１４とを含む。このバッテリ１１０は、たとえばニッケル・水素蓄電池、ニッケル・カドミウム蓄電池であるが、他の二次電池であってもよい。また、バッテリ１１０に含まれるセル１１２の数は６つに限られず、出力特性や回生受け入れ性など二次電池を搭載する車両に固有な特性に基づいて設定することができる。
【００３６】
バッテリＥＣＵ１００には、電圧センサ１６０、電流センサ１７０、およびバッテリ温度センサ１８０からの信号が入力される。バッテリＥＣＵ１００は、セルコントローラ１１４、ＳＭＲ１２０、インバータ１３０、およびモニタ１５０に信号を出力する。
【００３７】
セルコントローラ１１４は、バッテリＥＣＵ１００から受信する信号に基づいて各セル１１２の状態を制御する。ＳＭＲ１２０は、電源回路について所定の条件が成立すると、バッテリＥＣＵ１００から受信する信号に基づいて、その電源回路の開閉を切り換える。この所定の条件とは、たとえば車両が回生制動している場合にモータ１４０が発電した電力が基準の電圧よりも大きくなる場合である。この場合、ＳＭＲ１２０は電源回路を開くため、バッテリ１１０が過充電されることを防止することができる。
【００３８】
インバータ１３０は、たとえばＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）インバータであるが、特にこれに限られない。このインバータ１３０は、バッテリＥＣＵ１００からの信号に基づいてモータ１４０に供給する電力、およびモータ１４０から供給される電力を制御する。たとえば、車両が加速のために電力を必要としている場合、モータ１４０に供給される電力は増加する。一方、車両が制動状態にある場合、インバータ１３０はモータ１４０が発電した電力を所定の電圧に降圧することにより、バッテリ１１０を充電する。
【００３９】
モータ１４０は、たとえば埋込永久磁石型電動機であるが、これに限られない。モータ１４０が発生したトルクは駆動軸（図示しない）により伝達され、この車両を駆動する。
【００４０】
モニタ１５０は、バッテリＥＣＵ１００から受信した信号に基づいてバッテリ１１０の残存容量を表示する。
【００４１】
図２〜図４を参照して、図１に示すメモリ１０２に記憶されるデータマップについて説明する。
【００４２】
図２は、任意の引数（ａｘ，ａｙ）を与えることにより算出されるデータα（１）を格納したテーブルを表わす。このとき、α（１）のＬＳＢは、１／１０４である。
【００４３】
たとえば引数ａｘ（ｋ），ａｙ（ｋ）に対して算出されるα（１）は９０００である。このとき、物理値は、０．９０００（＝９０００×（１／１０４））となる。
【００４４】
図３は、図２に示したテーブルと同様に、任意の引数ａｘ（ｋ），ａｙ（ｋ）を与えることにより算出されるデータα（２）を格納したテーブルを表わす。このとき、データα（２）のＬＳＢは２／１０４である。
【００４５】
図３のテーブルに対して図２に与えた引数と同じ引数を与えた場合、算出されるデータα（２）の値が異なる。たとえば、引数ａｘ（ｋ），ａｙ（ｋ）に対して算出されるα（２）は４５００である。この場合、物理値は、０．９０００（＝４５００×（２／１０４））となる。
【００４６】
図４は、温度ごとに予め設定されるデータの上限値（Ｘｍａｘ）を表わす。この上限値は、たとえば、温度ごとに特定されたバッテリ１１０の特性に基づいて予め設定されるが、温度以外の物理値に基づいて定めてもよい。
【００４７】
図４において、たとえばバッテリ１１０の温度が２０度であるとき、上限値は４０００００である。この場合、データのＬＳＢは、１／１０５であるため、物理値は、４．０００００（＝４０００００×（１／１０５））となる。
【００４８】
なお、テーブルに格納されるデータについてのＬＳＢは、図２〜図４に示したＬＳＢに限られない。図２および図３に示したテーブルの場合、互いに異なるＬＳＢを有するデータが格納されていればよい。各テーブルについてのデータのＬＳＢは、物理量あるいはデータの処理結果を使用する制御方法などに応じて設定することができる。また、メモリ１０２に記憶されるデータは２次元のデータに限られず、多次元のデータであってもよい。
【００４９】
ここで、バッテリＥＣＵ１００が実行するデータ処理プログラムにて使用される関数ｘ（ｔ）について説明する。この関数は、たとえばｘ（ｔ）＝α・ｘ（ｔ−１）＋βと表わされる。この関数は、バッテリ１１０の特性（たとえば、充放電時間と電圧との関係など）に関する実験により、あるいはシミュレーションにより取得することができる。
【００５０】
ｘは４バイトの符号なし変数であって、そのＬＳＢは、１／１０５である。ｔはデータ処理が実行されるタイミングを表わす。したがって、（ｔ−１）は、ｔにおける処理の一回前の処理が実行されたタイミングを表わす。
【００５１】
αは、後述するように、図２および図３に示したマップに対して、任意の引数ａｘ，ａｙを与えることにより算出される係数である。たとえば、図２において、引数ａｘ（ｋ），ａｙ（ｋ）を与えると、９０００がα（１）として算出される。図３において、同じ引数を与えると、４５００がα（２）として算出される。βは、ｘと同次元であって、時間ｔに依存しない変数である。
【００５２】
この関数ｘ（ｔ）を使用して、バッテリ１１０の温度に基づく所定の演算を行なうと、残存容量（ＳＯＣ（Ｓｔａｔｅ  ｏｆ  Ｃｈａｒｇｅ））を算出するために必要な値が算出される。
【００５３】
以下、図２〜図４を参照しつつ、上述の関数に使用される変数同士の積とオーバーフローとの関係について説明する。
【００５４】
たとえば、温度Ｔｅｍｐが１０であるとき、ｘは最大５０００００の値までとり得る。このとき、α（１）・ｘのとり得る上限値は、４．５×１０９（＝９０００×５０００００）となる。α（２）・ｘのとり得る上限値は、２．２５×１０９（＝４５００×５０００００）となる。また、符号なし４バイトデータの上限値は、約４．２９×１０９（＝２（４×８））となる。
【００５５】
したがって、α（１）を選択すると、演算結果によっては符号なし４バイトデータの上限値を上回る（オーバーフローする）場合があるため、α（２）を選択する。この場合、データの精度はα（１）を選択する場合よりも粗くなるが、演算結果のオーバーフローを未然に防止することができる。
【００５６】
一方、温度Ｔｅｍｐが３０であるとき、ｘは最大３０００００の値までとり得る。したがって、α（１）・ｘがとり得る上限値は、２．７×１０９（＝９０００×３０００００）となる。符号なし４バイトデータの上限値は約４．２９×１０９であるため、α（１）を選択しても、演算結果（＝α（１）・ｘ）が符号なし４バイトデータの上限値を越えることはない。その結果、データの精度を粗くすることなく、演算結果のオーバーフローを未然に防止することができる。
【００５７】
図５を参照して、本実施の形態に係るデータ処理装置が実行するプログラムの制御構造を、フローチャートに基づいて説明する。
【００５８】
ステップ（以下「ステップ」をＳと表わす。）５０２にて、バッテリＥＣＵ１００は、後の演算処理の結果を一時的に格納するための変数ｔｍｐ（１），ｔｍｐ（２）を初期化する。
【００５９】
Ｓ５０４にて、バッテリＥＣＵ１００は、バッテリ温度センサ１８０から受信する信号に基づいて、バッテリ１１０の温度Ｔｅｍｐを取得する。
【００６０】
Ｓ５０６にて、バッテリＥＣＵ１００は、メモリ１０２に記憶されているマップ（図２）から係数α（１）を算出する。この算出は、このプログラムの実行時に得られる引数ａｘ（ｋ），ａｙ（ｋ）をマップに与えることにより行われる。
【００６１】
Ｓ５０８にて、バッテリＥＣＵ１００は、メモリ１０２に記憶されているマップ（図３）から係数α（２）を算出する。この算出は、このプログラムの実行時に得られるａｘ（ｋ）およびａｙ（ｋ）をマップに与えることにより行われる。
【００６２】
Ｓ５１０にて、バッテリＥＣＵ１００は、バッテリ１１０の温度（Ｔｅｍｐ）が第１の所定値以下であるか否かを判断する。ここで、第１の所定値とは、バッテリ１１０の特性に基づいて予め定められた処理の基準となる値のことをいう。バッテリ１１０の温度が第１の所定値以下であるとき（Ｓ５１０にてＹＥＳ）、処理はＳ５１２に移される。そうでないと（Ｓ５１０にてＮＯ）、処理はＳ５１４に移される。
【００６３】
Ｓ５１２にて、バッテリＥＣＵ１００は、判定フラグをオンにする。この判定フラグは、係数α（１）と係数α（２）とを切り換えるか否かを判定するためのフラグである。
【００６４】
Ｓ５１４にて、バッテリＥＣＵ１００は、Ｔｅｍｐが第２の所定値以上であるか否かを判断する。ここで、第２の所定値とは、バッテリ１１０の温度特性に基づいて予め定められた基準値であって、第１の所定値よりも大きな値のことをいう。Ｔｅｍｐが第２の所定値以上であるとき（Ｓ５１４にてＹＥＳ）、処理はＳ５１６に移される。そうでないと（Ｓ５１４にてＮＯ）、処理は５１８に移される。
【００６５】
Ｓ５１８にて、バッテリＥＣＵ１００は、判定フラグがオンであるか否かを判断する。判定フラグがオンであるとき（Ｓ５１８にてＹＥＳ）、処理はＳ５２０に移される。そうでないと（Ｓ５１８にてＮＯ）、処理はＳ５２４に移される。
【００６６】
Ｓ５２０にて、バッテリＥＣＵ１００は、α（２）とｘとの積を算出して、ｔｍｐ（１）に格納する。Ｓ５２２にて、バッテリＥＣＵ１００は、α（２）のＬＳＢ（２／１０４）とｔｍｐ（１）に格納されたデータとの積を算出して、ｔｍｐ（２）に格納する。
【００６７】
Ｓ５２４にて、バッテリＥＣＵ１００は、α（１）とｘとの積を算出して、ｔｍｐ（１）に格納する。Ｓ５２６にて、バッテリＥＣＵ１００は、α（２）のＬＳＢ（１／１０４）とｔｍｐ（１）に格納されたデータとの積を算出して、ｔｍｐ（２）に格納する。
【００６８】
Ｓ５２８にて、バッテリＥＣＵ１００は、ｔｍｐ（２）とβとの和をｘとして算出する。
【００６９】
Ｓ５３０にて、バッテリＥＣＵ１００は、算出したｘの値がバッテリ１１０の温度がＴｅｍｐである場合の上限値（Ｘｍａｘ）よりも大きいか否かを判断する。ｘの値がＸｍａｘよりも大きいとき（Ｓ５３０にてＹＥＳ）、処理はＳ５３２に移される。そうでないと（Ｓ５３０にてＮＯ）、処理は終了する。
【００７０】
Ｓ５３２にて、バッテリＥＣＵ１００は、上限値をセットする。これにより、Ｘｍａｘの値（図４）がｘの値として格納される。その後、処理は終了する。
【００７１】
以上の構造およびフローチャートに基づく、本実施の形態に係るバッテリＥＣＵ１００の動作を、バッテリ１１０の温度Ｔｅｍｐが１０度の場合と３０度の場合とに分けて説明する。
【００７２】
なお、係数α（１）は９０００、係数α（２）は４５００とする（図２，図３）。また、第１の所定値（Ｓ５１０）を２０度、第２の所定値（Ｓ５１４）を２５度とする。
【００７３】
［バッテリ１１０の温度が１０度である場合］
変数が初期化され（Ｓ５０２）、バッテリ１１０の温度（１０度）が取得されると（Ｓ５０４）、係数α（１）とα（２）とがマップから読出される（Ｓ５０６，Ｓ５０８）。バッテリ１１０の温度が第１の所定値（２０度）以下であるため（Ｓ５１０にてＹＥＳ）、判定フラグがオンに設定される（Ｓ５１２）。
【００７４】
判定フラグのオンが確認されると（Ｓ５１８にてＹＥＳ）、変数ｔｍｐ（１）には４５００とｘとの積が格納され（Ｓ５２０）、ｔｍｐ（２）には、ｔｍｐ（１）に格納されたデータと係数α（２）のＬＳＢ（２／１０４）との積（物理値）が格納される（Ｓ５２２）。その後、ｔｍｐ（２）とβとの和が算出され（Ｓ５２８）、算出結果がＸｍａｘよりも小さいとき（Ｓ５３０にてＮＯ）、処理は終了する。
【００７５】
このようにして、データの演算により算出されうる最大値は、小さいＬＳＢを有するデータを使用して所定の演算（積の算出）を実行した場合の上限値を上回ることが事前に確認される。その結果、そのＬＳＢよりも大きなＬＳＢを有するデータ（α（２））が選択され、そのデータに基づいて所定の演算が行われるので演算結果のオーバーフローを防止することができる。
【００７６】
［バッテリ１１０の温度が３０度である場合］
バッテリ１１０の温度Ｔｅｍｐが第１の所定値（２０度）以下でなく（Ｓ５１０にてＮＯ）、第２の所定値（２５度）以上であるため（Ｓ５１４にてＹＥＳ）、判定フラグがオフに設定される（Ｓ５１６）。判定フラグのオンが確認されないため（Ｓ５１８にてＮＯ）、変数ｔｍｐ（１）には係数α（１）とｘとの積が格納され（Ｓ５２４）、ｔｍｐ（２）には、そのｔｍｐ（１）に格納されたデータとＬＳＢとの積（物理値）が格納される（Ｓ５２６）。
【００７７】
このようにして、複数のＬＳＢのうち小さいＬＳＢを有するデータ（α（１））を使用して所定の演算（積の算出）を実行した場合、演算結果が上限値を上回らないことが確認されるため、そのＬＳＢを使用することができる。そのため、演算結果をオーバーフローさせることなく、精度の高い演算結果を得ることができる。
【００７８】
以上のようにして、本発明の実施の形態に係るデータ処理装置によると、取得されたデータに関する演算を行なう場合、小さなＬＳＢを有するデータ（α（１））と、取得されたデータ（たとえば、温度データ）に基づくデータの最大値との積が予め算出される。この積が演算結果のとり得る上限値を上回ることが確認されると、そのＬＳＢよりも小さいＬＳＢを有するデータ（α（２））が選択される。これにより、演算結果のオーバーフローを防止することができる。
【００７９】
一方、小さなＬＳＢを有するデータ（α（１））と、取得されたデータに基づくデータの最大値との積が演算結果のとり得る上限値を上回らないことが確認されると、そのＬＳＢが選択される。この場合、演算結果をオーバーフローさせることなく、その結果の精度を向上させることができる。
【００８０】
これにより、データ処理を遅延させることなく、オーバーフローの発生を防止しつつ演算結果の精度を確保することができるデータ処理装置を提供することができる。
【００８１】
なお、本実施の形態に係るデータ処理装置においては、２つのＬＳＢに対してデータをメモリ１０２に記憶していたが、それ以上のＬＳＢに対して定められたマップデータを記憶するようにしてもよい。このようにすると、オーバーフローを発生させない範囲で、演算結果の精度をより高めることができる。
【００８２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【図１】本発明の実施の形態に係るデータ処理装置を搭載する車両の制御ブロック図である。
【図２】図１に示すメモリに記憶されるデータを格納するテーブルの構成を表わす図（その１）である。
【図３】図１に示すメモリに記憶されるデータを格納するテーブルの構成を表わす図（その２）である。
【図４】図１に示すメモリに記憶されるデータを格納するテーブルの構成を表わす図（その３）である。
【図５】本発明の実施の形態に係るデータ処理装置が実行するプログラムの制御構造を表わすフローチャートである。
【符号の説明】
１００  バッテリＥＣＵ、１０２  メモリ、１１０  バッテリ、１１２  セル、１１４  バッテリコントローラ、１２０  ＳＭＲ、１３０  インバータ、１４０  モータ、１５０  モニタ、１６０  電圧センサ、１７０  電流センサ、１８０  バッテリ温度センサ。
【図１】
2004272795.tif 000003
【図２】
2004272795.tif 000004
【図３】
2004272795.tif 000005
【図４】
2004272795.tif 000006
【図５】
2004272795.tif 000007