(57)【要約】      （修正有）【課題】マイクロコンピュータを備えた車両用制御装置において、スタック使用量の変動傾向を把握し、プログラムの暴走の発生を未然に回避する。【解決手段】制御周期毎に、マイクロコンピュータのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の変化量が所定変化量より大きく、かつ、今回の平均値が所定値より大きいと判断されると、スタック使用量が急増すると判断して縮退制御を実行する。スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向を把握することで、スタック領域外へのオーバーライトを予測する共に、縮退制御を実行することで、必要とされるスタック領域を拡大するので、プログラムの暴走を回避する。【選択図】図２
2019159655.tif 000002
【特許請求の範囲】
【請求項１】
車両用制御装置であって、
実行モジュールのある期間における制御周期毎のＲＡＭのスタック使用量の平均値と、前記期間より前の前期間における制御周期毎の前記ＲＡＭのスタック使用量の平均値との間の変化量が所定の変化量閾値より大きい場合に、機能縮退制御を実行するマイクロコンピュータを備えた
ことを特徴とする車両用制御装置。
【請求項２】
請求項１に記載の車両用制御装置であって、
前記マイクロコンピュータは、前記変化量が前記変化量閾値より大きい場合で、かつ、前記期間における制御周期毎の前記ＲＡＭのスタック使用量の平均値が所定の閾値より大きい場合に、前記機能縮退制御を実行する
ことを特徴とする車両用制御装置。
【請求項３】
請求項１に記載の車両用制御装置であって、
前記マイクロコンピュータは、前記変化量が前記変化量閾値より大きい場合に、他の実行モジュールの前記機能縮退制御を実行する
ことを特徴とする車両用制御装置。
【請求項４】
請求項３に記載の車両用制御装置であって、
機能縮退される前記他の実行モジュールのＲＡＭ領域を、前記実行モジュールのスタック領域の下端あるいは上端に配置し、前記マイクロコンピュータは、機能縮退される前記他の実行モジュールの前記ＲＡＭ領域を前記スタック領域として拡張する
ことを特徴とする車両用制御装置。
【請求項５】
請求項１〜請求項３のいずれか１項に記載の車両用制御装置であって、
前記マイクロコンピュータは、前記変化量が前記変化量閾値よりも大きい閾値を超えた場合に、前記ＲＡＭのスタック使用量の変化と前記実行モジュールを特定して報知する
ことを特徴とする車両用制御装置。
【請求項６】
請求項１〜請求項３のいずれか１項に記載の車両用制御装置であって、
前記マイクロコンピュータは、前記機能縮退制御に至るまでの制御周期毎の前記ＲＡＭのスタック使用量の平均値、及び前記実行モジュールを、前記マイクロコンピュータの電源を遮断する場合に、前記マイクロコンピュータ、或いは周辺機器の記憶装置へ保存する
ことを特徴とする車両用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は自動車に使用される車両用制御装置に係り、特に操作アクチュエータの制御量の演算をマイクロコンピュータで実行する車両用制御装置に関するものである。
【背景技術】
【０００２】
自動車には、内燃機関、自動変速機、制動装置、操舵装置等を制御するために、それぞれに車両用制御装置が使用されている。この車両用制御装置は操作アクチュエータを制御するための制御量を求める機能を備えており、この機能は多くはマイクロコンピュータによって実行されている。
【０００３】
ところで、この種の車両用制御装置のマイクロコンピュータにおいては、ＲＡＭのワークエリア領域として機能するスタック領域が設定されている。このスタック領域の設定は、車両用制御装置の設計段階で静的に各モジュールに必要なスタックサイズを見積もり、プログラム実行時にスタック領域の不足が発生しないように十分なスタックサイズを設定するようにしている。しかしながら、実際にプログラムを起動して制御を実行する場合、その時のスタック使用量は、関数ネスト(関数の中に関数を入れ込む演算)の程度や、割り込み発生の頻度によって変化し、設計段階で予め準備していたスタック領域範囲を超えてしまうことが往々にしてあり、この場合においてはプログラムが暴走してしまうという恐れが想定される。
【０００４】
このような課題に対応するものとして、特開２００４−１５７６６２号公報(特許文献１)には、スタック使用量がスタック領域を越えてスタック領域外へオーバーライトする事象の発生を検知して、メモリ破壊を未然に防止することでプログラムの暴走を回避することが提案されてる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１５７６６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、特許文献１においては、マイクロコンピュータに内蔵されるタイマ機能による割り込みハンドラを用いて、各タスクのスタックポインタが自タスクのスタック領域を越えているか否かのオーバライトチェックを一定周期毎に行うようにしている。通常、各タスクのスタック領域は連続して設定されるため、各タスクのスタックポインタが前段のスタック領域の開始位置を越えているか否かの監視を行うことにより、オーバライトチェックを行うことができる。これにより、各タスクのディスパッチとは非同期に、かつ動的に各タスクのスタックオーバライトを検出することが可能となる。
【０００７】
しかしながら、この場合、スタック領域外へのオーバーライトを検出した後に、プログラムの暴走を回避するため、プログラムカウンタを停止し、マイクロコンピュータの制御モードをリセットに遷移させて初期化する必要がある。
【０００８】
一般の事務機器等においてはさほど問題とならないが、車両用制御装置においては、加速走行中などの過渡状態にオーバーライトを検出してリセットによる初期化を実行してしまうと、制御モードが電源投入時の初期状態に遷移してしまい、意図しない車両挙動が発生するため、電源投入時以外のリセットは回避しなければならない。また、マイクロコンピュータの制御モードのリセットでは、スタック領域外へのオーバーライトの発生の根本原因を解決したことにはならず、当然のことながら同じ事象が再発することも十分にあり、これの対策も必要となる。
【０００９】
本発明の目的は、マイクロコンピュータを備えた車両用制御装置において、スタック使用量の変動傾向を把握してプログラムの暴走の発生を未然に回避することができる新規な車両用制御装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の特徴は、実行モジュールの制御周期毎に、ＲＡＭのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の間の変化量が所定の変化量閾値より大きいと判断されると、他の実行モジュールの機能縮退制御を実行するマイクロコンピュータを備えた、ところにある。
【発明の効果】
【００１１】
本発明によれば、スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向(増加傾向)を把握することで、スタック領域外へのオーバーライトを予測する共に、機能縮退制御を実行することで、必要とされるスタック領域を拡大するのでプログラムの暴走を未然に回避することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明が適用される車両用制御装置を搭載した自動車システムの構成図である。
【図２】本発明の実施形態になる、スタック使用量の変動傾向を把握して機能縮退制御を実行するフローチャート図である。
【図３】図２に示すスタック領域と機能縮退制御を実行する実行モジュールのＲＡＭ領域の割り付けを説明する説明図である。
【図４】制御周期毎の制御ソフトウェアの実行によるスタック使用量とその平均値の変動を説明するタイムチャート図である。
【発明を実施するための形態】
【００１３】
次に、本発明の実施形態について図面を用いて詳細に説明するが、本発明は以下の実施形態に限定されることなく、本発明の技術的な概念の中で種々の変形例や応用例をもその範囲に含むものである。
【００１４】
まず、図１を用いて本実施形態になる車両用制御装置により制御される自動車１０の構成を説明する。尚、図１にはエンジン、変速機、ブレーキを含む駆動/制動系を備えた自動車の構成を示している。
【００１５】
自動車１０は、駆動力源としてエンジン１１を有しており、エンジン１１の出力側にはトルクコンバータ１２が設けられる。トルクコンバータ１２の出力側には変速機１３が接続されている。エンジン１１には、始動を行う始動装置１４、及び車両１０の各種機器に電力を供給する発電装置１５が接続される。始動装置１４は、例えば直流電動機と、歯車機構と、歯車の押し出し機構からなるスタータモータであり、歯車機構とエンジン１１との連結状態／非連結状態を押し出し機構によって切り替えることができる。発電装置１５は、例えば誘導発電機と、整流器と、電圧調整機構からなるオルタネータである。
【００１６】
始動装置１４は、電源１６から供給される電力によって駆動され、始動要求に基づきエンジン１１を始動する。電源１６は、例えば電池であり、鉛バッテリを好適に用いることができる他、リチウムイオン二次電池を始め各種の二次電池、キャパシタなどの蓄電器を用いてもよい。電源１６は、発電装置１５によって発電された電力を蓄え、始動装置１４や図示しない前照灯や各種コントローラなどの車両電装品へ電力を供給している。
【００１７】
エンジン１１の種類は、自動車１０を走行させる駆動力源であれば良く、ポート噴射式、または筒内噴射式のガソリンエンジン、ディーゼルエンジンなどが挙げられる。また、エンジンの構造もレシプロエンジンの他、ヴァンケル式ロータリーエンジンであってもよい。エンジン１１は、クランク軸１７を有しており、クランク軸１７の一端には、クランク角信号を検出するために既定のパターンを刻んだ信号プレート１８が取り付けられている。クランク軸１７の他端には、トランスミッションへ駆動力を伝達する図示しないドライブプレートと一体のリングギヤが取り付けられている。
【００１８】
信号プレート１８の近傍には、そのパターンの凹凸を検出してパルス信号を出力するクランク角センサ１９が取り付けられている。クランク角センサ１９から出力されるパルス信号に基づいて、車両制御装置の１つであるエンジンＣ／Ｕ（エンジンコントロールユニット）２０はエンジン１１の回転数（エンジン回転数）を算出する。エンジンＣ／Ｕ２０には、エンジン制御用のマイクロコンピュータ３３が内蔵されている。
【００１９】
また、エンジン１１の吸気系部品として、吸入空気を各シリンダへ分配するインテークマニホールド２１、スロットルバルブ２２、エアフロセンサ２３、エアクリーナ２４が取り付けられている。スロットルバルブ２２は、一例として、電子制御式スロットル装置である。エンジンＣ／Ｕ２０は、アクセルペダル１０６の踏み込み量を検知するアクセルペダルセンサ２５の信号や、その他の各センサから送られてくる信号を基に最適なスロットル開度を算出し、スロットルバルブ２２へ出力する。これにより、スロットルバルブ２２は、最適なスロットルバルブ開度に制御される。
【００２０】
エアフロセンサ２３は、エアクリーナ２４ら吸入される空気流量を計測してエンジンＣ／Ｕ２０へ出力する。エンジンＣ／Ｕ２０は、計測した空気量に見合った燃料量を算出して、図示していない燃料噴射弁へ開弁時間として出力する。燃料噴射弁は、前述のクランク角センサ１９の信号が示すクランク角が、エンジンＣ／Ｕ２０で予め設定されたクランク角となるタイミングで燃料噴射を開始する。
【００２１】
この動作によりエンジン１１の気筒内には、吸入された空気と燃料噴射弁から噴射された燃料が混ぜ合わさり混合気が形成される。点火プラグは、クランク角センサ１９の信号が示すクランク角が、エンジンＣ／Ｕ２０で予め設定されたクランク角となるタイミングで、図示していない点火コイルを介して通電される。これにより、気筒内の混合気は、点火して燃焼、爆発して駆動力として利用される。
【００２２】
エンジン１１は、前述の燃焼、爆発で得られた運動エネルギーを、クランク軸１７へ伝えて回転駆動力を発生させる。クランク軸１７の変速機側には図示していないドライブプレートが付いている。ドライブプレートは、トルクコンバータ１２の入力側と直結しており、トルクコンバータ１２の出力側は変速機１３に入力される。
【００２３】
変速機１３は、有段変速機構、またはベルト式やディスク式の無段変速機構を持つ変速機本体で、車両制御装置の１つである変速機Ｃ／Ｕ（変速機コントロールユニット）２６よって制御される。変速機Ｃ／Ｕ２６は、エンジン動作情報（エンジン回転数、車速、スロットル開度等）やギヤシフトレバー２７のギヤレンジセンサ２８のレンジ情報２８を基にして適切な変速ギヤ、または変速比を決定して変速機１３に変速させる。これにより、変速機１３は、最適な変速比になるように制御される。変速機Ｃ／Ｕ２６にも、変速制御用のマイクロコンピュータ３３が内蔵されている。
【００２４】
変速機１３と差動機構２９の間にはクラッチ機構３０を有している。変速機１３からの駆動力を差動機構２９へ伝達して駆動輪３８を駆動する時は、クラッチ機構３０は締結され、逆に駆動輪３８からの逆駆動力を遮断したい時は、クラッチ機構３０は開放される。これにより、変速機１３へ逆駆動力が伝達しないように制御することを可能としている。
【００２５】
車両制御装置の１つであるＡＣＣＣ／Ｕ（ＡＣＣコントロールユニット）３１は、エンジンＣ／Ｕ２０と変速機Ｃ／Ｕ２６の間でエンジン制御情報および変速制御情報の通信を行い、外界認識装置３２からの外界認識情報と合わせて先行車両に追従して走行を制御する。また、予め設定した設定車速で走行するＡＣＣ制御を実行する。ＡＣＣＣ／Ｕ３１も同様にＡＣＣ制御用のマイクロコンピュータ３３が内蔵されている。
【００２６】
ＥＳＣ（Electronic Stability Control）制御用ユニット・アクチュエータ３４は、ブレーキアクチュエータを内蔵しており、ブレーキペダル３５からの踏力を図示されていない倍力装置を介して、ブレーキキャリパ３６に油圧を作用させてブレーキディスク３７を締め付けることによりブレーキをかける。なお図示されていないがＥＳＣ制御用ユニット・アクチュエータ３４はＣＡＮなどの通信回線を通し、自動車１０内の他の制御用ユニットと必要な通信を相互に実施し、運転者の踏力とは別に、制動力を実現する構成（制御ブレーキ）としている。
【００２７】
そして、このような自動車に用いられる車両用制御装置２０、２６、３１、３４等には、マイクロコンピュータ３３が用いられ、それぞれの操作アクチュエータの制御量を算出しており、その算出過程で得られた制御データ等をＲＡＭのワークエリアであるスタック領域に一時的に記憶するようにしている。しかしながら、上述した通り実際にプログラムを起動して制御を実行する場合、自動車の運転状況に応じて関数ネストの程度や、割り込み発生の頻度が変化し、その時のスタック使用量は、設計段階で予め準備していたスタック領域の範囲を超えてしまうことが往々にしてあり、この場合においてはプログラムが暴走してしまうという恐れがある。
【００２８】
そこで、本実施形態では、制御周期毎に、マイクロコンピュータのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の間の変化量が所定の変化量閾値より大きく、更に望ましくは今回の平均値が所定の閾値より大きいと判断されると、スタック使用量が急増すると判断して機能縮退制御を実行するようにしている。
【００２９】
これによれば、スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向(増加傾向)を把握することで、スタック領域外へのオーバーライトを予測する共に、機能縮退制御を実行することで、必要とされるスタック領域を拡大するのでプログラムの暴走を未然に回避することができる。
【００３０】
以下、その具体的な制御について図２〜図４に基づき詳細に説明する。ここで、図２には、スタック使用量の傾向を把握して機能縮退制御を実行するフローチャートを示し、また、図２には、スタック領域と機能縮退する実行モジュールのＲＡＭ量域の割り付け例を示し、図３には、スタック使用量と平均値の変動傾向を示している。
【００３１】
ここで、以下に説明する「実行モジュール」とは、或る機能を実現する「制御ソフトウェア」、或いは「アプリケーションンソフトウェア」を意味しているものである。
【００３２】
まず、図２を参照してスタック使用量の傾向を把握して機能縮退制御を実行する方法について説明する。図２に示すフローチャートは、制御ソフトウェア(＝アプリケーションソフト)の終期において実行される制御ステップを示している。ここで、制御ソフトウェアの終期とは、例えば、制御ソフトウェアで「エンド」に抜ける前に設定される制御ステップである。尚、図２に示すフローチャートは、１０ｍｓの起動周期（制御周期）で実行されるものである。
【００３３】
≪ステップＳ１０≫
ステップＳ１０においては、現在の制御周期におけるスタック使用量の最大値を算出する。このスタック使用量の最大値が求まるとステップＳ１１に移行する。
【００３４】
≪ステップＳ１１≫
ステップＳ１１においては、前回の制御周期で演算したスタック使用量の平均値と、今回の制御周期で算出したスタック使用量の最大値を加算し、この加算値を「２」で除算して今回の平均値を算出する。この演算は、周知の移動平均法を用いて制御周期毎にスタック使用量の平均値(移動平均値)を算出しているものである。今回の平均値が求まるとステップ１２に移行する。
【００３５】
≪ステップＳ１２≫
ステップＳ１２においては、前回の制御周期で算出した前回の平均値と今回の制御周期で算出した今回の平均値を減算して変化量を求め、求められた変化量が予め設定した変化量閾値よりも大きいか小さいかを判定する。本実施形態においては、スタック使用量の平均値の変化量は、今回の制御周期における平均値(Ｓ１１)と前回の制御周期における平均値(Ｓ１１)の間の差分から求められる。
【００３６】
このように、マイクロコンピュータは、平均値の変化量が変化量閾値より大きい場合に、以下に説明する他の実行モジュールの機能縮退制御を実行するように構成されている。
【００３７】
また、この判定は、スタック使用量の増加量の傾向を判断しており、求められた変化量が所定の変化量閾値より小さいと、スタック使用量が問題になるほど増加していないと判断してエンドに抜けて処理を終了し、逆に、求められた変化量が変化量閾値より大きいと、スタック使用量が問題になる可能性があると判断してステップＳ１３に移行する。ここで、このステップ１２において、スタック使用量が問題になる可能性があると判断されると、ステップＳ１５に移行しても良いものである。
【００３８】
このように、本実施例においては、実行モジュールの制御周期毎に、ＲＡＭのスタック使用量の平均値(Ｓ１１)を求め、今回の制御周期における平均値と過去の平均値の間の変化量が所定の変化量閾値より大きい(Ｓ１２)と判断されると、以下に示す他の実行モジュールの機能縮退制御(Ｓ１５、Ｓ１６)を実行することができる。
【００３９】
ただ、更にスタック使用量が問題になる可能性の判断確度を高めるため、本実施形態では以下のステップＳ１３、１４の制御ステップを実行するようにしている。
【００４０】
≪ステップＳ１３≫
ステップＳ１３では、求められたスタックの変化量(＝増加量)が変化量閾値より大きいという意味の増大フラグを「１」にセットする。この増大フラグは、以下のステップＳ１４で使用される。増大フラグのセットか終了するとステップＳ１４に移行する。
【００４１】
≪ステップＳ１４≫
ステップＳ１４においては、今回の平均値が、スタック使用量として予め設定した所定の閾値よりも大きく、かつ、スタック使用量の増大度合を示す増大フラグに「１」がセットされている場合は、ステップＳ１５に移行する。このステップＳ１５は、通常の制御状態からスタック使用量が急増する制御状態へ切り替える制御ステップである。
【００４２】
一方、スタック使用量の今回の平均値が上述した所定の閾値より小さい場合は、スタック領域に充分な余裕があると見做される。このため、スタック領域外へのオーバーライトの可能性も小さいと判断されて、スタック使用量の増大フラグに「１」がセットされている場合であっても通常の制御状態を継続するため、ステップＳ１８に移行する。
【００４３】
≪ステップＳ１５≫
以下に説明するステップＳ１５〜ステップＳ１７は、必要なスタック領域を拡大するための機能縮退制御を実行する制御ステップである。
【００４４】
ステップＳ１５においては、スタック使用量急増情報をセットするもので、制御機能を縮退中であるため機能回復の実施を促すと共に、機能回復に必要な動作を通知するための情報を設定する処理である。機能回復に必要な動作の特定は、スタック使用量が急増したときの制御周期に実行された実行モジュール(＝制御ソフトウェア)から把握することが可能である。ソフトウェア開発段階においては、ステップＳ１５で設定された情報を基に、予め設定するスタック領域と実行モジュールの最適化を実施することが可能である。この処理が終了するとステップＳ１６に移行する。
【００４５】
このように、ステップＳ１５においては、スタック使用量の平均値が急増した際に、平均値が急増する動作パターンと実行モジュールを特定して警告を報知することができる。このため、ソフトウェア開発時のテスト工程にてスタック領域外へのオーバーライトの発生の有無を動的テストにて検知できるため、予め静的に設定したスタック領域の最適化が可能となる。また、量産後においては、警告を受けると機能縮退に至る特定の動作パターンを知ることが可能となるため、ユーザー自ら機能回復を実施することが可能となる。
【００４６】
本実施形態ではスタック使用量の平均値が急増した際に、平均値が急増する動作パターンと実行モジュールを特定して報知(Ｓ１５)することができる。
【００４７】
このように、マイクロコンピュータは、変化量が前記変化量閾値よりも大きい閾値を超えた場合に、ＲＡＭのスタック使用量の変化と行モジュールを特定して報知するように構成されている。
【００４８】
≪ステップＳ１６≫
ステップＳ１６においては、スタック領域外へのオーバーライトの発生を回避するため、機能縮退要求情報をセットする。機能縮退要求情報がセットされた次の制御周期では、機能毎に予め設定した優先順位に基づいて、機能縮退を実行する他のモジュール(＝制御ソフトウェア)を特定する。機能縮退する他のモジュールが特定されるとステップＳ１７に移行する。
【００４９】
このように、ステップＳ１６においては、機能縮退する他の実行モジュールのＲＡＭ領域をスタック領域の下端あるいは上端に配置し、機能縮退制御では、そのＲＡＭ領域をスタック領域として拡張するものである。このため、予め設定したスタック領域の領域外へのオーバーライトが発生しても、機能縮退制御においては、未使用ＲＡＭ領域への書き込みとなるため、メモリ破壊によるプログラムの暴走を回避することが可能となる。
【００５０】
本実施形態ではスタック使用量の平均値の変化量が所定の変化量閾値より大きいと判断され、かつ、今回の制御周期におけるスタック使用量の平均値が所定の閾値より大きい（Ｓ１４）と判断されると、他の実行モジュールの機能縮退制御（Ｓ１５、Ｓ１６）を実行する。
【００５１】
このように、マイクロコンピュータは、変化量が変化量閾値より大きい場合で、かつ、ある期間における制御周期毎のＲＡＭのスタック使用量の平均値が所定の閾値より大きい場合に、機能縮退制御を実行するように構成されている。
【００５２】
≪ステップＳ１７≫
ステップＳ１７においては、記憶用スタック情報をセットするもので、スタック使用量が急増したことにより機能縮退制御を実施した状態を、マイクロコンピュータ内部や周辺機器の記憶装置へ保存するための処理である。保存する情報としては、機能縮退制御が必要と判定されたときのスタック使用量の平均値と変化量(＝増加量)、機能縮退された実行モジュール(＝制御ソフトウェア)などを設定する。
【００５３】
また必要に応じて、アクセル開度やブレーキなどのユーザの操作や、車速やエンジン回転などの車両状態を設定しても良い。車両において変速ショックなどの不具合に対して、保存されたデータを解析すれば、スタック使用量の増大傾向等の観点から不具合の解析が実施可能となる。
【００５４】
このように、ステップＳ１７においては、スタック使用量の平均値と、機能縮退に至った動作パターンや実行モジュールを、車両用制御装置のシャットダウン時にマイクロコンピュータや周辺機器の記憶装置へ保存するものである。これによれば、車両走行中に発生した変速ショックなどの不具合に対して、スタック使用量の増加傾向の観点から、その不具合の原因解析が可能となる。また、スタック使用量の変化量(増加量)を保存することで、より精度の高い縮退制御の実施判定が可能となる。
【００５５】
本実施形態によれば、スタック使用量の平均値と、機能縮退に至った動作パターンと、実行モジュールを、マイクロコンピュータの電源を遮断するシャットダウン時にマイクロコンピュータや周辺機器の記憶装置のいずれかに保存(Ｓ１７)することができる。
【００５６】
このように、マイクロコンピュータは、機能縮退制御に至るまでの制御周期毎のＲＡＭのスタック使用量の平均値、及び実行モジュールを、マイクロコンピュータの電源を遮断する場合に、マイクロコンピュータ、或いは周辺機器の記憶装置へ保存するように構成されている。
【００５７】
≪ステップＳ１８≫、≪ステップＳ１９≫
ステップＳ１４において、スタック使用量の増大度合を示す増大フラグに「１」がセットされていても、今回の平均値が予め設定したスタック使用量の所定の閾値よりも十分小さいと判断されているので、ステップＳ１８、及びステップＳ１９においては、スタック領域外へのオーバーライトの発生の可能性が小さいので、通常状態の処理を行なうため、機能縮退に関連する情報を全てクリアする。
【００５８】
以上で説明したフローチャートによる制御ステップが、制御ソフトウェアの終期で、しかも制御周期毎に実行される。これによって、スタック使用量の増大傾向を把握して機能縮退制御を実行することにより、必要とされるスタック領域を確保できプログラムの暴走を未然に回避することが可能となる。
【００５９】
次に、図３を参照して、機能縮退したときのスタック領域の拡張方法を説明する。図３において、通常時のスタック領域は、メモリアドレス「００００」から「ＸＸＸＸ−１」までの範囲であり、メモリアドレス「００００」から順にメモリ退避する場合のメモリマップを示したものである。
【００６０】
機能縮退するために、機能縮退時に実行しないモジュールについて予め優先順位を設定しておく。この場合、モジュール１ ＞ モジュール２ ＞……モジュールＸのように隣接して優先順位が付されている。そして、スタック領域にオーバライトの恐れがあると判断されて機能縮退が必要と判定されたときに、上述した優先順位に基づいて実行モジュールを特定することで、特定された実行モジュールのスタック使用量を抑制する。つまり、機能縮退することによって必要とされるスタック領域に隣接するＲＡＭ領域の空きが増大し、このＲＡＭ領域の空きを必要とするスタック領域に拡大するものである。
【００６１】
ここで、機能縮退される実行モジュールのＲＡＭ領域は使用されることがないため、スタック領域として利用してもＲＡＭ破壊によるプログラムの暴走は発生しない。したがって、図３のように機能縮退される優先順位が高いモジュールのＲＡＭ領域２０３やＲＡＭ領域２０４を、スタック領域に隣接する上端(アドレスＸＸＸＸ)に設定することで、仮に既存のスタック領域２０２に対してオーバーライトが発生する状態であっても、書き込まれる領域が機能縮退されている実行モジュールのＲＡＭ領域２０３、２０４であるため、プログラムの暴走を回避することが可能となる。尚、図３で機能縮退された実行モジュールのＲＡＭ領域はスタック領域の上端に設定したが、スタック処理の手法によってはスタック領域の下端に設定することも可能である。
【００６２】
このように、本実施形態では、機能縮退される他の実行モジュールのＲＡＭ領域(２０３、２０４)をスタック領域(２０２)の下端あるいは上端に配置し、機能縮退される他の実行モジュールのＲＡＭ領域をスタック領域として拡張することができる。
【００６３】
このように、本実施形態では、実行モジュールのある期間における制御周期毎のＲＡＭのスタック使用量の平均値と、ある期間より前の前期間における制御周期毎のＲＡＭのスタック使用量の平均値との間の変化量が所定の変化量閾値より大きい場合に、機能縮退制御を実行するマイクロコンピュータを備えた構成とした。
【００６４】
ここで、機能縮退される実行モジュールの例として、機能縮退される優先順位にしたがって、診断機能、通信機能、変速機能等を設定するすることができ、診断機能では診断の停止を行ない、通信機能では通信頻度の抑制を行ない、変速機制御では変速位置を固定値にセットするいった機能縮退を実行することができる。したがって、この機能縮退によって、使用されないＲＡＭ領域をスタック領域として拡張することができる。
【００６５】
次に図４を参照して、スタック使用量とその平均値からスタック使用量の増加傾向を把握する例を説明する。図４の縦軸はスタック使用量を示し、横軸は制御周期毎の制御ソフトウェアの実行順序を示している。例えば、１０ｍｓ毎に実行される制御ソフトウェアのスタック使用量の変化を示している。尚、折れ線は、スタック使用量の移動平均値を示している。
【００６６】
区間３０１では、制御周期０から１２の間で、スタック使用量の平均値は、緩やかに増加傾向であることが分かる。この区間３０１では、スタック使用量の平均値は増加傾向の状態であるが、その使用量の平均値は十分小さいので、区間３０１でスタック使用量が急激に増加しても、スタック領域外へのオーバーライトが発生する可能性が十分小さいため、機能縮退制御を実施する必要はないと判断できる。
【００６７】
ここで、スタック領域にオーバーライトが発生しないことを判定するために、スタック使用量の閾値を所定値に設定する必要がある。この所定の閾値の設定は、スタック使用量の増加量を、スタック領域のサイズから減算すれば良いものである。また、スタック使用量の変化量閾値は、静的に見積もった値を初期値として設定するが、図２のステップＳ１７で保存した増加量を設定すれば、動的に設定することが可能である。
【００６８】
また、オーバーライトの発生をより確実に回避するために、変化量閾値に所定の値を加算してマージンを持たせるようにしても良い。また、車両用制御装置をシャットダウンする時に動的に設定された変化量閾値を記憶装置に保存し、次回の起動時に保存した変化量閾値を読み出すことで、より正確にオーバーライトの発生を未然に回避することが可能となる。
【００６９】
また、区間３０３の制御周期４０から５０の間では、スタック使用量は一定の増加傾向にあることが分かる。この区間３０３においても、区間３０１と同様にスタック使用量が急激に増加しても、スタック領域外へのオーバーライトが発生する可能性は十分小さいため、機能縮退制御を実施する必要はないと判断できる。
【００７０】
一方、区間３０２の制御周期２１から３３の間では、スタック使用量が高い状態で継続している状態であり、このときに、スタック使用量の平均値の変化量が変化量閾値を超えるだけの制御処理が実行されれば、スタック領域へのオーバーライトが発生してしまうことが推測できる。したがって、区間３０２の状態は、スタック領域へのオーバーライトが発生する可能性が極めて高く、機能縮退制御の実施が必要であると判断する。
【００７１】
ここで、区間３０２の直前の制御周期２０から直後の制御周期２３のようにスタック使用量が急激に増加する場合、平均値の変化量も大きくなるため、その後の制御周期において、スタック使用量が大きくなることが予測できる。このため、予め決定しておいた優先順位の低い実行モジュールを停止することで、スタック使用量の増加に対応することができ、スタック領域へのオーバーライトの発生を未然に回避することが可能となる。
【００７２】
以上述べた通り、本発明によれば、実行モジュールの制御周期毎に、ＲＡＭのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の間の変化量が所定の変化量閾値より大きいと判断されると、他の実行モジュールの機能縮退制御を実行するものである。
【００７３】
これによれば、スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向(増加傾向)を把握することで、スタック領域外へのオーバーライトを予測する共に、機能縮退制御を実行することで、必要とされるスタック領域を拡大するのでプログラムの暴走を未然に回避することができる。
【００７４】
尚、本発明は、上述した実施例に限定するものではなく、様々な変形例が含まれる。例えば、上述した実施例は本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定するものではない。またある実施例の構成の一手段を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一手段について、他の構成の追加、削除、置換をすることが可能である。
【符号の説明】
【００７５】
１０…自動車、１１…エンジン、１２…トルクコンバータ、１３…変速機、１４…始動装置、１５…発電装置、１６…電源、１７…クランク軸、１８…信号プレート、１９…クランク角センサ、２０…エンジンＣ/Ｕ、２１…インテークマニホールド、２２…スロットルバルブ、２３…エアフロセンサ、２４…エアクリーナ、２５…アクセルペダルセンサ、２６…変速機Ｃ／Ｕ、２７…ギヤシフトレバー、２８…ギヤレンジセンサ、２９…差動機構、３０…クラッチ機構、３１…ＡＣＣＣ／Ｕ、３２…外界認識装置、３３…ＡＣＣ制御用ＣＰＵ、３４…ＥＳＣ制御用ユニット・アクチュエータ、３５…ブレーキペダル、３６…ブレーキキャリパ、３７…ブレーキディスク、３８…駆動輪。
【図１】
2019159655.tif 000003
【図２】
2019159655.tif 000004
【図３】
2019159655.tif 000005
【図４】
2019159655.tif 000006