(57)【要約】  第１のタスクプログラムが第１の時間スロットからの第１の時間フレームにおいて実行され、第２のタスクプログラムが、第２の時間スロットからの第２の時間フレームにおいて実行され、第１のタスクプログラムの結果が解放されたかを示すステータス変数が算出され、第１のタスクプログラムの結果が現在の第１の時間スロットにおいて算出され、この現在の第１の時間スロットにおいて第２のタスクプログラムに割り当てられているメモリ領域へ伝送され、第２のタスクプログラムが、ステータス変数の値と第１のタスクプログラムの結果とに応じて第２の結果を算出し、ステータス変数の値が同様に現在の第１の時間スロットにおいて第２のタスクプログラムに割り当てられるステータスメモリ領域に伝送され、第１のタスクプログラムの結果と、第１のタスクプログラムの実行開始後、および第１のタスクプログラムの再実行前のステータス変数の値との両方が算出され伝送される、ステップを含む、制御装置を作動するための方法。
2020506465.tif 000002
【特許請求の範囲】
【請求項１】
自動車用の制御装置を作動させるための方法であって、前記制御装置は少なくとも１つの、好ましくは少なくとも２つの実行ユニットを有し、
前記実行ユニットは特にタスクプログラムの実行のために構成されている、方法において、
−  第１のタスクプログラム（１２２）が、第１の時間スロット（ＺＳ２、ＺＳ２’）からの第１の時間フレームにおいて実行され、
−  第２のタスクプログラム（１１２）が、第２の時間スロット（ＺＳ１）の第２の時間フレームにおいて実行され、
−  前記第１のタスクプログラム（１２２）の結果（Ｇ）が解放されたかを示すステータス変数（Ｇ）が算出され、
−  前記第１のタスクプログラム（１２２）の前記結果（Ｇ）が、現在の第１の時間スロット（ＺＳ２’）において算出され、この現在の第１の時間スロット（ＺＳ２’）において前記第２のタスクプログラム（１１２）に割り当てられているメモリ領域（１１４）へ伝送され、
−  前記第２のタスクプログラム（１１２）が、前記ステータス変数（Ｇ）の前記値と前記第１のタスクプログラム（１２２）の前記結果（Ｇ）とに応じて第２の結果を算出し、
−  前記ステータス変数（Ｇ）の前記値が、同様に、前記現在の第１の時間スロット（ＺＳ２’）において前記第２のタスクプログラム（１１２）に割り当てられているステータスメモリ領域（１１４）に伝送され、
−  前記第１のタスクプログラムの前記結果（Ｇ）と、前記第１のタスクプログラム（１２２）の前記実行（１２２０）開始後、および前記第１のタスクプログラム（１２２）の再実行（１２２１）前の前記ステータス変数（Ｇ）の前記値との両方が算出され伝送される、ステップを含む、方法。
【請求項２】
第１の時間スロット（ＺＳ２、ＺＳ２’）および第２の時間スロット（ＺＳ１）のうちのより長い時間スロットごとに前記第１のタスクプログラム（１２２）の前記結果の前記伝送が１回のみ行われる、請求項１に記載の方法。
【請求項３】
第１の時間スロット（ＺＳ２、ＺＳ２’）および第２の時間スロット（ＺＳ１）のうちのより長い時間スロットごとに前記ステータス変数（Ｇ）の前記値の前記伝送が１回のみ行われる、請求項１または２に記載の方法。
【請求項４】
前記より長い時間スロット、および前記より短い時間スロットの持続時間が互いに整数倍である、請求項２に記載の方法。
【請求項５】
前記第１のタスクプログラム（１２２）の前記結果（Ｇ）と、前記伝送前の前記ステータス変数（Ｇ）とが、同時に伝送できるようにメモリ領域（１２４）に保存されている、請求項１〜４のいずれか一項に記載の方法。
【請求項６】
前記第１のタスクプログラム（１２２）および／または前記第２のタスクプログラム（１１２）が、前記自動車の構成要素の、機能を果たす能力を診断する、請求項１〜５のいずれか一項に記載の方法。
【請求項７】
前記第２のタスクプログラム（１１２）の結果が解放されたかを示す第２のステータス変数が算出され、
前記第２のタスクプログラム（１１２）の前記結果が、現在の第２の時間スロット（ＺＳ１）において算出され、この現在の第２の時間スロット（ＺＳ１）において第３のタスクプログラムに割り当てられているメモリ領域に伝送され、
前記第３のタスクプログラムが、前記ステータス変数の前記値および前記第２のタスクプログラムの前記結果に応じて第３の結果を算出し、
前記第２のステータス変数の前記値が、同様に、前記現在の第２の時間スロットにおいて、前記第３のタスクプログラムに割り当てられているステータスメモリ領域に伝送され、
前記第２のタスクプログラムの前記結果と、前記第２のタスクプログラムの前記実行終了後、および前記第２のタスクプログラムの再実行前の前記第２のステータス変数の前記値との両方が算出され伝送される、請求項１〜６のいずれか一項に記載の方法。
【請求項８】
前記第３のタスクプログラムが、互いに連続する第３の時間スロットからの第３の時間フレームにおいて実行され、第１の時間スロット（ＺＳ２、ＺＳ２’）および第２の時間スロット（ＺＳ１）のうちのより長い時間スロットごとに前記ステータス変数（Ｇ）の前記値の伝送も１回のみ行われる、請求項７に記載の方法。
【請求項９】
第１の時間スロット（ＺＳ２、ＺＳ２’）、第２の時間スロット（ＺＳ１）、および第３の時間スロットのうちの最も長い時間スロットごとに前記ステータス変数（Ｇ）の前記値の伝送も１回のみ行われる、請求項２または８に記載の方法。
【請求項１０】
前記第１のタスクプログラムに割り当てられる構造オブジェクト（ＣＩＯ＿ＦＣＴ１、・・・、ＣＩＯ＿ＦＣＴ５）が、前記第２のタスクプログラムの前記結果が前記ステータス変数の前記値と、前記第１のタスクプログラムの前記結果とに応じて算出されるという情報を含み、かつ、前記第２のタスクプログラムに割り当てられるさらなる構造オブジェクト（ＣＩＯ＿ＦＣＴ１、・・・、ＣＩＯ＿ＦＣＴ５）が、前記第３のタスクプログラムの前記結果が前記第２のステータス変数の前記値と、前記第２のタスクプログラムの前記結果とに応じて算出されるという情報を含み、その際、コンピュータプログラムが、前記構造オブジェクトと前記さらなる構造オブジェクトとに応じて算出されることを特徴とする、請求項７〜９のいずれか一項に記載の方法を実行するために構成されている、コンピュータプログラムを生成するための方法。
【請求項１１】
請求項１〜１０のいずれか一項に記載の方法を実行するように構成されているコンピュータプログラム。
【請求項１２】
請求項１１に記載のコンピュータプログラムが保存されている機械可読メモリ媒体。
【請求項１３】
請求項１〜１０のいずれか一項に記載の方法を実行するように構成されているコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特に自動車内の制御装置を作動させるための方法、その方法を実行するためのコンピュータプログラムおよびコンピュータ、ならびにそのコンピュータプログラムが記憶されている機械可読メモリ媒体に関する。また、本発明はそのコンピュータプログラムを（自動）生成するための方法に関する。
【背景技術】
【０００２】
独国特許出願公開第１０２００９０２６９９５号明細書には、バスシステム、特にＣＡＮバスを作動させるための方法が記載されている。バスシステムには複数の端末が接続可能である。伝送されたメッセージは識別子を有し、特定の識別子（例えばＩＤＥＮＴ２）はただ１つの端末によってのみ使用を許される。各端末は、伝送されたメッセージの識別子をそれ自体によって使用される識別子（例えば、ＩＤＥＮＴ２）と比較する。一致した場合は、エラーメッセージが生成される。
【０００３】
独国特許出願公開第１０２０１４２１６３８１号明細書からは、制御装置を作動するための方法が知られており、そこでは制御ユニットは、タスクプログラム実行のために構成された少なくとも１つの実行ユニットを有し、少なくとも一時的に第１のタスクプログラムおよび第２のタスクプログラムが実行され、第１のタスクプログラムは、第２のタスクプログラムを実行する通知を実行ユニットに送信し、この通知は第２のタスクプログラムおよび／または第２のタスクプログラムを実行する実行ユニットに、第１のタスクプログラムが第２のタスクプログラムからデータを受信する準備ができたことを信号で伝える。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】独国特許出願公開第１０２００９０２６９９５号明細書
【特許文献２】独国特許出願公開第１０２０１４２１６３８１号明細書
【発明の概要】
【発明の効果】
【０００５】
独立形式請求項１の特徴を有する方法は、計算が複数の実行ユニット（例えばプロセッサ）にわたって分散されていても、タスクプログラムの実行を特に確実に実行することができるという利点を有する。
【０００６】
有利な改善形態は、引用形式請求項の対象である。
第１の態様では、本発明は、特に自動車用の制御装置を作動させるための方法に関し、制御装置は少なくとも１つ、好ましくは少なくとも２つの実行ユニットを有し、実行ユニットは特にタスクプログラムの実行のために構成されている。ここで、第１の時間スロットからの第１の時間フレームにおける第１のタスクプログラム（英語：ｔａｓｋ）が実行される（したがって、第１の時間スロットは有利には互いに直接連続し、各作動サイクルにおいて同じ長さである）。また、第２のタスクプログラムは、第２の時間スロットからの第２の時間フレームにおいて実行される（したがって、第２の時間スロットは有利には互いに直接連続する）。
【０００７】
ここでは、第１のタスクプログラムの結果が解放されたかを示すステータス変数が算出される。第２のタスクプログラムは、ステータス変数の値と第１のタスクプログラムの結果とに応じて第２の結果を算出する。
【０００８】
これは、例えば、さらなる診断の実行を制御できるエラーメモリマネージャの範囲で行うことができる。非常に迅速に、前提条件なしに実行できる診断（例えばセンサ上の電気的診断など）がある一方、検出された値の妥当性を検査する他の診断がある。しかしながら、エラーメモリマネージャへの妥当性エラーの報告は、有利には電気エラーがその前に確認されていない場合にのみ行われるべきである。
【０００９】
これらの依存関係を管理するために、ステータス変数の値（この例では電気的診断の実施）に応じてタスクプログラム（この例では妥当性検査）を解放できる、いわゆるＦＩＤブロッキングマトリクスを使用することができる。
【００１０】
ここで、第１のタスクプログラムの新しい結果（この例ではすなわち診断結果）を報告する際すぐに、ブロック関係を算出することができる。しかしながら、ステータス変数の値を伝送する物理的信号の実行時間はその際考慮されないままである。
【００１１】
計算が少なくとも２つの実行ユニットに分散されて行われる場合、物理的値が実行ユニットの境界を越え、時間演算ステップを越えて分配されるという問題が起こり得る。実行ユニットの数が増えるにつれて（いわゆるメニーコアシステムで）、このようにしてのみ実行ユニットのリソースを最適に利用できるため、この分布は増加する。
【００１２】
ここで、第１のタスクプログラムの結果の第２のタスクプログラムへの通信は、いわゆるタイミング通信（論理実行時間としても知られる）によって実行できる。つまり、第１のタスクプログラムの結果を現在の第１の時間スロットにおいて算出することができる。続いて、第１のタスクプログラムは、この現在の第１の時間スロットにおいて第２のタスクプログラムに割り当てられているメモリ領域へ伝送される。
【００１３】
ステータス変数の値を確実に伝送するために、ステータス変数の値が伝送されるまで第１のタスクプログラムの実行をブロックすることが可能である。しかしながら、これは、第１のタスクプログラムのリアルタイム能力、ひいては固定時間フレームにおける実行が妨げられることを引き起こし得る。
【００１４】
したがって、ステータス変数の値が同様に現在の第１の時間スロットにおいて第２のタスクプログラムに割り当てられているステータスメモリ領域に伝送され、第１のタスクプログラムの結果と、第１のタスクプログラムの実行開始後、および第１のタスクプログラムの再実行前のステータス変数の値との両方が算出され伝送される。
【００１５】
結果の多重管理を回避するために、一改善形態では、第１の時間スロットおよび第２の時間スロットのうちのより長い時間スロットごとに第１のタスクプログラムの結果の伝送が１回のみ行われる、ならびに／または第１の時間スロットおよび第２の時間スロットのうちのより長い時間スロットごとにステータス変数の値の伝送も１回のみ行われるようにできる。
【００１６】
伝送時点の決定は、より長い時間スロットおよびより短い時間スロットの持続時間が互いに整数倍である場合に特に簡単になる。
第１のタスクプログラムの結果とステータス変数とが第２のタスクプログラムに割り当てられたステータスメモリ領域に伝送される前にメモリ領域の任意の場所に保存されると、ただ１つのコピープロセスでは実行ユニットから伝送できない可能性がある。これは、例えば第１のタスクプログラムの結果とステータス変数とが同じメモリバンクに保存されていない場合、使用されているハードウェアによっては生じる可能性がある。したがって有利には、第１のタスクプログラムの結果と第１のタスクプログラムからのステータス変数とが、同時に伝送できるように保存されるようにできる。これは例えば、それらを同じメモリバンクに格納することによって実施できる。
【００１７】
別の一態様では、第１のタスクプログラムと第２のタスクプログラムとの間のような依存関係が、第２のタスクプログラムと第３のタスクプログラムとの間にもあってよい。つまり、第２のタスクプログラムの結果が解放されたかを示す第２のステータス変数が算出され、第２のタスクプログラムの結果が現在の第２の時間スロットにおいて算出され、この現在の第２の時間スロットにおいて第３のタスクプログラムに割り当てられているメモリ領域に伝送され、第３のタスクプログラムは、ステータス変数の値および第２のタスクプログラムの結果に応じて第３の結果を算出し、第２のステータス変数の値は同様に、現在の第２の時間スロットにおいて、第３のタスクプログラムに割り当てられているステータスメモリ領域に伝送され、第２のタスクプログラムの結果と、第２のタスクプログラムの実行終了後、および第２のタスクプログラムの再実行前の第２のステータス変数の値との両方が算出され伝送されるようにできる。
【００１８】
このような一連の依存関係では、特に、第３のタスクプログラムが互いに連続する第３の時間スロットからの第３の時間フレームにおいて実行され、第１の時間スロットおよび第２の時間スロットのうちのより長い時間スロットごとにステータス変数の値の伝送も１回のみ行われ、第１の時間スロット、第２の時間スロットおよび第３の時間スロットのうちの最も長い時間スロットごとにステータス変数の値の伝送が１回のみ行われるようにできる。
【００１９】
依存関係が前述のＦＩＤブロッキングマトリクスの形態で管理される場合、言及されたブロックが結果の伝送およびステータス変数の値の伝送のタイミングと一貫性をもって行われる必要があるため、そのような方法を実行するコンピュータプログラムの生成は非常に複雑である。
【００２０】
したがって、さらなる一態様において、このコンピュータプログラムの自動生成が可能である方法が提案される。ここで、ブロッキングマトリクスの構造はフラットではなく階層的に構築される。それらのステータス変数が伝送されるタスクプログラムには、タスクプログラムの結果と、それぞれのタスクプログラムに含まれるタスクプログラムの結果とを統合する構造オブジェクトが割り当てられる。よって、タスクプログラム間の依存関係は、これらの構造オブジェクトに統合されている。
【００２１】
したがって、構造オブジェクトは、第２のタスクプログラムの結果がステータス変数の値と第１のタスクプログラムの結果とに応じて算出されるという情報を含んでいてもよい。この構造オブジェクトは、第１のタスクプログラムに割り当てられる。
【００２２】
また、この場合、さらなる構造オブジェクトは、第３のタスクプログラムの結果が第２のステータス変数の値と第２のタスクプログラムの結果とに応じて算出されるという情報を含んでいる。このさらなる構造オブジェクトは、第２のタスクプログラムに割り当てられる。そして、コンピュータプログラムは、構造オブジェクトとさらなる構造オブジェクトとに応じて算出される。
【００２３】
これは、タスクプログラムの結果とステータス変数とが伝送される時間的フレームを、特に容易に自動化して算出できるという利点を有する。
さらなる態様では、本発明は、前記コンピュータプログラムが保存されている機械可読メモリ媒体に関する。さらに、このコンピュータプログラムを生成するための方法を実行するように構成された（すなわち、対応してプログラムされた）コンピュータ、および前記方法を実行するように構成されたさらなるコンピュータ（特に制御装置）に関する。
【００２４】
以下に、添付図面を参照して本発明の実施形態をより詳しく説明する。
【図面の簡単な説明】
【００２５】
【図１】従来技術によるＦＩＤブロッキングマトリクスの図である。
【図２】従来技術による概略フローチャートである。
【図３】本発明の一実施形態にかかる概略フローチャートである。
【図４】本発明の第２の実施形態にかかる概略フローチャートである。
【図５】本発明の第３の実施形態にかかる概略フローチャートである。
【発明を実施するための形態】
【００２６】
図１は、従来技術のＦＩＤブロッキングマトリクスを示す。このようなブロッキングマトリクスに基づいて、自動車の実行ユニット上で実行されるタスクプログラムには、どの診断タスクプログラムを実行する必要があるかが割り当てられるため、対応するタスクプログラム自体が確実に結果を算出することができる。各行は関数識別子（英語：ｆｕｎｃｔｉｏｎ  ｉｄｅｎｔｉｆｉｅｒ）ＦＩＤ１、ＦＩＤ２、ＦＩＤ３、・・・に割り当てられ、列は診断タスクプログラム（英語：ｄｉａｇｎｏｓｔｉｃ  ｆａｕｌｔ  ｃｈｅｃｋ）ＤＦＣ１、ＤＦＣＴ２、ＤＦＣ３、ＤＦＣ４、・・・に割り当てられている。ここで、各関数識別子は一意的に１つのタスクプログラムに対応している。そのように広がるマトリクスの各フィールドに２進値が入力されている。「１」は対応する診断タスクプログラムがタスクプログラムの実行前に首尾よく完了されているのが望ましいことを意味し、「０」はこれが必要でないことを意味する。冒頭に記載したように、そのようなマトリクスの設定は複雑なプロセスである。
【００２７】
図２は、従来技術によるフローチャートを概略的に示す。時点ｔ０において、第１のタスクプログラム２１０の実行が開始される。第１のタスクプログラム２１０は、この例では値２５５をとる結果ｘを算出する。ステップＳにおいて、第１タスクプログラム２１０は、結果ｘの算出が信頼性をもって行われたかを検査する。これは、ここでは該当せず、したがって大域ステータス変数ＤＥＭ＿Ｅｖｅｎｔが時点ｔ１で値「ｆａｉｌｅｄ」に設定され、これは、２進では例えば「０」でコード化され得る。
【００２８】
時点ｔ２において、第２のタスクプログラム２２０の実行が開始される。時点ｔ３において、指令Ｍが結果ｘの値を第２のタスクプログラムに割り当てられているメモリ領域にコピーする。プログラム・ロジック的には、これは、この例ではコピーされた値２５５が割り当てられる新しい変数ｘ＿ｃを作成することによって行われる。
【００２９】
第１のタスクプログラム２１０の実行は周期的に繰り返して開始されるため、時点ｔ４において再び開始される。今回は結果ｘ＝１０を算出する。ステップＳにおいて、第１のタスクプログラム２１０は、結果ｘの算出が信頼性をもって行われたかを再度検査する。これは、ここでは該当し、したがってステータス変数ＤＥＭ＿Ｅｖｅｎｔが時点ｔ５で値「ｐａｓｓｅｄ」に設定される。最後に、時点ｔ６で第２のタスクプログラム２２０はステップＴにおいて変数ｘ＿ｃにアクセスして、ｘ＿ｃに応じた結果を計算する。変数ｘ＿ｃの値の信頼性を検査するために、第２のタスクプログラム２２０はステータス変数ＤＥＭ＿Ｅｖｅｎｔの値を検査する。ここでこれは、値「ｐａｓｓｅｄ」を有するため、第２のタスクプログラムは、変数ｘ＿ｃの値が信頼性を有すると誤って仮定する。これは、プログラム進行のエラーにつながり得る。したがって、第２のタスクプログラム２２０が大域変数ＤＥＭ＿Ｅｖｅｎｔへの書き込みアクセスを阻止し、すなわち、ｘ＿ｃへのアクセスが完了するまで変数をブロックする可能性がある。しかしこれは、事情によって第１のタスクプログラム２１０の実行における遅延をもたらす。
【００３０】
したがって、図３は、本発明の第１の実施形態にかかるフローチャートを概略的に示す。この例では、第２のタスクプログラム１１２の実行は第１のタスクプログラム１２２の結果に依存する。
【００３１】
時間スケールｔ上には、両方のタスクプログラム１１２、１２２が新しい作動サイクルを開始する開始時点ｔ０が示されている。以下の説明では、第２のタスクプログラム１１２に、この場合では１０ｍｓ（ｍｓ）の時間スロットＺＳ１が割り当てられていることを前提とする、これに関し中括弧１１２’でマークされた図３の下方領域も参照されたい。これによれば、第２のタスクプログラム１１２の第１の作動サイクルは時点ｔ０から時点ｔ２まで延び、第２のタスクプログラム１１２の第２の作動サイクルは時点ｔ２、ｔ４等の間を延びる。互いに連続する時間スロット間の間隔境界またはサイクル境界は長方形Ｒ１によって示唆されている。
【００３２】
しかし、図３の領域１１２’から分かるように、第２のタスクプログラム１１２は、全サイクル時間または割り当てられた時間スロットの長さこの場合には１０ｍｓを常に必要とするわけではない。むしろ、第１の作動サイクルにおける第２のタスクプログラム１１２の全てのタスクの処理は既に時点ｔ０１で行われ、第２の作動サイクルにおける第２のタスクプログラム１１２の全てのタスクの処理は既に時点ｔ２１で行われている。換言すると、第１の作動サイクルにおいて、第１のタスクプログラム１１２の処理の終了と、タスクプログラム１１２の起動がなく、ひいては１０ｍｓの全サイクル時間の間予約された実行ユニットの計算資源が未利用のまま残っている間隔境界Ｒ１との間に、時間間隔ｔ２−ｔ０１が存在する。
【００３３】
第２のタスクプログラム１１２と同様に、第１のタスクプログラム１２２にも同様に一定の長さ、この場合には５ｍｓの時間スロットＺＳ２、ＺＳ２’が割り当てられる、これに関し図３の中括弧１２２’で印を付けた垂直上方領域も参照されたい。これによると、第１のタスクプログラム１２２の第１の作動サイクルは、時点ｔ０から時点ｔ１まで、第１のタスクプログラム１２２の第２の作動サイクルは、時点ｔ１、ｔ２等の間を延びる。第１のタスクプログラム１２２の互いに連続する時間スロット間の間隔境界またはサイクル境界は長方形Ｒ２によって示唆されている。
【００３４】
しかし、図３の領域１２２’から分かるように、第１のタスクプログラム１２２は、全サイクル時間またはこの場合には５ｍｓの割り当てられた時間スロットの長さを必ずしも常に必要とするわけではない。むしろ、第１の作動サイクルにおける第１のタスクプログラム１２２の全てのタスクの処理は既に時点ｔ０２で行われ、第２の作動サイクルにおける第１のタスクプログラム１２２の全てのタスクの処理は既に時点ｔ１１で行われている。
【００３５】
個々のタスクプログラム１１２、１２２の起動を表す領域１１２’、１２２’に加えて、図３には、第２のタスクプログラム１１２に割り当てられた第２のメモリ領域の利用図式１１４と、第１タスクプログラム１２２に割り当てられた第１のメモリ領域の利用図式１２４とがさらに示されている。
【００３６】
一実施形態によれば、送信側タスク１２２（第１のタスクプログラム）の第１のメモリ領域１２４において、送信側タスク１２２から、例えば入力変数に基づいて受信側タスク１１２（第２のタスクプログラム）に伝送される量が計算される。一実施形態によれば、送信側タスク１２２から受信側タスク１１２へのデータの伝送１４ａ、１４ｂは、送信側タスク１２２が出力されるデータＧの計算を完了し、同時に受信側タスク１１２が前のサイクルで受信されたデータ１５の処理を終了している場合に行われる。
【００３７】
好ましい一実施形態によれば、データＧはステータス変数ＤＥＭ＿Ｅｖｅｎｔ（図２参照）も含むことができる。その後、データＧが第２のタスクプログラム１１２に割り当てられたメモリ領域に伝送されると、ステータス変数ＤＥＭ＿Ｅｖｅｎｔがこの割り当てられたメモリ領域内のメモリ領域にコピーされる。
【００３８】
一実施形態によれば、受信側タスク１１２は、１回の実行内の計算が終了するとすぐに、すなわち遅くとも受信側タスクのサイクルの終わりに通知Ｂを送信側タスク１２２の実行ユニットに送信する、これに関し図３の時点ｔ０１を参照されたい。
【００３９】
好ましい一実施形態では、この場合には例えば第１のタスクプログラム１２２も実行する実行ユニットによって、以下に「通知タスク」とも呼ばれるさらなるタスクプログラム１４０を実行して、第１のタスクプログラム１２２（送信側タスク）に割り当てられたメモリ領域１２４から、第２のタスクプログラム１１２（受信側タスク）に割り当てられたメモリ領域１１４へデータを伝送するようにできる。特に、このさらなるタスクプログラム１４０は、通知Ｂによって起動することができる。
【００４０】
今日の自動車分野で通常の作動システムでは、通知タスク１４０をその際例えば実行ユニットの起動タスクのリストに同一の優先度で登録し（「ｒｅａｄｙ  ｑｕｅｕｅ」）、優先度の高い他のタスクを実行する必要がなく、同じリストに以前登録されたタスクが終了した直後に実行することができる。既に前述したように、送信側タスクと受信側タスクとは、同じ演算コアでも異なる演算コアでも実行できる。
【００４１】
一実施形態では、第２のタスクプログラム１１２（受信側タスク）へのデータＧの伝送は、通知タスク１４０の実行内、または送信側タスク１２２の終了時に、どちらの結果が遅いかによって行われる。
【００４２】
通知Ｂが送信側タスク１２２の終了前に行われた場合、一実施形態ではデータ転送１４ａは送信側タスク１２２の終了時、つまり時点ｔ１１の後に行うことができる。この場合、例えば、送信側タスク１２２自体がデータ伝送１４ａを開始または実行する。送信側タスク１２２が終了した後に通知Ｂ’が行われる場合、一実施形態では、通知タスク１４０が受信側タスク１１２へのデータの伝送１４ｂを開始または実行することができる。
【００４３】
通知タスク１４０が送信側タスク１２２に対して正確にいつ実行されるかは、一実施形態では２つのタスクの優先度に依存する。両方のタスク１２２、１４０が同じ優先度を有する場合、タスク１２２、１４０が互いに割り込み得、通知Ｂ、Ｂ’が送信側タスク１２２の実行に対していつ行われるのかに応じて、通知タスク１４０が送信側タスク１２２の前後どちらかに実行され得ることが除外される。
【００４４】
さらなる有利な一実施形態では、第２のタスクプログラム１１２および第１のタスクプログラム１２２は異なるサイクル時間ＺＳ１、ＺＳ２を有し、第２のタスクプログラム１１２のサイクル時間ＺＳ１は第１のタスクプログラム１２２のサイクル時間ＺＳ２よりも大きく、第１のタスクプログラム１２２に割り当てられたメモリ領域１２４から、時間的に第２のタスクプログラム１１２のサイクル終了領域に位置する第２のタスクプログラム１２２のサイクルＺＳ２’内で、第２のタスクプログラム１１２に割り当てられたメモリ領域１１４へデータが伝送される。
【００４５】
有利な一実施形態では、送信側１２２から受信側１１２へのデータＧの伝送がより遅いサイクルＺＳ１または時間間隔ごとに正確に１回行われることを保証するアルゴリズムが設けられている。送信側または受信側タスク１２２、１１２内のカウンタ機構によって、「より速い」タスク１２２のそれぞれ最後の実行１２２０のみが、より遅いタスク１１２の時間間隔ＺＳ１内でデータ伝送１４ａを開始すること（例えば受信側タスク１１２がより高い起動率を有する場合、通知Ｂによって）、または実行すること（送信側タスク１２２がより頻繁に起動される場合）が保証される。このために、カウンタは、より速いタスクのそれぞれ終わりに増加される。カウンタの状況がより速いサンプリング時間に対する遅いサンプリング時間の比率に対応する場合、データ伝送が許可され、カウンタはゼロにリセットされる。
【００４６】
図３の例では、受信側タスク１１２における１０ｍｓと比較して、送信側タスク１２２は５ｍｓのより高い起動率を有する。したがって、一実施形態によれば、データ伝送１４ａ、１４ｂは実行１２２０、１２２２の２回に１回のみ実行され、実行１２１９、１２２１では実行されない。これによって、有利には「Ｌｏｇｉｃａｌ  Ｅｘｅｃｕｔｉｏｎ  Ｔｉｍｅ」の意味での決定論的挙動が保証される。
【００４７】
図４は、本発明の第２の実施形態にかかるフローチャートを概略的に示している。この例においても、第２のタスクプログラム１１２の実行は、第１のタスクプログラム１２２の結果に応じて行われる。
【００４８】
時間スケールｔ上には、両方のタスクプログラム１１２、１２２が新しい作動サイクルを開始する開始時点ｔ０が示されている。第１のタスクプログラム１２２にはサイクル時間、すなわち時間スロットＺＳ２の長さが割り当てられ、これは第２のタスクプログラム１１２に割り当てられたサイクル時間の２倍の長さである。つまり、図３に示す実施例とは対照的に、第１のタスクプログラム１２２のサイクル時間は、第２のタスクプログラム１１２のサイクル時間よりも長い。
【００４９】
第２のタスクプログラム１２２は診断を実行し、時間ステップｔにおいて結果ｖ（これはｖｔとして記載されている）を算出し、また、ステータス変数Ｅｖｅｎｔを算出する。ここで時間ステップｔは、第２のタスクプログラム１２２の作動サイクルを示す。この例では（領域１２２’を参照）、第２のタスクプログラム１２２は、時点ｔ０とｔ２との間の第１の作動サイクルにおいてｖｔの計算を実行するが失敗する。コマンドＤｅｍ＿ＳｅｔＥｖｅｎｔＳｔａｔｕｓにより、第２タスクプログラム１２２は、それに割り当てられたメモリ領域内において変数ｖｔの値を１６進値「ＦＦ」に設定し、ステータス変数Ｅｖｅｎｔの値を値Ｆａｌｓｅに設定する。関数ＦＩＭ＿ＧｅｔＦｕｎｃＰｅｒｍｉｓｓｉｏｎの呼び出しによって、タスクプログラムは診断関数を実行する必要があるかどうかを呼び出す。この許可は、ステータス変数Ｅｖｅｎｔに依存する。したがって、関数ＦＩＭ＿ＧｅｔＦｕｎｃＰｅｒｍｉｓｓｉｏｎは、時間ステップｔの間、ステータス変数Ｅｖｅｎｔの値にアクセスする。また、時間ステップｔでの変数ｖの値は、関数ＦＩＭ＿ＧｅｔＦｕｎｃＰｅｒｍｉｓｓｉｏｎを使って呼び出すことができる。図３で説明したように、時刻ｔ２より前に、通知タスク１４０は、変数ｖｔおよびＥｖｅｎｔの値を第１のタスクプログラム１１２に割り当てられたメモリ領域にコピーする。一実施形態では、変数ｖｔおよびＥｖｅｎｔは、それらをただ一度のコピーコマンドを用いて共にコピーし得るように、第２のタスクプログラム１２２に割り当てられたメモリ領域内に格納される。
【００５０】
ｔ０とｔ１との間の第１の作動サイクルにおいて、第１のタスクプログラム１１２は、関数ＦＩＭ＿ＧｅｔＦｕｎｃＰｅｒｍｉｓｓｉｏｎを用いて、第１のタスクプログラム１１２に割り当てられたメモリ領域にある変数ｖおよびＥｖｅｎｔの値を確認する。これらの変数は、先行する作動サイクルｔ−１において第２のタスクプログラム１２２によって算出された値を有する。したがって、それらは値ｖｔ−１とＴｒｕｅとを有する。
【００５１】
次の作動サイクルである第２のタスクプログラム１２２の時間ステップｔ＋１では、時点ｔ２で始まる時間スロットＺＳ２’において、第２のタスクプログラム１２２は１６進値「１５」に対する結果ｖｔ＋１を算出する。計算は失敗しないのため、ステータス変数Ｅｖｅｎｔには値Ｔｒｕｅが割り当てられる。変数値のこの割り当ては、コマンドＤｅｍ＿ＳｅｔＥｖｅｎｔＳｔａｔｕｓを用いて再度行われる。後の時点で、通知タスク１４０は、これらの値を第２のタスクプログラム１２２に割り当てられたメモリ領域から第１のタスクプログラム１１２に割り当てられたメモリ領域にコピーする。
【００５２】
第１のタスクプログラム１１２の第３および第４の作動サイクルにおいて、関数ＦＩＭ＿ＧｅｔＦｕｎｃＰｅｒｍｉｓｓｉｏｎは、第１のタスクプログラム１１２に割り当てられたメモリ領域内にある変数ｖおよびステータス変数Ｅｖｅｎｔの値にアクセスすることができる。これらは、時間ステップｔに対応する値ｖｔ＝＄ＦＦとおよびＥｖｅｎｔ＝Ｆａｌｓｅを有する。
【００５３】
したがって、図２に示す方法と比較して、第１のタスクプログラム１１２の一貫したデータアクセスが保証される。
図５は、本発明の第３の実施形態のフローチャートを概略的に示している。タスクプログラムＦＣＴ１、・・・、ＦＣＴ５が示されている。これらの各タスクプログラムＦＣＴ１、・・・、ＦＣＴ５の実行は、自動車の構成要素の正しい機能を検査する１つまたは複数の診断関数ＤＦＣ＿ＦＣＴ１、・・・ＤＦＣ＿ＦＣＴ５の結果に依存することができる。結果とステータス変数の伝送は、破線の矢印で示唆される。
【００５４】
タスクプログラムＦＣＴ１は、長さが２ｍｓの時間スロットを有する時間フレームにおいて実行され、診断関数ＤＦＣ＿ＦＣＴ１を実行する。ＤＦＣ＿ＦＣＴ１の結果およびステータス変数は、タスクプログラムＦＣＴ２に伝送される（Ｆｕｎｃｔｉｏｎ  Ｉｄｅｎｔｉｆｉｅｒ  ＦＩＤ＿ＦＣＴ２への矢印で示唆される）。タスクプログラムＦＣＴ２の実行は、ＤＦＣ＿ＦＣＴ１の結果およびステータス変数に依存する。タスクプログラムＦＣＴ２は、長さが１０ｍｓの時間スロットを有する時間フレームにおいて実行され、診断関数ＤＦＣ＿ＦＣＴ２Ａ、ＤＦＣ＿ＦＣＴ２Ｂを実行する。結果およびステータス変数はタスクプログラムＦＣＴ３に供給される。タスクプログラムＦＣＴ４は、長さが２０ｍｓの時間スロットを有する時間フレームにおいて実行され、診断関数ＤＦＣ＿ＦＣＴ４を実行する。結果およびステータス変数は同様にタスクプログラムＦＣＴ３に供給される。タスクプログラムＦＣＴ３の実行は、診断関数ＤＦＣ＿ＦＣＴ２Ａ、ＤＦＣ＿ＦＣＴ２Ｂ、およびＤＦＣ＿ＦＣＴ４の結果およびステータス変数に依存する。タスクプログラムＦＣＴ３は、長さが１００ｍｓの時間スロットを有する時間フレームにおいて実行され、診断関数ＤＦＣ＿ＦＣＴ３を実行する。結果およびステータス変数はタスクプログラムＦＣＴ５に供給される。タスクプログラムＦＣＴ５の実行は、ＤＦＣ＿ＦＣＴ５の結果およびステータス変数に依存する。タスクプログラムＦＣＴ５は、長さ２００ｍｓの時間スロットを有する時間フレームにおいて実行され、診断関数ＤＦＣ＿ＦＣＴ５を実行する。
【００５５】
これらのタスクプログラムを実行するコンピュータプログラムを生成するためには、タスクプログラムの正しいタイミングを算出し、ブロッキングマトリクスを正しく（図１参照）正しく構築することが必要である。このために、タスクプログラムの診断関数と、このタスクプログラムに含まれるタスクプログラムの診断関数とを統合した構造オブジェクトＣＩＯ＿ＦＣＴ１、・・・ＣＩＯ＿ＦＣＴ＿５がタスクプログラムＦＣＴ１、・・・、ＦＣＴ５の出力側で規定される。
【００５６】
これにより、一方では、図５に記されたツリーのずっと奥に位置するタスク関数において、前述の診断を自動的に特定する可能性が生じる。その上さらに、どの時間フレームにおいてどの診断関数を実行するか、また、どこでどのブロッキング理由を確認するかの情報を用いて、データの物理的交換と同じ速度でブロック関係の計算が実行できるように、データフローのタイミング情報を計算することができる。
【００５７】
２００ｍｓフレームに割り当てられているタスクプログラムＦＣＴ＿５のタイミングの正しい計算例でこれを説明する。ＤＦＣ＿ＦＣＴ＿５は同じ演算フレームから報告され、直接かつ即時に入力される。ＤＦＣ＿ＦＣＴ＿３がＣＩＯ＿ＦＣＴ＿３に入力されるが、これは１００ｍｓフレームに時間が割り当てられている。したがって、ＤＦＣ＿ＦＣＴ＿３のステータスは、１００ｍｓから２００ｍｓフレームのタイミング通信の移行を伴って伝送する必要がある。ＤＦＣ＿ＦＣＴ＿４はＣＩＯ＿ＦＣＴ＿４に入力され、ＣＩＯ＿ＦＣＴ＿４はさらにＦＩＤ＿ＦＣＴ＿３に入力され、次にＣＩＯ＿ＦＣＴ＿３に入力される。それは２０ｍｓフレームに時間を割り当てている。したがって、ＤＦＣ＿ＦＣＴ＿４のステータスは、２０ｍｓから１００ｍｓフレームの、またその後１００ｍｓから２００ｍｓフレームのタイミング通信の移行を伴って伝送される必要がある。その他の全てのＤＦＣに対して同様である。したがって、ＤＦＣ＿ＦＣＴ＿１は、２ｍｓ→１０ｍｓ→１００ｍｓ→２００ｍｓのチェーンを介して通信される。
【図１】
2020506465.tif 000003
【図２】
2020506465.tif 000004
【図３】
2020506465.tif 000005
【図４】
2020506465.tif 000006
【図５】
2020506465.tif 000007
【国際調査報告】
2020506465.tif 000008
2020506465.tif 000009
2020506465.tif 000010
2020506465.tif 000011