(57)【要約】【課題】ＣＰＵを効率良く使用しつつ、タスクのスケジューリングを行うことができる車載装置等を提供する。【解決手段】ＥＣＵ１００の制御プログラム１は、エンジン等を制御するＡ，Ｂタスク２１，２２と、パワーウインドウ等を制御するＣタスク３１とを有している。また、周期的なタイミングを生成すると共に各周期をタイムスライス（ＴＳ）とし、各ＴＳでは、各タスクには、個別に設定された１ＴＳ内動作時間にわたり実行権が付与される。そして、ＥＣＵ１００は、ＩＧスイッチの操作に基づく運転状態として、ＡＣＣ  ＯＦＦ状態，ＡＣＣ  ＯＮ状態，ＩＧ  ＯＮ直後状態，ＩＧ  ＯＮ定常状態，ＩＧ  ＯＦＦ直後状態の５つを有し、運転状態に応じて各タスクの１ＴＳ内動作時間等を変更することで、各状態において処理負荷が高いと予測されるタスクが動作する頻度を高くする。【選択図】図１
2012185541.tif 000002
【特許請求の範囲】
【請求項１】
複数のタスクに対して順次実行権を付与することで、これらのタスクを並行して動作させる車載装置であって、
自車両の状態を判別する判別手段と、
前記判別手段により判別された前記自車両の状態に応じて、それぞれの前記タスクを動作させる頻度を変更する変更手段と、
を備えることを特徴とする車載装置。
【請求項２】
請求項１に記載の車載装置において、
前記自車両の状態とは、自車両の運転を開始させるためのスイッチの操作に基づく状態であること、
を特徴とする車載装置。
【請求項３】
請求項１に記載の車載装置において、
自車両は、駆動力を得るためのエンジンとモータとが搭載されたハイブリッド車として構成されており、
前記自車両の状態とは、前記エンジン及び前記モータの稼動状態に基づく状態であること、
を特徴とする車載装置。
【請求項４】
請求項１から請求項３のうちのいずれか１項に記載の車載装置において、
前記車載装置は、周期的に到来するタイミングを生成して基準サイクルとし、該基準サイクルの１周期であるタイムスライスにおいて、前記タスクに順次前記実行権を付与し、
前記タスクには、それぞれ、前記タイムスライスにおいて前記実行権が付与される時間である１周期内動作時間と、前記タイムスライスにおいて前記実行権が付与される順番である優先順位とが設定されており、
前記変更手段は、前記１周期内動作時間と前記優先順位とのうちの少なくとも一つを変更することで、それぞれの前記タスクを動作させる頻度を変更すること、
を特徴とする車載装置。
【請求項５】
請求項１から請求項３のうちのいずれか１項に記載の車載装置において、
それぞれの前記タスクには、単位時間あたりに前記実行権が付与される時間である動作時間が設定されており、
前記変更手段は、前記タスクに設定されている前記動作時間を変更することで、それぞれの前記タスクを動作させる頻度を変更すること、
を特徴とする車載装置。
【請求項６】
請求項１から請求項５のうちのいずれか１項に記載の車載装置において、
前記タスクは、ある装置において実現される機能を再現するためのプログラムである仮想マシンとして構成されていること、
を特徴とする車載装置。
【請求項７】
複数のタスクに対して順次実行権を付与することで、これらのタスクを並行して動作させる車載装置用のスケジューリングプログラムであって、
自車両の状態を判別する判別手順と、
前記判別手順により判別された前記自車両の状態に応じて、それぞれの前記タスクを動作させる頻度を変更する変更手順と、
をコンピュータに実行させることを特徴とするスケジューリングプログラム。
【請求項８】
複数のタスクに対して順次実行権を付与することで、これらのタスクを並行して動作させる車載装置におけるスケジューリング方法であって、
自車両の状態を判別する判別手順と、
前記判別手段により判別された前記自車両の状態に応じて、それぞれの前記タスクを動作させる頻度を変更する変更手順と、
を有することを特徴とするスケジューリング方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、タスクのスケジューリングを行う車載装置等に関する。
【背景技術】
【０００２】
車両には、エンジンやブレーキ等の制御を行う制御系ＥＣＵや、メータやパワーウインドウ等の制御を行うボデー系ＥＣＵや、ナビゲーション装置等の情報系ＥＣＵ等といった異なる種類のＥＣＵが搭載されている。近年では、車両の高機能化に伴いこれらのＥＣＵの数が増加し、車両の開発コストや製造コストが増加しているため、複数のＥＣＵを一台に統合し、制御系，ボデー系，情報系といった異なる種類の機能を一台のＥＣＵで実現することが提案されている。しかしながら、ＥＣＵのプログラムにはリアルタイム性が要求されており、特に制御系の機能に関しては、リアルタイム性が損なわれることで安全上の問題が生じる危険性があるため、他の機能に比べてより厳しい時間的制約が課せられる。
【０００３】
ここで、特許文献１には、ＣＰＵの動作時間を均等に分割して一つに連なったタイムスライスを生成し、これらのタイムスライスを各プロセスに静的に割り当てるスケジューリング方法について記載されている。このようなスケジューリング方法によれば、各プロセスに割り当てられるＣＰＵの動作時間が保証されるため、動画配信処理等といった時間的制約が課せられた複数の処理を並行して行う場合であっても、各処理のサービス品質を保証することが可能となる。そして、該スケジューリング方法を異なる種類の機能を備える上述のＥＣＵに適用することで、各機能に対応するタスクの動作時間を保証することができ、制御系の機能における厳しい時間的制約を満たすことができると考えられる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平１１−２９３６９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、制御系の機能は、エンジンの稼動状況等に応じて処理負荷が大きく変動すると考えられ、該機能のリアルタイム性を保証するためには、処理負荷が最大となる場合を想定して対応するタスクに動作時間を割り当てる必要がある。これにより、エンジンを安全に制御することが可能となるが、その反面、処理負荷が低い場合には該タスクに過剰に動作時間が割り当てられてしまい、ＣＰＵの使用効率が悪化してしまう。
【０００６】
本願発明は上記課題に鑑みてなされたものであり、ＣＰＵを効率良く使用しつつ、タスクのスケジューリングを行うことができる車載装置を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題に鑑みてなされた請求項１に記載の車載装置は、複数のタスクに対して順次実行権を付与することで、これらのタスクを並行して動作させるよう構成されており、自車両の状態を判別する判別手段と、判別手段により判別された自車両の状態に応じて、それぞれのタスクを動作させる頻度を変更する変更手段と、を備えることを特徴とする。
【０００８】
このような車載装置によれば、自車両の状態毎に各タスクの処理負荷を予め測定し、各状態において、処理負荷が高くなるタスクが動作する頻度を上げると共に、処理負荷が低くなるタスクが動作する頻度を下げることができる。このため、ＣＰＵを効率良く使用しつつ、タスクのスケジューリングを行うことが可能となる。そして、これにより、ＣＰＵの性能を下げても十分なパフォーマンスを得ることができ、車載装置のコストを低減させることが可能となる。
【０００９】
なお、自車両のエンジンの稼動状態に応じて、エンジンやブレーキ等を制御するタスクの処理負荷が大きく変動することが考えられる。
そこで、請求項２に記載の車載装置では、車両の状態を、イグニッションスイッチやスタータスイッチ等といった、自車両の運転を開始させるためのスイッチの操作に基づく状態としている。
【００１０】
また、エンジンとモータとから駆動力を得るハイブリット車においては、該エンジンやモータの稼動状態に応じて、これらに関連するタスクの処理負荷が大きく変動することが考えられる。
【００１１】
そこで、請求項３に記載の車載装置では、自車両が、駆動力を得るためのエンジンとモータとが搭載されたハイブリッド車として構成されている場合において、自車両の状態を、エンジン及びモータの稼動状態に基づく状態としている。
【００１２】
このような状態に応じて各タスクが動作する頻度を変更することで、ＣＰＵを効率良く使用することが可能となる。
また、車載装置は、次のようにして各タスクが動作する頻度を変更しても良い。
【００１３】
すなわち、請求項４に記載されているように、車載装置は、周期的に到来するタイミングを生成して基準サイクルとし、該基準サイクルの１周期であるタイムスライスにおいてタスクに順次実行権を付与すると共に、タスクに対し、それぞれ、各タイムスライスにおいて実行権が付与される時間である１周期内動作時間と、各タイムスライスにおいて実行権が付与される順番である優先順位を設定しても良い。そして、変更手段は、１周期内動作時間と優先順位とのうちの少なくとも一つを変更することで、それぞれのタスクを動作させる頻度を変更しても良い。
【００１４】
また、請求項５に記載されているように、それぞれのタスクには、単位時間あたりに実行権が付与される時間である動作時間が設定されている場合であれば、変更手段は、タスクに設定されている動作時間を変更することで、それぞれのタスクを動作させる頻度を変更しても良い。
【００１５】
このような構成によれば、車両の状態に応じて各タスクが動作する頻度を柔軟に変更することができる。
また、仮想化技術により既存の車載装置のコンピュータを仮想化すると共に、仮想化されたコンピュータ上で該車載装置に搭載されているＯＳやアプリケーションを動作させることで、該車載装置を容易に再現できることが知られている。そして、仮想化技術により、既存の車載装置を再現するプログラムである仮想マシンを複数作成すると共に、これらの仮想マシンを１台の車載装置で稼動させることで、複数の車載装置を１台に統合することが提案されている。また、このようにして１台の車載装置で複数の仮想マシンを稼動させる場合には、各仮想マシンをタスクとしてスケジューリングを行うことが考えられる。
【００１６】
そこで、請求項６に記載の車載装置は、タスクは、ある装置において実現される機能を再現するためのプログラムである仮想マシンとして構成されている。
こうすることにより、例えば、１台の車載装置で複数の仮想マシンを並行して稼動させる場合において、ＣＰＵを効率良く使用することが可能となる。
【００１７】
なお、請求項７には、請求項１に記載の車載装置におけるタスクのスケジューリングを行うスケジューリングプログラムが記載されている。このようなスケジューリングプログラムによれば、ＣＰＵを効率良く使用することが可能となる。
【００１８】
また、請求項８には、請求項１に記載の車載装置におけるタスクのスケジューリング方法が記載されている。このような方法によれば、ＣＰＵを効率良く使用することが可能となる。
【図面の簡単な説明】
【００１９】
【図１】第一実施形態のＥＣＵと制御プログラムの構成を示すブロック図である。
【図２】第一実施形態における運転状態についての状態遷移図と、各運転状態に対応するスケジュールテーブルを示す表である。
【図３】第一実施形態において、運転状態に応じて各タスクの動作時間が変化することを示すタイミングチャートである。
【図４】第一実施形態における状態変化検知処理についてのフローチャートと、テーブル切替処理についてのフローチャートである。
【図５】第二実施形態のＥＣＵと制御プログラムの構成を示すブロック図である。
【図６】第二実施形態における各運転状態に対応するスケジュールテーブルを示す表である。
【図７】第二実施形態において、運転状態に応じて各ＶＭの動作時間が変化することを示すタイミングチャートである。
【図８】第三実施形態におけるハイブリッド車のエンジン，モータの駆動状態についての状態遷移図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施形態について図面を用いて説明する。なお、本発明の実施の形態は、下記の実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の形態を採りうる。
【００２１】
［第一実施形態］
［構成の説明］
まず、第一実施形態について説明する。
【００２２】
第一実施形態のＥＣＵ１００は、エンジンにより駆動される車両に搭載されており、エンジン，ＡＢＳ機能を有するブレーキ，エアバック等を制御する制御系の機能と、メータ，エアコン，キーレスエントリーシステム等を制御するボデー系の機能を有している。また、ＥＣＵ１００は、これらの機能以外にも、オーディオとしての機能やナビゲーション機能等といった情報系の機能を有していても良い。
【００２３】
なお、これらの機能はいずれもリアルタイム性が要求されるが、制御系の機能に関しては、リアルタイム性が損なわれることで安全上の問題が生じるおそれがあるため、これらの機能の中で最もハードなリアルタイム性が要求される（換言すれば、制御系の機能には、最も厳しい時間的制約が課される）。また、ボデー系の機能に関しては、リアルタイム性が損なわれることで利便性や快適性等が悪化し、自車両の運転が困難となるおそれがあるが、情報系の機能に関しては、リアルタイム性が損なわれても利便性や娯楽性等が低下するといった程度であり、ボデー系の機能は、情報系の機能に比べより高いリアルタイム性が要求される。
【００２４】
図１には、上記ＥＣＵ１００の概略構成と、ＥＣＵ１００を制御する制御プログラム１の構成を示すブロック図が記載されている。
ＥＣＵ１００は、ＩＧ端子，ＡＣＣ端子，＋Ｂ端子の三つの電源端子を有しており、電源管理ＥＣＵ２００は、自車両のイグニッションスイッチ（ＩＧスイッチ）の操作状態に応じて異なる電源端子からＥＣＵ１００に電力を供給する。また、ＥＣＵ１００は、制御プログラム１を実行するＣＰＵ１１０と、各種機能を実現するための物理デバイス１２０とを有しており、制御プログラム１は、物理デバイス１２０における、フラッシュメモリ等の記憶保持動作が不要なデバイスから構成された記憶部（図示なし）に記憶されている。
【００２５】
そして、制御プログラム１は、制御系の機能を実現するための制御系アプリ２０と、ボデー系の機能を実現するためのボデー系アプリ３０と、これらのアプリケーションを動作させるＯＳ１０とを有している。このＯＳ１０は、リアルタイムＯＳとして構成されており、制御系アプリ２０を構成するＡタスク２１，Ｂタスク２２や、ボデー系アプリ３０を構成するＣタスク３１のスケジューリングを行うスケジューリング部１１と、物理デバイス１２０からの信号を各アプリケーションに通知すると共に、各アプリケーションからの指示に応じて物理デバイス１２０を制御するデバイス制御部１２とを有している。また、スケジューリング部１１は、各タスクに実行権が付与される時間（動作時間）や、各タスクの優先順位を設定するスケジューラ設定部１１ａと、設定された動作時間や優先順位に従い各タスクに実行権を付与することで、これらのタスクを並行して動作させるスケジューラ実行部１１ｂとを有している。
【００２６】
［動作の説明］
次に、第一実施形態の制御プログラム１の動作について説明する。
（１）ＩＧスイッチの操作状態について
既に述べたように、電源管理ＥＣＵ２００は、ＩＧスイッチの操作状態に応じて異なる電源端子からＥＣＵ１００に電力を供給するが、ＥＣＵ１００は、ＩＧスイッチの操作に基づく（換言すれば、電力供給に用いられる電源端子に基づく）以下の運転状態を有する。
【００２７】
すなわち、図２（ａ）に記載されているように、運転状態として、ＩＧスイッチがＯＦＦに設定されたＡＣＣ  ＯＦＦ状態（＋Ｂ端子のみから電力が供給される）と、ＩＧスイッチがＡＣＣに設定されたＡＣＣ  ＯＮ状態，ＩＧ  ＯＦＦ直後状態（＋Ｂ端子とＡＣＣ端子とから電力が供給される）と、ＩＧスイッチがＯＮ或いはＳＴＡＲＴに設定されたＩＧ  ＯＮ直後状態，ＩＧ  ＯＮ定常状態（＋Ｂ端子、ＡＣＣ端子、及びＩＧ端子から電力が供給される）とが設けられている。
【００２８】
そして、運転状態がＡＣＣ  ＯＦＦ状態である場合にＩＧスイッチがＡＣＣに設定されると（ＡＣＣ  ＯＮ）、運転状態はＡＣＣ  ＯＮ状態となる。
また、運転状態がＡＣＣ  ＯＮ状態である場合においては、ＩＧスイッチがＯＮ或いはＳＴＡＲＴに設定されると（ＩＧ  ＯＮ）、運転状態はＩＧ  ＯＮ直後状態となり、ＩＧスイッチがＯＦＦに設定されると（ＡＣＣ  ＯＦＦ）、運転状態はＡＣＣ  ＯＦＦ状態となる。
【００２９】
また、運転状態がＩＧ  ＯＮ直後状態である場合においては、当該状態となった後、予め定められた初期時間（例えば１００ｍｓ）が経過すると、運転状態はＩＧ  ＯＮ定常状態となると共に、ＩＧスイッチがＡＣＣに設定されると（ＩＧ  ＯＦＦ）、運転状態はＩＧ  ＯＦＦ直後状態となる。
【００３０】
また、運転状態がＩＧ  ＯＮ定常状態である場合においては、ＩＧスイッチがＡＣＣに設定されると（ＩＧ  ＯＦＦ）、運転状態はＩＧ  ＯＦＦ直後状態となる。
また、運転状態がＩＧ  ＯＦＦ直後状態である場合においては、当該状態となった後、予め定められた終了時間（例えば１００ｍｓ）が経過すると、運転状態はＡＣＣ  ＯＮ状態となると共に、ＩＧスイッチがＯＮ或いはＳＴＡＲＴに設定されると（ＩＧ  ＯＮ）、運転状態はＩＧ  ＯＮ直後状態となる。
【００３１】
（２）スケジューリングについて
次に、ＥＣＵ１００に搭載されている制御プログラム１のスケジューリング部１１にて行われる、各アプリケーションを構成するタスクのスケジューリングについて説明する。
【００３２】
既に述べたように、制御系アプリ２０，ボデー系アプリ３０にはリアルタイム性が要求されており、これらのタスクには所定周期毎に割り当てられる動作時間を保証する必要がある。
【００３３】
このため、スケジューリング部１１は、周期的に到来するタイミングを生成して基準サイクルとすると共に、該基準サイクルの１周期をタイムスライス（ＴＳ（Time Sliceの略）とも記載）とし、さらに、各タスクについて、ＴＳにおける動作時間である１周期内動作時間と、実行権が付与される順番である優先順位とを設定する。そして、各ＴＳにおいて、優先順位に沿った順番で各タスクに実行権を付与すると共に、各タスクの動作時間（実行権が付与される時間）を、各自に設定された１周期内動作時間とすることで、リアルタイム性を保証した状態で各アプリケーションを動作させる。なお、このようなスケジューリング方法を、Definite Scheduling（ＤＳとも記載）と記載する。
【００３４】
また、ＩＧスイッチがＯＦＦ或いはＡＣＣに設定されるＡＣＣ  ＯＦＦ状態，ＡＣＣ  ＯＮ状態，ＩＧ  ＯＦＦ直後状態においては、エンジンが停止するため、制御系アプリの処理負荷が低下する。このため、スケジューリング部１１は、運転状態に応じて各アプリケーションを構成するタスクの動作時間を変更するよう構成されている。
【００３５】
すなわち、図２（ｂ）に記載されているように、スケジューリング部１１では、運転状態に応じて異なる長さのＴＳが設定されていると共に、Ａ〜Ｃタスクの１ＴＳ内動作時間，優先順位が設定されたスケジューリングテーブルが、運転状態毎に個別に設けられている。
【００３６】
各スケジュールテーブルでは、対応する運転状態において予測される処理負荷に基づき各タスクの優先順位，１ＴＳ内動作時間が設定されている。具体的には、エンジンが稼動しているＩＧ  ＯＮ直後状態，ＩＧ  ＯＮ定常状態や、ＩＧ  ＯＦＦがなされた直後の状態であり、エンジンを停止させるための各種処理が行われるＩＧ  ＯＦＦ直後状態では、制御系アプリ２０を構成するＡ，Ｂタスクは、ボデー系アプリ３０を構成するＣタスクよりも、１ＴＳ内動作時間が長く設定されると共に、優先順位が高く設定される。一方、エンジンが停止した後、終了時間が経過したＡＣＣ  ＯＮ状態，ＡＣＣ  ＯＦＦ状態では、Ａ，Ｂタスクは、Ｃタスクよりも１ＴＳ内動作時間が短く設定されると共に、優先順位が低く設定される。
【００３７】
そして、スケジューリング部１１は、運転状態に応じてＴＳを切り替えると共に、運転状態に対応するスケジューリングテーブルを選択し、選択したスケジューリングテーブルに従いＡ〜Ｃタスクに実行権を付与する。
【００３８】
また、図３には、運転状態の変化により各タスクの動作時間が変化する様子を示すタイミングチャートが記載されている。該タイミングチャートが示すように、運転状態がＡＣＣ  ＯＮ状態である場合には、スケジューリング部１１のスケジューラ設定部１１ａは、ＴＳを５ｍｓとすると共に、ＡＣＣ  ＯＮ状態に対応するスケジューリングテーブル（図２（ｂ−２））を選択する。そして、スケジューラ実行部１１ｂは、選択されたスケジューリングテーブルに従い、各ＴＳにおいて、Ｃタスク３１，Ａタスク２１，Ｂタスク２２の順に、それぞれ、３ｍｓ，０．５ｍｓ，０．５ｍｓの動作時間を割り当てる。
【００３９】
そして、ＩＧスイッチの操作により運転状態がＩＧ  ＯＮ直後状態となると、スケジューラ設定部１１ａは、ＴＳを１ｍｓとすると共に、ＩＧ  ＯＮ直後状態に対応するスケジューリングテーブル（図２（ｂ−４））を選択する。そして、スケジューラ実行部１１ｂは、選択されたスケジューリングテーブルに従い、各ＴＳにおいて、Ａタスク２１，Ｂタスク２２，Ｃタスク３１の順に、それぞれ、０．４ｍｓ，０．４ｍｓ，０．１ｍｓの動作時間を割り当てる。
【００４０】
その後、初期時間が経過し、運転状態がＩＧ  ＯＮ定常状態となると、スケジューラ設定部１１ａは、ＴＳを１ｍｓのまま維持し、ＩＧ  ＯＮ定常状態に対応するスケジューリングテーブル（図２（ｂ−５））を選択する。そして、スケジューラ実行部１１ｂは、選択されたスケジューリングテーブルに従い、各ＴＳにおいて、Ａタスク２１，Ｂタスク２２，Ｃタスク３１の順に、それぞれ、０．４ｍｓ，０．２ｍｓ，０．１ｍｓの動作時間を割り当てる。
【００４１】
（３）各タスクの動作時間の変更について
次に、運転状態に応じて各タスクに割り当てられる動作時間を変更する処理について、詳細に説明する。なお、以下の説明では、制御プログラム１を構成する部位が処理を行うといった記載がなされているが、これは、該部位に従い動作するＣＰＵ１１０により処理が行われるということを意味する。
【００４２】
（３−１）状態変化検知処理について
まず、運転状態の変化を検知する状態変化検知処理について、図４（ａ）に記載のフローチャートを用いて説明する。なお、本処理は、制御プログラム１のスケジューリング部１１のスケジューラ設定部１１ａにて定期的に実行される処理である。
【００４３】
Ｓ３０５では、スケジューラ設定部１１ａは、デバイス制御部１２を介して検出した各電源端子の電圧値に基づき現在の運転状態を判別すると共に、運転状態の変化を検知する。そして、運転状態が変化した場合には（Ｓ３０５：Ｙｅｓ）、Ｓ３１０に処理を移行し、運転状態が変化していない場合には（Ｓ３０５：Ｎｏ）、本処理を終了する。
【００４４】
Ｓ３１０では、スケジューラ設定部１１ａは、スケジュールテーブル変更フラグをＯＮし、Ｓ３１５に処理を移行する。
Ｓ３１５では、スケジューラ設定部１１ａは、現在の運転状態を記憶し、本処理を終了する。
【００４５】
（３−２）テーブル切替処理について
次に、運転状態の変化に応じてＴＳやスケジュールテーブルを切り替えるテーブル切替処理について、図４（ｂ）に記載のフローチャートを用いて説明する。なお、本処理は、スケジューラ設定部１１ａにて定期的に実行される処理である。
【００４６】
Ｓ４０５では、スケジューラ設定部１１ａは、スケジュールテーブル変更フラグがＯＮか否かを判定し、肯定判定が得られた場合には（Ｓ４０５：Ｙｅｓ）、Ｓ４１０に処理を移行すると共に、否定判定が得られた場合には（Ｓ４０５：Ｎｏ）、本処理を終了する。
【００４７】
Ｓ４１０では、スケジューラ設定部１１ａは、現在の運転状態に応じてＴＳとスケジュールテーブルとを設定し、Ｓ４１５に処理を移行する。
Ｓ４１５では、スケジューラ設定部１１ａは、スケジュールテーブル変更フラグをクリアし、本処理を終了する。
【００４８】
［第二実施形態］
［構成の説明］
第二実施形態においても、ＥＣＵは、第一実施形態と同様の制御系の機能とボデー系の機能を有するが、制御プログラムの構成が異なっており、第二実施形態では、各機能が仮想マシン（ＶＭ（Virtual Machineの略）とも記載）により実現される。
【００４９】
ここで、ＶＭについて説明する。ＶＭとは、所定の装置において実現される機能の全部または一部を再現するためのプログラムであり、該装置に搭載されているプログラムの全部または一部をバイナリコードの状態で移植したプログラムや、後述する仮想ＣＰＵ等から構成される。第二実施形態の制御プログラムは、制御系のＥＣＵを仮想化した第一ＶＭと、ボデー系のＥＣＵを仮想化した第二ＶＭとを有しており、これらのＶＭを並行して動作させることにより、制御系のＥＣＵとボデー系のＥＣＵにおいて実現されていた機能を、一つのＥＣＵにおいて同時に実現させる。
【００５０】
図５には、第二実施形態におけるＥＣＵ１００の概略構成と、ＥＣＵ１００を制御する制御プログラム５００の構成を示すブロック図が記載されている。
ＥＣＵ１００は、第一実施形態と同様に構成されている。
【００５１】
また、第二実施形態の制御プログラム５００は、上述の第一ＶＭ５２０，第二ＶＭ５３０と、これらのＶＭを動作させるＶＭ制御管理部５１０とを有している。
まず、第一，第二ＶＭについて説明する。
【００５２】
第一ＶＭ５２０は、制御系のＥＣＵで稼動していたプログラムをバイナリコードの状態で移植したものであるエンジン制御系アプリ５２１，ＯＳ５２２と、これらをエミュレートするプログラムであり、いわゆる仮想化されたハードウェアに相当する仮想デバイス５２３，仮想ＣＰＵ５２４を有している。また、エンジン制御系アプリ５２１は、Ａタスク５２１ａやＢタスク５２１ｂ等から構成されている。
【００５３】
ＯＳ５２２は、Ａタスク５２１ａ，Ｂタスク５２１ｂ等のスケジューリングを行う周知のＯＳであり、リアルタイムＯＳとして構成されている。
また、仮想ＣＰＵ５２４は、エンジン制御系アプリ５２１やＯＳ５２２のバイナリコードを解析して実行するプログラムとして構成されている。
【００５４】
また、仮想デバイス５２３は、エンジン制御系アプリ５２１，ＯＳ５２２と、ＥＣＵ１００の物理デバイス１２０との間のＩ／Ｆとなるプログラムであり、エンジン制御系アプリ５２１，ＯＳ５２２は、仮想デバイス５２３にアクセスすることで物理デバイス１２０を制御する。
【００５５】
また、第二ＶＭ５３０についても、ボデー系のＥＣＵで稼動していたプログラムをバイナリコードの状態で移植したものであるボデー系アプリ５３１，ＯＳ５３２と、第一ＶＭ５２０と同様の仮想デバイス５２３，仮想ＣＰＵ５２４を有している。また、ボデー系アプリ５３１は、Ｃタスク５３１ａ等から構成されている。
【００５６】
次に、ＶＭ制御管理部５１０について説明する。
ＶＭ制御管理部５１０は、ＶＭのスケジューリングを行うスケジューリング部５１１と、物理デバイス１２０からの信号を各ＶＭの仮想デバイスに通知すると共に、該仮想デバイスからの指示に応じて物理デバイス１２０を制御するデバイス制御部５１２とを有している。また、スケジューリング部５１１は、各ＶＭに実行権が付与される時間（動作時間）や、各ＶＭの優先順位を設定するスケジューラ設定部５１１ａと、設定された動作時間や優先順位に従い各ＶＭに実行権を付与することで、これらのＶＭを並行して動作させるスケジューラ実行部５１１ｂとを有している。
【００５７】
［動作の説明］
次に、第二実施形態の制御プログラム５００の動作について説明する。
第二実施形態のＥＣＵ１００も、第一実施形態と同様、エンジンにより駆動される車両に搭載されると共に、電源管理ＥＣＵ２００から電力供給が行われ、運転状態として、ＡＣＣ  ＯＦＦ状態，ＡＣＣ  ＯＮ状態，ＩＧ  ＯＦＦ直後状態，ＩＧ  ＯＮ直後状態，ＩＧ  ＯＮ定常状態が設けられており、該運転状態は、ＩＧスイッチの操作等に応じて変化する。
【００５８】
また、第一，第二ＶＭ５２０，５３０にはリアルタイム性が要求されているため、第一実施形態と同様にＤＳにより各ＶＭが動作される。すなわち、スケジューリング部５１１は、各ＶＭについて、ＴＳにおける動作時間である１周期内動作時間と、実行権が付与される順番である優先順位とを設定し、各ＴＳにおいて、優先順位に応じた順番で各ＶＭに実行権を付与すると共に、各ＶＭの動作時間を各自に設定された１周期内動作時間とする。
【００５９】
また、ＩＧスイッチがＯＦＦ或いはＡＣＣに設定されるＡＣＣ  ＯＦＦ状態，ＡＣＣ  ＯＮ状態においては、エンジンが停止するため、エンジン制御系アプリ５２１が搭載されている第一ＶＭ５２０の処理負荷が低下する。このため、スケジューリング部５１１は、第一実施形態と同様にして、運転状態に応じて各ＶＭの動作時間を変更するよう構成されている。
【００６０】
すなわち、図６に記載されているように、スケジューリング部５１１では、運転状態に応じて異なる長さのＴＳが設定されていると共に、第一，第二ＶＭの１ＴＳ内動作時間，優先順位が設定されたスケジューリングテーブルが、運転状態毎に個別に設けられている。第一実施形態と同様、各スケジュールテーブルでは、対応する運転状態において予測される処理負荷に基づき、各ＶＭの優先順位，１ＴＳ内動作時間の長さが設定されている。そして、運転状態に応じてＴＳを切り替えると共に、運転状態に対応するスケジューリングテーブルを選択し、選択したスケジューリングテーブルに従い第一，第二ＶＭに実行権を付与する。
【００６１】
また、図７には、運転状態の変化により各ＶＭの動作時間が変化する様子を示すタイミングチャートが記載されている。該タイミングチャートが示すように、運転状態がＡＣＣ  ＯＮ状態である場合には、スケジューリング部５１１のスケジューラ設定部５１１ａは、ＴＳを５ｍｓとすると共に、ＡＣＣ  ＯＮ状態に対応するスケジューリングテーブル（図６（ｂ））を選択する。そして、スケジューラ実行部５１１ｂは、選択されたスケジューリングテーブルに従い、各ＴＳにおいて、第二ＶＭ５３０，第一ＶＭ５２０の順に、それぞれ、３ｍｓ，１ｍｓの動作時間を割り当てる。
【００６２】
そして、ＩＧスイッチの操作により運転状態がＩＧ  ＯＮ直後状態となると、スケジューラ設定部５１１ａは、ＴＳを１ｍｓとすると共に、ＩＧ  ＯＮ直後状態に対応するスケジューリングテーブル（図６（ｄ））を選択する。そして、スケジューラ実行部５１１ｂは、選択されたスケジューリングテーブルに従い、各ＴＳにおいて、第一ＶＭ５２０，第二ＶＭ５３０の順に、それぞれ、０．８ｍｓ，０．１ｍｓの動作時間を割り当てる。
【００６３】
その後、初期時間が経過し、運転状態がＩＧ  ＯＮ定常状態となると、スケジューラ設定部５１１ａは、ＴＳを１ｍｓのまま維持し、ＩＧ  ＯＮ定常状態に対応するスケジューリングテーブル（図６（ｅ））を選択する。そして、スケジューラ実行部５１１ｂは、選択されたスケジューリングテーブルに従い、各ＴＳにおいて、第一ＶＭ５２０，第二ＶＭ５３０の順に、それぞれ、０．６ｍｓ，０．１ｍｓの動作時間を割り当てる。
【００６４】
また、第二実施形態の制御プログラム５００のスケジューラ設定部５１１ａでは、それぞれ、第一実施形態と同様の状態変化検知処理，テーブル切替処理が実行される。これらの処理により、運転状態に応じてＴＳやスケジュールテーブルの変更が行われる。
【００６５】
［第三実施形態］
第一，第二実施形態では、エンジンにより駆動される車両に搭載されたＥＣＵでのタスクやＶＭのスケジューリングにおいて、運転状態に応じて、ＴＳ，優先順位，１ＴＳ内動作時間を変更することで、各タスク或いはＶＭが動作する頻度を変更するという構成について説明した。しかしながら、運転状態に限らず、他の車両の状態に応じて各タスク等が動作する頻度を変更しても良い。
【００６６】
具体例を挙げると、エンジン及びモータにより駆動力を得るハイブリッド車に搭載され、運転手の操作に応じて該エンジン及びモータを制御することで車速を制御する１台の車速制御ＥＣＵにおいて、エンジン，モータのいずれから駆動力を得ているか（駆動状態とも記載）に応じて各タスク（或いはＶＭ）が動作する頻度を変更しても良い。すなわち、車速制御ＥＣＵでは、エンジンを制御する１または複数のタスク（エンジン制御タスク）と、モータを制御する１または複数のタスク（モータ制御タスク）が設けられていると共に、第一実施形態の制御プログラム１と同様のＯＳが設けられており、該ＯＳは、ＤＳによりこれらのタスクを動作させる。
【００６７】
また、図８に記載されているように、ハイブリッド車では、駆動状態として、エンジン，モータの双方から駆動力を得ていない停止状態と、エンジンのみから駆動力を得ているエンジン駆動状態と、モータのみから駆動力を得ているモータ駆動状態と、エンジン，モータの双方から駆動力を得ているエンジン／モータ駆動状態の４つの状態が存在し、各状態につき個別にスケジュールテーブルが設けられている。そして、第一，第二実施形態と同様、各スケジュールテーブルでは、各駆動状態において予測される処理負荷に基づき、各タスクの優先順位，１ＴＳ内動作時間が設定されている。
【００６８】
そして、エンジン／モータ駆動状態，停止状態に対応するスケジュールテーブルでは、エンジン制御タスクの１ＴＳ内動作時間とモータ制御タスクの１ＴＳ内動作時間が同程度に設定される。
【００６９】
一方、エンジン駆動状態に対応するスケジュールテーブルでは、エンジン制御タスクの優先順位をモータ制御タスクよりも高く設定すると共に、エンジン制御タスクの１ＴＳ内動作時間を、モータ制御タスクの１ＴＳ内動作時間よりも長く設定する。
【００７０】
また、モータ駆動状態に対応するスケジュールテーブルでは、モータ制御タスクの優先順位をエンジン制御タスクよりも高く設定すると共に、エンジン制御タスクの１ＴＳ内動作時間を、モータ制御タスクの１ＴＳ内動作時間よりも短く設定する。
【００７１】
そして、運転状態を駆動状態に置き換えて、第一実施形態と同様の状態変化検知処理，テーブル切替処理が実行され、駆動状態に応じたスケジュールテーブルにより各タスクのスケジューリングが行われる。
【００７２】
こうすることにより、ハイブリット車に搭載される車速制御ＥＣＵにおいて、駆動状態に応じて各タスクが動作する頻度を変更することができる。
［効果］
第一〜第三実施形態のＥＣＵによれば、ＩＧスイッチの操作に基づく運転状態やエンジンやモータの駆動状態といった、自車両の状態に応じたスケジュールテーブルが個別に設けられている。そして、各スケジュールテーブルでは、予測される処理負荷に基づき各タスク或いはＶＭの優先順位，１ＴＳ内動作時間が設定されており、現在の自車両の状態に応じたスケジュールテーブルを用いてスケジューリングが行われる。
【００７３】
このため、現在の自車両の状態に応じた最適な頻度で各タスク或いはＶＭを動作させることができ、ＣＰＵを効率良く使用することが可能となる。そして、これにより、ＣＰＵの性能を下げても十分なパフォーマンスを得ることができ、ＥＣＵのコストを低減させることが可能となる。
【００７４】
［他の実施形態］
（１）第一，第二実施形態のＥＣＵは、エンジンで駆動される車両に搭載されているが、これに限定されることは無く、該ＥＣＵは、例えば、ハイブリット車や電気自動車に搭載されていても良い。また、このような場合であれば、ＩＧスイッチの操作に基づく運転状態に替えて、自車両を駆動するモータやエンジンを起動するスタータスイッチの操作に基づく運転状態に応じて、タスクやＶＭが動作する頻度を変更しても良い。このような場合であっても、同様の効果を得ることができる。
【００７５】
（２）また、第一，第二実施形態では、リアルタイム性が要求されるタスク或いはＶＭを対象としてスケジューリングが行われている。しかしながら、本発明は、リアルタイム性が要求されないタスクを対象とする場合や、リアルタイム性が要求されるタスクとされないタスクが混在している場合に適用しても、同様の効果を得ることができる。また、スケジューリングの対象として、タスクとＶＭとが混在している場合であっても、本発明を適用することで同様の効果を得ることができる。
【００７６】
（３）また、第一〜第三実施形態では、ＴＳと、各タスク或いはＶＭの１ＴＳ内動作時間と優先順位とを変更することで、車両の状態に応じて各タスク等が動作する頻度を変更している。しかしながら、各タスク等の優先順位のみを変更しても良いし、１ＴＳ内動作時間のみを変更しても良い。また、ＴＳを変更せず、各タスク等の優先順位及び１ＴＳ内動作時間を変更しても良い。このような場合であっても、同様の効果を得ることができる。
【００７７】
（４）第一〜第三実施形態では、ＤＳによりタスク或いはＶＭのスケジューリングが行われるが、スケジューリング方法はこれに限定されることは無い。具体的には、例えば、付与された実行権を自発的に放棄するようにタスク等を構成すると共に、各タスク等の１ＴＳ内動作時間を、その総和がＴＳよりも長くなるように設定し、ハードなリアルタイム性が要求されるタスクに対してのみ、各ＴＳにて１ＴＳ内動作時間が割り当てられることを保証するように構成しても良い。そして、運転状態等の車両の状態に応じて各タスク等の優先順位，１ＴＳ内動作時間のうちの少なくとも一方を変更し、各ＴＳでは、優先順位に沿った順番で、各タスクに対し、各自の１ＴＳ内動作時間にわたり実行権を付与しても良い。このような場合であっても、車両の状態に応じて各タスクが動作する頻度を変更することができ、同様の効果を得ることができる。
【００７８】
［特許請求の範囲との対応］
上記実施形態の説明で用いた用語と、特許請求の範囲の記載に用いた用語との対応を示す。
【００７９】
第一，第三実施形態におけるＯＳと、第二実施形態におけるＶＭ制御管理部が、スケジューリングプログラムに相当し、第一〜第三実施形態におけるＥＣＵが、車載装置に相当する。
【００８０】
また、第一，第二実施形態における運転状態と、第三実施形態のエンジン及びモータの稼動状態が、自車両の状態に相当する。
また、第一，第三実施形態におけるタスクと、第二実施形態におけるＶＭが、タスクに相当する。
【００８１】
また、状態変化検知処理のＳ３０５が判別手段，判別手順に、テーブル切替処理のＳ４１０が変更手段，変更手順に相当する。
【符号の説明】
【００８２】
１…制御プログラム、１０…ＯＳ、１１…スケジューリング部、１１ａ…スケジューラ設定部、１１ｂ…スケジューラ実行部、１２…デバイス制御部、２０…制御系アプリ、２１…Ａタスク、２２…Ｂタスク、３０…ボデー系アプリ、３１…Ｃタスク、１００…ＥＣＵ、１１０…ＣＰＵ、１２０…物理デバイス、２００…電源管理ＥＣＵ、５００…制御プログラム、５１０…ＶＭ制御管理部、５１１…スケジューリング部、５１１ａ…スケジューラ設定部、５１１ｂ…スケジューラ実行部、５１２…デバイス制御部、５２０…第一ＶＭ、５２１…エンジン制御系アプリ、５２１ａ…Ａタスク、５２１ｂ…Ｂタスク、５２２…ＯＳ、５２３…仮想デバイス、５２４…仮想ＣＰＵ、５３０…第二ＶＭ、５３１…ボデー系アプリ、５３１ａ…Ｃタスク、５３２…ＯＳ、５３３…仮想デバイス、５３４…仮想ＣＰＵ。
【図１】
2012185541.tif 000003
【図２】
2012185541.tif 000004
【図３】
2012185541.tif 000005
【図４】
2012185541.tif 000006
【図５】
2012185541.tif 000007
【図６】
2012185541.tif 000008
【図７】
2012185541.tif 000009
【図８】
2012185541.tif 000010