(57)【要約】【課題】コストを低減しつつ機能を容易にアップデートすることができる制御システム及び方法を提供する。【解決手段】複数のサブシステムと、各サブシステムの動作とそれぞれが関連する複数のソフトウエアアプリケーションがプログラムされた汎用プロセッサと、バスとを備える。各サブシステムは、汎用プロセッサからの命令を受け取り、及び／又は、バスを介してサブシステムタスクを汎用プロセッサに送る通信インターフェースと、予め設定された時間の間に、前記汎用プロセッサが受け取った多数のサブシステムタスクの実行の順序に優先順位を付けるタスクアービトレータを有する。汎用プロセッサは、タスクアービトレータから受け取ったサブシステムタスクのサブシステムと関連するソフトウエアアプリケーションの実行を開始し、その後、バスを介して制御信号を一つ以上のサブシステムに伝送する。【選択図】図１
2016207215.tif 000002
【特許請求の範囲】
【請求項１】
車両の状態を検知するセンサ、及び／又は、駆動時に車両の機能を実行するアクチュエータをそれぞれが有する複数のサブシステムと、
各サブシステムの動作とそれぞれが関連する複数のソフトウエアアプリケーションがプログラムされた汎用プロセッサと、
前記汎用プロセッサと前記複数のサブシステムを接続するバスとを備え、
各サブシステムは、前記汎用プロセッサからの命令を受け取り、及び／又は、前記バスを介してサブシステムタスクを前記汎用プロセッサに送る通信インターフェースと、
予め設定された時間の間に、前記汎用プロセッサが受け取った多数のサブシステムタスクの実行の順序に優先順位を付けるタスクアービトレータを有し、
前記汎用プロセッサは、前記タスクアービトレータから受け取った前記サブシステムタスクの前記サブシステムと関連する前記ソフトウエアアプリケーションの実行を開始し、
その後、前記関連するソフトウエアアプリケーションの実行の結果として、前記バスを介して制御信号を一つ以上のサブシステムに伝送することを特徴とする制御システム。
【請求項２】
前記汎用プロセッサは複数の処理装置を備えることを特徴とする請求項１に記載の制御システム。
【請求項３】
前記処理装置は多数のコアプロセッサを備えることを特徴とする請求項２に記載の制御システム。
【請求項４】
前記タスクアービトレータは、各サブシステムタスクに割り当てられた安全レベルに基づいて多数のサブシステムタスクの実行の順序に優先順位を付けることを特徴とする請求項２に記載の制御システム。
【請求項５】
前記汎用プロセッサは複数の処理装置とタスク分配器を備え、前記タスク分配器は前記タスクアービトレータから前記サブシステムタスクを受け取り、前記サブシステムタスクをそれぞれ、選択された処理装置に送ることを特徴とする請求項４に記載の制御システム。
【請求項６】
前記タスク分配器は、前記処理装置の演算負荷の関数として、サブシステムタスクを前記処理装置に割り当てることを特徴とする請求項５に記載の制御システム。
【請求項７】
各サブシステムタスクに安全レベルが割り当てられ、前記タスク分配器は、前記サブシステムタスクの前記安全レベルの関数として、サブシステムタスクを前記処理装置に割り当てることを特徴とする請求項５に記載の制御システム。
【請求項８】
前記制御システムは、前記汎用プロセッサがアクセス可能なメモリを備え、前記ソフトウエアアプリケーションは異なるメモリパーティションに保持されることを特徴とする請求項１に記載の制御システム。
【請求項９】
エンジンの状態を検知するセンサ、及び／又は、車両の機能を実行するアクチュエータをそれぞれが有する複数のサブシステムを備える車両を制御する方法であって、
各サブシステムの動作とそれぞれが関連する複数のソフトウエアアプリケーションがプログラムされた汎用プロセッサを提供するステップと、
前記汎用プロセッサと前記複数のサブシステムを接続するバスを提供するステップとを備え、
各サブシステムは、前記汎用プロセッサからの命令を受け取り、及び／又は、前記バスを介してサブシステムタスクを前記汎用プロセッサに送る通信インターフェースを有し、
予め設定された時間の間に、前記汎用プロセッサが受け取った多数のサブシステムタスクの実行の順序にタスクアービトレータで優先順位を付けるステップと、
前記タスクアービトレータから受け取った前記サブシステムタスクの前記サブシステムと関連する前記ソフトウエアアプリケーションの実行を開始するステップと、
その後、前記関連するソフトウエアアプリケーションの実行の結果として、制御信号を前記バスを介して一つ以上のサブシステムに伝送するステップを備えることを特徴とする方法。
【請求項１０】
前記汎用プロセッサは複数の処理装置を備えることを特徴とする請求項９に記載の方法。
【請求項１１】
前記処理装置は多数のコアプロセッサを備えることを特徴とする請求項１０に記載の方法。
【請求項１２】
前記タスクアービトレータは、各サブシステムタスクに割り当てられた安全レベルに基づいて、多数のサブシステムタスクの実行の順序に優先順位を付けることを特徴とする請求項１０に記載の方法。
【請求項１３】
前記汎用プロセッサは複数の処理装置とタスク分配器を備え、前記タスク分配器は前記タスクアービトレータから前記複数のサブシステムタスクを受け取り、前記複数のサブシステムタスクをそれぞれ選択された処理装置に送ることを特徴とする請求項１２に記載の方法。
【請求項１４】
前記処理装置の演算負荷の関数として、前記サブシステムタスクの実行を前記処理装置に割り当てるステップを備えることを特徴とする請求項１３に記載の方法。
【請求項１５】
安全レベルを割り当てるステップを備え、前記タスク分配器は、前記サブシステムタスクの前記安全レベルの関数として、サブシステムタスクを前記処理装置に割り当てることを特徴とする請求項１３に記載の方法。
【請求項１６】
前記方法は、前記汎用プロセッサがアクセス可能なメモリを備え、前記ソフトウエアアプリケーションが異なるメモリパーティションに保持されることを特徴とする請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御システム及び方法に関する。
【背景技術】
【０００２】
現代の自動車（自動車両）は、車両の種々の機能を制御する７０以上の異なる制御システムを含む高度に洗練されたシステムである。これらの制御システムはセンサ及び／又はアクチュエータを含み、又、ドアロックのような単純なシステムから、エンジン制御装置、トランスミッション制御装置、安定制御装置、アクティブサスペンションなどのような、より複雑なシステムまで関連している。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
現在、自動車の電子アーキテクチャは、一般に、共有ネットワークインターフェース、或いはＣＡＮバス等のバスを介して互いに通信する多くの自立的なサブシステムから成っている。これらの種々のサブシステムは、更に、多様なサプライヤーによって組み立てられ、各サブシステムはそれ自体のハードウェアとそれ自体のソフトウエア設計を有する。従って、このことが、種々のサブシステムの車内での統合、試験、サブシステムのトラブルシューティングを困難なものとし、又、時間を浪費するものとしている。更に、各サブシステムは、一般に、アクチュエータを駆動するために、一つ以上のセンサの状態を判定し、適切な出力信号を出力するそれ自体のプロセッサを備えており、個々のシステムのトータルコストはかなり高くなる。
【０００４】
自動車の現代の電子アーキテクチャでは、最新式にすること、即ち、既に製造され、及び／又は消費者に供給された自動車に新しい機能を導入することが困難である。事実上、多くの場合、一度完成した自動車に新しい機能を組み込むことは不可能である。たとえ新しい機能を組み込むことが可能だとしても、一つ以上の複合部品、或いはサブシステム全体を完全に交換することが必要となり、その組み込みのトータルコストが増えることとなる。更に、自動車全体の広範囲に及ぶ安全試験を受けることが必要になるので、ステアバイワイア又は自律運転サブシステム等の安全性重視の多くの機能において自動車の数個の部品を交換することは実現可能な解決策ではない。
【０００５】
本発明の目的は、コストを低減しつつ機能を容易にアップデートすることができる制御システム及び方法を提供することにある。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明は、車両の状態を検知するセンサ、及び／又は、駆動時に車両の機能を実行するアクチュエータをそれぞれが有する複数のサブシステムと、各サブシステムの動作とそれぞれが関連する複数のソフトウエアアプリケーションがプログラムされた汎用プロセッサと、前記汎用プロセッサと前記複数のサブシステムを接続するバスとを備え、各サブシステムは、前記汎用プロセッサからの命令を受け取り、及び／又は、前記バスを介してサブシステムタスクを前記汎用プロセッサに送る通信インターフェースと、予め設定された時間の間に、前記汎用プロセッサが受け取った多数のサブシステムタスクの実行の順序に優先順位を付けるタスクアービトレータを有し、前記汎用プロセッサは、前記タスクアービトレータから受け取った前記サブシステムタスクの前記サブシステムと関連する前記ソフトウエアアプリケーションの実行を開始し、その後、前記関連するソフトウエアアプリケーションの実行の結果として、前記バスを介して制御信号を一つ以上のサブシステムに伝送する。
【発明の効果】
【０００７】
本発明によれば、コストを低減しつつ機能を容易にアップデートすることができる。上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態による制御システムを備えた電気自動車を示す図である。
【図２】汎用プロセッサのブロック図である。
【図３】共有メモリを示すブロック図である。
【図４】タスクアービトレータの動作を示すフローチャートである。
【図５】タスクアービトレータの動作の一部を示すフローチャートである。
【図６】タスクアービトレータの動作の一部を示すフローチャートである。
【図７】共有モードにおけるタスク分配器のワークフローを示す図である。
【図８】共有モードにおけるタスク分配器のタスク割り当てワークフローを示す図である。
【図９】分離モードにおけるタスク分配器のワークフローを示す図である。
【図１０】タスク分配器の動作を示すフローチャートである。
【図１１】タスクアービトレータの動作を説明するための表である。
【図１２】共有モード及び分離モードにおけるタスク分配器の動作を説明するための表である。
【発明を実施するための形態】
【０００９】
以下、図面を用いて、本発明の実施形態による制御システム等の構成及び動作について説明する。なお、各図において、同一符号は同一部分を示す。
【００１０】
図１には、電気自動車等の車両２０のための複数の車両サブシステムが示されている。種々のサブシステムが、例としてのみ示されており、例えば、レーダセンササブシステム２２、電動モータ制御サブシステム２４、ブレーキアクチュエータサブシステム２６、アクティブサスペンションサブシステム２８、ステレオカメラサブシステム３０、バックアップカメラサブシステム３２、インフォテインメントサブシステム３４、バッテリサブシステム３５を含む。更に、電動モータ制御サブシステム２４、ブレーキアクチュエータサブシステム２６、アクティブサスペンションサブシステム２８などの一部のサブシステムは、四つの車輪３６のそれぞれに対して設けられる（繰り返される）。
【００１１】
車両には汎用プロセッサ４０が含まれる。汎用プロセッサ４０は、好ましくは、非同期通信を用いて、バス４２（電子バス）を介して種々のサブシステム２２〜３５と通信する。
【００１２】
種々の車両サブシステムはそれらの名前が意味するような機能を実施する。例えば、レーダセンササブシステム２２は車両２０の前方の障害物を検知して、その情報を汎用プロセッサ４０に送信する。同様に、電動モータ制御サブシステム２４は各車輪３６と関連して、車両２０を推進する電動モータの作動を制御する。同様に、ブレーキアクチュエータサブシステム２６は車両を減速するためブレーキの作動を制御する。
【００１３】
同様に、アクティブサスペンションサブシステム２８は、各車輪３６のサスペンションシステムの高さと剛性を制御する。各車輪３６のサスペンションシステムの減衰は、減衰特性を動的に変化させるために用いられ、乗員の快適性、走行体験、或いは他の目的を最適化する。
【００１４】
ステレオカメラサブシステム３０は、車両前方の対象物のステレオ画像をリアルタイムで撮影し、これらの画像をバス４２を介して汎用プロセッサ４０に送信する。そのようなカメラの画像は、障害物を検知し、交通標識を読み取り、車線の逸脱を判定し、又は他の目的のため、汎用プロセッサ４０による画像処理で利用されてもよい。同様に、バックアップカメラサブシステム３２は車両のバックアップカメラの駆動を制御する。
【００１５】
インフォテインメントサブシステム３４は、ラジオ、ＭＰ３プレイヤー、Ａ／Ｃコントロール、ＧＰＳナビゲーションシステム、ＣＤプレイヤーなどを統合する。バッテリサブシステム３５は、充電、メンテナンス、モニタリングなどの車両バッテリに関連するすべての機能を制御する。
【００１６】
すべてのサブシステム２２〜３５（図１）はバス４２を介して汎用プロセッサ４０と通信する。好ましくは、図２に示すように、汎用プロセッサ４０は複数の処理装置４４、４６、４８を有しているが、代わりに、汎用プロセッサ４０は、各コアが他のコアから独立してアルゴリズムを実施することができる多数のコアを有する一つ以上のプロセッサを含んでもよい。
【００１７】
汎用プロセッサ４０は、汎用プロセッサ４０と種々のサブシステム間の通信を制御するＩ／Ｏコントローラ５０を有している。このＩ／Ｏコントローラ５０は汎用プロセッサ４０の内部バス５２に通じ、種々の処理装置４４〜４８と通信する。加えて、汎用プロセッサ４０は永続記憶装置５４（記憶装置）を有しており、この永続記憶装置５４はバス５２を介して処理装置４４〜４８と通信する。この永続記憶装置５４は種々のアプリケーションソフトウェアを含んでおり、一つのアプリケーションソフトウェアはサブシステム２２〜３５（図１）のそれぞれと関連し、サブシステム２２〜３５からセンサ信号若しくはタスクを受け取り、及び／又は、汎用プロセッサ４０からバス４２を介してサブシステムに戻す出力制御信号を生成する。
【００１８】
図２と図３に示すように、汎用プロセッサ４０は、異なるメモリパーテッションに含まれる複数のアプリケーションを有する共有メモリ５６を備え、一つのアプリケーションは、車両のサブシステム２２〜３５の一つと関連している。例えば、アプリケーション６０は車両モニターアプリケーションを、アプリケーション６２は適応クルーズ制御アプリケーションを、アプリケーション６４はモータ制御アプリケーションを、アプリケーション６６はブレーキ制御アプリケーションを、それぞれ対象としたものである。更に、四つのアプリケーション６０〜６６は、すべて、車両２０の安全操作にとって極めて重要であり、そのため、すべて、共有メモリ５６において同じ安全レベルに置かれている。ここで、安全レベルは、安全に関するサブシステムの重要度を示す。
【００１９】
逆に、アプリケーション６０〜６６ほど安全重視ではないアプリケーションが、共有メモリ５６の第二のレベル（安全レベル）に位置付けられている。この第二のレベルには、レーダーアプリケーション６８、ステレオカメラアプリケーション７０、安定制御アプリケーション７２、バッテリ制御アプリケーション７４などが含まれる。これらのアプリケーション６８〜７４のすべてが車両の操作にとって重要であるが、車両の安全操作にとって極めて重要であるというわけでない。
【００２０】
最後に、車両の安全操作に殆どあるいは全く影響を与えないアプリケーションが、更に他のレイヤに位置付けられている。これらのアプリケーションにはリアビューカメラアプリケーション７６とインフォテインメントアプリケーション７８が含まれる。これらの両方のアプリケーションは、車両の安全操作に悪影響を与えることなく全く機能しないこともあり得る。
【００２１】
次いで、サブシステム２２〜３５の一つから受信したタスク信号に応じたアプリケーションの実行が、詳細に後述されるように、処理装置４４〜４８の一つに割り当てられる。そのプログラムの実行に続いて、特定のサブシステムと関連するアルゴリズムを実行する処理装置４４〜４８は、出力制御信号を生成する。この制御信号は、バス５２、Ｉ／Ｏコントローラ５０及びバス４２を介して一つ以上の適切なサブシステム２２〜３５に戻るが、それは元のタスク信号を生成するサブシステム２２〜３５と同じであってもよく、或いは異なってもよい。いずれにしろ、汎用プロセッサ４０によって一つ以上のサブシステム２２〜３５に送り戻された制御信号は、次いで、一般的には、アクチュエータを駆動して車両のある機能を実行する。この車両の機能は、車速がある閾値を越えた時に車のドアをロックするような単純なものでもよく、或いは、ブレーキアクチュエータサブシステム２６でブレーキを駆動するような複雑なものでもよい。
【００２２】
種々のサブシステム２２〜３５から受信したタスク信号は仮想バス８０によってタスクアービトレータ８２に結び付けられる。タスクアービトレータ８２は、それらの安全レベルに応じて所定の時間内にサブシステムから受信したすべてのタスク信号に優先順位を付ける。タスクアービトレータ８２の動作を示すフローチャートが図４に示されている。ステップ９０で開始した後、ステップ９０はステップ９２に進み、タスク信号を収集する時間が時間ΔＴに等しい時間Ｔに設定される。一般的に、Ｔは数ミリ秒である。ステップ９２は次いでステップ９４に進む。
【００２３】
ステップ９４において、タスクアービトレータ８２は、時間Ｔ−ＴΔとＴの間に受信したすべてのタスク信号を収集する。すべてのタスク（タスク信号が示すタスク）は安全レベルに関係なく収集される。次いで、ステップ９４はステップ９６に進む。
【００２４】
次いで、ステップ９６では、タスクアービトレータ８２は時間ΔＴの間に受信したすべてのタスクに対する安全レベルを特定する。次いで、ステップ９６はステップ９８に進み、タスクアービトレータ８２は安全レベルに応じて受信したタスクを並べる、即ち、優先順位を付ける。ステップ９８は図５により詳細に記載される。
【００２５】
図５に示すように、アルゴリズムがステップ１００で開始した後、ステップ１００はステップ１０２に進む。ステップ１０２において、タスクが安全レベルごとにグループ化される。本実施形態では、０レベルは最高の安全レベルである。その結果、ステップ１０２の後、レベル０のすべてのタスク、レベル１のすべてのタスク、レベル２のすべてのタスクなどのように、それぞれグループ分けされる。ステップ１０２は次いでステップ１０４に進む。
【００２６】
ステップ１０４において、安全レベルＬ＿Ｓは０に、即ち最高安全レベルに設定される。ステップ１０４は次いでステップ１０６に進み、安全レベルＬ＿Ｓが最大閾値Ｌ＿Ｓ＿ＭＡＸと比較される。安全レベルＬ＿Ｓが最大安全レベルＬ＿Ｓ＿ＭＡＸより低い場合（ステップ１０６：ＹＥＳ）、これはステップ１０６の最初の実行の間に常に発生するのだが（処理すべきタスクが存在すると仮定して）、ステップ１０６はステップ１０８に進む。そうでない場合（ステップ１０６：ＮＯ）には、ステップ１０６はステップ１１０に分岐し、アルゴリズムを終了する。
【００２７】
ステップ１０８において、アルゴリズムは同じ安全レベルＬ＿Ｓのグループのタスクを並べる。ステップ１０８のアルゴリズムは図６により詳細に示される。
【００２８】
図６に示すように、ステップ１１２でアルゴリズムを開始した後、ステップ１１２はステップ１１４に進み、一つの安全レベル（同じ安全レベル）のすべてのタスクが集められる。次いで、ステップ１１４はステップ１１６に進み、現タスク優先度を記憶するために用いる変数Ｌ＿Ｔがまず０に設定される。ステップ１１６は次いでステップ１１８に進む。ステップ１１８で、まず、変数Ｌ＿Ｔはその変数の最大閾値Ｌ＿Ｔ＿ＭＡＸと比較される。最大閾値と等しい場合（ステップ１１８：ＮＯ）には、ステップ１１８はステップ１２０に分岐し、サブキューを、メインキュー１２２（図３）に送る。ここで、各タスクは同じ安全レベルである。次いで、ステップ１２０はステップ１２４に進み、アルゴリズムを終了する。
【００２９】
逆に、変数Ｌ＿Ｔが最大閾値Ｌ＿ＴＭＡＸより小さい場合（ステップ１１８：ＹＥＳ）には、ステップ１１８はその代わりにステップ１２６に進み、タスク優先度Ｌ＿Ｔを有するタスクがサブキューに加えられる。更に、ステップ１２６では、同じ安全レベルを有するすべてのタスクをサブキューに加え、次いで、ステップ１２８に進む。
【００３０】
ステップ１２８において、安全レベルを示す変数Ｌ＿Ｔがインクリメントされ、ステップ１２８はステップ１１８に戻る。上記プロセスは繰り返され、この時、すべての安全レベルが処理されるまで次に高い安全レベルが新規のサブキューを形成する。すべての安全レベルが処理されたとき、ステップ１１８はステップ１２０に分岐し、次いで、ステップ１２４に進み、すべての命令されたタスク、又は全ての優先付けされたタスクがタスクアービトレータ８２からメインキュー１２２（図３）に並べられる。
【００３１】
もちろん、上記の全プロセスが各時間セグメントΔＴで繰り返されることは理解されるであろう。一般的に容易に管理できる数のタスクがいつでもメインキュー１２２に形成されるように、ΔＴは一般的に数ミリ秒に等しい。
【００３２】
図５に戻り、同じ安全レベルのすべてのタスクが特定され、かつサブキューに形成された後、ステップ１０８はステップ１３０に進み、それらのタスクは次いでメインキュー１２２（図３）にシフトされる。ステップ１３０は次いでステップ１３２に進み、安全レベルＬ＿Ｓがインクリメントされる。ステップ１３２は次いでステップ１０６に戻り、上記プロセスは、すべての安全レベルがステップ１０６で決められたように処理されるまで、次の安全レベルに対して繰り返される。そこで、タスクアービトレータ８２のアルゴリズムはステップ１１０においてその時間間隔ΔＴで終了する。
【００３３】
このようにして、タスクアービトレータ８２は、最高安全レベル０のタスクがキューの始めで、最低安全レベル３がキュー１２２の後方になるように、タスクをメインキュー１２２に並べる、即ち優先順位に並べることが分かるであろう。従って、高位の優先順位のタスクが低位の優先順位の安全タスクの前に確実に実行される。
【００３４】
図５に示されたアルゴリズムが完了した後、図４に戻り、ステップ９８はステップ１３４に進み、ここで、時間がΔＴだけインクリメントされる。ステップ１３４は次いでステップ９４に戻り、ここで、上記プロセスがタスクアービトレータ８２によって繰り返される。
【００３５】
図１１はタスクアービトレータ８２によって実施されるタスク１４０の優先順位づけを示している。特に、図１１（ａ）は、タスクＩＤ１〜６をタスクアービトレータ８２が受け取った順番に示している。これらのタスクＩＤ１〜６は、最高レベルの０から最低レベルの３の範囲の異なる安全レベルを有している。各タスクＩＤはタスク優先度とアプリケーションＩＤも有している。すべてのタスクＩＤ１〜６は時間窓（ＴＮ−ΔＴ）〜ＴＮ内に受け取られる。
【００３６】
図１１（ｂ）は、タスクアービトレータ８２によって優先順位づけられた後のタスクを示している。明瞭に示されているように、最高安全レベル０のタスクが最初に配置され、次いで、安全レベル１、２、３が続く。
【００３７】
図３に戻り、メインキュー１２２は、次いで、入力としてタスク分配器１４２と結合され、タスク分配器１４２は、複数の処理装置４４、４６、４８のどれがメインキュー１２２から出た複数のタスク１４０を実行するかを決定する。タスク分配器１４２は共有モードあるいは分離モードで操作可能であるが、それぞれのモードについては別々に説明する。次いで、図３と図７に示すように、共有モードにおいて、タスク分配器１４２は、メインキュー１２２から受け取った複数のタスク１４０を最低ＣＰＵ負荷の処理装置４４〜４８に割り当てる。共有モードのタスク分配器１４２のアルゴリズムが図７に示されている。ここで、ステップ１５０で開始した後、ステップ１５０はステップ１５２に進む。ステップ１５２において、アルゴリズムはタスク分配器１４２（タスクマネージャー）を共有モードに設定する。次いで、ステップ１５２はステップ１５４に進む。
【００３８】
ステップ１５４において、一つのタスク１４０をメインキュー１２２から受け取る。新規のタスクがある場合、ステップ１５４はステップ１５６に進み、タスク分配器１４２がそのタスク１４０を最低ＣＰＵ負荷のＣＰＵ４４〜４８に割り当てる。タスク分配器１４２がすべてのタスク１４０を受け取り、処理するまで、ステップ１５６はステップ１５４に戻る。すべてのタスクが処理された後、少なくとも時間間隔ΔＴの間、新規の複数のタスク１４０をメインキュー１２２から受け取るまでステップ１５４は単にそのステップ１５４に戻るように分岐する。
【００３９】
ステップ１５６が図８により詳細に示されている。ステップ１６０でアルゴリズムが開始後、ステップ１６０はステップ１６２に進み、ここで、メインキュー１２２から一つのタスク１４０を受け取る。ステップ１６２は次いでステップ１６４に進む。
【００４０】
ステップ１６４で、現在のＣＰＵ識別子ＣＲＴ＿ＣＰＵ＿ＩＤが０に設定される。次に利用可能なＣＰＵ識別子ＡＳＧＤ＿ＣＰＵ＿ＩＤが現在のＣＰＵ識別子ＣＲＴ＿ＣＰＵ＿ＩＤに設定される。次いで、ステップ１６４はステップ１６６に進む。ステップ１６６で、アルゴリズムは、現在のＣＰＵ識別子ＣＲＴ＿ＣＰＵ＿ＩＤが処理装置４４〜４８の最後かどうかを判定する。最後でなければ、ステップ１６６はステップ１６８に進む。ステップ１６８において、利用可能なＣＰＵのＣＰＵ負荷ＡＳＧＤ＿ＣＰＵ＿ＬＯＡＤが現在のＣＰＵのＣＰＵ負荷ＣＲＴ＿ＣＰＵ＿ＬＯＡＤより大きいか判定される。もしそうならば（ステップ１６８：ＹＥＳ）、ステップ１６８はステップ１７０に進み、利用可能なＣＰＵ識別子ＡＳＧＤ＿ＣＰＵ＿ＩＤが現在のＣＰＵ識別子ＣＲＴ＿ＣＰＵ＿ＩＤに設定され、利用可能なＣＰＵ負荷ＡＳＧＤ＿ＣＰＵ＿ＬＯＡＤが現在のＣＰＵ負荷ＣＲＴ＿ＣＰＵ＿ＬＯＡＤに割り当てられる。ステップ１７０は次いでステップ１７２に進む。同様に、ステップ１６８で利用可能なＣＰＵ負荷が現在のＣＰＵ負荷より小さい場合（ステップ１６８：ＮＯ）、ステップ１６８は直接ステップ１７２に進む。その結果、ステップ１６８と１７０は共に、タスクを最低演算負荷の利用可能なＣＰＵ識別子ＡＳＧＤ＿ＣＰＵ＿ＩＤに対応する処理装置に確実に割り当てる。その割り当ては、最後の処理装置４４〜４８がステップ１６６で処理された後、ステップ１７４で発生する。次いで、アルゴリズムはステップ１７６で終了する。
【００４１】
図１２（ａ）は共有モードにおけるＣＰＵ識別子（ＣＰＵ  ＩＤ）０〜３毎の処理装置４４〜４８の割り当てを示している。タスク分配器１４２が共有モードで作動しているとき、タスクは、最も利用可能な演算負荷の処理装置４４〜４８に割り当てられる。
【００４２】
タスク分配器１４２は分離モードで作動してもよい。分離モードにおいて、一つ以上の処理装置４４〜４８がそれぞれ特定の安全レベルに割り当てられる。分離モードの動作が図９に最もよく示されている。図９において、ステップ１８０でアルゴリズムの開始後、ステップ１８０はステップ１８２に進み、タスク分配器１４２は分離モードに設定される。ステップ１８２は、次いで、ステップ１８４に進む。
【００４３】
ステップ１８４において、タスク分配器１４２は、メインキュー１２２からの新規のタスクがあるかどうか判定する。新規のタスクがない場合は、ステップ１８４は、単に同ステップに戻るように分岐する。しかしながら、一つのタスク１４０が利用できるときには、その代わりに、ステップ１８４はステップ１８６に分岐し、メインキュー１２２からの複数のタスク１４０が指定された処理装置４４〜４８に割り当てられる。ステップ１８６で実行されるアルゴリズムは図１０により詳細に示される。
【００４４】
次いで図１０に示すように、ステップ１８８でアルゴリズムを開始後、ステップ１８８はステップ１９０に進み、タスク分配器１４２は一つのタスク１４０をメインキュー１２２から受け取る。ステップ１９０は次いでステップ１９２に進む。
【００４５】
ステップ１９２において、タスク分配器１４２はタスク１４０の指定ＣＰＵ情報を得る。ステップ１９２は次いでステップ１９４に進み、現在の指定ＣＰＵ識別子ＣＲＴ＿ＤＥＳＩＧ＿ＣＰＵ＿ＩＤを０に割り当て、利用可能なＣＰＵ識別子ＡＳＧＤ＿ＣＰＵ＿ＩＤを現在の指定ＣＰＵ識別子に割り当てる。ステップ１９４は次いでステップ１９６に進む。
【００４６】
ステップ１９６において、アルゴリズムは、一つ以上のＣＰＵが、タスクの特定の安全負荷（安全レベル）を取り扱うように指定されているかどうかを判定する。その特定安全レベルに割り当てられた一つの処理装置だけが存在する場合、ステップ１９６はステップ１９８に分岐し、次いで、ステップ２００でアルゴリズムを終了する。
【００４７】
逆に、多くの状況において、特に高位の安全レベルのタスクの場合、二つ以上の処理装置４４〜４８が特定安全レベルに割り当てられる。この場合、ステップ１９６はステップ２０２に進み、現在の指定ＣＰＵ識別子ＣＲＴ＿ＤＥＳＩＧ＿ＣＰＵ＿ＩＤが最後の指定された処理装置４４〜４８であるか判定する。もしそうならば（ステップ２０２：ＹＥＳ）、ステップ２０２はステップ１９８に分岐し、タスクを処理装置に割り当て、次いで、ステップ２００で終了する。そうでない場合（ステップ２０２：ＮＯ）、ステップ２０２はステップ２０４に進む。
【００４８】
ステップ２０４において、利用可能な処理装置の負荷が現在の指定ＣＰＵ負荷ＣＲＴ＿ＤＳＩＧ＿ＣＰＵ＿ＬＯＡＤと比較され、大きい場合には（ステップ２０４：ＹＥＳ）、ステップ２０４はステップ２０６に分岐する。そうでない場合には（ステップ２０４：ＮＯ）、ステップ２０４はステップ２０８に進み、利用可能なＣＰＵ識別子ＡＳＧＤ＿ＣＰＵ＿ＩＤは、現在の指定ＣＰＵ識別子ＣＲＴ＿ＤＥＳＩＧ＿ＣＰＵ＿ＩＤに設定される。同様に、利用可能なＣＰＵ負荷ＡＳＧＤ＿ＣＰＵ＿ＬＯＡＤは現在のＣＰＵ負荷ＣＲＴ＿ＤＳＩＧ＿ＣＰＵ＿ＬＯＡＤに設定される。ステップ２０８は、次いで、ステップ２０６に進む。ステップ２０６でステップ２０２に戻り、特定安全レベルのすべての処理装置が調査されるまで、次の利用可能な処理装置が調査され、特定安全レベルに対し現在の演算負荷が最低である利用可能な処理装置が決定される。
【００４９】
図１２（ｂ）は分離モードにおけるタスク分配器１４２によるタスクの割り当てを示している。分離モードにおいて、ＣＰＵ  ＩＤ（ＣＰＵ識別子）が０の処理装置４４〜４８は、安全レベル０のタスクだけを処理するように割り当てられる。一方、ＣＰＵ  ＩＤが１の処理装置は安全レベル１〜２のタスクを処理するのに対し、ＣＰＵ  ＩＤが２の処理装置は安全レベル３〜４のタスクを処理し、以下同様となる。
【００５０】
上述のことから、本発明が提供する自動車用電子制御システムにおいて、タスクを分析するためだけでなく、適切な出力信号を種々の車両システムの種々のアクチュエータに提供するために必要な演算能力が、汎用プロセッサによって集中制御される、ということがわかるであろう。次に、これによって、個々のシステム（サブシステム）は中央処理装置としての汎用プロセッサのソフトウエアを単にアップデートすることによって容易にアップデートされることが可能となる。更に、中央処理装置としての汎用プロセッサによって、車両の個々のシステムによって使用されるプロセッサの数、及び／又は、電力が削減され、これによって、車両の制御システムのトータルコストが低減される。
【００５１】
なお、本発明は上記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、上述した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、また、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００５２】
また、上記の各構成、機能等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD（Solid State Drive）等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【００５３】
上記実施形態では、制御システムを電気自動車に適用しているが、内燃機関で駆動される自動車に適用してもよい。この場合、センサは、例えば、エンジンの状態を検知する。
【００５４】
なお、本発明の実施形態を要約すると以下の通りである。
【００５５】
本発明は、既知の電子システムの不都合を解消する自動車用の制御システムを提供する。
【００５６】
要するに、本発明の実施形態による制御システムは複数のサブシステムを有する自動車用に設計されている。更に、各サブシステムは、一つ以上のセンサ、及び／又は、アクチュエータを含み、作動時に、それらは状態を測定するか、又は車両の機能を実行する。サブシステムは、特に、レーダセンササブシステム、ブレーキアクチュエータサブシステム、アクティブサスペンションサブシステム、インフォテインメントサブシステム、バックアップカメラなどを含む。
【００５７】
本発明の実施形態による制御システムは、汎用プロセッサを有し、好ましくは、多数の処理装置、又、代替的には、多数のコアを有する単一の処理装置から構成される。この汎用プロセッサは、複数のソフトウエアアプリケーションがプログラムされ、それぞれのソフトウエアアプリケーションは車両のサブシステムの一つの動作と関連づけられる。好ましくは、すべてのソフトウエアは汎用プロセッサにアクセス可能な異なるメモリパーティションに含まれる。
【００５８】
バス（電子バス）は、汎用プロセッサと車両のサブシステムを電気的に接続する。このバスを介して、汎用プロセッサとサブシステムとの間で通信が行われる。
【００５９】
各サブシステムは、汎用プロセッサから命令を受け取り、及び／又は、センサ信号若しくはタスクをバスを介して汎用プロセッサに送る通信インターフェースを有する。汎用プロセッサとサブシステム間の通信にＣＡＮバスを用いてもよい。
【００６０】
バスと汎用プロセッサの間にタスクアービトレータが介在する。タスクアービトレータは、例えば、数ミリ秒間のような、予め設定された時間の間に、汎用プロセッサが受け取った多数のセンサ信号の実行順序に優先順位（優先度）を付ける。アービトレータによる多数のセンサ信号の優先順位付けは、センサ信号の安全レベルに応じて実施される。例えば、ブレーキアクチュエータ又はレーダセンサから受けたタスクにはインフォテインメントサブシステムから受けたタスクよりはるかに高い優先度が割り当てられる。
【００６１】
汎用プロセッサは、次いで、タスクアービトレータから受けたセンサ信号のサブシステムと関連するソフトウエアアプリケーションの実行を開始する。その後、汎用プロセッサは、関連するソフトウエアアプリケーションの実行の結果として、制御信号をバスを介して一つ以上のサブシステムに伝送する。
【符号の説明】
【００６２】
２０…車両
２２…レーダセンササブシステム
２４…電動モータ制御サブシステム
２６…ブレーキアクチュエータサブシステム
２８…アクティブサスペンションサブシステム
３０…ステレオカメラサブシステム
３２…バックアップカメラサブシステム
３４…インフォテインメントサブシステム
３５…バッテリサブシステム
３６…車輪
４０…汎用プロセッサ
４２…バス
４４〜４８…処理装置
５０…コントローラ
５２…内部バス
５４…永続記憶装置
５６…共有メモリ
６０〜７８…アプリケーション
８０…仮想バス
８２…タスクアービトレータ
１２２…メインキュー
１４２…タスク分配器
【図１】
2016207215.tif 000003
【図２】
2016207215.tif 000004
【図３】
2016207215.tif 000005
【図４】
2016207215.tif 000006
【図５】
2016207215.tif 000007
【図６】
2016207215.tif 000008
【図７】
2016207215.tif 000009
【図８】
2016207215.tif 000010
【図９】
2016207215.tif 000011
【図１０】
2016207215.tif 000012
【図１１】
2016207215.tif 000013
【図１２】
2016207215.tif 000014