ω ω IV) K) H1
Cπ o cπ o Cπ O cπ α 3" D % CL tQ . 3 Φ < r+ S N <3 N CΛ 3 rf H φ 3 σ N < 3 D tr < Cd
H- Φ DJ Φ Φ Φ φ DJ μ- φ O μ- H- Φ Φ o 3 Φ Φ O 3 DJ: μ- 3 Φ Φ Φ Φ Φ μ- Φ Φ Φ
Φ 3 ω ι-j CΛ 3 3 μj 3 ω l-i Φ ω l-i 3 3 H H 3 CΛ r+ 3 3 H- 3 3 h 3 φ μ- li CΛ
3 Hl α DJ • Φ Φ tr h-1 Ω " vQ ω DJ CΛ Φ U3 rt iQ Hi tr Hi Ω rt O S Φ ιQ 3 ^« DJ μ- μ- 3" N ^ DJ CΛ (ϊ- H ω Φ <τ) DJ Φ H Φ DJ tr
M Φ 3 Φ Φ m Λ l-i φ 3 Φ N H 3 Ω μ- φ Hi Hi 3 N l-i tr μ- H 3 tr
H- ιQ H Λ Ω φ iQ 3 3 DJ rl- - ^ CΛ H 3= tu 3 3 o H 3 Hi Hl H φ
3 Φ ? O μ- t 3 Φ Tl μ- u3 3 Hi O DJ S > Ω H φ 3 Φ 3 N φ φ μ- o Φ μ-
N 3- α Λ Φ 3 3 o Φ rr 3 Hi \Ω tr < r+ f 3 φ 3 li 3 3 tr
≤ <J φ H Φ DJ μ- o ^ h N G Hi DJ rt -> Φ φ Φ H rt CΛ α u3 3
Φ O 3 O CΛ 3 μ- (ϊ- o 3 r+ 3 tr DJ r H l-i μ- μ- μ- π 3 ω N Hi 3 φ N 3 ω 3 ιQ CΛ 3 3 rl- μ- Φ H φ tr μ- 3 < O: 3 φ O H O φ 3 3 3 3 iQ
Φ ω Φ CΛ φ 3 Φ Ω H l-i co μ- o Hi tr 3 O h 3 3 3 ιQ i 3
3 πj μ- Φ 3 i-i rt • μ- V DJ Ό N Ω tc φ o Hi Α CΛ Φ N fV o r+ li ω 3 DJ φ Φ α 3 3 3 H Φ t s: . Φ H CΛ 3 Φ 3 DJ G rr tr 3 DJ
H O rt Φ 00 S4 DJ σ Φ φ μ- rt 3: 3 φ μ- φ φ 3 DJ < CΛ Φ 3 tr μ- φ 3
H- N 3 Φ φ DJ 3 H CΛ O Hi ιQ 3 3 iQ iQ rt Hi CΛ Φ 03 3 Hi φ O r+ Tl r+
O Φ DJ rt H Φ φ CΛ Ω 3 Φ 1 φ H r+ rt μ- Φ H 3 H li O tr CΛ tr ^ H 3 Hi Ό t DJ 3 CΛ o o 3 μ- Hi Φ 3 3 O H Ό CΛ μ- O 3
Φ ω Φ φ μ- α DJ H3 3: tr Φ r rt o Φ H Φ Ω DJ 3 Φ 3 H H. Hi N DJ
3 φ H ιQ Φ DJ tu 3 φ H ^ 3 H- Q, Φ α 3 o1 H 3^ tr ω h Φ ?V 3: DJ: Hi Φ rϊ-
3 Φ tr CΛ Φ CΛ ω CΛ Φ 3 Φ tc μ- 3 l-i O μ- H O Hi tr r+ CΛ μ-
3 3 Λ rt 3 rr Φ μ- Ω H Φ 1 Q "^ φ 3 N Hi ro 3 3 Φ μ- CΛ Λ
3 φ H- fr Λ CΛ H 3 μ- ? o tr H Q §; l-i ιQ φ r+ Φ CΛ πj CΛ 3 ιQ Φ Φ Ω
H- Ω 1-5 ^ ^ μ- &. Φ 3 DJ H φ ^d υ3 Φ < < 3 3 "> rt tr H μ- Φ μ- 3 tr
3 3" φ CΛ Φ H ιQ 3 3 Φ 3 Φ 3 ; υ3 DJ l-i Φ 3: CΛ Φ 3 3 Φ
N Φ r+ μ- r+ r+ tr Φ CΛ μ- DJ 3 ü Φ ^ H sQ ^ l-i μ- CΛ Hi rt μ- 3 3
3 CΛ Φ Φ H N r CΛ tr o f-T DJ: H DJ I-J ^ 3: Φ Φ o Φ φ 3 < 3
H H- φ 3 3 Φ N Φ Φ Ω o r r μ- Ω DJ H tr 3 3 3 Φ Φ Φ o
Sd 3 CΛ <! μ- Φ 3 3 - 3 α μ- Φ Φ t ιQ μ- N Φ Λ α. N H μ- li φ
G φ o Φ 3 ß Φ Φ φ o 3 H <! 3 Φ μ- Λ Φ Φ φ tr Hi 21 s; tr ιQ α Hi Hl H Φ tQ H 3 ! tQ 3 3 φ Tl H 3 • : l-i μ- 3 a Φ DJ Φ μ-
Φ Φ φ li r+ 3" CΛ et CΛ ιQ O φ Φ tr 3 H l-i > Φ Φ CΛ Φ 3 Φ 3 tr H 3 n H 3: ≤ DJ T3 Φ t 3 3 3 Φ ιQ μ- 3 CΛ r+ Φ μ- μ- Hi H ?> 3 ω 3 3J DJ ^ T3 H H Φ Φ Ϊ DJ Φ rt M Φ Φ H 3 tr o Φ N φ
Φ 3 t-" N H r+ H μ- DJ: CΛ W H Φ DJ Hi Q O 3 Φ 3 μ- Φ H 3 φ 3 rr ιQ DJ φ Φ Φ DJ ^ Ω r+ Ω 3 μ- μ- 3 3= Φ H 3 rt- CΛ 3 SO σ 3 ιQ 3
N sQ μ- -» 3 Hl ω y4 ET r+ φ 3 3 H 3 μ- O s; Φ o Φ Φ J Hi Φ N iQ Φ
3 N Φ rr r+ μ- r+ Φ l-i ≤: l-i Φ rr Ω rt μ- ? Hi l-i μ- rt o 3 μ-
3 3 ** μ- μ- Hi ? μ- Φ μ- 3 CΛ CO CD tr μ- Ω rt rt 3" Φ <! 3 t 3 Q sQ 3 Φ DJ DJ 3 μ- Ω 3 ω Φ j3 <! ? l-i -s (Λ Φ 3 ^ O μ- φ er CΛ CΛ tr H DJ Φ tr fr iQ CΛ O r+ T Φ o DJ φ 3 Hi Φ 3 DJ φ H
<! φ Φ μ- Φ l-i μ- CΛ ω 3 rr s: l-i tc 3 3 H Λ Hi 3 l-i
O 3 μ- CΛ N CΛ 3 3 3: Φ μ- μ- ^ CΛ tS 3 μ- Φ 3 O 3 < TJ rr N Hi
3 r+ tr 3 r+ Φ Ω CΛ P^ ιQ 3 tr 3 Φ Φ o 3 sQ CΛ •"« Φ P O li O 3 3
H- tr1 φ Φ 3 " r+ h 3 Φ Φ tr μ- tr sQ CΛ Ω 3 IQ 3 O 3 3
3 9 rr DJ H 3 ιQ Φ DJ φ Cfl H l-i φ CΛ CΛ 3 μ- N tr σ N Φ 3 N DJ fr φ g 0): tr Φ CΛ 3 Hi μ- μ- CΛ ι£! μ- CΛ rt 3 Φ φ Φ 3 DJ Φ rt rt
3 Φ 3 O H o Φ rt- 3 3 Φ Φ 3 ■ : < Φ μ- 3 μ- <! <! tr ω μ- μ- ω 3 H μ- ιQ φ H H Hi φ uQ rt l-i CΛ φ Φ Φ rf CΛ O O N Λ CΛ
-* o o H- 3 Φ l-i l-i ιQ DJ H φ N DJ: H r+ μ- ι-f h φ CΛ Ό 3 3 Φ 3 φ Ω 3 tr ιQ 3 3 H N φ Φ 3" 3 r+ rr φ Φ 3 μ- 3 rt μ- μ- DJ 3 tr CΛ ω 3 DJ: Φ fr l H •Λ H- CΛ Λ 3 DJ 3 Φ Φ tu DJ 3 H φ Hi μ- o r+ DJ r+ 3 r+ DJ: N Φ Φ DJ r - CΛ =3 IQ iQ 3 3 Φ tr tr 3 DJ:
0 3 H- Φ r+ CΛ ιQ Φ r+ φ iQ 3 3 ≤ o Φ ω μ- Φ Λ H N S! φ Φ tr - φ H μ- r+ 3 Φ n r+ α Φ Hi h tQ 3 rr l-i s* Φ 3 Φ μ- μ- Q μ-
Φ Φ CΛ 0 CΛ 3: μj φ O DJ H r+ ;v φ DJ ιQ φ Ω DJ H rt 3 Φ iQ
3 H *> 3 3 3 • μ- tr ω 3 3 3 ω ? ≤ N 1 h DJ Φ μ- tr H • φ • Φ
3 φ Ω 3 3= Φ 3 ** 1 Φ r+ 3 1 1 1 1 3 μ- 3 μ- 3" α H I l-i υ3 3 1 1 1 3
Vorgaben in Softwarecode. Ferner ist es häufig wünschenswert, aus vorhandenen Bibliotheken bereits getestete Reihenfolgen von Prozessen oder einzelne Prozesse für eine Neuentwicklung zu übernehmen und neue Prozesse an einer geeigneten Stelle der vorhandenen Reihenfolge einzufügen beziehungsweise bekannte, geprüfte Prozesse mit neu zu erstellenden Prozessen zu einer lauffähigen Sequenz zu verbinden.
Es ist ein Ziel der Erfindung, ein Verfahren zum automati- sehen Berechnen einer funktionsfähigen Reihenfolge von Prozessen, ein Verfahren zum Überprüfen einer Reihenfolge von abzuarbeitenden Prozessen und ein Werkzeug bereitzustellen, die in der Lage sind eine Vielzahl von Prozessen so zu ordnen, dass eine zielgerichtete Abarbeitung aller Prozesse er- folgen kann, die dem gewünschten Datenfluß genügt.
Dieses Ziel wird mit den Verfahren und einem Werkzeug erreicht, wie sie in den unabhängigen Ansprüchen definiert sind. Vorteilhafte Ausführungsformen der Erfindung sind Ge- genstand der Unteransprüche.
Durch die Zuordnung eines der Attribute „Eingangswert des selben Berechnungszyklus" , „Eingangswert des' vorhergehenden Berechnungszyklus " oder „Eingangswert aus beliebigem Berech- nungszyklus " zu jedem Dateneingang der zu ordnenden Prozesse ist es möglich, maschinell eine funktionsfähige, gültige Reihenfolge oder Sequenz zu schaffen, die keine Inkonsistenzen im Datenfluß aufweist. Eine Inkonsistenz bedeutet, dass die den Eingängen der Prozesse zugeordneten Attribute logisch nicht erfüllt werden können, da sie sich gegenseitig ausschließen. Beispielsweise können die Eingänge zweier Prozesse, die gegenseitig voneinander abhängen, nicht jeweils mit dem Attribut „PRE" versehen sein, da sonst die widersprüchliche Bedingung erfüllt sein müsste, dass jeder der beiden Pro- zesse vor dem anderen Prozess berechnet werden müsste. In der Regel gibt es aber eine Vielzahl von "lauffähigen" Reihenfolgen.
Aus der Menge von lauffähigen Reihenfolgen von Prozessen kann diejenige bestimmt werden, die die geringste Laufzeit aufweist oder diejenige, bei der die Prozesse, deren Ausgangs- werte in nachfolgenden Prozessen als Eingangswerte verwendet werden, am dichtesten aufeinander folgen (Optimierung) .
Außerdem können innerhalb eines Berechnungszyklus Prozesse identifiziert werden, die keine Abhängigkeiten voneinander aufweisen. Solche voneinander unabhängigen Prozesse können in Recheneinheiten mit Multitasking-Betriebssystemen, insbesondere in Mehrprozessorsystemen, parallel abgearbeitet werden.
Eine Inkonsistenz in einer Reihenfolge von Prozessen kann beispielsweise folgendermaßen ermittelt werden:
1. Schritt: Bestimmung eines Prozesses, der keinen Eingang mit dem Attribut „Eingangswert des selben Berechnungszyklus" hat (bezogen auf die aktuelle Menge der Prozesse) . 2. Schritt: Entfernen dieses Prozesses aus der Menge der
Prozesse. 3. Schritt: Wiederholen der Schritte 1 und 2 bezüglich der restlichen Menge von Prozessen. Lässt sich die Menge der Prozesse durch obigen Vorgang nicht reduzieren, bis kein Prozess übrig ist, ist eine Inkonsistenz gefunden.
Es ist daher möglich, die Reihenfolge der Prozesse als lauffähig zu bestätigen, ohne sie in einem realen System mit ei- ner aufwendigen Simulation des gesamten Systemverhaltens testen zu müssen.
Die vorliegende Erfindung kann beispielsweise zum Entwerfen von Betriebssystemsoftware für Computer, von komplexen Anwen- dungsprogrammen, von Ablaufsteuerungen für eine industriellen Fertigung und insbesondere zum Bestimmen von Steuerungen für
Steuergeräte in der Kraftfahrzeugtechnik eingesetzt werden, beispielsweise von Motor- und Getriebesteuergeräten.
Weitere Merkmale, Vorteile und Anwendungsmöglichkeiten der Erfindung ergeben sich aus der nachfolgenden Beschreibung von Ausführungsbeispielen in Verbindung mit den Zeichnungen. Es zeigen:
Fig. 1 ein Werkzeug zum Anordnen oder Prüfen,. Fig. 2 die Verknüpfung von Prozessen innerhalb einer
Task, Fig. 3 die Prozesse einer Drehmoment-Regelung einer MotorSteuerung, Fig. 4 die Darstellung der Verknüpfung der Prozesse von Figur 3 in Form eines Graphen,
Fig. 5-8 die Auflösung des Graphen von Figur 4,
Fig. 9 die Zuordnung der Prozesse der Figur 3 zu sequen- ziell aufeinander folgenden Prozessgruppen, und Fig. 10-13 die Überprüfung einer Reihenfolge von Prozessen, die eine Inkonsistenz aufweisen.
Figur 1 zeigt ein Werkzeug zum Anordnen und/oder Prüfen einer Reihenfolge von abzuarbeitenden Prozessen. Dieses weist eine Recheneinheit 1 mit einem Mikroprozessor MP und einem Ar- beitsspeicher RAM auf. Mit der Recheneinheit 1 sind als Eingabemittel ein Laufwerk 2 für ein Speichermedium 21, bei dem es sich um eine beschreibbare CD (Compact Disk) handelt, und eine Tastatur 3 vorgesehen.
Auf dem Speichermedium 21 sind Reihenfolgen von Prozessen für die Ausführung von Aufgaben (Tasks) einer Betriebssystem- Software oder einer Anwendungssoftware und einzelne Prozesse gespeichert. Es handelt sich also um eine Bibliothek mit bereits vorhandenen Prozessen, die für die Erstellung von neuen Programmen benutzt werden kann.
cυ O > >
Cπ o Cπ o Cπ O Cπ
M H sQ tr O D Hi 3 •s £ H M P Hi <! H TI w N 3 DJ CL Φ πd <- Φ H1 N Φ 12 μ- Φ φ 3 3 μ- 3: μ- μ- Φ μ- μ- μ- o DJ 3 H μ- ■< 3 3 μ- 3 μ- μ- μ- 3 μ- μ-
3 Ω rr Φ 3 ω H Φ H H 3 3 3 Hi O 3 fr 3 Hi μ- φ 3 3 1 iQ 3 Ü 3 et sQ tr φ Φ H iQ ü tr ιQ tr vQ Φ N Φ u3 iQ Λ sQ Φ π 3 H μ- tr
DJ 3 μ- ω r+ Φ Φ DJ Φ Φ Φ 3 Φ 3 CΛ Φ et li CΛ CΛ co ü μ- Φ D Φ CL
3 3 3 Φ M <J φ DJ φ 3 μ- 3 μ- 3 3 CΛ ι-3 CΛ N h φ TS Ω 3 DJ μ- φ lQ 3 Φ μ- μ- 0 Λ CΛ 3 et 13 rt- • -> CΛ DJ ^ 3 φ ιTj tö Φ tv> tr et H et H
CΛ iQ CΛ 3 3 3 3 3 fr CΛ o μ- Φ CΛ 13 fr Hi μ- φ o φ μ- et ω
Ό CΛ φ sQ Φ 03 o Hi J < CL Φ M H 3 fr Φ Φ 3 i et 3 3 φ H- I-1 m
O N πj CΛ N 3 Φ DJ iQ 3 O DJ μ- μ- •^ 3" 3 3 3 li H φ φ 3 μ- φ DJ li ^ li 3 3 N li et Ü 3 3 rt 3 3 Ü • μ- O: CΛ DJ DJ: DJ μ- Λ H uO, 3 μ-1 φ CΛ et T o M tQ CΛ Φ Φ 3 Φ φ CΛ H s: CΛ Sa 3 φ DJ μ- r
CΛ N μ- CΛ DJ: . Ω 3 3 3 πd DJ D μ- et et t-1 μ- ^< μ- § tr Od 3 ^ > 3 3 DJ
• • 3 φ 3 TS r+ Φ tr 3 tr Ü Λ Φ Φ • μ- H 3 iQ CΛ CΛ Φ CΛ 3 3 IQ et
CΛ CΛ u3 O N 3 μ- DJ ■£ 3 φ o *< H φ φ Ω CΛ h Ω tr ω ιQ Φ 3
CΛ DJ H 3 CΛ α <j Φ 3 CΛ N 3 ! μ- Hi tr s; DJ * φ tr DJ iQ ιQ H
3 φ 3 rr μ- πd 3 rt Φ O μ- Q- rϊ φ Ω > o 3 φ ü μ- tr CΛ Ω DJ 3 DJ < φ
CΛ ιQ ω Ω H vQ ü 3 CΛ μ- CΛ 3- 3 3 φ ü α o φ DJ et tr 3 0- tr O tr CO
Hi CΛ tr O CΛ 3 Φ 3 CΛ li Hi et J 3 h φ 3 φ Φ 3 Φ
Φ N H φ N Φ μ- > DJ 3 H 3 o li Cd ιQ et Φ φ tr 3 3 μ- H 3 3 fr
CΛ 3 H 3 φ li Φ tr tr ιQ N et μ- 3 3 φ φ DJ Φ li H Φ CΛ 3 Ω ri- μ- Od O: rt CΛ ιQ tr ιQ Φ Φ Φ CΛ Hi et o tr 3 fr μ- sQ tr . rt Φ -> 3 μ- φ > CΛ Φ CΛ p : φ 3 3 rf DJ H H φ πd Φ et φ CΛ et rh h φ 3
Φ φ Hi rr Φ tr φ 3 CΛ > 3 3 ^ μ- . H Hi h tr Φ μ- N Φ φ H Φ
M 3 iQ μ- r+ 3 Λ ιQ φ Φ 3 φ Hi DJ φ 3 3= o H 3 3 ^ Ch Ω 3
CΛ r+ 3 li Hd μ- 3 μ- 3" 3 Hi μ- Q 3 tr φ 3 H N φ • Φ fr μ- tr Φ
DJ μ- H- μ> ω Φ υ3 Φ μ- ιQ 3 li 3 CΛ rt μ- Φ 3 H φ 3 3 Φ
LQ 3 tr φ σ 1 3 fr 3 Φ > DJ φ 3 CΛ Φ Ω hd CΛ D 3 tr 3 tr μ- N li 3 π Φ N Φ 3 tr 3 N tr H CΛ μ- 50 ω 3 Φ 3 φ tr Φ s: rr rt c 3 μ- DJ CΛ Φ o CL. << CΛ 50 rt o ^ DJ Φ φ μ- μ- iQ 3 C ri- H • Φ rt O et tr 3 vQ H fr et Φ N tr Ω 3 et CΛ Hi φ 3 μ- Λ Φ Ü DJ Φ 3 ! φ μ- N Φ α sQ πd tr φ CL Φ DJ
3 α ω Ω Φ li Ω tr li Ό o μ- 3 tr 3 CΛ Φ φ H φ μ- φ H μj
Ü Φ DJ Hi H- tr H φ " Φ Hi • 3 Λ Φ 3 CΛ H DJ o 3 3 3 υq j φ Hd U3 ω 3: φ H DJ α 3: Φ o o 3 Φ Ü N φ μ- J Φ Λ μ- ü Φ ü μ- μ- 50 μt DJ μj tr tr Q* Hi tr tr tr φ μ- Φ 3 φ tr
O 3 3 α φ φ CΛ 3 3- < Φ Φ o φ μ- Φ φ CΛ 3 CΛ 3 πd
<! N rf O φ μ- li r+ Φ φ O CΛ μ- H rf 3 μ- μ- CΛ tr Φ φ μ- li φ Φ r+ Φ 3 t N M Φ 3 3 3 et 3 iQ H 3 et Φ φ μ- H Λ CΛ O
H CΛ μ- 3 μ- φ φ μ- ti • • μ- Φ Φ DJ Φ tr φ μ- 3 μ- CΛ N
CΛ CΛ Φ μ- N • 3 3 3 li > j3 li μ- Ω li Φ rt πd et Φ <J Ω φ φ
Ω Φ tr t-3 μ- Hi sQ tr 3 M hd 3 § Φ 3 O tr tr CΛ Φ tr 3 CΛ tr 3 H 3 * rt O et Φ Ti μ- ü « r iQ Φ rr DJ et s: 1 o μ. H CΛ μ- Φ rr O H Φ μ- rt- 3 0 Φ Φ φ 3 φ Φ H μ- φ πd DJ fr 3 CL φ
Φ α i-1 iQ 3 r+ CΛ N μ- 3 li et tr r H Co Φ CΛ 3 3 φ
Φ DJ t Φ 3 φ π Φ ω 3 πd Φ ^ α H fr μ-
Φ CΛ rh N μ- H <! DJ 3 H CΛ 3 M DJ: H CΛ 3 r+ Φ CΛ *υ φ 3
3 μ- ≤ 3 Ω α O tr 3 O CΛ 3 li EP o φ Φ φ 3 μ- Φ o Hi μ- 50
Φ CΛ <! • φ tr φ 3 iQ rr N Φ ιQ Φ H- ιQ Λ Dd CΛ 3 . 3 μ- r 3 Φ CL
Φ φ CΛ H φ Φ Φ Φ H- IQ H 3 Φ C 3 Φ Φ Φ Ω μ-
H3 α CL DJ li CΛ ^ 3 ιO Φ DJ Φ H Dd M σ Φ H 3 tr Φ
■< tr 3 μ- M μ- πd Φ H tr CΛ o •^ 3 3 3 3 Φ φ H Φ πd CΛ > φ
T3 φ φ φ μ- φ h 3 tr H ti μ- 3 N Ω H Φ H ti πd 3 3 0
Φ 3 μ- 3 o Φ O μ- CΛ ω H tr Φ μ- o > 3 li N φ φ
3 tr LQ < N μ- Ω ω 3 μ- CΛ 3 DJ 3 Ω u3 πd N 3 Hi O Φ μ- Ω ω Φ et DJ φ φ o rt- tr rt 3 Φ φ rl- 3 o 3 tr 3 li Φ s: υQ N μ- 3 tr
<! Φ 3 r+ 3 li ω 3 φ Φ μ- 3 Φ Hl 3 3 1 μ- o CΛ Φ DJ Φ LQ tr Φ
O 1 H, H ιQ ≤ ω CΛ rt- 3 Φ Φ DJ H tQ CΛ N CΛ 3 tr CΛ Φ φ 3
3 O μ- CΛ Φ φ 3 μ- H φ 1 Φ φ Φ 1 Φ 1 μ- 1
1 3 1 3 Φ CΛ H 1 1 φ Φ rt- 1 1 Φ 3 1 3
- Eingangswert des selben Berechnungszyklus: PRE,
- Eingangswert des vorherigen Berechnungszyklus: POST,
- Eingangswert aus beliebigem Berechnungszyklus: ANY.
Im folgenden werden die Typen der Eingänge oder Eingangsports regelmäßig durch ihre Bezugszeichen PRE, POST und ANY bezeichnet .
Ein Eingang I des Typs PRE benötigt einen Eingangswert, der innerhalb des selben Berechnungszyklus bereits zur Verfügung gestellt worden ist, also vorhergehend erzeugt worden ist. Der Prozess, dessen Ausgang beziehungsweise Ausgabeport 0 den Wert für den mit dem Attribut PRE versehenen Eingang I liefert, muss also in der Reihenfolge vorher berechnet worden sein.
Prozess P3 weist einen Eingang I des Typs PRE auf. Dieser Eingang I konsumiert einen Wert, der vom Ausgang 0 des Prozesses P2 zur Verfügung gestellt wird. Das Werkzeug zum An- ordnen oder Prüfen einer Reihenfolge von Prozessen erkennt daher, dass Prozess P2 vor Prozess P3 in die Sequenz eingereiht werden muss.
Bei einem Eingang I des Typs POST muß der bereitgestellte Wert erst später in der Sequenz erzeugt werden, so dass beim Abarbeiten des Berechnungszyklus n ein alter, im vorhergehenden Berechnungszyklus n-1 berechneter Eingabewert zur Verfügung steht (dies entspricht einem z_1-Glied in der Regelungstechnik) . Das Werkzeug zum Anordnen oder Prüfen wird daher Prozess P3, dessen Ausgabewert von einem Eingang I des Typs POST vom Prozess Pl benötigt wird, nach Prozess Pl im selben Berechnungszyklus n anordnen.
Bei einem Eingang vom Typ ANY spielt es keine Rolle, ob der konsumierte Wert im selben Berechnungszyklus n berechnet wurde oder im vorhergehenden Berechnungszyklus n-1 berechnet wurde. Die Belegung eines Eingangs I mit dem Attribut ANY ist
daher lediglich optional. Häufig erhält ein Eingang vom Typ ANY seinen Eingangswert von außerhalb der Task. In Figur 2 ist der Prozess P4 solch ein externer Prozess. Eingangsports, die ihre Daten von externen Prozessen erhalten, haben grund- sätzlich das Attribut ANY.
Aufgrund der vergebenen Attribute für die Eingänge I der Prozesse P1-P3 können Ungleichungen aufgestellt werden. Auf diese Weise wird jeweils eine Beziehung zwischen einem Prozess hergestellt, dessen Ausgangsport 0 einen Wert bereitstellt, und einem Prozess, dessen Eingangsport I, diesen bereitgestellten Wert konsumiert.
Liefert ein Prozess einen Eingangswert für einen Eingang I vom Typ PRE, so wird dieser Prozess kleiner als der Prozess mit diesem Eingang vom Typ PRE gesetzt. Der Prozess der in einer Relation als „kleiner" gesetzt ist, muss vor dem anderen Prozess der Relation ausgeführt werden. Ist der Eingang I dagegen vom Typ POST, so wird der Prozess, der den Eingangs- wert liefert, größer als der Prozess mit diesem Eingang vom Typ POST gesetzt. Ist der Eingang vom Typ ANY, so kann der den Eingangswert liefernde Prozess größer oder kleiner als der den Eingangswert empfangende Prozess gesetzt werden. Der Eingang vom Typ ANY kann schließlich von einem im selben oder nachfolgenden Berechnungszyklus angeordneten Prozess bedient werden. Die Anordnung der beiden Prozesse zueinander ist also beliebig. Hierdurch ergeben sich so viele Ungleichungen, wie es im Berechnungszyklus Eingänge mit dem Attribut PRE oder POST gibt.
Für dieses Beispiel ergeben sich daher folgende Ungleichungen:
P3 > Pl oder Pl < P3, und P2 < P3
Als erster Prozess einer Berechnungsreihenfolge oder Sequenz kommt nur ein Prozess in Frage, der keinen Eingang vom Typ
PRE aufweist. Als letzter Prozess einer Sequenz kommt nur ein Prozess in Frage, der keinen Eingang vom Typ POST aufweist.
Danach kommen die Prozesse Pl und P2 als erste Prozesse der Sequenz in Frage. Prozess P3 darf erst nach den Prozessen Pl und P2 berechnet werden. Die Prozesse Pl und P2 können in beliebiger Reihenfolge oder parallel abgearbeitet werden.
Figur 3 zeigt zur Veranschaulichung eine vereinfachte Task mit einer Berechnungsreihenfolge oder Sequenz von Prozessen P1-P8 einer Drehmoment-Regelung eines Betriebssystems eines Motorsteuergeräts eines Kraftfahrzeugs. Typischerweise weist eine derartige Task allerdings eine Sequenz von 100 bis 200 Prozessen auf.
Die Prozesse sind zum Teil aus einer Bibliothek entnommen. Einige Prozesse wurden neu für die Drehmoment-Regelung entworfen. Die Grafik von Figur 3 steht einem Entwickler, der eine gültige Sequenz von Prozessen finden will, zur Verfü- gung, sie bestimmt jedoch noch keine Prozessreihenfolge.
Prozess Pl berechnet für eine Benutzereinstellung einer Geschwindigkeitsregelanlage (Tempomat) die Differenz zwischen der tatsächlichen Geschwindigkeit und der von einem Fahrer eingestellten Geschwindigkeit und gibt diese Differenz an
Prozess P3 aus. Prozess P2 berechnet eine durch eine Gaspedalstellung mitgeteilte Leistungsanforderung und gibt diese ebenfalls an Prozess P3 aus. Prozess P3 koordiniert eventuell vorliegende Anforderungen der Prozesse Pl und P2 und berech- net hierfür eine Drehmomentanforderung für die Prozesse P4 und Pβ.
Prozess P4 bestimmt eine langsame Drehmomentänderung und gibt eine entsprechende Anforderung an Prozess P5 aus. Prozess P5 berechnet einen Sollwert für eine Drosselklappenstellung und gibt diesen an ein Stellglied aus.
co co h 0 M μ> cπ o Cπ o cπ O Cπ
Hd Hi DJ 3 LQ s* H Sl •n Hd w LQ N N CΛ 3 Dd α 3 σ 3 D μ-1 tr φ Hd C I Φ iQ Hd O 3 3 μ- Φ Φ DJ Φ Φ 3: O rt μ- Φ ^ φ Φ o μ- φ Φ μ- 3 Ü 3 3 μ- H 3: μ- μ- ti
H Hi co Ω li 3 H 3 ü CΛ rt 3 3 fr μ- ti 3 li rt φ CL Φ 3 3 3 o 3 3 tr O
Λ sQ iQ tr 3 CL sQ rt "^ H H iQ Φ M Ω tr α iQ tr iQ IQ φ N CL φ rt N
Φ H tr rt 3 Φ Φ l_l- μ- 3 3 3 tr Φ Φ 3: 3 ι-3 INI 3 • li Φ 3 3 Φ
H 3 3 Φ ιQ 3 tr o o Φ tr 3 co 3 3 3 3 μ- > 3 3: O 3 CΛ 3 φ CO
CO L 3 H CL CΛ φ tr CL 3 ιQ > Φ iQ rt co 3 3 3 α O CΛ *Q CΛ μ- CO ro . μ- Φ rt 3 3 Φ Φ rt CΛ 3 tr rt 03 CΛ Φ M ^ α φ α μ- ti o 3
Φ Hi Φ 3 H Φ 3 £ ω φ Φ φ Φ -> ^ Φ « 3 Φ Φ Hd 3 *-■ φ Hd
50 tr μ- Ω CΛ Φ μ- 5 Φ Hi li 3 ü μ- φ ≤ μ- rt CL tr co 3 σx φ μ- μ- 3 tr co 3 Φ 3 Cd Dd li 3: φ φ 3 3 Hl Dd μ- 3 ω Φ Hd 3 co C φ φ <Q μ- 3 μ- μ- μ- rt tr Ω Dd Ω • 3: Hi μ- H W ti i o φ iQ Φ 3 tr
DJ Λ Φ Φ μ- ! 3 DJ 3 3 Φ H tr μ- tr CΛ 5 3 CL φ 3 O 3 3 μ- li et Φ rt Φ 3 H fr i→ r iQ iQ 3 3 3 3 CΛ CΛ sQ 3 Dd (NT Φ et σ rt Λ H μ- H et φ DJ μ- et DJ 3 tr 3 φ iQ 3 μ- Φ sQ 3 N ^ Hi Hi Φ 3 t et T3 φ
O Od • et H 3 3 3 3 Φ sQ rt 3 3 φ 3 Φ 3 ^ Hi CΛ rt p : • Hi ti Ω
3 Hd φ α N tr Φ vQ ιQ N 3 iQ fr sQ ^ <! Φ CΛ pj: 3: Φ tr φ ii ii CΛ μ- rt Φ < CΛ μ- CL 5S co CΛ 3 μ- Φ CΛ Φ μ- fr Φ 3 et ti Ω 3
3 DJ: Φ μ- Φ Φ μ- o CL s: φ Φ O « N 3: 3 3 s: μ- H Φ rt CL tr φ
3 Ω Φ H r+ Ü φ φ tr H ü φ << CΛ 3 Φ ω rt μ- Hd Φ Φ Φ φ <-t μ- tr Dd Φ 3 tr μ- li h 3 CL li fr CO o N li o Φ N ! J-> ü μ- μ- 3
CΛ ti fr μ- CΛ 3 Φ 3 et 3 ι-3 φ rt Φ φ Φ rt tr μ- s: μ- 3 3 3 CL φ
CΛ 3 O: 3 u3 li Hd sQ 3 3 Φ 3 3 t-1 μ- Φ -> Φ r+ 3 3 Φ Φ μ- φ 3 3 iQ Φ ιQ co li CL CΛ CΛ CΛ tr Ω rt μ- fU: 3 iQ 50 3 3
3 sQ 3 DJ 3 φ Φ o Φ s: fr co 3 3 Φ tr α N rt CL Φ Φ
CΛ φ 3 rt Φ tr μj N CΛ Φ • Φ 3: -> 3 3 Φ s: 3 ^ CL Hi N 3 φ N 3 sQ ω ü Φ tr φ μ- μ- CΛ Hd CO φ ti Od Φ O: Hd 3 Φ 3: Hi CΛ li • CΛ •d 3 Φ CΛ <1 Λ α 3 CΛ ta o Od et • li iQ ≤ sx ti H 3 O Ω sQ ?- DJ s; ü ι-3 CL 3 ω o Φ Φ ** Φ Dd Φ φ H L μj μ- Ω Φ CL li tr
Φ μj Φ μ- DJ Φ Φ t-s 3 3 α Ü ti ti 3 Φ μ- φ Φ tr 3 N CL 3 < > tr 3 CΛ H Ω CΛ 3 Od tr o_ Φ α φ 3 Φ 0 H 3 Ω 3 N Φ Φ φ φ CΛ o rt tr fr Φ Hd φ μ- 3 3 μ- H CΛ o Dd N tr rt Φ CO μ- li t-1
3 Φ et Od H H Φ et co 3 tr tr μ- φ Φ 3 Φ φ co μ- • : et 3
CL Φ φ Φ 1 tQ co 3 > 3 3 CΛ 3 3 li Ω 3 co O 3 Φ
CΛ DJ φ li ü Ω Hd Φ Φ TS 3" <! μj et 3 iQ CΛ CΛ tr Φ r+ 3 US μ- 3 co φ μ- 3 Φ tr 00 tr 3 H Φ o rt et 3 3 Φ O CΛ CΛ φ Φ 3 σ
Ω ü 3 μ- Ω 3 φ et Φ μ- H Φ li iQ 3 . rt 3 μ- tsi 3 W 3 i tr φ rt tr 3 fr 3 co Ω r 3 μ- co iQ πd 3 φ Hi CL 3: et 3 Φ
Φ rt Hd 3 rt ti 3 DJ CL O tr et Φ • tr N CΛ co co σ φ 3 Hi tr
Hi H r+ li Φ 3 iQ 3 φ ti Φ •* ü 3 ^ ≤ -^ 3 3 CL 3: tr Hd co 3
3: tr H o N 3 3 3 Φ 3 iQ σ t ?^ Φ tr a 3 N li Φ H O
H DJ μ- N 1 r+ ιQ N Ω CL tr Φ μ- ü μ- < ti 3 Φ co O 3 tr φ | Φ CΛ •< 3 Od tr Φ tr φ 5 3 rt co o O: φ 3 μ- CL rt N Φ
CL rr 3 co Q H N fr H φ φ Φ μ- φ Dd ω Φ μj tP μ- tr et μ- μ- Φ 3 μ- Φ et Λ ■ CΛ li 3 li 3 3 μ- H Φ 3 3 T3 φ 3 CΛ li- φ 3 φ μ- ≤ fr 3 o Φ α tr CL μ- 3 <! σ co CΛ 3 φ 3 3 § O pt:
• ; Φ Φ co Ω φ 3 Φ φ rt vQ o Φ •^ et o CL 3 Dd et 3
H Dd H CL H 3 DJ tr 3 H 3 3 i N DJ: fr Hi Hd CL
H μ- rt ω tr 3 3 rt 5 3 3r μ- 3 3 D tr μ- rt Hi 3 -J φ o 3 DJ Φ ιQ 3 Dd Φ < Dd φ u3 φ Φ μ- CL li Φ tr Φ 3 H
N sQ 3 3 σ tr H Φ 3 μ- 3 o φ Hi co i tr rt μ- O co ü Φ ^ CL 3 3
Φ DJ 3 Φ Φ Φ vQ uQ 3 H li Hi s; 3 u3 ω et φ li et 3 3
CΛ 3 3 μ- Ω Φ CO iQ 3 Φ 2 Φ tr 3 co μ- li CΛ μ- 3 co sQ
CΛ tQ 3 tr tr N DJ: μ- 3 Ω H Φ iQ 3 tr φ y Ω < 3
Φ CΛ πd Φ r L i Φ << 3 φ iQ tr tr et H CΛ co Φ t tr μ- 3 > i N Φ Φ 3 fr iQ co Φ 3 φ Φ ≤ 3 li fr rt o μ- rt CL CL 3
Hd Φ rt li rt j Φ φ IQ 3 1 CL Ω φ 3 φ μj Φ Ό φ p : μ- Φ CL t- H CΛ 50 Φ 3 3 3 Φ tr μ- tr Ω 3 3 i 1 rt Φ li
1 rt μ- Φ < H Φ Λ α 3 iQ CΛ ti CΛ 3 tr T> 1
Hd 3 | o H 5 DJ 1 CΛ Φ Φ φ 1 O co CL 1 1 CΛ 1 rt Φ
P2 < P3
P3 < P4
P3 < P6
P4 < P5
P6 < P4
P4 < P8
P6 < P7
P6 < P8
P7 < P8
Als erste Prozesse der Sequenz kommen lediglich Prozesse in Frage, die keinen im selben Berechnungszyklus berechneten Eingangswert benötigen. Der erste Prozess darf also keinen mit dem Attribut PRE belegten Eingang aufweisen. Der letzte Prozess der Sequenz darf keinen mit dem Attribut POST belegten Eingang aufweisen. Alle Berechnungsreihenfolgen die diesen Bedingungen und den aufgestellten Ungleichungen genügen, sind gültige oder lauffähige Sequenzen.
Das Ungleichungssystem kann beispielsweise durch Anwendung der Graphentheorie computergestützt gelöst werden. Ein Graph wird aufgebaut, indem die Prozesse als Knoten und jede Ungleichung als gerichtete Kante des Graphen eingesetzt werden. Eine gerichtete Kante ist ein Verweis von einem Prozess auf einen anderen Prozess. Die gerichtete Kante wird jeweils von dem Prozess bzw. Knoten, der in der entsprechenden Ungleichung als kleiner bestimmt wurde, auf den Prozess bzw. Knoten gerichtet, der in der selben Ungleichung als größer bestimmt wurde .
Anders ausgedrückt wird jeweils zu einem Prozess, dessen Eingang mit dem Attribut PRE versehen ist, ein Verweis von dem Prozess gesetzt, der den Eingangswert liefert. Von einem Prozess, dessen Eingangswert mit dem Attribut POST versehen ist, wird ein Verweis auf den Prozess gesetzt, der den Eingangswert liefert.
In Figur 4 ist die Umsetzung der oben aufgestellten Ungleichungen in einen Graphen dargestellt. In einem ersten Bearbeitungsschritt oder einer ersten Iteration werden alle Knoten (Prozesse) aus der Menge der zu überprüfenden Knoten (Prozessen) entfernt, einschließlich der zugehörigen Verweise E (Kanten) , zu denen keine Verweise E (Kanten) des Graphen zeigen. Dies gilt für die Prozesse Pl und P2, die keinen Eingang mit dem Attribut PRE aufweisen. Diese Prozesse werden einer ersten Gruppe von Prozessen des Berechnungszyklus zuge- ordnet.
Die Prozesse innerhalb einer Gruppe von Prozessen können in beliebiger Reihenfolge oder parallel abgearbeitet werden.
Durch rekursive Abarbeitung des Algorithmus wird jeweils eine neue Gruppe von Prozessen gebildet, die bei der Programmausführung nach der vorhergehenden Gruppe von Prozessen abgearbeitet werden muss. Es werden also die nach jedem Schritt verbleibenden Prozesse in weiteren aufeinanderfolgenden Schritten jeweils auf Prozesse untersucht, auf die kein Verweis E gesetzt ist. Die in jedem Schritt gefundenen Prozesse werden entfernt und aufeinander folgenden Gruppen von Prozessen zugeordnet. Diese Gruppen können einen oder mehrere Prozesse beinhalten. Die Reihenfolge der Prozesse innerhalb ei- ner Gruppe ist beliebig, da diese Prozesse voneinander unabhängig sind. Es müssen jedoch alle Prozesse einer Gruppe abgearbeitet sein, bevor ein Prozess der nächsten Gruppe ausgeführt wird.
In Figur 5 ist der um die Prozesse Pl und P2 verminderte
Graph gezeigt. Auch in diesem Teilgraphen muss mindestens ein Knoten (Prozess) existieren, zu dem keine Kante zeigt. Alle Knoten, zu denen keine Kante zeigt, müssen wiederum entfernt werden. Existiert kein Knoten (Prozess) der diese Bedingung erfüllt, ist eine nicht auflösbare Schleife und damit eine Inkonsistenz im Datenfluss entdeckt.
In einem zweiten Schritt wird folglich der Prozess P3 entfernt und einer zweiten Gruppe von Prozessen zugeordnet.
Das Resultat ist in Figur 6 dargestellt.
In einem dritten Schritt wird nun Prozess 6 entfernt, zu dem keine Kante zeigt.
Der so entstandene restliche Graph ist in Figur 7 darge- stellt. Prozess 6 wird einer dritten Gruppe von Prozessen zugeordnet .
In einem vierten Schritt werden die Prozesse P4 und P7 entfernt und einer vierten Gruppe von Prozessen zugeordnet.
Damit verbleiben lediglich die Prozesse P5 und P8, die in Figur 8 dargestellt sind. Auf diese verbliebene Prozesse zeigt keine Kante, so dass beide Prozesse einer fünften und letzten Gruppe von Prozessen zugeordnet werden.
In der Reihenfolge der Schritte oder der Gruppen von Prozessen ist die Reihenfolge gefunden, in der die Prozesse abgearbeitet werden müssen. Die in einem Schritt abgetrennten Prozesse müssen vor den Prozessen ausgeführt werden, die im nächsten Schritt abgetrennt wurden.
Die Zuordnung der einzelnen Prozesse P1-P8 zu Gruppen von Prozessen G1-G5 ist in Figur 9 veranschaulicht.
Da in den Gruppen jeweils mehr als ein Prozess vorhanden sein kann, kann eine Vielzahl von unterschiedlichen, ausführbaren Sequenzen gebildet werden. Aus dieser Vielzahl von gültigen Sequenzen kann beispielsweise diejenige bestimmt werden, die die kürzeste Laufzeit beansprucht oder diejenige, bei der je- weils die Berechnung eines Ausgabewerts und dessen Verwendung als Eingangswert zeitlich am dichtesten aufeinander folgen (Optimierung) .
Figur 10 zeigt einen Graphen, der eine nicht auflösbare Schleife enthält. Der Graph repräsentiert nicht die Drehmoment-Regelung von Figur 3.
Gemäß den oben aufgestellten Berechnungsschritten wurde versucht den Graphen mit dem Werkzeug zum Anordnen oder Prüfen in einzelne Gruppen von Prozessen zu zerlegen. Das Ergebnis der Bearbeitungsschritte 1 bis 3 ist in den Figuren 11 bis 13 dargestellt.
In Figur 13, die das Ergebnis des dritten Schritts darstellt, konnte schließlich kein Prozess oder Knoten gefunden werden, zu dem keine Kante des Graphen zeigt. Es gibt also keinen Prozess, der keinen Eingang mit dem Attribut PRE hat. Die verbleibenden Prozesse können somit keiner Gruppe zugeordnet werden. Es liegt eine Schleife vor, die aufgelöst werden muss, um eine ausführbare Task zu erhalten. Die verbleibenden Prozesse werden auf eine Anzeigeeinrichtung oder einen Dru- cker ausgegeben.