(57)【要約】本発明は、特に自動車のための、制御装置（３３）を駆動する方法であって、制御装置（３３）は、タスクプログラム（３１）を実行するよう構成された少なくとも１つの実行ユニット（３０）を有し、少なくとも部分的に、第１のタスクプログラム（３１）と第２のタスクプログラム（３１）とが実行され、第１のタスクプログラム（３１）は、第１の所定の時間間隔の終りに、第２のタスクプログラム（３１）のためのデータ（３２）を提供する、上記方法において、第１のタスクプログラム（３１）から第２のタスクプログラム（３１）へのデータの伝送は、第２の実行プログラム（３１）の実行のための第２の所定の時間間隔内での、第１のタスクプログラム（３１）の各最後の実行の後にのみ行われ、第２の所定の時間間隔は、第１の時間間隔よりも長いことを特徴とする、上記方法に関する。【選択図】図２
2019510327.tif 000002
【特許請求の範囲】
【請求項１】
特に自動車のための制御装置（３３）を駆動する方法であって、前記制御装置（３３）は、タスクプログラム（３１）を実行するよう構成された少なくとも１つの実行ユニット（３０）を有し、少なくとも部分的に、第１のタスクプログラム（３１）と第２のタスクプログラム（３１）とが実行され、前記第１のタスクプログラム（３１）は、第１の所定の時間間隔の終りに、前記第２のタスクプログラム（３１）のためのデータ（３２）を提供する、前記方法において、前記第１のタスクプログラム（３１）から前記第２のタスクプログラム（３１）への前記データの伝送は、前記第２の実行プログラム（３１）の実行のための第２の所定の時間間隔内での、前記第１のタスクプログラム（３１）の各最後の実行の後にのみ行われ、前記第２の所定の時間間隔は、前記第１の時間間隔よりも長いことを特徴とする、方法。
【請求項２】
前記第１のタスクプログラム（３１）は、前記制御装置（３３）内の第１の実行ユニット（３０）で実行され、前記第２のタスクプログラムは、前記制御装置（３３）内の第２の実行ユニット（３０）で実行されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記第２の時間間隔の前記長さは、前記第１の時間間隔の長さの整数倍であることを特徴とする、請求項１又は２のいずれか１項に記載の方法。
【請求項４】
前記第１のタスクプログラム（３１）に対応付けられたメモリ領域から、前記第２のタスクプログラム（３１）に対応付けられたメモリ領域へと、データが直接的に伝送されることを特徴とする、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
前記第１のタスクプログラム（３１）に対応付けられたメモリ領域から一時的メモリ（７６）へとデータを伝送し、及び前記一時的メモリ（７６）から前記第２のタスクプログラム（３１）に対応付けられたメモリ領域へとデータを伝送するために、第３のタスクプログラム（７５、７７）が追加的に実行されることを特徴とする、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
前記第１のタスクプログラム（３１）と前記第２のタスクプログラム（３１）とは、異なるサイクル時間を有し、前記第１のタスクプログラム（３１）のサイクル時間は、前記第２のタスクプログラム（３１）の前記サイクル時間よりも短く、時間的に前記第２のタスクプログラム（３１）のサイクルエンドの範囲に存在する前記第１のタスクプログラム（３１）のサイクル内に、前記第１のタスクプログラム（３１）に対応付けられたメモリ領域から、前記第２のタスクプログラム（３１）に対応付けられたメモリ領域（１１４）へと、データが伝送されることを特徴とする、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
第１の駆動状態では、各前記タスクプログラム（３１）に対応付けられた時間間隔内に、他のタスクプログラム（３１）によって、前記各タスクプログラム（３１）に対応付けられた前記メモリ領域にアクセスされず、第２の駆動状態では、前記各タスクプログラム（３１）に対応付けられた前記時間間隔内に、前記各タスクプログラム（３１）によって、当該各タスクプログラム（３１）に対応付けられた前記メモリ領域にアクセスされないことを特徴とする、請求項１〜６のいずれか１項に記載の方法。
【請求項８】
タスクプログラム（３１）には、入力データのための第１のメモリ領域（１７、１５）が対応付けられ、前記タスクプログラム（３１）には、出力データのための第２のメモリ領域（１１、１６）が対応付けられ、状態情報（２０、２１）が設けられ、前記状態情報（２０、２１）は、現在の前記時間間隔の終了前の、前記タスクプログラム（３１）の実行期間内には前記入力データ（１７、１５）にもはやアクセスされず、前記出力データ（１１、１６）での変更がもはや行われないことを示すことを特徴とする、請求項１〜７のいずれか１項に記載の方法。
【請求項９】
請求項１〜８のいずれか１項に記載の方法を実行するよう構成された、特に自動車のための制御装置（３３）。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、独立請求項の導入部に記載の、制御装置を駆動するための方法及び装置に関する。
【背景技術】
【０００２】
この分野における特許公報は、独国特許出願公開第１０２２９５２０号明細書である。
【０００３】
車両内での制御過程においては、オペレーティングシステムが、制御過程を実行するための土台として存在する。オペレーティングシステムでは、特に、例えば自動車産業の埋め込みシステム（ｅｍｂｅｄｄｅｄ−ｓｙｓｔｅｍ）に実装されるような実時間オペレーティングシステムでは、タイムクリティカルな部分が、あまりタイムクリティカルではないアルゴリズム又はプログラム若しくはプログラム部分よりも頻繁に計算されうるように、サンプリング時間が異なる複数のタスクプログラムに機能が分散されていることが多い。タスクプログラムは、以下でタスク（Ｔａｓｋ）とも呼ばれるソフトウェアユニットである。緊急の場合には、オペレーティングシステムが、データ整合性を保証するために役立つ。従って、複数タスクにおいてアクセスされる変数から、適切な時点に複写が作成され、従って、例えばゆっくりとしたタスクにおける２つのアクセスの間に、より速いタスクにおいて上記変数が上書きされるという理由では、値が変化しない。
【０００４】
制御技術的な適用において、例えば、車両安定制御システムＥＳＰ（横滑り防止プログラム）の場合に、又は、エンジン制御及び変速機制御の枠組みにおいても、決定的動作（ｄｅｔｅｒｍｉｎｉｓｔｉｓｃｈｅｓ  Ｖｅｒｈａｌｔｅｎ）が保証されるべきである。即ち、同じ出力条件では、計算結果（例えば、アクチュエータ駆動部の周期的な出力）は、入力変数（例えば、周期的にサンプリングされるセンサ値）のみに依存しており、利用可能な複数の演算コアにソフトウェアユニットが分散されていること、及び、システムの利用率には依存していない。この他に、決定性の（ｄｅｔｅｒｍｉｎｉｓｔｉｓｃｈ）通信によって、以下のことが保証され、即ち、複数のソフトウェアユニットにより進められる信号アクティブチェーンの実行時間（待ち時間）が、小さな所定の枠組み内でのみ変動すること、即ち、実行時間におけるジッタ（Ｊｉｔｔｅｒ）が小さいことが保証される。当然のことながら、所定の時間内に全てのタスクを終了できること、即ち、演算コアに過負荷が掛からないことが保証される必要がある。
【０００５】
決定的動作は、制御システムでは制御の質を改善することが可能であり、開発プロセスにおいては、較正及び試験を簡略化することが可能であり、例えば複数の演算コアが設けられており当該演算コアにソフトウェアユニットが最適に分散されている他の演算ユニットへの移行（Ｍｉｇｒａｔｉｏｎ）を、基本的に容易にすることが可能であり、１つ以上の演算コアを備える演算ユニットにおける機能の確実性という目標の達成をサポートすることが可能である。さらに、例えばモデルに基づく開発方法論の枠組みにおいて、様々な実行プラットフォーム（例えば、シミュレーション環境、開発用コンピュータ、量産制御装置）で、システムが常に同じように動作することが保証される。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従って、タスク間の通信のための方法であって、公知の解決法に対して、基本的により少ないリソース、即ち例えばメモリ、実行時間、又は計算時間を必要とし通信チャネルのフル稼働時のピークを軽減する上記方法が望まれる。
【課題を解決するための手段】
【０００７】
本発明は、独立請求項に係る方法及び装置に関する。これにより、特定の時間に、オペレーティングシステムにより制御されるソフトウェアユニットの間で、データが論理的に伝送され、その際に、個々の通信パートナー間の物理的な伝送が、時間的に分散されて行われる。これにより、基本的により少ないリソースが必要とされ、通信チャネルのフル稼働時のピークが軽減される。
【０００８】
導入部で言及した形態による決定的な通信方法に対する利点は、一時的メモリが設けられず、伝送されるデータのための１つより多い受信メモリが回避され、これにより、タスクの間に交換されるデータが大量である場合に、記憶場所をかなり削減することが可能であり、従ってコストが削減される。
【０００９】
他の利点は、データの送信又は受信が、送信者又は受信者による各実行の後に行われるのではなく、合目的的に、２つのタスクの間のアクティブ化期間の比率に従って、特定の時間にのみデータが伝達されることである。これにより、バス負荷が軽減され、必要な計算時間が削減される。
【００１０】
その際、計算リソースを節約するために、通信関係ごとに１つの追加的なタスクが省略されうるのが有利である。さらに、特定の前提条件においては、同じ入力メモリの多重使用によって更なるリソースが節約されうる。
【００１１】
有利に、第１のタスクプログラムは、制御装置内の第１の実行ユニットで実行され、第２のタスクプログラムは、制御装置内の第２の実行ユニットで実行される。これにより、異なる演算コアで平行して実行されるタスク同士が、データを交換することが可能である。
【００１２】
有利に、第２の時間間隔の長さは、第１の時間間隔の長さの整数倍である。これにより、同時に開始されるタスク間で、間隔境界の同期が取られる。
【００１３】
有利に、第１のタスクプログラムに対応付けられたメモリ領域から、第２のタスクプログラムに対応付けられたメモリ領域へとデータが直接的に伝送される。これにより、１回の複写過程によってデータが直接的に送信者から受信者へと伝達され、その際に、データが最初に一時的メモリに複写される必要がない。通信負荷におけるピークが予防され、記憶場所及び計算時間が節約されるにも関わらず、決定的な全システムの動作が引き続き保証される。
【００１４】
有利に、第１のタスクプログラムに対応付けられたメモリ領域から一時的メモリへとデータを伝送し、及び一時的メモリから第２のタスクプログラムに対応付けられたメモリ領域へとデータを伝送するために、第３のタスクプログラムが追加的に実行される。これにより、同時に開始されず又は互いに整数倍の長さを有さない２つのタスクの間の通信が可能である。
【００１５】
有利に、第１のタスクプログラムと第２のタスクプログラムとは、異なるサイクル時間を有し、第１のタスクプログラムのサイクル時間は、第２のタスクプログラムのサイクル時間よりも短く、時間的に第２のタスクプログラムのサイクルエンド（Ｚｙｋｌｕｓｅｎｄｅ）の範囲に存在する第１のタスクプログラムのサイクル内に、第１のタスクプログラムに対応付けられたメモリ領域から、第２のタスクプログラムに対応付けられたメモリ領域へと、データが伝送される。これにより、より速く繰り返される第１のタスクプログラムの最後の実行結果が、よりゆっくりと繰り返される第１のタスクプログラムとの通信のために利用される。これにより、最新の結果が通信のために提供される。
【００１６】
好適に、第１の駆動状態では、各タスクプログラムに対応付けられた時間間隔内に、他のタスクプログラムによって、上記各タスクプログラムに対応付けられたメモリ領域にアクセスされず、第２の駆動状態では、上記各タスクプログラムに対応付けられた上記時間間隔内に、上記各タスクプログラムによって、当該各タスクプログラムに対応付けられたメモリ領域にアクセスされない。これにより、最新の値となる前に、出力変数が複写されず、又は、出力変数が複写過程の間に変更されない。
【００１７】
好適に、タスクプログラムには、入力データのための第１のメモリ領域が対応付けられ、タスクプログラムには、出力データのための第２のメモリ領域が対応付けられ、状態情報が設けられ、状態情報は、現在の時間間隔の終了前の、タスクプログラムの実行期間内には入力データにもはやアクセスされず、出力データでの変更がもはや行われないことを示す。この追加情報によって、データアクセスが制御される。これにより、複写過程自体がウェイトフリー（ｗａｉｔ−ｆｒｅｅ）である。
【００１８】
更なる別の利点及び有利な構成は、以下の明細書の記載及び請求項の特徴から明らかとなろう。
【００１９】
本発明がさらに、図面に示された図を用いて詳細に解説される。
【図面の簡単な説明】
【００２０】
【図１】タスクの順序を概略的に示す。
【図２】制御部を概略的に示す。
【図３】複写ルーティン又は引き渡しルーティンを概略的に示す。
【図４】状態ビットを用いた制御方法を概略的に示す。
【図５】２つより多い通信するタスクの制御方法を概略的に示す。
【図６】上記制御方法の他の変形例を概略的に示す。
【図７】２つのタスク間の非調和的な通信を概略的に示す。
【００２１】
図では、互いに対応する構成要素が同じ符号で示される。
【発明を実施するための形態】
【００２２】
図１は、２つのソフトウェアユニットを含む例示的なシステムを示している。このソフトウェアユニットは、タスクプログラムであり、５ｍｓのタスクとして、及び１０ｍｓのタスクとして実行される。図１では、５ｍｓのタスクの例が、長方形１で示される。図１では、１０ｍｓのタスクの例が、長方形２で示される。図１に示すようなタスクプログラムは、５ｍｓ又は１０ｍｓの全てを必要としない。長方形１、２の長さ、及び、時間軸ｔ上での又は時間軸ｔに沿った長方形１、２の位置は、個々の計算の開始、終了、及び時間を例示している。即ち、タスクプログラムは、５ｍｓごと又は１０ｍｓごとにアクティブ化される。上記アクティブ化は、必ずしも上記タスクの一方の開始時に行われない。上記タスクは、両方向矢印３により示される長さ５ｍｓの所定の間隔内に、又は、両方向矢印４により示される長さ１０ｍｓの所定の間隔内に実行される。１０ｍｓごとに、共通の間隔境界５において、データがタスク間で論理的に交換される。データ交換は、両方向矢印６により概略的に示されている。データ交換は、双方向に行われ、又は二つの方向のうちの一方向にのみ行われる。
【００２３】
通信６が、図示するように実現される場合には、間隔境界５のところに通信に対するニーズのピークが来る。
【００２４】
導入部に挙げた形態によるオペレーティングシステムは、上記対応するフローのために役立つ。
【００２５】
対応する方法は、個別タスクのアクティブ化率の固定的な整数比を前提としており、拡張されることなく、１つの演算コアを備えた演算ユニット（シングルコア（Ｓｉｎｇｌｅ−Ｃｏｒｅ）プロセッサ）のためにのみ利用可能である。
【００２６】
図１の例は、優先度制御されて実行される、同じ演算コアでの上記タスクのそのような遂行を示している。
【００２７】
タスク間の更なる別の通信では、一時的メモリが利用され、一時的メモリには、送信者がタスクの終了時に出力データを書き込み、受信者はタスクの開始時に一時的メモリから自身の入力データを読み出す。データ整合性を保証するために、一時的メモリへのアクセスが保護される必要があり、即ち例えば、送信者がデータを一時的メモリに書き込む間、受信者は、入力データを複写できず待機しなければならない。
【００２８】
第１のタスクと第２のタスクとの間の通信のために、第１のタスクが、通信を調整するために、第２のタスクのコンテキストにおいて追加的な通知タスクをアクティブ化することが構想されうる。通知タスクによって、第１のタスク又は第２のタスクには、差し迫った通信について報知される。
【００２９】
以下では、ロジカルエクゼキューションタイム（ＬＥＴ：Ｌｏｇｉｃａｌ  Ｅｘｅｃｕｔｉｏｎ  Ｔｉｍｅ）という概念が利用される。この概念を用いて、ソフトウェアユニットの時間的挙動、及び特に上記ユニット間の通信動作を、接続された演算ユニットへの分散及び実行する演算ユニットの性能に依存せずに、記述することが可能である。上記概念は、Ｔ．Ａ．Ｈｅｎｚｉｎｇｅｒ、Ｂ．Ｈｏｒｏｗｉｔｚ、Ｃ．Ｍ．Ｋｉｒｓｃｈらによる著書「Ｅｎｂｅｄｄｅｄ  ｃｏｎｔｒｏｌ  ｓｙｓｔｅｍｓ  ｄｅｖｅｌｏｐｍｅｎｔ  ｗｉｔｈ  Ｇｉｏｔｔｏ」（Ｉｎ  Ｐｒｏｃ．ＡＣＭ  ＳＩＧＰＬＡＮ  Ｗｏｒｋｓｈｏｐ  ｏｎ  Ｌａｎｇｕａｇｅｓ、Ｃｏｍｐｉｌｅｒｓ  ａｎｄ  Ｔｏｏｌｓ  ｆｏｒ  Ｅｍｄｅｄｄｅｄ  Ｓｙｓｔｅｍｓ（ＬＣＴＥＳ）、ＡＣＭ、２００１年）で導入され、以下で、対応して利用する。
【００３０】
ソフトウェアユニットの実行のためには、所定の時間間隔がそれぞれ用意される。時間間隔の始まりに、ソフトウェアユニットの入力値が用意され、上記間隔の厳密な終りに、ソフトウェアユニットにより計算された出力値が、他方のソフトウェアユニットに提供される。ソフトウェアユニットの実行は、上記時間間隔内の任意の時間に行われうる。
【００３１】
ソフトウェアユニット間の通信は、時間間隔の開始時と終了時にそれぞれ、正に当該時点での通信によって（例えば、受信者の動作領域への出力データの複写の作成によって）論理的に行われ、又は、データのための複数メモリの設置によって（この場合、実行時間に上記複数のメモリ間で切り替えられる）論理的に行われ、即ち、送信者が上記メモリのうちの１のメモリに書き込む間に、受信者は、先行する送信サイクルからの整合のとれたデータを他のメモリから読み出すことが可能である。
【００３２】
以下に記載する方法によって、実行可能な異なるソフトウェアユニット間、即ちタスクプログラム間又はタスク間の通信が、実時間制御システムにおいて調整される。
【００３３】
その際に、実行する演算ユニットの利用率に依存せずに、全システムの再生可能な決定的動作を保証するという目的から、タスク間の通信が特定の時点にのみ行われるよう調整される。
【００３４】
図２は、２つの実行ユニット３０を備えた電子制御装置３３を概略的に示している。この実行ユニット３０は、例えば、各ソフトウェアユニット３１が周期的に実行される演算コア又は演算ユニットであり、データは、一方のソフトウェアユニットから他方のソフトウェアユニットへと伝送される。このデータ伝送は、図２では符号３２の矢印として示されている。１つの入力値３４若しくは複数の入力値３４又は入力データ、即ち物理値が測定されて、制御装置３３で処理される。制御装置３３の１つの出力値３５若しくは複数の出力値３５又は出力データは、例えば制御量として物理的環境へと出力される。このために、対応する不揮発性のメモリ又はデータインタフェースが、制御装置３３内に設けられる。
【００３５】
以下では、複数の入力値３４及び複数の出力値３５を用いて、以下のことを記載する。即ち、異なるソフトウェアユニット３１間の通信を、リソースを大切にしながら如何して以下のように実行するのか、即ち、出力値３５が決定論的に入力値３４にのみに依存し、上記複数の実行ユニット３０へのソフトウェアユニット３１の分散及び実行ユニット３０の利用率には依存しないように、如何して実行するのかについて記載する。同じことが、入力値３４又は出力値３５についても該当する。
【００３６】
図３は、５ｍｓのタスクと１０ｍｓのタスクとの間の通信を示している。送信者から受信者へのデータ伝送が、よりゆっくりとした時間間隔ごとに厳密に１回行われることが、プログラムシーケンスにより保証される。よりゆっくりとしたタスクの時間間隔内でのより速いタスクの各最後の実行の後にのみデータ伝送が実行されることが、カウンタの仕組みによって保証される。上記カウンタの仕組みのカウンタであるｃｏｕｎｔｅｒ＿５ｍｓ、５ｍｓ＿ｒｅａｄｙ、及び、１０ｍｓ＿ｒｅａｄｙが図３に示されており、それぞれ符号２２、２０、２１で表されている。
【００３７】
これにより、決定的動作が、「ロジカルエクゼキューションタイム（Ｌｏｇｉｃａｌ  Ｅｘｅｃｕｔｉｏｎ  Ｔｉｍｅ）」の意味において保証される。
【００３８】
図３の例では、５ｍｓのタスクは、１０ｍｓのタスクと比較してアクティブ化率がより高い。従って、１つのおきの実行期間１２ａ／ｂにデータ伝送が行われるが、実行期間１９にはデータ伝送が行われない。さらに、より速いタスクの終了時にそれぞれ、カウンタが減分される。
【００３９】
カウンタ２２のカウンタ状態がゼロに達した場合にはデータ伝送が許可され、カウンタは、よりゆっくりとしたサンプリング時間とより速いサンプリング時間との間の比率に対応する値にリセットされる。図３の例では、カウンタ２２は値２に設定される。５ｍｓ＿ｒｅａｄｙ情報２０と、１０ｍｓ＿ｒｅａｄｙ情報２１と、は駆動状態を示している。例えば状態１は、各タスクがデータ交換の準備ができていることを意味する。例えば状態０は、各タスクがデータ交換の準備ができていないことを意味する。
【００４０】
上記タスクは、同じ演算コアで又は異なる演算コアで実行されうる。
【００４１】
本発明を実現するための前提条件は、２つのタスクが、通信に関連する各他方のタスクのメモリ領域へのアクセス権を有することである。メモリ領域は、図３では、各タスクのバッファ（ｂｕｆｆｅｒ）として示されている。
【００４２】
５ｍｓのタスク１２ａ／ｂ又は１９のメモリ領域１１には、５ｍｓのタスクにより計算された出力値が存在しており、この出力値が、１０ｍｓのタスク１３のメモリ領域１５へと伝送される。
【００４３】
１回おきの５ｍｓのタスク１２ａ／ｂが、出力すべきデータの計算を終了していると共に、１０ｍｓのタスクが、先行するサイクルに受信されたデータ１５の処理を終えている場合には、送信者から受信者へのデータの伝送１４が行われる。このことは遅くとも、双方のタスクが終了可能である場合には当てはまる。
【００４４】
同じことが、他の方向への通信、即ち１０ｍｓのタスクから５ｍｓのタスクへの通信についても言える。１０ｍｓのタスクにより計算された出力値１６が、同じ時点に、５ｍｓのタスク１２ａ／ｂ又は１９のメモリ領域１７へと複写（１８）されうる。
【００４５】
所望の動作を実現するために、共通の１０ｍｓの間隔以内に計算が終了されており受信データへのアクセスがもはや必要ではなくなり次第、即ち、遅くとも１回おきの５ｍｓのタスク１２ａ／ｂの終了時に、５ｍｓのタスク１２ａ／ｂは、双方のタスクが問合せ可能なメモリ領域内に報知ビット２０を設定する。
【００４６】
これと同様に、１０ｍｓのタスク１３は、実行期間内に計算が終了されており受信データへのアクセスがもはや必要ではなくなり次第、即ち、遅くとも各１０ｍｓのタスクの終了時に、報知ビット２１を設定する。
【００４７】
タスク間でのデータの伝達は、５ｍｓのタスク１２ａ／ｂの終了時又は１０ｍｓのタスク１３の終了時に、どのイベントがより遅く発生するかに応じて行われる。１２ａの場合は、データ伝送２２ａが双方向に、１０ｍｓのタスクによって実行される。なぜならば、５ｍｓのタスク１２ａが既に先に終了されているからである。１２ｂの場合は、データ伝送２２ｂが、５ｍｓのタスク１２ｂによって行われる。なぜならば、タスク１２ｂが１０ｍｓのタスク１３よりも遅く終了されるからである。
【００４８】
データ伝送を担当するタスクの検出は、状態ビット２０及び２１を用いて行われる。双方のタスクがそれぞれ、データ交換の準備ができている場合には、対応する状態ビットを設定し、その後に、各他方の状態ビットの状態について問合せを行う。双方のビットが設定されている場合には、通信機能２２ａ又は２２ｂの呼出しにより通信が実行され、状態ビットがリセットされる。例えば、設定された状態ビットは、各タスクの終りの範囲を定める。
【００４９】
一般に、第１のタスクのサイクルは、当該第１のタスクのサイクルが、第２のタスクのサイクル内の、第２のタスクのデータ交換の準備が整っている範囲で終わる場合には、時間的に第２のタスクのサイクルのサイクルエンドの範囲に存在する。好適に、第１のタスクのサイクル時間は、第２のタスクのサイクル時間よりも短い。この場合、第１のタスクの或るサイクルは、以下のような場合には、例えば時間的に第２のタスクの或るサイクルのサイクルエンドの範囲に存在し、即ち、第１のタスクが、第２のタスクの上記或るサイクルの開始後に始まり、かつ、当該或るサイクル内の第２のタスクのデータ交換の準備が整っている範囲で終わる場合には、時間的に第２のタスクの或るサイクルのサイクルエンドの範囲に存在する。
【００５０】
状態ビット２０及び２１は、双方のタスクによる同時アクセスから守られている。しかしながら、本来の複写過程又は通信過程は、ロックフリー（ｌｏｃｋ−ｆｒｅｅ）であり、ウェイトフリー（ｗａｉｔ−ｆｒｅｅ）である。
【００５１】
理想的な場合に、データ伝送の役割を担う機能２２ａ及び２２ｂは同一であり、１のタスク又は他のタスクの終りに呼び出される。好適に、上記の機能は、通信関係に依存して、ツールによりサポートされて生成される。
【００５２】
以下のプログラムの例は、５ｍｓのタスクと１０ｍｓのタスクとの間の通信を例に、所望の動作が如何に実現されるのかについて概略的に示している。
【００５３】
より短いサンプリング時間１２ａ／ｂ又は１９を有するタスクの終りには、以下のようなプログラムコードが挿入される。
END_5ms:
counter_5ms=counter_5ms-1
if
(counter_5ms==0
{
protection_on
5ms_ready=true
if (10ms_ready==true) copy=true
protection_off
counter_5ms==2    ! サンプリング時間の比率
｝
if
(copy==true)
{
call copydata     ！双方向へのデータの複写のために生成される機能
5ms_ready=false
10ms_ready=false
copy=false
}
【００５４】
カウンタ（ｃｏｕｎｔｅｒ＿５ｍｓ）を用いて、最初に、この時間ステップにデータを交換すべきかどうかが検査される。このことは、より短いサンプリング時間を有するタスクにのみ該当し、それ以外の場合は、カウンタは設けられなくてもよい。
【００５５】
図３の例では、１０ｍｓのタスクはカウンタを必要としない。この時間ステップでは、より速い５ｍｓのタスク１２ａ／ｂによってデータが交換されるからである。
【００５６】
データを交換すべきであることがカウンタを用いて確認された限りにおいて、どのタスクが、データ交換を担当するのかが検査される。対応する状態ビットを照会して操作することが許される前に、通信に関与する双方のタスクが同時には状態ビットにアクセスしえないことが保証される必要がある。これに加えて、大抵の場合には、状態「５ｍｓ＿ｒｅａｄｙ」及び「１０ｍｓ＿ｒｅａｄｙ」のための不変の値を保証するために、追加的な保護の仕組み（ｐｒｏｔｅｃｔｉｏｎ＿ｏｎ／ｐｒｏｔｅｃｔｉｏｎ＿ｏｆｆ）をプログラムコードに組み込む必要がある。その際に、オペレーティングシステムの公知の仕組みによって、２つの該当するソフトウェアユニットの一方のみ「ｐｒｏｔｅｃｔｉｏｎ」により保護された領域に入ることを許されることが保証される。実行ユニットへのタスクの分散に従って、保護の仕組みは、例えば、タスク交代が短時間の間防止されることで、又は演算コアの境界を超えた、スピンロック（Ｓｐｉｎ−Ｌｏｃｋ）の利用によって、局所的に１つの実行ユニットでのみ、即ち局所的な演算コアでのみ効果を有する。
【００５７】
５ｍｓのタスクがデータを送信及び受信する準備ができていることをシグナリングするために制御ビット「５ｍｓ＿ｒｅａｄｙ」が設定された後で、他方のタスクの状態が、制御ビット「１０ｍｓ＿ｒｅａｄｙ」を用いて検査される。この制御ビットも設定されている場合は、１０ｍｓのタスクは既にデータを交換する準備が整っており、通信を直ぐにも行うことが可能である。それ以外の場合には、通信は後に、１０ｍｓのタスクの終りに実行される。
【００５８】
例えば、第１のソフトウェアユニット３１の５ｍｓのサイクルからのデータが伝送される。データがそこから伝送される５ｍｓのサイクルは、例えば時間的に、第２のソフトウェアユニット３１の１０ｍｓのサイクルのサイクルエンドの範囲に存在する。第２のソフトウェアユニット３１のサイクルエンドの範囲は、第２のソフトウェアユニット３１が既にデータ交換の準備ができている範囲である。この範囲は例えば、第２のソフトウェアユニット３１の実行期間内に計算が終了されており受信データへのアクセスがもはや必要ではなくなり次第、始まる。この範囲は、例えば、第２のソフトウェアユニット３１の各サイクルの終りで終了する。
【００５９】
アクセス保護がアクティブである時間を短時間に保つために、複写アクションの実行が、論理的変数「ｃｏｐｙ」によって制御され、従って、本来の複写アクションが、保護された範囲の外で行われうる。
【００６０】
より長いサンプリング時間を有するタスク（１３）の終りに、以下のようなプログラムコードが挿入される。
END_10ms:
protection_on
10ms_ready=true
if
(5ms_ready==true) copy=true
protection_off
if
(copy==true)
{
call copydata     ！双方向へのデータの複写のために生成される機能
5ms_ready=false
10ms_ready=false
copy=false
}
【００６１】
このプログラムコードは、５ｍｓのタスクの終りのコードと非常に似ているが、よりゆっくりとしたタスクの各実行の終了時に検査が行われるためカウンタが設けられない点で異なっている。
【００６２】
図４は、２つより多い通信するタスクを含むシステムで適用可能な、必要なメモリ又は計算時間を削減する方法の任意の最適化を示している。上記の最適化は、原則的に、データを受信する全てのタスクが、データを送信するタスクよりも短い（又はデータを送信するタスクと同じ）周期期間又はサイクル時間を有する限りにおいて、同一の受信データを利用しうることに基づいている。
【００６３】
図４は、データを送信する１つの２０ｍｓのタスク４０と、それぞれがより短い周期時間５ｍｓ又は１０ｍｓを有する、データを受信する２つタスク４１及び４２と、を含む例を示している。２０ｍｓのタスク４０は、自身の出力データを自身のメモリ領域４３に書き込む。より速いタスク４１及び４２は、２０ｍｓのタスクの入力データを必要とし、その際、入力データのうちの少なくとも幾つかは、上記最適化によりリソースを節約しうるために、上記２つのタスクによって必要とされる。
【００６４】
関与する全てのタスク４０、４１、及び４２の共通の間隔の終り４４で、先に記載したような一方法によって、どのタスクが最後に終了されるのかが確認される。その後で、この最後に終わったタスクが、先に記載したように通信機能４５又は４６を呼出し、通信機能４５又は４６は、受信者タスク４１が必要としている入力データを、メモリ領域４３からメモリ領域４７へと複写する。本例では、通信機能４５が、２０ｍｓのタスク４０の第１の共通の間隔の終りに呼び出される。なぜならば、２０ｍｓのタスク４０は、タスク４１及び４２よりも遅く終了するからである。第２の共通の間隔の終りでは、５ｍｓのタスク４２が最後に終了されて、通信機能４６を呼び出す。
【００６５】
メモリ領域４７は、２つの受信者タスク４１及び４２の一方又は双方が入力データとして必要としている、２０ｍｓのタスク４０の全出力データを含んでいる。双方の受信者タスクは、自身の入力データを同じメモリ領域４７から読み出す。
【００６６】
これにより、双方の受信者タスクが必要とする入力データを１回で複写しメモリ領域４７に格納しなければならないということが実現され、これにより、記憶場所と計算時間との双方が節約されうる。
【００６７】
対応策として、複写アクションを実行するタスクを定めるためのロジック部が幾分複雑になっている。なぜならば、複写アクションのための２つより多い可能なタスクが問題となるからである。演算ユニットへの受信者タスクの分散を考慮して、実行時間と必要なメモリとの間の最適な組み合わせが定められる。
【００６８】
図４には、一方向への通信が示されている。しかしながら、通信機能４５及び４６は、他の方向への通信、即ち、より速いタスク４１及び４２の出力メモリ領域から、２０ｍｓのタスク４０の入力メモリ領域への通信も実行することが可能である。
【００６９】
図５は、２つより多い通信するタスクを含むシステムで適用可能な、本方法の任意の最適化を示している。
【００７０】
この最適化によって、ソフトウェア分散、スケジューリング、及び／又は、複写されたデータを考慮して、１の間隔の終りから次の間隔の始まりへと複写動作をずらすことが可能となる。
【００７１】
これにより、様々な長さの間隔が重なった際の負荷のピークが合目的的に防止され、このような状況下のバスシステムへの負荷が、時間的にさらに均等化される。
【００７２】
図５では、５ｍｓのタスク５０が、先に記載したように、それぞれ間隔の終りに１０ｍｓのタスク５１と通信している。
【００７３】
通信機能５２が、上述のように、共通の間隔で最後に終了したタスクの終りにそれぞれ呼び出される。
【００７４】
１０ｍｓのタスク５１と２０ｍｓのタスク５２との間の通信５３は、先に挙げた理由から、新たな間隔の始まりにずらされる。１つおきの１０ｍｓのタスクの始まりに、通信機能５４が呼び出され、この通信機能５４が、先行する間隔で計算された値を、タスク間で双方向に対応するメモリ領域（ここでは図示せず）へとそれぞれ複写する。
【００７５】
このことは、上記通信が終わった後に初めて、通信パートナー、この場合２０ｍｓのタスク５２が実行されることが保証される場合には、更なる対策を取らなくても機能する。このことは、以下の場合には自動的に当てはまり、即ち、優先度に基づくスケジューリングにおいて双方のタスクが同一の実行ユニットでアクティブ化されて、優先度がより高いタスク、即ちこの場合より速い１０ｍｓのタスクによって通信が実行される場合には、自動的に当てはまる。
【００７６】
図６は、上記の「ロジカルエクゼキューションタイム（Ｌｏｇｉｃａｌ  Ｅｘｅｃｕｔｉｏｎ  Ｔｉｍｅ）」のスキームから以下のようにその挙動が外れる方法の任意の変形例を示している。
【００７７】
ここでは目的は、信号アクティブチェーン内での信号移動時間（待ち時間）を低減することであり、その際、決定的動作が引き続き維持される。
【００７８】
図３で示したように、ここでは、５ｍｓのタスク６０が、１０ｍｓのタスク６１と通信する。よりゆっくりとしたタスク６１からより速いタスク６０への通信６４は、引き続き共通の間隔の終りに行われ、及び、最後に終了された各タスク６１ａ又は６０ｃによって、通信機能６２又は６３の呼出しにより実行される。
【００７９】
しかしながら、より速い５ｍｓのタスク６０からよりゆっくりとした１０ｍｓのタスク６１への通信６５は、もはや共通の間隔の終りでは行われず、共通の間隔内のより速い５ｍｓのタスク６０ａ又は６０ｂの最初の実行の直後に行われる。
【００８０】
この形態による通信の前提条件は、よりゆっくりとした受信者タスク６１ａ又は６１が、上記通信が終了した場合に初めて、即ちタスク６０ａ又は６０ｂの終了後に実行されることである。このことは、優先度制御されるレートモノトニックススケジューリング（Ｒａｔｅ−Ｍｏｎｏｔｏｎｉｃ−Ｓｃｈｅｄｕｌｉｎｇ）では、双方のタスクが同じ実行ユニット、即ち同一の演算コア（ｃｏｒｅ）で実行される場合に自動的に当てはまる。なぜならばこの場合、より速いタスクは、よりゆっくりとしたタスクよりも実行優先度が高いからである。
【００８１】
異なる実行ユニットでタスクが実行される場合には、よりゆっくりとしたタスク６１ａ又は６１が、送信タスク６０ａ又は６０ｂの終りにアクティブ化されうる。
【００８２】
本発明の上記変形例によって、例えば、センサ、即ち例えば図１のセンサ３４から、アクチュエータ、即ち例えば図１のアクチュエータ３５への経路において、速いタスク及びその後のよりゆっくりとしたタスクによって進行する信号アクティブチェーンのために、実行時間（待ち時間）を低減することが実現され、このことは、例えば、制御技術的な用途のためには有利でありうる。
【００８３】
本変形例では、間隔内での実行期間の間の依存性に考慮して、タスクが複数の実行ユニットに分散される。
【００８４】
図７は、２ｍｓのタスク７０から５ｍｓのタスク７１への通信を示している。５ｍｓのタスク７１の長さは、２ｍｓのタスクの長さの整数倍ではない。以下では、このようなタスクの間の通信は、非調和的な通信と呼ばれる。
【００８５】
上記の方法は、定期的に発生する共通の間隔限界に基づいており、この共通の間隔限界において論理的に通信される。このことは、非調和的な通信の場合、例えば２ｍｓのタスクと５ｍｓのタスクの場合には、１０ｍｓごとに該当する。上記共通の間隔限界７２では、上記方法の１つによって、共通の間隔の終りに、最後に終了したタスクによって通信７３が行われる。
【００８６】
共通の間隔内での第２の２ｍｓのタスクの計算結果も同様に、５ｍｓのタスクへと決定論的に伝達されるべきであるが、この場合、共通の間隔境界が存在しない。上記の値は、５ｍｓのタスクの入力メモリ７４へは直接的に複写されえない。なぜならば、入力メモリ７４は未だに、第１の５ｍｓのタスク７１ａによって読出しアクセスの間遮断されているからである。
【００８７】
従って、第２の２ｍｓのタスク７０ａは、タスクの終了時に通信機能７５の呼出しによって、上記の伝達すべき値を最初に一時的メモリ７６に書き込む。その後、第２の５ｍｓのタスク７１ｂが、タスクの開始時に通信機能７７の呼出しによって、上記の値を一時的メモリ７６から自身の入力メモリ７４へと複写する。
【００８８】
他の方向への通信、即ち５ｍｓのタスクから２ｍｓのタスクへの通信も同じように機能する。第１の５ｍｓのタスクが、値を他の一時的メモリへと複写する。第４の２ｍｓのタスク、即ち、第１の５ｍｓのタスクが確実に終了した後の６〜８ｍｓの間隔内にアクティブ化された最初の２ｍｓのタスクが、上記データを一時的メモリから自身の入力メモリへと複写する。
【００８９】
共通の間隔境界における通信は、上記の方法の１つに従った他の方向への通信のようにも進行する。
【００９０】
タスクプログラムは、好適に周期的に繰り返される。この場合、上記の間隔はサイクル時間に相当する。通信も同様に、好適に周期的に行われる。
【００９１】
通信パートナーは、上記の方法においては、同一の演算コア又は異なる演算コアにおいて実現される。
【００９２】
好適に、タスクの実行期間内に入力データ１７又は１５にもはやアクセスされず、既に当該タスクが終了する前の時点に、出力データ１１又は１６での変更がもはや行われない場合には、状態ビット２０又は２０の設定が行われる。これにより、例えば、対応するソフトウェアユニット３１のサイクルエンドの範囲が定められる。
【００９３】
以下に、本発明に係る原則の利点をまとめる。
【００９４】
１．独国特許出願公開第１０２２９５２０号明細書に開示された方法が、以下のように拡張され、即ち、複数の演算コア、例えばマルチコアプロセッサを備える演算ユニットのためにも使用可能であり、その際に再生可能な決定的動作が維持されるように、拡張される。このためには、「ロジカルエクゼキューションタイム（Ｌｏｇｉｃａｌ  Ｅｘｅｃｕｔｉｏｎ  Ｔｉｍｅ）」の構想が適している。
【００９５】
２．本方法は、２つのタスク間で伝送されるデータの整合性を保証し、即ち、受信者タスクの始まりに用意される全データは、送信タスクの同一の実行から派生し、入力データは、受信タスクが当該入力データにアクセスしている間は変化しない。
【００９６】
３．本方法は、バスシステムにより制御されるソフトウェアユニット（タスク）をサポートし、当該ソフトウェアユニット（タスク）のアクティブ化率は、互いに固定の整数比の関係にある（図１参照）。その際に、同じアクティブ化率を有する複数のタスクも存在しうる。
【００９７】
４．本方法は、図１に示すような正に間隔限界での通信よりも、通信チャネル（例えば、バス）に対する負荷が小さい。
【００９８】
５．利用可能な計算性能をより良好に利用しうるために、本方法は、広範に「ウェイトフリー（ｗａｉｔ−ｆｒｅｅ）」であり、即ち、例えば共有されるメモリ領域の整合性を保証するために、どの通信パートナーの実行も言うに値する時間の間ブロックされない。
【００９９】
６．本方法は、今日自動車分野で通常実装されるオペレーティングシステム（例えば、ＡＵＴＯＳＡＲ−ＯＳ）を拡張することなく実現可能である。
【０１００】
７．本方法は、必要な演算リソース（メモリ、実行時間）を低減するために、追加的な「通知」タスクを削減できるように最適化される。
【０１０１】
８．本方法は、特定の条件下において、受信者が受信データを共有することにより、リソース（メモリ、実行時間）が節約されるように、最適化される。
【０１０２】
９．通信は、双方向に実行されうる。即ち、２つのタスク間で通信が実行される期間には、その必要があれば、通信が双方向に行われうる。これにより、実行インフラストラクチャ（機能、カウンタ、状態メモリ）が、タスクの対ごとに一度だけ必要とされるが、通信方向ごとに一度だけ必要とされるわけではない。
【０１０３】
１０．本方法は、ソフトウェア構造及びソフトウェア分散を考慮して、負荷のピークが回避され、リソース（メモリ、実行時間）が最適に利用されるように、任意に最適化される。
【０１０４】
１１．本方法は、任意に、複数タスクに亘る信号アクティブチェーンの待ち時間を削減するという可能性をもたらす。
【０１０５】
１２．本方法は、調和的な間隔を有さないタスク間の決定的な通信のために、例えば、２ｍｓのタスクと５ｍｓのタスクとの間の通信のために、任意に拡張可能である。
【図１】
2019510327.tif 000003
【図２】
2019510327.tif 000004
【図３】
2019510327.tif 000005
【図４】
2019510327.tif 000006
【図５】
2019510327.tif 000007
【図６】
2019510327.tif 000008
【図７】
2019510327.tif 000009
【手続補正書】
【提出日】平成30年8月15日(2018.8.15)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
制御装置（３３）を駆動する方法であって、前記制御装置（３３）は、タスクプログラム（３１）を実行するよう構成された少なくとも１つの実行ユニット（３０）を有し、少なくとも部分的に、第１のタスクプログラム（３１）と第２のタスクプログラム（３１）とが実行され、前記第１のタスクプログラム（３１）は、第１の所定の時間間隔の終りに、前記第２のタスクプログラム（３１）のためのデータ（３２）を提供し、前記第１のタスクプログラム（３１）から前記第２のタスクプログラム（３１）への前記データの伝送は、前記第２のタスクプログラム（３１）の実行のための第２の所定の時間間隔内での、前記第１のタスクプログラム（３１）の各最後の実行の後にのみ行われ、前記第２の所定の時間間隔は、前記第１の時間間隔よりも長く、
前記第１のタスクプログラム（３１）は、前記制御装置（３３）内の第１の実行ユニット（３０）で実行され、前記第２のタスクプログラムは、前記制御装置（３３）内の第２の実行ユニット（３０）で実行される、前記方法において、
前記第２の時間間隔の前記長さは、前記第１の時間間隔の長さの整数倍であることを特徴とする、方法。
【請求項２】
前記第１のタスクプログラム（３１）に対応付けられたメモリ領域から、前記第２のタスクプログラム（３１）に対応付けられたメモリ領域へと、データが直接的に伝送されることを特徴とする、請求項１に記載の方法。
【請求項３】
前記第１のタスクプログラム（３１）に対応付けられたメモリ領域から一時的メモリ（７６）へとデータを伝送し、及び前記一時的メモリ（７６）から前記第２のタスクプログラム（３１）に対応付けられたメモリ領域へとデータを伝送するために、第３のタスクプログラム（７５、７７）が追加的に実行されることを特徴とする、請求項１〜２のいずれか１項に記載の方法。
【請求項４】
前記第１のタスクプログラム（３１）と前記第２のタスクプログラム（３１）とは、異なるサイクル時間を有し、前記第１のタスクプログラム（３１）のサイクル時間は、前記第２のタスクプログラム（３１）の前記サイクル時間よりも短く、時間的に前記第２のタスクプログラム（３１）のサイクルエンドの範囲に存在する前記第１のタスクプログラム（３１）のサイクル内に、前記第１のタスクプログラム（３１）に対応付けられたメモリ領域から、前記第２のタスクプログラム（３１）に対応付けられたメモリ領域（１５）へと、データが伝送されることを特徴とする、請求項１〜３のいずれか１項に記載の方法。
【請求項５】
第１の駆動状態では、各前記タスクプログラム（３１）に対応付けられた時間間隔内に、他のタスクプログラム（３１）によって、前記各タスクプログラム（３１）に対応付けられた前記メモリ領域にアクセスされず、第２の駆動状態では、前記各タスクプログラム（３１）に対応付けられた前記時間間隔内に、前記各タスクプログラム（３１）によって、当該各タスクプログラム（３１）に対応付けられた前記メモリ領域にアクセスされないことを特徴とする、請求項１〜４のいずれか１項に記載の方法。
【請求項６】
タスクプログラム（３１）には、入力データのための第１のメモリ領域（１７、１５）が対応付けられ、前記タスクプログラム（３１）には、出力データのための第２のメモリ領域（１１、１６）が対応付けられ、状態情報（２０、２１）が設けられ、前記状態情報（２０、２１）は、現在の前記時間間隔の終了前の、前記タスクプログラム（３１）の実行期間内には前記入力データ（１７、１５）にもはやアクセスされず、前記出力データ（１１、１６）での変更がもはや行われないことを示すことを特徴とする、請求項１〜５のいずれか１項に記載の方法。
【請求項７】
請求項１〜６のいずれか１項に記載の方法を実行するよう構成された、制御装置（３３）。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００５４
【補正方法】変更
【補正の内容】
【００５４】
カウンタ（ｃｏｕｎｔｅｒ＿５ｍｓ）を用いて、最初に、この時間ステップにデータを交換すべきかどうかが検査される。このことは、より短いサンプリング時間を有するタスクにのみ該当し、それ以外の場合は、カウンタは設けられなくてもよい。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００８２
【補正方法】変更
【補正の内容】
【００８２】
本発明の上記変形例によって、例えば、センサ、即ち例えば図２のセンサ３４から、アクチュエータ、即ち例えば図２のアクチュエータ３５への経路において、速いタスク及びその後のよりゆっくりとしたタスクによって進行する信号アクティブチェーンのために、実行時間（待ち時間）を低減することが実現され、このことは、例えば、制御技術的な用途のためには有利でありうる。
【国際調査報告】
2019510327.tif 000010
2019510327.tif 000011
2019510327.tif 000012
2019510327.tif 000013
2019510327.tif 000014
2019510327.tif 000015
2019510327.tif 000016
2019510327.tif 000017
2019510327.tif 000018