(57)【要約】      （修正有）【課題】中央演算装置および複数の入力回路により構成される自動車向け制御装置等の組み込み機器において、各処理が終了すべき時間である実行期限を考慮し、各処理が実行期限までに完了することを認識できる優先順位の決定方法を提供する。【解決手段】割込み制御装置１１４は、各種センサ１１２の信号から入力回路１１３を経由して割込み処理を受け付ける。受け付けた割込み処理の中から実行する処理を決定し、中央演算装置（ＣＰＵ）１１５に通知する。ＣＰＵは処理を実行し処理結果に基づいて出力回路１１６を経由して各種駆動装置１１７へ動作を指示する。【選択図】図１
2015041305.tif 000002
【特許請求の範囲】
【請求項１】
複数の割込み要因を受付け、実行する割込み処理を中央演算装置に通知する割込み制御装置であって、割込み要因を受け付けた時点における処理の実行期限を設定し、優先順位に従って割込み処理を実行した場合に実行期限までに完了しない処理を検出することができる割込み制御装置。
【請求項２】
請求項１において、優先順位に従って割込み処理を実行し、実行期限までに終わらない処理がある場合に、実行期限に基づいて処理の実行順序を決定することを特徴とする割込み制御装置。
【請求項３】
請求項１において、実行期限以内に終わらない処理を中央演算装置に通知することを特徴とする割込み制御装置。
【請求項４】
請求項１において、実行期限以内に終わらない処理が存在する場合、中止する処理を決定することを特徴とする割込み制御装置。
【請求項５】
請求項４において、中止する処理を決定する割込み制御装置であって、中止する処理の情報を中央演算装置に通知することを特徴とする割込み制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、割込み制御装置を備えた電子制御装置に関する。
【背景技術】
【０００２】
中央演算装置および複数の入力回路により構成される自動車向け制御装置等の組み込み機器においては、入力回路からの入力情報を元に割込み処理を発生させ、入力情報と同期して、モータ、アクチュエータ、ソレノイド等駆動装置への出力情報を演算する。複数の割込み処理が受け付け待ち状態にある場合の実行処理決定方法として、従来からは各割込み処理に対し優先度を設定する手法が知られているが、優先度が低い処理は、優先度がより高い処理がすべて終了するまで待ち続けなければならない。解決方法として、特許文献1では、処理の遅延が大きい処理の優先度を高く設定する優先度設定方法を提案している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2005-242467
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の優先順位を決定する方法では、各処理が終了すべき時間である実行期限を考慮しておらず、各処理が実行期限までに完了することを認識できていない。
【課題を解決するための手段】
【０００５】
複数の割込み要因を受付け、実行する割込み処理を中央演算装置に通知する割込み制御装置であって、割込み要因を受け付けた時点における処理の実行期限を設定し、優先順位に従って割込み処理を実行した場合に実行期限までに完了しない処理を検出することができる割込み制御装置である。
【発明の効果】
【０００６】
本発明により、受付待ち状態にある処理が実行期限までに完了できるか否かを認識できる。優先順位順に実行し実行期限までに完了できない場合には、実行期限までに終わらない処理を優先して実行させる、もしくは中止する処理を決定することで、実行したすべての処理を実行期限までに終了させることができる。さらに中止した処理についての情報を中央演算装置が取得し、その後の処理に使用できる。
【図面の簡単な説明】
【０００７】
【図１】電子制御装置構成図
【図２】割込み制御装置構成図
【図３】実行処理順序決定処理フローチャート
【図４】優先度順による０ｍｓ時点での割込み順序決定処理
【図５】優先度順による５ｍｓ時点での割込み順序決定処理
【図６】優先度順による１０ｍｓ時点での割込み順序決定処理
【図７】優先度順による１５ｍｓ時点での割込み順序決定処理
【図８】実行開始期限順による１５ｍｓ時点での割込み順序決定処理
【図９】優先度順による２０ｍｓ時点での割込み順序決定処理
【図１０】実行開始期限順による２０ｍｓ時点での割込み順序決定処理
【図１１】タスクＣ中止後の優先度順による２０ｍｓ時点での割込み順序決定処理
【発明を実施するための形態】
【０００８】
以下に、本発明を適用した実施例を詳細に説明する。
【実施例】
【０００９】
図１に、本発明を適用した実施例である自動車等の電子制御装置１１１を示す。割込み制御装置１１４は、各種センサ１１２の信号から入力回路１１３を経由して割込み処理を受け付ける。受け付けた割込み処理の中から実行する処理を決定し、中央演算装置（ＣＰＵ）１１５に通知する。ＣＰＵは処理を実行し処理結果に基づいて出力回路１１６を経由して各種駆動装置１１７へ動作を指示する。
【００１０】
図２に示すように、割込み制御装置１１４は、割込み受付部２２０、実行開始期限演算部２３０、時間計測部２４０、処理設定部２５０、実行処理順序決定部２６０で構成される。
【００１１】
処理設定部２５０は、優先度設定部２５１、要求発生時間設定部２５２、処理時間設定部２５３、実行期限設定部２５４、実行開始期限設定部２５５、残処理時間設定部２５６、実行開始時間設定部２５７、実行終了時間設定部２５８を、それぞれの処理ごとに備えている。
【００１２】
優先度設定部２５１、処理時間設定部２５３、実行期限設定部２５４は、電子制御装置の初期化処理時に設定する。実行期限設定部には、起動要求からの実行期限時間を設定する。
【００１３】
割込み受付部２２０は、入力回路２１０からの割込み要求を受付け、現在時間を時間計測部２４０から取得し、要求発生時間設定部２５２に設定する。また、割込み要求があったことを実行開始期限演算部２３０に送信する。実行開始期限演算部２３０は、割込み受付部２２０から演算要求を受けると、該当処理の処理時間と実行期限時間を処理設定部２５０から取得し、現在時間を時間計測部２４０から取得する。現在の時間に実行期限時間を加算した後、処理時間を除算することで実行開始期限時間を算出し実行開始期限設定部２５５に設定する。実行処理順序決定部２６０は出力をCPU２７０に行う。
実行開始期限＝要求発生時間＋実行期限−処理時間      （式１）
【００１４】
図３に実行処理順序決定処理について示す。実行処理順序決定部２６０は、優先度順実行条件３１０で優先順位順に実行した場合に、現在受け付け状態にある処理（以降、受付処理とする）がすべて実行期限内に完了するかを確認する。該当処理より優先度が高い処理がある場合には、優先度が高い処理の処理時間を総和した値に現在時間を加算し実行開始時間を算出する。実行開始時間と実行開始期限を比較し、実行開始時間が実行開始期限以内であれば、優先度順に実行することで該当処理を完了できる。すべての受付処理が優先度順に実行することで完了可能であれば、優先順位順に処理を実行する（優先度順実行処理３１１）。決定した実行開始時間は実行開始時間設定部２５７に、実行終了時間は実行終了時間設定部２５８に設定する。
実行開始時間＝現在時間＋上位優先度処理時間の総和    （式２）
実行終了時間＝実行開始時間＋処理時間                （式３）
【００１５】
但し、処理起動中に起動要求が発生した場合に、実行中の処理については、残りの処理時間（残処理時間とする）を考慮して実行開始期限を決定しなければならない。以下の式が成立した場合に、その処理は実行中である。
実行開始時間＜現在時間＜実行終了時間              （式４）
残処理時間および実行開始期限は以下のように算出し、残処理時間設定部２５６および実行開始期限設定部２５５に設定する。
残処理時間＝実行終了時間−現在時間                （式５）
実行開始期限＝要求発生時間＋実行期限−残処理時間  （式６）
【００１６】
優先順位順では、すべての受付処理が実行期限内に完了しない場合には、実行開始期限順実行条件３２０において実行開始期限に近い処理から順に起動し、すべての受付処理が実行期限内に完了するか確認する。該当処理より実行開始期限が近い処理がある場合には、実行開始期限が近い処理すべての処理時間を総和した値に現在時間を加算した結果と実行開始期限を比較し、加算結果が実行開始期限以内であれば、実行開始期限に近い処理の順に起動することで、すべての受付処理が実行開始期限順に実行できる（実行開始期限順実行処理３２１）。もし、実行開始期限が同じ処理がある場合には、優先度が高い処理を優先する。
【００１７】
優先順位順、実行開始期限順どちらで実行しても、すべての受付処理を実行期限までに完了できない場合には、中止決定処理３３１において中止する処理を決定する。１つの処理を中止しても残りの受付処理すべてを優先順位順、実行開始期限順どちらで実行しても、実行期限までに完了できない場合には更に中止する処理を決定する。実行する処理すべてが実行期限までに完了できるようになるまで処理を中止する。処理を中止したことは、ＣＰＵに通知する。ＣＰＵは中止した処理に応じた処理を実行する。
【００１８】
図４から図１０に、本発明による実施例を示す。割込み制御装置は、４つのタスク、タスクＡ、タスクＢ、タスクＣ、タスクＤの起動要求を入力回路より受け付ける。タスクＡは、優先度が４、処理時間が１[ｍｓ]、起動要求からの実行期限が３[ｍｓ]、タスクＢは、優先度が３、処理時間が２[ｍｓ]、起動要求からの実行期限が５[ｍｓ]、タスクＣは、優先度が２、処理時間が４[ｍｓ]、起動要求からの実行期限が１０[ｍｓ]、タスクＤは、優先度が１、処理時間が７[ｍｓ]、起動要求からの実行期限が２０[ｍｓ]である。優先度は、値が大きいタスクほど優先して実行することを示す。タスクＡ、タスクＢ、タスクＣ、タスクＤのすべての起動要求が発生した場合には、タスクＡ、タスクＢ、タスクＣ、タスクＤの順に実行する。処理時間は、タスクの実行を開始してから終了するまでの時間であり、起動要求からの実行期限は、起動要求があった時点からタスクが終了するまでの期限である。タスクの起動要求発生時期は、タスクＡが５[ｍｓ]間隔、タスクＢが１０[ｍｓ]間隔、タスクＣが１５[ｍｓ]間隔、タスクＤが３０[ｍｓ]間隔である。
【００１９】
図４は、０[ｍｓ]時点での優先度順による割込み順決定処理を示している。０[ｍｓ]時点では、タスクＡ、タスクＢ、タスクＣ、タスクＤのすべての起動要求が発生している。割込み制御装置は、まず割込み順に実行処理を決定する。タスクＡは、起動要求からの実行期限が３[ｍｓ]であり、処理時間が１[ｍｓ]であるため、（式１）により実行開始期限は２[ｍｓ]時点となる。
タスクＡ実行開始期限    ＝要求発生時間＋実行期限−処理時間
＝０＋３−１
＝２[ｍｓ]時点
タスクＡの実行開始時間は、（式２）により現在時間０[ｍｓ]時点、タスクＡより優先度が高い処理は無いため上位優先度処理時間の総和０[ｍｓ]であるため、（式２）により０[ｍｓ]時点となり、実行開始期限より早く実行開始できるため、実行期限までにタスクＡは完了する。
タスクＡ実行開始時間    ＝現在時間＋上位優先度処理時間の総和
＝０＋０
＝０[ｍｓ]時点
【００２０】
タスクＢは、起動要求からの実行期限が５[ｍｓ]であり、処理時間が２[ｍｓ]であるため、（式１）により実行開始期限は３[ｍｓ]時点となる。
タスクＢ実行開始期限    ＝要求発生時間＋実行期限−処理時間
＝０＋５−２
＝３[ｍｓ]時点
タスクＢより優先度が高い処理はタスクＡであり、（式２）によりタスクＢの実行開始時間は、１[ｍｓ]時点となる。
タスクＢ実行開始時間    ＝現在時間＋タスクＡ処理時間
＝０＋１
＝１[ｍｓ]時点
タスクＢ実行開始期限とタスクＢ実行開始時間を比較すると、
タスクＢ実行開始期限＞タスクＢ実行開始時間
であるため、実行期限までにタスクＢは完了する。
【００２１】
同様に、タスクＣは実行開始期限が６[ｍｓ]時点、実行開始時間が３[ｍｓ]時点となり、タスクＤは実行開始期限が１３[ｍｓ]時点、実行開始時間が７[ｍｓ]時点となり、タスクＣ、タスクＤも実行期限までに完了する。すべての受付待ち状態にあるタスクが実行期限までに完了すると判断できるため、割込み制御装置はそれぞれのタスクの実行開始時間設定部に実行開始時間を設定し、終了時間設定部に実行終了時間を設定し、優先度順にタスク要求を中央処理装置に送信する。
【００２２】
図５は、５[ｍｓ]時点での優先度順による割込み順決定処理を示している。５[ｍｓ]時点では、タスクＡの起動要求が発生しており、割込み制御装置は再度割込み順決定処理を実施する。
【００２３】
タスクＡは、現在時間は５[ｍｓ]時点、起動要求からの実行期限が３[ｍｓ]であり、処理時間が１[ｍｓ]であるため、（式１）により実行開始期限は７[ｍｓ]時点となる。タスクＡは最も優先度が高く、実行中であるタスクＣを中断し、タスクＡを実行するため、（式２）により実行開始時間は５[ｍｓ]となり、実行開始期限より前に開始できる。
【００２４】
タスクＢは、現在時間が実行終了時間を過ぎていることから実行が終了していることが分かるため、割り込み順決定処理の対象外となる。
【００２５】
タスクＣは、現在時間が実行開始時間を過ぎており、実行終了時間には至っていないことから（式４）により実行中であると判断し、残処理時間および実行開始期限を（式５）および（式６）により算出する。
タスクＣ残処理時間    ＝実行終了時間−現在時間
＝７−５
＝２[ｍｓ]
タスクＣ実行開始期限    ＝要求発生時間＋実行期限−残処理時間
＝０＋１０−２
＝８[ｍｓ]時点
タスクＣより優先度が高い処理はタスクＡであり、タスクＣ実行開始時間は（式２）により６[ｍｓ]時点となるため、実行開始期限より早く開始できる。
【００２６】
タスクＤは、現在時間が実行開始時間に到達していないことから未実行であると判断するため、実行期限は０[ｍｓ]時点から変わらないが、実行開始時間と実行終了時間にはタスクＡ処理時間を加算し、実行開始時間は８[ｍｓ]時点、実行終了時間は１５[ｍｓ]時点となる。タスクＤも実行開始期限１３[ｍｓ]時点より先に開始できるため、すべてのタスクを優先度順に実行する。
【００２７】
図６は、１０[ｍｓ]時点での優先度順による割込み順決定処理を示している。１０[ｍｓ]時点では、タスクＡ、タスクＢの起動要求が発生している。割込み制御装置は再度割込み順決定処理を実施する。
【００２８】
タスクＡは、現在時間は１０[ｍｓ]時点、起動要求からの実行期限が３[ｍｓ]であり、処理時間が１[ｍｓ]であるため、実行開始期限は１２[ｍｓ]時点となる。タスクＡは最も優先度が高く、実行中であるタスクＤを中断し、タスクＡを実行するため、実行開始時間は５[ｍｓ]となり、実行開始期限より前に開始できる。
【００２９】
タスクＢは、起動要求からの実行期限が５[ｍｓ]であり、処理時間が２[ｍｓ]であるため、実行開始期限は１３[ｍｓ]時点となる。タスクＢより優先度が高い処理はタスクＡであり、実行開始時間は１１[ｍｓ]時点となるため、実行開始期限より前に開始できる。
【００３０】
タスクＣは、現在時間が実行終了時間を過ぎているため、実行完了していると判断できる。
【００３１】
タスクＤは、現在時間が実行開始時間を過ぎており、実行終了時間には至っていないことから（式４）により実行中であると判断し、（式５）により残処理時間を算出し、（式６）により実行開始期限を算出する。
タスクＤ残処理時間    ＝実行終了時間−現在時間
＝１５−１０
＝５[ｍｓ]
タスクＤ実行開始期限    ＝要求発生時間＋実行期限−残処理時間
＝０＋２０−５
＝１５[ｍｓ]時点
タスクＤより優先度が高い処理は、タスクＡとタスクＢでありタスクＤ実行開始時間は１３[ｍｓ]時点となるため、実行開始期限より早く開始でき、すべてのタスクを優先度順に実行する。
【００３２】
図７は、１５[ｍｓ]時点での優先度順による割込み順決定処理を示している。１５[ｍｓ]時点では、タスクＡ、タスクＣの起動要求が発生している。割込み制御装置は再度割込み順決定処理を実施する。
【００３３】
タスクＡは、現在時間は１５[ｍｓ]時点、起動要求からの実行期限が３[ｍｓ]であり、処理時間が１[ｍｓ]であるため、実行開始期限は１７[ｍｓ]時点となる。タスクＡは最も優先度が高く、実行中であるタスクＤを中断し、タスクＡを実行するため、実行開始時間は１５[ｍｓ]となり、実行開始期限より前に開始できる。
【００３４】
タスクＢは、現在時間１５[ｍｓ]時点が実行終了時間１３[ｍｓ]時点を過ぎていることから実行が終了していることが分かるため、割り込み順決定処理の対象外となる。
【００３５】
タスクＣは、起動要求からの実行期限が１０[ｍｓ]であり、処理時間が４[ｍｓ]であるため、実行開始期限は２１[ｍｓ]時点となる。タスクＣより優先度が高い処理はタスクＢであり、実行開始時間は１６[ｍｓ]時点となるため、実行開始期限より前に開始できる。
【００３６】
タスクＤは、現在時間１５[ｍｓ]時点が実行開始時間１３[ｍｓ]時点を過ぎており、実行終了時間１８[ｍｓ]時点に至っていないことから（式４）により実行中であると判断し、（式５）により残処理時間を算出し、（式６）により実行開始期限を算出する。
タスクＤ残処理時間    ＝実行終了時間−現在時間
＝１８−１５
＝３[ｍｓ]
タスクＤ実行開始期限    ＝要求発生時間＋実行期限−残処理時間
＝０＋２０−３
＝１７[ｍｓ]時点
タスクＤより優先度が高い処理は、タスクＡとタスクＣであり、タスクＤ実行開始時間は２０[ｍｓ]時点となり、実行開始期限を過ぎてしまうため実行期限までに終了できない。優先度順での割込み順決定は不可能であると判断し、図３に従い実行開始期限順実行条件３２０において実行開始期限順での割込み順決定を行う。
【００３７】
図８は１５[ｍｓ]時点での実行開始期限順による割込み順決定処理を示す。それぞれのタスクの実行開始期限設定については、図７の優先度順と同様である。
【００３８】
それぞれのタスクの実行開始期限は、タスクＡが１７[ｍｓ]時点、タスクＣが２１[ｍｓ]時点、タスクＤが１７[ｍｓ]時点となる。タスクＡとタスクＤが同じであるため、優先度が高いタスクＡを先に実行する。実行順はタスクＡ、タスクＤ、タスクＣとなる。この場合、実行開始時間は、タスクＡが１５[ｍｓ]時点、タスクＤが１６[ｍｓ]時点、タスクＣが１９[ｍｓ]時点となり、全てのタスクを実行開始期限前までに開始できるため、実行開始期限順により処理を実行する。
【００３９】
図９は、２０[ｍｓ]時点での優先度順による割込み順決定処理を示している。２０[ｍｓ]時点では、タスクＡとタスクＢの起動要求が発生している。割込み制御装置は再度割込み順決定処理を実施する。
【００４０】
タスクＡは、現在時間は２０[ｍｓ]時点、起動要求からの実行期限が３[ｍｓ]であり、処理時間が１[ｍｓ]であるため、実行開始期限は２２[ｍｓ]時点となる。タスクＡは最も優先度が高く、実行中であるタスクＣを中断し、タスクＡを実行するため、実行開始時間は２０[ｍｓ]となり、実行開始期限より前に開始できる。
【００４１】
タスクＢは、起動要求からの実行期限が５[ｍｓ]であり、処理時間が２[ｍｓ]であるため、実行開始期限は２３[ｍｓ]時点となる。タスクＢより優先度が高い処理はタスクＡであり、実行開始時間は２１[ｍｓ]時点となるため、実行開始期限より前に開始できる。
【００４２】
タスクＣは、現在時間が実行開始時間を過ぎており、実行終了時間には至っていないことから（式４）により実行中であると判断し、（式５）により残処理時間を算出し、
（式６）により実行開始期限を算出する。
タスクＣ残処理時間    ＝実行終了時間−現在時間
＝２３−２０
＝３[ｍｓ]
タスクＣ実行開始期限    ＝要求発生時間＋実行期限−残処理時間
＝１５＋１０−３
＝２２[ｍｓ]時点
【００４３】
タスクＣより優先度が高い処理は、タスクＡとタスクＢであり、タスクＤ実行開始時間は２３[ｍｓ]時点となるため、実行開始期限を過ぎてしまい、実行期限までに終了できない。優先度順での割込み順決定は不可能であると判断し、図３に従い条件３０１において実行開始期限順での割込み順決定を行う。
【００４４】
図１０は、２０[ｍｓ]時点での実行開始期限順による割込み順決定処理を示す。それぞれのタスクの実行開始期限設定については、図９の優先度順と同様であり、それぞれのタスクの実行開始期限は、タスクＡが２２[ｍｓ]時点、タスクＢが２３[ｍｓ]時点、タスクＣが２２[ｍｓ]時点となる。タスクＡとタスクＣが同じであるため、優先度が高いタスクＡを先に実行する。実行順はタスクＡ、タスクＣ、タスクＢとなる。この場合、実行開始時間は、タスクＡが２０[ｍｓ]時点、タスクＣが２１[ｍｓ]時点、タスクＢが２４[ｍｓ]時点となる。タスクＢが、実行開始期限までに開始できない。
【００４５】
優先順と実行開始期限順どちらの場合も、すべてのタスクを実行期限までに完了できない。この場合には、中止決定処理３３１により優先度が最も低いタスクＣを中止する。
【００４６】
図１１は、２０[ｍｓ]時点でのタスクＣ中止後の優先度順による割込み順決定処理を示す。それぞれのタスクの実行開始期限設定については、図９の優先度順と同様であり、それぞれのタスクの実行開始期限は、タスクＡが２２[ｍｓ]時点、タスクＢが２３[ｍｓ]時点となる。タスクＡは、現在時間は２０[ｍｓ]時点、起動要求からの実行期限が３[ｍｓ]であり、処理時間が１[ｍｓ]であるため、実行開始期限は２２[ｍｓ]時点となる。タスクＡは最も優先度が高く、実行中であるタスクＣを中断し、タスクＡを実行するため、実行開始時間は２０[ｍｓ]となり、実行開始期限より前に開始できる。
【００４７】
タスクＢは、起動要求からの実行期限が５[ｍｓ]であり、処理時間が２[ｍｓ]であるため、実行開始期限は２３[ｍｓ]時点となる。タスクＢより優先度が高い処理はタスクＡであり、実行開始時間は２１[ｍｓ]時点となるため、実行開始期限より前に開始できる。
【００４８】
割り込み制御装置は、タスクＣを中止するため、タスクＣ中止情報をＣＰＵに送信する。ＣＰＵはタスクＣ中止情報を得ることで、タスクＣ中止に対応した処理を実行できる。
【００４９】
ここでは、タスクＣを中止する方法について説明したが、タスクＣを中止せずに実行期限より遅れても実行し、実行期限より遅れている情報を中央演算装置に送信するようにしてもよい。
【符号の説明】
【００５０】
１１１…電子制御装置
１１２…各種センサ
１１３…入力回路
１１４…割込み制御装置
１１５…中央演算装置（ＣＰＵ）
１１６…出力回路
１１７…各種駆動装置
２１０…入力回路
２２０…割込み受付部
２３０…実行開始期限演算部
２４０…時間計測部
２５０…処理設定部
２５１…優先度設定部
２５２…要求発生時間設定部
２５３…処理時間設定部
２５４…実行期限設定部
２５５…実行開始期限設定部
２５６…残処理時間設定部
２５７…実行開始時間設定部
２５８…実行終了時間設定部
２６０…実行処理順序決定部
２７０…ＣＰＵ
３１０…優先度順実行条件
３１１…優先度順実行処理
３２０…実行開始期限順実行条件
３２１…実行開始期限順実行処理
３３１…中止決定処理
【図１】
2015041305.tif 000003
【図２】
2015041305.tif 000004
【図３】
2015041305.tif 000005
【図４】
2015041305.tif 000006
【図５】
2015041305.tif 000007
【図６】
2015041305.tif 000008
【図７】
2015041305.tif 000009
【図８】
2015041305.tif 000010
【図９】
2015041305.tif 000011
【図１０】
2015041305.tif 000012
【図１１】
2015041305.tif 000013