JP2019159655A - 車両用制御装置 - Google Patents
車両用制御装置 Download PDFInfo
- Publication number
- JP2019159655A JP2019159655A JP2018044136A JP2018044136A JP2019159655A JP 2019159655 A JP2019159655 A JP 2019159655A JP 2018044136 A JP2018044136 A JP 2018044136A JP 2018044136 A JP2018044136 A JP 2018044136A JP 2019159655 A JP2019159655 A JP 2019159655A
- Authority
- JP
- Japan
- Prior art keywords
- control
- stack
- average value
- microcomputer
- control device
- 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.)
- Pending
Links
Images
Landscapes
- Combined Controls Of Internal Combustion Engines (AREA)
- Debugging And Monitoring (AREA)
Abstract
【課題】マイクロコンピュータを備えた車両用制御装置において、スタック使用量の変動傾向を把握し、プログラムの暴走の発生を未然に回避する。
【解決手段】制御周期毎に、マイクロコンピュータのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の変化量が所定変化量より大きく、かつ、今回の平均値が所定値より大きいと判断されると、スタック使用量が急増すると判断して縮退制御を実行する。スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向を把握することで、スタック領域外へのオーバーライトを予測する共に、縮退制御を実行することで、必要とされるスタック領域を拡大するので、プログラムの暴走を回避する。
【選択図】図2
【解決手段】制御周期毎に、マイクロコンピュータのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の変化量が所定変化量より大きく、かつ、今回の平均値が所定値より大きいと判断されると、スタック使用量が急増すると判断して縮退制御を実行する。スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向を把握することで、スタック領域外へのオーバーライトを予測する共に、縮退制御を実行することで、必要とされるスタック領域を拡大するので、プログラムの暴走を回避する。
【選択図】図2
Description
本発明は自動車に使用される車両用制御装置に係り、特に操作アクチュエータの制御量の演算をマイクロコンピュータで実行する車両用制御装置に関するものである。
自動車には、内燃機関、自動変速機、制動装置、操舵装置等を制御するために、それぞれに車両用制御装置が使用されている。この車両用制御装置は操作アクチュエータを制御するための制御量を求める機能を備えており、この機能は多くはマイクロコンピュータによって実行されている。
ところで、この種の車両用制御装置のマイクロコンピュータにおいては、RAMのワークエリア領域として機能するスタック領域が設定されている。このスタック領域の設定は、車両用制御装置の設計段階で静的に各モジュールに必要なスタックサイズを見積もり、プログラム実行時にスタック領域の不足が発生しないように十分なスタックサイズを設定するようにしている。しかしながら、実際にプログラムを起動して制御を実行する場合、その時のスタック使用量は、関数ネスト(関数の中に関数を入れ込む演算)の程度や、割り込み発生の頻度によって変化し、設計段階で予め準備していたスタック領域範囲を超えてしまうことが往々にしてあり、この場合においてはプログラムが暴走してしまうという恐れが想定される。
このような課題に対応するものとして、特開2004−157662号公報(特許文献1)には、スタック使用量がスタック領域を越えてスタック領域外へオーバーライトする事象の発生を検知して、メモリ破壊を未然に防止することでプログラムの暴走を回避することが提案されてる。
ところで、特許文献1においては、マイクロコンピュータに内蔵されるタイマ機能による割り込みハンドラを用いて、各タスクのスタックポインタが自タスクのスタック領域を越えているか否かのオーバライトチェックを一定周期毎に行うようにしている。通常、各タスクのスタック領域は連続して設定されるため、各タスクのスタックポインタが前段のスタック領域の開始位置を越えているか否かの監視を行うことにより、オーバライトチェックを行うことができる。これにより、各タスクのディスパッチとは非同期に、かつ動的に各タスクのスタックオーバライトを検出することが可能となる。
しかしながら、この場合、スタック領域外へのオーバーライトを検出した後に、プログラムの暴走を回避するため、プログラムカウンタを停止し、マイクロコンピュータの制御モードをリセットに遷移させて初期化する必要がある。
一般の事務機器等においてはさほど問題とならないが、車両用制御装置においては、加速走行中などの過渡状態にオーバーライトを検出してリセットによる初期化を実行してしまうと、制御モードが電源投入時の初期状態に遷移してしまい、意図しない車両挙動が発生するため、電源投入時以外のリセットは回避しなければならない。また、マイクロコンピュータの制御モードのリセットでは、スタック領域外へのオーバーライトの発生の根本原因を解決したことにはならず、当然のことながら同じ事象が再発することも十分にあり、これの対策も必要となる。
本発明の目的は、マイクロコンピュータを備えた車両用制御装置において、スタック使用量の変動傾向を把握してプログラムの暴走の発生を未然に回避することができる新規な車両用制御装置を提供することにある。
本発明の特徴は、実行モジュールの制御周期毎に、RAMのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の間の変化量が所定の変化量閾値より大きいと判断されると、他の実行モジュールの機能縮退制御を実行するマイクロコンピュータを備えた、ところにある。
本発明によれば、スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向(増加傾向)を把握することで、スタック領域外へのオーバーライトを予測する共に、機能縮退制御を実行することで、必要とされるスタック領域を拡大するのでプログラムの暴走を未然に回避することができる。
次に、本発明の実施形態について図面を用いて詳細に説明するが、本発明は以下の実施形態に限定されることなく、本発明の技術的な概念の中で種々の変形例や応用例をもその範囲に含むものである。
まず、図1を用いて本実施形態になる車両用制御装置により制御される自動車10の構成を説明する。尚、図1にはエンジン、変速機、ブレーキを含む駆動/制動系を備えた自動車の構成を示している。
自動車10は、駆動力源としてエンジン11を有しており、エンジン11の出力側にはトルクコンバータ12が設けられる。トルクコンバータ12の出力側には変速機13が接続されている。エンジン11には、始動を行う始動装置14、及び車両10の各種機器に電力を供給する発電装置15が接続される。始動装置14は、例えば直流電動機と、歯車機構と、歯車の押し出し機構からなるスタータモータであり、歯車機構とエンジン11との連結状態/非連結状態を押し出し機構によって切り替えることができる。発電装置15は、例えば誘導発電機と、整流器と、電圧調整機構からなるオルタネータである。
始動装置14は、電源16から供給される電力によって駆動され、始動要求に基づきエンジン11を始動する。電源16は、例えば電池であり、鉛バッテリを好適に用いることができる他、リチウムイオン二次電池を始め各種の二次電池、キャパシタなどの蓄電器を用いてもよい。電源16は、発電装置15によって発電された電力を蓄え、始動装置14や図示しない前照灯や各種コントローラなどの車両電装品へ電力を供給している。
エンジン11の種類は、自動車10を走行させる駆動力源であれば良く、ポート噴射式、または筒内噴射式のガソリンエンジン、ディーゼルエンジンなどが挙げられる。また、エンジンの構造もレシプロエンジンの他、ヴァンケル式ロータリーエンジンであってもよい。エンジン11は、クランク軸17を有しており、クランク軸17の一端には、クランク角信号を検出するために既定のパターンを刻んだ信号プレート18が取り付けられている。クランク軸17の他端には、トランスミッションへ駆動力を伝達する図示しないドライブプレートと一体のリングギヤが取り付けられている。
信号プレート18の近傍には、そのパターンの凹凸を検出してパルス信号を出力するクランク角センサ19が取り付けられている。クランク角センサ19から出力されるパルス信号に基づいて、車両制御装置の1つであるエンジンC/U(エンジンコントロールユニット)20はエンジン11の回転数(エンジン回転数)を算出する。エンジンC/U20には、エンジン制御用のマイクロコンピュータ33が内蔵されている。
また、エンジン11の吸気系部品として、吸入空気を各シリンダへ分配するインテークマニホールド21、スロットルバルブ22、エアフロセンサ23、エアクリーナ24が取り付けられている。スロットルバルブ22は、一例として、電子制御式スロットル装置である。エンジンC/U20は、アクセルペダル106の踏み込み量を検知するアクセルペダルセンサ25の信号や、その他の各センサから送られてくる信号を基に最適なスロットル開度を算出し、スロットルバルブ22へ出力する。これにより、スロットルバルブ22は、最適なスロットルバルブ開度に制御される。
エアフロセンサ23は、エアクリーナ24ら吸入される空気流量を計測してエンジンC/U20へ出力する。エンジンC/U20は、計測した空気量に見合った燃料量を算出して、図示していない燃料噴射弁へ開弁時間として出力する。燃料噴射弁は、前述のクランク角センサ19の信号が示すクランク角が、エンジンC/U20で予め設定されたクランク角となるタイミングで燃料噴射を開始する。
この動作によりエンジン11の気筒内には、吸入された空気と燃料噴射弁から噴射された燃料が混ぜ合わさり混合気が形成される。点火プラグは、クランク角センサ19の信号が示すクランク角が、エンジンC/U20で予め設定されたクランク角となるタイミングで、図示していない点火コイルを介して通電される。これにより、気筒内の混合気は、点火して燃焼、爆発して駆動力として利用される。
エンジン11は、前述の燃焼、爆発で得られた運動エネルギーを、クランク軸17へ伝えて回転駆動力を発生させる。クランク軸17の変速機側には図示していないドライブプレートが付いている。ドライブプレートは、トルクコンバータ12の入力側と直結しており、トルクコンバータ12の出力側は変速機13に入力される。
変速機13は、有段変速機構、またはベルト式やディスク式の無段変速機構を持つ変速機本体で、車両制御装置の1つである変速機C/U(変速機コントロールユニット)26よって制御される。変速機C/U26は、エンジン動作情報(エンジン回転数、車速、スロットル開度等)やギヤシフトレバー27のギヤレンジセンサ28のレンジ情報28を基にして適切な変速ギヤ、または変速比を決定して変速機13に変速させる。これにより、変速機13は、最適な変速比になるように制御される。変速機C/U26にも、変速制御用のマイクロコンピュータ33が内蔵されている。
変速機13と差動機構29の間にはクラッチ機構30を有している。変速機13からの駆動力を差動機構29へ伝達して駆動輪38を駆動する時は、クラッチ機構30は締結され、逆に駆動輪38からの逆駆動力を遮断したい時は、クラッチ機構30は開放される。これにより、変速機13へ逆駆動力が伝達しないように制御することを可能としている。
車両制御装置の1つであるACCC/U(ACCコントロールユニット)31は、エンジンC/U20と変速機C/U26の間でエンジン制御情報および変速制御情報の通信を行い、外界認識装置32からの外界認識情報と合わせて先行車両に追従して走行を制御する。また、予め設定した設定車速で走行するACC制御を実行する。ACCC/U31も同様にACC制御用のマイクロコンピュータ33が内蔵されている。
ESC(Electronic Stability Control)制御用ユニット・アクチュエータ34は、ブレーキアクチュエータを内蔵しており、ブレーキペダル35からの踏力を図示されていない倍力装置を介して、ブレーキキャリパ36に油圧を作用させてブレーキディスク37を締め付けることによりブレーキをかける。なお図示されていないがESC制御用ユニット・アクチュエータ34はCANなどの通信回線を通し、自動車10内の他の制御用ユニットと必要な通信を相互に実施し、運転者の踏力とは別に、制動力を実現する構成(制御ブレーキ)としている。
そして、このような自動車に用いられる車両用制御装置20、26、31、34等には、マイクロコンピュータ33が用いられ、それぞれの操作アクチュエータの制御量を算出しており、その算出過程で得られた制御データ等をRAMのワークエリアであるスタック領域に一時的に記憶するようにしている。しかしながら、上述した通り実際にプログラムを起動して制御を実行する場合、自動車の運転状況に応じて関数ネストの程度や、割り込み発生の頻度が変化し、その時のスタック使用量は、設計段階で予め準備していたスタック領域の範囲を超えてしまうことが往々にしてあり、この場合においてはプログラムが暴走してしまうという恐れがある。
そこで、本実施形態では、制御周期毎に、マイクロコンピュータのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の間の変化量が所定の変化量閾値より大きく、更に望ましくは今回の平均値が所定の閾値より大きいと判断されると、スタック使用量が急増すると判断して機能縮退制御を実行するようにしている。
これによれば、スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向(増加傾向)を把握することで、スタック領域外へのオーバーライトを予測する共に、機能縮退制御を実行することで、必要とされるスタック領域を拡大するのでプログラムの暴走を未然に回避することができる。
以下、その具体的な制御について図2〜図4に基づき詳細に説明する。ここで、図2には、スタック使用量の傾向を把握して機能縮退制御を実行するフローチャートを示し、また、図2には、スタック領域と機能縮退する実行モジュールのRAM量域の割り付け例を示し、図3には、スタック使用量と平均値の変動傾向を示している。
ここで、以下に説明する「実行モジュール」とは、或る機能を実現する「制御ソフトウェア」、或いは「アプリケーションンソフトウェア」を意味しているものである。
まず、図2を参照してスタック使用量の傾向を把握して機能縮退制御を実行する方法について説明する。図2に示すフローチャートは、制御ソフトウェア(=アプリケーションソフト)の終期において実行される制御ステップを示している。ここで、制御ソフトウェアの終期とは、例えば、制御ソフトウェアで「エンド」に抜ける前に設定される制御ステップである。尚、図2に示すフローチャートは、10msの起動周期(制御周期)で実行されるものである。
≪ステップS10≫
ステップS10においては、現在の制御周期におけるスタック使用量の最大値を算出する。このスタック使用量の最大値が求まるとステップS11に移行する。
ステップS10においては、現在の制御周期におけるスタック使用量の最大値を算出する。このスタック使用量の最大値が求まるとステップS11に移行する。
≪ステップS11≫
ステップS11においては、前回の制御周期で演算したスタック使用量の平均値と、今回の制御周期で算出したスタック使用量の最大値を加算し、この加算値を「2」で除算して今回の平均値を算出する。この演算は、周知の移動平均法を用いて制御周期毎にスタック使用量の平均値(移動平均値)を算出しているものである。今回の平均値が求まるとステップ12に移行する。
ステップS11においては、前回の制御周期で演算したスタック使用量の平均値と、今回の制御周期で算出したスタック使用量の最大値を加算し、この加算値を「2」で除算して今回の平均値を算出する。この演算は、周知の移動平均法を用いて制御周期毎にスタック使用量の平均値(移動平均値)を算出しているものである。今回の平均値が求まるとステップ12に移行する。
≪ステップS12≫
ステップS12においては、前回の制御周期で算出した前回の平均値と今回の制御周期で算出した今回の平均値を減算して変化量を求め、求められた変化量が予め設定した変化量閾値よりも大きいか小さいかを判定する。本実施形態においては、スタック使用量の平均値の変化量は、今回の制御周期における平均値(S11)と前回の制御周期における平均値(S11)の間の差分から求められる。
ステップS12においては、前回の制御周期で算出した前回の平均値と今回の制御周期で算出した今回の平均値を減算して変化量を求め、求められた変化量が予め設定した変化量閾値よりも大きいか小さいかを判定する。本実施形態においては、スタック使用量の平均値の変化量は、今回の制御周期における平均値(S11)と前回の制御周期における平均値(S11)の間の差分から求められる。
このように、マイクロコンピュータは、平均値の変化量が変化量閾値より大きい場合に、以下に説明する他の実行モジュールの機能縮退制御を実行するように構成されている。
また、この判定は、スタック使用量の増加量の傾向を判断しており、求められた変化量が所定の変化量閾値より小さいと、スタック使用量が問題になるほど増加していないと判断してエンドに抜けて処理を終了し、逆に、求められた変化量が変化量閾値より大きいと、スタック使用量が問題になる可能性があると判断してステップS13に移行する。ここで、このステップ12において、スタック使用量が問題になる可能性があると判断されると、ステップS15に移行しても良いものである。
このように、本実施例においては、実行モジュールの制御周期毎に、RAMのスタック使用量の平均値(S11)を求め、今回の制御周期における平均値と過去の平均値の間の変化量が所定の変化量閾値より大きい(S12)と判断されると、以下に示す他の実行モジュールの機能縮退制御(S15、S16)を実行することができる。
ただ、更にスタック使用量が問題になる可能性の判断確度を高めるため、本実施形態では以下のステップS13、14の制御ステップを実行するようにしている。
≪ステップS13≫
ステップS13では、求められたスタックの変化量(=増加量)が変化量閾値より大きいという意味の増大フラグを「1」にセットする。この増大フラグは、以下のステップS14で使用される。増大フラグのセットか終了するとステップS14に移行する。
ステップS13では、求められたスタックの変化量(=増加量)が変化量閾値より大きいという意味の増大フラグを「1」にセットする。この増大フラグは、以下のステップS14で使用される。増大フラグのセットか終了するとステップS14に移行する。
≪ステップS14≫
ステップS14においては、今回の平均値が、スタック使用量として予め設定した所定の閾値よりも大きく、かつ、スタック使用量の増大度合を示す増大フラグに「1」がセットされている場合は、ステップS15に移行する。このステップS15は、通常の制御状態からスタック使用量が急増する制御状態へ切り替える制御ステップである。
ステップS14においては、今回の平均値が、スタック使用量として予め設定した所定の閾値よりも大きく、かつ、スタック使用量の増大度合を示す増大フラグに「1」がセットされている場合は、ステップS15に移行する。このステップS15は、通常の制御状態からスタック使用量が急増する制御状態へ切り替える制御ステップである。
一方、スタック使用量の今回の平均値が上述した所定の閾値より小さい場合は、スタック領域に充分な余裕があると見做される。このため、スタック領域外へのオーバーライトの可能性も小さいと判断されて、スタック使用量の増大フラグに「1」がセットされている場合であっても通常の制御状態を継続するため、ステップS18に移行する。
≪ステップS15≫
以下に説明するステップS15〜ステップS17は、必要なスタック領域を拡大するための機能縮退制御を実行する制御ステップである。
以下に説明するステップS15〜ステップS17は、必要なスタック領域を拡大するための機能縮退制御を実行する制御ステップである。
ステップS15においては、スタック使用量急増情報をセットするもので、制御機能を縮退中であるため機能回復の実施を促すと共に、機能回復に必要な動作を通知するための情報を設定する処理である。機能回復に必要な動作の特定は、スタック使用量が急増したときの制御周期に実行された実行モジュール(=制御ソフトウェア)から把握することが可能である。ソフトウェア開発段階においては、ステップS15で設定された情報を基に、予め設定するスタック領域と実行モジュールの最適化を実施することが可能である。この処理が終了するとステップS16に移行する。
このように、ステップS15においては、スタック使用量の平均値が急増した際に、平均値が急増する動作パターンと実行モジュールを特定して警告を報知することができる。このため、ソフトウェア開発時のテスト工程にてスタック領域外へのオーバーライトの発生の有無を動的テストにて検知できるため、予め静的に設定したスタック領域の最適化が可能となる。また、量産後においては、警告を受けると機能縮退に至る特定の動作パターンを知ることが可能となるため、ユーザー自ら機能回復を実施することが可能となる。
本実施形態ではスタック使用量の平均値が急増した際に、平均値が急増する動作パターンと実行モジュールを特定して報知(S15)することができる。
このように、マイクロコンピュータは、変化量が前記変化量閾値よりも大きい閾値を超えた場合に、RAMのスタック使用量の変化と行モジュールを特定して報知するように構成されている。
≪ステップS16≫
ステップS16においては、スタック領域外へのオーバーライトの発生を回避するため、機能縮退要求情報をセットする。機能縮退要求情報がセットされた次の制御周期では、機能毎に予め設定した優先順位に基づいて、機能縮退を実行する他のモジュール(=制御ソフトウェア)を特定する。機能縮退する他のモジュールが特定されるとステップS17に移行する。
ステップS16においては、スタック領域外へのオーバーライトの発生を回避するため、機能縮退要求情報をセットする。機能縮退要求情報がセットされた次の制御周期では、機能毎に予め設定した優先順位に基づいて、機能縮退を実行する他のモジュール(=制御ソフトウェア)を特定する。機能縮退する他のモジュールが特定されるとステップS17に移行する。
このように、ステップS16においては、機能縮退する他の実行モジュールのRAM領域をスタック領域の下端あるいは上端に配置し、機能縮退制御では、そのRAM領域をスタック領域として拡張するものである。このため、予め設定したスタック領域の領域外へのオーバーライトが発生しても、機能縮退制御においては、未使用RAM領域への書き込みとなるため、メモリ破壊によるプログラムの暴走を回避することが可能となる。
本実施形態ではスタック使用量の平均値の変化量が所定の変化量閾値より大きいと判断され、かつ、今回の制御周期におけるスタック使用量の平均値が所定の閾値より大きい(S14)と判断されると、他の実行モジュールの機能縮退制御(S15、S16)を実行する。
このように、マイクロコンピュータは、変化量が変化量閾値より大きい場合で、かつ、ある期間における制御周期毎のRAMのスタック使用量の平均値が所定の閾値より大きい場合に、機能縮退制御を実行するように構成されている。
≪ステップS17≫
ステップS17においては、記憶用スタック情報をセットするもので、スタック使用量が急増したことにより機能縮退制御を実施した状態を、マイクロコンピュータ内部や周辺機器の記憶装置へ保存するための処理である。保存する情報としては、機能縮退制御が必要と判定されたときのスタック使用量の平均値と変化量(=増加量)、機能縮退された実行モジュール(=制御ソフトウェア)などを設定する。
ステップS17においては、記憶用スタック情報をセットするもので、スタック使用量が急増したことにより機能縮退制御を実施した状態を、マイクロコンピュータ内部や周辺機器の記憶装置へ保存するための処理である。保存する情報としては、機能縮退制御が必要と判定されたときのスタック使用量の平均値と変化量(=増加量)、機能縮退された実行モジュール(=制御ソフトウェア)などを設定する。
また必要に応じて、アクセル開度やブレーキなどのユーザの操作や、車速やエンジン回転などの車両状態を設定しても良い。車両において変速ショックなどの不具合に対して、保存されたデータを解析すれば、スタック使用量の増大傾向等の観点から不具合の解析が実施可能となる。
このように、ステップS17においては、スタック使用量の平均値と、機能縮退に至った動作パターンや実行モジュールを、車両用制御装置のシャットダウン時にマイクロコンピュータや周辺機器の記憶装置へ保存するものである。これによれば、車両走行中に発生した変速ショックなどの不具合に対して、スタック使用量の増加傾向の観点から、その不具合の原因解析が可能となる。また、スタック使用量の変化量(増加量)を保存することで、より精度の高い縮退制御の実施判定が可能となる。
本実施形態によれば、スタック使用量の平均値と、機能縮退に至った動作パターンと、実行モジュールを、マイクロコンピュータの電源を遮断するシャットダウン時にマイクロコンピュータや周辺機器の記憶装置のいずれかに保存(S17)することができる。
このように、マイクロコンピュータは、機能縮退制御に至るまでの制御周期毎のRAMのスタック使用量の平均値、及び実行モジュールを、マイクロコンピュータの電源を遮断する場合に、マイクロコンピュータ、或いは周辺機器の記憶装置へ保存するように構成されている。
≪ステップS18≫、≪ステップS19≫
ステップS14において、スタック使用量の増大度合を示す増大フラグに「1」がセットされていても、今回の平均値が予め設定したスタック使用量の所定の閾値よりも十分小さいと判断されているので、ステップS18、及びステップS19においては、スタック領域外へのオーバーライトの発生の可能性が小さいので、通常状態の処理を行なうため、機能縮退に関連する情報を全てクリアする。
ステップS14において、スタック使用量の増大度合を示す増大フラグに「1」がセットされていても、今回の平均値が予め設定したスタック使用量の所定の閾値よりも十分小さいと判断されているので、ステップS18、及びステップS19においては、スタック領域外へのオーバーライトの発生の可能性が小さいので、通常状態の処理を行なうため、機能縮退に関連する情報を全てクリアする。
以上で説明したフローチャートによる制御ステップが、制御ソフトウェアの終期で、しかも制御周期毎に実行される。これによって、スタック使用量の増大傾向を把握して機能縮退制御を実行することにより、必要とされるスタック領域を確保できプログラムの暴走を未然に回避することが可能となる。
次に、図3を参照して、機能縮退したときのスタック領域の拡張方法を説明する。図3において、通常時のスタック領域は、メモリアドレス「0000」から「XXXX−1」までの範囲であり、メモリアドレス「0000」から順にメモリ退避する場合のメモリマップを示したものである。
機能縮退するために、機能縮退時に実行しないモジュールについて予め優先順位を設定しておく。この場合、モジュール1 > モジュール2 >……モジュールXのように隣接して優先順位が付されている。そして、スタック領域にオーバライトの恐れがあると判断されて機能縮退が必要と判定されたときに、上述した優先順位に基づいて実行モジュールを特定することで、特定された実行モジュールのスタック使用量を抑制する。つまり、機能縮退することによって必要とされるスタック領域に隣接するRAM領域の空きが増大し、このRAM領域の空きを必要とするスタック領域に拡大するものである。
ここで、機能縮退される実行モジュールのRAM領域は使用されることがないため、スタック領域として利用してもRAM破壊によるプログラムの暴走は発生しない。したがって、図3のように機能縮退される優先順位が高いモジュールのRAM領域203やRAM領域204を、スタック領域に隣接する上端(アドレスXXXX)に設定することで、仮に既存のスタック領域202に対してオーバーライトが発生する状態であっても、書き込まれる領域が機能縮退されている実行モジュールのRAM領域203、204であるため、プログラムの暴走を回避することが可能となる。尚、図3で機能縮退された実行モジュールのRAM領域はスタック領域の上端に設定したが、スタック処理の手法によってはスタック領域の下端に設定することも可能である。
このように、本実施形態では、機能縮退される他の実行モジュールのRAM領域(203、204)をスタック領域(202)の下端あるいは上端に配置し、機能縮退される他の実行モジュールのRAM領域をスタック領域として拡張することができる。
このように、本実施形態では、実行モジュールのある期間における制御周期毎のRAMのスタック使用量の平均値と、ある期間より前の前期間における制御周期毎のRAMのスタック使用量の平均値との間の変化量が所定の変化量閾値より大きい場合に、機能縮退制御を実行するマイクロコンピュータを備えた構成とした。
ここで、機能縮退される実行モジュールの例として、機能縮退される優先順位にしたがって、診断機能、通信機能、変速機能等を設定するすることができ、診断機能では診断の停止を行ない、通信機能では通信頻度の抑制を行ない、変速機制御では変速位置を固定値にセットするいった機能縮退を実行することができる。したがって、この機能縮退によって、使用されないRAM領域をスタック領域として拡張することができる。
次に図4を参照して、スタック使用量とその平均値からスタック使用量の増加傾向を把握する例を説明する。図4の縦軸はスタック使用量を示し、横軸は制御周期毎の制御ソフトウェアの実行順序を示している。例えば、10ms毎に実行される制御ソフトウェアのスタック使用量の変化を示している。尚、折れ線は、スタック使用量の移動平均値を示している。
区間301では、制御周期0から12の間で、スタック使用量の平均値は、緩やかに増加傾向であることが分かる。この区間301では、スタック使用量の平均値は増加傾向の状態であるが、その使用量の平均値は十分小さいので、区間301でスタック使用量が急激に増加しても、スタック領域外へのオーバーライトが発生する可能性が十分小さいため、機能縮退制御を実施する必要はないと判断できる。
ここで、スタック領域にオーバーライトが発生しないことを判定するために、スタック使用量の閾値を所定値に設定する必要がある。この所定の閾値の設定は、スタック使用量の増加量を、スタック領域のサイズから減算すれば良いものである。また、スタック使用量の変化量閾値は、静的に見積もった値を初期値として設定するが、図2のステップS17で保存した増加量を設定すれば、動的に設定することが可能である。
また、オーバーライトの発生をより確実に回避するために、変化量閾値に所定の値を加算してマージンを持たせるようにしても良い。また、車両用制御装置をシャットダウンする時に動的に設定された変化量閾値を記憶装置に保存し、次回の起動時に保存した変化量閾値を読み出すことで、より正確にオーバーライトの発生を未然に回避することが可能となる。
また、区間303の制御周期40から50の間では、スタック使用量は一定の増加傾向にあることが分かる。この区間303においても、区間301と同様にスタック使用量が急激に増加しても、スタック領域外へのオーバーライトが発生する可能性は十分小さいため、機能縮退制御を実施する必要はないと判断できる。
一方、区間302の制御周期21から33の間では、スタック使用量が高い状態で継続している状態であり、このときに、スタック使用量の平均値の変化量が変化量閾値を超えるだけの制御処理が実行されれば、スタック領域へのオーバーライトが発生してしまうことが推測できる。したがって、区間302の状態は、スタック領域へのオーバーライトが発生する可能性が極めて高く、機能縮退制御の実施が必要であると判断する。
ここで、区間302の直前の制御周期20から直後の制御周期23のようにスタック使用量が急激に増加する場合、平均値の変化量も大きくなるため、その後の制御周期において、スタック使用量が大きくなることが予測できる。このため、予め決定しておいた優先順位の低い実行モジュールを停止することで、スタック使用量の増加に対応することができ、スタック領域へのオーバーライトの発生を未然に回避することが可能となる。
以上述べた通り、本発明によれば、実行モジュールの制御周期毎に、RAMのスタック使用量の平均値を求め、今回の制御周期における平均値と過去の平均値の間の変化量が所定の変化量閾値より大きいと判断されると、他の実行モジュールの機能縮退制御を実行するものである。
これによれば、スタック使用量の平均値の推移に基づいてスタック使用量の変動傾向(増加傾向)を把握することで、スタック領域外へのオーバーライトを予測する共に、機能縮退制御を実行することで、必要とされるスタック領域を拡大するのでプログラムの暴走を未然に回避することができる。
尚、本発明は、上述した実施例に限定するものではなく、様々な変形例が含まれる。例えば、上述した実施例は本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定するものではない。またある実施例の構成の一手段を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一手段について、他の構成の追加、削除、置換をすることが可能である。
10…自動車、11…エンジン、12…トルクコンバータ、13…変速機、14…始動装置、15…発電装置、16…電源、17…クランク軸、18…信号プレート、19…クランク角センサ、20…エンジンC/U、21…インテークマニホールド、22…スロットルバルブ、23…エアフロセンサ、24…エアクリーナ、25…アクセルペダルセンサ、26…変速機C/U、27…ギヤシフトレバー、28…ギヤレンジセンサ、29…差動機構、30…クラッチ機構、31…ACCC/U、32…外界認識装置、33…ACC制御用CPU、34…ESC制御用ユニット・アクチュエータ、35…ブレーキペダル、36…ブレーキキャリパ、37…ブレーキディスク、38…駆動輪。
Claims (6)
- 車両用制御装置であって、
実行モジュールのある期間における制御周期毎のRAMのスタック使用量の平均値と、前記期間より前の前期間における制御周期毎の前記RAMのスタック使用量の平均値との間の変化量が所定の変化量閾値より大きい場合に、機能縮退制御を実行するマイクロコンピュータを備えた
ことを特徴とする車両用制御装置。 - 請求項1に記載の車両用制御装置であって、
前記マイクロコンピュータは、前記変化量が前記変化量閾値より大きい場合で、かつ、前記期間における制御周期毎の前記RAMのスタック使用量の平均値が所定の閾値より大きい場合に、前記機能縮退制御を実行する
ことを特徴とする車両用制御装置。 - 請求項1に記載の車両用制御装置であって、
前記マイクロコンピュータは、前記変化量が前記変化量閾値より大きい場合に、他の実行モジュールの前記機能縮退制御を実行する
ことを特徴とする車両用制御装置。 - 請求項3に記載の車両用制御装置であって、
機能縮退される前記他の実行モジュールのRAM領域を、前記実行モジュールのスタック領域の下端あるいは上端に配置し、前記マイクロコンピュータは、機能縮退される前記他の実行モジュールの前記RAM領域を前記スタック領域として拡張する
ことを特徴とする車両用制御装置。 - 請求項1〜請求項3のいずれか1項に記載の車両用制御装置であって、
前記マイクロコンピュータは、前記変化量が前記変化量閾値よりも大きい閾値を超えた場合に、前記RAMのスタック使用量の変化と前記実行モジュールを特定して報知する
ことを特徴とする車両用制御装置。 - 請求項1〜請求項3のいずれか1項に記載の車両用制御装置であって、
前記マイクロコンピュータは、前記機能縮退制御に至るまでの制御周期毎の前記RAMのスタック使用量の平均値、及び前記実行モジュールを、前記マイクロコンピュータの電源を遮断する場合に、前記マイクロコンピュータ、或いは周辺機器の記憶装置へ保存する
ことを特徴とする車両用制御装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018044136A JP2019159655A (ja) | 2018-03-12 | 2018-03-12 | 車両用制御装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018044136A JP2019159655A (ja) | 2018-03-12 | 2018-03-12 | 車両用制御装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019159655A true JP2019159655A (ja) | 2019-09-19 |
Family
ID=67993459
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018044136A Pending JP2019159655A (ja) | 2018-03-12 | 2018-03-12 | 車両用制御装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2019159655A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7414667B2 (ja) | 2020-08-27 | 2024-01-16 | 日立Astemo株式会社 | 電子制御装置 |
-
2018
- 2018-03-12 JP JP2018044136A patent/JP2019159655A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7414667B2 (ja) | 2020-08-27 | 2024-01-16 | 日立Astemo株式会社 | 電子制御装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6078859A (en) | System and method for torque based vehicle speed control | |
US9714621B2 (en) | Automatic engine control apparatus | |
JP6809408B2 (ja) | トルク監視装置および内燃機関制御システム | |
EP2666691A1 (en) | Regeneration control device, hybrid automobile, regeneration control method, and program | |
WO2002103179A1 (fr) | Dispositif et procede de commande d'arret automatique d'un moteur a combustion interne pour vehicule | |
CN104421005A (zh) | 控制机动车辆发动机的停止和启动的方法 | |
CN104989537B (zh) | 一种混合动力发动机防熄火控制方法 | |
CN102135041A (zh) | 用于内燃机的自动起动-停机系统 | |
US7970524B2 (en) | Safety concept in electronic throttle control of internal combustion engine controllers | |
CN102628417B (zh) | 用于发动机反跳的起动机控制系统和方法 | |
CN102140990A (zh) | 在内燃机转速下降期间重起内燃机的系统 | |
KR101090808B1 (ko) | 하이브리드 차량의 산소센서 모니터링장치 및 방법 | |
KR20100003392A (ko) | 하이브리드 차량의 엔진 출력토크 제어 방법 | |
CN103306833A (zh) | 发动机控制设备 | |
CN106740827B (zh) | 混合动力车辆的控制装置 | |
CN106143470B (zh) | 电源控制设备 | |
JP2019159655A (ja) | 車両用制御装置 | |
WO2019069409A1 (ja) | 車両の制御方法及び制御装置 | |
EP2396530B1 (en) | Controller of internal combustion engine | |
JP2018071389A (ja) | エンジンの自動停止装置 | |
CN106467022B (zh) | 用于确定在机动车中是否存在故障状态的方法和装置 | |
JP6595091B2 (ja) | 車両用制御装置 | |
CN109094536A (zh) | 一种车辆控制方法及装置、一种车辆 | |
CN103670733A (zh) | 用于改进发动机自动停止的方法和系统 | |
KR20130034457A (ko) | 하이브리드 차량의 산소 센서 진단 장치 및 방법 |