(57)【要約】【課題】簡易な構成で安全性と信頼性とを向上させることのできるようにした車両制御装置およびその制御方法を提供すること。【解決手段】車両を制御する車両制御装置１は、所定の処理の実行を管理する実行管理部Ｐ３と、所定の処理の実行状態の履歴を記録する実行状態記録部Ｐ５と、所定の処理の実行に関する設定情報であって、ジッタの許容値であるジッタ許容値を含む設定情報を管理する設定情報管理部Ｐ４と、を備え、実行管理部Ｐ３は、所定の処理のうちジッタの発生した調整対象の処理の処理の実行タイミングを調整対象の処理のジッタ許容値に基づいて調整する。【選択図】図１
2019164616.tif 000002
【特許請求の範囲】
【請求項１】
車両を制御する車両制御装置であって、
所定の処理の実行を管理する実行管理部と、
前記所定の処理の実行状態の履歴を記録する実行状態記録部と、
前記所定の処理の実行に関する設定情報であって、ジッタの許容値であるジッタ許容値を含む前記設定情報を管理する設定情報管理部と、
を備え、
前記実行管理部は、前記所定の処理のうちジッタの発生した調整対象の処理の実行タイミングを前記調整対象の処理のジッタ許容値に基づいて調整する、
車両制御装置。
【請求項２】
前記調整対象の処理に発生したジッタが、周期的に発生する周期的ジッタであるか、一時的に発生する一時的ジッタであるかを判定するジッタ判定部をさらに備え、
前記実行管理部は、前記ジッタ判定部の判定結果に基づいて、前記調整対象の処理の実行タイミングを前記ジッタ許容値に基づいて調整する、
請求項１に記載の車両制御装置。
【請求項３】
前記実行管理部は、前記ジッタ判定部が前記調整対象の処理に発生したジッタが前記周期的ジッタであると判定すると、前記調整対象の処理の実行タイミングを前記周期的ジッタに対応させることにより調整する、
請求項２に記載の車両制御装置。
【請求項４】
前記実行管理部は、前記ジッタ判定部が前記調整対象の処理に発生したジッタが前記一時的ジッタであると判定すると、前記調整対象の処理の実行タイミングを前記一時的ジッタに対応させることにより一時的に調整する、
請求項２に記載の車両制御装置。
【請求項５】
前記実行管理部は、前記調整対象の処理に発生したジッタと前記調整対象の処理の実行タイミングとに応じて、前記調整対象の処理の次回の実行タイミングを前記所定の処理のうちの他の処理の実行タイミングと入替る、
請求項１に記載の車両制御装置。
【請求項６】
前記実行管理部は、前記所定の処理の中から、前記調整対象の処理に設定される優先度よりも低い優先度を持つ処理を前記他の処理として選択する、
請求項５に記載の車両制御装置。
【請求項７】
前記調整対象の処理に発生したジッタが、周期的に発生する周期的ジッタであるか、一時的に発生する一時的ジッタであるかを判定するジッタ判定部をさらに備え、
前記実行管理部は、
前記ジッタ判定部の判定結果に基づいて、前記調整対象の処理の実行タイミングを前記ジッタ許容値に基づいて調整する実行タイミング調整部と、
前記調整対象の処理に発生したジッタと前記調整対象の処理の実行タイミングとに応じて、前記調整対象の処理の実行タイミングを前記所定の処理のうちの他の処理の実行タイミングと入替る実行タイミング入替部とを備える、
請求項１に記載の車両制御装置。
【請求項８】
前記所定の処理には、タスク処理と割込み処理とが含まれる、
請求項１に記載の車両制御装置。
【請求項９】
車両を制御する車両制御装置の制御方法であって、
前記車両制御装置は、
所定の処理の実行を管理する実行管理部と、
前記所定の処理の実行状態の履歴を記録する実行状態記録部と、
前記所定の処理の実行に関する設定情報であって、ジッタの許容値であるジッタ許容値を含む前記設定情報を管理する設定情報管理部と、
を備えており、
前記実行管理部により、前記所定の処理のうちジッタの発生した調整対象の処理の実行タイミングを前記調整対象の処理のジッタ許容値に基づいて調整させる、
車両制御装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、車両制御装置およびその制御方法に関する。
【背景技術】
【０００２】
車両制御システムは、電子化された車両制御機器を操作するＥＣＵ、すなわち電子制御装置（Electronic Control Unit）と、複数のＥＣＵ間の通信を可能にする車載ＬＡＮ（Local Area Network）とから構成される。車両制御システムは、環境負荷の低減や安全要求に伴い、システムの高機能化、機能の分散化、複雑化が進んでいる。その結果、ＥＣＵのソフトウェアアーキテクチャの標準化、安全装置の電子制御化とその安全性確保の仕組みの重要性が増大している。
【０００３】
車両制御機器における安全装置の電子制御化に伴い、機能安全の仕組みが車両制御システムに導入されつつある。機能安全とは、電気・電子システムに不具合が生じたときに、システムが安全側に遷移することで安全を確保する考えである。例えば、自動車向け機能安全規格ＩＳＯ２６２６２では、規格独自の安全度水準であるＡＳＩＬ（Automotive Safety Integrity Level）が設けられている。最上位レベルＡＳＩＬ＿Ｄに準拠するには、車両制御装置の安全に関わる機能の構成が、主機能、安全装置、監視装置と明確に分離していることを第三者に対して証明できることが求められている。
【０００４】
一般的な車両制御装置に機能安全規格ＩＳＯ２６２６２を適用すると、車両制御システムではさまざまなＡＳＩＬのソフトウェアが混在すると予測される。そのため、既存のソフトウェアが機能安全規格に準拠するには、ソフトウェア間の干渉を防止する仕組みや、その仕組みに関わる処理の高速化、軽量化、信頼性向上等の技術が必要となる。
【０００５】
システムを構成するソフトウェア間の相互作用を防止する仕組みとして、時間保護機能、メモリ保護機能、データ保護機能が知られている。例えば、安全度水準の低いＱＭ（Quality Management）のソフトウェアが暴走した場合でも、ＡＳＩＬ＿ Ｄのソフトウェアといった安全度水準の高いソフトウェアの動作を阻害するのを抑制し、システムに影響を及ぼすことを防ぐ仕組みである。
【０００６】
特許文献１では、専用のパーティショニングを設けて実行タイミングを保障することにより、異なる安全度の処理が影響することを防いでいる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第５１３６６９５号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
さまざまなサプライヤとＯＥＭ（Original Equipment Manufacturer）のソフトウェアが混在するシステムにおいて、サプライヤは、限られた情報内でソフトウェアを設計する必要がある。しかしながら、ＯＥＭ製のソフトウェアや他社製のソフトウェアからの意図しない高優先度処理により、サプライヤの担当する制御処理の実行タイミングの間隔にずれ（ジッタ）が発生し、制御が不安定化する可能性がある。特許文献１では、時分割スケジューリング等を用いて会社ごとにタスクを実行する時間帯を決めている。しかし、特許文献１の方法では、タイムスロットが小さいために設計が複雑化する上に、オーバーヘッドが大きくなる。
【０００９】
本発明は、上記課題に鑑みてなされたもので、その目的は、簡易な構成で安全性と信頼性とを向上させることのできるようにした車両制御装置およびその制御方法を提供することにある。本発明のさらなる目的は、所定の処理に設定されたジッタの許容値を利用することにより、ジッタによる影響を抑制できるようにした車両制御装置およびその制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
上記課題を解決するべく、本発明に従う車両制御装置は、車両を制御する車両制御装置であって、所定の処理の実行を管理する実行管理部と、所定の処理の実行状態の履歴を記録する実行状態記録部と、所定の処理の実行に関する設定情報であって、ジッタの許容値であるジッタ許容値を含む設定情報を管理する設定情報管理部と、を備え、実行管理部は、所定の処理のうちジッタの発生した調整対象の処理の処理の実行タイミングを調整対象の処理のジッタ許容値に基づいて調整する。
【発明の効果】
【００１１】
本発明によれば、ジッタの発生した調整対象の処理の実行タイミングを、調整対象の処理のジッタ許容値に基づいて調整することができる。
【図面の簡単な説明】
【００１２】
【図１】車両制御装置としてのＥＣＵの機能構成図である。
【図２】ＥＣＵのハードウェア構成およびソフトウェア構成図である。
【図３】タイマ管理テーブルの例を示す図である。
【図４】処理情報管理テーブルの例を示す図である。
【図５】ログ記録テーブルの例を示す図である。
【図６】オフセット調整テーブルの例を示す図である。
【図７】キュー管理テーブルの例を示す図である。
【図８】割込み受付部の動作フローの例を示す図である。
【図９】ＣＰＵリソース管理部の動作フローの例を示す図である。
【図１０】キュー操作部の動作フローの例を示す図である。
【図１１】ソフトウェア制御部の動作フローの例を示す図である
【図１２】タイマ管理部の動作フローの例を示す図である
【図１３】オフセット調整部の動作フローの例を示す図である。
【図１４】ジッタ評価部の動作フローの例を示す図である
【図１５】オフセット決定部の動作フローの例を示す図である
【図１６】タスク実行部の動作フローの例を示す図である
【発明を実施するための形態】
【００１３】
以下、図面に基づいて、本発明の実施の形態を説明する。本実施形態に係る車両制御装置およびその制御方法では、高優先度のタスクまたは割込み処理により実行タイミングがずれてしまったタスクの実行タイミングを、ジッタ許容値を利用して調整する。これにより、本実施形態では、車両制御装置のＯＳ（オペレーティングシステム）が管理する処理（タスク）の実行タイミングのずれを簡易な制御構成で軽減することができる。
【００１４】
本実施形態に係る車両制御装置は、複数の所定の処理（タスク処理と割込み処理を含む）の実行タイミングや実行順番、実行状態を管理するソフトウェア制御部と、前記処理の実行状態（実行タイミング、実行時間、実行状態など）の履歴を記録する実行状態記録部と、前記処理に関わる設定情報（実行周期、最短/最大実行間隔、実行時間、デッドラインなど）を記憶した設定情報記憶部とを備える。設定情報管理部は、前記処理が期待された設定情報とのずれ（以下、ジッタ）、例えば実行間隔とのずれ、実行時間とのずれ、の許容程度をあらわすジッタ許容度を管理することもできる。そして、ソフトウェア制御部は、ジッタ許容度を参照し、所定の周期から外れたタイミングで実行された処理を次の起動タイミングにおいてジッタ許容度に応じて調整する。
【００１５】
周期的に実行されるジッタであるか、それとも一時的に実行されたジッタであるかを判別し、ジッタの種類に応じて前記処理の実行タイミングを一時的または恒久的に変化させることもできる。
【００１６】
ジッタと実行タイミングに応じて、同じ実行周期内で他の処理と実行タイミングを入れ替えることもできる。
【実施例１】
【００１７】
図１〜図１６を用いて実施例を説明する。図１は、「車両制御装置」の例としてのＥＣＵ１の機能構成を示す説明図である。本実施例では、インバータを制御するＥＣＵ１を例に挙げて説明するが、インバータ以外の制御対象を制御するＥＣＵにも適用することができる。
【００１８】
ＥＣＵ１は、インバータなどの制御対象装置ＣＴを制御する電子制御装置である。ＥＣＵ１は、それぞれ後述するように、実行部Ｐ１、割込み受付部Ｐ２、実行管理部Ｐ３、設定情報管理部Ｐ４、実行状態記録部Ｐ５、ジッタ判別部Ｐ６といった機能を備える。
【００１９】
実行部Ｐ１は、タスク処理または割込み処理を実行する機能である。以下、タスク処理を「タスク」と、割込み処理を「割込み」と、それぞれ略記する場合がある。「所定の処理」は、タスク処理と割込み処理の両方を含む。実行部Ｐ１は、実行管理部Ｐ３で管理されている実行タイミングに従って、実行キューに格納されたタスクを優先度の高い順番に実行する。さらに、実行部Ｐ１は、割込み受付部Ｐ２が割込みを受け付けると、タスクの実行を一時中断し、受け付けられた割込み処理を実行する。割込み処理の終了後に中断されたタスクの実行が再開される。
【００２０】
実行管理部Ｐ３は、タスク処理や割込み処理の実行を管理する機能である。詳しくは、実行管理部Ｐ３は、タスク処理および割込み処理の、実行タイミングと実行順番と実行状態とを管理することができる。
【００２１】
実行管理部Ｐ３は、実行タイミング調整部Ｐ３１と、実行タイミング入替部Ｐ３２とを備える。実行タイミング調整部Ｐ３２は、ジッタ判定部Ｐ６の判定結果に基づいて、調整対象のタスク処理の実行タイミングをジッタ許容値に基づいて調整する機能である。実行タイミング入替部Ｐ３２は、調整対象のタスク処理に発生したジッタと実行タイミングとに応じて、調整対象のタスク処理の実行タイミングを他のタスク処理の実行タイミングと入れ替える。すなわち、実行キューの中での順番を変更する。
【００２２】
設定情報管理部Ｐ４は、タスク処理および割込み処理の実行に関する設定情報を管理する機能である。設定情報には、ジッタの許容値（以下、ジッタ許容値とも呼ぶ）が含まれている。さらに設定情報には、例えば、優先度、実行周期、最大実行間隔、キュー優先度、キュー順序などの情報を含めることもできる。
【００２３】
実行状態記録部Ｐ５は、タスク処理や割込み処理の実行状態の履歴を記録する機能である。実行状態記録部Ｐ５は、例えば、実行時間、終了時間、実行間隔、平均実行間隔などの情報を記録する。
【００２４】
ジッタ判別部Ｐ６は、調整対象の処理に発生したジッタが、周期的に発生する周期的ジッタであるか、一時的に発生する一時的ジッタであるかを判定する機能である。
【００２５】
実行管理部Ｐ３の実行タイミング調整部Ｐ３１は、ジッタ判定部の判定結果に基づいて、調整対象の処理の実行タイミングをジッタ許容値に基づいて調整する。実行タイミング調整部Ｐ３１は、ジッタ判定部Ｐ６が調整対象の処理に発生したジッタが周期的ジッタであると判定すると、調整対象の処理の実行タイミングを周期的ジッタに対応させることにより調整する。
【００２６】
さらに、実行管理部Ｐ３の実行タイミング入替部Ｐ３２は、調整対象の処理に発生したジッタと調整対象の処理の実行タイミングとに応じて、調整対象のタスク処理の次回の実行タイミングを前記所定の処理のうちの他の処理の実行タイミングと入れ替える。
【００２７】
図２は、ＥＣＵ１のハードウェア構成およびソフトウェア構成の概略を示す。インバータ制御装置のＥＣＵ１として説明するが、これに限らず、他の制御対象用のＥＣＵにも適用することができる。
【００２８】
ＥＣＵ１は、例えばプログラム記憶部２、演算部３、データ記憶部４、割込みコントローラ５、内部バス６を備える。
【００２９】
演算部３は、プログラム記憶部２に格納されているコンピュータプログラムを実行するプロセッサコア（CPU : Central Processing Unit）である。
【００３０】
プログラム記憶部２は、コンピュータプログラムを格納する記憶装置である。プログラム記憶部２は、例えば割込み受付部２０１、ＣＰＵリソース管理部２０２、キュー操作部２０３、ソフトウェア制御部２０４、  タイマ管理部２０５、オフセット調整部２０６、ジッタ評価部２０７、オフセット決定部２０８、タスク実行部２０９を格納する。
【００３１】
割込み受付部２０１は、図外のＥＣＵからの割込み処理を受け付けるコンピュータプログラムである。割込み受付部２０１は、図１の割込み受付部Ｐ２に対応する。ＣＰＵリソース管理部２０２は、演算部（ＣＰＵ）３の演算資源を管理するコンピュータプログラムである。キュー操作部２０３は、キューに格納されるタスクの順番などを操作するコンピュータプログラムである。キュー操作部２０３は、図１の実行タイミング入替部Ｐ３２に対応する。
【００３２】
ソフトウェア制御部２０４は、タスク処理や割込み処理の実行を管理するコンピュータプログラムである。ソフトウェア制御部２０４は、図１の実行管理部Ｐ３に対応する。タイマ管理部２０５は、タイマ情報を管理するコンピュータプログラムである。
【００３３】
オフセット調整部２０６は、タスク処理の実行タイミングをずらす時間（オフセット）を調整するコンピュータプログラムである。オフセット調整部２０６は、図１の実行タイミング調整部Ｐ３１に対応する。
【００３４】
ジッタ評価部２０７は、発生したジッタが周期的なジッタであるのか、それとも一時的なジッタであるのかを判別するコンピュータプログラムである。ジッタ評価部２０７は、図１のジッタ判別部Ｐ６に対応する。
【００３５】
オフセット決定部２０８は、オフセット調整部２０６により使用されるコンピュータプログラムであり、オフセットを決定する。オフセット決定部２０８は、オフセット調整部２０６と共に、図１の実行タイミング調整部Ｐ３１に対応する。タスク実行部２０９は、キューから取り出されたタスクを実行するコンピュータプログラムである。タスク実行部２０９は、図１の実行部Ｐ１に対応する。
【００３６】
演算部３が、プログラム記憶部２に格納されたコンピュータプログラムを読み込んで実行することにより、本発明に係るＥＣＵの機能が実現される。
【００３７】
データ記憶部４は、例えば、図３で後述するタイマ管理テーブル４０１、図４で後述する処理情報管理テーブル４０２、図５で後述するログ記録テーブル４０３、図６で後述するオフセット調整テーブル４０４、図７で後述するキュー管理テーブル４０５を格納する記憶装置である。
【００３８】
割込みコントローラ５は、ハードウェアタイマからノンマスカブル信号を受け取ると、演算部の実行中の処理を中断させ、マスク不可の割込み（ノンマスカブル割込み）を発生させる。
【００３９】
本実施例に係るＥＣＵ１は、図２に示す構成に限定されない。例えば、データを保存するための不揮発性メモリ（バックアップＲＡＭ）、複数の演算部３により共有される共有メモリ、図示せぬセンサなどを備えてもよい。
【００４０】
図３は、タイマ管理テーブル４０１の例を示す。時刻情報を管理するタイマ管理テーブル４０１は、例えば名称フィールド４０１１と、値フィールド４０１２とを備える。名称フィールド４０１１は、タイマ管理テーブル４０１で管理する対象の名称である。名称フィールド４０１１には、例えば、タイマカウンタ、最大タイマカウンタ（タイマカウンタの最大値）が設定されるが、タイマ管理テーブル４０１で管理する対象の種類や数および管理方法は上述の例に限らない。設定値フィールド４０１２は、タイマ管理テーブル４０１の管理対象の値を表す。
【００４１】
図４は、タスク処理や割込み処理の実行に関する情報を管理する処理情報管理テーブル４０２の例を示す。処理情報管理テーブル４０２は、図１の「設定情報管理部Ｐ４」に対応する。処理情報管理テーブル４０２は、例えば名称フィールド４０２１と、優先度フィールド４０２２と、実行周期フィールド４０２３と、最大実行間隔フィールド４０２４と、ジッタ許容値フィールド４０２５と、キュー優先度フィールド４０２６と、キュー順４０２７とを備える。
【００４２】
名称フィールド４０２１は、処理情報管理テーブル４０２が管理する処理（タスク処理の識別情報、および割込み処理の識別情報）の名称である。本実施例では、割込み処理やタスク処理を管理対象とするが、管理対象の種類や数および管理方法は図４に示す例に限らない。
【００４３】
優先度フィールド４０２２は、名称フィールド４０２１で管理される処理の優先度を格納する。本実施例では１６段階の優先度を採用しており、最高の優先度には「１」を、最低の優先度には「１６」を設定する。優先度は１６段階よりも低い段階数で管理してもよいし、１６段階よりも多い段階数で管理してもよい。実行周期フィールド４０２３は、名称フィールド４０２１で管理される処理の実行周期を格納する。本実施例では１〜１０ｍｓ周期処理と割込みである。最大実行間隔フィールド４０２４は、前述した名称フィールド４０２１で管理される処理が実行されてから次に実行されるまでの間隔の最大値を格納する。本実施例では最大実行間隔のみであるがこれに限らない。例えば、最小の実行間隔が定義されても構わない。ジッタ許容値４０２５フィールドとは、前述した実行周期フィールド４０２３等で期待された設定情報とのずれ（以下、ジッタ）、本実施例では
実行間隔とのずれの許容度を表すがこれに限らない、例えば、実行時間、最小実行間隔とのずれの許容度でもよい。キュー優先度フィールド４０２６とは、前述した演算部３のキューに詰まれる際の優先度をあらわす。キュー順フィールド４０２７とは、演算部３が処理する処理を格納するキューの順番からなる。本実施例では、順番は１から処理数までとし、同じタイミングでキューが詰まれる場合、値が小さい方を先にキューにセットすることとするが、これに限らない。
【００４４】
図５は、「実行状態記録部」の例であるログ記録テーブル４０３を示す。ログ記録テーブル４０３は、図１の実行状態記録部Ｐ５に対応する。本実施例では、ログ記録テーブル４０３は、記録対象の分だけ用意される。
【００４５】
ログ記録テーブル４０３は、例えばＩＤフィールド４０３１と、実行時間フィールド４０３２と、終了時間フィールド４０３３と、実行間隔フィールド４０３４と、平均実行間隔４０３５とを備える。
【００４６】
ＩＤフィールド４０３１は、ログ記録テーブル４０３が記録した値を識別するための識別子である。実行時間フィールド４０３２は、記録対象の処理が実行されたタイミングを記録した値である。終了時間フィールド４０３３は、記録対象の処理が終了したタイミングを記録した値である。実行間隔フィールド４０３４は、記録対象の処理の前回の実行タイミングからの経過時間をあらわす。平均実行間隔フィールド４０３５は、記録対象の処理の平均実行間隔である。平均実行間隔の値には、全処理の平均を採用してもよいし、あるいは、一定時間内の実行間隔の平均値を採用してもよい。
【００４７】
図６は、オフセットを調整するオフセット調整テーブル４０４の例を示す。オフセット調整テーブル４０４は、例えば名称フィールド４０４１と、実行状態フィールド４０４２と、オフセット４０４３と、実行タイミング調整値フィールド４０４４と、オフセットフラグ４０４５と、入れ替えフラグフィールド４０４６とを備える。
【００４８】
名称フィールド４０４１には、タスク処理を識別する情報が格納される。実行状態フィールド４０４２には、タスク処理の実行状態を識別するフラグが設定される。実行状態フィールド４０４２には例えば、未実行の場合は「０」が、待機中の場合は「１」が、実行済みの場合は「２」がフラグ値として設定される。オフセットフラグ、入替フラグについては後述する。
【００４９】
図７は、演算資源（ＣＰＵ）の使用順序を管理するキュー管理テーブル４０５の例を示す。キュー管理テーブル４０５は、演算部３が実行する処理のキューを管理するテーブルである。本実施例では、新たなタスク処理はテーブル４０５の上部に追加され、演算部３はテーブル４０５の最下部からタスク処理を実行する。
【００５０】
以上がＥＣＵ１のデータ記憶部４に格納されるテーブルの例である。テーブルの格納先はデータ記憶部４に限らない。図示せぬ他の記憶装置に記憶させてもよい。
【００５１】
次に、ＥＣＵ１の演算部３で実行されるコンピュータプログラムの動作フローについて説明する。
【００５２】
図８は、割込み受付部２０１の動作フローである。以下、図８の動作フローは、割込み受付部２０１が割込みを受け付けると開始する。
【００５３】
割込み受付部２０１は、演算部３のリソースを確認し、リソースに空きがあるか判定する（Ｓ２０１０）。割込み受付部２０１は、演算部３のリソースに空きがあれば（Ｓ２０１０：ＹＥＳ）、ステップＳ２０１４へ進む。割込み受付部２０１は、リソースに空きがなければ（Ｓ２０１０：ＮＯ）、ステップＳ２０１１へ進む。
【００５４】
割込み受付部２０１は、リソースに空きがない場合（Ｓ２０１０：ＮＯ）、演算部３が現在実行中の処理内容を退避させる（Ｓ２０１１）。退避させる対象としては、例えば、プログラムカウンタやスタックである。
【００５５】
割込み受付部２０１は、受け付けた割込み処理を実行し（Ｓ２０１２）、ステップＳ２０１３へ進む。割込み受付部２０１は、割込み処理の終了後に、ステップＳ２０１１で退避させた処理内容を復帰させて（Ｓ２０１３）、図８に示す処理を終了する。
【００５６】
一方、割込み受付部２０１は、割込みを受け付けたときに、リソースに空きがある場合（Ｓ２０１０：ＹＥＳ）、割込み処理を実行する（Ｓ２０１４）。割込み処理の終了後に、図８に示す処理は終了する。
【００５７】
図９は、ＣＰＵリソース管理部２０２の動作フローである。ＣＰＵリソース管理部２０２は、演算部３のリソースに空きがあるか判定する（Ｓ２０２０）。ＣＰＵリソース管理部２０２は、リソースに空きがある場合（Ｓ２０２０：ＹＥＳ）、ステップＳ２０２１へ進み、空きがない場合（Ｓ２０２０：ＮＯ）、ステップＳ２０２５へ進む。
【００５８】
ＣＰＵリソース管理部２０２は、図１０で後述するキュー操作部２０３を呼び出した後（Ｓ２０２１）、ステップＳ２０２２へ進む。
【００５９】
ＣＰＵリソース管理部２０２は、演算部３が受け付けた処理の開始時間（図中「Ｓｔａｒｔ」）をログ記録テーブル４０３の実行時間フィールド４０３２に記録し（Ｓ２０２２）、ステップＳ２０２３に進む。
【００６０】
ＣＰＵリソース管理部２０２は、受け付けた処理をキューから取り出して実行し（Ｓ２０２３）、ステップＳ２０２４に進む。
【００６１】
ＣＰＵリソース管理部２０２は、演算部３が受け付けた処理の終了時間（図中「Ｅｎｄ」）をログ記録テーブル４０３の終了時間フィールド４０３３に記録し（Ｓ２０２４）、ステップＳ２０２５に進む。
【００６２】
ＣＰＵリソース管理部２０２は、終了条件が満たされていれば（Ｓ２０２５：ＹＥＳ）、図９に示す処理を終了する。ＣＰＵリソース管理部２０２は、終了条件が満たされていない場合（Ｓ２０２５：ＮＯ）、ステップＳ２０２０へ戻る。
【００６３】
図１０は、キュー操作部２０３の動作フローである。図１０に示す動作フローは、図９で述べたステップＳ２０２１により呼び出されて実行される。
【００６４】
キュー操作部２０３は、キュー管理テーブル４０５に格納されたキューについて、実行タイミングが本来の実行間隔を超えているか（実行タイミング＞実行間隔）、判定する（Ｓ２０３０）。すなわち、キュー操作部２０３は、処理情報管理テーブル４０２とログ記録テーブル４０３の実行時間フィールド４０３２とを参照し、実行タイミングが実行間隔を超過しているか確認する（Ｓ２０３０）。
【００６５】
キュー操作部２０３は、実行タイミングが実行間隔を超えていると判定すると（Ｓ２０３０：ＹＥＳ）、オフセット調整テーブル４０４の入替フラグ４０４６を操作して、ステップＳ２０３１に進む。キュー操作部２０３は、実行タイミングが実行間隔を超えていない場合（Ｓ２０３０：ＮＯ）、図１０に示す処理を終了する。
【００６６】
キュー操作部２０３は、処理情報管理テーブル４０２のキュー優先度フィールド４０２６を確認し、キュー管理テーブル４０５で管理されているキュー（タスク処理）のうち、キュー操作が必要なタスク処理の優先度（キュー優先度）より低い優先度のタスク処理が有るか判定する（Ｓ２０３１）。
【００６７】
キュー操作部２０３は、キュー操作の必要なタスク処理よりも優先度の低いタスク処理がキューに格納されている場合（Ｓ２０３１：ＹＥＳ）、キュー操作が必要なタスク処理のキューとそのタスク処理よりも優先度が低いタスク処理のキューとの順番を入れ替えて（Ｓ２０３２）、図１０に示す処理を終了する。なお、キュー操作部２０３は、キュー操作の必要なタスク処理よりも低い優先度を持つタスク処理が存在しない場合（Ｓ２０３１：ＮＯ）、図１０に示す処理を終了する。
【００６８】
図１１は、ソフトウェア制御部２０４の動作フローである。ソフトウェア制御部２０４は、データ記憶部４に格納されたテーブルを初期化し（Ｓ２０４０）、図１２で後述するタイマ管理部２０５を呼び出す（Ｓ２０４１）。
【００６９】
ソフトウェア制御部２０４は、図１３で後述するオフセット調整部２０６を呼び出し（Ｓ２０４２）、さらに図１６で後述するタスク実行部９を呼び出した後（Ｓ２０４３）、ステップＳ２０１４に進む。
【００７０】
そして、ソフトウェア制御部２０４は、終了条件が満たされているか判定する（Ｓ２０４４）。ソフトウェア制御部２０４は、終了条件が満たされていれば（Ｓ２０４４：ＹＥＳ）、図１１に示す処理を終了する。ソフトウェア制御部２０４は、終了条件が満たされていなければ（Ｓ２０４４：ＮＯ）、ステップＳ２０４２へ戻る。
【００７１】
図１２は、タイマ管理部２０５の動作フローである。タイマ管理部２０５は、タイマ管理テーブル４０１からタイマカウンタおよび最大タイマカウンタを取得する。タイマ管理部２０５は、タイマカウンタの値と最大タイマカウンタと比較し、タイマカウンタが最大タイマカウンタを超えているか判定する（Ｓ２０５０）。
【００７２】
タイマ管理部２０５は、タイマカウンタの値が最大タイマカウンタを超えている場合（Ｓ２０５０：ＹＥＳ）、タイマ管理テーブル４０１のタイマカウンタの値に”０”を代入し（Ｓ２０５１）、図１２に示す処理を終了する。
【００７３】
タイマ管理部２０５は、タイマカウンタの値が最大タイマカウンタを超えていない場合（Ｓ２０５０：ＮＯ）、タイマ管理テーブル４０１のタイマカウンタの値を一つインクリメントし（Ｓ２０５２）、図１２に示す処理を終了する。
【００７４】
図１３は、オフセット調整部２０６の動作フローである。オフセット調整部２０６は、図１４で後述するジッタ評価部２０７（Ｓ２０６０）と、図１５で後述するオフセット決定部２０８（Ｓ２０６１）とを実行した後、図１３に示す処理を終了する。
【００７５】
図１４は、ジッタ評価部２０７の動作フローである。ジッタ評価部２０７は、処理ログ記録管理テーブル４０３に記録された値から平均実行間隔を算出する（Ｓ２０７０）。平均実行間隔は、実行間隔の平均値として算出することができるが、これにかぎらない。例えば、単位時間内の平均値、あるいは直前の複数回分の平均値を平均実行間隔として用いてもよい。
【００７６】
ジッタ評価部２０７は、ステップＳ２０７０で算出された平均実行間隔と処理情報管理テーブル４０２のジッタ許容値４０２５とを比較することにより、オフセット調整の対象であるタスク処理に生じた評価対象ジッタが周期的なジッタであるか否かを判定する（Ｓ２０７１）。
【００７７】
ジッタ評価部２０７は、平均実行間隔の値がジッタ許容値内である場合、評価対象ジッタは周期的ジッタであると判定し（Ｓ２０７１：ＹＥＳ）、オフセット調整テーブル４０４のオフセットフラグ４０４５に”オフセット固定”を示す値を設定し（Ｓ２０７２）、図１４に示す本処理を終了する。
【００７８】
ジッタ評価部２０７は、平均実行間隔が処理情報管理テーブル４０２のジッタ許容値４０２５から外れている場合（Ｓ２０７１：ＮＯ）、評価対象ジッタは一時的ジッタ（単発的なジッタ）であると判定する（Ｓ２０７３：ＹＥＳ）。ジッタ評価部２０７は、オフセット調整テーブル４０４のオフセットフラグ４０４５に”暫定”を示す値を設定し（Ｓ２０７４）、図１４に示す処理を終了する。
【００７９】
ジッタ評価部２０７は、評価対象ジッタが周期的ジッタまたは一時的ジッタのいずれにも該当しないと判定すると（Ｓ２０７１：ＮＯ、Ｓ２０７３：ＮＯ）、オフセット調整テーブル４０４のオフセットフラグ４０４５をクリアし（Ｓ２０７５）、図１４に示す処理を終了する。
【００８０】
図１５は、オフセット決定部２０８の動作フローである。オフセット決定部２０８は、オフセット調整テーブル４０４のオフセットフラグ４０４５を確認し、オフセットフラグ４０４５に”０”以外の値が設定されているか判定する（Ｓ２０８０）。オフセットフラグ４０４５に”０”以外の値が設定されていない場合（Ｓ２０８０：ＮＯ）、すなわちオフセットフラグ４０４５が設定されていない場合、オフセット決定部２０８は、図１５に示す処理を終了する。
【００８１】
オフセット決定部２０８は、オフセットフラグ４０４５に”０”以外の値が設定されている場合（Ｓ２０８０：ＹＥＳ）、算出したオフセットとジッタ許容値とを比較し、ジッタ許容値がオフセットよりも大きいか判定する（Ｓ２０８１）。
【００８２】
オフセット決定部２０８は、ジッタ許容値がオフセットよりも大きい場合（Ｓ２０８１：ＹＥＳ）、オフセット調整テーブル４０４のオフセットフィールド４０４３にジッタ許容値を設定する（Ｓ２０８２）。
【００８３】
そして、オフセット決定部２０８は、オフセット調整テーブル４０４のオフセットフラグ４０４５を参照し、オフセットフラグに”暫定”が設定されている場合、オフセットフラグ４０４５をクリアし（Ｓ２０８３）、図１５に示す処理を終了する。
【００８４】
一方、オフセット決定部２０８は、ジッタ許容値がオフセットを超えていない場合（Ｓ２０８１：ＮＯ）、図１４のステップＳ２０７０で算出されたオフセットをオフセット調整テーブル４０４のオフセットフィールド４０４３に設定して（Ｓ２０８４）、ステップＳ２０８２へ進む。
【００８５】
図１６は、タスク実行部２０９の動作フローである。タスク実行部２０９は、対象のタスク処理について、タイマ管理テーブル４０１と処理情報管理テーブル４０２とオフセット調整テーブル４０４とを参照し、タイマカウンタからオフセットを引いた値を対象タスク処理の実行周期で割った結果を算出する。
【００８６】
タスク実行部２０９は、対象タスク処理についての前記演算結果が”０”となる場合（Ｓ２０９０：ＹＥＳ）、対象タスク処理をキュー管理テーブル４０５にセットする（Ｓ２０９１）。これに対し、対象タスク処理についての前記演算結果が”０”にならない場合（Ｓ２０９０：ＮＯ）、ステップＳ２０９２へ進む。
【００８７】
タスク実行部２０９は、全タスク処理に対して、前述したステップＳ２０９０，Ｓ２０９１を実施したか判定し（Ｓ２０９２）、未実施のタスク処理が残っている場合（Ｓ２０９２：ＮＯ）、ステップＳ２０９０へ戻る。タスク実行部２０９は、全てのタスク処理についてＳ２０９０，Ｓ２０９１を実施した場合（Ｓ２０９２：ＹＥＳ）、図１６に示す処理を終了する。
【００８８】
以上詳述したように、本実施例によれば、ジッタの発生した調整対象のタスク処理の実行タイミングを、調整対象のタスク処理のジッタ許容値に基づいて調整することができ、簡易な構成で安全性と信頼性とを向上させることができる。
【００８９】
すなわち本実施例によれば、意図しない高優先度処理が発生しても、その処理が周期的なのかそれとも一時的な割込みなのかを判別し、その判別結果にモードついて実行タイミングの調整または実行順番の入替を実施する。これにより、本実施例では、意図せぬ高優先度処理が発生した場合でも、制御を安定化できる。
【００９０】
この結果、本実施例によれば、サプライヤの作成したソフトウェアとＯＥＭのソフトウェアとが連携して動作する車両制御装置のような情報処理システムにおいて、割込み処理などの高優先度処理が発生した場合でも、安定した制御を実現することができ、信頼性を向上することができる。
【００９１】
なお、以上の説明はあくまでも一例であり、発明を解釈する際、上記実施の形態の記載事項と特許請求の範囲の記載事項の対応関係に何ら限定も拘束もされない。
【００９２】
また、本発明の各構成要素は、任意に取捨選択することができ、取捨選択した構成を具備する発明も本発明に含まれる。さらに特許請求の範囲に記載された構成は、特許請求の範囲で明示している組合せ以外にも組み合わせることができる。
【符号の説明】
【００９３】
１：車両制御装置、２：プログラム記憶部、３：演算部、４：データ記憶部、５：割込みコントローラ、２０１：割込み受付部、２０２：ＣＰＵリソース管理部、２０３：キュー操作部、２０４：ソフトウェア制御部、２０５：タイマ管理部、２０６：オフセット調整部、２０７：ジッタ評価部、２０８：オフセット決定部、２０９：タスク実行部
【図１】
2019164616.tif 000003
【図２】
2019164616.tif 000004
【図３】
2019164616.tif 000005
【図４】
2019164616.tif 000006
【図５】
2019164616.tif 000007
【図６】
2019164616.tif 000008
【図７】
2019164616.tif 000009
【図８】
2019164616.tif 000010
【図９】
2019164616.tif 000011
【図１０】
2019164616.tif 000012
【図１１】
2019164616.tif 000013
【図１２】
2019164616.tif 000014
【図１３】
2019164616.tif 000015
【図１４】
2019164616.tif 000016
【図１５】
2019164616.tif 000017
【図１６】
2019164616.tif 000018