(57)【特許請求の範囲】
【請求項１】
制御プログラムを制御装置のマイクロ計算機によって処理し、該制御プログラムは複数のタスクプログラムに細分化されており、タスクプログラムに優先度および活性化イベントを割り当て、かつ
タスクプログラムの処理は、より高い優先度のタスクプログラムに対する処理要求が後から生じると中断されかつ該中断されたタスクプログラムの処理は該より高い優先度のタスクプログラムの処理の終了後に続行され、かつ
少なくとも１つのタスクプログラム（Ａ，Ｂ，ＣまたはＤ）を、一連の部分タスクプログラム（Ａ１，Ａ２，Ａ３；Ｂ１，Ｂ２，Ｂ３；Ｃ１，Ｃ２，Ｃ３；Ｄ１，Ｄ２，Ｄ３）に細分化し、かつ要求されたより高い優先度のタスクプログラム（Ａ，Ｂ，Ｃ，Ｄ）の処理に対する要求が出されている間に処理されている前記部分タスクプログラム（Ａ１，Ａ２，Ａ３；Ｂ１，Ｂ２，Ｂ３；Ｃ１，Ｃ２，Ｃ３；Ｄ１，Ｄ２，Ｄ３）の処理が完全に終わりまで実施されたときに漸く始める
車両における内燃機関に対する燃料噴射制御方法において、
次に処理すべき部分タスクプログラム（Ａ１，Ａ２，Ａ３；Ｂ１，Ｂ２，Ｂ３；Ｃ１，Ｃ２，Ｃ３；Ｄ１，Ｄ２，Ｄ３）についての情報を含んでいるテーブルポインタ（３９）を設け、
より高い優先度のタスクプログラム（Ａ，Ｂ，Ｃ，Ｄ）を処理するという要求の到来の際に、前記テーブルポインタ（３９）に、該より高い優先度のタスクプログラム（Ａ，Ｂ，Ｃ，Ｄ）の第１の部分タスクプログラム（Ａ１，Ａ２，Ａ３；Ｂ１，Ｂ２，Ｂ３；Ｃ１，Ｃ２，Ｃ３；Ｄ１，Ｄ２，Ｄ３）に関する情報をエントリし、
かつ前記部分タスクプログラム（Ａ１，Ａ２，Ａ３；Ｂ１，Ｂ２，Ｂ３；Ｃ１，Ｃ２，Ｃ３；Ｄ１，Ｄ２，Ｄ３）の終了後、前記テーブルポインタ（３９）に情報がエントリされている部分タスクプログラム（Ａ１，Ａ２，Ａ３；Ｂ１，Ｂ２，Ｂ３；Ｃ１，Ｃ２，Ｃ３；Ｄ１，Ｄ２，Ｄ３）によって制御プログラムの処理を続行し、その際
前記テーブルポインタ（３９）は部分タスクプログラム（Ａ１ないしＤ３）の処理後、前以て決められた値だけインクリメントされ、その結果テーブルポインタも、この時点において次に処理すべき部分タスクプログラムとして該当する部分タスクプログラム（Ａ１ないしＤ３）の部分タスクプログラムポインタ（ＺＡ１ないしＺＤ３）を指示しかつその部分タスクプログラムポインタ（ＺＡ１ないしＺＤ３）を前記テーブルポインタ（３９）がインクリメントの前に指示していたところの部分タスクプログラム（Ａ１ないしＤ３）が処理される
ことを特徴とする方法。
【請求項２】
前記少なくとも１つのタスクプログラム（ＡないしＤ）の一連の部分タスクプログラム（Ａ１ないしＤ３）をシーケンス観点に従ってまとめ、かつシーケンス観点として、プログラムスタート、プログラム終了、時間周期のシーケンス、角度周期のシーケンス、または外部または内部のイベントの到来のような、タスクプログラム処理に対する要求のきっかけ、これらに関連した緊急性並びに前記部分タスクプログラム（Ａ１ないしＡ３）間の同期化条件を考慮する
請求項１記載の方法。
【請求項３】
それぞれの部分タスクプログラム（Ａ１ないしＤ３）を、マイクロ計算機（１１）によるその処理の時間が前以て決められた限界値を上回らない程度の範囲でのみ構成する
請求項１または２記載の方法。
【請求項４】
少なくとも１つのタスクプログラム（ＡないしＤ）に対して、少なくとも１つの部分タスクプログラムポインタテーブル（３１ないし３４）を設け、該部分タスクプログラムポインタテーブルにおいてそれぞれの部分タスクプログラム（Ａ１ないしＤ３）に対して部分タスクプログラムポインタ（ＺＡ１ないしＺＤ３）を設け、該部分タスクプログラムポインタはそれに属する部分タスクプログラム（Ａ１ないしＤ３）の始めを指示し、
前記テーブルポインタ（３９）は前記部分タスクプログラムポインタテーブル（３１ないし３４）においてそれぞれ前記部分タスクプログラムポインタ（ＺＡ１ないしＺＤ３）を指示し、該部分タスクプログラムポインタの方は、この時点において次に処理すべき部分タスクプログラムとして該当する部分タスクプログラム（Ａ１ないしＤ３）を指示する
請求項１から３までのいずれか１項記載の方法。
【請求項５】
部分タスクプログラムポインタテーブル（３１ないし３４）のそれぞれ最後の部分タスクプログラムポインタ（ＺＡＥ）を、それが所定の部分タスクプログラム（ＡＥ）を指示するように配向し、該所定の部分タスクプログラムの処理の期間に、前記テーブルポインタ（３９）を再び正しく、有効な部分タスクプログラムポインタ（ＺＡ１ないしＺＤ３）に配向する
請求項４記載の方法。
【請求項６】
少なくとも１つのタスクプログラム（ＡないしＤ）に、タスクプログラム（ＡないしＤ）の優先度と、所属の部分タスクプログラムポインタテーブル（３１ないし３４）の始めに対するポインタ（ＺＺＡ１ないしＺＺＤ１）と、タスクプログラム（ＡないしＤ）の処理ステータスに関する情報とを含んでいる、記述用データストラクチャ（３５ないし３８）を割り当てかつそのアドレスを、所属のタスクプログラム（ＡないしＤ）に対する参照および識別子として用いる
請求項１から５までのいずれか１項記載の方法。
【請求項７】
タスクプログラム（ＡないしＤ）に対して、３つの状態“休止状態”（５０），“計算準備状態”（５１）および“計算状態”（５２）のみを設定する請求項１から６までのいずれか１項記載の方法。
【請求項８】
処理するよう要求されたタスクプログラム（ＡないしＤ）を管理するためのシーケンステーブル（４０）を設け、該シーケンステーブルは優先度に応じて整理されておりかつ処理中または処理するよう要求されたタスクプログラム（ＡないしＤ）に関する情報を含んでおり、かつ前記シーケンステーブル（４０）においてそれぞれの優先度に対して、この優先度段階において処理するよう要求されたタスクプログラム（ＡないしＤ）の記述用データストラクチャ（３５ないし３８）に対するポインタ（ＺＤＡないしＺＤＤ）および前記部分タスクプログラムポインタテーブル（３１ないし３４）のポインタ（ＺＡ１ないしＺＤ３）に対するポインタ（ＺＺＡ１ないしＺＺＤ３）を記憶し、該ポインタは、この優先度段階の処理するよう要求されたタスクプログラム（ＡないしＤ）に対して部分タスクプログラム（Ａ１ないしＤ３）を特徴付け、該部分タスクプログラムによって、処理するよう要求されたタスクプログラム（ＡないしＤ）が後のタスクプログラム交代の際にスタートされるべきであるかまたは行われた中断の後に続行されるべきでありかつ更に、相応の優先度段階においてタスクプログラム（ＡないしＤ）が処理されるよう要求されていないとき、前記シーケンス制御テーブル（４０）に零ポインタをエントリする
請求項１から７までのいずれか１項記載の方法。
【請求項９】
その優先度がこの時点において処理するよう要求された最高の優先度のタスクプログラム（ＡないしＤ）の優先度より小さいタスクプログラム（ＡないしＤ）を処理するという要求の都度、このタスクプログラム（ＡないしＤ）に属する記述用データストラクチャ（３５ないし３８）に対するポインタ（ＺＤＡないしＺＤＤ）並びに所属の部分タスクプログラムポインタテーブル（３１ないし３４）の始めに対するポインタ（ＺＺＡ１ないしＺＺＤ１）を前記シーケンス制御テーブル（４０）において所属の優先度段階の元に記憶し、かつその優先度がこの時点（ｔ４）において処理するよう要求された最高の優先度のタスクプログラム（Ａ）の優先度より大きいタスクプログラム（Ｂ）を処理するという要求の都度、前記テーブルポインタ（３９）のその時点の値を前記シーケンス制御テーブル（４０）において相応する優先度段階の元に記憶しかつ所属の記述用データストラクチャ（３６）に対するポインタ（ＺＤＢ）および処理するよう要求されたタスクプログラム（Ｂ）の所属の部分タスクプログラムポインタテーブル（３２）の始めに対するポインタ（ＺＺＢ１）を相応する優先度段階の元に記憶し、かつ前記テーブルポインタ（３９）を、処理するよう要求されたタスクプログラム（Ｂ）の部分タスクプログラムポインタテーブル（３２）の第１のポインタ（ＺＢ１）に配向し、これにより丁度その時計算中の部分タスクプログラム（Ａ２）の処理後のタスクプログラム交代を準備する
請求項８記載の方法。
【請求項１０】
タスクプログラム（Ｃ，Ｂ）の終了の都度、前記シーケンス制御テーブル（４０）における当該の優先度段階での所属のエントリを消去しかつ前記シーケンス制御テーブル（４０）を下降する優先度の方向においてその時最高の優先度のタスクプログラム（Ｂ，Ａ）を検索しかつ前記テーブルポインタ（３９）に、前記シーケンス制御テーブル（４０）に新たな優先度段階においてエントリされた値をロードしかつこれにより該テーブルポインタ（３９）がその時の最高の優先度のタスクプログラム（Ｂ，Ａ）の部分タスクプログラムポインタテーブル（３２，３３）の部分タスクプログラムポインタ（ＺＢ３，ＺＡ３）に配向されるようにし、これにより当該タスクプログラムが次の部分タスクプログラム交代の際に、計算する状態（５２）に移行される
請求項９記載の方法。
【請求項１１】
前記シーケンス制御テーブル（４０）をそれぞれの優先度段階に対して１つのファースト・イン・ファースト・アウトメモリだけ拡張し、該メモリは、同じ優先度段階のタスクプログラム（ＡないしＤ）が既に処理するように要求されているとき、次のようにして或る優先度段階の更に別のタスクプログラム（ＡないしＤ）を要求することができることを可能にし、即ちこの優先度段階におけるタスクプログラム（ＡないしＤ）の処理のための別の要求の際に、所属の記述用データストラクチャ（３５ないし３８）に対するポインタ（ＺＤＡないしＺＤＤ）を前記ファースト・イン・ファースト・アウトメモリにエントリし、かつこの優先度段階におけるタスクプログラム（ＡないしＤ）の終了の際に、最も長い待機時間を有する前記タスクプログラム（ＡないしＤ）の記述用データストラクチャ（３５ないし３８）に対するポインタを前記ファースト・イン・ファースト・アウトメモリから取り出し、そこを消去し、かつ前記シーケンス制御テーブル（４０）にエントリし、かつ前記所属のタスクプログラム（ＡないしＤ）を、この間により高い優先度のタスクプログラムを処理するという要求が出ていない限り、前記テーブルポインタ（３９）をこのタスクプログラム（ＡないしＤ）に属する部分タスクプログラムポインタテーブル（３１ないし３４）の第１のポインタ（ＺＡ１ないしＺＤ１）に配向することによって、次の部分タスクプログラム交代の際に計算状態に移行する
請求項８から１０までのいずれか１項記載の方法。
【請求項１２】
あるタスクプログラム（ＡないしＤ）において、そうでない場合にはその他のタスクプログラム（ＡないしＤ）によって中断不能である部分タスクプログラム（Ａ１ないしＤ３）内においても、その他のタスクプログラム（ＡないしＤ）による中断個所を次のようにして形成し、即ちこの個所において、この目的に対して設定された作動系サブプログラムを呼び出し、該サブプログラムがより高い優先度の要求されたタスクプログラムの処理を惹き起こしかつ引き続いて再び中断された部分タスクプログラムに再び戻り、その際前記中断された部分タスクプログラム（Ａ１ないしＤ３）の一時的なデータをスタックメモリに記憶されたままにしておく
請求項１から１１までのいずれか１項記載の方法。
【請求項１３】
前記中断個所を、前記作動系サブプログラムによって分離された、部分タスクプログラム（Ａ１ないしＤ３）の一部の処理に対する時間が前以て決められた限界値を上回らない程度に設定する
請求項１２記載の方法。
【請求項１４】
より低い優先度の別のタスクプログラム（ＡないしＤ）を終了した部分タスクプログラム（Ａ１ないしＤ３）の間でのみまたはその他のタスクプログラム（ＡないしＤ）による中断個所において中断することができるタスクプログラム（ＡないしＤ）の他に、所定数のタスクプログラム（ＥないしＨ）も、それらが別のより低い優先度のタスクプログラム（ＡないしＧ）を任意の個所において中断することができるように、管理する
請求項１から１３までのいずれか１項記載の方法。
【請求項１５】
タスクプログラムを、交差しない優先度群（Ｇ１〜Ｇ８）にまとめ、その際１つの優先度群（Ｇ１〜Ｇ８）は少なくとも、１つの個別タスクプログラムまたは隣接する優先度段階を有する複数のタスクプログラムから構成されかつシーケンス制御のために次の規則を遵守し：
ａ）優先度群（Ｇ２，Ｇ５，Ｇ６）のタスクプログラムは、同じ優先度群（Ｇ２，Ｇ５，Ｇ６）からのより低い優先度を有する別のタスクプログラムを、２つの部分タスクプログラムの間でのみおよび／または挿入されるその他のプログラム（ＡないしＤ）による中断個所において中断することができ、
ｂ）優先度群（Ｇ２〜Ｇ８）のタスクプログラムは、別の優先度群（Ｇ１〜Ｇ７）からのより低い優先度を有する別のタスクプログラムを任意の個所で中断することができ、
ｃ）優先度群（Ｇ１〜Ｇ８）のタスクプログラムは、より高いまたは同じ優先度を有する同じまたは別の優先度群（Ｇ１〜Ｇ８）からのタスクプログラムを中断することができない
請求項１４記載の方法。
【請求項１６】
タスクプログラムの、優先度群（Ｇ１〜Ｇ８）への分配を、その優先度が前以て決められた優先度しきい値（ＰＳ）を下回るすべてのタスクプログラムが１つの優先度群（Ｇ６）にまとめられかつすべてのその他のタスクプログラムがそれぞれ、同じ優先度段階の僅か１つまたは複数のタスクプログラムを有する別個の優先度群（Ｇ７，Ｇ８）を形成するように行う
請求項１５記載の方法。
【発明の詳細な説明】
従来の技術
本発明は、請求項１の上位概念に記載の方法から出発する。この形式の方法は既に、論文“Anforderungen an ein Echtzeit- Betriebssystem fuer eingebettete Systeme”（Bernd Ackermann著、Elektronik Nr．18，１９９２年，第１２０ないし１２８頁）から公知である。そこには、マイクロ計算機に対する実時間作動系の重要な特徴を含んでいる制御装置が説明されている。シーケンス制御に対して、プロセスマネージャーと称されているプログラムが用いられる。このプログラムは、ＣＰＵの課題を制御しかつ実行中のすべてのタスクプログラム（タスク）を対応付ける。プロセスマネージャーにより、複数のタスクプログラム（マルチタスク）のほぼ並列な処理が可能になる。このためにプロセスマネージャーは、それが、丁度処理中の（計算中の）プログラムをいつでも中断しかつ系全体に対してその処理が瞬時的に一層重要である（一層高い優先度）タスクプログラムをスタートすることができるように、構成されている。中断されたプログラムは、一層高い優先度のプログラムの処理が終了したとき、プロセスマネージャーによって、中断された個所において続けられる。この形式のシーケンス制御においては、丁度計算中のタスクプログラムをいつでも中断することができることが重要であると認められている。この手法は、“プリエンプティブスケジューリングまたはプリエンプティブマルチタスキング”とも称される。
上述のシーケンス制御は殊に、実時間系、即ち前以て決められた時間範囲内に所定の制御過程を行わなければならない制御系に対して重要である。というのはこれにより所定のイベントに対する迅速な応動が可能であるからである。
しかしタスクプログラムをその都度任意の個所で中断できるようにすることによって、大きな管理およびメモリコストが生じる。中断されたタスクプログラムは中断された個所において後に続行されるべきであるので、中断されたタスクプログラムに対して複数の処理状態を特徴付ける情報をスタックメモリに記憶しなければならない。これには、プログラム計数器状態、ステータスレジスタの内容、計算機レジスタの内容等がある。更に、スタックメモリに格納されている、中断されたタスクプログラムの一時的なデータを保持しなければならず、一方中断されたタスクプログラムの一時的なデータに対して、スタックメモリに付加的な場所を予約しなければならない。シーケンス制御においては多重に相互に入り組んでいる中断が発生する可能性があるので、この方法ではスタックメモリに対する所要メモリは相応に高い。
中断されたタスクプログラムと中断するタスクプログラムとの間の情報交換も困難である。２つのタスクプログラムがこの目的のために共通のメモリ領域にアクセスするとき、数多くの例において、中断個所の位置に応じてデータ消失またはデータ歪化を生じる可能性がある。このような例は実際には検出することが困難である場合が多く、その安全確保のためにはデータアクセスの同期化のための煩雑な方法が必要である。択一的に、別個のメモリ領域を使用することができる。この場合、同様に煩雑である通信メカニズムを用意しなければならない。
発明の利点
これに対して請求項１の特徴部分に記載の構成を有する本発明の方法は、タスクプログラムの中断に対する管理コストおよびメモリコストを著しく拡大することなく処理のフレキシビリティが高められるという利点を有している。タスクプログラムを、決められた優先度領域から、同じ優先度領域のタスクプログラムに対して中断不能である部分タスクプログラムに分割し、従ってタスクプログラムの相互の中断が部分タスクプログラムの間でしか行われないようにすることによって、この種の中断においてスタックメモリにはほんの僅かな情報しか格納する必要がない。このような情報に対する所要メモリは、部分タスクプログラムに使用される一時的なスタックメモリ変数の数および中断の錯綜深度には無関係であり、ひいては殊に、当該の優先度領域の優先度レベルの数には無関係である。従ってスタックメモリに対する所要メモリは、プリエンプティブなマルチタスキング法の場合より僅かである。
複数のタスクプログラムをほぼ並列に処理しかつその際より低い優先度のタスクプログラムの中断を、プログラムの作成の際のユーザによって確定された所定のプログラム個所においてのみより高い優先度のタスクプログラムによって許容するという方法はコオペラティブマルチタスキングと称される。実際には、数多くのタスクプログラムを全体の制御プログラムにおいてコオペラティブマルチタスキングにおいて記憶および計算時間を僅かしかかけないで処理することができ、一方より煩雑なプリエンプティブなマルチタスキングは僅かな高い優先度のタスクプログラムにのみ制限することができることが分かっている。
プリエンプティブなマルチタスキングにおいて生じる、共通のメモリ領域へのアクセスの際に生じ得るデータ消失の問題は回避されている。中断する側のタスクプログラムもアクセスしているデータヘのアクセスの中断は、コオペラティブマルチタスキングにおいてはもはや可能でない。というのは、アクセスは、中断不能な部分タスクプログラム内で完全に処理され、即ちその場合データアクセスは自動的に正確に同期されているからである。同じ理由から、タスクプログラムが、リソースが、中断された低優先度のタスクプログラムによって既に占有されているという理由で、相互排除の原理でしかアクセスできないリソースへのアクセスの際に阻止されるとき、プリエンプティブな系において生じる、防ぎようのない優先度反転の問題も生起しない。従ってタスクプログラム中断の作用はトランスペアレントでありかつ簡単に後付け可能である。このことは殊に、比較的高いプログラミング言語におけるタスクプログラムのプログラミングに対しても有利である。その理由は、高言語構築にとって一般に、それが中断不能な動作を表しているかまたはそうでないかを認めることができないからである。
更に、制御装置の開発フェーズに対する利点も生じる。殊に、複雑な制御プログラムを比較的簡単にシミュレートすることができる。プリエンプティブなマルチタスキングとは異なって、本発明の方法では、計算機の特性それ自体をシミュレートする必要なしに、プログラム処理の時間経過および中断の作用を殆どシミュレートすることができる。このために、それぞれの部分タスクプログラムに対して、機能の他に、更に遅延時間も特定しなければならない。
その他の請求項に記載の構成によって、請求項１に記載の方法の有利な実施例および改良例が可能である。即ち、タスクプログラムが、シーケンス観点に従ってまとめられている一連の部分タスクプログラムから成っていると有利であり、その際シーケンス観点として、タスクプログラム処理に対する要求のきっかけ（起動イベント）、これに関連した緊急性（優先度）並びに部分タスクプログラム間の同期化条件が考慮される。僅かなタスクプログラムに所属の優先度および処理のきっかけによって対応付けられる、処理シーケンスにおけるシーケンス観点に従った数多くの種々の部分タスクプログラムの構成はその上に、競合する部分タスクプログラムの処理を調整しなければならない作動系内部のシーケンス制御に対する所要実行時間を低減する。従ってシーケンス制御のための情報の重要な成分はプログラム作成の際に既に使用することができかつ実行時に計算時間をかけて求める必要はない。これに対して複雑な制御装置プログラムの、部分タスクプログラムへの分割は機能上の観点に従って行われる。このことは全体の見通し易さを高めかつプログラム作成およびプログラム管理を簡単にする。
更に、それぞれの部分タスクプログラムが、マイクロ計算機による部分タスクプログラムの処理に対する時間が前以て決められた限界値を上回らない程度の範囲でしか構成されていないことは有利である。この手段により、この方法は上述した時間限界値内で、厳しい実時間条件を考慮しなければならない制御過程に対しても使用可能であるようになる。その場合活性化された比較的高い優先度のタスクプログラムの呼び出しは最大で、部分タスクプログラムの最大の処理時間だけ増やされて、場合により中断する割り込みプログラムの処理時間だけ遅延される可能性がある。
請求項４に記載の手段によれば、、実行時に簡単な方法で、部分タスクプログラムの処理順序を変更することが可能になる。このために単に、テーブルポインタに、部分タスクプログラムポインタテーブルから部分タスクプログラムポインタのアドレスをロードしさえすればよく、これによりこれらの部分タスクプログラムポインタによって選択された部分タスクプログラムが次の部分タスクプログラム交代の際に呼び出される。タスクプログラム間の交代も、テーブルポインタに、タスクプログラムの所属の部分タスクプログラムポインタテーブルから第１の部分タスクプログラムポインタのアドレスをロードすることによって簡単に実施される。
請求項６に記載のタスクプログラムに対する既述のデータストラクチャ（タスクプログラム記述子）の導入は、タスクプログラムを記述するデータストラクチャのアドレスによって一義的に識別することができかつデータストラクチャはこのタスクプログラムおよびその処理状態（ステータス）に関するすべての重要な情報に対する簡単かつ迅速なアクセスを可能にするという利点を提供する。
その都度のタスクプログラムのステータスが次の３つの場合：“休止”，“計算準備”および“計算”の１つによってのみ特徴付けることができるようにすると、同様に有利である。殊に、タスクプログラムに対する状態“阻止されている”がないようにすることによって、公知の作動系の多岐にわたる問題が回避される。状態“阻止されている”はタスクプログラムによって、タスクプログラムが所定の条件の充足を待機するときに、とられる。これに対する例として、別のタスクプログラムの所定の計算結果に対する待機が挙げられる。計算結果がまだ存在していないとき、当該の作動系において、待機中のタスクプログラムに状態“阻止されている”が指定される。その場合このタスクプログラムの処理は最初停止されている。それは別のタスクプログラム、しかも場合によってはより低い優先度を有しているタスクプログラムの１つを処理しなければならない。所定の条件が充足されて、例えば別のタスクプログラムの処理によって、要求される計算結果を使用することができるようになってようやく、作動系、即ちオペレーティングシステムはこのタスクプログラムを続行することができる。しかしこれらの過程によって、シーケンス制御に対して高いコストが生じる。即ち、優先度段階に従った本来の処理順序が変更される。従って、タスクプログラム中断の際に保証すべき、中断されたタスクプログラムの一時的なデータを個々のスタックメモリにエントリすることはもはや可能ではない。この問題は、公知の作動系においては、例えば、それぞれのタスクプログラムに対して固有のスタックメモリを設けることによって解消される。しかしこのために付加的なメモリが相当量必要になり、このことは、大量生産制御装置に対して、殊に車両用制御装置に対しては受け入ることができるものではない。
請求項２および４に記載の、部分タスクプログラムポインタテーブルの形においてメモリに格納される前以て構成されている部分タスクプログラムシーケンスの使用および請求項８，９および１０に記載の、シーケンス制御情報の管理は、シーケンス制御情報の評価を、タスクプログラム活性化およびタスクプログラム終了の場合に制限することができる、即ち殊に、それぞれの部分タスクプログラム処理の後新たに行う必要がないという利点を有している。
要求されるタスクプログラムまたは同じ優先度を有する別のタスクプログラムが既に処理される場合には、請求項１１に記載の別の有利な手段が採用される。この手段によって、複数の同じ優先度のタスクプログラムが要求されている場合に対して、これらのうちの第１のものとして、最も長い待機時間を有するところのタスクプログラムが常に処理されるようになることが保証される。
請求項１２および１３に記載の、ユーザによって呼び出し可能な作動系サブプログラムの用意により、複雑な制御装置プログラムの、部分タスクプログラムの分割の際に、機能上の観点に従って１単位を形成する、処理時間が請求項３に記載の限界値を上回る部分タスクプログラムを、実時間要求における譲歩として２つまたは多くの部分タスクプログラムに分割する必要がないという利点が得られる。このために設けられている作動系サブプログラムの呼び出しによって付加的な中断個所を適当な個所に挿入することによって、実時間要求が充足され、その際コオペラティブなマルチタスキングの利点は維持されたままである。
非常に厳しい実時間条件を遵守することができるようにするために、シーケンス制御の組み合わせも許容すると有利である。請求項１５に記載の方法は、より高い優先度のプリエンプティブなタスクプログラムの応答時間がより低いタスクプログラムの部分タスクプログラムの実行時間によって不都合な影響を受けないという特別な利点を有するこのような組み合わせの形式を表している。この方法によれば、僅かな数の最高の優先度を有するタスクプログラムを従来技術から公知のシーケンス制御原理（プリエンプティブなマルチタスキング）に従って管理しかつ厳しい実時間要求（非常に短い要求される応答時間）を満たすことができ、一方より低い優先度のタスクプログラムは、請求項１ないし１３に記載の、シーケンス制御の原理に従って管理される。
請求項１５に記載の方法は、一方において所定のタスクプログラムに対して非常に高い実時間要求が当てはまり、これに対して別のタスクプログラムに対して比較的低い実時間要求が当てはまるとき常に有利に使用することができる。即ちこの場合、比較的低い実時間要求しか該当しないタスクプログラムを１つの優先度群にまとめ、その中で、プロセッサ割り当ては専ら、コオペラティブなマルチタスキングの原理に従って行われる。厳格な実時間要求を有するその他のタスクプログラムに対して、比較的低い優先度のタスクプログラムの前以て決められた中断個所への制限は当てはまらず、即ちそれらはそれぞれの比較的低い優先度のタスクプログラムを任意の群からプリエンプティブに中断することができる。従って、その種々異なった実時間要求に相応した、シーケンス制御に関して或る用途のタスクプログラムの区別された処理が可能である。その場合これにより、２つの上述のシーケンス制御方法の最適に整合された組み合わせによる計算機リソースに対する要求も最小化することができ、その際前以て決められた実時間要求は常に遵守される。請求項１および請求項１５に記載のタスクプログラムの特別簡単な細分化が請求項１６に記載されている。２つの優先度領域へのこの細分化は、実時間クリチカルなタスクプログラムのごく一部（高い方の優先度領域）がプリエンプティブなシーケンス制御方法に従って処理されかつ中位から低い実時間要求を有するタスクプログラムの一般に比較的大きな部分（低い方の優先度領域）が、終了された部分タスクプログラム間でのみ中断することができる、請求項１記載のコオペラティブなシーケンス制御方法に従って処理される、よくある用途に非常に適っている。
図面
本発明の実施例は図面に示されておりかつ以下の説明において詳しく説明される。
その際第１図は、内燃機関に対する燃料噴射制御装置の大まかなブロック略図であり、第２図は、車両制御装置における可能なプログラムシーケンスに対する概略図であり、その際複数のタスクプログラムのシーケンス制御が、従来技術から公知であるような作動系によって行われ、第３図は、従来技術から公知であるように、作動系によって管理されるタスクプログラムに対する状態線図であり、第４図は、本発明の方法により管理されるタスクプログラムに対する状態線図であり、第５図は、内燃機関に対する燃料噴射系における生じ得るプログラムシーケンスの略図であり、その際シーケンス制御は本発明の方法において説明されたように、コオペラティブなマルチタスキングに相応して動作し、第６図および第７図は、本発明の方法によるポインタおよびテーブルを用いたシーケンス制御の略図でありかつ第８図は、タスクプログラムのステータス語の形式上の構成を示し、第９ａ図は、複雑な制御プログラムのタスクプログラムに対する優先度スケールを、プリエンプティブおよびコオペラティブなシーケンス制御方法の本発明による組み合わせを構成するために優先度群に分割するための略図であり、第９ｂ図は、メインおよびサブ優先度を用いた同じ分割を表す等価な略図であり、第１０図は、複雑な制御プログラムのタスクプログラムに対する優先度スケールを優先度群に分割するための第２の例を示す略図であり、第１１ａ図は、より高い優先度のタスクプログラムによるタスクプログラムの中断に対する第１の例を示す略図であり、第１１ｂ図は、より高い優先度のタスクプログラムによるタスクプログラムの中断に対する第２の例を示す略図でありかつ第１１ｃ図は、より低い優先度を計算タスクプログラムとして有している、タスクプログラムの中断要求の例を示す略図である。
発明の説明
第１図において、内燃機関に対する燃料噴射制御装置が参照番号１０で示されている。参照番号１１は、燃料噴射制御装置のマイクロ計算機である。参照番号１２は、制御装置１０の書き込み／読み出しメモリ（ＲＡＭ）を表している。参照番号１３は、制御装置１０の固定値メモリ（ＥＰＲＯＭ）を表しかつ参照番号２２は不揮発性書き込み／読み出しメモリ（ＥＥＰＲＯＭ）を表している。参照番号１４によって、制御装置１０の入出力ユニットが示されている。参照番号２３は、制御装置の時間計数器を示している。この形式の制御装置の具体的な構成は従来技術から長年来周知であるので、以下にここでは詳しく説明しない。制御装置１０に、機関温度センサ１５，吸入空気センサ１６，絞り弁ポテンショメータ１７および酸素センサ１８が接続されている。参照番号１９によって信号入力側が示されており、そこから回転数およびクランク軸角度を計算することができる。この信号は、点火制御装置から噴射制御装置に送出される。別の入力側２０は、点火錠に接続されている。更に、制御装置１０は、電磁噴射弁２１に接続されている。
燃料噴射制御装置の機能は次の通りである：燃料噴射制御装置は、加えられる入力信号を処理しかつそこから噴射すべき燃料量に対する尺度としての噴射時間を計算する。回転数およびクランク軸角度に依存して、制御装置１０は予め計算された噴射時間を有する噴射パルスをトリガする。噴射制御装置の正確な機能は、文献Autoelektrik／Autoelektronik am Ottomotor,VDI-Veralag，１９８７年、第２５８ないし２６１頁からわかる。次にこの機能について更に正確に説明する。
この形式の燃料噴射制御装置を実現するために、複雑な制御プログラムが必要である。通例、複雑な制御プログラムは、一連の種々様々なタスクプログラムに細分化されている。その際、タスクプログラムへの細分化をシーケンス観点に従って行うと有利であることが認められている。即ち、固定の時間パターン内に処理しなければならないプログラム部分があり、その際しばしば複数の異なった時間パターンが使用される。更に、所定の作動状態内にしかないまたは例えばプログラムスタート、プログラム終了、全負荷作動、無負荷作動、暖気運転作動等のような外部または内部のイベントに対する応動として処理すべきであるプログラム部分がある。更に、所定のプログラム部分は、クランク軸角度に依存して固定の角度パターン内に処理すべきである。通例、同じ時間／角度パターン内に処理すべきである全部のプログラム部分は１つのタスクプログラムにまとめられる。その場合それぞれのタスクプログラムに対して付加的に、タスクプログラムの呼び出しを惹き起こす活性化イベントが特徴的である。例えば、時間計算機２３はタスクプログラムの呼び出しを固定の時間パターン内に行うことができる。時間計算機は、ハードウェアによって周期的に、例えばミリ秒毎に生成される割り込みの割り込みサービスルーチンにおいてインクリメントされる。この割り込みサービスルーチンにおいて、時間計数器のその時点での計数器状態において新しいタスクプログラムを活性すべきであるか否かが検査される。タスクプログラム呼び出しの調整のために、個々のタスクプログラムに、タスクプログラムの処理の緊急性を指示する所定の優先度を割り当てると有利であることが認められている。個々のタスクプログラムの処理の管理のために、しばしば作動系が使用される。その場合これは、相応のプログラムに基づいて、所与の時点においてどのタスクプログラムがマイクロ計算機によって処理されるべきであるかを決定する。
１つの生じ得るプログラムシーケンスの一部が第２図に図示されている。そこには、例として４つの種々異なったタスクプログラムＥ，Ｆ，Ｇ，Ｈが挙げられている。タスクプログラムＥは最低の優先度０を有しかつ固定の時間パターンに無関係に常に、緊急のタスクプログラムが処理される状態にないときに処理されるべきである。タスクプログラムＦは、１００ｍｓ毎に処理されるべきである。これには優先度１が割り当てられている。タスクプログラムＧは、１８０°のクランク軸角度の固定の角度パターン内に処理されるべきである。これには優先度２が属する。更にタスクプログラムＨは、１０ｍｓ毎の固定の時間パターンにおいて処理されるべきである。これには最高の優先度３が属している。第２図に図示のプログラムシーケンスでは、より高い優先度のタスクプログラムの処理の要求に基づいてその都度任意の時点において中断することができる、シーケンス制御のための作動系が使用される。この形式のシーケンス制御は、プリエンプティブなマルチタスキングに相応する。時点ｔ１において例えばタスクプログラムＥが中断されかつタスクプログラムＨの処理がスタートされる。時点ｔ２において、タスクプログラムＨの処理が終了する。引き続き、タスクプログラムＥの処理が中断個所において続行される。個々のタスクプログラムの更なる中断個所は、第２図から読み取ることができる。全体のタスクプログラムは更に、発生した割り込み要求の割り込みサービスルーチンによって中断可能である。しかしこのことは、第２図においては一層分かり易くするために図示されていない。
個々のタスクプログラムは種々異なった状態をとることができる。第３図には、プリエンプティブなマルチタスキングを使用する作動系に対してしばしば当てはまる可能な状態が図示されている。４つの可能な状態が図示されている。状態５０“休止している”において、プロセッサを占有しておらずかつまたその時点ではなにも計算する必要がないタスクプログラムがある。状態５１“計算準備状態”におけるタスクプログラムは多少計算しなければならないが、プロセッサの占有下にはない。その理由は、プロセッサは別の同じ優先度またはより高い優先度のタスクプログラムによって占有されているからである。状態５０“休止している”から、タスクプログラムは“タスクプログラムを活性化する”５４によって状態５１“計算準備状態”に達する。計算準備状態のタスクプログラムは、“タスクプログラムを停止する”５５によって状態５０“休止している”に再び戻すことができる。計算準備状態５１から、タスクプログラムは“プロセッサを割り当てる”５６によって状態５２“計算する”に達し、そこではタスクプログラムはプロセッサを占有する。計算するタスクプログラムは、より高い優先度のタスクプログラムによって状態５１“計算準備状態”に押し戻すことができるか５７、またはこのタスクプログラムは“タスクプログラムを終了する”５８によって終了しかつこれにより再び休止状態５０に達する。
第３図に図示されているように、タスクプログラムに対する状態線図には更に、状態５３“阻止されている”が設定されている。タスクプログラムは、それがその実行続行のためには所定の条件の到来までまず待機しなければならないときにこの状態に入る。この例は例えば、タスクプログラムがその実行の続行のために、別のタスクプログラムによって準備される所定の計算結果をアクセスするときに生じる。アクセス時点にデータがまだ存在しないとき、このタスクプログラムは状態５３“阻止されている”に入る。その場合、阻止されたタスクプログラムを続行することができる前に、まず、データを計算するタスクプログラムを処理しなければならない。計算結果が存在していれば、このタスクプログラムは状態５３“阻止されている”を離れかつ状態５１“計算準備状態”に移行する。それ故に、状態５３“阻止されている”から状態５１“計算準備状態”への移行は、第３図では“条件が充足する”６０によって示されている。状態５２“計算する”から状態５３“阻止されている”への移行は、“条件を待機している”５９として表されている。
充足されていないときタスクプログラムを阻止されている状態に移行させることができる条件に対する別の例は、メモリ割り当ての際に生じる。例えばタスクプログラムが複雑な計算の実行のために付加的なメモリ領域を必要とするが、丁度このメモリ領域を使用することができないとき、同様に、条件は充足されておらず、これによりタスクプログラムのそれ以上の実行は阻止される。別のタスクプログラムによって再びメモリが解放されるとき漸く、このメモリはこの阻止されているタスクプログラムに割り当てることができ、このタスクプログラムはこれに基づいてその処理が続行される。
第４図には、本発明の方法による過程の制御の際に生じる可能性があるタスクプログラムの可能な状態が図示されている。同じく、タスクプログラムに対して３つの状態５０，５１，５２“休止状態”，“計算準備状態”および“計算状態”が許容されている。しかし状態“阻止されている”は許容されていない。この状態は意図的に回避されるべきである。その理由は、この状態は高い管理コストを要求しかつ書き込み／読み出しメモリの所要容量を高める原因になるからである。しかしこのコストは、例えば車両における過程の制御の際に使用されるような、大量生産の制御装置においては受け入れられるものではない。更に、生じ得るすべての阻止状態は、そのＢＳがタスクプログラム阻止によって動作する複雑なＳＧプログラムにおいて検出するのが困難であるばかりでなく、首尾一貫性を見渡すのも困難である。従って、相互の依存性は例えば、“膠着状態”、即ちシーケンスのエラーを簡単に招来するおそれがある。第４図に図示の移行矢印は第３図に図示の矢印に対応しているので、繰り返し説明しない。
更に第５図には、内燃機関における燃料噴射制御に対する１つの生じ得るプログラムシーケンスが示されている。この図から、複雑な制御プログラムが例として４つの種々異なったタスクプログラムに分割されているのが分かる。タスクプログラムＡは、時間的に分散して２００ｍｓの周期で処理されるべきである、複雑な制御プログラムのすべての指示を含んでいる。タスクプログラムＡには、優先度１が割り当てられている。タスクプログラムＡは、本発明によれば３つの部分タスクプログラムＡ１，Ａ２，Ａ３に細分化されている。部分タスクプログラムＡ１において機関温度が検出される。その際機関温度センサ１５の信号が評価されかつ機関温度に換算される。部分タスクプログラムＡ２において、混合気濃縮化係数が機関温度に依存して計算される。この混合気濃縮化係数は、内燃機関の寒冷時スタートの後、内燃機関の暖気運転フェーズに対して必要とされる。部分タスクプログラムＡ３において吸入空気温度が検出される。このために吸入空気温度センサ１６の信号が評価される。機関温度並びに吸入空気温度も緩慢にしか変化しないので、これらの量を２００ｍｓ毎に新たに検出するだけで十分である。この理由から、部分タスクプログラムＡ１，Ａ２およびＡ３は、２００ｍｓの時間間隔をおいてのみ処理すればよい部分タスクプログラムＡに属している。
これに対して部分タスクプログラムＢは著しく頻繁に処理されるべきである。それは時間的に分散されて１０ｍｓ毎に呼び出されるべきである。これには優先度３が割り当てられている。これは３つの部分タスクプログラムＢ１，Ｂ２およびＢ３に細分化されている。部分タスクプログラムＢ１においてλ制御が実施される。その際制御装置によって別の部分タスクプログラムにおいて予め計算された噴射時間は場合によっては、空燃比が理想値（λ＝１）からほんの僅かしか異なっていないように補正される。部分タスクプログラムＢ２において適応混合気補正が計算される。酸素センサ１８の信号評価に基づいている適応アルゴリズムは、内燃機関の所定の作動点における所要燃料量に対して基本特性マップから求められた値に対する補正値を計算しかつこの値を補正特性マップにエントリする。このようにして内燃機関および噴射アッセンブリの老化現象並びに製造公差を補償することができる。
部分タスクプログラムＢ３において機関回転数が計算される。その際、入力側１９に加えられる回転数信号が評価される。
タスクプログラムＣはクランク軸の基準点に関連した１８０°クランク軸角度毎にクランク軸適正に処理される。このことは４シリンダ内燃機関に対して当てはまる。タスクプログラムＣに優先度４が割り当てられている。部分タスクプログラムＣ１において機関負荷が計算される。このことは、その時点の機関回転数および絞り弁ポテンショメータ１７を用いて検出される絞り弁の位置、並びにその時点の吸入空気温度から得られる。
部分タスクプログラムＣ２において、内燃機関のその時点の作動点に対して所要燃料量が計算される。基本所要燃料量は、機関パラメータ機関回転数および機関負荷によって形成される基本特性マップから取り出される。
部分タスクプログラムＣ３において、特別な作動フェーズにおいて求められた濃縮係数ないし希薄化係数並びにλ制御の際に計算された補正量が基本所要燃料量において考慮される。引き続いて、所要燃料量の、電磁噴射弁に対する噴射時間への変換が行われる。それから噴射パルスのトリガが最終的に、計算された噴射時間に相応して調整設定されている計数器を含んでいる特別な回路を使用して行われる。このためにもはや別個の部分タスクプログラムは必要でない。
タスクプログラムＤはイベント制御されて、点火の遮断の際にのみ活性化される。これには優先度５が割り当てられている。これは部分タスクプログラムＤ１，Ｄ２およびＤ３に細分化されている。部分タスクプログラムＤ１において、噴射弁および噴射ポンプが遮断される。部分タスクプログラムＤ２において、補正特性マップにエントリされている補正値が不揮発性メモリ２２においてプログラミングされる。
部分タスクプログラムＤ３において、制御装置１０の遮断が行われる。
すべての図示のタスクプログラムおよび部分タスクプログラムは、割り込み要求に対して特別な阻止がプログラミングされていない限りは、割り込みプログラムによって中断可能である。その場合タスクプログラムＡおよびＢの時間制御は、割り込み要求を用いても行われる。このために、ハードウェアによって周期的に、例えばミリ秒毎に生成される割り込みの割り込みサービスルーチンにおいてインクリメントされる、制御装置１０における時間計数器２３が利用される。この割り込みサービスルーチンにおいて、タスクプログラムＡおよびＢに対する活性化時点を備えたリストが検索される。このリストへのエントリが時間計数器２３のその時点の計数器状態と一致するとき、相応のタスクプログラムが活性化される。ところで以下にこの点について一層正確に説明する。プログラムＡおよびＢに対する活性化時点のエントリを備えたリストは、連鎖状のリストとして実現されている。これにより通常の場合は、連鎖状のリストの第１のエレメントのみをその時点の計数器状態と比較しさえすればよい。第１のリストエレメントがその時点の計数器状態と一致している場合に対してのみ、後続のリストエレメントもリスト計数器状態と、一致がもはや存在しなくなるまでの間、比較しなければならない。
本発明の方法の実施のために、次に第５図ないし第７図に基づいて説明する所定の手段が必要である。個々のタスクプログラムＡ，Ｂ，Ｃ，Ｄの、複数の部分タスクプログラムへの細分化はソフトウェア開発者によって行われる。所属のプログラムコードはプログラムの作成後に、制御装置の固定値メモリ１３にエントリされる。それ故に制御装置の固定値メモリ１３には、個々の部分タスクプログラムＡ１ないしＤ３が個別に格納されている。このことは第６図に示されている。この図は、部分タスクプログラムＡ１ないしＤ３がすべて同じ大きさに図示されている点で簡単化されている。しかしこれらは異なった大きさを有していることもできる。それぞれのタスクプログラムに対して部分タスクプログラムポインタテーブル３１ないし３４が設けられている。これらのテーブルも固定値メモリ１３に固定的に記憶されている。それぞれの部分タスクプログラムポインタテーブルにおいて、それぞれのタスクプログラムのそれぞれの部分タスクプログラムに対して、それぞれの部分タスクプログラムのプログラムコードの始めを指示するポインタがエントリされている。例として、タスクプログラムＣに対するテーブル３３を用いる。このテーブルにおいて、部分タスクプログラムＣ１に対するプログラムコードの始めを指示する部分タスクプログラムポインタＺＣ１が設けられている。更に、部分タスクプログラムＣ２の始めを指示する部分タスクプログラムポインタＺＣ２が設けられている。更になお、部分タスクプログラムＣ３の始めを指示する部分タスクプログラムポインタＺＣ３が設けられている。
それぞれの部分タスクプログラムポインタテーブル３１ないし３４の終わりに更に、シーケンス制御にとって重要である部分タスクプログラムＡＥに対するポインタＺＡＥが設けられている。その機能については後で一層詳しく説明する。
更に、固定値メモリ１３には、記述するデータ構造３５ないし３８（タスクプログラム記述子）が設けられている。そこには、それぞれのタスクプログラムに対して、それぞれのタスクプログラムの優先度Ｐ１ないしＰ５に関する情報、即ち所属の部分タスクプログラムポインタテーブル３１ないし３４の第１の部分タスクプログラムポインタＺＡ１ないしＺＤ１に対するポインタＺＺＡ１ないしＺＺＤ１および所属のタスクプログラムのステータス語に対するポインタＺＳＷＡないしＺＳＷＤが設けられている。タスクプログラムの個々のステータス語ＳＷＡないしＳＷＤは制御装置１０の書き込み／読み出しメモリ１２に記憶されている。それ故にタスクプログラムのステータス語は制御装置１０の書き込み／読み出しメモリ１２に記憶されている。その理由は、それらがプログラムシーケンスの期間に変化するプログラムエントリを受けるからである。タスクプログラム記述子３５ないし３８へのエントリに対する例として、この場合もタスクプログラムＣを参照する。ポインタＺＺＣ１はテーブル３３における第１のエントリを、即ち部分タスクプログラムポインタＺＣ１を指示する。ポインタＺＳＷＣはタスクプログラムＳＷＣのステータス語を指示する。更に、タスクプログラムＣに対するタスクプログラム記述子３７に、タスクプログラムに優先度４が属していることがエントリされる。タスクプログラム記述子３５，３６および３８におけるエントリは第６図から説明しなくとも読み取ることができる。
更に、書き込み／読み出しメモリ１２には、シーケンス制御テーブル４０が設けられている。そこには優先度段階に従って整理されて、それぞれの活性化された、即ち状態“計算準備状態”または“計算状態”にあるタスクプログラムに対して、所属のタスクプログラム記述子の始めを指示するポインタＺＤＡないしＺＤＤおよび更に、部分タスクプログラム間の中断後に計算準備状態にあるタスクプログラムを続行すべきである部分タスクプログラムＡ１ないしＤ３のポインタＺＡ１ないしＺＤ３を指示するポインタがエントリされる。即ち、タスクプログラムが中断されたとき、シーケンス制御テーブル４０には、中断後の次の部分タスクプログラムを表している部分タスクプログラムポインタを指示するポインタがエントリされている。タスクプログラムが状態“休止状態”から状態“計算準備状態”に移行したとき、シーケンス制御テーブル４０はこのタスクプログラムに対して、相応の部分タスクプログラムポインタテーブル３１ないし３４の第１の部分タスクプログラムポインタＺＡ１ないしＺＤ１を指示するポインタを含んでいる。このシーケンス制御テーブルはプログラム初期化において零ポインタによって初期化される。
更に、制御装置１０の書き込み／読み出しメモリ１２にはなおテーブルポインタ３９が設けられている。このテーブルポインタ３９は常に、それが次の処理すべき部分タスクプログラムの部分タスクプログラムポインタを指示するようにセットされる。図示の例において、テーブルポインタ３９は部分タスクプログラムポインタＺＢ３を指示する。即ち、部分タスクプログラムＢ３は次に処理されるべきものである。テーブルポインタ３９は部分タスクプログラムのその都度の処理後インクリメントされる。部分タスクプログラムの処理のその都度の終了後に実行される“ディスパッチャー”と称されるプログラム部分において、次に処理すべき部分タスクプログラムとして、インクリメントの前にテーブルポインタが指示していたところの部分タスクプログラムが選択される。次にこの手法をもう一度第５図のプログラムシーケンスに基づいて詳細に説明する。
時点ｔ１においてマイクロ計算機１１は部分タスクプログラムＡ１の処理を始める。この時点でテーブルポインタ３９にはエントリＺＺＡ２が存在している。従って次に処理すべき部分タスクプログラムは部分タスクプログラムＡ２である。時点ｔ２において部分タスクプログラムＡ１は終了する。それに続くデスパッチャー実行において、テーブルポインタ３９がインクリメントされ、その結果テーブルポインタはエントリＺＺＡ３を得かつ時点ｔ３において、テーブルポインタ３９がそのインクリメントの前にポインタ連鎖（ＺＺＡ２→ＺＡ２→Ａ２）によって選択した部分タスクプログラムが呼び出される。これは部分タスクプログラムＡ２である。時点ｔ４において時間計数器２３の割り込みサービスルーチンが、この時点においてタスクプログラムＢが活性化されるべきであることを確定する。この目的のために、割り込みサービスルーチンは、タスクプログラム活性化に権限のある作動系サービスを呼び出し、この作動系サービスがポインタＺＤＢをタスクプログラム記述子３６にかつポインタＺＺＢ１を部分タスクプログラムポインタＺＢ１に優先度段階３に基づいてシーケンス制御テーブル４０においてエントリする。そこでタスクプログラムＢは系における最高優先度の準備されたタスクプログラムであるので、テーブルポインタ３９に値ＺＺＢ１をロードすることによって、このタスクプログラムとの交代が実行中の部分タスクプログラムＡ２の終了時に用意される。タスクプログラムＡはその処理の期間中に中断されるので、このタスクプログラムＡが後に部分タスクプログラムＡ３によって続行することができるように、優先度段階１においてポインタＺＺＡ３がエントリされる。その他の優先度段階に対するエントリは変化せずに留まり、即ちそこには零ポインタがエントリされる。シーケンス制御テーブル４０におけるエントリは第７図に図示されている。
本発明によれば、部分タスクプログラムＡ２はその後漸く完全に処理される。時点ｔ５において、部分タスクプログラムＡ２の処理は終了する。それらから引き続いて再び、テーブルポインタ３９をインクリメントするディスパッチャーが実行される。従ってインクリメント後、テーブルポインタ３９は値ＺＺＢ２を指示する。従ってタスクプログラムＡは状態“計算する”から状態“計算準備”に移行する。それから時点ｔ６において部分タスクプログラムＢ１の処理が始まる。
時点ｔ７において、加えられる回転数信号に基づいてマイクロ計算機１１において割り込み要求が出される。この割り込み信号は、１８０°のクランク軸角度の角度間隔が終了したことを指示する。所属の割り込みサービスルーチンにおいて、タスクプログラムＣを活性化しかつシーケンス制御テーブル４０を相応に更新する作動系サービスが呼び出される。優先度段階４に対して、ポインタＺＤＣがタスクプログラム記述子３７の始めにエントリされかつポインタＺＺＣ１が、タスクプログラムＣの部分タスクプログラムポインタＺＣ１にエントリされる。これによりタスクプログラムＣが活性化されることになる。タスクプログラムＢは部分タスクプログラムＢ２の処理後中断されるので、優先度段階３においてポインタＺＺＢ３がエントリされる。これらのエントリは第７図から分かるようになっている。更に、テーブルポインタ３９はシーケンス制御テーブル４０における最大のエントリに相応して値ＺＺＣ１にセットされる。部分タスクプログラムＢ２の処理の終了後、相応に部分タスクプログラムＣ１が次のものとして処理される。これらの部分タスクプログラム間の交代は、部分タスクプログラムＡ２とＢ２との間の交代の際に説明したのと同じ手法で行われる。時点ｔ８で部分タスクプログラムＣ１の処理が行われる。タスクプログラムＣは、中間時間において別のタスクプログラムの処理が要求されることなく、完全に終わりまで実行される。
時点ｔ９におけるタスクプログラムＣの終了後、再びデスパッチャーが実行され、それはテーブルポインタ３９をインクリメントしかつテーブルポインタ３９の値によってそのインクリメントの前に選択される次に処理すべき部分タスクプログラムを呼び出す。それは、タスクプログラムの終了のためにその都度呼び出される部分タスクプログラムＡＥである。ここにおいてシーケンス制御テーブル４０は更新される。タスクプログラムＣは終了したので、シーケンス制御テーブル４０において優先度段階４の元に零ポインタがエントリされる。引き続いて、シーケンス制御テーブル４０からポインタＺＺＢ３が取り出されかつテーブルポインタ３９にエントリされる。即ち、タスクプログラムＢがこの時点において、状態“計算準備”にあるすべてのタスクプログラムのうち最高の優先度のものを呼び出す。引き続いて時点ｔ１０において、部分タスクプログラムＢ３が処理される。その処理後、再び、部分タスクプログラムＡＥが呼び出される。ここにおいて優先度段階３の元で、零ポインタがシーケンス制御テーブル４０にエントリされる。テーブルポインタ３９においてポインタＺＺＡ３が部分タスクプログラムポインタＺＡ３にエントリされる。
時点ｔ１１において、制御装置１０のマイクロ計算機１１に、点火キーの、位置“オフ”への回転によって入力側２０を介して、点火が遮断されかつ制御プログラムが終了されるべきであることが信号報知される。その場合所属の割り込みサービスルーチンにおいて再び、タスクプログラム活性化にとって権限のある作動系サービスが呼び出され、それは、シーケンス制御テーブル４０において優先度段階５に対して、ポインタＺＤＤをタスクプログラム記述子３８の始めにエントリしかつポインタＺＤＤ１を第１の部分タスクプログラムポインタＺＤ１にエントリする。このことは、タスクプログラムＢおよびＣの活性化に対して上述したのと同じように行われる。
テーブルポインタ３９に、部分タスクプログラムポインタＺＤ１のアドレスＺＺＤ１をロードすることによって、その時最高の優先度の、準備状態のタスクプログラムＤとの交代が準備される。この交代は、まだ処理中の部分タスクプログラムＡ３の終了後に行われる。
引き続いてタスクプログラムＤ１，Ｄ２およびＤ３が、既述したように順次処理される。タスクプログラム交代はもはや行われない。シーケンス制御テーブル４０ももはや更新されない。時点ｔ１２においてプログラムシーケンスは完全に終了する。燃料噴射制御装置は遮断されている。
第８図には、タスクプログラムに対するステータス語の一般的な構成が図示されている。メモリ個所４５に１がエントリされているとき、このことは、所属のタスクプログラムが状態“休止”にあることを表している。メモリ個所４６に“１”がエントリされているとき、このことは、所属のタスクプログラムが状態“計算準備”にあることを表している。メモリ個所４７に“１”がエントリされているとき、このことは、所属のタスクプログラムが状態“計算”にあることを表している。メモリ個所４８に“１”がエントリされているとき、このことは、所属のタスクプログラムが中断されたことを表している。メモリ個所４９は待機リストインデックスエントリのために設けられている。即ち、タスクプログラムの処理が新たに要求されるとき、活性化のために権限のある作動系サービスにおいて、同じ優先度を有しているタスクプログラムが既に活性化されている（シーケンス制御テーブルにおける相応のエントリは零に等しくない）ことが検出されることが起こり得る。この場合、新たに活性化されたタスクプログラムは待機ループ内に編入されかつそのステータス語に、このタスクプログラムがこの優先度に該当する待機ループ内にどの位置をとっているかを指示する情報がエントリされる。それから同じ優先度を有する複数のプログラムが活性化されている場合に、最高の優先度を有するタスクプログラムに対する後の検索の際に、待機ループ内のそれぞれのタスクプログラムの位置も考慮される。このような場合常に、最も長い待機時間を有するタスクプログラムが次のものとして呼び出される。その場合相応に、シーケンス制御テーブル４０も拡張されなければならず、その結果それぞれの優先度段階に対して、待機時間後に整理された、タスクプログラムに対する待機ループの始めおよび終わりに対するポインタをエントリすることができる。零ポインタは、まさにその時待機しているタスクプログラムがこの優先度段階にないことを指示するものである。
次に更に、請求項１に記載の本発明のシーケンス制御原理（中断は終了された部分タスクプログラム間でのみ行われる）に従って必ずしもすべてのタスクプログラムが処理されない実施例について説明する。請求項１５に記載の組み合わされたシーケンス制御方法に対するこの実施例では、２，３のタスクプログラムがより低い優先度を有する別のタスクプログラムをその都度任意の個所で中断できることが許容されており、即ち、プリエンプティブなスケジューリングと称されるシーケンス制御原理に従って管理される。即ち、この本発明による組み合わされたシーケンス制御方法では、別のより低いタスクプログラムをそれぞれ任意の個所において中断することが許されるタスクプログラムおよび更に、別のより低いタスクプログラムを終了された部分タスクプログラム間でのみ中断することが許されるタスクプログラムがある。第９ａ図には、この関係が示されている。そこには、優先度スケール上に、それぞれの優先度を有するタスクプログラムが線分によって図示されている。その際タスクプログラムは優先度群Ｇ１〜Ｇ５に細分化されている。優先度群Ｇ１は、すべて同じ優先度段階１を有するタスクプログラムから成っている。優先度群Ｇ２は、優先度段階２〜６の１つが割り当てられているタスクプログラムから成っている。優先度群Ｇ３は、優先度段階７が割り当てられているタスクプログラムから成っている。優先度群Ｇ４は、優先度段階８が割り当てられているタスクプログラムから成っている。優先度群Ｇ５は、優先度段階９〜１１の１つが割り当てられているすべてのタスクプログラムに関する。その場合タスクプログラムのこの細分化の際のシーケンス制御に対して次のことが当てはまる：優先度群Ｇ２のタスクプログラムは、同じ優先度群Ｇ２の低い優先度のタスクプログラムを、２つの終了された部分タスクプログラム問でのみ中断することができる。即ち、優先度群Ｇ２からのタスクプログラムの処理の期間に、同じ優先度群Ｇ２から１つのタスクプログラムの要求が現れるとき、その時丁度計算しているタスクプログラムはただちには中断されず、計算中の部分タスクプログラムの処理が終了した後漸く中断される。これに対して優先度群Ｇ１のタスクプログラムがその時状態“計算”にあり、かつ優先度群Ｇ２から１つのタスクプログラムの要求が生じるとき、その時丁度計算中のタスクプログラムはこの場合はただちに中断される。優先度群Ｇ５から比較的高い優先度のタスクプログラムはこの場合も、同じ優先度群Ｇ５からの比較的低い優先度のタスクプログラムをただちには中断せずに、完了した部分タスクプログラムの間でのみ中断する。
第９ｂ図には、第９ａ図と等価の例が図示されている。ここではタスクプログラムに優先度段階が割り当てられているのみならず、場合により更にサブ優先度段階も割り当てられている。メイン優先度段階１，３，４にはサブ優先度段階がそれ以上設定されていない。この特別な例は、１つのエレメントしか有していない“変質された”優先度群Ｇ１，Ｇ３，Ｇ４に相応する。
第１０図には、典型的な複雑な制御プログラムのタスクプログラムの、優先度群への非常に実際に適った分割が図示されている。優先度群Ｇ６は、優先度段階１〜７の全部のタスクプログラムから成っている。即ち、優先度群Ｇ６には、中位ないし低い実時間要求が設定されるタスクプログラムすべてがまとめられている。この理由からこれらタスクプログラムはまた最低の優先度を有している。その際非常に厳しい実時間要求およびこれに相応して高い優先度を有するすべてのタスクプログラムは、それぞれ１つの優先度段階しか有していない変質された優先度群Ｇ７およびＧ８にまとめられている。この構成では、その優先度が優先度しきい値と等しいかまたはそれより高いすべてのタスクプログラムが別のより低い優先度のタスクプログラムをその都度任意の個所で（プリエンプティブに）中断することができるようにする優先度しきい値が存在している。僅かなタスクプログラムしか、別のタスクプログラムをその都度任意の個所で（プリエンプティブに）中断することを許されていないようにしたことで、スタックメモリに対する所要ＲＡＭおよびタスクプログラム同期化およびデータ安定性の保証に対するコストがほどほどに維持される。
第１１図には、第１０図のタスクプログラムの分割と関連した中断要求の３つの可能な例が示されている。第１１ａ図において、優先度群Ｇ６からのタスクプログラムが処理される。このタスクプログラムは部分タスクプログラムに細分化されている。時点ｔＵにおいて、優先度６を有するタスクプログラムの処理が要求される。しかしこのタスクプログラムはその時丁度計算中のタスクプログラムをただちに中断することはできず、その結果優先度６を有するタスクプログラムが処理される前に、まず、計算中のタスクプログラムの部分タスクプログラムが終了される。
第１１ｂ図には、丁度その時優先度６のタスクプログラムが処理される例が示されている。時点ｔＵにおいて、優先度段階８からのタスクプログラムの処理に対する要求が出される。このタスクプログラムは丁度その時計算中のタスクプログラムをただちに中断しかつ即刻処理を行う。中断された部分タスクプログラムは引き続いて続行される。
第１１ｃ図では、優先度段階８のタスクプログラムが処理される例が考察される。時点ｔＵにおいて、優先度段階５を有するタスクプログラムの処理のための要求が出される。この場合計算中のタスクプログラムの中断は行われない。計算中のタスクプログラムがまず完全に処理されかつその後優先度Ｇ６からのタスク、プログラムが処理されるようになる。
複雑な制御プログラムの、複数のタスクプログラムへの細分化およびタスクプログラムの少なくとも一部の、部分タスクプログラムへの細分化は、それぞれの用途に依存しておりかつ形式および数とも著しく変えることができる。
データオブジェクトに対する参照としてのポインタの使用は、本発明の方法の実施のためには必ずしも必要でない。それに代わって、データオブジェクトはテーブルに格納することができ、その結果参照として、データオブジェクトのテーブルインデックスを用いることができる。
【図１】
0003801630.tif 000002
【図２】
0003801630.tif 000003
【図３】
0003801630.tif 000004
【図４】
0003801630.tif 000005
【図５】
0003801630.tif 000006
【図６】
0003801630.tif 000007
【図７】
0003801630.tif 000008
【図８】
0003801630.tif 000009
【図９ａ】
0003801630.tif 000010
【図９ｂ】
0003801630.tif 000011
【図１０】
0003801630.tif 000012
【図１１ａ】
0003801630.tif 000013
【図１１ｂ】
0003801630.tif 000014
【図１１ｃ】
0003801630.tif 000015