(57)【特許請求の範囲】
【請求項１】
タスク処理を実行する処理装置（１００）であって、
前記タスク処理としては、タイマ周期毎に実行するタイマタスク処理、前記タイマ周期よりも周期の短いキャリア周期毎に実行するキャリアタスク処理、および、突発的に実行するイベントタスク処理があり、
前記キャリア周期における前記キャリアタスク処理の実行時間を除いたキャリア周期余剰時間において、前記タイマタスク処理および前記イベントタスク処理の少なくとも一方を実行しており、
前記タイマタスク処理の要求がある場合、前記キャリア周期毎に、前記タイマ周期内における前記キャリア周期余剰時間の総時間であるキャリア周期余剰時間合計の推定と更新、および、前記タイマタスク処理を実行し終えるのに要する時間であるタイマタスク処理残時間の算出と更新を行うとともに、前記キャリア周期余剰時間合計から前記タイマタスク処理残時間を減算することで、前記タイマ周期における前記タイマタスク処理の実行に割り当てることのできる時間から前記タイマタスク処理の実行時間を除いたタイマ周期余剰時間の算出と更新を行い、
前記タイマ周期余剰時間において、前記イベントタスク処理を実行しており、
前記タイマタスク処理の要求と、前記タイマタスク処理よりも優先度の高い前記イベントタスク処理の要求とがあり、前記タイマ周期余剰時間が所定の条件を満たす場合、前記キャリア周期余剰時間における前記イベントタスク処理の実行割合を０％よりも大きい割合とし、前記タイマタスク処理の実行割合を１００％よりも低め、前記タイマタスク処理の実行を一時的に保留して、前記イベントタスク処理を実行する処理装置。
【請求項２】
前記タイマ周期余剰時間の更新時における前記キャリア周期余剰時間が、更新した前記タイマ周期余剰時間以下であり、前記イベントタスク処理の要求がある場合、前記イベントタスク処理の実行割合を１００％にし、前記タイマタスク処理の実行割合を０％にする請求項１に記載の処理装置。
【請求項３】
前記タイマ周期余剰時間の更新時における前記キャリア周期余剰時間が、更新した前記タイマ周期余剰時間よりも長く、前記イベントタスク処理の要求がある場合、前記イベントタスク処理の実行割合を０％にし、前記タイマタスク処理の実行割合を１００％にする請求項２に記載の処理装置。
【請求項４】
前記イベントタスク処理の要求として、前記タイマタスク処理よりも優先度の高い第１イベントタスク要求と、前記タイマタスク処理よりも優先度の低い第２イベントタスク要求と、があり、
前記タイマタスク処理の要求と、前記第１イベントタスク要求と前記第２イベントタスク要求それぞれが同時にあり、前記タイマ周期余剰時間が所定の条件を満たす場合、前記キャリア周期余剰時間における前記第１イベントタスク要求に対する前記イベントタスク処理の実行割合を０％よりも大きい割合とし、前記第２イベントタスク要求に対する前記イベントタスク処理の実行割合をゼロとする請求項１〜３いずれか１項に記載の処理装置。
【請求項５】
前記タイマタスク処理の要求が起きた後に開始される前記キャリア周期の順番をｎ、前記タイマ周期内において実施される前記キャリア周期の数をｍ、１以上ｍ以下の自然数をｋ、ｋ番目の前記キャリア周期における前記キャリア周期余剰時間をＣｓｕｒｋ、最も時間の短い前記キャリア周期余剰時間であるキャリア周期余剰最短時間をＣｓｕｒＭＩＮ、ｎ＝ｍにおける前記キャリア周期余剰時間をγ、前記キャリア周期余剰時間合計をＣｓｕｒＳＵＭとすると、ｎ＝ｋの前記キャリア周期において、
（数１０１）
ＣｓｕｒＳＵＭ＝Ｃｓｕｒｋ＋Ｃｓｕｒ（ｋ＋１）＋ＣｓｕｒＭＩＮ×（ｍ−２−ｋ）＋γ
を計算することで、前記キャリア周期余剰時間合計を推定して更新する請求項１〜４いずれか１項に記載の処理装置。
【請求項６】
ｎ＝ｋの前記キャリア周期をＣｃｙｃｋ、ｎ＝ｋの前記キャリア周期における前記キャリアタスク処理を実行した時間であるキャリアタスク実行時間をＣａｃｔｋとすると、ｎ＝ｋの前記キャリア周期において、
（数１０２）
Ｃｓｕｒｋ＝Ｃｃｙｃｋ−Ｃａｃｔｋ
を計算することで、ｎ＝ｋの前記キャリア周期における前記キャリア周期余剰時間を算出する請求項５に記載の処理装置。
【請求項７】
ｎ＝ｋ＋１の前記キャリア周期をＣｃｙｃ（ｋ＋１）、最も実行時間の長い前記キャリアタスク処理の実行時間であるキャリアタスク最長時間をＣｅｓｔＭＡＸとすると、ｎ＝ｋの前記キャリア周期において、
（数１０３）
Ｃｓｕｒｋ（ｋ＋１）＝Ｃｃｙｃ（ｋ＋１）−ＣｅｓｔＭＡＸ
を計算することで、ｎ＝ｋ＋１の前記キャリア周期における前記キャリア周期余剰時間を推定する請求項６に記載の処理装置。
【請求項８】
最も周期の短い前記キャリア周期であるキャリア最短周期をＣｃｙｃＭＩＮとすると、ｎ＝ｋの前記キャリア周期において、
（数１０４）
ＣｓｕｒＭＩＮ＝ＣｃｙｃＭＩＮ−ＣｅｓｔＭＡＸ
を計算することで、ｎ＝ｋ＋２以降の前記キャリア周期における前記キャリア周期余剰時間を推定する請求項７に記載の処理装置。
【請求項９】
前記タイマ周期をＴｃｙｃ、ｎ＝ｋまでの前記キャリア周期の合計時間をキャリア周期合計としてＣｃｙｃＳＵＭ、少数点以下の切り下げをＲｏｕｎｄｄｏｗｎとすると、ｎ＝ｋの前記キャリア周期において、
（数１０５）
ｍ＝Ｒｏｕｎｄｄｏｗｎ（（Ｔｃｙｃ−ＣｃｙｃＳＵＭ）／ＣｃｙｃＭＩＮ）＋ｋ
を計算することで、ｎ＝ｋの前記キャリア周期における前記数ｍを推定する請求項８に記載の処理装置。
【請求項１０】
ｎ＝ｍの前記キャリア周期における前記キャリアタスクの実行時間をβ、（Ｔｃｙｃ−ＣｃｙｃＳＵＭ）／ＣｃｙｃＭＩＮの計算によって得られる小数点以下の数字をｍａとすると、ｍａ≧ＣｅｓｔＭＡＸ／ＣｃｙｃＭＩＮの場合、β＝ＣｅｓｔＭＡＸ、γ＝ＣｃｙｃＭＩＮ×ｍａ−βとし、ｍａ＜ＣｅｓｔＭＡＸ／ＣｃｙｃＭＩＮの場合、β＝ＣｃｙｃＭＩＮ×ｍａ、γ＝０とする請求項９に記載の処理装置。
【請求項１１】
γ＝０とする請求項５〜９のいずれか１項に記載の処理装置。
【請求項１２】
ｎ＝ｋの前記キャリア周期における前記タイマタスク処理残時間をＴｅｓｔｋ、ｎ＝０の前記キャリア周期における前記タイマタスク処理残時間をＴｅｓｔ０、ｎ＝ｋの前記キャリア周期における前記タイマタスク処理を行った時間の合計であるタイマタスク処理済時間合計をＴａｃｔＳＵＭとすると、ｎ＝ｋの前記キャリア周期において、
（数１０６）
Ｔｅｓｔｋ＝Ｔｅｓｔ０−ＴａｃｔＳＵＭ
を計算することで、ｎ＝ｋの前記キャリア周期における前記タイマタスク処理残時間を算出して更新する請求項１〜１１いずれか１項に記載の処理装置。
【請求項１３】
ｎ＝ｋの前記キャリア周期における前記キャリア周期余剰時間をＣｓｕｒｋ、前記タイマタスク処理の実行割合をＴｒａｔｅｋとすると、ｎ＝ｋの前記キャリア周期において、
ｎ＝ｋ−１の前記キャリア周期における前記タイマタスク処理済時間合計にＣｓｕｒｋ×Ｔｒａｔｅｋを加算することで、ｎ＝ｋの前記キャリア周期における前記タイマタスク処理済時間合計を算出する請求項１２に記載の処理装置。
【請求項１４】
前記タイマタスク処理済時間合計の初期値は、前記タイマタスク処理の要求が起きた時の前記キャリア周期の前記キャリア周期余剰時間における前記タイマタスク処理の実行時間であり、それを計測する請求項１３に記載の処理装置。
【請求項１５】
前記タイマタスク処理済時間合計の初期値を、ゼロに設定する請求項１３に記載の処理装置。
【請求項１６】
ｎ＝ｋの前記キャリア周期における前記キャリア周期をＣｃｙｃｋとすると、ｎ＝ｋの前記キャリア周期において、
ｎ＝ｋ−１までの前記キャリア周期の合計時間にＣｃｙｃｋを加算することで、ｎ＝ｋまでの前記キャリア周期の合計時間を算出する請求項１〜１５いずれか１項に記載の処理装置。
【請求項１７】
前記キャリア周期の合計時間の初期値はゼロである請求項１６に記載の処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスク処理を実行する処理装置に関するものである。
【背景技術】
【０００２】
特許文献１に示されるように、各種割り込み要求を、優先度の高い割り込み要求順に実行処理するマイクロプロセッサが知られている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平２−６８６３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
割り込み要求としては、タイマ周期毎に実行するタイマタスクと、突発的に実行するイベントタスクとがある。タイマタスクはタイマ周期内において処理を実行し終えなければならない、という制約がある。したがって例えばマイクロプロセッサがタイマタスクを実行処理している際に、タイマタスクよりも優先度の高いイベントタスクの割り込み要求がある場合、そのイベントタスクを優先的に処理すると、タイマタスクをタイマ周期内に終えることができなくなる虞がある。
【０００５】
そこで本発明は上記問題点に鑑み、タイマ周期内においてタイマタスク処理を実行し終えるとともに、イベントタスク処理をタイマタスク処理に先行して実行することのできる処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記した目的を達成するための開示された発明の１つは、タスク処理を実行する処理装置（１００）であって、
タスク処理としては、タイマ周期毎に実行するタイマタスク処理、タイマ周期よりも周期の短いキャリア周期毎に実行するキャリアタスク処理、および、突発的に実行するイベントタスク処理があり、
キャリア周期におけるキャリアタスク処理の実行時間を除いたキャリア周期余剰時間において、タイマタスク処理およびイベントタスク処理の少なくとも一方を実行しており、
タイマタスク処理の要求がある場合、キャリア周期毎に、タイマ周期内におけるキャリア周期余剰時間の総時間であるキャリア周期余剰時間合計の推定と更新、および、タイマタスク処理を実行し終えるのに要する時間であるタイマタスク処理残時間の算出と更新を行うとともに、キャリア周期余剰時間合計からタイマタスク処理残時間を減算することで、タイマ周期におけるタイマタスク処理の実行に割り当てることのできる時間からタイマタスク処理の実行時間を除いたタイマ周期余剰時間の算出と更新を行い、
タイマ周期余剰時間において、イベントタスク処理を実行しており、
タイマタスク処理の要求と、タイマタスク処理よりも優先度の高いイベントタスク処理の要求とがあり、タイマ周期余剰時間が所定の条件を満たす場合、キャリア周期余剰時間におけるイベントタスク処理の実行割合を０％よりも大きい割合とし、タイマタスク処理の実行割合を１００％よりも低め、タイマタスク処理の実行を一時的に保留して、イベントタスク処理を実行する。
【０００７】
タイマ周期余剰時間が所定の条件を満たす場合、タイマ周期余剰時間においてイベントタスク処理を実行したとしても、タイマ周期内においてタイマタスク処理を実行し終えることができる。したがって上記したようにタイマタスク処理の実行中においてイベントタスク処理の要求があり、タイマ周期余剰時間が所定の条件を満たす場合、タイマタスク処理の実行を一時的に保留して、イベントタスク処理を実行する。これによれば、タイマ周期内においてタイマタスク処理を実行し終えることができるとともに、イベントタスク処理をタイマタスク処理に先行して実行することができる。
【０００８】
なお、特許請求の範囲に記載の請求項、および、課題を解決するための手段それぞれに記載の要素に括弧付きで符号をつけている。この括弧付きの符号は実施形態に記載の各構成要素との対応関係を簡易的に示すためのものであり、実施形態に記載の要素そのものを必ずしも示しているわけではない。括弧付きの符号の記載は、いたずらに特許請求の範囲を狭めるものではない。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係る電子制御装置の概略構成を示すブロック図である。
【図２】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図３】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図４】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図５】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図６】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図７】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図８】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図９】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１０】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１１】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１２】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１３】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１４】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１５】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１６】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１７】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１８】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図１９】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図２０】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図２１】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図２２】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図２３】電子制御装置の演算処理を説明するためのタイミングチャートである。
【図２４】キャリアタスクを説明するためのフローチャートである。
【図２５】キャリア関連時間演算を説明するためのフローチャートである。
【図２６】優先判定を説明するためのフローチャートである。
【図２７】タイマタスク実行判定を説明するためのフローチャートである。
【図２８】タイマタスクを説明するためのフローチャートである。
【図２９】タイマタスク処理を説明するためのフローチャートである。
【図３０】クリア処理を説明するためのフローチャートである。
【図３１】電子制御装置の演算処理の変形例を説明するためのタイミングチャートである。
【図３２】タイマタスク実行判定の変形例を説明するためのフローチャートである。
【図３３】電子制御装置の演算処理の変形例を説明するためのタイミングチャートである。
【発明を実施するための形態】
【００１０】
以下、本発明に係る処理装置を、モータを制御する電子制御装置に適用した場合の実施形態を図に基づいて説明する。
（第１実施形態）
図１に示すように電子制御装置１００はインバータ２００と電気的に接続されている。そしてインバータ２００はモータ３００と電気的に接続されている。電子制御装置１００はインバータ２００を構成するスイッチ素子をＰＷＭ制御することで、モータ３００のステータコイルに３相交流を流す。これによりステータコイルから３相回転磁界が発生し、モータ３００のロータに回転トルクが発生する。この回転トルクによってモータ３００の回転が促される、若しくは、妨げられる。なおモータ３００は車両の出力軸に連結されている。したがって上記の回転トルクによって車両の推進力や制動力が発生される。
【００１１】
電子制御装置１００は図示しない各種センサと電気的に接続されている。具体的に言えば電子制御装置１００は電流センサや回転角センサなどと電気的に接続されている。電流センサは３相交流を検出する。回転角センサはロータの回転角を検出する。電子制御装置１００はこれら電流センサや回転角センサの検出信号に基づいて、ロータに発生している回転トルク（以下、出力トルクと示す）を算出する。
【００１２】
図１に示すように電子制御装置１００は上位ＥＣＵ４００と図示しないバス配線を介して通信可能となっている。上位ＥＣＵ４００はロータに発生させたい回転トルク（以下、目標トルクと示す）を電子制御装置１００に通知する。電子制御装置１００は目標トルクと出力トルクとの偏差を算出する。そして電子制御装置１００は算出した偏差がゼロとなるように、インバータ２００に出力するＰＷＭ信号のデューティ比を決定する。
【００１３】
上記したように電子制御装置１００はインバータ２００の制御、上位ＥＣＵ４００との通信を行う。また電子制御装置１００は故障時などにおいてもそれに応じた処理を行う。以下においては、電子制御装置１００によるインバータ２００の制御をキャリアタスク処理と示す。また電子制御装置１００による上位ＥＣＵ４００との通信をタイマタスク処理と示す。そして電子制御装置１００による故障時の処理をイベントタスク処理と示す。
【００１４】
キャリアタスク処理とタイマタスク処理は周期的に行われる。キャリアタスク処理はキャリア周期内にて実行され終わらなければならない、という制約がある。同様にしてタイマタスク処理はタイマ周期内にて実行され終わらなければならない、という制約がある。キャリアタスク処理は最も優先度が高く、タイマタスク処理はキャリアタスク処理よりも優先度が低い。そしてキャリア周期はタイマ周期よりも周期が短い。
【００１５】
イベントタスク処理は突発的に行われる。イベントタスク処理としては複数種類あり、それぞれの優先度が異なる。本実施形態で説明するイベントタスク処理は、タイマタスク処理よりも優先度が高い。このように優先度の高いタイマタスク処理は、例えば電源喪失時におけるフリーズデータ保存がある。
【００１６】
電子制御装置１００はキャリアタスク処理をキャリア周期内にて行う。キャリアタスク処理の実行時間はキャリア周期よりも短い。そのため電子制御装置１００がキャリアタスク処理を実行し終わった後、キャリア周期内において余剰時間（以下、キャリア周期余剰時間と示す）が発生する。電子制御装置１００はこのキャリア周期余剰時間において、タイマタスク処理とイベントタスク処理の少なくとも一方を実行する。
【００１７】
次に、図２〜図２３に基づいて電子制御装置１００のキャリアタスク処理、タイマタスク処理、および、イベントタスク処理それぞれを具体的に説明する。なお図面においては、下付き文字を用いて各種記号を表している。しかしながら本文中においては、下付き表記とすることで各種記号が不明りょうとなることを避けるため、下付き表記としていない。
【００１８】
図２〜図２３それぞれの各種記号には記号ｎにかかわるインデックスが付与されている。これは、タイマタスク要求が起きた後のキャリア周期Ｃｃｙｃの順番を示している。なおインデックスｍも図示している。これはタイマタスク要求が起きた時のキャリア周期Ｃｃｙｃを示している。また後述するようにインデックスｍは、タイマタスク要求の終了する時のキャリア周期Ｃｃｙｃの順番も示している。
【００１９】
先ず図２〜図１５に基づいて、キャリアタスク処理を行っている最中にタイマタスク要求があった場合の電子制御装置１００の演算処理を説明する。以下に示す例では、図２に示すようにｎ＝ｍのキャリア周期Ｃｃｙｃにおける、キャリアタスク処理の実行が終了した後のキャリア周期余剰時間Ｃｓｕｒにて、タイマタスク要求Ｔｒｅｑがオフからオンに切り換っている。そしてこの後のｎ＝１のキャリア周期Ｃｃｙｃ１において電子制御装置１００はキャリアタスク処理を実行し終わっている。図２〜図１４ではこのキャリアタスク処理の終了タイミングでの電子制御装置１００の演算処理を示している。そして図１５では次のｎ＝２のキャリアタスク処理の終了タイミングでの電子制御装置１００の演算処理を示している。上記した各種終了タイミングは各図面においてキャリアタスク実行時間Ｃａｃｔ１，Ｃａｃｔ２に三角形を付与して示している。
【００２０】
なお上記したようにキャリアタスク処理はインバータ２００の制御にかかわる処理である。電子制御装置１００はこの処理を行った後に、下記に示すようにタイマタスク処理およびイベント処理にかかわる演算処理を実施する。図２〜図２３では図面を明りょうとするため、下記に示すタイマタスク処理およびイベント処理にかかわる演算処理に要する時間を省略している。
【００２１】
図２に示すように電子制御装置１００は、現時点のｎ＝１のキャリア周期Ｃｃｙｃ１におけるキャリア周期余剰時間Ｃｓｕｒ１を算出する。下式に示すように電子制御装置１００は、キャリア周期Ｃｃｙｃ１から実行済みのキャリアタスク実行時間Ｃａｃｔ１を減算することで、キャリア周期余剰時間Ｃｓｕｒ１を算出する。
（数１）
Ｃｓｕｒ１＝Ｃｃｙｃ１−Ｃａｃｔ１
【００２２】
また図３に示すように電子制御装置１００は、先のｎ＝ｍのキャリア周期Ｃｃｙｃにおいてタイマタスク処理を実行したオフセット時間αを、タイマタスク処理済みの合計時間であるタイマタスク処理済時間合計ＴａｃｔＳＵＭに格納する。すなわち電子制御装置１００は、下式に示すように、現時点でのタイマタスク処理済時間合計ＴａｃｔＳＵＭをオフセット時間αに設定する。
（数２）
ＴａｃｔＳＵＭ＝α
【００２３】
図４に示すように電子制御装置１００は、次のｎ＝２のキャリア周期Ｃｃｙｃ２におけるキャリア周期余剰時間Ｃｓｕｒ２を算出する。電子制御装置１００は外部信号とキャリア周期との相関マップを有している。電子制御装置１００は外部信号と相関マップとに基づいて、次に行うキャリア周期Ｃｃｙｃ２をこの時点において決定している。また電子制御装置１００は、キャリアタスク処理において実行時間の最も長いキャリアタスク最長時間ＣｅｓｔＭＡＸを記憶している。下式に示すように電子制御装置１００は、キャリア周期Ｃｃｙｃ２からキャリアタスク最長時間ＣｅｓｔＭＡＸを減算することで、キャリア周期余剰時間Ｃｓｕｒ２を推定する。
（数３）
Ｃｓｕｒ２＝Ｃｃｙｃ２−ＣｅｓｔＭＡＸ
【００２４】
また図５に示すように電子制御装置１００は、ｎ＝２のキャリア周期Ｃｃｙｃ２以降におけるキャリア周期も推定する。電子制御装置１００はキャリアタスク最長時間ＣｅｓｔＭＡＸだけではなく、周期の最も短いキャリア最短周期ＣｃｙｃＭＩＮも記憶している。電子制御装置１００は、キャリア周期Ｃｃｙｃ２以降におけるキャリア周期をキャリア最短周期ＣｃｙｃＭＩＮと推定する。また電子制御装置１００は、下式に示すようにキャリア最短周期ＣｃｙｃＭＩＮからキャリアタスク最長時間ＣｅｓｔＭＡＸを減算することで、キャリア周期Ｃｃｙｃ２以降におけるキャリア周期余剰最短時間ＣｓｕｒＭＩＮを算出する。
（数４）
ＣｓｕｒＭＩＮ＝ＣｃｙｃＭＩＮ−ＣｅｓｔＭＡＸ
【００２５】
次に図６に示すように電子制御装置１００は、現時点のｎ＝１のキャリア周期Ｃｃｙｃ１における、タイマタスク処理の実行残り時間であるタイマタスク処理残時間Ｔｅｓｔ１を算出する。電子制御装置１００はタイマタスク処理に最大限かかる時間を、タイマタスク処理残時間Ｔｅｓｔ０として予め記憶している。また上記したように電子制御装置１００はタイマタスク処理済時間合計ＴａｃｔＳＵＭを求めている。そこで下式に示すように電子制御装置１００は、タイマタスク処理残時間Ｔｅｓｔ０からタイマタスク処理済時間合計ＴａｃｔＳＵＭを減算することで、現時点でのタイマタスク処理残時間Ｔｅｓｔ１を算出する。
（数５）
Ｔｅｓｔ１＝Ｔｅｓｔ０−ＴａｃｔＳＵＭ
【００２６】
図７に示すように電子制御装置１００は、タイマ周期Ｔｃｙｃ中において、キャリア周期Ｃｃｙｃが幾つ含まれるのかを推定する。この場合、電子制御装置１００は下式を演算することで、キャリア周期Ｃｃｙｃの含まれる数ｍを推定する。なお下式のＲｏｕｎｄｄｏｗｎは、小数点以下切り下げを意味している。図示例では、ｍ＝１０としている。そして式中に含まれるＣｃｙｃＳＵＭは後述するキャリア周期合計であり、ここではＣｃｙｃ１に等しい。以下においては、下式の（Ｔｃｙｃ−ＣｃｙｃＳＵＭ）／ＣｃｙｃＭＩＮから得られる小数点以下の数字をｍａとする。
（数６）
ｍ＝Ｒｏｕｎｄｄｏｗｎ（（Ｔｃｙｃ−ＣｃｙｃＳＵＭ）／ＣｃｙｃＭＩＮ）＋１
【００２７】
図８に示すように電子制御装置１００は、キャリアタスクの推定時間の合計（総時間）であるキャリアタスク推定時間合計ＣｅｓｔＳＵＭを算出する。ｎ＝１のキャリア周期Ｃｃｙｃ１において電子制御装置１００はキャリアタスク処理を実行し終えている。そしてそのキャリアタスク実行時間はＣａｃｔ１である。またｎ＝１０（ｍ）のキャリア周期Ｃｃｙｃ１０におけるキャリア周期余剰時間にてタイマ周期Ｔｃｙｃが終了している。上記した少数点以下の数字ｍａは、下記するようにｎ＝１０のキャリア周期におけるキャリアタスク実行時間βとキャリア周期余剰時間γとに依存している。ｍａ≧ＣｅｓｔＭＡＸ／ＣｃｙｃＭＩＮの場合、β＝ＣｅｓｔＭＡＸ、γ＝ＣｃｙｃＭＩＮ×ｍａ−βである。またこれとは異なりｍａ＜ＣｅｓｔＭＡＸ／ＣｃｙｃＭＩＮの場合、β＝ＣｃｙｃＭＩＮ×ｍａ、γ＝０である。
【００２８】
以上に示したようにタイマ周期Ｔｃｙｃ内の１０回のキャリア周期Ｃｃｙｃ１〜Ｃｃｙｃ１０のうち、ｎ＝１のキャリア周期Ｃｃｙｃ１ではキャリアタスク処理の実行時間がＣａｃｔ１で求められている。そしてｎ＝１０のキャリア周期Ｃｃｙｃ１０ではキャリアタスク実行時間はβで求められる。したがって現時点でのタイマ周期Ｔｃｙｃ内においてキャリアタスク処理の実行する時間の合計である、キャリアタスク推定時間合計ＣｅｓｔＳＵＭは下式で表される。
（数７）
ＣｅｓｔＳＵＭ＝ＣｅｓｔＭＡＸ×（１０−１−１）＋β
【００２９】
図９に示すように電子制御装置１００は、現時点でのタイマ周期Ｔｃｙｃ内におけるキャリア周期余剰時間の合計（総時間）であるキャリア周期余剰時間合計ＣｓｕｒＳＵＭを算出する。上記したように電子制御装置１００はｎ＝１，２におけるキャリア周期余剰時間Ｃｓｕｒ１，Ｃｓｕｒ２を算出し終えている。また電子制御装置１００はｎ＝１０（ｍ）におけるキャリア周期余剰時間γも算出し終えている。したがって現時点でのキャリアタスク周期余剰時間合計ＣｓｕｒＳＵＭは下式で表される。
（数８）
ＣｓｕｒＳＵＭ＝Ｃｓｕｒ１＋Ｃｓｕｒ２＋ＣｓｕｒＭＩＮ×（１０−２−１）＋γ
【００３０】
図１０において、ｎ＝１のキャリア周期Ｃｃｙｃ１におけるキャリアタスク実行時間Ｃａｃｔ１をキャリア周期余剰時間合計ＣｓｕｒＳＵＭとキャリアタスク推定時間合計ＣｅｓｔＳＵＭとに同列で並べて示す。これにタイマタスク処理済時間合計ＴａｃｔＳＵＭが加わることで、タイマ周期Ｔｃｙｃの内訳が完成する。
【００３１】
図１１において、現時点でのタイマタスク処理残時間Ｔｅｓｔ１の原点をキャリア周期余剰時間合計ＣｓｕｒＳＵＭの原点とそろえて示す。すると、この両者の差が現時点におけるタイマ周期余剰時間Ｔｓｕｒ１として浮かび上がる。このタイマ周期余剰時間Ｔｓｕｒ１は、タイマ周期Ｔｃｙｃ内においてキャリアタスク処理とタイマタスク処理を行った結果、処理可能時間として最低限余ることの期待される余剰時間である。下式に示すように電子制御装置１００は、キャリア周期余剰時間合計ＣｓｕｒＳＵＭからタイマタスク処理残時間Ｔｅｓｔ１を減算することで、現時点でのタイマ周期余剰時間Ｔｓｕｒ１を算出する。
（数９）
Ｔｓｕｒ１＝ＣｓｕｒＳＵＭ−Ｔｅｓｔ１
【００３２】
イベントタスク要求Ｅｒｅｑは未だオフである。したがって図１２に破線で囲って示すように電子制御装置１００は、ｎ＝１のキャリア周期Ｃｃｙｃ１におけるキャリア周期余剰時間Ｃｓｕｒ１にタイマタスク処理を割り当てることを決定する。
【００３３】
図１３に示すように電子制御装置１００は、ｎ＝１のキャリア周期Ｃｃｙｃ１におけるタイマタスク実行割合Ｔｒａｔｅを１００％に設定する。次いで電子制御装置１００は、下式で示すようにタイマタスク処理済時間合計ＴａｃｔＳＵＭを更新する。下式の左辺のタイマタスク処理済時間合計ＴａｃｔＳＵＭは更新後の値を示し、右辺のタイマタスク処理済時間合計ＴａｃｔＳＵＭは更新前の値を示している。なお更新前のタイマタスク処理済時間合計ＴａｃｔＳＵＭは数２で示されるようにオフセット時間αと等しい。
（数１０）
ＴａｃｔＳＵＭ＝ＴａｃｔＳＵＭ＋Ｃｓｕｒ１×Ｔｒａｔｅ１
【００３４】
図１４に示すように電子制御装置１００は、タイマ周期Ｔｃｙｃにおける消費時間を示すキャリア周期合計ＣｃｙｃＳＵＭを更新する。下式に示すように電子制御装置１００は、キャリアタスク実行時間Ｃａｃｔ１とキャリア周期余剰時間Ｃｓｕｒ１とからキャリア周期合計ＣｃｙｃＳＵＭを更新する。
（数１１）
ＣｃｙｃＳＵＭ＝Ｃｃｙｃ１＝Ｃａｃｔ１＋Ｃｓｕｒ１
【００３５】
以上が、ｎ＝１のキャリア周期Ｃｃｙｃ１において電子制御装置１００が行うキャリアタスクである。
【００３６】
次いで図１５に、ｎ＝２のキャリア周期Ｃｃｙｃ２において電子制御装置１００が行うキャリアタスクを示す。この場合に電子制御装置１００は、キャリア周期Ｃｃｙｃ２におけるタイマタスク処理残時間Ｔｅｓｔ２、キャリアタスク推定時間合計ＣｅｓｔＳＵＭ、および、キャリア周期余剰時間合計ＣｓｕｒＳＵＭそれぞれを算出する。そして電子制御装置１００は、これらによりタイマ周期余剰時間Ｔｓｕｒ２を算出する。以下、詳説しないが、電子制御装置１００はｎ＝１の場合と同様にして、タイマタスク実行割合Ｔｒａｔｅ２を１００％に設定し、タイマタスク処理済時間合計ＴａｃｔＳＵＭとキャリア周期合計ＣｃｙｃＳＵＭそれぞれを更新する。
【００３７】
ｋを１以上ｍ以下の自然数とすると、ｎ＝ｋにおける電子制御装置１００の各種演算式は、下式にまとめて示すことができる。これらは、図２３にまとめて示される。
（数１２）
Ｃｓｕｒｋ＝Ｃｃｙｃｋ−Ｃａｃｔｋ
（数１３）
Ｃｓｕｒ（ｋ＋１）＝Ｃｃｙｃ（ｋ＋１）−ＣｅｓｔＭＡＸ
（数１４）
ＣｓｕｒＭＩＮ＝ＣｃｙｃＭＩＮ−ＣｅｓｔＭＡＸ
（数１５）
Ｔｅｓｔｋ＝Ｔｅｓｔ０−ＴａｃｔＳＵＭ
（数１６）
ｍ＝Ｒｏｕｎｄｄｏｗｎ（（Ｔｃｙｃ−ＣｃｙｃＳＵＭ）／ＣｃｙｃＭＩＮ）＋ｋ
（数１７）
ＣｅｓｔＳＵＭ＝ＣｅｓｔＭＡＸ×（ｍ−１−ｋ）＋β
（数１８）
ＣｓｕｒＳＵＭ＝Ｃｓｕｒｋ＋Ｃｓｕｒ（ｋ＋１）＋ＣｓｕｒＭＩＮ×（ｍ−２−ｋ）＋γ
（数１９）
Ｔｓｕｒｋ＝ＣｓｕｒＳＵＭ−Ｔｅｓｔｋ
（数２０）
ＴａｃｔＳＵＭ＝ＴａｃｔＳＵＭ＋Ｃｓｕｒｋ×Ｔｒａｔｅｋ
（数２１）
ＣｃｙｃＳＵＭ＝ＣｃｙｃＳＵＭ＋Ｃｃｙｃｋ
【００３８】
なお、上記した一般式の左辺のタイマタスク処理済時間合計ＴａｃｔＳＵＭとキャリア周期合計ＣｃｙｃＳＵＭそれぞれは更新後の値を示す。そして右辺のタイマタスク処理済時間合計ＴａｃｔＳＵＭとキャリア周期合計ＣｃｙｃＳＵＭそれぞれは更新前の値を示す。タイマタスク処理済時間合計ＴａｃｔＳＵＭの初期値はオフセット時間αである。キャリア周期合計ＣｃｙｃＳＵＭの初期値はゼロである。そして特許請求の範囲との対応関係としては、数１８が数１０１に相当する。数１２が数１０２に相当する。数１３が数１０３に相当する。数１４が数１０４に相当する。数１５が数１０６に相当する。数１６が数１０５に相当する。
【００３９】
次に、図１６〜図１９に基づいて、キャリアタスク処理とタイマタスク処理を行っている最中にイベントタスク要求があった場合の電子制御装置１００の演算処理を説明する。
【００４０】
以下に示す例では、図１６に示すように、ｎ＝３のキャリア周期Ｃｃｙｃ３においてイベントタスク要求Ｅｒｅｑがオフからオンに切り換っている。図１６と図１７はキャリア周期Ｃｃｙｃ３におけるキャリアタスク処理Ｃａｃｔ３の終了タイミングでの電子制御装置１００の演算処理を示している。また図１８はｎ＝４のキャリア周期Ｃｃｙｃ４におけるキャリアタスク処理Ｃａｃｔ４の終了タイミングでの電子制御装置１００の演算処理を示している。そして図１９はイベントタスク要求Ｅｒｅｑがオンからオフに切り換ったｎ＝６のキャリア周期Ｃｃｙｃ６におけるキャリアタスク処理Ｃａｃｔ６の終了タイミングでの電子制御装置１００の演算処理を示している。
【００４１】
図１６に示すように、タイマタスク要求Ｔｒｅｑだけではなくイベントタスク要求Ｅｒｅｑもオンになっている。したがって電子制御装置１００はｎ＝３のキャリア周期余剰時間Ｃｓｕｒ３におけるタイマタスクとイベントタスクそれぞれの実行割合を決定する。タイマタスクの実行割合とイベントタスクの実行割合の和は１００％で表される。したがってこれら２つの実行割合を決定することは、タイマタスク実行割合Ｔｒａｔｅ３の値を決定することに相当する。
【００４２】
ｎ＝２まではタイマタスク要求Ｔｒｅｑだけがオンとなっていた。そのためにタイマタスク実行割合Ｔｒａｔｅ１，Ｔｒａｔｅ２それぞれは１００％となっていた。しかしながらタイマタスク実行割合Ｔｒａｔｅ３は、イベントタスク要求Ｅｒｅｑがオンになると、タイマ周期余剰時間Ｔｓｕｒ３の値によっては変化することとなる。
【００４３】
図１７に示すように電子制御装置１００は、ｎ＝３のキャリア周期Ｃｃｙｃ３においてキャリア周期余剰時間Ｃｓｕｒ３をイベントタスク処理に割り当てた場合のタイマ周期余剰時間Ｔｓｕｒｐ３を算出する。この新たなタイマ周期余剰時間Ｔｓｕｒｐ３は、下式で表すことができる。
（数２２）
Ｔｓｕｒｐ３＝Ｔｓｕｒ３−Ｃｓｕｒ３
【００４４】
新たなタイマ周期余剰時間Ｔｓｕｒｐ３が０以上の場合、キャリア周期余剰時間Ｃｓｕｒ３においてイベントタスク処理を実行したとしても、タイマ周期Ｔｃｙｃ内においてタイマタスク処理を実行し終えることを示している。したがってこの場合に電子制御装置１００は、図１８に示すようにタイマタスク実行割合Ｔｒａｔｅ３を０％にする。これによりイベントタスク実行割合は１００％になる。
【００４５】
以後、電子制御装置１００はキャリア周期余剰時間合計ＣｓｕｒＳＵＭとタイマ周期余剰時間Ｔｓｕｒとに基づいて、新たなタイマ周期余剰時間Ｔｓｕｒｐを算出する。そして電子制御装置１００は新たなタイマ周期余剰時間Ｔｓｕｒｐが０以上の場合にタイマタスク実行割合Ｔｒａｔｅを０％にし続ける。これによりイベントタスク実行割合が１００％になり、電子制御装置１００はキャリア周期余剰時間Ｃｓｕｒにおいてイベントタスク処理を実行する。
【００４６】
図１９に示すようにｎ＝５のキャリア周期Ｃｃｙｃ５においてイベントタスク要求Ｅｒｅｑがオンからオフに切り換る。したがってこの後のキャリア周期Ｃｃｙｃ６以降において電子制御装置１００はタイマタスク実行割合Ｔｒａｔｅを１００％に戻し、タイマタスク処理をキャリア周期余剰時間において実行する。
【００４７】
なお図１９ではキャリア周期余剰時間Ｃｓｕｒ５の途中でイベントタスク要求Ｅｒｅｑがオフに切り換っているが、キャリア周期余剰時間Ｃｓｕｒ５においてタイマタスク実行割合Ｔｒａｔｅ５は０％に固定されるように図示している。これは、イベントタスク要求Ｅｒｅｑのオンへの切り換わりタイミングが、キャリアタスクの終了後だからである。すなわち、イベントタスク要求Ｅｒｅｑのオンへの切り換わりタイミングが、タイマタスク実行割合Ｔｒａｔｅの決定後だからである。
【００４８】
図１９に示すようにタイマ周期余剰時間Ｔｓｕｒ６は、イベントタスク処理の実行のために以前のタイマ周期余剰時間Ｔｓｕｒ１〜Ｔｓｕｒ５よりも短くなっているが、未だに有限である。したがって図２０に示すように電子制御装置１００は、タイマ周期Ｔｃｙｃの終了までにタイマタスク処理を終えることが可能となっている。
【００４９】
なお図１９においては、キャリア周期Ｃｃｙｃ５においてイベントタスク要求Ｅｒｅｑがオンからオフに切り換わる例を示した。しかしながらこれとは異なり、例えば図２１に示すようにキャリア周期余剰時間Ｃｓｕｒ３〜Ｃｓｕｒ５それぞれにおいてイベントタスク処理を行ったとしても、イベントタスク要求Ｅｒｅｑがオンからオフへと切り換わらない場合も起こり得る。そしてこの場合においてタイマ周期余剰時間Ｔｓｕｒ６が著しく短くなることも起こり得る。すなわちタイマ周期余剰時間Ｔｓｕｒ６がキャリア周期余剰時間Ｃｓｕｒ６よりも短くなったり、ゼロになったりすることも起こり得る。
【００５０】
このような場合に電子制御装置１００は、図２２に示すようにイベントタスク処理を一次的に保留して、タイマタスク処理を実行する。これにより電子制御装置１００はタイマ周期Ｔｃｙｃ内においてタイマタスク処理を実行し終える。そして電子制御装置１００は、タイマタスク処理を実行し終えた後に再びイベントタスク処理を実行する。なおｎ＝１０のキャリア周期余剰時間Ｃｓｕｒ１０におけるタイマタスク実行割合Ｔｒａｔｅ１０は、この場合Ｔｅｓｔ１０×１００／Ｃｓｕｒ１０に設定される。
【００５１】
以上に示したように電子制御装置１００は、タイマタスク要求Ｔｒｅｑとイベントタスク要求Ｅｒｅｑの両方が起こった場合、タイマ周期余剰時間に基づいて、タイマタスク処理とイベントタスク処理の少なくとも一方を行う。なおこれまでに図２〜図２２を用いて説明したキャリアタスク処理、タイマタスク処理、および、イベントタスク処理に対する電子制御装置１００の演算処理は、例えば図２３に示すように一般化してまとめて示すことができる。
【００５２】
次に、図２４に基づいて電子制御装置１００のキャリアタスクを説明する。このキャリアタスクは、上記したインバータ２００の制御にかかわるキャリアタスク処理の他に、タイマタスク処理およびイベント処理にかかわる演算処理を含んでいる。簡単に言えば、このキャリアタスクは上記した数１２〜数２２にかかわる演算処理やタイマタスク実行割合Ｔｒａｔｅの演算処理を含んでいる。
【００５３】
図２４に示すステップＳ１０において電子制御装置１００は、キャリアタスクの始めにオフセット時間αを計測して、タイマタスク処理済時間合計ＴａｃｔＳＵＭに格納する。そして電子制御装置１００はステップＳ２０へと進む。オフセット時間αの具体的な計測方法については、後述する。
【００５４】
ステップＳ２０へ進むと電子制御装置１００は、キャリアタスク処理を実行する。この際に電子制御装置１００は、キャリアタスク実行時間Ｃａｃｔを計測する。このキャリアタスク実行時間Ｃａｃｔの計測は、電子制御装置１００の内部クロックをカウントすることで行ってもよい。若しくは、キャリアタスク処理の各種処理にかかる時間を電子制御装置１００が予め記憶しておく。そして電子制御装置１００はキャリアタスク処理における条件分岐を検出する。電子制御装置１００は条件分岐に基づいてキャリアタスク処理において実行した各種処理を選び出し、その選び出した各種処理の時間を加算することで、キャリアタスク実行時間を計測してもよい。なお電子制御装置１００がキャリアタスク実行時間にかかわるマップを有し、そのマップに含まれる値の探索処理が上記の各種処理に含まれることもある。その場合に電子制御装置１００は、マップに含まれる値の探索時間を入力信号に基づいて検出する。この際に電子制御装置１００は線形補完を行ってもよい。探索時間の次に電子制御装置１００は探索回数を検出する。最後に電子制御装置１００は探索時間に探索回数を乗算することで、そのマップの値検出にかかわる処理時間を算出する。この後に電子制御装置１００はステップＳ３０へ進む。
【００５５】
ステップＳ３０へ進むと電子制御装置１００は、タイマタスク要求Ｔｒｅｑがオンか否かを判定する。タイマタスク要求Ｔｒｅｑがオンの場合、電子制御装置１００はステップＳ４０へと進む。これとは異なりタイマタスク要求Ｔｒｅｑがオフの場合、電子制御装置１００はステップＳ５０へと進む。
【００５６】
ステップＳ４０へ進むと電子制御装置１００は、キャリア関連時間を演算する。このキャリア関連時間演算は、上記した数１２〜数２０に示す演算に相当する。キャリア関連時間については後で詳説する。この後に電子制御装置１００はステップＳ６０へと進む。
【００５７】
ステップＳ６０へ進むと電子制御装置１００は、イベントタスク要求Ｅｒｅｑがオンか否かを判定する。イベントタスク要求Ｅｒｅｑがオンの場合、電子制御装置１００はステップＳ７０へと進む。これとは異なりイベントタスク要求Ｅｒｅｑがオフの場合、電子制御装置１００はステップＳ８０へと進む。
【００５８】
ステップＳ７０へ進むと電子制御装置１００は、優先判定を行う。この優先判定は後で詳説する。この後に電子制御装置１００はキャリアタスクを終了する。
【００５９】
ステップＳ８０へ進むと電子制御装置１００は、タイマタスク実行割合Ｔｒａｔｅを１００％にする。この後に電子制御装置１００はステップＳ９０へと進む。
【００６０】
ステップＳ９０へ進むと電子制御装置１００は、タイマタスク処理済時間合計ＴａｃｔＳＵＭを更新する。このタイマタスク処理済時間合計ＴａｃｔＳＵＭの更新は、上記した数２０によって示される。
【００６１】
ステップＳ１００へ進むと電子制御装置１００は、キャリア周期合計ＣｃｙｃＳＵＭを更新する。このキャリア周期合計ＣｃｙｃＳＵＭの更新は、上記した数２１によって示される。この後に電子制御装置１００はキャリアタスクを終了する。
【００６２】
フローを遡り、ステップＳ３０においてタイマタスク要求Ｔｒｅｑがオフと判定してステップＳ５０へ進むと電子制御装置１００は、イベントタスク要求Ｅｒｅｑがオンか否かを判定する。イベントタスク要求Ｅｒｅｑがオンの場合、電子制御装置１００はステップＳ１１０へと進む。これとは異なりイベントタスク要求Ｅｒｅｑがオフの場合、電子制御装置１００はステップＳ１２０へと進む。
【００６３】
ステップＳ１１０へ進むと電子制御装置１００は、タイマタスク実行割合Ｔｒａｔｅを０％にする。これによりイベントタスク実行割合が１００％になる。この後に電子制御装置１００はキャリアタスクを終了する。
【００６４】
ステップＳ１２０へ進むと電子制御装置１００は、タイマタスク実行割合Ｔｒａｔｅを１００％にする。この後に電子制御装置１００はキャリアタスクを終了する。
【００６５】
以上に示したように電子制御装置１００は、タイマタスク要求Ｔｒｅｑとイベントタスク要求Ｅｒｅｑそれぞれがオフの場合、キャリアタスク処理を実行しつつ、タイマタスク実行割合Ｔｒａｔｅを１００％とする。これはつまり、タイマタスク実行割合Ｔｒａｔｅは初期値として１００％に設定されることを意味している。
【００６６】
また電子制御装置１００は、タイマタスク要求Ｔｒｅｑがオンであり、イベントタスク要求Ｅｒｅｑがオフの場合、キャリアタスク処理を実行しつつ、キャリア関連時間演算を行う。そして電子制御装置１００はタイマタスク実行割合Ｔｒａｔｅを１００％に設定し、タイマタスク処理済時間合計ＴａｃｔＳＵＭとキャリア周期合計ＣｃｙｃＳＵＭそれぞれを更新する。
【００６７】
電子制御装置１００は、タイマタスク要求Ｔｒｅｑがオフであり、イベントタスク要求Ｅｒｅｑがオンの場合、キャリアタスク処理を実行しつつ、タイマタスク実行割合Ｔｒａｔｅを０％としてイベントタスク処理を実行する。
【００６８】
電子制御装置１００は、タイマタスク要求Ｔｒｅｑとイベントタスク要求Ｅｒｅｑそれぞれがオンの場合、キャリアタスク処理を実行しつつ、キャリア関連時間演算を行う。そして電子制御装置１００は優先判定を行い、優先判定結果に基づいてタイマタスク処理およびイベント処理の少なくとも一方を実行する。
【００６９】
次に、図２５に基づいてステップＳ４０のキャリア関連時間演算を説明する。
【００７０】
先ずステップＳ４１において電子制御装置１００は数１２〜数１４を演算してキャリア周期余剰時間Ｃｓｕｒｋ、Ｃｓｕｒ（ｋ＋１）、ＣｓｕｒＭＩＮを算出する。そして電子制御装置１００はステップＳ４２へと進む。
【００７１】
ステップＳ４２へ進むと電子制御装置１００は数２０を演算してタイマタスク処理済時間合計ＴａｃｔＳＵＭを算出する。そして電子制御装置１００はステップＳ４３へと進む。なおタイマタスク処理済時間合計ＴａｃｔＳＵＭはｎ＝１においてオフセット時間αに設定される。そしてｎが２以上の場合にタイマタスク実行割合Ｔｒａｔｅが演算において必要になるが、これはｎ＝１のキャリア周期Ｃｃｙｃ１におけるステップＳ７０、Ｓ１１０、Ｓ１２０のいずれかにおいて設定されている。したがってこのステップＳ４２において電子制御装置１００は、実質的にはタイマタスク処理済時間合計ＴａｃｔＳＵＭを算出するのではなく、読み出すこととなる。
【００７２】
ステップＳ４３へ進むと電子制御装置１００は数１６を演算してタイマ周期Ｔｃｙｃ内においてキャリア周期Ｃｃｙｃの含まれる数ｍを算出する。換言すれば電子制御装置１００はタイマタスクに対するキャリアタスクの割り込み予定回数を算出する。そして電子制御装置１００はステップＳ４４へと進む。
【００７３】
ステップＳ４４へ進むと電子制御装置１００は数１７を演算してキャリアタスク推定時間合計ＣｅｓｔＳＵＭを算出する。そして電子制御装置１００はステップＳ４５へと進む。
【００７４】
ステップＳ４５へ進むと電子制御装置１００は数１８を演算してキャリア周期余剰時間合計ＣｓｕｒＳＵＭを算出する。そして電子制御装置１００はステップＳ４６へと進む。
【００７５】
ステップＳ４６へ進むと電子制御装置１００は数１５を演算してタイマタスク処理残時間Ｔｅｓｔｋを算出する。そして電子制御装置１００はステップＳ４７へと進む。
【００７６】
ステップＳ４７へ進むと電子制御装置１００は数１９を演算してタイマ周期余剰時間Ｔｓｕｒｋを算出する。そして電子制御装置１００はステップＳ４０のキャリア関連時間演算を終える。
【００７７】
次に、図２６に基づいてステップＳ７０の優先判定を説明する。優先判定は、ステップＳ７１〜ステップＳ７３を有する。これらのうちステップＳ７２はステップＳ９０と同じく、タイマタスク処理済時間合計ＴａｃｔＳＵＭの更新である。またステップＳ７３はステップＳ１００と同じく、キャリア周期合計ＣｃｙｃＳＵＭの更新である。したがって以下においてはステップＳ７１を説明する。
【００７８】
ステップＳ７１は、タイマタスク実行判定である。図２７に示すようにタイマタスク実行判定は、ステップＳ７４〜ステップＳ７６を有する。電子制御装置１００は先ずステップＳ７４において、ｎ＝ｋのキャリア周期Ｃｃｙｃｋにおけるキャリア周期余剰時間Ｃｓｕｒｋはタイマ周期余剰時間Ｔｓｕｒｋ以下か否かを判定する。換言すれば、数２２に示されるように、タイマ周期余剰時間Ｔｓｕｒｋからキャリア周期余剰時間Ｃｓｕｒｋを減算することで得られる新たなタイマ周期余剰時間Ｔｓｕｒｐｋが０以上か否かを判定する。新たなタイマ周期余剰時間Ｔｓｕｒｐｋが０以上の場合、電子制御装置１００はキャリア周期余剰時間Ｃｓｕｒｋの全時間においてイベントタスク処理を行ってもタイマ周期余剰時間Ｔｓｕｒは０以上であると判定して、ステップＳ７５へと進む。これとは異なり新たなタイマ周期余剰時間Ｔｓｕｒｐｋが負の場合、電子制御装置１００はキャリア周期余剰時間Ｃｓｕｒｋの全時間においてイベントタスク処理を行うとタイマ周期余剰時間Ｔｓｕｒが負になると判定して、ステップＳ７６へと進む。
【００７９】
ステップＳ７５へ進むと電子制御装置１００はタイムタスク実行割合Ｔｒａｔｅｋを０％にする。これによりイベントタスク実行割合を１００％に設定する。そして電子制御装置１００はステップＳ７１を終了する。
【００８０】
ステップＳ７６へ進むと電子制御装置１００はタイムタスク実行割合Ｔｒａｔｅｋを、キャリア周期余剰時間Ｃｓｕｒｋによってタイマタスク処理残時間Ｔｅｓｔｋを割った値に１００を乗算した値にする。これによりキャリア周期Ｃｃｙｃｋにおけるタイマタスク処理の実行時間がタイマタスク処理残時間となる。この処理時間については例えば図２２において明示している。この処理によって電子制御装置１００はステップＳ７１を終了する。
【００８１】
ここまではキャリアタスクについての説明であった。以下においては、図２８〜図３０に基づいてタイマタスクを説明する。
【００８２】
図２８に示すステップＳ２１０において電子制御装置１００は、先ずタイマタスク処理残時間Ｔｅｓｔ０を求める。本実施形態において電子制御装置１００はタイマタスク処理残時間Ｔｅｓｔ０を、タイマタスク処理に最大限かかる時間として予め記憶している。したがって電子制御装置１００はステップＳ２１０においてタイマタスク処理残時間Ｔｅｓｔ０を読み出す。この後に電子制御装置１００はステップＳ２２０へと進む。
【００８３】
なおタイマタスク処理残時間Ｔｅｓｔ０は、下記に示す方法によって検出してもよい。すなわち電子制御装置１００は、タイマタスク処理の各種処理にかかる時間を予め記憶しておく。そして電子制御装置１００はタイマタスク処理における条件分岐を推定する。電子制御装置１００は条件分岐に基づいてタイマタスク処理において実行する各種処理を選び出し、その選び出した各種処理の時間を加算する。こうすることで電子制御装置１００は、タイマタスク処理残時間Ｔｅｓｔ０を計測してもよい。なお電子制御装置１００がタイマタスク処理残時間Ｔｅｓｔ０にかかわるマップを有し、そのマップに含まれる値の探索処理が上記の各種処理に含まれることもある。その場合に電子制御装置１００は、マップに含まれる値の探索時間を入力信号に基づいて検出する。この際に電子制御装置１００は線形補完を行ってもよい。探索時間の次に電子制御装置１００は探索回数を検出する。最後に電子制御装置１００は探索時間に探索回数を乗算することで、そのマップの値検出にかかわる処理時間を算出する。
【００８４】
ステップＳ２２０へ進むと電子制御装置１００は、タイマタスク処理を実行する。このタイマタスク処理は、これまでに説明してきたように、キャリア周期余剰時間において実行される。図２〜図２３に明示してきたように、タイマタスク処理が１度のキャリア周期内のキャリア周期余剰時間内において終了しない場合、次のキャリア周期のキャリア周期余剰時間内において実行される。このようにタイマタスク処理は開始から終了までの間に何度も実行と中断とを繰り返す。このタイマタスク処理については後で図２９に基づいて説明する。タイマタスク処理の全てが終了すると、電子制御装置１００はステップＳ２３０へと進む。
【００８５】
ステップＳ２３０へ進むと電子制御装置１００は、クリア処理を実行する。このクリア処理については、後で図３０に基づいて説明する。このクリア処理を行うと、電子制御装置１００はタイマタスクを終了する。
【００８６】
次に、図２９に基づいてタイマタスク処理を説明する。タイマタスク処理は、図２９に示すように処理Ａ〜処理Ｄによって構成されているとする。そして電子制御装置１００は後述の処理進捗カウンタを有している。
【００８７】
ステップＳ２２１において電子制御装置１００は、先ず処理Ａを実行する。この処理Ａの実行が終了すると電子制御装置１００はステップＳ２２２へと進む。
【００８８】
ステップＳ２２２へ進むと電子制御装置１００は、処理進捗カウンタを１だけインクリメントする。これにより電子制御装置１００はタイマタスクの処理Ａが終了したことを記憶する。この後に電子制御装置１００はステップＳ２２３へと進む。
【００８９】
以下同様にして、ステップＳ２２３へ進むと電子制御装置１００は処理Ｂを実行する。処理Ｂの実行が終了すると電子制御装置１００はステップＳ２２４へと進む。
【００９０】
ステップＳ２２４へ進むと電子制御装置１００は、処理進捗カウンタを１だけインクリメントする。これにより処理進捗カウンタが２となり、電子制御装置１００はタイマタスクの処理Ｂが終了したことを記憶する。この後に電子制御装置１００はステップＳ２２５へと進む。
【００９１】
ステップＳ２２５へ進むと電子制御装置１００は処理Ｃを実行する。処理Ｃの実行が終了すると電子制御装置１００はステップＳ２２６へと進む。
【００９２】
ステップＳ２２６へ進むと電子制御装置１００は、処理進捗カウンタを１だけインクリメントする。これにより処理進捗カウンタが３となり、電子制御装置１００はタイマタスクの処理Ｃが終了したことを記憶する。この後に電子制御装置１００はステップＳ２２７へと進む。
【００９３】
ステップＳ２２７へ進むと電子制御装置１００は処理Ｄを実行する。処理Ｄの実行が終了すると電子制御装置１００はステップＳ２２８へと進む。
【００９４】
ステップＳ２２８へ進むと電子制御装置１００は、処理進捗カウンタをクリアする。これにより処理進捗カウンタがゼロとなり、電子制御装置１００はタイマタスク処理が終了したと判定する。以上のステップＳ２２１〜Ｓ２２８を実行することで電子制御装置１００はステップＳ２２０を終了する。
【００９５】
なお上記したように電子制御装置１００はタイマタスク要求Ｔｒｅｑがオンになったキャリア周期において、オフセット時間αを計測する。例えば電子制御装置１００が、処理Ａ〜Ｄの演算時間を予め記憶している場合、オフセット時間αを、処理進捗カウンタの値によって計測してもよい。図２９においてはタイマタスク処理が処理Ａ〜処理Ｄの４つしかなく、処理進捗カウンタの値の上限値が３である例を示した。しかしながらこの処理数をより細かく分けて、処理進捗カウンタの上限値もより大きくすれば、オフセット時間αの検出分解能を高めることができる。なおオフセット時間αは、これとは異なり、電子制御装置１００の内部クロックに基づいて計測してもよい。
【００９６】
次に、図３０に基づいてクリア処理を説明する。電子制御装置１００は先ずステップＳ２３１においてタイマタスク要求Ｔｒｅｑをオンからオフにする。この後に電子制御装置１００はステップＳ２３２へと進む。
【００９７】
ステップＳ２３２へ進むと電子制御装置１００は、タイマタスク処理済時間合計ＴａｃｔＳＵＭをゼロにクリアする。この後に電子制御装置１００はステップＳ２３３へと進む。
【００９８】
ステップＳ２３３へ進むと電子制御装置１００は、タイマタスク処理残時間Ｔｅｓｔをゼロにクリアする。以上のステップＳ２３１〜Ｓ２３３を実行することで電子制御装置１００はステップＳ２３０を終了する。
【００９９】
次に、本実施形態に係る電子制御装置１００の作用効果を説明する。上記したように電子制御装置１００は、タイマタスク要求Ｔｒｅｑがオンの場合、タイマ周期余剰時間Ｔｓｕｒを算出する。タイマ周期余剰時間Ｔｓｕｒが有限の場合、タイマ周期Ｔｃｙｃ内のキャリア周期余剰時間Ｃｓｕｒにおいて、タイマタスク処理の全てを実行したとしても、タスク処理を行うことのできる時間があまることを示す。したがってタイマタスク要求Ｔｒｅｑだけではなくイベントタスク要求Ｅｒｅｑがオンであり、タイマ周期余剰時間Ｔｓｕｒが有限の場合、電子制御装置１００はタイマタスク実行割合Ｔｒａｔｅを１００％から低下させる。これにより電子制御装置１００はイベントタスク実行割合をゼロから有限の値に変化させる。これによれば、タイマ周期Ｔｃｙｃ内においてタイマタスク処理を実行し終えることができるとともに、イベントタスク処理をタイマタスク処理に先行して実行することができる。
【０１００】
電子制御装置１００は、タイマタスク要求Ｔｒｅｑとイベントタスク要求Ｅｒｅｑがオンであり、タイマ周期余剰時間Ｔｓｕｒがキャリア周期余剰時間Ｃｓｕｒ以上の場合、タイマタスク実行割合を０％にし、イベントタスク実行割合を１００％にする。この場合、そのキャリア周期余剰時間Ｃｓｕｒの全時間をイベントタスク処理に割り当てたとしても、タイマ周期余剰時間Ｔｓｕｒは０以上となる。そのため上記したようにイベントタスク処理の実行割合を１００％にしても、タイマ周期Ｔｃｙｃ内においてタイマタスク処理を実行し終えることができる。
【０１０１】
数１３に示すように、ｎ＝ｋ＋１のキャリア周期におけるキャリア周期余剰時間Ｃｓｕｒ（ｋ＋１）を、ｎ＝ｋ＋１のキャリア周期Ｃｃｙｃ（ｋ＋１）からキャリアタスク最長時間ＣｅｓｔＭＡＸを減算することで算出している。また数１４に示すように、ｎ＝ｋ＋２以降のキャリア周期におけるキャリア周期余剰時間を、キャリア最短周期ＣｃｙｃＭＩＮからキャリアタスク最長時間ＣｅｓｔＭＡＸを減算することで算出している。これによりタイマ周期余剰時間Ｔｓｕｒｋは、タイマ周期Ｔｃｙｃ内においてキャリアタスク処理とタイマタスク処理を行った結果、処理可能時間として最低限余ることの期待される余剰時間となっている。したがってタイマ周期余剰時間Ｔｓｕｒｋが有限である限り、その時間内においてイベントタスク処理を行っても、タイマ周期Ｔｃｙｃ内においてタイマタスク処理を実行し終えることができる。
【０１０２】
以上、本発明の好ましい実施形態について説明したが、本発明は上記した実施形態になんら制限されることなく、本発明の主旨を逸脱しない範囲において、種々変形して実施することが可能である。
【０１０３】
（第１の変形例）
本実施形態では処理装置を、モータ３００を制御する電子制御装置１００に適用した例を示した。しかしながら処理装置の適用としては上記例に限定されず、例えばエンジンを制御するエンジンＥＣＵに適用することができる。なお処理装置が提供する手段、機能、方法、および、プログラムなどは、実体的なメモリ装置や非遷移的実体的記録媒体に記録されたソフトウェアおよびそれを実行するコンピュータ、ソフトウェアのみ、ハードウェアのみ、あるいはそれらの組合せによって提供することができる。例えば、処理装置がハードウェアである電子回路によって提供される場合、それは多数の論理回路を含むデジタル回路、またはアナログ回路によって提供することができる。
【０１０４】
（第２の変形例）
本実施形態では、タイマタスク処理よりも優先度の高いイベントタスク処理（以下、第１イベントタスク処理と示す）の要求があった場合の電子制御装置１００の演算処理を説明した。しかしながらイベントタスク処理としては、タイマタスク処理よりも優先度の低いイベントタスク処理（以下、第２イベントタスク処理と示す）もある。電子制御装置１００は、タイマタスク要求だけではなく、第１イベントタスク処理の要求と第２イベントタスク処理それぞれの要求が同時にあった場合、第１イベントタスク処理の実行割合を有限とし、第２イベントタスク処理の実行割合をゼロとする。これによれば、優先度の高い第１イベントタスク処理を、優先度の低い第２イベントタスク処理よりも先に処理することができる。なお複数のイベントタスク処理の実行割合の内の１つを有限にした場合、他のイベントタスク処理の実行割合はゼロになる。またタイマタスク要求と第２イベントタスク処理の要求があった場合、電子制御装置１００はタイマタスク処理が実行され終わるまで第２イベントタスク処理の実行割合をゼロにする。電子制御装置１００はタイマタスク処理が実行され終わると、第２イベントタスク処理の実行割合を１００％にする。第２イベントタスク処理は、例えばダイアグ情報の送信要求である。
【０１０５】
（第３の変形例）
本実施形態では、図２７に示すように、タイマタスク実行判定において電子制御装置１００は、ｎ＝ｋのキャリア周期Ｃｃｙｃｋにおけるキャリア周期余剰時間Ｃｓｕｒｋがタイマ周期余剰時間Ｔｓｕｒｋよりも大きい場合に、ステップＳ７６を実行する例を示した。ステップＳ７６において電子制御装置１００は、タイムタスク実行割合Ｔｒａｔｅｋを、キャリア周期余剰時間Ｃｓｕｒｋによってタイマタスク処理残時間Ｔｅｓｔｋを割った値に１００を乗算した値にする。
【０１０６】
これとは異なり、例えば図３２に示すように、ｎ＝ｋのキャリア周期Ｃｃｙｃｋにおけるキャリア周期余剰時間Ｃｓｕｒｋがタイマ周期余剰時間Ｔｓｕｒｋよりも大きい場合に、電子制御装置１００はステップＳ７７を実行してもよい。ステップＳ７７において電子制御装置１００は、タイムタスク実行割合Ｔｒａｔｅｋを１００％にする。これによりイベントタスク実行割合を０％にしてもよい。なおこの場合、タイマタスク実行割合Ｔｒａｔｅではなく、単にタイムタスク処理を実行するのか否かを決定するタイマタスクフラグを切り換えるようにしてもよい。同様にして、イベントタスク実行割合ではなく、単にイベントタスク処理を実行するのか否かを決定するイベントタスクフラグを切り換えるようにしてもよい。フラグがオンの場合に実行割合が１００％になり、オフの場合に実行割合が０％になる。
【０１０７】
（第４の変形例）
本実施形態では、電子制御装置１００がキャリアタスク処理、タイマタスク処理、および、イベントタスク処理を行う例を示した。しかしながら電子制御装置１００は、タイマタスク処理とイベントタスク処理のみを行ってもよい。この場合に電子制御装置１００は、タイマ周期をタイマタスク処理とイベントタスク処理に割り当てる。
【０１０８】
先ず電子制御装置１００はタイマタスクを行う際に、タイマ周期Ｔｃｙｃからタイマタスク処理残時間Ｔｅｓｔ０を減算して、タイマ周期余剰時間Ｔｓｕｒを算出する。そして電子制御装置１００は、タイマ周期余剰時間Ｔｓｕｒが有限であり、例えば図３３に示すようにタイマタスク処理を実行している最中にイベントタスク要求Ｅｒｅｑがオンになると、タイマ周期余剰時間Ｔｓｕｒをイベントタスク処理に割り当てることを決定する。このイベントタスクがタイマタスクよりも優先度が高い場合、電子制御装置１００は一時的にタイマタスク処理の実行を保留して、イベントタスク処理を優先して実行する。タイマ周期余剰時間内においてイベントタスク要求がオフになると、電子制御装置１００は再びタイマタスク処理を実行する。この場合タイマ周期余剰時間Ｔｓｕｒは有限なので、電子制御装置１００はタイマ周期Ｔｃｙｃ内においてタイマタスク処理を実行し終えることができる。図３３では、タイマ周期余剰時間Ｔｓｕｒとイベントタスク実行時間Ｅａｃｔとが等しいとして図示している。
【０１０９】
なお、イベントタスク処理の実行によってタイマ周期余剰時間Ｔｓｕｒがゼロになったとしても、イベントタスク要求Ｅｒｅｑがオンからオフに切り換らないことも起こり得る。その場合に電子制御装置１００は、実行していたイベントタスク処理を一時的に保留して、タイマタスク処理を再び実行する。そして次のタイマ周期Ｔｃｙｃ内において、電子制御装置１００はイベントタスク処理を実行する。なおタイマタスク要求Ｔｒｅｑが所定周期を空けて実行される場合、電子制御装置１００はタイマタスク要求Ｔｒｅｑがオフになった後の所定周期において、イベントタスク処理を実行する。
【０１１０】
（その他の変形例）
本実施形態ではオフセット時間αを計測して、タイマタスク処理済時間合計ＴａｃｔＳＵＭに格納する例を示した。しかしながらオフセット時間αは端数なので、図３１に示すように無視してゼロに設定してもよい。この場合、演算処理が簡素化される。
【０１１１】
本実施形態では、ｎ＝ｍのキャリア周期におけるキャリアタスク実行時間βとキャリア周期余剰時間γとを具体的に算出する例を示した。しかしながらβとγそれぞれは端数なので、図３１に示すように無視してゼロと設定してもよい。この場合、演算処理が簡素化される。
【０１１２】
本実施形態では、ｎ＝ｋ＋１のキャリア周期におけるキャリア周期余剰時間Ｃｓｕｒ（ｋ＋１）をキャリアタスク最長時間ＣｅｓｔＭＡＸに基づいて推定する例を示した。またｎ＝ｋ＋２以降のキャリア周期におけるキャリア周期余剰時間を、キャリア最短周期ＣｃｙｃＭＩＮとキャリアタスク最長時間ＣｅｓｔＭＡＸとに基づいて推定する例を示した。しかしながら、例えば電子制御装置１００の搭載される車両の走行状態が一定で、モータ３００の駆動状態も一定であることが予測される場合、ｎ＝ｋ＋１以降のキャリア周期余剰時間を、キャリア周期余剰最短時間以上、ｎ＝ｋのキャリア周期余剰時間Ｃｓｕｒｋ以下の値に設定してもよい。このように、ｎ＝ｋ＋１以降のキャリア周期余剰時間の推定は、固定値を用いるのではなく、車両の運転状況などに応じて変化させてもよい。またその車両の走行状態からの変化率が分かる場合、一定状態時に推定したキャリア周期余剰時間に、その変化率を乗算することで、ｎ＝ｋ＋１以降のキャリア周期余剰時間の推定を行ってもよい。
【符号の説明】
【０１１３】
１００…電子制御装置
Ｃｃｙｃ…キャリア周期
Ｃａｃｔ…キャリアタスク実行時間
Ｃｓｕｒ…キャリア周期余剰時間
Ｔｅｓｔ…タイマタスク処理残時間
ＣｅｓｔＳＵＭ…キャリアタスク推定時間合計
ＣｓｕｒＳＵＭ…キャリア周期余剰時間合計
Ｔｓｕｒ…タイマ周期余剰時間
ＴａｃｔＳＵＭ…タイマタスク処理済時間合計
ＣｃｙｃＳＵＭ…キャリア周期合計
【図１】
0006551194.tif 000002
【図２】
0006551194.tif 000003
【図３】
0006551194.tif 000004
【図４】
0006551194.tif 000005
【図５】
0006551194.tif 000006
【図６】
0006551194.tif 000007
【図７】
0006551194.tif 000008
【図８】
0006551194.tif 000009
【図９】
0006551194.tif 000010
【図１０】
0006551194.tif 000011
【図１１】
0006551194.tif 000012
【図１２】
0006551194.tif 000013
【図１３】
0006551194.tif 000014
【図１４】
0006551194.tif 000015
【図１５】
0006551194.tif 000016
【図１６】
0006551194.tif 000017
【図１７】
0006551194.tif 000018
【図１８】
0006551194.tif 000019
【図１９】
0006551194.tif 000020
【図２０】
0006551194.tif 000021
【図２１】
0006551194.tif 000022
【図２２】
0006551194.tif 000023
【図２３】
0006551194.tif 000024
【図２４】
0006551194.tif 000025
【図２５】
0006551194.tif 000026
【図２６】
0006551194.tif 000027
【図２７】
0006551194.tif 000028
【図２８】
0006551194.tif 000029
【図２９】
0006551194.tif 000030
【図３０】
0006551194.tif 000031
【図３１】
0006551194.tif 000032
【図３２】
0006551194.tif 000033
【図３３】
0006551194.tif 000034