(57)【要約】  【課題】  必要な発電量を確保しつつ発電による燃料消費量増加分を確実に低減する。  【解決手段】  エンジン運転中に、所定の演算周期で発電による燃料消費率増加分を発電機１６の発電量で割り算して電費（単位発電量当たりの燃料消費量増加分）を求め、この電費の使用頻度、発電可能量平均値、平均消費電力のデータに基づいてバッテリ１２の充放電収支がバランスするように目標電費を算出する。この際、今回走行時のデータのサンプル期間（走行開始から現在までの期間）が所定期間を越えるまでは、今回走行時に算出した目標電費と、制御装置１１の書き換え可能な不揮発性メモリに記憶されている前回走行時の目標電費とに基づいて最終的な目標電費を決定する。このようにすれば、今回走行時のデータのサンプル期間が短くても、実際の発電制御に用いる最終的な目標電費の精度を確保することができて、燃費節減効果と放充電収支とを両立させることができる。  【選択図】  図１
2007037260.tif 000002
【特許請求の範囲】
【請求項１】
内燃機関の動力で駆動される発電機と、
前記発電機で発電した電力が充電されるバッテリと、
内燃機関の運転中に所定の演算周期で前記発電機の発電による燃料消費量増加分と発電量とに基づいて単位発電量当たりの燃料消費量増加分を算出する燃料消費量算出手段と、  前記所定の演算周期で算出された前記単位発電量当たりの燃料消費量増加分のデータを統計処理して該単位発電量当たりの燃料消費量増加分の使用頻度を算出して該使用頻度に基づいて目標の燃料消費量増加分を算出する目標値算出手段と、
前記燃料消費量算出手段で算出した現在の単位発電量当たりの燃料消費量増加分と前記目標の燃料消費量増加分とを比較して前記発電機の発電を制御する発電制御手段と
を備えた内燃機関の発電制御装置において、
前回走行時の目標の燃料消費量増加分を記憶保持する記憶手段を備え、
前記目標値算出手段は、今回走行時の前記単位発電量当たりの燃料消費量増加分のデータのサンプル期間が所定期間を越えるまでは、今回走行時に算出した目標の燃料消費量増加分と前記記憶手段に記憶されている前回走行時の目標の燃料消費量増加分とに基づいて最終的な目標の燃料消費量増加分を決定することを特徴とする内燃機関の発電制御装置。
【請求項２】
前記目標値算出手段は、今回走行時に算出した目標の燃料消費量増加分と前記記憶手段に記憶されている前回走行時の目標の燃料消費量増加分との重み付き平均によって前記最終的な目標の燃料消費量増加分を算出することを特徴とする請求項１に記載の内燃機関の発電制御装置。
【請求項３】
前記目標値算出手段は、前記重み付き平均の処理に用いる重み係数を、今回走行時の前記データのサンプル期間に基づいて設定することを特徴とする請求項２に記載の内燃機関の発電制御装置。
【請求項４】
前記目標値算出手段は、前記重み付き平均の処理に用いる重み係数を、今回走行時に算出した目標の燃料消費量増加分と前記記憶手段に記憶されている前回走行時の目標の燃料消費量増加分との偏差に基づいて設定することを特徴とする請求項２又は３に記載の内燃機関の発電制御装置。
【請求項５】
前記目標値算出手段は、前記重み付き平均の処理に用いる重み係数を、今回走行時の消費電力、運転条件、前記バッテリの残充電量、バッテリ容量のうちのいずれか１つ又は２つ以上の組み合わせに基づいて設定することを特徴とする請求項２乃至４のいずれかに記載の内燃機関の発電制御装置。
【請求項６】
内燃機関の動力で駆動される発電機と、
前記発電機で発電した電力が充電されるバッテリと、
内燃機関の運転中に所定の演算周期で前記発電機の発電による燃料消費量増加分と発電量とに基づいて単位発電量当たりの燃料消費量増加分を算出する燃料消費量算出手段と、  内燃機関の運転中に算出された前記単位発電量当たりの燃料消費量増加分のデータを統計処理して該単位発電量当たりの燃料消費量増加分の使用頻度を算出して該使用頻度に基づいて目標の燃料消費量増加分を算出する目標値算出手段と、
前記燃料消費量算出手段で算出した現在の単位発電量当たりの燃料消費量増加分と前記目標の燃料消費量増加分とを比較して前記発電機の発電を制御する発電制御手段と
を備えた内燃機関の発電制御装置において、
前回走行時の目標の燃料消費量増加分を記憶保持する記憶手段を備え、
前記目標値算出手段は、今回走行時の前記単位発電量当たりの燃料消費量増加分のデータのサンプル期間が所定期間を越えるまでは、前記記憶手段に記憶されている前回走行時の目標の燃料消費量増加分を今回走行時の目標の燃料消費量増加分として用いることを特徴とする内燃機関の発電制御装置。
【請求項７】
前記目標値算出手段は、前記所定期間を今回走行時の消費電力、運転条件、前記バッテリの残充電量、バッテリ容量のうちのいずれか１つ又は２つ以上の組み合わせに基づいて設定することを特徴とする請求項６に記載の内燃機関の発電制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、発電機の発電による燃料消費量増加分を考慮して発電機を制御する機能を備えた内燃機関の発電制御装置に関する発明である。
【背景技術】
【０００２】
車両に搭載された発電機（オルタネータ）の制御は、バッテリの充電状態を監視して、バッテリが充電不足とならないように発電機の制御電流（界磁電流）を制御して発電量を制御するようにしたものが多い（特許文献１，２参照）。
【０００３】
この発電機は、内燃機関（エンジン）の動力で駆動されて発電するため、発電時には、発電機を駆動する負荷に応じて燃料が余分に消費されることになる。そこで、発電時の燃料消費量が少なくなる領域でのみ、発電機の発電を行うようにしたものがある（特許文献３，４参照）。
【特許文献１】特開２０００−４５０２号公報
【特許文献２】特開２００１−７８３６５号公報
【特許文献３】特表平６−５０５６１９号公報
【特許文献４】特開２００５−１２９７１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記特許文献３，４の技術は、いずれも発電による燃料消費量増加分を低減する技術であるが、発電を実行する運転条件を予め設定されたマップで決定するため、マップの精度や車両の使用環境（走行道路状況の相違、運転者による車速・加減速の相違等）や車両特性のばらつきによって燃費節減効果が左右されやすく、必ずしも十分な燃費節減効果が得られるとは限らない。
【０００５】
本発明はこのような事情を考慮してなされたものであり、従ってその目的は、必要な発電量を確保しつつ、発電による燃料消費量増加分を確実に低減することができる内燃機関の発電制御装置を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、請求項１に係る発明は、内燃機関の動力で駆動される発電機と、前記発電機で発電した電力が充電されるバッテリと、内燃機関の運転中に所定の演算周期で前記発電機の発電による燃料消費量増加分と発電量とに基づいて単位発電量当たりの燃料消費量増加分を算出する燃料消費量算出手段と、前記所定の演算周期で算出された前記単位発電量当たりの燃料消費量増加分のデータを統計処理して該単位発電量当たりの燃料消費量増加分の使用頻度を算出して該使用頻度に基づいて目標の燃料消費量増加分を算出する目標値算出手段と、前記燃料消費量算出手段で算出した現在の単位発電量当たりの燃料消費量増加分と前記目標の燃料消費量増加分とを比較して前記発電機の発電を制御する発電制御手段とを備え、前回走行時の目標の燃料消費量増加分を記憶手段に記憶保持させ、今回走行時の前記単位発電量当たりの燃料消費量増加分のデータのサンプル期間が所定期間を越えるまでは、今回走行時に算出した目標の燃料消費量増加分と前記記憶手段に記憶されている前回走行時の目標の燃料消費量増加分とに基づいて最終的な目標の燃料消費量増加分を決定するようにしたものである。
【０００７】
このように、発電制御手段によって単位発電量当たりの燃料消費量増加分を目標の燃料消費量増加分に制御するように構成すれば、発電を実行する運転条件を予め設定されたマップで決定する従来の発電制御方式と比較して、マップの精度や車両の使用環境（走行道路状況の相違、運転者による車速・加減速の相違等）や車両特性のばらつきの影響が少なくなり、必要な発電量を確保しつつ、発電による燃料消費量増加分を確実に低減することができる。
【０００８】
ところで、今回走行時の単位発電量当たりの燃料消費量増加分のデータのサンプル期間が短いと、今回走行時のデータのサンプル数が少ないために単位発電量当たりの燃料消費量増加分の使用頻度の精度が悪くなり、その結果、この使用頻度に基づいて算出する目標の燃料消費量増加分の精度も悪くなるため、燃費節減効果が低下したり、バッテリの放充電収支のバランスが悪くなってしまう可能性がある。
【０００９】
この対策として、請求項１に係る発明では、今回走行時のデータのサンプル期間が所定期間を越えるまでは、今回走行時に算出した目標の燃料消費量増加分と記憶手段に記憶されている前回走行時の目標の燃料消費量増加分とに基づいて最終的な目標の燃料消費量増加分を決定するようにしたものである。このようにすれば、今回走行時のデータのサンプル期間が短く、今回走行時に算出した目標の燃料消費量増加分の精度が悪い期間は、記憶手段に記憶されている精度の良い前回走行時の目標の燃料消費量増加分と今回走行時に算出した目標の燃料消費量増加分とを併用して最終的な目標の燃料消費量増加分を決定することができるため、今回走行時のデータのサンプル期間が短くても、実際の発電制御に用いる最終的な目標の燃料消費量増加分の精度を確保することができて、燃費節減効果と放充電収支とを両立させることができる。
【００１０】
この場合、最終的な目標の燃料消費量増加分の具体的な算出方法は、例えば、前回走行時の目標の燃料消費量増加分と今回走行時の目標の燃料消費量増加分とをパラメータとして最終的な目標の燃料消費量増加分を算出するための二次元マップ又は数式を予め作成しておき、この二次元マップ又は数式により最終的な目標の燃料消費量増加分を算出するようにしても良いが、請求項２のように、今回走行時に算出した目標の燃料消費量増加分と記憶手段に記憶されている前回走行時の目標の燃料消費量増加分との重み付き平均によって最終的な目標の燃料消費量増加分を算出するようにすると良い。このようにすれば、重み付き平均という簡単な演算方法で最終的な目標の燃料消費量増加分を精度良く算出することができる。
【００１１】
この重み付き平均の処理に用いる重み係数は、演算処理の簡略化のために、予め適合した固定値としても良いが、目標の燃料消費量増加分の算出精度に影響を及ぼす様々な条件に応じて変化させるようにしても良い。
【００１２】
例えば、請求項３のように、重み付き平均の処理に用いる重み係数を、今回走行時のデータのサンプル期間に基づいて設定するようにしても良い。このようにすれば、例えば、今回走行時のデータのサンプル期間が短く、今回走行時の目標の燃料消費量増加分の算出精度が悪いときには、今回走行時の目標の燃料消費量増加分の使用割合（重み係数）を小さくして、前回走行時の目標の燃料消費量増加分の使用割合（重み係数）を大きくすることで、最終的な目標の燃料消費量増加分の算出精度を確保し、その後、今回走行時のデータのサンプル期間が長くなるに従って（今回走行時の目標の燃料消費量増加分の算出精度が高くなるに従って）、今回走行時の目標の燃料消費量増加分の使用割合（重み係数）を増加させて、最終的な目標の燃料消費量増加分の算出精度を向上させるという制御が可能となる。
【００１３】
また、請求項４のように、重み付き平均の処理に用いる重み係数を、今回走行時に算出した目標の燃料消費量増加分と前記記憶手段に記憶されている前回走行時の目標の燃料消費量増加分との偏差に基づいて設定するようにしても良い。このようにすれば、今回走行時と前回走行時との間の目標の燃料消費量増加分の偏差に応じて今回走行時の目標の燃料消費量増加分の使用割合（重み係数）を増減させて、最終的な目標の燃料消費量増加分の算出精度を向上させるという制御が可能となる。
【００１４】
また、請求項５のように、重み付き平均の処理に用いる重み係数を、今回走行時の消費電力、運転条件、バッテリの残充電量、バッテリ容量のうちのいずれか１つ又は２つ以上の組み合わせに基づいて設定するようにしても良い。このようにすれば、燃費節減効果と放充電収支とを両立させるように今回走行時の目標の燃料消費量増加分の使用割合（重み係数）を増減させて、最終的な目標の燃料消費量増加分の算出精度を向上させるという制御が可能となる。
【００１５】
また、請求項６のように、今回走行時のデータのサンプル期間が所定期間を越えるまでは、記憶手段に記憶されている前回走行時の目標の燃料消費量増加分を今回走行時の目標の燃料消費量増加分として用いるようにしても良い。このようにすれば、今回走行時のデータに基づいて算出する目標の燃料消費量増加分の精度が確保されるまで、記憶手段に記憶されている前回走行時の目標の燃料消費量増加分を今回走行時の目標の燃料消費量増加分として用いるという制御が可能となり、今回走行時のデータのサンプル期間が短くても、実際の発電制御に用いる最終的な目標の燃料消費量増加分の精度を確保することができる。
【００１６】
この場合、請求項７のように、記憶手段に記憶されている前回走行時の目標の燃料消費量増加分を最終的な目標の燃料消費量増加分として用いる“所定期間”を、今回走行時の消費電力、運転条件、前記バッテリの残充電量、バッテリ容量のうちのいずれか１つ又は２つ以上の組み合わせに基づいて設定するようにしても良い。このようにすれば、燃費節減効果と放充電収支とを両立させるように所定期間を増減させて、最終的な目標の燃料消費量増加分の算出精度を向上させるという制御が可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明を実施するための最良の形態を具体化した２つの実施例１，２を説明する。
【実施例１】
【００１８】
本発明の実施例１を図１乃至図１７に基づいて説明する。
図１に示す制御装置１１は、バッテリ１２からキースイッチ１３を介して電源が供給され、エンジン運転中に点火装置１４と噴射装置１５の動作を制御すると共に、発電機１６（オルタネータ）の発電を制御する発電制御手段として機能する。
【００１９】
この制御装置１１は、電流センサ１７（電流検出手段）で検出したバッテリ１２の充放電電流及び／又は電圧センサ１８（電圧検出手段）で検出したバッテリ１２の開放端子電圧に基づいてバッテリ１２の残充電量ＳＯＣ（充電割合）を算出する。例えば、バッテリ１２の充放電電流を電流センサ１７で検出して、その検出値を積算していく。この際、バッテリ１２の充電電流をプラス値とし、バッテリ１２の放電電流をマイナス値とすることで、充放電電流積算値をバッテリ１２の残充電量ＳＯＣに応じて増減させる。これにより、充放電電流積算値をバッテリ残充電量ＳＯＣの検出データとして用いることが可能となる。或は、バッテリ１２の開放端子電圧と残充電量ＳＯＣとの関係を表すマップを参照して、現在のバッテリ１２の開放端子電圧に応じた残充電量ＳＯＣを算出するようにしても良い。勿論、バッテリ１２の充放電電流積算値と開放端子電圧の両方に基づいてバッテリ１２の残充電量ＳＯＣを算出するようにしても良い。
【００２０】
次に、本実施例１の発電制御について説明する。
図２は、単位時間当たりの燃料消費量である燃料消費率とエンジン運転条件との関係を示す図である。図２に示すように、燃料消費率は、エンジン回転速度とエンジントルクによって変化する。燃料消費率は、エンジントルクに応じて曲線的に変化するため、エンジン回転速度が一定の場合は、エンジントルクの増加量に対して、燃料消費率の増加量が大きい条件と小さい条件がある。例えば、発電機１６で一定量の発電を実施した場合、発電によりエンジントルクに発電機１６によるトルクが付加され、エンジンの動作点が変わる。このため、燃料消費率は、発電量により変化する。この時、燃料消費率が少ない条件のみ選択して、発電を実施すれば、燃料消費率を低減することが可能となる。
【００２１】
そこで、本実施例１では、発電制御のパラメータとして、単位発電量当たりの燃料消費率増加分（以下「電費」という）を用いる。この電費は、次のようにして算出される。まず、エンジン運転中（走行中）に、発電機１６の発電を実行した場合の燃料消費率（発電時燃料消費率）と発電機１６の発電を停止した場合の燃料消費率（非発電時燃料消費率）との差分から発電による燃料消費率増加分を求め、この発電による燃料消費率増加分を発電機１６の発電量で割り算して電費（単位発電量当たりの燃料消費量増加分）を求める。
電費(g/skW) ＝（発電時燃料消費率−非発電時燃料消費率）／発電量
【００２２】
また、本実施例１では、エンジン運転中に、所定の演算周期（例えば８ｍｓ周期）で、クラス毎の電費の使用頻度、電費平均値、発電可能量平均値及び平均消費電力を算出し、これら各データに基づいてバッテリ１２の充放電収支が０となる（充電量と放電量がバランスする）ように目標電費を算出すると共に、現在のバッテリ残充電量ＳＯＣと目標残充電量との偏差を小さくするように目標電費をＰＩ制御によりフィードバック補正し、現在の電費を補正後の目標電費（最終目標電費）と比較して発電機１６の発電を実行するか否かを判定する。ここで、「クラス」とは、電費の最小値（０）から最大値までの範囲を所定数に分割した所定範囲を意味する。
【００２３】
更に、本実施例１では、目標電費の算出に用いるデータのサンプル数が予め設定された所定数ＮＦＣlmt になる毎（１つの検出サイクル区間が終了する毎）に、該サンプル数を初期化すると共に、該データの最終値を制御装置１１のＲＡＭに記憶し、前記データの最終値の記憶後に開始された今回の検出サイクル区間のサンプル数に応じて今回の検出サイクル区間のデータを前記ＲＡＭに記憶されている前回の検出サイクル区間のデータの最終値を用いて補正し、該補正後のデータに基づいて目標電費を算出するようにしている。このようにすれば、今回の検出サイクル区間のサンプル数がまだ少ない場合でも、前回の検出サイクル区間のデータの最終値を今回の検出サイクル区間のデータに適度に反映させて、目標電費の連続性と信頼性を維持することができる。
【００２４】
ところで、目標電費の算出に用いる今回走行時の電費の使用頻度等のデータのサンプル期間が短いと、今回走行時のデータのサンプル数が少ないために電費の使用頻度等のデータの精度が悪くなり、その結果、このデータに基づいて算出する目標電費の精度も悪くなるため、燃費節減効果が低下したり、バッテリ１２の放充電収支のバランスが悪くなってしまう可能性がある。
【００２５】
この対策として、本実施例１では、今回走行時のデータのサンプル期間が所定期間を越えるまでは、制御装置１１のバックアップＲＡＭ等の書き換え可能な不揮発性メモリ（記憶手段）に記憶されている前回走行時の最終目標電費と今回走行時に算出した目標電費とに基づいて最終的な目標電費を決定するようにしている。このようにすれば、今回走行時のデータのサンプル期間が短く、今回走行時に算出した目標電費の精度が悪い期間は、不揮発性メモリに記憶されている精度の良い前回走行時の最終目標電費と今回走行時に算出した目標電費とを併用して最終的な目標電費を決定することができるため、今回走行時のデータのサンプル期間が短くても、実際の発電制御に用いる最終的な目標電費の精度を確保することができて、燃費節減効果と放充電収支とを両立させることができる。
【００２６】
以上説明した本実施例１の発電制御は、制御装置１１によって図３乃至図１２の各ルーチンによって実行される。以下、これら各ルーチンの処理内容を説明する。
【００２７】
［電費算出ルーチン］
図３の電費算出ルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行され、特許請求の範囲でいう燃料消費量算出手段としての役割を果たす。本ルーチンが起動されると、まず、ステップ１０１で、現在の運転条件（例えばエンジン回転速度、吸入空気量、要求発電量等）を読み込む。ここで、要求発電量は、予め発電機１６の最大発電可能量、発電機１６の発電効率等から設定される。
【００２８】
この後、ステップ１０２に進み、現在の運転条件から現在のエンジントルクを算出した後、ステップ１０３に進み、要求発電量をトルクに換算し（つまり要求発電量分の発電を行うのに必要なトルクを算出し）、これを要求発電量トルクとして制御装置１１のＲＡＭに記憶する。
【００２９】
そして、次のステップ１０４で、発電機１６が発電中であるか否かを判定し、発電中であれば、ステップ１０５に進み、現在の発電量をトルクに換算して、これを現在の発電量トルクとして制御装置１１のＲＡＭに記憶し、次のステップ１０６で、上記ステップ１０２で算出した現在のエンジントルクから上記ステップ１０５で算出した現在の発電量トルクを差し引いて非発電時トルクを求める。この非発電時トルクは、発電機１６の発電を停止した場合のエンジントルクに相当する。一方、上記ステップ１０４で、発電中でないと判定されれば、ステップ１０７に進み、現在のエンジントルクをそのまま非発電時トルクとする。
【００３０】
以上のようにして非発電時トルクを算出した後、ステップ１０８に進み、上記ステップ１０２で算出した現在のエンジントルクに上記ステップ１０３で算出した要求発電量トルクを加算して発電時トルクを求める。この発電時トルクは、発電機１６の発電を実行した場合のエンジントルクに相当する。
【００３１】
この後、ステップ１０９に進み、現在のエンジン回転速度と非発電時トルクに応じた非発電時燃料消費率(g/s) を図２と同様の燃料消費率算出マップにより算出する。この非発電時燃料消費率は、発電機１６の発電を停止した場合の燃料消費率に相当する。燃料消費率の算出マップは、定常運転条件における燃料消費率を予め計測し、設定しておく。
【００３２】
この後、ステップ１１０に進み、現在のエンジン回転速度と発電時トルクに応じた発電時燃料消費率(g/s) を図２と同様の燃料消費率算出マップにより算出する。この発電時燃料消費率は、発電機１６の発電を実行した場合の燃料消費率に相当する。
【００３３】
この後、ステップ１１１に進み、発電時燃料消費率(g/s) と非発電時燃料消費率(g/s) との差分を現在の発電量(kW)で割り算して、単位発電量当たりの燃料消費率である電費ＣＦＣ(g/skW) を求める。
ＣＦＣ(g/kWs) ＝（発電時燃料消費率−非発電時燃料消費率）／発電量
【００３４】
［電費クラスデータ蓄積ルーチン］
図４及び図５の電費クラスデータ蓄積ルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行され、上記図３の電費算出ルーチンによって所定周期で算出された電費ＣＦＣを統計処理してクラス毎の電費ＣＦＣの使用頻度を算出すると共に、電費平均値、発電可能量平均値を算出して、それらのデータを制御装置１１のＲＡＭに蓄積する。
【００３５】
本ルーチンが起動されると、まずステップ２０１で、エンジン回転速度と発電機１６の発電特性との関係を表すマップ等から現在のエンジン回転速度に応じた発電可能量ＧＰを算出する。この後、ステップ２０２に進み、現在までの合計サンプル数ＮＦＣtotal のカウント値をカウントアップして、ステップ２０３に進み、現在の合計サンプル数ＮＦＣtotal が１つの検出サイクル区間全体の合計サンプル数に相当する所定値ＮＦＣlmt を越えたか否かを判定し、現在の合計サンプル数ＮＦＣtotal が所定数ＮＦＣlmt を越えていなければ、検出サイクル区間の途中であると判断して、ステップ２０６に進み、現在の合計サンプル数ＮＦＣtotal と所定数ＮＦＣlmt を用いて現在及び過去のデータに対する補正係数Ｋnew ，Ｋold を算出する。
Ｋnew ＝ＮＦＣtotal ／ＮＦＣlmt       ……（１）
Ｋold ＝１−Ｋnew                     ……（２）
【００３６】
これに対して、上記ステップ２０３で、現在の合計サンプル数ＮＦＣtotal が所定値ＮＦＣlmt を越えていると判定されれば、１つの検出サイクル区間の終了時期と判断して、ステップ２０４に進み、合計サンプル数ＮＦＣtotal のカウンタをリセットして合計サンプル数ＮＦＣtotal を初期値“１”に戻し、次のステップ２０５で、前回の本ルーチンの実行により演算した各クラスＡ〜Ｚの電費平均値ＣＦＣave(A)〜ＣＦＣave(Z)、発電可能量平均値ＧＰave(A)〜ＧＰave(Z)、使用頻度Ｒ(A) 〜Ｒ(Z) と後述する図６の平均消費電力算出ルーチンで算出した平均消費電力ＣＰave のデータをそれぞれ前回の検出サイクル区間の各データの最終値ＣＦＣavebf(A)〜ＣＦＣavebf(Z)、ＧＰavebf(A)〜ＧＰavebf(Z)、Ｒbf(A) 〜Ｒbf(Z) 、ＣＰavebf として制御装置１１のＲＡＭに記憶する。
【００３７】
《各クラスＡ〜Ｚの電費平均値ＣＦＣave の最終値の記憶》
ＣＦＣavebf(A)＝ＣＦＣave(A)
ＣＦＣavebf(B)＝ＣＦＣave(B)
・・・・・・・・・・・・・・
ＣＦＣavebf(Z)＝ＣＦＣave(Z)
《各クラスＡ〜Ｚの発電可能量平均値ＧＰave の最終値の記憶》
ＧＰavebf(A)＝ＧＰave(A)
ＧＰavebf(B)＝ＧＰave(B)
・・・・・・・・・・・・
ＧＰavebf(Z)＝ＧＰave(Z)
《各クラスＡ〜Ｚの使用頻度Ｒの最終値の記憶》
Ｒbf(A) ＝Ｒ(A)
Ｒbf(B) ＝Ｒ(B)
・・・・・・・
Ｒbf(Z) ＝Ｒ(Z)
《平均消費電力ＣＰave の最終値の記憶》
ＣＰavebf ＝ＣＰave
【００３８】
この後、ステップ２０６に進み、現在の合計サンプル数ＮＦＣtotal と所定数ＮＦＣlmt を用いて前記（１）、（２）式により現在及び過去のデータに対する補正係数Ｋnew ，Ｋold を算出する。このステップ２０６の処理は、前述したようにステップ２０３で「Ｎｏ」と判定された場合も行われるため、エンジン運転中に所定の演算周期（例えば８ｍｓ周期）で、現在及び過去のデータに対する補正係数Ｋnew ，Ｋold が算出される。
【００３９】
この後、図５のステップ２０７ａに進み、今回の電費ＣＦＣが最小のクラスであるクラスＡに含まれるか否か（電費ＣＦＣ＜Ａか否か）を判定し、今回の電費ＣＦＣがクラスＡに含まれれば、クラスＡのデータを次のようにして更新する。
【００４０】
まず、ステップ２０８ａで、クラスＡのサンプル数ＮＦＣ(A) のカウント値をカウントアップした後、ステップ２０９ａに進み、クラスＡの前回の電費平均値 oldＣＦＣave(A)とサンプル数ＮＦＣ(A) と今回の電費ＣＦＣから、現在の検出サイクル区間における今回のクラスＡの電費平均値ＣＦＣave(A)を次式により算出する。
ＣＦＣave(A)＝［ oldＣＦＣave(A)×｛ＮＦＣ(A) −１｝＋ＣＦＣ］／ＮＦＣ(A)
【００４１】
この後、ステップ２１０ａに進み、クラスＡの前回の発電可能量 oldＧＰave(A)とサンプル数ＮＦＣ(A) と今回の発電可能量ＧＰから、現在の検出サイクル区間における今回のクラスＡの発電可能量平均値ＧＰave(A)を次式により算出する。
ＧＰave(A)＝［ oldＧＰave(A)×｛ＮＦＣ(A) −１｝＋ＧＰ］／ＮＦＣ(A)
【００４２】
この後、ステップ２１１ａに進み、クラスＡのサンプル数ＮＦＣ(A) を全クラスＡ〜Ｚの合計サンプル数ＮＦＣtotal で割り算して、現在の検出サイクル区間における今回のクラスＡの使用頻度Ｒ(A) を求める。
Ｒ(A) ＝ＮＦＣ(A) ／ＮＦＣtotal
【００４３】
この後、ステップ２１２ａに進み、現在の検出サイクル区間における今回のクラスＡの電費平均値ＣＦＣave(A)と、制御装置１１のＲＡＭに記憶された前回の検出サイクル区間のクラスＡの電費平均値の最終値ＣＦＣavebf(A)と、現在及び過去のデータに対する補正係数Ｋnew ，Ｋold を用いて、現在の検出サイクル区間におけるクラスＡの最終電費平均値ＣＦＣavef(A) を次式により算出する。
ＣＦＣavef(A) ＝ＣＦＣavebf(A)×Ｋold ＋ＣＦＣave(A)×Ｋnew
【００４４】
上式は、現在及び過去のデータに対する補正係数Ｋnew ，Ｋold を重み係数として用いて、現在の検出サイクル区間における今回のクラスＡの電費平均値ＣＦＣave(A)と、前回の検出サイクル区間のクラスＡの電費平均値の最終値ＣＦＣavebf(A)との重み付き平均値を算出して、これを現在の検出サイクル区間におけるクラスＡの最終電費平均値ＣＦＣavef(A) とすることを意味し、その重み係数（Ｋnew ，Ｋold ）は、現在の検出サイクル区間の合計サンプル数ＮＦＣtotal に応じて設定される（ステップ２０６）。
【００４５】
この後、ステップ２１３ａに進み、現在の検出サイクル区間における今回のクラスＡの発電可能量平均値ＧＰave(A)と、ＲＡＭに記憶された前回の検出サイクル区間のクラスＡの発電可能量平均値の最終値ＧＰavebf(A)と、現在及び過去のデータに対する補正係数Ｋnew ，Ｋold を用いて、現在の検出サイクル区間におけるクラスＡの最終発電可能量平均値ＧＰavef(A) を次式により算出する。
ＧＰavef(A) ＝ＧＰavebf(A)×Ｋold ＋ＧＰave(A)×Ｋnew
【００４６】
この後、ステップ２１４ａに進み、現在の検出サイクル区間における今回のクラスＡの使用頻度Ｒ(A) と、ＲＡＭに記憶された前回の検出サイクル区間のクラスＡの使用頻度の最終値Ｒbf(A) と、現在及び過去のデータに対する補正係数Ｋnew ，Ｋold を用いて、現在の検出サイクル区間におけるクラスＡの最終使用頻度Ｒf(A)を次式により算出する。
Ｒf(A)＝Ｒbf(A) ×Ｋold ＋Ｒ(A) ×Ｋnew
【００４７】
一方、前記ステップ２０７a で、今回の電費ＣＦＣがクラスＡに含まれていないと判定されれば、ステップ２０７ｂに進み、今回の電費ＣＦＣがクラスＡの次に大きいクラスＢに含まれるか否か（Ａ≦電費ＣＦＣ＜Ｂか否か）を判定し、今回の電費ＣＦＣがクラスＢに含まれれば、ステップ２０８ｂ〜２１４ｂの処理を実行して、上記と同様の方法で、現在の検出サイクル区間におけるクラスＢのサンプル数ＮＦＣ(B) 、電費平均値ＣＦＣave(B)、発電可能量平均値ＧＰave(B)、使用頻度Ｒ(B) 、最終電費平均値ＣＦＣavef(B) 、最終発電可能量平均値ＧＰavef(B) 、最終使用頻度Ｒf(B)を算出して、それらの記憶データを更新する。
【００４８】
これ以降、エンジン運転中に、同様の方法で、クラスＣ、クラスＤ、……クラスＹ、クラスＺについても、現在の検出サイクル区間における電費平均値ＣＦＣave(C)〜ＣＦＣave(Z)、発電可能量平均値ＧＰave(C)〜ＧＰave(Z)、使用頻度Ｒ(C) 〜Ｒ(Z) 、最終電費平均値ＣＦＣavef(C) 〜ＣＦＣavef(Z) 、最終発電可能量平均値ＧＰavef(C) 〜ＧＰavef(Z) 、最終使用頻度Ｒf(C)〜Ｒf(Z)を算出して、これらのデータを更新する。
【００４９】
［平均消費電力算出ルーチン］
図６の平均消費電力算出ルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行される。本ルーチンが起動されると、まずステップ３０１で、車両で消費される演算周期当たりの消費電力ＣＰを算出する。この後、ステップ３０２に進み、現在の検出サイクル区間における前回の平均消費電力 oldＣＰave と合計サンプル数ＮＦＣtotal と今回の消費電力ＣＰから、平均消費電力ＣＰave を次式により算出する。
ＣＰave ＝｛ oldＣＰave ×（ＮＦＣtotal −１）＋ＣＰ｝／ＮＦＣtotal
【００５０】
この後、ステップ３０３に進み、上記ステップ３０２で算出した今回の平均消費電力ＣＰave と、制御装置１１のＲＡＭに記憶された前回の検出サイクル区間の平均消費電力の最終値ＣＰavebf と、現在及び過去のデータに対する補正係数Ｋnew ，Ｋold を用いて、現在の検出サイクル区間における最終平均消費電力ＣＰavefを次式により算出する。
ＣＰavef＝ＣＰavebf ×Ｋold ＋ＣＰave ×Ｋnew
【００５１】
上式は、現在及び過去のデータに対する補正係数Ｋnew ，Ｋold を重み係数として用いて、今回の平均消費電力ＣＰave と、前回の検出サイクル区間の平均消費電力の最終値ＣＰavebf との重み付き平均値を算出して、これを現在の検出サイクル区間における最終平均消費電力ＣＰavefとすることを意味し、その重み係数（Ｋnew ，Ｋold ）は、現在の検出サイクル区間の合計サンプル数ＮＦＣtotal に応じて設定される（図４のステップ２０６）。
【００５２】
［目標電費算出ルーチン］
図７の目標電費算出ルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行され、特許請求の範囲でいう目標値算出手段としての役割を果たす。本ルーチンが起動されると、まずステップ４０１で、各クラスＡ〜Ｚの最終発電可能量平均値ＧＰavef(A) 〜ＧＰavef(Z) にそれぞれ最終使用頻度Ｒf(A)〜Ｒf(Z)を乗算して各クラスＡ〜Ｚの発電可能量ＧＰ(A) 〜ＧＰ(Z) を求める。
【００５３】
ＧＰ(A) ＝ＧＰavef(A) ×Ｒf(A)
ＧＰ(B) ＝ＧＰavef(B) ×Ｒf(B)
・・・・・・・・・・・・・
ＧＰ(Z) ＝ＧＰavef(Z) ×Ｒf(Z)
【００５４】
この後、ステップ４０２に進み、クラスＡでの充放電収支ＢＡＬ(A) を、クラスＡの発電可能量ＧＰ(A) から最終平均消費電力ＣＰavefを差し引いて求める。
ＢＡＬ(A) ＝ＧＰ(A) −ＣＰavef
【００５５】
この後、ステップ４０３に進み、クラスＡからクラスＢまでの充放電収支ＢＡＬ(B) をクラスＡでの充放電収支ＢＡＬ(A) にクラスＢの発電可能量ＧＰ(B) を足し合わせて求める。
ＢＡＬ(B) ＝ＢＡＬ(A) ＋ＧＰ(B)
【００５６】
以下、同様の処理を各クラスＣ〜Ｚ毎に繰り返すことで、クラスＡから各クラスＣ〜Ｚまでの充放電収支ＢＡＬ(C) 〜ＢＡＬ(Z) を算出する（ステップ４０４）。
ＢＡＬ(C) ＝ＢＡＬ(B) ＋ＧＰ(C)
・・・・・・・・・・・・・・・
ＢＡＬ(Z) ＝ＢＡＬ(Y) ＋ＧＰ(Z)
【００５７】
この後、ステップ４０５ａに進み、クラスＡでの充放電収支ＢＡＬ(A) が０より大きいか否か（プラス値であるか否か）を判定する。その結果、クラスＡでの充放電収支ＢＡＬ(A) が０より大きい（プラス値）と判定されれば、クラスＡのみの発電で充放電収支が取れる（クラスＡの範囲内で目標電費ＴＣＦＣを設定すれば良い）と判断して、ステップ４０６ａに進み、クラスＡの上限値［Ａ］、充放電収支ＢＡＬ(A) 、発電可能量ＧＰ(A) を用いて、目標電費ＴＣＦＣを次式により算出する。
ＴＣＦＣ＝Ａ−（Ａ−０）×ＢＡＬ(A) ／ＧＰ(A)
これにより、クラスＡの範囲内で充放電収支が０となる電費を算出して、この電費を目標電費ＴＣＦＣとする。
【００５８】
一方、上記ステップ４０５ａで、クラスＡでの充放電収支ＢＡＬ(A) が０以下（マイナス値）と判定されれば、ステップ４０５ｂに進み、クラスＡからクラスＢまでの充放電収支ＢＡＬ(B) が０より大きいか否か（プラス値であるか否か）を判定する。その結果、クラスＡからクラスＢまでの充放電収支ＢＡＬ(B) が０より大きい（プラス値）と判定されれば、クラスＡからクラスＢまでの発電で充放電収支が取れる（クラスＢの範囲内で目標電費ＴＣＦＣを設定すれば良い）と判断して、ステップ４０６ｂに進み、クラスＢの上限値［Ｂ］、充放電収支ＢＡＬ(B) 、発電可能量ＧＰ(B) を用いて、目標電費ＴＣＦＣを次式により算出する。
ＴＣＦＣ＝Ｂ−（Ｂ−Ａ）×ＢＡＬ(B) ／ＧＰ(B)
これにより、クラスＢの範囲内で充放電収支が０となる電費を算出して、この電費を目標電費ＴＣＦＣとする。
【００５９】
以下、同様の処理を各クラスＣ〜Ｙ毎に繰り返すことで、充放電収支が０以上となる最小のクラスを探索して、充放電収支が０以上となる最小のクラスの範囲内で充放電収支が０となる電費を算出して、この電費を目標電費ＴＣＦＣとする（ステップ４０５ｙ、４０６ｙ）。
ＴＣＦＣ＝Ｃ−（Ｃ−Ｂ）×ＢＡＬ(C) ／ＧＰ(C)
・・・・・・・・・・・・・・・・・・・・・・
ＴＣＦＣ＝Ｙ−（Ｙ−Ｘ）×ＢＡＬ(Y) ／ＧＰ(Y)
【００６０】
クラスＡからクラスＹまでの充放電収支ＢＡＬ(Y) が０以下（マイナス値）となる場合は、クラスＡからクラスＹまでの範囲を使用して発電しても、充放電収支が取れないことを意味するため、ステップ４０６ｚに進み、目標電費ＴＣＦＣを許容される最大の電費であるクラスＺの上限値［Ｚ］に設定する。
ＴＣＦＣ＝Ｚ
【００６１】
［目標電費補正量算出ルーチン］
図８の目標電費補正量算出ルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行され、次のようにして目標電費補正量ＴＣＦＣcmp を算出する。本ルーチンが起動されると、まずステップ５０１で、現在のＳＯＣ（バッテリ残充電量）と目標ＳＯＣとの偏差を小さくするように目標電費ＴＣＦＣをフィードバック補正するためのＩ項（積分項）補正量Ｉcmp(i)を次式により算出する。
Ｉcmp(i)＝Ｉcmp(i-1)＋（ＳＯＣ−目標ＳＯＣ）×ＫＩ
ＳＯＣ＝現充電量／満充電量×１００（％）
ここで、Ｉcmp(i-1)は前回のＩ項補正量、ＫＩはＩ項ゲインである。
【００６２】
この後、ステップ５０２に進み、目標電費ＴＣＦＣをＰＩ制御（比例積分制御）によりフィードバック補正するための目標電費補正量ＴＣＦＣcmp を、Ｐ項（比例項）補正量Ｐcmp(i)とＩ項補正量Ｉcmp(i)とを加算して求める。
ＴＣＦＣcmp ＝Ｐcmp(i)＋Ｉcmp(i)
＝（ＳＯＣ−目標ＳＯＣ）×ＫＰ＋Ｉcmp(i)
ここで、ＫＰはＰ項ゲインである。
【００６３】
［最終目標電費算出ルーチン］
図９の最終目標電費算出ルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行され、特許請求の範囲でいう目標値算出手段としての役割を果たす。本ルーチンが起動されると、まずステップ６０１で、今回走行時に算出した目標電費ＴＣＦＣのみから最終目標電費ＴＣＦＣｆを算出する処理に変更済みであるか否かを判定し、変更済みと判定されれば、ステップ６１２に進み、前記図７の目標電費算出ルーチンによって算出した今回走行時の目標電費ＴＣＦＣに対して、前記図８の目標電費補正量算出ルーチンによって算出した目標電費補正量ＴＣＦＣcmp を加算することで、目標電費ＴＣＦＣを目標電費補正量ＴＣＦＣcmp で補正して最終目標電費ＴＣＦＣｆを求める。
ＴＣＦＣｆ＝ＴＣＦＣ＋ＴＣＦＣcmp
【００６４】
これに対して、上記ステップ６０１で、今回走行時に算出した目標電費ＴＣＦＣのみから最終目標電費ＴＣＦＣｆを算出する処理にまだ変更されていないと判定されれば、ステップ６０２以降の処理によって、制御装置１１の不揮発性メモリ（記憶手段）に記憶されている前回走行時の最終目標電費ＴＣＦＣbuと今回走行時に算出した目標電費ＴＣＦＣとを用いて、これらの重み付き平均によって次のようにして最終目標電費ＴＣＦＣｆを算出する。
【００６５】
まず、ステップ６０２で、最終目標電費ＴＣＦＣｆを重み付き平均によって算出する際の今回走行時の目標電費ＴＣＦＣの使用割合を決める重み係数αs を今回走行時のサンプル期間に応じて図１３の重み係数αs 算出マップにより算出する。この図１３の重み係数αs 算出マップは、今回の走行開始時（サンプル期間＝０）の場合に、重み係数αs （今回走行時の目標電費ＴＣＦＣの使用割合）が最小値“０”となり、サンプル期間が長くなるに従って重み係数αs が徐々に大きくなって、サンプル期間が所定期間に達した時点で重み係数αs が最大値“１”となるように設定されている。
【００６６】
この後、ステップ６０３に進み、今回走行時に算出した目標電費ＴＣＦＣと不揮発性メモリに記憶されている前回走行時の最終目標電費ＴＣＦＣbuとの偏差Ｔgdevを算出する。
Ｔgdev＝ＴＣＦＣ−ＴＣＦＣbu
【００６７】
そして、次のステップ６０４で、上記ステップ６０３で算出した目標電費偏差Ｔgdevに応じた重み係数αt を図１４の重み係数αt 算出マップにより算出する。この図１４の重み係数αt 算出マップは、目標電費偏差Ｔgdevが０のときに重み係数αt が最小値“０”となり、目標電費偏差Ｔgdevの絶対値が大きくなるに従って重み係数αt が徐々に大きくなり、目標電費偏差Ｔgdevの絶対値が所定値（例えば０．０３）以上になると、重み係数αt が最大値“１”となるように設定されている。
【００６８】
この後、ステップ６０５に進み、前記図６の平均消費電力算出ルーチンで算出した今回走行時の最終的な平均消費電力ＣＰavefに応じた重み係数αe を図１５の重み係数αe 算出マップにより算出する。この図１５の重み係数αe 算出マップは、平均消費電力ＣＰavefが所定の下限値（例えば２００Ｗ）以下の場合は、重み係数αe が最小値“０”となり、平均消費電力ＣＰavefが大きくなるに従って重み係数αe が徐々に大きくなり、平均消費電力ＣＰavefが所定の上限値（例えば４００Ｗ）以上になると、重み係数αe が最大値“１”となるように設定されている。
【００６９】
この後、ステップ６０６に進み、運転条件（例えばエンジン回転速度と負荷）に応じた重み係数αl を図１６の重み係数αl 算出マップにより算出する。この図１６の重み係数αl 算出マップは、低回転・低負荷側で重み係数αl が小さくなり、高回転・高負荷側で重み係数αl が大きくなるように設定されている。
【００７０】
そして、次のステップ６０７で、バッテリ１２の残充電量ＳＯＣに応じた重み係数αb を図１７の重み係数αb 算出マップにより算出する。この図１７の重み係数αb 算出マップは、バッテリ１２の残充電量ＳＯＣが目標ＳＯＣ（例えば９０％）に一致するときに重み係数αb が最小値“０”となり、残充電量ＳＯＣが目標ＳＯＣから離れるに従って重み係数αb が徐々に大きくなるように設定されている。
【００７１】
この後、ステップ６０８に進み、上記ステップ６０２〜６０７の処理によって算出した５つの重み係数αs ，αt ，αe ，αl ，αb の中から最大の重み係数を最終重み係数αとして選択する。或は、５つの重み係数αs ，αt ，αe ，αl ，αb の中から例えば２番目に大きい重み係数を最終重み係数αとして選択したり、５つの重み係数αs ，αt ，αe ，αl ，αb の平均値を最終重み係数αとして算出するようにしても良い。
【００７２】
この後、ステップ６０９に進み、今回走行時のサンプル期間（今回の走行開始から現在までの期間）が予め決められた所定期間を越えたか否かを、今回走行時の合計サンプル数ＮＦＣtotal が所定数を越えたか否かで判定する。ここで、所定期間（所定数）は、今回走行時の目標電費ＴＣＦＣの算出に用いる電費の使用頻度等のデータの精度を確保するのに必要な期間に設定されている。
【００７３】
このステップ６０９で、今回走行時のサンプル期間が所定期間を越えていない（今回走行時の合計サンプル数ＮＦＣtotal が所定数未満）と判定されれば、今回走行時の目標電費ＴＣＦＣの算出精度を確保できないと判断して、ステップ６１０に進み、上記ステップ６０８で決定した最終重み係数αを用いて、今回走行時に算出した目標電費ＴＣＦＣと、制御装置１１の不揮発性メモリ（記憶手段）に記憶されている前回走行時の最終目標電費ＴＣＦＣbuとの重み付き平均値を算出し、これを目標電費補正量ＴＣＦＣcmp で補正して最終目標電費ＴＣＦＣｆを求める。
ＴＣＦＣｆ＝α×ＴＣＦＣ＋（１−α）×ＴＣＦＣbu＋ＴＣＦＣcmp
【００７４】
これに対して、ステップ６０９で、今回走行時のサンプル期間が所定期間を越えている（今回走行時の合計サンプル数ＮＦＣtotal が所定数を越えている）と判定されれば、今回走行時の目標電費ＴＣＦＣの算出精度が確保されていると判断して、ステップ６１２に進み、今回走行時に算出した目標電費ＴＣＦＣを目標電費補正量ＴＣＦＣcmp で補正して最終目標電費ＴＣＦＣｆを求める。
ＴＣＦＣｆ＝ＴＣＦＣ＋ＴＣＦＣcmp
【００７５】
従って、今回走行時のサンプル期間が所定期間を越えている場合は、制御装置１１の不揮発性メモリに記憶されている前回走行時の最終目標電費ＴＣＦＣbuを用いることなく、今回走行時に算出した目標電費ＴＣＦＣのみを用いて最終目標電費ＴＣＦＣｆを算出する。
【００７６】
［イニシャル処理ルーチン］
図１０のイニシャル処理ルーチンは、キースイッチ１３のオン操作時（制御装置１１の電源投入時）に起動される。本ルーチンが起動されると、制御装置１１の不揮発性メモリに記憶されている前回走行時の最終目標電費のバックアップ値ＴＣＦＣbub を読み込んでＲＡＭに前回走行時の最終目標電費ＴＣＦＣbuとして記憶させる。
ＴＣＦＣbu＝ＴＣＦＣbub
前記図９の最終目標電費算出ルーチンのステップ６１０では、この前回走行時の最終目標電費ＴＣＦＣbuを用いて最終目標電費ＴＣＦＣｆを算出する。
【００７７】
［最終目標電費バックアップルーチン］
図１１の最終目標電費バックアップルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行され、前記図９の最終目標電費算出ルーチンによって最終目標電費ＴＣＦＣｆが算出される毎に、この最終目標電費ＴＣＦＣｆが制御装置１１の不揮発性メモリに前回走行時の最終目標電費のバックアップ値ＴＣＦＣbub として更新記憶される。
ＴＣＦＣbub ＝ＴＣＦＣｆ
【００７８】
従って、エンジン停止中には、前回の走行終了直前（キースイッチ１３のオフ直前）に算出された最終目標電費のバックアップ値ＴＣＦＣbub が不揮発性メモリに記憶保持され、次の走行開始時（キースイッチ１３のオン操作時）に、上記図１０のイニシャル処理ルーチンによって、このバックアップ値ＴＣＦＣbub が読み込まれて前回走行時の最終目標電費ＴＣＦＣbuとして用いられる。
【００７９】
［発電実行判定ルーチン］
図１２の発電実行判定ルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行され、特許請求の範囲でいう発電制御手段としての役割を果たす。本ルーチンが起動されると、まずステップ７０１で、現在の電費ＣＦＣが前記図９の最終目標電費算出ルーチンによって算出した最終目標電費ＴＣＦＣｆよりも大きいか否かを判定し、現在の電費ＣＦＣが最終目標電費ＴＣＦＣｆよりも大きければ、ステップ７０２に進み、発電指令値を０にセットして、発電機１６の発電を停止させる。これにより、バッテリ１２の過充電を防止する。
【００８０】
一方、現在の電費ＣＦＣが最終目標電費ＴＣＦＣｆ以下であれば、ステップ７０３に進み、発電指令値を要求発電量にセットする。これにより、走行中（エンジン運転中）に、発電機１６の界磁コイルに発電指令値に応じた制御電流を流して、要求発電量に応じた電力を発電させることで、電費ＣＦＣを最終目標電費ＴＣＦＣｆに制御して、バッテリ１２の残充電量ＳＯＣを目標ＳＯＣに収束させる。ここで、要求発電量は、例えば現在のエンジン回転速度に応じてマップ等により算出される。
【００８１】
以上説明した本実施例１では、電費の使用頻度等に基づいて目標電費を設定し、電費を目標電費と比較して発電機１６の発電を制御するようにしたので、発電を実行する運転条件を予め設定されたマップで決定する従来の発電制御方式と比較して、マップの精度や車両の使用環境（走行道路状況の相違、運転者による車速・加減速の相違等）や車両特性のばらつきの影響が少なくなり、必要な発電量を確保しつつ、発電による燃料消費量増加分を確実に低減することができ、燃費低減と充放電収支の両立が可能となる。
【００８２】
しかも、本実施例１では、今回走行時のデータのサンプル期間（今回の走行開始から現までの期間）が所定期間を越えるまでは、今回走行時に算出した目標電費と制御装置１１の不揮発性メモリに記憶されている前回走行時の最終目標電費とに基づいて最終的な目標電費を決定するようにしているため、今回走行時のデータのサンプル期間が短く、今回走行時に算出した目標電費の精度が悪い期間は、不揮発性メモリに記憶されている精度の良い前回走行時の最終目標電費と今回走行時に算出した目標電費とを併用して最終的な目標電費を決定することができる。このため、今回走行時のデータのサンプル期間が短くても、実際の発電制御に用いる最終的な目標電費の精度を確保することができて、燃費節減効果と放充電収支とを両立させることができる。
【００８３】
更に、本実施例１では、今回走行時のデータのサンプル期間が所定期間を越えるまで、今回走行時の目標電費と前回走行時の最終目標電費との重み付き平均によって最終目標電費を算出するようにしたので、重み付き平均という簡単な演算方法で最終目標電費を精度良く算出することができる利点がある。
【００８４】
その上、本実施例１では、重み付き平均の処理に用いる重み係数を、今回走行時のデータのサンプル期間、今回走行時の目標電費と前回走行時の最終目標電費との偏差、平均消費電力、運転条件、バッテリ１２の残充電量ＳＯＣに応じて変化させるようにしたので、燃費節減効果と放充電収支とを両立させるように今回走行時の目標電費の使用割合（重み係数）を増減させて、最終目標電費の算出精度を向上させるという制御が可能となる。
【００８５】
尚、今回走行時のデータのサンプル期間、今回走行時の目標電費と前回走行時の最終目標電費との偏差、平均消費電力、運転条件、バッテリ１２の残充電量ＳＯＣのうちのいずれか１つ又は２つ以上の組み合わせに基づいて重み係数を設定したり、これ以外の条件（例えばバッテリ容量等）に基づいて重み係数を設定しても良い。勿論、演算処理の簡略化のために、重み係数を予め適合した固定値としても良いことは言うまでもない。
【００８６】
また、最終目標電費の算出方法は、重み付き平均に限定されず、例えば、前回走行時の最終目標電費と今回走行時の目標電費とをパラメータとして最終目標電費を算出するための二次元マップ又は数式を予め作成しておき、この二次元マップ又は数式により最終目標電費を算出するようにしても良い。
【００８７】
また、本実施例１では、電費の使用頻度と発電可能量と平均消費電力とに基づいて目標電費を設定するようにしたが、例えば、電費の使用頻度のみに基づいて目標電費を設定したり、電費の使用頻度と発電可能量とに基づいて目標電費を設定するようにしても良い。
【実施例２】
【００８８】
本発明は、今回走行時のサンプル期間が所定期間を越えるまで、制御装置１１の不揮発性メモリに記憶されている前回走行時の最終目標電費のみを用いて今回走行時の最終目標電費を算出するようにしても良い。以下、これを具体化した実施例２を図１８乃至図２１を用いて説明する。
本実施例２では、図１８の最終目標電費算出ルーチンによって最終目標電費ＴＣＦＣｆを算出する。その他の処理は、前記実施例１と同じである。
【００８９】
図１８の最終目標電費算出ルーチンは、エンジン運転中に所定周期（例えば８ｍｓ周期）で実行され、特許請求の範囲でいう目標値算出手段としての役割を果たす。本ルーチンが起動されると、まずステップ８０１で、今回走行時に算出した目標電費ＴＣＦＣのみから最終目標電費ＴＣＦＣｆを算出する処理に変更済みであるか否かを判定し、変更済みと判定されれば、ステップ８０８に進み、前記図７の目標電費算出ルーチンによって算出した今回走行時の目標電費ＴＣＦＣに対して、前記図８の目標電費補正量算出ルーチンによって算出した目標電費補正量ＴＣＦＣcmp を加算することで、目標電費ＴＣＦＣを目標電費補正量ＴＣＦＣcmp で補正して最終目標電費ＴＣＦＣｆを求める。
ＴＣＦＣｆ＝ＴＣＦＣ＋ＴＣＦＣcmp
【００９０】
これに対して、上記ステップ８０１で、今回走行時に算出した目標電費ＴＣＦＣのみから最終目標電費ＴＣＦＣｆを算出する処理にまだ変更されていないと判定されれば、ステップ８０２以降の処理によって、制御装置１１の不揮発性メモリ（記憶手段）に記憶されている前回走行時の最終目標電費ＴＣＦＣbuを用いて次のようにして今回走行時の最終目標電費ＴＣＦＣｆを算出する。
【００９１】
まず、ステップ８０２で、前回走行時の最終目標電費ＴＣＦＣbuを用いて今回走行時の最終目標電費ＴＣＦＣｆを算出するサンプル期間Ｎe を、前記図６の平均消費電力算出ルーチンで算出した今回走行時の最終的な平均消費電力ＣＰavefに応じて図１９のサンプル期間Ｎe 算出マップにより算出する。この図１９のサンプル期間Ｎe 算出マップは、平均消費電力ＣＰavefが増加するに従ってサンプル期間Ｎe が短くなるように設定されている。尚、図１９のマップでは、サンプル期間Ｎe をサンプル数で設定したが、時間で設定しても良いことは言うまでもない（以下、同様）。
【００９２】
この後、ステップ８０３に進み、運転条件（例えばエンジン回転速度と負荷）に応じたサンプル期間Ｎl を図２０のサンプル期間Ｎl 算出マップにより算出する。この図２０のサンプル期間Ｎl 算出マップは、低回転・低負荷側でサンプル数Ｎl が大きくなり、高回転・高負荷側でサンプル数Ｎl が小さくなるように設定されている。
【００９３】
そして、次のステップ８０４で、バッテリ１２の残充電量ＳＯＣに応じたサンプル期間Ｎb を図２１のサンプル期間Ｎb 算出マップにより算出する。この図２１のサンプル期間Ｎb 算出マップは、バッテリ１２の残充電量ＳＯＣが目標ＳＯＣ（例えば９０％）に近付くほどサンプル期間Ｎb が長くなり、残充電量ＳＯＣが目標ＳＯＣから離れるに従ってサンプル期間Ｎb が徐々に短くなるように設定されている。
【００９４】
この後、ステップ８０５に進み、上記ステップ８０２〜８０４の処理によって算出した３つのサンプル期間Ｎe ，Ｎl ，Ｎb の中から最小のサンプル期間を最終サンプル期間Ｎf として選択する。或は、３つのサンプル期間Ｎe ，Ｎl ，Ｎb の平均値又は中間値を最終サンプル期間Ｎf とするようにしても良い。
【００９５】
この後、ステップ８０６に進み、今回走行時のサンプル期間（今回の走行開始から現在までの合計サンプル数ＮＦＣtotal ）が上記ステップ８０５で決定した最終サンプル期間Ｎf を越えたか否かを判定し、今回走行時のサンプル期間ＮＦＣtotal が最終サンプル期間Ｎf を越えていないと判定されれば、今回走行時の目標電費ＴＣＦＣの算出精度を確保できないと判断して、ステップ８０７に進み、制御装置１１の不揮発性メモリに記憶されている前回走行時の最終目標電費ＴＣＦＣbuをそのまま今回走行時の目標電費として用いて、これを目標電費補正量ＴＣＦＣcmp で補正して最終目標電費ＴＣＦＣｆを求める。
ＴＣＦＣｆ＝ＴＣＦＣbu＋ＴＣＦＣcmp
【００９６】
これに対して、上記ステップ８０６で、今回走行時のサンプル期間ＮＦＣtotal が最終サンプル期間Ｎf を越えていると判定されれば、今回走行時の目標電費ＴＣＦＣの算出精度が確保されていると判断して、ステップ８０８に進み、今回走行時に算出した目標電費ＴＣＦＣを目標電費補正量ＴＣＦＣcmp で補正して最終目標電費ＴＣＦＣｆを求める。
ＴＣＦＣｆ＝ＴＣＦＣ＋ＴＣＦＣcmp
【００９７】
従って、今回走行時のサンプル期間ＮＦＣtotal が最終サンプル期間Ｎf を越えている場合は、制御装置１１の不揮発性メモリに記憶されている前回走行時の最終目標電費ＴＣＦＣbuを用いることなく、今回走行時に算出した目標電費ＴＣＦＣのみを用いて最終目標電費ＴＣＦＣｆを算出する。
【００９８】
以上説明した本実施例２では、今回走行時のサンプル期間（今回の走行開始から現在までの合計サンプル数ＮＦＣtotal ）が最終サンプル期間Ｎf を越えるまで、制御装置１１の不揮発性メモリに記憶されている前回走行時の最終目標電費ＴＣＦＣbuをそのまま今回走行時の目標電費として用いて最終目標電費ＴＣＦＣｆを算出するようにしたので、今回走行時のデータに基づいて算出する目標電費の精度が確保されるまで、不揮発性メモリに記憶されている前回走行時の最終目標電費を今回走行時の目標電費として用いるという制御が可能となり、今回走行時のデータのサンプル期間が短くても、実際の発電制御に用いる最終目標電費の精度を確保することができる。
【００９９】
しかも、本実施例２では、最終サンプル期間Ｎf を今回走行時の平均消費電力、運転条件、バッテリ１２の残充電量ＳＯＣに基づいて設定するようにしたので、燃費節減効果と放充電収支とを両立させるように最終サンプル期間Ｎf を増減させて、最終目標電費の算出精度を向上させるという制御が可能となる。
【０１００】
尚、今回走行時の平均消費電力、運転条件、バッテリ１２の残充電量ＳＯＣのうちのいずれか１つ又は２つの組み合わせに基づいて最終サンプル期間Ｎf を設定したり、これ以外の条件（例えば今回走行時の目標電費と前回走行時の最終目標電費との偏差、バッテリ容量等）に基づいて最終サンプル期間Ｎf を設定するようにしても良い。勿論、演算処理の簡略化のために、最終サンプル期間Ｎf を予め適合した固定値としても良いことは言うまでもない。
【図面の簡単な説明】
【０１０１】
【図１】本発明の実施例１のシステム構成を説明するブロック図である。
【図２】燃料消費率とエンジン運転条件との関係を示す図である。
【図３】実施例１の電費算出ルーチンの処理の流れを示すフローチャートである。
【図４】実施例１の電費クラスデータ蓄積ルーチンの前半部の処理の流れを示すフローチャートである。
【図５】実施例１の電費クラスデータ蓄積ルーチンの後半部の処理の流れを示すフローチャートである。
【図６】実施例１の平均消費電力算出ルーチンの処理の流れを示すフローチャートである。
【図７】実施例１の目標電費算出ルーチンの処理の流れを示すフローチャートである。
【図８】実施例１の目標電費補正量算出ルーチンの処理の流れを示すフローチャートである。
【図９】実施例１の最終目標電費算出ルーチンの処理の流れを示すフローチャートである。
【図１０】実施例１のイニシャル処理ルーチンの処理の流れを示すフローチャートである。
【図１１】実施例１の最終目標電費バックアップルーチンの処理の流れを示すフローチャートである。
【図１２】実施例１の発電実行判定ルーチンの処理の流れを示すフローチャートである。
【図１３】今回走行時のサンプル期間に応じて重み係数αs を算出するマップの一例を示す図である。
【図１４】今回走行時に算出した目標電費ＴＣＦＣと不揮発性メモリに記憶されている前回走行時の最終目標電費ＴＣＦＣbuとの偏差Ｔgdevに応じて重み係数αt を算出するマップの一例を示す図である。
【図１５】今回走行時の最終的な平均消費電力ＣＰavefに応じて重み係数αe を算出するマップの一例を示す図である。
【図１６】運転条件に応じて重み係数αl を算出するマップの一例を示す図である。
【図１７】バッテリ残充電量ＳＯＣに応じて重み係数αb を算出するマップの一例を示す図である。
【図１８】実施例２の最終目標電費算出ルーチンの処理の流れを示すフローチャートである。
【図１９】今回走行時の最終的な平均消費電力ＣＰavefに応じてサンプル期間Ｎe を算出するマップの一例を示す図である。
【図２０】運転条件に応じてサンプル期間Ｎl を算出するマップの一例を示す図である。
【図２１】バッテリ残充電量ＳＯＣに応じてサンプル期間Ｎb を算出するマップの一例を示す図である。
【符号の説明】
【０１０２】
１１…制御装置（発電制御手段，燃料消費量算出手段，目標値算出手段）、１２…バッテリ、１３…キースイッチ、１６…発電機、１７…電流センサ、１８…電圧センサ
【図１】
2007037260.tif 000003
【図２】
2007037260.tif 000004
【図３】
2007037260.tif 000005
【図４】
2007037260.tif 000006
【図５】
2007037260.tif 000007
【図６】
2007037260.tif 000008
【図７】
2007037260.tif 000009
【図８】
2007037260.tif 000010
【図９】
2007037260.tif 000011
【図１０】
2007037260.tif 000012
【図１１】
2007037260.tif 000013
【図１２】
2007037260.tif 000014
【図１３】
2007037260.tif 000015
【図１４】
2007037260.tif 000016
【図１５】
2007037260.tif 000017
【図１６】
2007037260.tif 000018
【図１７】
2007037260.tif 000019
【図１８】
2007037260.tif 000020
【図１９】
2007037260.tif 000021
【図２０】
2007037260.tif 000022
【図２１】
2007037260.tif 000023