(57)【特許請求の範囲】
【請求項１】
優先順位の高い工程と、それよりも優先順位の低い工程とに分類された複数の工程が周期時間毎に実行され、前記優先順位の高い工程から順に処理されるとともに、前記優先順位の高い工程が実施された後、前記周期時間の残り時間に前記優先順位の低い工程が実行されるように構成され、
前記優先順位の低い工程は、予め分割され、前記周期時間の残り時間で、処理できる工程と処理できない工程とに分類されて、前記処理できない工程は、次回の周期時間に優先的に実行するように構成されたプログラムにより制御することを特徴とするコントロールユニット。
【請求項２】
前記周期時間の残り時間の多少に応じて、前記優先順位の低い工程のうち前記処理できない工程を、さらに処理できる工程と処理できない工程とに分割するように構成されていることを特徴とする請求項１に記載のコントロールユニット。
【請求項３】
前記優先順位の高い工程と、それよりも優先順位の低い工程との分類は、目的とする処理対象に応じて変更可能に構成されていることを特徴とする請求項１に記載のコントロールユニット。
【請求項４】
前回の前記周期時間において、前記処理できない工程がない場合には、次回の前記周期時間において、前記複数の工程の全てを順に実行し、残り時間が少なくなった場合には、前記優先順位の低い工程を実行しないように構成されていることを特徴とする請求項１の記載のコントロールユニット。
【請求項５】
前記処理できない工程が、次回の前記周期時間において、再度実行できない可能性があるか否かを調べ、処理できない可能性がある場合に限って、前記処理できない工程を最優先で実行するように構成されていることを特徴とする請求項１に記載のコントロールユニット。
【請求項６】
請求項１から請求項５のいずれか１項に記載のコントロールユニットが、車両を制御するためのＣＰＵと周辺回路とで構成され、前記ＣＰＵが起動され車両が制御されるまでの状態と、前記車両が停止し制御されていない状態と、もしくは、前記車両が制御されている状態と、が識別され、前記車両の制御状態に応じて、前記コントロールユニットにより前記複数の工程の優先順位が切り替えられることを特徴とする車両制御装置。
【請求項７】
前記コントロールユニットにおいて、前記ＣＰＵ、もしくは、前記周辺回路に故障が発生したと判断された場合には、前記複数の工程の優先順位が切り替えられることを特徴とする請求項６に記載の車両制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラム処理により制御するコントロールユニットに関するものであり、また、このコントロールユニットを用いた車両制御装置に関するものである。
【背景技術】
【０００２】
従来、例えば、車両用制御装置に搭載されたＣＰＵのプログラム処理方法では、所定の周期毎に各処理が順々に実行されるものが多く、複数の所定周期を有し、短周期、長周期に分類してそれぞれの周期において、それぞれの処理が毎回実行されるものであった。
【０００３】
例えば、特許文献１の電動パワーステアリング装置では、ＣＰＵ２２は、トルク指令生成処理２２ａおよび電流制御処理２２ｂの優先度よりも故障診断処理２２ｃの優先度を高くし、マイクロコントロールユニット２１などの故障診断処理２２ｃを所定の周期で実行しながら、トルク指令生成処理２２ａおよび電流制御処理２２ｂを故障診断処理２２ｃの合間に実行する。このように、プログラム処理内容によって優先順位を設け、電流制御処理の優先度よりも高くなるように故障診断処理の優先度を設定することで、故障診断処理がモータ電流制御にて途中で中断されるのを防止しつつ、モータ電流制御と故障診断処理とを一台の演算処理装置にて実行することが可能となる。このため、割り込みの演算にかかる負荷を増大させることなく、故障検出タイミングに遅延が発生するのを抑制することができ、大きな演算能力を浪費することなく、操舵アシスト制御の安全性を向上させることができることが開示されている。
【０００４】
また、例えば、特許文献２のモーションコントローラでは、高速シーケンス処理部４と、低速シーケンス処理部５と、低速シーケンス停止カウンタ７と、低速シーケンス処理部５を実行させるシーケンス処理スケジューラ８を有し、モータを制御するモーション制御とシーケンス演算を実行するＰＬＣ（プログラマブルロジックコントローラ）機能を１つのＣＰＵで処理するモーションコントローラ１において、ＣＰＵがモーション制御にかかる処理の負荷を演算し、負荷に応じて低速シーケンス停止カウンタ７を設定する処理負荷解析部９を備えている。これにより、ＣＰＵを最大限有効に活用し、低速シーケンス処理時間を最小にすることと非定周期モーション制御処理と、低速シーケンス処理の実行比率の調整を可能にすることが開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−３６８０６号公報
【特許文献２】特開２００７−１４０６５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１のプログラム処理方法においては、各処理に優先順位が付けられて、優先順位の最も高い処理は毎回実行され、最も優先順位の低い処理は、場合によってはスキップされ、毎回実行されないものであった。そのため、最優先処理（故障診断）が途中で中断されることはなく毎回処理されるが、故障が発生していない場合には、効率のよい方法であるとは言えないという課題があった。
【０００７】
また、特許文献２のプログラム処理方法においては、ＣＰＵ処理を高速と低速に分離し、高速処理すべき項目については、所定周期毎に毎回実行し、低速処理すべき項目については、毎回実行するのではなく、例えば、２回に１回実行するようにして、ＣＰＵのプログラム処理の効率化を図っているが、低速処理の中にもできれば高速処理することにより、制御性能を向上させることができる可能性もあり、また、所定周期でしかも高速で実行するためには、優先度の低い処理をスキップさせることも必要であるが、優先順位の低い処理については、効率のよい方法であるとは言えないという課題があった。
【０００８】
本発明は、上記の課題を解決するためになされたものであり、ＣＰＵに内蔵されたプログラム処理を所定時間内に効率よく処理するコントロールユニット及びそれを用いた車両制御装置を提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、本発明に係るコントロールユニットは、優先順位の高い工程と、それよりも優先順位の低い工程とに分類された複数の工程が周期時間毎に実行され、前記優先順位の高い工程から順に処理されるとともに、前記優先順位の高い工程が実施された後、前記周期時間の残り時間に前記優先順位の低い工程が実行されるように構成され、前記優先順位の低い工程は、予め分割され、前記周期時間の残り時間で、処理できる工程と処理できない工程とに分類されて、前記処理できない工程は、次回の周期時間に優先的に実行するように構成されたプログラムにより制御することを特徴とすることを特徴とするものである。
【００１０】
また、本発明に係る車両制御装置は、コントロールユニットが、車両を制御するためのＣＰＵと周辺回路とで構成され、前記ＣＰＵが起動され車両が制御されるまでの状態と、前記車両が停止し制御されていない状態と、もしくは、前記車両が制御されている状態と、が識別され、前記車両の制御状態に応じて、前記コントロールユニットにより前記複数の工程の優先順位が切り替えられることを特徴とするものである。
【発明の効果】
【００１１】
本発明のコントロールユニットによれば、プログラムが複数の工程から成り、複数の工程は優先順位により分類され、優先順位の高い工程から順に処理されるとともに、優先順位の低い工程はさらに複数の工程に分割され、その所定周期時間の残り時間とその工程の実行に必要な時間を比較しながら、工程の実行を行うことにより、優先度の低い処理をスキップさせることなく、プログラム処理を所定時間内に効率よく処理できる効果を発揮する。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係るＣＰＵのプログラム処理方法のフローチャートを示す図である。
【図２】実施の形態１に係るＣＰＵのプログラム処理方法における処理分類表を示す図である。
【図３】実施の形態１に係るＣＰＵのプログラム処理方法における優先順位処理のフローチャートを示す図である。
【図４】実施の形態１に係るＣＰＵのプログラム処理方法における優先順位付けのフローチャートを示す図である。
【図５】実施の形態２に係るＣＰＵのプログラム処理方法における処理分類表を示す図である。
【図６】実施の形態２に係るＣＰＵのプログラム処理方法における優先順位処理のフローチャートを示す図である。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、実施の形態１に係るＣＰＵのプログラム処理方法のフローチャートを示す図であり、図２は、処理分類表を示す図であり、図３は、優先順位処理のフローチャートを示す図であり、また、図４は、優先順位付けのフローチャートを示す図である。
【００１４】
次に、実施の形態１に係るＣＰＵのプログラム処理方法の手順について、図１に示すフローチャートを用いて説明する。ＣＰＵのプログラム処理方法は、メイン処理と割り込み処理とにより構成され、図の左側にメインフローＭＦと右側に割込みフローＩＦを示す。メインフローＭＦにおいて、電源が投入されると、まずステップＳ１にて、ＣＰＵのポートの設定、ＲＡＭのリセット等を行い、最後に割込みを許可するいわゆるＣＰＵの初期化が実行される。この説明の例では、処理される工程として、処理Ａ、処理Ｂ、処理Ｃの３つの工程に大別され、処理Ｃは、さらに処理Ｃ１〜処理Ｃ３の３つの工程に分割できるものとする。処理Ａ、処理Ｂは、毎回処理が実行されるべき優先順位の高い工程であり、処理Ｃ１〜処理Ｃ３は、処理Ａ、処理Ｂに比較して、優先順位の低い工程であるとする。メインフローＭＦにおける処理の工程は、周期時間毎にこれらの工程を順に処理し、完了するように構成されている。
【００１５】
ステップＳ２では、優先順位の高い処理Ａが実行される。例えば、車両の制御においては、車両の各種入力情報を入手し、それら情報を元に制御指令値を演算するものである。続いて、ステップＳ３では、処理Ｂが実行される。これは、例えば、処理Ａで演算した制御指令値に従って、制御信号を出力するものである。次に、処理Ａ及び処理Ｂよりは優先順位の低い処理Ｃが実行されるが、処理Ｃは、時間の制約上、場合によっては処理Ｃの全てが実行されない可能性もあるので、処理Ｃ１〜処理Ｃ３の３つの工程に分割しておく。
【００１６】
ステップＳ４では、処理Ｃ１が、ステップＳ５では、処理Ｃ２が、ステップＳ６では、処理Ｃ３がそれぞれ実行されるが、残り時間との比較により実行の有無が決定される。その詳細については、後述する図３の優先順位処理のフローチャートで説明する。また、ステップＳ７も追って説明する。次に、ステップＳ８では、時間がＴｘを経過したか否かがチェックされ、時間がＴｘを経過していなければ（Ｎ：ＮＯ）、時間がＴｘを経過するまで待機する。例えば、時間が５ｍｓｅｃを経過すれば（Ｙ：ＹＥＳ）、また、ステップＳ２へ戻って、同様な処理を続ける。従って、メインフローＭＦでは、５ｍｓｅｃ毎に各工程が毎回実行される。
【００１７】
一方、割込みフローＩＦ（ステップＳ１０〜Ｓ１３）では、所定の割込み入力、例えば、車両の制御においては、車速、エンジン回転、操縦者の操作等々の入力をトリガとするもの、または、メインフローＭＦの５ｍｓｅｃよりも高速、例えば、５００μｓｅｃで割込みが発生するものである。割込みフローＩＦでは、ステップＳ１１にて処理α、Ｓ１２にて処理βの工程が実行され、ステップＳ１３でメインフローＭＦへ戻る。図１では、便宜上、ステップＳ３とステップＳ４との間で割込みが発生しているように記載されているが、メインフローＭＦの任意の箇所で割込みは発生するものである。また、割込み処理は、メイン処理に支障をきたすことがないよう極短時間に実行できるように、できる限り少ない工程数、処理内容としている。
【００１８】
以上、図１に示すフローチャートのプログラム処理は、従来のプログラム処理と同様である。
【００１９】
次に、この発明の実施の形態１に係るＣＰＵのプログラム処理方法について、図２〜図４を用いて説明する。まず、図２は、処理Ｃ１〜処理Ｃ３の各工程をメインフローにおける時間Ｔｘ＝５ｍｓｅｃで実行できる状態で分類したものである。処理Ｃ１〜処理Ｃ３の工程における優先順位は、ほぼ同じであるとする。処理Ｃは、処理Ｃ１〜処理Ｃ３の処理状態によって、分類番号Ｎｏ．１からＮｏ．７に示す７通りに分類される。図中、〇印は実行が可能、―印は実行が不可能でスキップされることを意味し、また、その実行の可否によってその後の処理を、処理順序パターン欄に記載している。Ｎｏ．１は、Ｃ１処理〜Ｃ３処理の工程のすべてが実行されたことを示すものであり、その後の対応も同様に、全工程が次回も実行されることになり、処理順序パターン“ＰＡ１”での処理Ｃ１→処理Ｃ２→処理Ｃ３となり、この順に実行される。Ｎｏ．２〜４は、３つの処理の工程のうち１つの実行が不可能でスキップされることを示している。そのため、次回のルーチンでは、そのスキップされた工程から開始する必要があり、例えば、Ｎｏ．２では、処理Ｃ３の工程がスキップされたので、次回は、処理順序パターン“ＰＡ２”での処理Ｃ３→処理Ｃ１→処理Ｃ２の順に実行される。
【００２０】
Ｎｏ．５〜７は、３つの処理の工程のうち２つがスキップされる状態を示しており、この場合も、次回のルーチンでは、スキップされた工程から順に実行されるようになっている。例えば、Ｎｏ．５では、処理Ｃ２、処理Ｃ３の工程が共にスキップされるため、次回は、処理順序パターン“ＰＡ３”での処理Ｃ２→処理Ｃ３→処理Ｃ１の順に実行される必要がある。処理Ｃが３つの処理の工程からなる例では、以上のように、７通りの処理に分類され、その処理順序パターンは、３種類（“ＰＡ１”〜“ＰＡ３”）であることがわかる。なお、ここでは、処理Ｃ１〜処理Ｃ３の工程のうち少なくとも１つは実行されるものとしている。
【００２１】
以上のように、今回のルーチンでスキップされた工程を次回のルーチンで最初に実行するように工夫したものである。これにより、単に優先順位の低い工程を３分割して、各回それぞれ決まった工程が順に行われる場合に比較して、プログラム処理の効率化を図ることができるものである。また、優先順位の低い処理Ｃを、例えば、５０ｍｓｅｃ毎に処理Ｃ１〜処理Ｃ３の工程をすべてが実行されるプログラム処理と比較しても、その構成は単純化され、時間管理も楽である。
【００２２】
次に、上述した処理Ｃ１〜処理Ｃ３の工程の具体的処理方法について、図３に示す優先順位処理のフローチャートを用いて説明する。図３は、図１におけるステップＳ４〜Ｓ６の詳細を記載したものである。ステップＳ２０〜Ｓ２５において、前回のルーチンでどの工程が、スキップされたか否かが調べられる。ここで、処理Ｃ１の工程のスキップの有無を示すフラッグをＦ１１、処理Ｃ２の工程のスキップの有無を示すフラッグをＦ１２、処理Ｃ３の工程のスキップの有無を示すフラッグをＦ１３とする。フラッグがＨ（セット）の状態であれば、その処理がスキップされたことを意味し、Ｌ（リセット）の状態であれば、その処理が実行されていないことを意味する。まず、ステップＳ２０において、処理Ｃ１〜処理Ｃ３の各工程のスキップの有無を示したフラグがチェックされる。全部のフラグＦ１１〜Ｆ１３がＬの状態である場合には、３つの処理の工程がすべて実行されたことを意味しており（Ｙ）、この場合には、ステップＳ２６へ進む。
【００２３】
もし、いずれかのフラグが、Ｈの状態であれば、３つの処理の工程うち少なくとも１つがスキップされている（Ｎ）ので、ステップＳ２１において、フラグＦ１３が、Ｈの状態であるか否か（すなわち、処理Ｃ３の工程がスキップされているかどうか）がチェックされる。Ｈの状態になっていれば、処理Ｃ３の工程がスキップされている（Ｙ）ため、ステップＳ３５へ進む。処理Ｃ３の工程がスキップされていない（Ｎ）場合には、次のステップＳ２２において、フラグＦ１２がＨの状態であるか否か、つまり、処理Ｃ２のスキップの有無がチェックされる。
【００２４】
ステップＳ２２において、フラグＦ１２がＨの状態である場合、すなわち、処理Ｃ２の工程がスキップされている（Ｙ）場合には、ステップＳ３８へ進む。処理Ｃ２の工程がスキップされていない（Ｎ）場合には、ステップＳ２３において、フラグＦ１１がＨの状態であるか否かがチェックされる。処理Ｃ１の工程がスキップされている（Ｙ）場合には、ステップＳ２６へ進み、スキップされていない（Ｎ）場合には、ステップＳ２４へ進む。ステップＳ２４からは２つの処理の工程のスキップ状態が調べられる。ステップＳ２４において、フラグＦ１２とフラグＦ１３の両方がＨの状態であるか否かがチェックされる。両方がスキップされている（Ｙ）場合には、ステップＳ３８へ進む。両方がスキップされていない（Ｎ）場合には、ステップＳ２５へ進む。
【００２５】
ステップＳ２５においては、フラグＦ１１とフラグＦ１３の両方がＨの状態であるか否かがチェックされる。両方がスキップされている（Ｙ）場合には、ステップＳ３５へ進む。両方がスキップされていない（Ｎ）場合には、残りの処理Ｃ１と処理Ｃ２の両方の工程がスキップとなり（Ｎ）、ステップＳ３８へ進む。このように各処理の工程のスキップ状況に応じて、処理の工程の順序が決定されるものである。
【００２６】
次に、上述したスキップ状況に応じた各処理の工程と、フラグＦのＨ（セット）、Ｌ（リセット）の状態について説明する。図中、ステップＳ２６〜Ｓ３４のルーチンは、図２の処理順序パターン“ＰＡ１”の処理に対応し、同様に、ステップＳ３５〜Ｓ３７の各ルーチンは、処理順序パターン“ＰＡ２”、ステップＳ３８〜Ｓ４０の各ルーチンは、処理順序パターン“ＰＡ３”の処理に相当する。まず、スキップＳ２６では、時間が予め決められたＴ１ａを経過しているか否かがチェックされる。これは、周期Ｔｘ時間に対して、残り時間が所定時間以上あるか否かがチェックされているものと同等の処理である。時間がＴ１ａ未満（Ｎ）であれば、残り時間があるのでステップＳ２７へ進むことになる。一方、時間がＴ１ａ以上経過している（Ｙ）場合には、残り時間がないと判断され、処理Ｃ１の工程がスキップされることになる。そのため、ステップＳ２８では、フラグＦ１１がＨの状態とされるだけで、次のステップＳ２８へ進む。処理Ｃ１の工程の実行が必要と判定される（Ｎ）と、ステップＳ２７において、処理Ｃ１の工程の実行が行われると共に、スキップしないためにフラグＦ１１がＬの状態にされる。このように、残り時間がチェックされ、スキップするか、しないかが判定され、さらに、そのフラグＦも処理に合せてＨ，Ｌの状態とされるものである。
【００２７】
同様に、ステップＳ２９において、時間が予め決められたＴ２ａ以上経過しているか否かがチェックされ、時間がＴ２ａを経過している（Ｙ）場合には、スキップするため処理Ｃ２の工程のフラグＦ１２がＨの状態にされる。一方、時間がＴ２ａ未満で、残り時間がある（Ｎ）場合には、ステップＳ３０において、処理Ｃ２の工程が実行され、かつフラグＦ１２がＬの状態にされる。
【００２８】
同様に、ステップＳ３２において、処理Ｃ３の工程のスキップの有無がチェックされる。時間が予め決められたＴ３ａ以上経過している（Ｙ）場合には、ステップＳ３４でスキップするためのフラグＦ１３がＨの状態にされる。時間がＴ３ａを経過していない（Ｎ）場合には、ステップＳ３３において、処理Ｃ３の工程が実行され、フラグＦ１３がＬの状態にされる。この一連の処理ルーチンにより処理Ｃ１〜処理Ｃ３の工程についてのすべてスキップの有無と、その対応処理が実行されたことになる。
【００２９】
ステップＳ３５〜Ｓ３７では、図２の処理順序パターン“ＰＡ２”の処理のルーチンとなっている。ステップＳ３５では、時間が予め決められたＴ３ｂ以上経過しているか否かがチェックされ、時間がＴ３ｂを経過していない（Ｎ）場合には、処理Ｃ３の工程が実行され、フラグＦ１３がＬの状態にされる。一方、時間がＴ３ｂを経過している（Ｙ）場合には、フラグＦ１３がＨの状態にされ、処理Ｃ３の工程は実行されない。これらの各処理は前記の説明と同一の処理であるため、前記ステップＳ３３およびＳ３４を利用している。したがって、これらのステップは、サブルーチン化しておくと便利である。
【００３０】
ステップＳ３６においては、処理Ｃ１の工程についてチェックされているので、その状況に応じて前記ステップＳ２７またはＳ２８が実行される。同様に、ステップＳ３７においては、処理Ｃ２の工程についてチェックされ、その状況に応じて前記ステップＳ３０またはＳ３１が実行される。ここで、時間Ｔ１ａとＴ１ｂは同一の値であってもよいし、各処理の実行時間を加味して異なる値としてもよい。
【００３１】
同様に、ステップＳ３８以下では、図２の処理順序パターン“ＰＡ３”の処理のルーチンとなっており、ステップＳ３８では時間がＴ２ｃ以上経過しているか否かがチェックされる。この場合も同様に、その状況に応じて前記ステップＳ３０またはＳ３１が実行される。さらに、ステップＳ３９において、処理Ｃ３の工程についてチェックされ、前記ステップＳ３３またはＳ３４が実行される。ステップＳ４０において、処理Ｃ１の工程についてチェックされ、前記ステップＳ２７またはＳ２８が実行される。
【００３２】
以上のように、残り時間に応じて各処理の工程を実行するか否かが判断され、スキップされる場合は、スキップ用フラグがセット（Ｈ）の状態にされ、実行される場合にはフラグはリセット（Ｌ）の状態にされる。これは、フローチャートで記載すると多数の判断処理があるように見えるが、プログラム処理から見れば、予め決められたルールに沿って可否判断されているので、その処理自体は単純で、処理時間は極短時間でできるものである。これにより、無駄に時間が経過することを待つ必要もなく、プログラムの処理時間の残り時間に応じて各処理の工程を選択して実行可能なものから実行されることになり、プログラム処理の効率化を図ることができる。
【００３３】
また、処理Ｃの工程を処理Ｃ１〜処理Ｃ３の工程に３分割する方法については、種々の方法が考えられる。例えば、処理内容から分割する、ほぼ同一実行時間となるように分割する、あるいは優先度がほぼ同等となるように分割する等々の方法が考えられる。
【００３４】
また、上記説明では、処理Ｃ１〜処理Ｃ３の工程が、優先順位において、同等である場合について説明したが、処理Ｃ１〜処理Ｃ３の工程の優先度を可変にしても、前記フローチャートを利用することができる。これについて説明する。図１のステップＳ７において、優先順位の変更処理が工程の最後に挿入されているが、この詳細は図４に記載されているので、図を参照して説明する。
【００３５】
図４では、車両の制御を行う車両制御装置の場合を例にしている。ステップＳ４１では制御関数、例えば、制御デューティ（Ｄｕｔｙ）が、所定値（Ｄｕｔｙ１）以上か否かがチェックされる。制御デューティが所定値以上であれば（Ｙ）、ステップＳ４５へ進む。一方、所定値未満であれば（Ｎ）、ステップＳ４２において、車速（ＳＰＤ）が、所定値（ＳＰＤ１）以上か否かがチェックされる。車速が所定値以上であれば（Ｙ）、ステップＳ４４へ進む。一方、デューティも車速も所定値未満ならば、ステップＳ４３へ進むものである。ステップＳ４３，Ｓ４４，Ｓ４５では、それぞれ処理Ｃ１〜処理Ｃ３の工程の優先順位が変更されている。これら一連の処理では、出力制御が高速で繁忙である場合、または車速が大きい場合には、優先順位を変更するようにしたものである。
【００３６】
このように、実施の形態１に係るＣＰＵのプログラム処理方法では、プログラムの複数の工程が優先順位により分類され、優先順位の高い工程から順に処理されるとともに、優先順位の低い工程はさらに複数の工程に分割され、その所定周期の残り時間とその工程の実行に必要な時間とを比較しながら、工程の実行を行うことにより、優先度の低い工程をスキップさせることなく、プログラム処理を所定時間内に効率よく処理できる効果が得られる。
【００３７】
実施の形態２．
図５は、実施の形態２に係るＣＰＵのプログラム処理方法における処理分類表を示す図であり、図６は、その優先順位処理のフローチャートを示す図である。
実施の形態２における処理が、実施の形態１における処理と異なる点は、実施の形態１では、優先度の低い工程の処理Ｃが処理Ｃ１〜処理Ｃ３の工程に３分割されていたが、実施の形態２では、優先度の低い工程が処理Ｃ、処理Ｄの工程の２種類であり、さらに、それぞれが２分割され、処理Ｃ１、処理Ｃ２、処理Ｄ１および処理Ｄ２の合計４つの工程にから構成されている点である。なお、処理Ａ、処理Ｂの工程は、実施の形態１の場合と同様、毎回実行されるものとする。また、処理内容からこれら４つ処理の工程のうち２つの工程は必ず実行できる時間があるものとする。
【００３８】
次に、実施の形態２に係るＣＰＵのプログラム処理方法における動作について、図５および図６を参照して説明する。図５は、実施の形態１の図２と同様に、処理Ｃ１、処理Ｃ２、処理Ｄ１および処理Ｄ２の工程の各スキップ状況に分けて分類したものである。処理Ｃ１、処理Ｃ２、処理Ｄ１および処理Ｄ２の処理状態によって、分類番号Ｎｏ．１からＮｏ．１１に示す１１通りに分類される。Ｎｏ．１では、処理Ｃ１、処理Ｃ２、処理Ｄ１および処理Ｄ２の工程の全てが実行され、Ｎｏ．２〜Ｎｏ．５では、これらの処理の工程のうち１つの処理の工程のみがスキップされるものであり、Ｎｏ．６〜Ｎｏ．９では、２つの処理がスキップされるものである。ここで、処理Ｃ１の工程のスキップの有無を示すフラッグをＦ１５、処理Ｃ２の工程のスキップの有無を示すフラッグをＦ１６、処理Ｄ１の工程のスキップの有無を示すフラッグをＦ１７、処理Ｄ２の工程のスキップの有無を示すフラッグをＦ１８とする。フラッグがＨ（セット）の状態であれば、その工程がスキップされたことを意味し、Ｌ（リセット）の状態であれば、その工程が実行されたことを意味する。ここまでは、単に、実施の形態１の分割数を増やしたものにすぎないが、Ｎｏ．１０，Ｎｏ．１１については、２つの処理の工程をスキップせざるを得ない場合であるが、処理Ｃ、処理Ｄの各工程のそれぞれ１つずつをスキップしたものである。このような場合には、次回のルーチンでスキップされた工程を先に実行することが必須であり、Ｎｏ．１〜Ｎｏ．９のように巡回的に実行するわけにはいかない。
【００３９】
そこで、Ｎｏ．１０では、スキップされて処理Ｃ２、処理Ｄ２の工程が無条件に実行され、同様に、Ｎｏ．１１では、処理Ｃ１、処理Ｄ１の工程が無条件に実行されるようにしたものである。もし、巡回的にＮｏ．１０において、処理順序パターン“ＰＢ４”の処理が実行されれば、処理Ｄ２の工程が再度スキップされる可能性がある。同様に、Ｎｏ．１１において、処理順序パターン“ＰＢ１”の処理が実行されれば、処理Ｄ１が再度スキップされる可能性が出てくる。そのため、このような場合には、敢えて無条件に処理順序パターン“ＰＢ５”の処理、または、処理順序パターン“ＰＢ６”の処理が実行されるようにし、その他の処理を敢えてスキップしてでも、前回スキップされた処理が実行されるものである。
【００４０】
以上の処理について、図６のフローチャートを用いて具体的に説明する。図６の各ステップは、実施の形態１における図３の優先順位処理のフローチャートに相当するものである。まず、ステップＳ５０において、スキップを示すすべてのフラグＦ１５〜Ｆ１８がＬ（リセット）の状態であるか否かがチェックされる。Ｌの状態であれば（Ｙ）、ステップＳ６０へ進み、図５の処理順序パターン“ＰＢ１”の処理が実行される。いずれかのフラッグがＬの状態でなければ（Ｎ）、ステップＳ５１において、フラグＦ１８がセット（Ｈ）の状態であるか否かがチェックされる。フラグＦ１８がＨの状態であれば（Ｙ）、処理Ｄ２の工程のみがスキップされたことを示しているので、ステップＳ６１へ進み、処理順序パターン“ＰＢ２”の処理が実行される。
【００４１】
フラグＦ１８がＬの状態であれば、次に、ステップＳ５２において、同様に、フラグＦ１７がチェックされる。フラグＦ１７がＨの状態であれば（Ｙ）、ステップＳ６２へ進み、処理順序パターン“ＰＢ３”の処理が実行される。フラグＦ１７がＬの状態であれば（Ｎ）、ステップＳ５３において、フラグＦ１６がチェックされる。フラグＦ１６がＨの状態であれば（Ｙ）、ステップＳ６３へ進み、処理順序パターン“ＰＢ４”の処理が実行される。フラグＦ１６がＬの状態であれば（Ｎ）、ステップＳ５４において、フラグＦ１５がチェックされる。フラグＦ１５がＨの状態であれば（Ｙ）、ステップＳ６０へ進み、処理順序パターン“ＰＢ１”の処理が実行される。フラグＦ１５がＬの状態であれば（Ｎ）、次に、ステップＳ５５において、フラグＦ１７，Ｆ１８の両方がＨの状態であるか否かがチェックされる。フラグＦ１７，Ｆ１８の両方がＨの状態であれば（Ｙ）、処理Ｄ１、処理Ｄ２の工程の両方がスキップされたことを示しているため、ステップＳ６２へ進み、処理順序パターン“ＰＢ３”の処理が実行される。
【００４２】
フラグＦ１７，Ｆ１８のいずれかがＬの状態であれば（Ｎ）、ステップＳ５６において、同様に、フラグＦ１６とフラグＦ１７がチェックされる。フラグＦ１６とフラグＦ１７の両方がＨの状態であれば（Ｙ）、ステップＳ６３へ進み、処理順序パターン“ＰＢ４”の処理が実行される。フラグＦ１６，Ｆ１７のいずれかがＬの状態であれば（Ｎ）、ステップＳ５７において、フラグＦ１５とフラグＦ１８がチェックされる。フラグＦ１５とフラグＦ１８の両方がＨの状態であれば（Ｙ）、ステップＳ６１へ進み、処理順序パターン“ＰＢ２”の処理が実行される。フラグＦ１５，Ｆ１８のいずれかがＬの状態であれば（Ｎ）、ステップＳ５８において、フラグＦ１５とフラグＦ１６がチェックされる。フラグＦ１５とフラグＦ１６の両方がＨの状態であれば（Ｙ）、ステップＳ６０へ進み、処理順序パターン“ＰＢ１”の処理が実行される。
【００４３】
フラグＦ１５とフラグＦ１６のいずれかがＬの状態であれば（Ｎ）、ステップＳ５９において、フラグＦ１６とフラグＦ１８がチェックされる。フラグＦ１６とフラグＦ１８の両方がＨの状態であれば（Ｙ）、ステップＳ６４へ進む。フラグＦ１６とフラグＦ１８のいずれかがＬの状態であれば（Ｎ）、最後のフラグの組合せとなるので、ステップＳ６６へ進む。ステップＳ６４，Ｓ６５は、図５の処理順序パターン“ＰＢ５”の処理を示している。ここでは、前回スキップされた処理Ｃ２、処理Ｄ２の工程が無条件に実行されることを意味している。従って、ＣＰＵの残りの時間をチェックすることなく、ステップＳ６４で処理Ｃ２の工程が実行され、さらに、フラグＦ１６がＬの状態にされる。また、ステップＳ６５では、処理Ｄ２の工程が実行されるとともにフラグＦ１８がＬの状態にされる。
【００４４】
一方、ステップＳ６６，Ｓ６７は、図５の処理順序パターン“ＰＢ６”の処理を示しており、ここでも時間に関係なく、ステップＳ６６において、処理Ｃ１の工程が実行されるとともにフラグＦ１５がＬの状態にされる。ステップＳ６７において、処理Ｄ１の工程が実行されるとともにフラグＦ１７がＬの状態にされる。これらのステップＳ６４〜Ｓ６７は、その他の処理の工程が実行されないで終了される。
【００４５】
なお、ステップＳ６０〜Ｓ６３においては、残り時間がチェックされ、時間がある場合には、各工程の処理が実行され、フラグもＬの状態にされる。一方、残り時間がない場合には、その工程がスキップされるためにフラグがＨの状態にされ、次へ進む各ルーチンを示しているが、この処理ルーチンは、実施の形態１における図２と同様であるので詳細な説明を省略する。
【００４６】
このように、実施の形態２に係るＣＰＵのプログラム処理方法では、工程のスキップの状況に応じて、次回のルーチンでは、スキップされる工程を優先的に実行されるように優先順位が変更され、また、残り時間を考慮して各工程が実行されるか否かがチェックされているので、プログラム処理の効率化を図ることができる。また、特殊な処理により工程がスキップされた場合には、次回は無条件にそのスキップされた工程のみが実行され、特殊な処理の工程のスキップのルーチンが終了され、初期化されるように作用するので、後
々の処理に影響が及ばないようにすることができる。
【００４７】
なお、上記実施の形態のいずれにおいても優先順位の高い処理Ａ，Ｂの工程が毎回実行されており、その他の優先順位の低い工程をいかに効率よく実行するかについて説明した。しかし、例えば、ＣＰＵと結合され、車両を制御するための周辺回路とで構成されるコントロールユニットを有する車両制御装置において、図４に示すように車両の状況、制御状況に応じて、処理Ａ，Ｂの工程も含めてすべての処理の工程の優先順位を見直し、見直された優先順位に基づいて、同様に、残り時間を考慮しながら実行する方法も可能である。実施の形態１においては、処理Ａの工程は、制御指令値演算、処理Ｂの工程は、その出力制御であるが、例えば、車両が停車し、エンジンも停止しているような状態や、操縦者が車両のイグニッションスイッチをオフの状態からオンの状態に切り替え、エンジンが始動して、車両が走行し、車両が制御されるまでの状態では、処理Ａ，Ｂの工程も優先順位が低いこともあり得る。このような状況では、処理Ａ，Ｂの工程を毎回実行する必要もなく、また、このような場合であれば、その他の処理の工程も含めて実行できるものから順に実行することが可能である。そのため、車両の制御状態に応じて、コントロールユニットにより全処理の工程を含めて優先順位を変更することも有効である。
【００４８】
また、車両の制御状態において、何らかの理由によりＣＰＵ内に故障が検出された場合、もしくは、車両を制御するためのセンサなどの入力装置や、車両を制御するためのアクチュエータなどの駆動装置に異常が検出され、制御困難となった場合においては、処理Ａ，Ｂを毎回実施する必要もなくなる。このため、故障の状況に応じて、コントロールユニットにより全処理の工程を含め、優先順位を変更することも有効である。
【００４９】
また、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略したりすることが可能である。
【００５０】
また、図において、同一符号は、同一または相当部分を示す。
【符号の説明】
【００５１】
ＭＦ  メインフロー、ＩＦ  割込みフロー。
【図１】
0005881753.tif 000002
【図２】
0005881753.tif 000003
【図３】
0005881753.tif 000004
【図４】
0005881753.tif 000005
【図５】
0005881753.tif 000006
【図６】
0005881753.tif 000007