(57)【要約】【課題】周期的に実行される処理において、処理が周期を超えて遅延することを未然に回避することが可能な車両用制御装置を提供する。【解決手段】車両用制御装置１０は、周期毎に複数の処理を順次実行する演算手段２２と、各周期が終了する前に通知を行う通知手段２６と、各周期において、前記通知手段２６から通知を受けた時に前記複数の処理のうちの未実行の処理を中止させる処理制御手段２２とを備える。【選択図】  図１
2016113968.tif 000002
【特許請求の範囲】
【請求項１】
周期毎に複数の処理を順次実行する演算手段と、
各周期が終了する前に通知を行う通知手段と、
各周期において、前記通知手段から通知を受けた時に前記複数の処理のうちの未実行の処理を中止させる処理制御手段と、
を備える車両用制御装置。
【請求項２】
前記処理制御手段は、前記未実行の処理を中止させるとともに、次の周期において前記未実行の処理のみを実行させる、請求項１に記載の車両用制御装置。
【請求項３】
前記複数の処理は、各処理に与えられた番号の順に従って実行され、
前記処理制御手段は、前記通知手段から通知を受けた時に実行中の処理の前記番号を記憶し、前記実行中の処理の前記番号より後の番号の処理を中止させることによって、前記未実行の処理を中止させる、請求項１又は２に記載の車両用制御装置。
【請求項４】
前記処理制御手段は、次の周期において前記実行中の処理の前記番号以前の番号の処理を中止させることによって、前記未実行の処理のみを実行させる、請求項３に記載の車両用制御装置。
【請求項５】
前記通知手段は、各周期の開始から所定の時間が経過した時にタイマ割り込みによって通知を行う、請求項１乃至４のいずれかに記載の車両用制御装置。
【請求項６】
周期毎に複数の処理を順次実行するステップと、
各周期が終了する前に通知を行うステップと、
各周期において、前記通知を受けた時に前記複数の処理のうちの未実行の処理を中止させるステップと、
を有する車両用制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両に搭載される電子制御装置および車両の制御方法に関する。
【背景技術】
【０００２】
従来、車両には多くの電子制御装置（ＥＣＵ）が搭載されており、エンジン、ブレーキ、トランスミッション等、様々な車両装置がＥＣＵによって電子的に制御されている。一般に、ＥＣＵが実行する処理には、所定の周期で発生する定期処理と、ＥＣＵの外部におけるイベントに起因して不定期に発生する割り込み処理とが含まれる。
【０００３】
特に車両の走行機能に関わるＥＣＵにおいては、エンジンの稼働状態や車両の走行状況に応じて処理すべき負荷の量が大きく変動する。例えば、エンジンの回転数が増加すると、クランク角に同期する割り込み処理の発生頻度が増加する。加えて、他のＥＣＵからのデータ受信に伴う割り込み処理や、車両の乗員の操作に起因する割り込み処理も不定期に発生する。このようなイベントに起因する割り込み処理の発生によって処理負荷が大幅に増加した場合、定期処理が所定の周期毎に実行できなくなってしまう可能性がある。
【０００４】
特許文献１は、処理負荷異常を検出できる電子制御装置に関する。この装置は、処理負荷を検出する負荷検出手段と、処理負荷が所定の負荷を超えると処理負荷異常と判定する異常判定手段とを備えている。負荷検出手段は、同一の処理の起床が連続して失敗する連続失敗回数を検出し、異常判定手段は、連続失敗回数が所定の回数を超えると処理負荷異常であると判定する。
【０００５】
特許文献２は、車両制御への影響を予測して処理負荷を制御する電子制御装置に関する。この装置は、複数の処理による処理負荷を検出する負荷検出手段と、処理負荷が所定の調整実行値以上の場合、複数の処理のうちの一部の処理の実行頻度を低下または実行を停止させる負荷調整手段とを備えている。負荷検出手段は、アイドルタスク以外のタスクが実行される時間の割合である処理負荷を検出し、負荷調整手段は、優先度に応じて段階的に処理の実行頻度を低下または実行を停止させる。
【０００６】
特許文献３は、マイコンの処理負荷が高い状態にある時に、マイコンが異常であると誤判定されない制御装置に関する。この装置は、マイコンが異常であるか否かを監視する監視手段と、制御対象を制御する出力制御手段とを備えている。高負荷プログラム処理要求があった場合、監視手段は異常監視プログラムを停止させ、かつ出力制御手段はマイコンによる制御対象への制御を禁止する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−１８５６７１号公報
【特許文献２】特開２０１２−２１８４６７号公報
【特許文献３】特開２００５−２５０８５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に記載の装置は、定期処理の起床が所定回数を超えて連続して失敗した場合に、処理負荷異常、すなわち処理負荷が異常に高い状態であると判定する。処理の起床失敗は、定期処理を起床する際に、前の周期における処理が完了しておらず、未だ実行中である場合に発生する。つまり、定期処理が周期を超えて遅延し、次周期以降の処理の起床が失敗してはじめて、処理負荷異常であることを知ることができる。したがって、定期処理が周期を超えて遅延することを未然に回避することは困難である。
【０００９】
特許文献２に記載の装置は、処理負荷が所定の調整実行値以上の場合、定期処理の実行頻度を低下または実行を停止させる。実行頻度の低下または実行の停止は、定期処理の優先度に応じて段階的に行われる。例えば、処理負荷が９５％以上である場合、まず一部の定期処理の実行頻度が間引かれる。次の周期においても処理負荷が９５％以上である場合、さらに低優先度の定期処理が停止される。その次の周期においても処理負荷が９５％以上である場合、低優先度の定期処理に加えて中優先度の定期処理が停止される。しかしながら、このように処理負荷の調整を段階的に行う場合、どの段階において高負荷状態から回復できるかは、処理負荷の調整を実施してみなければ分からない。したがって、処理負荷の調整が実施された場合であっても、現在の周期において高負荷状態から回復できるとは限らず、次以降の周期に渡って定期処理に遅延が生じてしまう可能性がある。
【００１０】
特許文献３に記載の装置は、高負荷時においてマイコンの異常監視を行わない。異常監視が行われていない状態では、マイコンが正しく機能していることを保証することができない。そのため、高負荷時においては、マイコンから出力される制御信号を遮断して、制御対象に誤った制御信号が入力されないようにしている。しかしながら、制御信号を遮断したとしても、制御信号を出力するための定期処理自体は実行されているため、そのような定期処理に周期を超えて遅延が発生してしまう可能性がある。また、制御信号を遮断すると、高負荷時に制御対象を制御できないという新たな問題も生じてしまう。
【００１１】
上述の特許文献１乃至３のいずれにおいても、高負荷時に定期処理が周期を超えて遅延してしまう。本発明はこのような課題に鑑みてなされたもので、その目的とするところは、周期的に実行される処理において、処理が周期を超えて遅延することを未然に回避することが可能な車両用制御装置および制御方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明に係る車両用制御装置は、周期毎に複数の処理を順次実行する演算手段と、各周期が終了する前に通知を行う通知手段と、各周期において、前記通知手段から通知を受けた時に前記複数の処理のうちの未実行の処理を中止させる処理制御手段とを備える。
【００１３】
前記処理制御手段は、前記未実行の処理を中止させるとともに、次の周期において前記未実行の処理のみを実行させる。
【００１４】
また、本発明に係る車両用制御方法は、周期毎に複数の処理を順次実行するステップと、各周期が終了する前に通知を行うステップと、各周期において、前記通知を受けた時に前記複数の処理のうちの未実行の処理を中止させるステップとを有する。
【発明の効果】
【００１５】
本発明によれば、周期が終了するよりも前に通知が行われる。通知が行われた時点において未実行の処理を中止させることにより、周期が終了するまでにその周期における処理を完了することができる。したがって、周期的に実行される処理において、処理が周期を超えて遅延することを未然に回避することが可能となる。
【００１６】
さらに、通知が行われた時点において未実行の処理を中止させた場合には、次の周期において、その未実行の処理のみを実行させることができる。これにより、次の周期における処理負荷を低減するとともに、中止させた処理を早期に実行させることが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１実施形態に係るエンジンＥＣＵの概略構成図である。
【図２】本発明の第１実施形態に係るエンジンＥＣＵにおける処理の概要を表すタイムチャートである。
【図３】本発明の第１実施形態に係るエンジンＥＣＵにおけるメイン処理を表すフローチャートである。
【図４】本発明の第１実施形態に係るエンジンＥＣＵにおけるタイマ割り込みを表すフローチャートである。
【図５】本発明の第１実施形態に係るエンジンＥＣＵにおける定期処理の実行制御を表すフローチャートである。
【図６】本発明の第２実施形態に係るエンジンＥＣＵにおける処理の概要を表すタイムチャートである。
【図７】本発明の第２実施形態に係るエンジンＥＣＵにおけるメイン処理を表すフローチャートである。
【図８】本発明の第２実施形態に係るエンジンＥＣＵにおけるタイマ割り込みを表すフローチャートである。
【図９】本発明の第２実施形態に係るエンジンＥＣＵにおける定期処理の実行制御を表すフローチャートである。
【図１０】本発明の第２実施形態に係る定期処理の延期回数と許容延期回数が記憶されたテーブルの模式図である。
【発明を実施するための形態】
【００１８】
以下に、図面を参照しながら本発明の実施の形態を説明する。
【００１９】
（第１実施形態）
図１は、本発明の第１実施形態に係るエンジンＥＣＵ１０の概略構成図である。エンジンＥＣＵ１０は、車両用制御装置であり、電源回路１１、入力回路１２、出力回路１３、通信回路１４、ＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）１５、マイコン２０を備えている。
【００２０】
電源回路１１は、例えばスイッチング素子等から構成されたＤＣ−ＤＣコンバータであり、バッテリ１０２の電圧（例えば１２Ｖ）をマイコン２０の動作電圧（例えば５Ｖ）に降圧させる。バッテリ１０２は、車両に搭載された充放電可能な蓄電池であって、イグニッションスイッチ（ＩＧＳＷ）１０１を介して電源回路１１に接続されている。ＩＧＳＷ１０１は、スイッチのＯＮ／ＯＦＦに応じて、バッテリ１０２から電源回路１１への電力供給経路を導通／遮断する。すなわち、ＩＧＳＷ１０１がＯＮとなると、電源回路１１からの電力がエンジンＥＣＵ１０の各部へ供給される。
【００２１】
入力回路１２は、Ａ／Ｄ変換回路、ディジタル入力回路等から構成され、クランク角センサ２０１、ノックセンサ２０２、Ａ／Ｆセンサ２０３、エアフロセンサ２０４、水温センサ２０５、吸気温センサ２０６等に接続されている。入力回路１２は、各センサからのアナログ信号をディジタル信号に変換し、マイコン２０に送出する。
【００２２】
クランク角センサ２０１は、例えばホール素子等から構成される電磁誘導式のセンサであり、クランク角の変化からエンジンの回転数を検出することが可能である。ノックセンサ２０２は、圧電素子等から構成され、エンジンのノッキング（振動）を検出することが可能である。Ａ／Ｆセンサ２０３は、ジルコニア素子等から構成され、起電力の変化によって排気ガス中の酸素濃度を検出することが可能である。エアフロセンサ２０４は、例えば空気の通過によって抵抗が変化する熱線式のセンサであり、エンジンへの空気吸気量を検出することが可能である。水温センサ２０５は、サーミスタ等から構成され、エンジン冷却水の温度を検出することが可能である。吸気温センサ２０６は、サーミスタ等から構成され、エンジンへの吸入空気の温度を検出することが可能である。
【００２３】
出力回路１３は、マイコン２０から出力された制御信号を所定の電圧に昇圧するとともに、駆動に必要な電流量を確保してインジェクタ３０１やイグナイタ３０２等に駆動信号を出力する。この駆動信号に基づいて、インジェクタ３０１は電磁弁を開閉して燃料を燃焼室内に噴射し、また、イグナイタ３０２は点火プラグで火花を発生させて、燃焼室内の混合気を燃焼させる。
【００２４】
通信回路１４は、ＣＡＮ（Controller Area Network）等の車載ネットワークによって、車両に搭載された他のＥＣＵ、例えば、ステアリングＥＣＵ４０１、エアコンＥＣＵ４０２、トランスミッションＥＣＵ４０３等に接続されている。通信回路１４は、トランシーバＩＣやノイズフィルタ等から構成され、マイコン２０の入出力信号を車載ネットワークの規格に合わせて変換することが可能である。マイコン２０は、通信プロトコルに従うことで、通信回路１４を介して他のＥＣＵと相互に通信を行うことができる。
【００２５】
ＥＥＰＲＯＭ１５は、書き込み可能な不揮発性の記録部であり、マイコン２０に接続されている。ＥＥＰＲＯＭ１５は、ＩＧＳＷ１０１がＯＦＦにされた場合やバッテリ１０２が取り外された場合であっても、記録されたデータを保持することが可能である。ＥＥＰＲＯＭ１５は、エンジンＥＣＵ１０によるエンジンの制御において何らかの異常が発生した時に、その時のエンジンの稼働状態や車両の走行状況に関する情報を記録する。
【００２６】
マイコン２０は、入出力ポート（Ｉ／Ｏ）２１、ＣＰＵ２２、ＲＯＭ２３、ＲＡＭ２４、タイマ２５、割り込みコントローラ２６等から構成されている。マイコン２０は、Ｉ／Ｏ２１を介して、電源回路１１、入力回路１２、出力回路１３、通信回路１４、ＥＥＰＲＯＭ１５に接続されている。マイコン２０は、エンジンを制御する機能を有しており、例えば、入力回路１２、通信回路１４から入力されたデータに基づいて最適な燃料噴射量および点火時期を決定し、出力回路１３から制御信号を出力させる。出力回路１３から出力された制御信号に基づき、インジェクタ３０１やイグナイタ３０２が駆動され、エンジンの制御が行われる。また、マイコン２０は、燃料噴射量および点火時期の制御以外にも、エンジン冷却装置のようなエンジンに関連する装置の制御、あるいは他のＥＣＵの制御を実行する。
【００２７】
ＣＰＵ２２は、演算手段かつ処理制御手段であり、ＲＯＭ２３に格納されている所定の制御プログラムを実行することにより、上述のマイコン２０の機能を実現することが可能である。ＲＯＭ２３には、制御プログラムに加えて、制御量を決定するためのマッピング等の各種データが格納されている。マッピングデータは例えば、クランク角、水温、吸気温の各値と燃料噴射量、点火時期との対応関係を表している。ＲＡＭ２４は、ＣＰＵ２２によって実行される制御プログラムの作業用メモリとして使用され、データが一時的に記憶される。
【００２８】
タイマ２５は、マイコン２０の内部または外部から入力されるクロック信号をカウントし、カウント数が所定の上限値に到達した場合、割り込みコントローラ２６に割り込み要求を出力する。タイマ２５は、複数の異なるタイマから構成されても良く、例えば、タイマ２５は、独立して動作する複数のカウンタを有し、カウンタに応じて異なる種類の割り込み要求を出力する。割り込みコントローラ２６は、通知手段であり、タイマ２５から割り込み要求を受信すると、ＣＰＵ２２に対して現在実行中のプログラムを中断させ、割り込み要求が指定する割り込み処理を代わりに実行させる（以下タイマ割り込みという）。ＣＰＵ２２は、タイマ割り込みを完了すると、中断していたプログラムの実行を再開する。このように、割り込みコントローラ２６は、タイマ２５と協働して、クロック信号のカウント開始から任意の時間経過後に所定のプログラムを優先的に実行させることができる。また、割り込みコントローラ２６は、特定のイベントが発生すると、ＣＰＵ２２に対して現在実行中のプログラムを中断させ、発生したイベントに対応する割り込み処理を代わりに実行させる（以下イベント割り込みという）。特定のイベントとは、例えば、エンジンのクランクシャフトが所定の角度になった場合、あるいは他のＥＣＵからデータを受信した場合等である。ＣＰＵ２２は、イベント割り込みを完了すると、中断していたプログラムの実行を再開する。
【００２９】
なお、割り込みコントローラ２６は、タイマ割り込みに限定されることなく、マイコン２０の外部に設けられたウォッチドッグ回路等の監視回路から入力されるパルス信号に応じて、ＣＰＵ２２に割り込み処理を実行させるように構成されても良い。また、割り込みコントローラ２６は、入力回路１２、通信回路１４からのデータに付された時刻情報（タイムスタンプ）に基づいて経過時間を計算し、ＣＰＵ２２に割り込み処理を実行させることも可能である。
【００３０】
図２は、本実施形態に係るエンジンＥＣＵ１０における処理の概要を表すタイムチャートである。定期処理１〜５は、所定の制御周期Ｔで実行され、タイムチャートにおいては、制御周期１から制御周期４が例示されている。定期処理１〜５は、処理番号の順に従って、すなわち定期処理１、２・・・５の順に実行される。定期処理１〜５の各処理は、例えば、エンジン冷却水の温度や吸入空気の温度の取得、排気ガス中の酸素濃度に基づくフィードバック補正、センサが正常に動作していることの安全確認、燃料ポンプや冷却ファン等の装置の制御、他のＥＣＵへのデータや制御指令の送信等の処理である。なお、定期処理１〜５はあくまで一例であり、定期処理の個数は任意である。
【００３１】
制御周期Ｔは、制限時間Ｔａおよび余裕時間αからなる。制限時間Ｔａは、制御周期Ｔよりも余裕時間αだけ短い時間であり、制限時間Ｔａ経過時において定期処理１〜５の実行を中止するか否かが判断される。余裕時間αは、定期処理１〜５のうちで最も処理負荷の高い定期処理を完了させるために必要な実行時間よりも長く設定される。また、余裕時間αは、発生するであろうイベント割り込みに対応したイベントの時間も想定した上で、設定される。すなわち、制限時間Ｔａ経過時において実行中の定期処理は、定期処理１〜５の何れの定期処理であってイベント割り込みが発生したとしても、余裕時間α内で実行を完了することができる。例えば、定期処理１〜５の制御周期Ｔが５ｍｓの場合、余裕時間αを０．４ｍｓとすると、制限時間Ｔａは４．６ｍｓに設定される。
【００３２】
図２のタイムチャートを参照しながら定期処理の詳細を説明する。まず、時刻ｔ０において、マイコン２０は、制御周期１の開始とともに定期処理１の実行を開始する。マイコン２０は、定期処理１の実行を時刻ｔ１において完了する。マイコン２０は、定期処理１の実行を完了すると、同時刻ｔ１において引き続き定期処理２の実行を開始する。マイコン２０は、定期処理２の実行を時刻ｔ２において完了する。マイコン２０は、定期処理２の実行を完了すると、同時刻ｔ２において引き続き定期処理３の実行を開始するはずである。しかしながら、時刻ｔ２においてイベント割り込みが発生する。イベント割り込みが発生した場合、マイコン２０は、定期処理１〜５の実行を中断し、代わりにイベント割り込みを実行する。マイコン２０は、イベント割り込みを完了した後に、中断していた定期処理１〜５の実行を再開する。タイムチャートにおいては、定期処理１〜５が実行中の時間は斜線部分で示され、定期処理１〜５が中断されている時間は白抜き部分で示される。イベント割り込みが発生したことにより、マイコン２０は、定期処理３の実行をイベント割り込みの処理が完了するまで中断する。マイコン２０は、時刻ｔ３においてイベント割り込みを完了すると、同時刻ｔ３において定期処理３の実行を遅れて開始する。
【００３３】
マイコン２０は、定期処理３の完了後はイベント割り込みが発生していないため、通常通りに残りの定期処理４、５を順次実行する。すなわち、マイコン２０は、時刻ｔ４において、定期処理３の実行を完了し、引き続き定期処理４の実行を開始する。同様に、マイコン２０は、時刻ｔ５において、定期処理４の実行を完了し、引き続き定期処理５の実行を開始する。マイコン２０は、時刻ｔ６において、定期処理５の実行を完了する。このようにして、マイコン２０は、定期処理１〜５の全ての定期処理を時刻ｔ６において完了する。
【００３４】
イベント割り込みが発生すると定期処理１〜５の実行は中断されるため、マイコン２０が、定期処理１〜５の実行を開始してから完了するまでに要する時間は、制御周期ごとに異なる場合がある。例えば、次に説明する制御周期２においては、通常時よりも大幅にイベント割り込みが増加することにより、定期処理１〜５の実行が中断される時間が長くなる。
【００３５】
続いて、制御周期２における定期処理１〜５を説明する。まず、マイコン２０は、時刻ｔ８において、制御周期２の開始とともに定期処理１の実行を開始するはずである。しかしながら、時刻ｔ８においてイベント割り込みが発生する。マイコン２０は、このイベント割り込みにより、定期処理１の実行をイベント割り込みの処理が完了するまで中断する。マイコン２０は、時刻ｔ９においてイベント割り込みを完了すると、同時刻ｔ９において定期処理１の実行を遅れて開始する。その後、マイコン２０は、時刻ｔ１０において定期処理１を完了するが、同時刻ｔ１０において再度イベント割り込みが発生する。そのため、マイコン２０は、時刻ｔ１１において定期処理２の実行を遅れて開始し、時刻ｔ１２において定期処理２を完了する。同様に、時刻ｔ１２においてもイベント割り込みが発生し、マイコン２０は、時刻ｔ１３において定期処理３の実行を遅れて開始する。
【００３６】
時刻ｔ１４においては、制御周期２の開始から制限時間Ｔａが経過する。タイマ２５は、制御周期２の開始から制限時間Ｔａが経過した時に割り込み要求を割り込みコントローラ２６に送信する。割り込みコントローラ２６は、タイマ２５から割り込み要求を受信するとタイマ割り込みを発生させる。よって、時刻ｔ１４においてタイマ割り込みが発生する。タイマ割り込みが発生した場合、マイコン２０は、実行中の定期処理を継続して実行し、未実行の処理を中止する。なぜなら、制限時間Ｔａの経過時において実行中の定期処理は、余裕時間α内に、すなわち現在の制御周期内に完了することが確実であり、制限時間Ｔａ経過時において未だ実行されていない定期処理は仮に実行が開始されたとしても、実行が完了するまでには現在の制御周期を超えて遅延してしまう可能性が高いからである。したがって、マイコン２０は、時刻ｔ１４において実行中の定期処理３を継続して実行し、時刻ｔ１５において定期処理３の実行を完了する。マイコン２０は、時刻ｔ１５において定期処理４、５の実行を中止する。このようにして、マイコン２０は、定期処理１〜５の全ての定期処理を時刻ｔ１５において完了する。
【００３７】
続いて、制御周期３における定期処理１〜５を説明する。制御周期３においては、マイコン２０は、前の制御周期２において中止した定期処理４、５のみを実行する。つまり、マイコン２０は、制御周期３の開始とともに時刻ｔ１６において定期処理１〜３の実行を中止し、定期処理４から実行を開始する。しかし、時刻ｔ１６においてイベント割り込みが発生しているため、マイコン２０は、定期処理４の実行をイベント割り込みが完了するまで中断する。マイコン２０は、イベント割り込みを完了すると、定期処理４の実行を遅れて開始し、時刻ｔ１７において定期処理４の実行を完了する。時刻ｔ１７においてもイベント割り込みが発生するため、マイコン２０は、定期処理５の実行を遅れて開始し、時刻ｔ１８において定期処理５の実行を完了する。このようにして、マイコン２０は、定期処理１〜５の全ての処理を時刻ｔ１８において完了する。次の制御周期４においては、制御周期１と同様に、マイコン２０は、制御周期４の開始とともに時刻ｔ２０において定期処理１の実行を開始し、定期処理２から定期処理５までの処理を順次実行する。
【００３８】
すなわち、制御周期１においては、イベント割り込みによる処理負荷の増加量は小さく、マイコン２０は、制限時間Ｔａが経過する前に、定期処理１〜５の全ての定期処理を完了することができる。ところが、制御周期２においては、マイコン２０は、イベント割り込みの増加によって定期処理１〜５の実行を中断する時間が長くなり（高負荷状態）、制限時間Ｔａが経過する前に定期処理１〜５の全ての定期処理を完了することができなくなってしまう。そこで、定期処理１〜５が制御周期の期間を超えて遅延してしまうことを回避するために、マイコン２０は、制限時間Ｔａの経過時に実行中の定期処理３より後の処理番号である定期処理４および５の実行を中止している。
【００３９】
制御周期３においては、前の制御周期２における定期処理が遅延していないため、マイコン２０は、制御周期３の開始からすぐに定期処理１〜５の実行を開始することができる。まず、マイコン２０は、制御周期２において実行された定期処理１〜３を中止する。これにより、マイコン２０は、制御周期３における処理負荷を低減することができる。次に、マイコン２０は、制御周期２において中止した定期処理４および５を実行する。つまり、マイコン２０は、制御周期２における定期処理４および５を制御周期３に繰り越し、制御周期３においては繰り越した定期処理４および５のみを実行していることになる。これにより、マイコン２０は、定期処理４および５の実行周期がさらに拡大してしまうことを抑制することが可能となる。その後、制御周期３の終了までに高負荷状態が解消され、マイコン２０は、制御周期４においては通常通りに定期処理１〜５を順次実行する。
【００４０】
なお作図の便宜上、イベント割り込みは定期処理と定期処理との間（例えば、定期処理２と定期処理３の間）で発生するように図示されているが、イベント割り込みは各定期処理中で発生する場合もある。また、通常時、すなわちイベント割り込みによって増減する処理負荷が想定の範囲内であれば、マイコン２０は、所定の制御周期Ｔ内で定期処理１〜５の実行を全て完了することができる。さらに、高負荷時、すなわちイベント割り込みの大幅な増加によってマイコン２０の処理能力を超えて処理負荷が増加した状態であっても、マイコン２０は、２周期分の制御周期（２Ｔ）内で定期処理１〜５の実行を全て完了することができる。
【００４１】
続いて、図３から図５を参照しながら、本実施形態に係るエンジンＥＣＵ１０における処理の手順を説明する。なお、イベント割り込みが発生した場合であっても、実行中の定期処理が余裕時間α内で完了できるように、余裕時間αが十分長く設定されているものとする。
【００４２】
図３は、エンジンＥＣＵ１０におけるメイン処理を示すフローチャートである。車両の乗員によってＩＧＳＷ１０１がＯＮにされ、エンジンＥＣＵ１０が起動すると、ＣＰＵ２２は、ＲＯＭ２３から制御プログラムを読み出し、メイン処理の実行を開始する。制御プログラムのメイン処理は、エンジンＥＣＵ１０が起動している間、すなわちＩＧＳＷ１０１がＯＮの間に、所定の制御周期Ｔで繰り返し実行される。
【００４３】
まず、ＣＰＵ２２は、制御プログラムで使用されるパラメータ等の初期設定を行う（ステップＳ１０）、例えば、ＣＰＵ２２は、メイン処理の制御周期Ｔを５ｍｓ、制限時間Ｔａを４．６ｍｓ、制御周期の計時時間を５ｍｓ（すなわち制御周期の終了時間）、記憶処理番号を０に設定する。また、ＣＰＵ２２は、タイマ割り込みとイベント割り込みを許可するように、設定する。そして、割り込みが発生した時にメイン処理の実行を中断する。
【００４４】
続いて、ＣＰＵ２２は、制御周期Ｔの期間が経過したか否か、すなわち現在の制御周期が終了したか否かを計時時間に基づいて判定する（ステップＳ１１）。制御周期Ｔの期間が経過していない場合（ステップＳ１１でＮＯ）には、ＣＰＵ２２は、制御周期Ｔの期間が経過したか否かを繰り返し判定する（ステップＳ１１）。制御周期Ｔの期間が経過した場合（ステップＳ１１でＹＥＳ）には、ＣＰＵ２２は、制御周期の計時に使用しているタイマのカウンタをリセットして、次の制御周期の計時を新たに開始させる（ステップＳ１２）。
【００４５】
続いて、ＣＰＵ２２は、制限時間Ｔａの経過後にタイマ割り込みを発生させるために、タイマ２５を設定する。すなわち、ＣＰＵ２２は、制限時間経過フラグをＯＦＦに設定し（ステップＳ１３）、タイマ２５のカウンタの上限値を制限時間Ｔａに合わせて設定する（ステップＳ１４）。そして、ＣＰＵ２２は、タイマ２５を起動させる（ステップＳ１５）。これにより、タイマ２５が起動されてから制限時間Ｔａの経過後に、タイマ割り込みが発生することになる。なお、制限時間経過フラグは、制御周期の開始からの経過時間が制限時間Ｔａを超えたことを示すフラグであり、タイマ割り込みによってＯＮにされる。タイマ割り込みの詳細は、図４のフローチャートを用いて説明する。
【００４６】
タイマ２５を起動させた後、ＣＰＵ２２は、定期処理１の実行制御を行う（ステップＳ１６）。すなわち、ＣＰＵ２２は、定期処理１を実行するか、あるいは中止する。続いて、ＣＰＵ２２は、定期処理１と同様に、定期処理２から定期処理Ｎまでの実行制御を順次行う（ステップＳ１７からステップＳ１９）。これらの実行制御において実行が制御される定期処理１〜Ｎは、実際のエンジン制御に関連する処理である。例えば、定期処理１はＡ／Ｆセンサ２０３が正常に動作していることを確認する処理であり、定期処理２はＡ／Ｆセンサ２０３から排気ガス中の酸素濃度を取得して、空燃比の補正量を調整する処理である。また、定期処理Ｎは、エアコンＥＣＵ４０２に制御指令を送信する処理である。各定期処理ｉに与えられた番号ｉ（１〜Ｎ）は、定期処理ｉが実行される順番を示す処理番号であり、１からＮまで１ずつ増加している。なお、図２のタイムチャートは、定期処理ｉの数が５つ（Ｎ＝５）の場合に対応している。定期処理ｉの実行制御の詳細は、図５のフローチャートを用いて説明する。
【００４７】
定期処理１〜Ｎの実行制御を全て完了すると、ＣＰＵ２２は、制限時間経過フラグを確認する（ステップＳ２０）。制限時間経過フラグがＯＦＦである場合（ステップＳ２０でＯＦＦ）には、ＣＰＵ２２は、タイマ２５のカウントを停止させ（ステップＳ２１）、処理番号として０をＲＡＭ２４に記憶する（ステップＳ２２）。ＣＰＵ２２は、定期処理１〜Ｎの実行制御、すなわち定期処理１〜Ｎを全て完了した後は、もはやタイマ割り込みを発生させる必要がないため、タイマ２５のカウントを停止させる。よって、定期処理１〜Ｎの実行制御が完了した後は、タイマ割り込みは発生しない。さらに、ＣＰＵ２２は、記憶している処理番号を０に初期化することにより、次の制御周期において、最初の処理番号である定期処理１から実行を開始する。
【００４８】
処理番号０を記憶（ステップＳ２２）、または制限時間経過フラグがＯＮであること（ステップＳ２０でＯＮ）を確認した後、ＣＰＵ２２は、現在の制御周期が経過したか否かを判定するステップＳ１１に戻り、現在の制御周期が経過した場合（ステップＳ１１でＹＥＳ）には、次の制御周期として周期計時開始以下の処理（ステップＳ１２からステップＳ２３）を再度実行する。
【００４９】
図４は、エンジンＥＣＵ１０におけるタイマ割り込みを示すフローチャートである。ＣＰＵ２２は、タイマ割り込みが発生した場合、実行中のメイン処理を中断してタイマ割り込みを実行する。まず、ＣＰＵ２２は、制限時間経過フラグをＯＮに設定する（ステップＳ３０）。これにより、現在の制御周期において制限時間Ｔａが経過したことを知ることができる。その後、ＣＰＵ２２は、メイン処理の実行を再開する。
【００５０】
なお、イベント割り込みが発生した場合に、実行中の定期処理が余裕時間α内で完了できるように、余裕時間αが十分長く設定されていないのであれば、イベント割り込みを禁止する必要がある。イベント割り込みの禁止は、タイマ割り込み発生時に実行中の定期処理を余裕時間α内で確実に完了させるために行われる。
【００５１】
図５は、エンジンＥＣＵ１０における定期処理ｉの実行制御を示すフローチャートである。まず、ＣＰＵ２２は、制限時間経過フラグを確認する（ステップＳ４０）。制限時間Ｔａが経過している、すなわち、図４に示されるタイマ割り込みが発生している場合には、制限時間経過フラグはＯＮである（ステップＳ４０でＯＮ）。この場合、ＣＰＵ２２は、以下の処理（ステップＳ４１からステップＳ４３）を行わずに、定期処理ｉの実行制御を終了する。ＣＰＵ２２は、メイン処理に戻り、次の定期処理ｉ＋１の実行制御を行う。つまり、ＣＰＵ２２は、タイマ割り込みの発生より後に実行される定期処理ｉの実行を中止する。
【００５２】
また、制限時間Ｔａが経過していない、すなわち、図４に示されるタイマ割り込みが発生していない場合には、制限時間経過フラグはＯＦＦである（ステップＳ４０でＯＦＦ）。この場合、ＣＰＵ２２は、ＲＡＭ２４に記憶されている処理番号の次の番号（処理番号＋１）と、現在実行中の処理番号ｉとを比較する（ステップＳ４１）。
【００５３】
記憶されている処理番号の次の番号と現在の処理番号ｉが異なる場合（ステップＳ４１でＮＯ）には、ＣＰＵ２２は、以下の処理（ステップＳ４２からステップＳ４３）を行わずに、定期処理ｉの実行制御を終了する。ＣＰＵ２２は、メイン処理に戻り、次の定期処理ｉ＋１の実行制御を行う。前の制御周期において定期処理ｋ（ｋは１〜Ｎの何れか）の実行中にタイマ割り込みが発生した場合、定期処理１から定期処理ｋまでの実行制御においては、記憶されている処理番号の次の番号（ｋ＋１）と現在実行中の処理番号ｉは異なる。つまり、ＣＰＵ２２は、前の制御周期においてタイマ割り込みが発生した場合、前の制御周期において実行した定期処理１〜ｋの実行を中止する。
【００５４】
また、記憶されている処理番号の次の番号と現在の処理番号ｉが等しい場合（ステップＳ４１でＹＥＳ）には、ＣＰＵ２２は、定期処理ｉを実行する（ステップＳ４２）。続いて、ＣＰＵ２２は、実行した定期処理ｉの処理番号ｉをＲＡＭ２４に記憶させ（ステップＳ４３）、定期処理ｉの実行制御を終了する。処理番号ｉを記憶させた後、ＣＰＵ２２は、メイン処理に戻り、次の定期処理ｉ＋１の実行制御を開始する。
【００５５】
前の制御周期においてタイマ割り込みが発生していない場合、記憶されている処理番号の次の番号と現在実行中の処理番号ｉは常に等しい。また、前の制御周期において定期処理ｋ（ｋは１〜Ｎの何れか）の実行中にタイマ割り込みが発生した場合、定期処理ｋ＋１からＮまでの実行制御においては、記憶されている処理番号の次の番号と現在実行中の処理番号ｉは等しい。つまり、ＣＰＵ２２は、前の制御周期においてタイマ割り込みが発生していない場合、定期処理１〜Ｎを実行し、前の制御周期においてタイマ割り込みが発生した場合、前の制御周期において中止した定期処理ｋ＋１〜Ｎを実行する。
【００５６】
このように、本実施形態によれば、割り込みコントローラ２６は、現在の制御周期が終了間近であることをタイマ割り込みによってＣＰＵ２２に事前に通知する。したがって、ＣＰＵ２２は、通知を受けた時に現在の制御周期の定期処理をまだ実行中であれば、定期処理を中止することによって、定期処理に制御周期を超えるような遅延が発生することを回避することができる。その結果、ＣＰＵ２２は、次の制御周期において、制御周期の開始から遅れることなく定期処理を開始することができる。例えば、ＣＰＵ２２は、処理負荷を低減したり、特定の定期処理のみを実行したりして、高負荷状態に早期に対応することが可能となる。
【００５７】
（第２実施形態）
続いて、本発明の第２実施形態に係るエンジンＥＣＵを説明する。本実施形態に係るエンジンＥＣＵは、タイマ割り込みが発生した場合、定期処理の実行周期に応じて次の制御周期における定期処理の実行を判断する。本実施形態に係るエンジンＥＣＵは、第１実施形態に係るエンジンＥＣＵ１０と同様に構成されているため、第１実施形態と異なる点を中心に説明する。
【００５８】
図６（Ａ）、（Ｂ）は、本実施形態に係るエンジンＥＣＵ１０における処理の概要を表すタイムチャートである。定期処理１〜３は、所定の制御周期Ｔで実行され、タイムチャートにおいては、制御周期１から制御周期７が例示されている。定期処理１〜３は、処理番号の順に従って、すなわち定期処理１、２、３の順に実行される。さらに、定期処理１、２の実行周期と定期処理３の実行周期とは異なっている。すなわち、定期処理１、２は１制御周期毎に実行され、定期処理３は３制御周期毎に実行される。定期処理１〜３の処理番号は、実行周期の小さい順に設定されている。
【００５９】
図６（Ａ）は、通常時における定期処理１〜３を示すタイムチャートである。通常時には、イベント割り込みによって定期処理１〜３が中断される時間は短いため、作図の便宜上、イベント割り込みによる定期処理の中断（白抜き部分）は省略されている。マイコン２０は、定期処理１、２を全ての制御周期１〜７において実行し、定期処理３を制御周期１、４、７においてのみ実行する。例えば、制御周期１〜７の制御周期Ｔが５ｍｓである場合、マイコン２０は、定期処理１、２を５ｍｓ毎に実行し、定期処理３を１５ｍｓ毎に実行する。言い換えれば、定期処理１、２の実行周期はＴであり、定期処理３の実行周期は３Ｔである。なお、定期処理３は、３制御周期毎に実行されることが好ましいが、少なくとも３制御周期の期間内に１回の頻度で（例えば、制御周期１〜３の期間内と制御周期４〜６の期間内でそれぞれ１回ずつ）、実行されれば良い。
【００６０】
図６（Ｂ）は、制御周期１から制御周期２にかけて、および制御周期４から制御周期６にかけて高負荷状態になった場合における、定期処理１〜３を示すタイムチャートである。
【００６１】
制御周期１において、マイコン２０は、定期処理１〜３を実行する。しかしながら、高負荷状態であるため、制限時間Ｔａが経過した時点においても、マイコン２０はまだ定期処理２を実行中である。したがって、マイコン２０は、定期処理３の実行を中止する（符号７１）。ところが、マイコン２０は、中止した定期処理３を制御周期１〜３の間で、すなわち制御周期３の終了までに実行すれば良い。そこでマイコン２０は、定期処理３を通常時には実行しない制御周期２に延期する（符号７２）。
【００６２】
制御周期２においては、前の制御周期１における定期処理が遅延していないため、マイコン２０は、制御周期の開始からすぐに処理を開始することができる。制御周期２において、マイコン２０は、定期処理１、２と制御周期１から延期した定期処理３を実行する。制御周期２の途中で自然に高負荷状態が解消されたため、マイコン２０は、制御時間Ｔａが経過する前に定期処理１〜３の実行を全て完了する。
【００６３】
制御周期３において、マイコン２０は、定期処理１、２を実行する。マイコン２０は、定期処理３を３制御周期毎に実行するため、制御周期３においては、通常時と同様に定期処理３を実行しない。
【００６４】
制御周期４において、マイコン２０は、定期処理１〜３を実行する。しかしながら、高負荷状態であるため、制御時間Ｔａが経過した時点においても、マイコン２０はまだ定期処理２を実行中である。したがって、マイコン２０は、定期処理３の実行を中止する（符号７３）。ところが、マイコン２０は、中止した定期処理３を制御周期４〜６の間で、すなわち制御周期６の終了までに実行すれば良い。そこでマイコン２０は、定期処理３を通常時には実行しない制御周期５に延期する（符号７４）。
【００６５】
制御周期５においては、前の制御周期４における定期処理が遅延していないため、マイコン２０は、制御周期の開始からすぐに処理を開始することができる。制御周期５において、マイコン２０は、定期処理１、２と制御周期４から延期した定期処理３を実行する。制御周期５では高負荷状態が続き、制限時間Ｔａが経過した時点においても、マイコン２０はまだ定期処理２を実行中である。したがって、マイコン２０は、定期処理３の実行を再度中止する（符号７４）。ところが、マイコン２０は、中止した定期処理３を制御周期６の終了までに実行すれば良いので、定期処理３を通常時には実行しない制御周期６に再度延期する（符号７６）。
【００６６】
制御周期６においては、前の制御周期５における定期処理が遅延していないため、マイコン２０は、制御周期の開始からすぐに処理を開始することができる。マイコン２０は、制御周期４から延期した定期処理３を制御周期６において確実に実行する必要がある。そこでマイコン２０は、定期処理１、２の実行を中止し（符号７５）、定期処理３のみを実行する。高負荷状態であっても、マイコン２０は、定期処理１、２を中止することによって、定期処理３を確実に実行することができる（符号７６）。制御周期６において高負荷状態が解消され、制御周期７においては、マイコン２０は、通常通りに定期処理１〜３を実行する。
【００６７】
図７は、本実施形態に係るエンジンＥＣＵ１０におけるメイン処理を示すフローチャートである。上述した図６のタイムチャートは、定期処理ｉの数が３つ（Ｎ＝３）の場合に対応している。本実施形態に係るメイン処理のフローチャートは、図３に示される第１実施形態に係るメイン処理のフローチャートと同様である。ただし、本実施形態においては、各定期処理ｉの実行周期が異なるため、ＣＰＵ２２は、周期計時の開始（ステップＳ５２）後に、制御周期毎に各定期処理ｉを実行するか否かを示す実行フラグを設定する（ステップＳ５３）。すなわち、ＣＰＵ２２は、制御周期１、４、７において定期処理１〜３の実行フラグをＯＮにし、制御周期２、３、５、６において定期処理１、２の実行フラグをＯＮにする。なお、ＣＰＵ２２は、定期処理ｉの実行フラグをメイン処理の外部のサブルーチンにおいて設定しても良い。
【００６８】
さらに、本実施形態においては、図１０に示されるように、ＣＰＵ２２は、定期処理１〜Ｎの延期回数と許容延期回数をＲＡＭ２４に記憶する。許容延期回数とは、ＣＰＵ２２が定期処理を制御周期内で実行できない場合に、定期処理を何回まで次の制御周期に延期することができるかを示す値である。例えば、ＣＰＵ２２が定期処理をＸ制御周期毎に実行する場合、その定期処理の許容延期回数をＸ−１とすることができる。初期設定において（ステップＳ５０）、ＣＰＵ２２は、ＲＯＭ２３から許容延期回数を読み出してＲＡＭ２４に記憶し、さらに、延期回数を０に設定する。
【００６９】
図８は、本実施形態に係るエンジンＥＣＵにおけるタイマ割り込みを示すフローチャートである。まず、ＣＰＵ２２は、制限時間経過フラグをＯＮに設定する（ステップＳ７０）。続いて、ＣＰＵ２２は、現在実行中の定期処理ｉが次の制御周期においてもさらに次の制御周期に延期可能であるか否かを判断する。すなわち、ＣＰＵ２２は、定期処理ｉの延期回数と許容延期回数−１とを比較し、処理ｉの延長回数が許容延期回数−１よりも小さい場合、現在実行中の処理ｉは次の制御周期においてもさらに次の制御周期に延期可能であると判断する（ステップＳ７１でＹＥＳ）。ＣＰＵ２２は、定期処理ｉが次の制御周期においてもさらに延期可能であると判断すると、記憶している定期処理ｉの延期回数を１増加させ（ステップＳ７２）、記憶している処理番号を０に初期化する（ステップＳ７３）。続いて、ＣＰＵ２２は、現在のエンジンの稼働状態や車両の走行状況に関する情報をＥＥＰＲＯＭ１５に記録し（ステップＳ７４）、タイマ割り込みを終了する。
【００７０】
また、ＣＰＵ２２は、定期処理ｉの延期回数が許容延期回数−１以上である場合、現在実行中の定期処理ｉは次の制御周期においてさらに次の制御周期に延期することができない、すなわち次の制御周期において処理ｉを確実に実行する必要があると判断し（ステップＳ７１でＮＯ）、タイマ割り込みを終了する。
【００７１】
図９は、本実施形態に係るエンジンＥＣＵ１０のおける定期処理ｉの実行制御を示すフローチャートである。まず、ＣＰＵ２２は、定期処理ｉの延期回数を確認する（ステップＳ８０）。延期回数が０である場合（ステップＳ８０でＹＥＳ）には、ＣＰＵ２２は、次に定期処理ｉの実行フラグを確認、すなわち現在の制御周期において定期処理ｉの実行が予定されているか否かを確認する（ステップＳ８１）。実行フラグがＯＮ、すなわち現在の制御周期において定期処理ｉの実行が予定されている場合（ステップＳ８１でＯＮ）には、ＣＰＵ２２は、制限時間経過フラグの確認（ステップＳ８２）以下の処理を実行する。ステップＳ８２からステップＳ８４までの処理は、第１実施形態における処理と同様である。
【００７２】
また、延期回数が０でない、すなわち定期処理ｉの実行が延期されている場合、（ステップＳ８０でＮＯ）には、ＣＰＵ２２は、定期処理ｉの実行フラグを確認する処理（ステップＳ８１）を実行しない。よって、ＣＰＵ２２は、現在の制御周期において定期処理ｉの実行が予定されていない場合であっても、前の制御周期から延期した定期処理ｉを現在の制御周期において実行する。
【００７３】
ＣＰＵ２２は、定期処理ｉを実行（ステップＳ８４）した後、定期処理ｉの延期回数を０に設定し（ステップＳ８５）、定期処理ｉの実行フラグをＯＦＦにする（ステップＳ８６）。最後に、ＣＰＵ２２は、現在の定期処理の処理番号ｉをＲＡＭ２４に記憶して（ステップＳ８７）、定期処理ｉの実行制御を終了する。
【００７４】
また、実行フラグがＯＦＦ、すなわち現在の制御周期において定期処理ｉの実行が予定されていない場合（ステップＳ８１でＯＦＦ）には、ＣＰＵ２２は、単に現在の定期処理の処理番号ｉを記憶して（ステップＳ８７）、定期処理ｉの実行制御を終了する。
【００７５】
このように、本実施形態によれば、マイコン２０は、定期処理ごとに、実行を延期した回数を記憶する。したがって、マイコン２０は、定期処理の実行周期が異なる場合に、定期処理ごとの延期回数と実行周期に応じて、次の制御周期における定期処理の実行を判断することができる。例えば、マイコン２０は、定期処理の実行周期の範囲内において、定期処理の実行を次の制御周期に延期することが可能であり、定期処理を延期している間に高負荷状態が自然に解消されることを待つことができる。さらに、マイコン２０は、定期処理をさらに次の制御周期に延期しない場合には、現在の周期における他の定期処理を中止して、前の周期から延期した定期処理を現在の制御周期において確実に実行することができる。
【００７６】
また、マイコン２０は、タイマ割り込みが発生した場合に、定期処理を実行周期の範囲内で延期するとともに、タイマ割り込み時におけるエンジンの状態をＥＥＰＲＯＭ１５に記録する。ＥＥＰＲＯＭ１５に記録されたデータは、車両の点検時に読み出されて制御プログラムの設計者等によって解析される。したがって、実際にエンジンの制御に異常が発生していない場合であっても、制御プログラムの設計者等は、ＥＥＰＲＯＭ１５に記録された情報に基づいて、エンジンＥＣＵ１０が過負荷状態になったことを知ることができ、制御プログラムをより適切に変更することができる。
【００７７】
本発明は、上述の実施形態に限定されることなく、本発明の趣旨を逸脱しない範囲で変更実施可能である。例えば、本発明は、エンジンＥＣＵに限定されることなく、ブレーキＥＣＵ、ボデーＥＣＵ、ナビゲーションＥＣＵ、ゲートウェイＥＣＵ、また、複数の機能が１つに統合されたＥＣＵ等、ＥＣＵの機能の違いに影響されず適用することが可能である。
【符号の説明】
【００７８】
１０  エンジンＥＣＵ
１１  電源回路
１２  入力回路
１３  出力回路
１４  通信回路
１５  ＥＥＰＲＯＭ
２０  マイコン
２１  入出力ポート
２２  ＣＰＵ（演算手段、処理制御手段）
２３  ＲＯＭ
２４  ＲＡＭ
２５  タイマ
２６  割り込みコントローラ（通知手段）
【図１】
2016113968.tif 000003
【図２】
2016113968.tif 000004
【図３】
2016113968.tif 000005
【図４】
2016113968.tif 000006
【図５】
2016113968.tif 000007
【図６】
2016113968.tif 000008
【図７】
2016113968.tif 000009
【図８】
2016113968.tif 000010
【図９】
2016113968.tif 000011
【図１０】
2016113968.tif 000012