11.05.2014 Aufrufe

Echtzeitkommunikationskanäle für die FAMOUSO-Middleware

Echtzeitkommunikationskanäle für die FAMOUSO-Middleware

Echtzeitkommunikationskanäle für die FAMOUSO-Middleware

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Otto-von-Guericke-Universität Magdeburg<br />

Fakultät für Informatik<br />

Institut für Verteilte Systeme<br />

Diplomarbeit<br />

Echtzeitkommunikationskanäle<br />

für <strong>die</strong> <strong>FAMOUSO</strong>-<strong>Middleware</strong><br />

Verfasser:<br />

Philipp Werner<br />

31. März 2011<br />

Hochschullehrer:<br />

Betreuer:<br />

Prof. Dr. rer. nat. Jörg Kaiser<br />

Dipl.-Inform. Michael Schulze


Werner, Philipp:<br />

Echtzeitkommunikationskanäle für <strong>die</strong> <strong>FAMOUSO</strong>-<strong>Middleware</strong><br />

Diplomarbeit, Otto-von-Guericke-Universität Magdeburg, 2011.


Danksagung<br />

An <strong>die</strong>ser Stelle möchte ich allen danken, <strong>die</strong> mich während der Entstehung <strong>die</strong>ser Diplomarbeit<br />

unterstützt haben. Dazu gehören insbesondere Michael Schulze, der <strong>die</strong> Arbeit betreut<br />

hat, meine Frau Diana und meine Tochter Lara, <strong>die</strong> mir immer wieder neue Kraft<br />

geben konnten, sowie Stephan Lenor, der mir mit sprachlichen und orthographischen Hinweisen<br />

weitergeholfen hat.<br />

Mein besonderer Dank gilt auÿerdem Prof. Jörg Kaiser und Prof. Georg Paul für ihre<br />

Tätigkeit als Gutachter <strong>die</strong>ser Arbeit.


Inhaltsverzeichnis<br />

Abbildungsverzeichnis<br />

Tabellenverzeichnis<br />

Algorithmenverzeichnis<br />

Abkürzungen, Begrie und Notation<br />

v<br />

vii<br />

ix<br />

xi<br />

1 Einleitung 1<br />

1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1<br />

1.2 Aufgabenstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2<br />

1.3 Gliederung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3<br />

2 Grundlagen und verwandte Arbeiten 5<br />

2.1 Echtzeitsysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.1.1 Begri und Klassizierung . . . . . . . . . . . . . . . . . . . . . . . . 5<br />

2.1.2 Funktionale Anforderungen . . . . . . . . . . . . . . . . . . . . . . . 7<br />

2.1.3 Zeitliche Anforderungen . . . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2.1.3.1 Digitale Regelung . . . . . . . . . . . . . . . . . . . . . . . 8<br />

2.1.3.2 Echtzeitplanung . . . . . . . . . . . . . . . . . . . . . . . . 9<br />

2.1.4 Verlässlichkeitsanforderungen . . . . . . . . . . . . . . . . . . . . . . 10<br />

2.1.5 Besonderheiten verteilter Echtzeitsysteme . . . . . . . . . . . . . . . 11<br />

2.2 Publish/Subscribe <strong>Middleware</strong> . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.2.1 <strong>FAMOUSO</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13<br />

2.2.2 Existierende echtzeitfähige <strong>Middleware</strong>s . . . . . . . . . . . . . . . . 14<br />

2.3 Controller Area Network . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14<br />

2.3.1 Basisprotokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15<br />

2.3.2 Einplanbarkeitsanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . 17<br />

2.3.3 Kalender und dynamische Prioritäten . . . . . . . . . . . . . . . . . 18<br />

2.3.4 TTCAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

2.3.5 FTT-CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19<br />

2.3.6 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.4 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.4.1 Basisprotokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20<br />

2.4.2 RETHER . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

i


Inhaltsverzeichnis<br />

2.4.3 RT-EP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22<br />

2.4.4 RTnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

2.4.5 FTT-Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23<br />

2.4.6 Switched Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

2.4.7 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24<br />

3 Echtzeitkommunikationskanäle 25<br />

3.1 Durchsetzung über TDMA . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

3.1.1 Wahl des Verfahrens . . . . . . . . . . . . . . . . . . . . . . . . . . . 25<br />

3.1.2 Annahmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26<br />

3.1.3 TDMA-Zyklus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27<br />

3.1.4 Nicht-Echtzeit-Kommunikation . . . . . . . . . . . . . . . . . . . . . 30<br />

3.1.4.1 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30<br />

3.1.4.2 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35<br />

3.2 Dynamische Planung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

3.2.1 Planungsproblem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37<br />

3.2.2 Slotlänge und Übertragungsstartfenster . . . . . . . . . . . . . . . . 39<br />

3.2.2.1 Modellierung der Slots . . . . . . . . . . . . . . . . . . . . . 39<br />

3.2.2.2 Frame-Anzahl und -Nutzdatenmengen . . . . . . . . . . . . 42<br />

3.2.2.3 CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43<br />

3.2.2.4 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

3.2.3 Phasenverschiebungsfenster . . . . . . . . . . . . . . . . . . . . . . . 45<br />

3.2.4 Planung des TDMA-Zyklus' . . . . . . . . . . . . . . . . . . . . . . . 46<br />

3.2.4.1 Repräsentation des Plans . . . . . . . . . . . . . . . . . . . 47<br />

3.2.4.2 Reservierung . . . . . . . . . . . . . . . . . . . . . . . . . . 48<br />

3.2.4.3 Freigabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

3.2.4.4 Änderung von Anforderungen . . . . . . . . . . . . . . . . 53<br />

3.2.5 Einussfaktoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53<br />

3.3 Reservierungsprotokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55<br />

3.3.1 Announcements und Subscriptions . . . . . . . . . . . . . . . . . . . 56<br />

3.3.2 Reservierungszustände . . . . . . . . . . . . . . . . . . . . . . . . . . 57<br />

3.3.3 Fehlertoleranz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59<br />

3.3.4 Verzögerung und Umordnung . . . . . . . . . . . . . . . . . . . . . . 62<br />

3.3.5 Leasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63<br />

3.3.6 Eigenschaften des Protokolls . . . . . . . . . . . . . . . . . . . . . . 64<br />

4 Integration in <strong>FAMOUSO</strong> 67<br />

4.1 Echtzeitereigniskanäle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67<br />

4.1.1 Quality of Service . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68<br />

4.1.1.1 Zeiteigenschaften . . . . . . . . . . . . . . . . . . . . . . . . 69<br />

4.1.1.2 Verlässlichkeit . . . . . . . . . . . . . . . . . . . . . . . . . 70<br />

ii


Inhaltsverzeichnis<br />

4.1.2 Verwendung der API . . . . . . . . . . . . . . . . . . . . . . . . . . . 72<br />

4.2 Umsetzung in <strong>FAMOUSO</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74<br />

4.2.1 Echtzeit-Publisher- und Echtzeit-Subscriber-Ereigniskanal . . . . . . 76<br />

4.2.2 Management Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80<br />

4.2.3 Planer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81<br />

4.2.4 Network Guard und Poll-Master . . . . . . . . . . . . . . . . . . . . 81<br />

4.2.5 Network Layer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83<br />

4.3 Konguration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

4.3.1 <strong>Middleware</strong>-Stack . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84<br />

4.3.2 Planer und Poll-Master . . . . . . . . . . . . . . . . . . . . . . . . . 85<br />

5 Evaluierung 87<br />

5.1 Uhrensynchronisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87<br />

5.2 Einplanbarkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89<br />

5.3 Latenz und Jitter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93<br />

5.3.1 Kommunikationslatenz und -jitter bei CAN . . . . . . . . . . . . . . 95<br />

5.3.2 Kommunikationslatenz und -jitter bei Ethernet . . . . . . . . . . . . 98<br />

5.3.3 Ende-zu-Ende-Latenz und -Jitter . . . . . . . . . . . . . . . . . . . . 100<br />

5.4 Verlässlichkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br />

5.5 Eignung für eingebettete Systeme . . . . . . . . . . . . . . . . . . . . . . . . 103<br />

6 Zusammenfassung und Ausblick 105<br />

Literaturverzeichnis 109<br />

iii


Abbildungsverzeichnis<br />

2.1 Kontext eines Echtzeit-Computersystems . . . . . . . . . . . . . . . . . . . 7<br />

2.2 Bus- und Sterntopologie: Verzögerungen in Warteschlangen . . . . . . . . . 12<br />

3.1 TDMA-Zyklus und Zeitparameter von Echtzeitslots . . . . . . . . . . . . . . 28<br />

3.2 Versand von Echtzeitnachrichten . . . . . . . . . . . . . . . . . . . . . . . . 29<br />

3.3 Versand von Nicht-Echtzeitnachrichten bei Ethernet . . . . . . . . . . . . . 33<br />

3.4 Versand von Nachrichten bei CAN . . . . . . . . . . . . . . . . . . . . . . . 35<br />

3.5 Synchronisierung von Produzent und Echtzeitkommunikationskanal . . . . . 38<br />

3.6 Modellierung eines Echtzeitslots: Länge und ÜSF . . . . . . . . . . . . . . . 40<br />

3.7 Notwendigkeit der Umplanung für optimale Planerstellung . . . . . . . . . . 47<br />

3.8 Speicherung freier Slots bei der Planung . . . . . . . . . . . . . . . . . . . . 47<br />

3.9 Optimierungspotential beim intuitiven Einplanbarkeitstest . . . . . . . . . . 51<br />

3.10 Reservierungszustände eines Kommunikationskanals . . . . . . . . . . . . . 57<br />

3.11 Reservierungszustände auf Planerseite . . . . . . . . . . . . . . . . . . . . . 60<br />

3.12 Inkonsistenz durch nebenläuges unannounce und announce . . . . . . . . . 62<br />

4.1 Integration in <strong>FAMOUSO</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75<br />

4.2 Beispielkonguration des <strong>Middleware</strong>-Stacks . . . . . . . . . . . . . . . . . . 84<br />

5.1 Wahrscheinlichkeitsverteilung der Uhrengenauigkeit . . . . . . . . . . . . . . 89<br />

5.2 Testszenario: Knoten und ihre Kommunikationsbeziehungen . . . . . . . . . 90<br />

5.3 Reservierungen: Ausgabe des Netzwerkplaners . . . . . . . . . . . . . . . . . 92<br />

5.4 CPU- und Netzwerknutzung für ein RT-Event . . . . . . . . . . . . . . . . . 93<br />

5.5 Kommunikationslatenzen bei CAN . . . . . . . . . . . . . . . . . . . . . . . 96<br />

5.6 Kommunikationslatenzen bei Ethernet . . . . . . . . . . . . . . . . . . . . . 99<br />

5.7 Fehlererkennung und -behandlung am Beispiel . . . . . . . . . . . . . . . . . 102<br />

v


Tabellenverzeichnis<br />

2.1 Vergleich von Lösungen für harte Echtzeitgarantien bei CAN . . . . . . . . 20<br />

3.1 Zeitparameter bei CAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44<br />

3.2 Zeitparameter bei Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . 45<br />

5.1 Testszenario: QoS-Anforderungen an <strong>die</strong> Kommunikationskanäle . . . . . . 90<br />

5.2 Testszenario: Abstimmung der CPU- und Netzwerkplanung . . . . . . . . . 93<br />

5.3 Kommunikationslatenzen bei CAN . . . . . . . . . . . . . . . . . . . . . . . 96<br />

5.4 Kommunikationslatenzen bei Ethernet . . . . . . . . . . . . . . . . . . . . . 99<br />

5.5 Ende-zu-Ende-Latenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101<br />

5.6 Speicherbedarf der <strong>Middleware</strong> auf einem Mikrocontroller . . . . . . . . . . 103<br />

vii


Algorithmenverzeichnis<br />

3.1 Einplanbarkeit: Eingrenzung des Suchfensters der Phasenverschiebung . . . . 49<br />

3.2 Einplanbarkeit: Suche gemäÿ First-Fit-Strategie . . . . . . . . . . . . . . . . 50<br />

3.3 Einplanbarkeit: Konikttest für eine Phasenverschiebung . . . . . . . . . . . 50<br />

ix


Abkürzungen, Begrie und Notation<br />

Abkürzungen<br />

Abb. Abbildung<br />

bzw. beziehungsweise<br />

CAN Controller Area Network<br />

CSMA/CD Carrier Sense Multiple Access with Collision Detection (das bei<br />

Ethernet verwendete MAC-Verfahren)<br />

d. h. das heiÿt<br />

evt. eventuell<br />

FTT-CAN Flexible Time-Triggered CAN, Protokoll<br />

FTT-Ethernet Flexible Time-Triggered Ethernet, Protokoll<br />

ggf. gegebenenfalls<br />

MAC Medium Access Control (Oberbegri für Verfahren zur Steuerung des<br />

Zugris auf ein Übertragungsmedium)<br />

NRT Non-Real-Time (engl. für: Nicht-Echtzeit)<br />

PEC Publisher Event Channel (engl. für: Publisher-Ereigniskanal)<br />

QoS Quality of Service (engl. für: Dienstgüte)<br />

RETHER Real-time ETHERnet protocol<br />

RT<br />

Real-Time (engl. für: Echtzeit)<br />

RT-EP Real-Time Ethernet Protocol<br />

SEC Subscriber Event Channel (engl. für: Subscriber-Ereigniskanal)<br />

TDMA Time Division Multiple Access (<strong>die</strong> Zuteilung der Sendeberechtigung für<br />

ein Übertragungsmedium erfolgt über den Fortschritt der Zeit)<br />

TT-CAN Time-Triggered CAN, Protokoll<br />

ÜSF Übertragungsstartfenster<br />

vgl.<br />

vergleiche<br />

z. B. zum Beispiel<br />

Begrie<br />

Echtzeitkommunikationskanal (Kommunikationskanal) Hiermit ist ein Mechanismus<br />

gemeint, der für <strong>die</strong> Nachrichtenübertragung zwischen einem sendenden Knoten<br />

xi


Abkürzungen, Begrie und Notation<br />

und beliebig vielen empfangenden Knoten eine beschränkte Latenz und geringen<br />

Jitter garantiert, also zeitlich vorhersagbare Kommunikation zwischen den Knoten<br />

ermöglicht. Einmal vergebene Garantien müssen unabhängig von der Belastung des<br />

Netzwerks eingehalten werden, also auch wenn unterschiedliche Knoten gleichzeitig<br />

viele Nachrichten über das Netzwerk versenden wollen. Abschnitt 2.1.5 beschreibt<br />

<strong>die</strong> Problematik, Kapitel 3 <strong>die</strong> in <strong>die</strong>ser Arbeit entwickelte Lösung.<br />

Ereigniskanal Die Publish/Subscribe-<strong>Middleware</strong> <strong>FAMOUSO</strong> liefert von Publishern<br />

veröentlichte Events (engl. für: Ereignis, <strong>die</strong> Bezeichnung für Nachrichten bei<br />

Publish/Subscribe) an <strong>die</strong> Subscriber aus, <strong>die</strong> sich auf dem gleichen und anderen<br />

Knoten benden können. Das Routing bzw. <strong>die</strong> Filterung von Events basiert primär<br />

auf Subjects und sekundär auf Kontext-Attributen. Jedem Event muss ein Subject<br />

zugewiesen werden, über das <strong>die</strong> Bedeutung seines Inhalt zugeordnet werden<br />

kann. Auÿerdem können Events mit Kontext-Attributen versehen werden, um für<br />

<strong>die</strong> Filterung nutzbare Zusatzinformationen mitzuliefern. Ein Ereigniskanal ist ein<br />

Konzept in <strong>FAMOUSO</strong>, das es erlaubt, QoS-Anforderungen für <strong>die</strong> Auslieferung<br />

von Events zu stellen. Er stellt auÿerdem <strong>die</strong> Schnittstelle zur Anwendung dar, über<br />

<strong>die</strong> Events jeweils eines Subjects veröentlicht oder abonniert werden können.<br />

Echtzeitereigniskanal Ein Echtzeitereigniskanal ist ein Ereigniskanal, für den <strong>die</strong> <strong>Middleware</strong><br />

<strong>die</strong> Einhaltung von zeitlichen QoS-Anforderungen (Periode, Latenz, Jitter)<br />

garantieren kann. Um <strong>die</strong>se Zusicherung auch für <strong>die</strong> Auslieferung von Events an<br />

Subscriber auf anderen Knoten geben zu können, muss bei der Datenübertragung<br />

ein Echtzeitkommunikationskanal verwendet werden.<br />

Netzwerk Der Begri Netzwerk bezeichnet in <strong>die</strong>ser Arbeit einen Verbund von<br />

Knoten (Computern), <strong>die</strong> direkt über das Übertragungsmedium kommunizieren<br />

können, ohne dass <strong>die</strong> Nachrichten (Events) ein <strong>FAMOUSO</strong>-Gateway passieren<br />

müssen. Letzteres <strong>die</strong>nt zum Verbinden mehrerer Netze, <strong>die</strong> in <strong>die</strong>ser Arbeit als<br />

Netzwerkverbund bezeichnet werden. Zur deutlichen Abgrenzung vom Netzwerkverbund<br />

wird ein Netzwerk zum Teil auch als Netzwerksegment oder Subnetzwerk<br />

bezeichnet. Es wird angenommen, dass sich alle an das Netzwerk angeschlossenen<br />

Knoten an <strong>die</strong> Kommunikationsprotokolle von <strong>FAMOUSO</strong> halten. Dazu gehören<br />

z. B. das in Kapitel 3 vorgestellte Echtzeitme<strong>die</strong>nzugrisprotokoll, das Fragmentierungsprotokoll<br />

AFP oder das CAN-Kongurations- und -Bindeprotokoll zur<br />

Vergabe der CAN-IDs.<br />

Task und Thread Der Begri Task (engl. für: Aufgabe) wird hier als Oberbegri für eine<br />

Einheit einer beliebig gearteten Prozessorzeitplanung verwendet. Der Begri Thread<br />

ist hier als spezielle Ausprägung eines Tasks zu verstehen, <strong>die</strong> durch Unterbrechbarkeit<br />

und einen eigenen Stack gekennzeichnet ist.<br />

xii


Notation<br />

Notation: mathematische Operationen<br />

⌈a⌉<br />

⌈a⌉ b<br />

⌊a⌋<br />

⌊a⌋ b<br />

kgV(a, b)<br />

max{. . . }<br />

min{. . . }<br />

a mod b<br />

a mod + b<br />

Aufrundung von a auf <strong>die</strong> nächstgröÿere Ganzzahl:<br />

⌈a⌉ = min{x ∈ Z, x ≥ a}<br />

Aufrundung von a auf ein Vielfaches von b: ⌈a⌉ b<br />

= ⌈ a<br />

b<br />

⌉<br />

· b<br />

Abrundung von a auf <strong>die</strong> nächstkleinere Ganzzahl:<br />

⌊a⌋ = max{x ∈ Z, x ≤ a}<br />

Abrundung von a auf ein Vielfaches von b: ⌊a⌋ b<br />

= ⌊ a<br />

b<br />

⌋<br />

· b<br />

Kleinstes gemeinsames Vielfaches von a und b<br />

Gröÿte Zahl der angegebenen Menge<br />

Kleinstes Zahl der angegebenen Menge<br />

Modulo-Operation. Gibt den Rest bei Ganzzahldivision von a durch b<br />

zurück.<br />

Modulo-Operation mit positivem Ergebnis. Stellt auch bei negativem a<br />

ein positives Ergebnis sicher: a mod + b = ((a mod b) + b) mod b<br />

Notation: Formelzeichen<br />

α Accuracy (engl. für: Genauigkeit) einer Uhr. Siehe Abschnitt 3.1.2.<br />

d j i<br />

Ende des Slots j des Echtzeitkommunikationskanals i (Frist zum<br />

Abschluss der Übertragung). Siehe Abschnitt 3.1.3.<br />

D i Ende des Slot-Rahmenintervalls. Siehe Abschnitt 3.2.1.<br />

f i<br />

g<br />

Länge des Übertragungsstartfensters (ÜSF) der Slots des<br />

Echtzeitkommunikationskanals i. Siehe Abschnitt 3.1.3 und 3.2.2.<br />

Granularität einer Uhr, also der Realzeitabstand zweier<br />

aufeinanderfolgender Ticks. Siehe Abschnitt 3.1.2.<br />

G Planungsgranularität. Siehe Abschnitt 3.2.5.<br />

l i<br />

LB i<br />

p i<br />

Länge der Slots des Echtzeitkommunikationskanals i. Siehe<br />

Abschnitt 3.1.3 und 3.2.2.<br />

Maximale Länge der über den Echtzeitkommunikationskanal i<br />

übertragbaren Nachrichten in Byte. Siehe Abschnitt 3.2.1.<br />

Periode der Slots des Echtzeitkommunikationskanals i. Siehe<br />

Abschnitt 3.1.3.<br />

xiii


Abkürzungen, Begrie und Notation<br />

u j i<br />

Ende des Übertragungsstartfensters (USF) des Slots j des<br />

Echtzeitkommunikationskanals i (Frist zum Beginn einer Übertragung).<br />

Siehe Abschnitt 3.1.3.<br />

v i Phasenverschiebung der Slots des Echtzeitkommunikationskanals i.<br />

Siehe Abschnitt 3.1.3 und 3.2.4.<br />

r j i<br />

Beginn des Slots j des Echtzeitkommunikationskanals i (Bereitzeit des<br />

Mediums). Siehe Abschnitt 3.1.3.<br />

R i Beginn des Slot-Rahmenintervalls. Siehe Abschnitt 3.2.1.<br />

Rep i<br />

Anzahl der Wiederholungen der Nachrichten auf dem<br />

Echtzeitkommunikationskanal i (für CAN: maximale Anzahl). Siehe<br />

Abschnitt 3.2.1.<br />

z k Zeitpunkt eines TDMA-Zyklus-Beginns. Siehe Abschnitt 3.1.3.<br />

Z Länge des TDMA-Zyklus'. Siehe Abschnitt 3.1.3.<br />

xiv


1 Einleitung<br />

1.1 Motivation<br />

Computer sind heute allgegenwärtig, nicht nur auf dem Schreibtisch oder in der Hosentasche,<br />

zum Arbeiten oder als Multimedia-Gerät. In einem aktuellen Auto der Mittelklasse<br />

sind mit seit langem steigender Tendenz mehr als 70 Mikrocontroller verbaut (vgl.<br />

[NL08, S. 1-1]), <strong>die</strong> über Kommunikationsnetzwerke miteinander verbunden sind. Einige<br />

werden für reine Komfortfunktionen, wie elektrische Fensterheber oder Sitzversteller, eingesetzt.<br />

Neben dem Komfort <strong>die</strong>nen viele der Verbesserung der Sicherheit. Beispielsweise<br />

löst das Airbag-Steuergerät bei einem Unfall Airbags und Gurtstraer aus, um <strong>die</strong> Insassen<br />

vor schwereren Verletzungen zu schützen. Andere Systeme sollen bei der Vermeidung<br />

von Unfällen helfen. Einige Assistenzsysteme unterstützen den Fahrer, indem sie ihn<br />

vor möglichen Gefahrensituationen warnen, wie dem ungewollten Verlassen einer Fahrspur.<br />

Andere greifen aktiv in <strong>die</strong> Fahrzeugdynamik ein, wie das Antiblockiersystem (ABS),<br />

das Elektronische Stabilitäts-Programm (ESP) oder <strong>die</strong> Abstands- und Geschwindigkeitsregelung<br />

(ACC, Adaptive Cruise Control). Auch zur Steuerung des Motors wird komplexe<br />

Elektronik eingesetzt, um <strong>die</strong> Ezienz im Interesse von Kraftstoverbrauch und Leistung<br />

zu optimieren.<br />

Die meisten der Funktionen haben Echtzeitanforderungen, das heiÿt es ist nicht nur<br />

entscheidend was sie tun, sondern auch wann sie es tun. Beispielsweise muss das Airbag-<br />

Steuergerät einen kritischen Unfall über seine Sensorik in Sekundenbruchteilen erkennen,<br />

um <strong>die</strong> Airbags im richtigen Moment auslösen zu können. Sowohl zu frühes als auch zu<br />

spätes Auslösen führen eher zu zusätzlichen Verletzungen, als <strong>die</strong> Insassen zu schützen.<br />

Die zeitliche Vorhersagbarkeit und Vorherbestimmbarkeit des Systems ist also essentiell,<br />

damit das System seiner Aufgabe gerecht wird. Da das Versagen des Systems katastrophale<br />

Folgen haben kann, ist es auch wichtig, dass es sehr zuverlässig arbeitet. Es darf <strong>die</strong><br />

Airbags über mehrere unfallfreie Jahre hinweg nicht fälschlicherweise auslösen und muss<br />

im entscheidenden Sekundenbruchteil voll funktionstüchtig sein.<br />

Echtzeit- und sicherheitskritische Steuerungen und Regelungen nden sich nicht nur im<br />

Automobil. In der Prozessautomatisierung, in Flugzeugen, Schienenfahrzeugen, der Raumfahrt<br />

und der Energietechnik sind sie schon seit langem unverzichtbar. Und auch <strong>die</strong> meisten<br />

Robotik-Anwendungen sind Echtzeit- und sicherheitskritisch (vgl. [Lun08, S. 23.]).<br />

1


1 Einleitung<br />

Regelungen und Steuerungen werden zunehmend mit digitaler Elektronik realisiert. Zum<br />

Einen liegt das an den schnellen Fortschritten in Leistungsfähigkeit, Robustheit und Zuverlässigkeit<br />

der Hardware bei sinkenden Kosten. Zum Anderen erönet <strong>die</strong> Programmierbarkeit<br />

der Systeme ganz neue Möglichkeiten gegenüber analogen, mechanischen oder hydraulischen<br />

Systemen. Über <strong>die</strong> Software können leicht beliebig angepasste Algorithmen<br />

eingesetzt werden. Auÿerdem lassen sich <strong>die</strong> Komponenten ohne groÿen Verkabelungsaufwand<br />

über Kommunikationsnetzwerke verbinden, um Sensordaten gemeinsam nutzen zu<br />

können oder auf andere Weise zu kooperieren (vgl. [NL08, S. 1-3]).<br />

Ein System aus vernetzten Rechner-Komponenten, <strong>die</strong> <strong>die</strong> gewünschte Funktionalität im<br />

Zusammenspiel erbringen, nennt man verteiltes System. Hierbei spielt nicht nur <strong>die</strong> Kooperation<br />

der Komponenten eine Rolle. Verteilte Systeme bieten auch gute Möglichkeiten,<br />

Mechanismen der Fehlertoleranz einzusetzen, um <strong>die</strong> Zuverlässigkeit des Systems zu<br />

steigern. Beispielsweise lassen sich durch Replikation von Komponenten Fehler maskieren,<br />

so dass sie nicht zu einem Funktionsausfall des Gesamtsystems führen. Ein weiterer<br />

Vorteil ist <strong>die</strong> Kapselung von Funktionalität in Komponenten mit klar denierten<br />

Schnittstellen. Dies erleichtert <strong>die</strong> Entwicklung und fördert <strong>die</strong> Erweiterbarkeit des Systems<br />

und Wiederverwendbarkeit seiner Bestandteile. Verteilte Systeme bringen jedoch<br />

auch Herausforderungen mit sich, insbesondere im Bereich der Echtzeitsysteme. Durch<br />

<strong>die</strong> Kommunikation zwischen den Komponenten entstehen zusätzliche Verzögerungen und<br />

neue potentielle Fehlerquellen, wie Zugriskonikte und Stauungen im Kommunikationsnetz.<br />

Jene Fehler müssen verhindert werden, um <strong>die</strong> Echtzeitfähigkeit des Gesamtsystems<br />

garantieren zu können.<br />

Die Entwicklung von verteilten Echtzeitanwendungen kann deutlich vereinfacht werden,<br />

wenn eine <strong>Middleware</strong> eingesetzt wird, bei der <strong>die</strong> Details der Echtzeitkommunikation<br />

hinter einer Schnittstelle gekapselt sind. Die adaptierbare <strong>Middleware</strong><br />

<strong>FAMOUSO</strong> [Sch09, Sch] bietet inhaltsbasierte Publish/Subscribe-Gruppenkommunikation<br />

für verschiedene Netzwerke und Plattformen, unter anderem auch für ressourcenbeschränkte<br />

8-Bit-Mikrocontroller. Die bereitgestellten Dienste sind über eine einheitliche API von<br />

verschiedenen Programmiersprachen und Ingenieurtools aus verwendbar. In der vorliegenden<br />

Arbeit soll <strong>die</strong>se <strong>Middleware</strong> um Echtzeitkommunikationskanäle erweitert werden.<br />

1.2 Aufgabenstellung<br />

Die Publish/Subscribe-<strong>Middleware</strong> <strong>FAMOUSO</strong> unterstützt bisher ausschlieÿlich Best-<br />

Eort-Kommunikationsverhalten. Um sie auch für <strong>die</strong> Entwicklung verteilter Echtzeitsysteme<br />

nutzbar zu machen, soll sie in <strong>die</strong>ser Diplomarbeit um Echtzeitkommunikationskanäle<br />

erweitert werden.<br />

2


1.3 Gliederung<br />

Der Nutzer der <strong>Middleware</strong> soll für jeden Echtzeitereigniskanal individuelle Dienstgüteanforderungen<br />

gemäÿ der jeweiligen Anwendung spezizieren können. Die zentrale Zielstellung<br />

ist es, Garantien für <strong>die</strong> Kommunikation gemäÿ der angefragten Dienstgüte (engl.:<br />

Quality of Service, QoS) geben zu können. Auf Basis <strong>die</strong>ser Zusicherungen soll <strong>FAMOUSO</strong><br />

es einfach machen, zuverlässige verteilte Echtzeitsysteme zu entwickeln.<br />

Die Echtzeitkanäle sollen sich nahtlos in <strong>FAMOUSO</strong> und dessen Konzepte integrieren.<br />

Vorgegeben ist <strong>die</strong> Verwendung des Publish/Subscribe-Modells, <strong>die</strong> mit der Unterstützung<br />

von n-zu-m Gruppenkommunikation einher geht. Auÿerdem soll auch im Echtzeitbereich<br />

spontane Kommunikation möglich sein, das heiÿt <strong>die</strong> <strong>Middleware</strong> muss <strong>die</strong> Echtzeitkanäle<br />

autonom zur Laufzeit etablieren können. Nicht reservierte Netzwerkressourcen sollen für<br />

<strong>die</strong> Best-Eort-Kommunikation genutzt werden. Für <strong>die</strong> Implementierung ist eine hohe<br />

Kongurierbarkeit zur Compile-Zeit gefragt. Diese <strong>die</strong>nt im Wesentlichen dem Zweck, den<br />

Ressourcenverbrauch für eingebettete Systeme zu minimieren. Es wird angestrebt, <strong>die</strong><br />

Echtzeitkanäle auch auf einem 8-Bit-Mikrocontroller einsetzen zu können, beispielsweise<br />

für Smart Sensors.<br />

Die Arbeit konzentriert sich auf <strong>die</strong> Bereitstellung von Garantien für <strong>die</strong> Echtzeitkommunikation<br />

über CAN (Controller Area Network [Rob91]) und dediziertes Ethernet [iee08].<br />

Hierzu wird vor allem <strong>die</strong> Koordination der Netzwerkzugrie behandelt. Die echtzeitfähige<br />

Zuteilung der Rechenzeit auf den einzelnen Knoten wird als gegeben angenommen.<br />

1.3 Gliederung<br />

Im folgenden Kapitel werden Grundlagen und verwandte Arbeiten vorgestellt. Am Beginn<br />

steht dabei ein Überblick zu allgemeinen Aspekten von Echtzeitsystemen. Anschlieÿend<br />

werden Publish/Subscribe-<strong>Middleware</strong>s sowie CAN und Ethernet thematisiert, wobei vor<br />

allem auf den Kontext der verteilten Echtzeitsysteme eingegangen wird. In Kapitel 3 wird<br />

das erarbeitete Konzept zur Koordination des Me<strong>die</strong>nzugris erläutert. Es umfasst einen<br />

neuen echtzeitfähigen Me<strong>die</strong>nzugrismechanismus, <strong>die</strong> dafür erforderliche Planung zur<br />

Laufzeit, sowie ein Kommunikationsprotokoll, das den zur dynamischen Planung nötigen<br />

Informationsaustausch regelt. Die Integration des Konzepts in <strong>die</strong> <strong>Middleware</strong> <strong>FAMOUSO</strong><br />

wird in Kapitel 4 behandelt. Hierbei wird auch auf ausgewählte Aspekte der Implementierung<br />

eingegangen. Es folgt in Kapitel 5 eine Auswertung der Ergebnisse anhand von Messungen,<br />

<strong>die</strong> mit der Implementierung durchgeführt wurden. Das abschlieÿende Kapitel 6<br />

fasst <strong>die</strong> Arbeit zusammen. Es gibt auÿerdem einen Ausblick für mögliche weiterführende<br />

Arbeiten.<br />

3


2 Grundlagen und verwandte Arbeiten<br />

Dieses Kapitel gibt zunächst eine Einführung in Echtzeitsysteme und deren für <strong>die</strong>se<br />

Arbeit relevanten Aspekte. Abschnitt 2.2 behandelt kurz das Thema Publish/Subscribe-<br />

<strong>Middleware</strong>s. In den Abschnitten 2.3 und 2.4 werden <strong>die</strong> Netzwerke CAN und Ethernet<br />

vorgestellt, für welche <strong>die</strong> Echtzeitkanäle realisiert werden sollen. Dabei wird auf existierende<br />

Lösungen zur echtzeitfähigen Kommunikation eingegangen.<br />

2.1 Echtzeitsysteme<br />

2.1.1 Begri und Klassizierung<br />

Ein Echtzeit-Computersystem ist ein Computersystem, bei dem <strong>die</strong> Korrektheit des<br />

Systemverhaltens nicht nur von der logischen Korrektheit der erbrachten Funktionalität<br />

abhängt, sondern auch von der Einhaltung konkreter zeitlicher Anforderungen (vgl.<br />

[Kop97]).<br />

Oft wird der Begri Echtzeit missbräuchlich verwendet, um zu vermitteln, dass bei einer<br />

Aktivität des Computers keine vom Menschen wahrnehmbaren Verzögerungen auftreten.<br />

Der zentrale Aspekt eines Echtzeitsystems ist hingegen nicht <strong>die</strong> Schnelligkeit bei der<br />

Erfüllung einer Aufgabe, sondern <strong>die</strong> Vorhersagbarkeit des Verhaltens. Auch ein System,<br />

das eine halbe Stunde rechnet, bevor auf ein Ereignis reagiert wird, kann ein Echtzeitsystem<br />

sein, wenn <strong>die</strong> halbe Stunde innerhalb der zeitlichen Anforderungen liegt. Andererseits<br />

muss ein beliebig performantes System nicht unbedingt echtzeitfähig sein, denn <strong>die</strong><br />

zeitlichen Anforderungen müssen auch unter hoher Last und beim Auftreten von Fehlern<br />

eingehalten werden.<br />

Die Echtzeitfähigkeit eines Systems lässt sich erst einschätzen, wenn <strong>die</strong> konkreten<br />

zeitlichen Anforderungen bekannt sind. Auf <strong>die</strong>se wird in Abschnitt 2.1.3 weiter eingegangen.<br />

Auÿerdem sind Annahmen zur maximalen Last und zu den Fehlern nötig, unter<br />

denen das System seine Aufgabe korrekt erfüllen kann. Die Fehlerannahme im Zusammenhang<br />

mit den Verlässlichkeitsanforderungen wird in Abschnitt 2.1.4 genauer behandelt.<br />

Abschnitt 2.1.2 geht kurz auf typische funktionale Anforderungen von Echtzeitsystemen<br />

ein.<br />

5


2 Grundlagen und verwandte Arbeiten<br />

Gemäÿ der zu erfüllenden Aufgaben lassen sich Echtzeitsysteme in folgende Klassen einteilen:<br />

Harte Echtzeit (engl.: hard real-time): Man spricht von einem harten Echtzeitsystem,<br />

wenn <strong>die</strong> Verletzung von zeitlichen Anforderungen (Zeitfehler) katastrophale Konsequenzen<br />

haben kann (vgl. [Kop97]). So insbesondere, wenn <strong>die</strong> Sicherheit von Menschen<br />

gefährdet ist, aber auch wenn andere immense Schäden drohen. Daher müssen<br />

in <strong>die</strong>sen Systemen Zeitfehler unter allen Umständen vermieden werden.<br />

Beispiele sind der Autopilot eines Flugzeugs, der <strong>die</strong> Maschine bei einem Fehler zum<br />

Absturz bringen könnte oder <strong>die</strong> Steuerung eines Roboters, in dessen Arbeitsbereich<br />

sich auch Menschen bewegen. Die meisten klassischen Aufgaben sind Steuerungsund<br />

Regelungsaufgaben.<br />

Weiche Echtzeit (engl.: soft real-time): Kann <strong>die</strong> Verletzung von zeitlichen Anforderungen<br />

in gewissem Maÿe toleriert werden, handelt es sich um weiche Echtzeitanforderungen.<br />

Durch Zeitfehler wird hier nur <strong>die</strong> Güte des erbrachten Dienstes<br />

(Quality of Service) reduziert, ohne dass es zu einem kritischen Fehler des<br />

Systems kommt, durch den katastrophale Folgen drohen.<br />

Typisch für <strong>die</strong>se Kategorie sind Multimediaanwendungen, wie Video-Streaming, bei<br />

denen eine verringerte Qualität bei der Wiedergabe toleriert werden kann.<br />

Nicht-Echtzeit (engl.: non-real-time, abgekürzt NRT): Aufgaben, bei denen <strong>die</strong> Korrektheit<br />

der Ausführung von keinen zeitlichen Bedingungen abhängt, sind der Klasse<br />

der Nicht-Echtzeit-Aufgaben einzuordnen. Hierzu gehören beispielsweise <strong>die</strong> meisten<br />

Anwendungen des PC (Personal Computer) im Heim- und Büro-Bereich, wie<br />

Textverarbeitung. Aber auch in Echtzeitsystemen gibt es Aufgaben ohne Echtzeitanforderungen,<br />

<strong>die</strong> in <strong>die</strong>se Kategorie fallen, wie Diagnose und Wartung.<br />

Es existieren auch weitergehende und anders akzentuierte Klassizierungen von<br />

Echtzeitaufgaben. Beispielsweise wird in [Coo03, S. 6f.] neben der Kritikalität der Zeitanforderungen<br />

(hart vs. weich) hinsichtlich der Rechenzeiten zwischen schneller und<br />

langsamer Echtzeit unterschieden. Bei langsamen Echtzeitsystemen, deren Fristen über<br />

einer Sekunde liegen, sieht Cooling <strong>die</strong> Herausforderungen eher bei der Komplexität<br />

der Systeme. Hingegen sind schnelle Echtzeitsysteme meist deutlich kleiner, so dass <strong>die</strong><br />

wesentliche Schwierigkeit hier darin liegt, <strong>die</strong> nötigen Berechnungen innerhalb der sehr<br />

kurzen Fristen abschlieÿen zu können. Bei [KN98] werden <strong>die</strong> drei oben angegeben Kategorien<br />

um eine weitere ergänzt. In <strong>die</strong>ser ist <strong>die</strong> Verletzung der zeitlichen Anforderungen<br />

ebenso kritisch wie bei harter Echtzeit, es ist jedoch tolerierbar, wenn später mit der<br />

Ausführung der Aufgabe begonnen wird.<br />

Diese Arbeit beschäftigt sich zentral mit harten Echtzeitanforderungen, mit und ohne<br />

exibler Startzeit. Daher ist im folgenden Text mit dem Begri Echtzeit immer harte<br />

Echtzeit gemeint, wenn keine genauere Klassizierung auftaucht.<br />

6


2.1 Echtzeitsysteme<br />

Sensoren<br />

Umwelt Computer Mensch<br />

Aktoren<br />

Abbildung 2.1: Kontext eines Echtzeit-Computersystems<br />

2.1.2 Funktionale Anforderungen<br />

Harte Echtzeitsysteme werden in der Regel zur Steuerung 1 , Regelung 2 oder Überwachung 3<br />

von physikalisch ablaufenden Prozessen eingesetzt. Dabei interagieren sie mit der Umwelt.<br />

Die Schnittstelle zur Umwelt wird durch Sensoren und Aktoren hergestellt (siehe Abb. 2.1).<br />

Sensoren (engl.: sensors) liefern Informationen über den Zustand der Umwelt, indem sie<br />

physikalische Gröÿen messen, wie etwa Spannung, Kraft, Temperatur, Konzentration oder<br />

Beschleunigung. Um im Rechner verarbeitet werden zu können, müssen <strong>die</strong> Signale digitalisiert<br />

und aufbereitet werden. Bei Smart Sensors geschieht das bereits in der Sensorkomponente,<br />

in <strong>die</strong> ein Mikrocontroller integriert ist. Dieser ist meist über eine standardisierte<br />

Schnittstelle, wie ein Feldbussystem (z. B. CAN), mit dem Computer verbunden. Die Aufbereitung<br />

von Sensordaten umfasst eine Rauschminderung, beispielsweise über Mittelwertbildung,<br />

<strong>die</strong> Wandlung des Sensor-Signals, z. B. einer Spannung, in einen Messwert mit<br />

einer Standard-Maÿeinheit und eine Plausibilitätsprüfung, um einen Defekt des Sensors<br />

zu erkennen.<br />

Aktoren (engl.: actuators) <strong>die</strong>nen der gezielten Beeinussung der Umwelt des Rechnersystems,<br />

indem beispielsweise eine Bewegung initiiert, eine Temperatur verändert oder Licht<br />

oder Schall ausgesendet wird. Typische Aktoren sind Elektromotoren, Bimetallaktoren,<br />

Lampen oder Lautsprecher. Die Ansteuerung der Komponenten erfolgt über spezielle<br />

Strom- und Spannungssignale, <strong>die</strong> im Rechner und der externen Beschaltung erzeugt werden,<br />

beispielsweise über Pulsbreitenmodulation. Smart Actuators erleichtern <strong>die</strong> Ansteuerung,<br />

indem sie <strong>die</strong> Eigenarten des Aktors in der Komponente kapseln und wie Smart<br />

Sensors eine einfachere digitale Schnittstelle anbieten.<br />

1<br />

Die Steuerung bezeichnet <strong>die</strong> gezielte Beeinussung eines Prozesses, ohne den tatsächlichen Zustand zu<br />

beobachten bzw. einzubeziehen.<br />

2<br />

Eine Regelung misst <strong>die</strong> Abweichung des gemessenen Ist-Werts vom Soll-Wert und beeinusst den Prozess<br />

so, dass der Ist-Wert stehts in Richtung des Soll-Werts führt. Durch <strong>die</strong> Einbeziehung der Beobachtung<br />

des Prozesses, können Störungen kompensiert werden, <strong>die</strong> bei einer Steuerung unbemerkt bleiben. Für<br />

Details zur Regelungstechnik siehe z. B. [Sch10a].<br />

3<br />

Die Überwachung <strong>die</strong>nt z. B. zur Meldung von unnormalem Prozessverhalten an einen Anlagenführer,<br />

damit <strong>die</strong>ser <strong>die</strong> Ursache der Störung suchen kann.<br />

7


2 Grundlagen und verwandte Arbeiten<br />

Die Verbindung zwischen Sensoren und Aktoren stellt das Rechnersystem her. Es verarbeitet<br />

Informationen über <strong>die</strong> Umwelt und steuert <strong>die</strong> Aktoren an, um bestimmte Eekte<br />

in der Umwelt zu erzielen. Da sich <strong>die</strong> Umwelt über <strong>die</strong> Zeit verändert, muss das Auslesen<br />

der Sensoren, <strong>die</strong> Verarbeitung und <strong>die</strong> Ansteuerung der Aktoren fortlaufend wiederholt<br />

werden.<br />

Oft verfügt das Rechnersystem auch über eine Mensch-Maschine-Schnittstelle, <strong>die</strong> über<br />

Wartungsfunktionalität hinausgeht. Typisch ist, dass der Mensch Aktionen oder Soll-Werte<br />

vorgibt, Entscheidungen in schwierigen kritischen Situationen trit oder dass ein Log des<br />

Prozessablaufs abgelegt wird, um später Ursachen für Probleme nden zu können. Da <strong>die</strong><br />

Echtzeitanforderungen meist unter den menschlichen Reaktionszeiten liegen, müssen <strong>die</strong><br />

Systeme jedoch immer zu einen hohen Grad autonom agieren können.<br />

2.1.3 Zeitliche Anforderungen<br />

Für ein Echtzeitsystem ist Rechtzeitigkeit (engl.: timeliness) entscheidend, d. h. alle Aktionen<br />

müssen zur jeweils richtigen Zeit ausgeführt werden. Diese zeitlichen Anforderungen<br />

werden durch <strong>die</strong> zu erfüllende Aufgabe und deren Dynamik bestimmt. Meist wird<br />

mit einem Echtzeitsystem ein physikalischer Prozess, an dem reale Objekte beteiligt sind,<br />

beobachtet und gezielt beeinusst. Da der Prozess den Naturgesetzen unterworfen ist, gibt<br />

<strong>die</strong>ser das Tempo vor, dem sich der Computer anpassen muss. Der Zustand der Objekte ändert<br />

sich als Funktion der realen Zeit (Echtzeit). Daher sind vom Computer beobachtete<br />

Zustände nur Momentaufnahmen der Realität, d. h. <strong>die</strong> Daten haben nur eine zeitlich<br />

begrenzte Gültigkeit. Beispielsweise kann der Beobachtung <strong>die</strong> Ampel zeigt grün nicht<br />

beliebig lange getraut werden.<br />

Bei einem Ereignis, also einer Änderung des Systemzustands, muss innerhalb einer<br />

beschränkten Zeitspanne <strong>die</strong> angemessene Reaktion erfolgen. Beim Ereignis <strong>die</strong> Ampel<br />

springt auf gelb muss in einem Auto entschieden werden, ob gebremst oder <strong>die</strong> Kreuzung<br />

noch überfahren werden soll. Die Entscheidung und <strong>die</strong> Reaktion müssen rechtzeitig erfolgen,<br />

damit das Auto noch vor der Kreuzung zum Stehen kommen kann. Wenn nicht<br />

rechtzeitig, also zur richtigen Zeit, reagiert wird, kann <strong>die</strong>s den gleichen Eekt haben wie<br />

keine oder <strong>die</strong> falsche Reaktion und zu einem Unfall führen. In einem Echtzeitsystem sind<br />

also <strong>die</strong> zeitlichen Anforderungen genau so wichtig, wie <strong>die</strong> funktionalen.<br />

2.1.3.1 Digitale Regelung<br />

In digitalen Regelkreisen ist ein wichtiger zeitlicher Parameter <strong>die</strong> Abtastperiode P s (engl.:<br />

sampling period). Sie gibt <strong>die</strong> Zeit zwischen zwei aufeinanderfolgenden Abtastungen der<br />

Regelgröÿe an, also <strong>die</strong> Zeit zwischen zwei nacheinander zur Regelung verwendeten Sensorwerten.<br />

Wie P s zu wählen ist, hängt von der Dynamik des zu regelnden Prozesses ab.<br />

Während bei einer Temperaturregelung einer Wohnraum-Heizung eine Abtastperiode von<br />

8


2.1 Echtzeitsysteme<br />

mehreren Sekunden bis Minuten ausreichen würde, muss für <strong>die</strong> Drehzahlregelung eines<br />

Motors etwa jede Millisekunde eine Drehzahlmessung durchgeführt werden, um ein neues<br />

Stellsignal zu berechnen. Nach [Sch10a, S. 98f.] sollte <strong>die</strong> Abtastfrequenz etwa 6- bis 10-<br />

mal so groÿ sein, wie <strong>die</strong> höchste im System vorkommende Frequenz. In [Kop97, S. 7]<br />

wird empfohlen, <strong>die</strong> Abtastperiode kleiner als ein Zehntel der Anstiegszeit der Sprungantwort<br />

des Systems zu wählen. Wird <strong>die</strong> Abtastperiode zu groÿ gewählt, ist ein schlechtes<br />

Führungsverhalten <strong>die</strong> Folge, d. h. <strong>die</strong> Regelung wird ihrer Aufgabe schlecht oder gar nicht<br />

gerecht. Kleinere Perioden erfordern leistungsstärkere Hardware und erhöhen damit <strong>die</strong><br />

Kosten des Systems.<br />

Ein weiterer Parameter ist <strong>die</strong> durch das Computersystem verursachte Verzögerung d comp<br />

zwischen der Beobachtung eines Ereignisses am Sensor und der Veranlassung der Reaktion<br />

am Aktor. Die Dierenz des gröÿten und kleinsten auftretenden Wertes von d comp nennt<br />

man Jitter von d comp . Für <strong>die</strong> Regelgüte ist es wichtig, dass der Jitter möglichst klein ist,<br />

d. h. d comp muss nach Möglichkeit konstant sein. Der Grund hierfür ist, dass Regelungsalgorithmen<br />

in der Lage sind, eine bekannte Verzögerung auszugleichen. Wenn <strong>die</strong> Verzögerung<br />

jedoch variiert und nicht genau bekannt ist, entstehen zusätzliche Messfehler im Ist-Wert,<br />

<strong>die</strong> sich negativ auf <strong>die</strong> Regelgüte auswirken (vgl. [Kop97, S. 9]).<br />

Um der Forderung nach hoher Verlässlichkeit im Echtzeitsystem gerecht zu werden, ist<br />

es auÿerdem nötig, Defekte so schnell wie möglich zu erkennen, um rechtzeitig darauf<br />

reagieren zu können und Funktionsausfälle zu verhindern. Daher ist auch <strong>die</strong> Fehlererkennungslatenz<br />

eine wichtige Gröÿe.<br />

2.1.3.2 Echtzeitplanung<br />

In komplexen Echtzeitsystemen fallen in der Regel gleichzeitig verschiedene Regelungsund<br />

Steuerungsaufgaben an. Sobald mehrere Aufgaben (engl.: tasks) auf einem Prozessor<br />

abgearbeitet werden sollen, muss <strong>die</strong> Vergabe der Rechenzeit geplant werden. Dabei<br />

müssen <strong>die</strong> zeitlichen Anforderungen der einzelnen Tasks eingehalten werden, um jederzeit<br />

<strong>die</strong> Echtzeitfähigkeit des Gesamtsystems garantieren zu können.<br />

Ein Task hat folgende Zeitparameter:<br />

• Die Bereitzeit r (engl.: ready time) bezeichnet den frühsten erlaubten Ausführungszeitpunkt.<br />

• Die Frist d (engl.: deadline) gibt den Zeitpunkt an, bis zu dem der Task vollständig<br />

ausgeführt worden sein muss.<br />

• Für periodisch wiederholte Tasks gibt <strong>die</strong> Periode p (engl.: period) <strong>die</strong> Zeit zwischen<br />

zwei aufeinanderfolgenden Bereitzeiten an.<br />

• Die tatsächliche Ausführung beginnt zur Startzeit s (engl.: start time).<br />

9


2 Grundlagen und verwandte Arbeiten<br />

• Die Abschlusszeit c (engl.: completion time) gibt an, wann <strong>die</strong> Ausführung tatsächlich<br />

beendet ist.<br />

• Die Zeitspanne, über <strong>die</strong> der Task tatsächlich auf dem Rechner ausgeführt wird,<br />

nennt man Ausführungszeit e (engl.: execution time). Sie kann durch Wartezeiten<br />

unterbrochen werden.<br />

Die zeitlichen Anforderungen werden über <strong>die</strong> Periode, <strong>die</strong> Bereitzeit, <strong>die</strong> Frist und <strong>die</strong> Ausführungszeit<br />

deniert. Ein Echtzeitplanungsalgorithmus muss anhand <strong>die</strong>ser Kenngröÿen<br />

einen überschneidungsfreien Ausführungsplan festlegen, der für jeden Task in jeder Periode<br />

garantiert, dass r ≤ s und c ≤ d. In [ZA95] oder [Hüs94] werden verschiedene<br />

Echtzeitplanungsverfahren detailliert vorgestellt und verglichen.<br />

Die echtzeitfähige Planung der lokalen Rechenzeit wird in <strong>die</strong>ser Diplomarbeit als gegeben<br />

angenommen. Die Formalismen der Taskplanung können jedoch auf das Planungsproblem<br />

für ein gemeinsam genutztes Netzwerk übertragen werden.<br />

2.1.4 Verlässlichkeitsanforderungen<br />

Verlässlichkeit (engl.: dependability) bezeichnet <strong>die</strong> Vertrauenswürdigkeit eines Systems,<br />

also inwieweit das an der Systemschnittstelle beobachtete Verhalten mit der Spezikation<br />

übereinstimmt. Eine Verletzung der Spezikation wird als Funktionsausfall (engl.: failure)<br />

bezeichnet.<br />

Die Verlässlichkeit eines Systems lässt sich über folgende Teilaspekte einschätzen (vgl.<br />

[ALRV00, Kop97]):<br />

• Überlebensfähigkeit (engl.: reliability) bezeichnet <strong>die</strong> Wahrscheinlichkeit, dass ein<br />

System den Dienst während einer Zeitspanne (t 0 , t) wie speziziert bereitstellt, d. h.<br />

es in der gesamten Zeit keinen Funktionsausfall gibt.<br />

• Betriebssicherheit (engl.: safety) ist <strong>die</strong> Überlebensfähigkeit bezüglich Funktionsausfällen,<br />

<strong>die</strong> eine Gefährdung für <strong>die</strong> Umwelt mit potentiell katastrophalen Folgen<br />

darstellen. Folglich entspricht sie der Wahrscheinlichkeit, dass während einer<br />

Zeitspanne (t 0 , t) kein gefährdender Funktionsausfall passiert.<br />

• Die Wartbarkeit (engl.: maintainability) ist ein Maÿ für <strong>die</strong> Zeit, <strong>die</strong> zur Reparatur<br />

oder Modikation eines Systems nötig ist.<br />

• Unter Verfügbarkeit (engl.: availability) versteht man <strong>die</strong> Wahrscheinlichkeit, das<br />

System zu einem Zeitpunkt funktionsfähig anzutreen.<br />

• Die Informationssicherheit (engl.: security) bezeichnet den Schutz des Systems<br />

vor unberechtigtem Zugri auf Informationen (Vertraulichkeit) sowie vor unberechtigter<br />

Beeinussung des Systems (Integritätssicherung).<br />

10


2.1 Echtzeitsysteme<br />

Je nach Anwendung können <strong>die</strong> einzelnen Attribute in verschiedenem Maÿe wichtig sein.<br />

In der Fabrikautomatisierung steht beispielsweise <strong>die</strong> Verfügbarkeit im Mittelpunkt, da<br />

still stehende Produktionsmaschinen keinen Gewinn erwirtschaften können. Ein Roboter,<br />

der auf eine unbemannte Weltraummission geschickt wird, ist hingegen auf <strong>die</strong> Überlebensfähigkeit<br />

hin optimiert, da Reparaturen am Gerät dort nicht möglich sind. Für sehr viele<br />

Echtzeitsysteme ist <strong>die</strong> Betriebssicherheit ein sehr wesentlicher Aspekt. Man nennt sie<br />

auch sicherheitskritische (engl.: safety-critical) Systeme. Eine Voraussetzung für hohe Betriebssicherheit,<br />

Überlebensfähigkeit oder Verfügbarkeit ist auch immer der Schutz vor<br />

nicht autorisierter Manipulation der Systeme (Integritätssicherung).<br />

Viele Fehlerursachen (engl.: faults), <strong>die</strong> zu Funktionsausfällen führen könnten, lassen sich<br />

während der Entwicklung und der Herstellung vermeiden, beispielsweise durch Qualitätskontrolle<br />

(vgl. [ALRV00]). Da sich aber nicht alle Fehlerursachen ausschlieÿen lassen, sind<br />

für verlässliche Systeme Fehlertoleranzmechanismen (engl.: fault tolerance) nötig. Sie ermöglichen<br />

es, Defekte in einem gewissen Umfang zu tolerieren, ohne dass es zu einem<br />

Funktionsausfall kommt. Alle Fehlertoleranzmechanismen basieren auf Redundanz. Man<br />

unterscheidet Informationsredundanz (fehlererkennende oder -korrigierende Codes), Komponentenredundanz<br />

(mehrfaches Vorhandensein von Komponenten gleicher Funktion) oder<br />

Zeitredundanz (mehrfaches Ausführen einer Aktion). Eine Möglichkeit zum Erreichen von<br />

Fehlertoleranz ist <strong>die</strong> explizite Fehlerbehandlung auf Basis einer Fehlererkennung, beispielsweise<br />

das erneute Versenden eines beschädigten Datenpakets (dynamische Redundanz).<br />

Die Alternative ist <strong>die</strong> Maskierung von Fehlern mit Hilfe statischer Redundanz, z. B. das<br />

mehrfache Verschicken desselben Pakets. In vielen sicherheitskritischen Systemen ist eine<br />

mögliche Fehlerbehandlung das Einnehmen eines sicheren Zustands, der eine Gefährdung<br />

der Umgebung ausschlieÿt (fail-safe system). Existiert kein sicherer Zustand, muss das<br />

System seinen Dienst auch bei einem Funktionsausfall mit einer gewissen minimalen Güte<br />

aufrecht erhalten (fail-operational system).<br />

Zur Spezikation eines Echtzeitsystems gehört neben funktionalen und zeitlichen Aspekten<br />

auch eine Fehlerhypothese [Kop04]. Diese umfasst <strong>die</strong> Annahmen zur Art und Anzahl<br />

der Fehler, <strong>die</strong> das System tolerieren können muss. Sie ist Basis für <strong>die</strong> Wahl der Fehlertoleranzmechanismen<br />

im Systemdesign und unverzichtbar für <strong>die</strong> Vali<strong>die</strong>rung und eventuell<br />

angestrebte Zertizierung des Systems. Es ist auch wichtig zu überprüfen, inwieweit <strong>die</strong><br />

getroenen Annahmen mit der Realität übereinstimmen. Aber auch für Fehlersituationen,<br />

<strong>die</strong> nicht von der Fehlerhypothese abgedeckt werden, sollte es bei sicherheitskritischen<br />

Systemen eine Behandlungsstrategie (never-give-up strategy) geben.<br />

2.1.5 Besonderheiten verteilter Echtzeitsysteme<br />

Ein verteiltes System besteht aus mehreren vernetzten Computern auch Knoten (engl.:<br />

nodes) genannt <strong>die</strong> eine gemeinsame Aufgabe im Zusammenspiel erfüllen. Die Computer<br />

tauschen dabei mittels Nachrichten Informationen aus, <strong>die</strong> über das Netzwerk verschickt<br />

11


2 Grundlagen und verwandte Arbeiten<br />

(a) Bustopologie: Verzögerungen im Sendeknoten<br />

durch Zugriskonikte und evt. daraus<br />

folgender Stauung.<br />

(b) Sterntopologie: Verzögerungen<br />

im Zentrum durch Stauung an der<br />

Verbindung zum Empfänger.<br />

Knoten<br />

Verkabelung<br />

Warteschlange<br />

Vermittlungsknoten<br />

(c) Legende<br />

Abbildung 2.2: Netzwerktopologien. In den abgebildeten Sende-<br />

Warteschlangen kann es zu problematischen Verzögerungen kommen.<br />

werden. Hierbei entstehen zusätzliche Verzögerungen, <strong>die</strong> bei der Entwicklung von Echtzeitsystemen<br />

eine Rolle spielen.<br />

Wenn, wie im Normalfall, keine Punkt-zu-Punkt-Verbindungen eingesetzt werden, gibt es<br />

gemeinsam genutzte Ressourcen, für <strong>die</strong> der Zugri geregelt werden muss, um Störungen<br />

der Kommunikation durch Sendekonikte zu vermeiden. Somit verbringt eine Nachricht<br />

gegebenenfalls Zeit in einer Warteschlange, bevor sie versendet werden kann, beispielsweise<br />

wenn im Moment eine Nachricht eines anderen Knotens übertragen wird. Abbildung 2.2<br />

veranschaulicht, wo in typischen Topologien kabelgebundener Netze schwer vorhersagbare<br />

Verzögerungen auftreten. Wenn <strong>die</strong> maximale Zeit in einer Warteschlange nicht begrenzt<br />

ist, ist <strong>die</strong> Einhaltung der Echtzeitanforderungen in Gefahr es drohen Zeitfehler. Daher<br />

müssen für Echtzeitsysteme Strategien entwickelt werden, mit denen <strong>die</strong> Auslieferung von<br />

Nachrichten in beschränkter Zeit garantiert werden kann, auch wenn das Netz stark ausgelastet<br />

ist. Die Abschnitte 2.3 und 2.4 betrachten <strong>die</strong> Problematik bei CAN und Ethernet.<br />

Verglichen mit rechnerinterner Kommunikation kommt es beim Datentransfer über Netzwerke<br />

auch deutlich häuger zu Störungen, <strong>die</strong> sich als Wertfehler in den Daten äuÿern.<br />

Über fehlererkennende Codes werden <strong>die</strong>se auf Auslassungsfehler abgebildet, <strong>die</strong> im<br />

Echtzeitsystem unbehandelt wiederum zu Zeitfehlern führen.<br />

Eine weitere Eigenschaft von verteilten Systemen ist das Fehlen einer gemeinsamen Zeitbasis,<br />

bzw. <strong>die</strong> Notwendigkeit der Uhrensynchronisation, wenn eine globale Zeit gebraucht<br />

wird. Ursächlich hierfür sind Unterschiede in den Schwingfrequenzen von Oszillatoren, <strong>die</strong><br />

auch initial gleich gestellte Uhren auseinander driften lassen.<br />

12


2.2 Publish/Subscribe <strong>Middleware</strong><br />

2.2 Publish/Subscribe <strong>Middleware</strong><br />

Bei Publish/Subscribe handelt es sich um ein Kommunikationsparadigma mit folgenden<br />

Eigenschaften:<br />

• Die Kommunikation erfolgt anonym. Die Produzenten, Publisher genannt, veröffentlichen<br />

Informationen in Form von Events (engl. für: Ereignisse), ohne <strong>die</strong> Konsumenten<br />

(Subscriber) kennen oder adressieren zu müssen. Stattdessen wird jedem<br />

Event ein Betre (engl.: subject) zugeordnet. Über logische Kanäle wird ein veröffentlichtes<br />

Event an <strong>die</strong> Subscriber weitergeleitet, <strong>die</strong> das Subject abonniert haben.<br />

Optional lassen sich <strong>die</strong> Events auch feingranularer auf Basis des Inhalts ltern.<br />

• Gruppenkommunikation wird unterstützt, d. h. es kann jeweils mehrere Publisher<br />

und Subscriber mit demselben Subject geben, sowohl auf einem Rechner als auch<br />

verteilt über mehrere Computer.<br />

• Das Paradigma unterstützt spontane Kommunikation, d. h. <strong>die</strong> Kommunikationsgruppen<br />

bestimmen sich erst zur Laufzeit, da jederzeit Publisher und Subscriber<br />

hinzukommen und wegfallen können.<br />

In den folgenden Abschnitten werden <strong>Middleware</strong>s vorgestellt, <strong>die</strong> <strong>die</strong>ses Paradigma umsetzen.<br />

Zuerst wird auf <strong>die</strong> <strong>Middleware</strong> <strong>FAMOUSO</strong> eingegangen, in der <strong>die</strong> Echtzeitkanäle<br />

implementiert werden sollen. Im darauf folgenden Abschnitt 2.2.2 werden kurz einige andere<br />

<strong>Middleware</strong>s diskutiert, <strong>die</strong> sich in <strong>die</strong> Kategorie Echtzeit einordnen.<br />

2.2.1 <strong>FAMOUSO</strong><br />

<strong>FAMOUSO</strong> (Family of Adaptive <strong>Middleware</strong> for autonomOUs Sentient Objects, [Sch09,<br />

Sch]) ist eine adaptierbare Publish/Subscribe-<strong>Middleware</strong>. Sie bietet eine einheitliche Programmierschnittstelle,<br />

<strong>die</strong> in verschiedenen Programmiersprachen und Ingenieurtools verwendbar<br />

ist. Es werden verschiedene Netzwerke und Plattformen unterstützt. <strong>FAMOUSO</strong><br />

ist dank seiner Portabilität und umfangreichen Kongurationsmöglichkeiten zur Compile-<br />

Zeit auch auf stark ressourcenbeschränkten eingebetteten Systemen lauähig.<br />

In <strong>FAMOUSO</strong> können Events neben den reinen Nutzdaten auch optional Attribute enthalten,<br />

<strong>die</strong> als Metainformationen mit publiziert werden. Sie lassen sich beispielsweise zur<br />

Filterung bei den Subscribern nutzen.<br />

<strong>FAMOUSO</strong> erlaubt <strong>die</strong> Spezikation von individuellen Quality-of-Service-Anforderungen<br />

für jeden Publisher und Subscriber. Die Multi-Level Composability Check Architecture<br />

[SL09] testet <strong>die</strong>se Anforderungen zur Design-, Compile- und Laufzeit gegen <strong>die</strong><br />

Möglichkeiten der beteiligten Netzwerke. Für <strong>die</strong> Überprüfungen zur Laufzeit kommt<br />

ein Management-Kanal zum Einsatz, über den <strong>die</strong> QoS-Anforderungen publiziert werden,<br />

auch über Netzwerkgrenzen (<strong>FAMOUSO</strong>-Gateways) hinweg. Dadurch ergibt sich <strong>die</strong><br />

13


2 Grundlagen und verwandte Arbeiten<br />

Möglichkeit, QoS-Anforderungen global auf Erfüllbarkeit zu überprüfen und gegebenenfalls<br />

durchzusetzen. Ein Konzept zur Durchsetzung strikter QoS-Anforderungen, wie sie<br />

in harten Echtzeitsystemen vorkommen, wird in Kapitel 3 vorgestellt.<br />

2.2.2 Existierende echtzeitfähige <strong>Middleware</strong>s<br />

Betrachtet man existierende <strong>Middleware</strong>s, <strong>die</strong> sich als echtzeitfähig bezeichnen, ist eine<br />

wesentliche Schwäche festzustellen. Keine der untersuchten <strong>Middleware</strong>s bietet Garantien<br />

für <strong>die</strong> Durchsetzung von Echtzeitanforderungen im verteilten System. Es werden zwar<br />

Fragen des lokalen Scheduling von Echtzeitprozessen thematisiert, <strong>die</strong> in Abschnitt 2.1.5<br />

angesprochene Problematik eines echtzeitfähigen Netzwerkes bleibt jedoch auÿen vor. In<br />

[HLS97, GPS04] werden für den Real-Time CORBA Event bzw. Notication Service ausschlieÿlich<br />

Testergebnisse gezeigt, bei denen keine Datenübertragung über ein Netzwerk<br />

nötig ist. NDDS [PcS94] und Real-Time Publish/Subscribe (RTPS) nach Rajkumar et<br />

al. [RGS95] verwenden jeweils UDP/IP auf Ethernet und setzen eine sehr niedrige Netzwerkauslastung<br />

voraus. Wie in Abschnitt 2.4 genauer beschrieben wird, können bei Zugriskonikten<br />

im Ethernet unvorhersagbare Latenzen auftreten, welche <strong>die</strong> Echtzeitfähigkeit<br />

gefährden. Da <strong>die</strong> Verzögerungen stark von der Netzwerklast abhängen, muss auÿerdem<br />

bei jeder Erweiterung des Systems das gesamte Systemverhalten neu evaluiert werden.<br />

Während bei NDDS und Real-Time CORBA zumindest lokale Überprüfungen zur Einhaltung<br />

von Quality-of-Service-Anforderungen möglich sind, erlaubt RTPS nicht einmal <strong>die</strong><br />

Spezikation solcher Anforderungen.<br />

Aufgrund der angesprochenen Dezite eignen sich <strong>die</strong> untersuchten <strong>Middleware</strong>s bei hohen<br />

Verlässlichkeitsanforderungen allenfalls zur lokalen Inter-Prozess-Kommunikation, jedoch<br />

nicht für verteilte Echtzeitsysteme. In den folgenden Abschnitten wird betrachtet, wie<br />

echtzeitfähige Kommunikation über CAN und Ethernet möglich ist.<br />

2.3 Controller Area Network<br />

Controller Area Network (CAN) bezeichnet ein serielles Kommunikationsprotokoll, das<br />

Flexibilität, gute Verlässlichkeitseigenschaften und einen vorhersagbaren Netzzugri bietet.<br />

Es wird vor allem als Feldbussystem in der Automobil-, Automatisierungs- und Medizintechnik<br />

eingesetzt.<br />

Im folgenden Abschnitt wird zunächst das CAN-Protokoll vorgestellt und seine<br />

Tauglichkeit für harte Echtzeitanforderungen eingeschätzt. Anschlieÿend werden verschiedene<br />

Ansätze diskutiert, <strong>die</strong> auf dem CAN-Protokoll aufbauen und konkrete zeitliche<br />

Garantien bieten.<br />

14


2.3 Controller Area Network<br />

2.3.1 Basisprotokoll<br />

Das CAN Kommunikationsprotokoll [Rob91] wurde in den 1980er-Jahren von der Robert<br />

Bosch GmbH entwickelt und Anfang der 90er-Jahre als ISO-Norm 11898 standardisiert.<br />

Es umfasst <strong>die</strong> Denition der physikalischen Schicht und der Datensicherungsschicht nach<br />

dem ISO/OSI-Referenzmodell.<br />

Alle Netzwerkknoten werden bei CAN an einen seriellen Broadcast-Bus angeschlossen, der<br />

je nach Länge mit Datenübertragungsraten bis zu 1 Mbit/s arbeiten kann. Die Kommunikation<br />

erfolgt in Form von Nachrichten, <strong>die</strong> jeweils 0-8 Byte Nutzdaten transportieren können.<br />

Jede Nachricht wird mit einer ID versehen, <strong>die</strong> 11 Bit (Standardformat) bzw. 29 Bit (erweitertes<br />

Format) lang ist. Eine ID darf nicht von mehreren Knoten verwendet werden 4 .<br />

Die ID <strong>die</strong>nt zum einen als Nachrichtenpriorität und zum anderen als Kennzeichnung des<br />

Nachrichteninhalts. Die ID kann verwendet werden, um eingehende Nachrichten schon im<br />

CAN-Controller zu ltern und somit den Host-Prozessor zu entlasten. CAN unterscheidet<br />

vier verschiedene Frame-Typen: (1) Data-Frames werden zur Nachrichtenübertragung<br />

verwendet. An ihrem Anfang steht das Arbitrierungsfeld, in dem <strong>die</strong> Nachrichten-ID übertragen<br />

wird. Es folgen unter anderem <strong>die</strong> Nachrichten-Nutzlast und ein CRC. (2) Remote-<br />

Transmission-Request-Frames ermöglichen es, das Senden einer Nachricht bei einem anderen<br />

Knoten anzufragen. (3) Error-Frames werden verwendet, um anderen Knoten erkannte<br />

Fehler zu signalisieren. (4) Overload-Frames verzögern <strong>die</strong> Übertragung und können zur<br />

Flusskontrolle eingesetzt werden. Auf (2) und (4) wird hier nicht weiter eingegangen, da<br />

<strong>die</strong>se Features in <strong>die</strong>ser Arbeit nicht verwendet werden.<br />

Physikalische Schicht Die physikalische Schicht ist so gestaltet, dass jedes Bit durch den<br />

gesamten Bus propagiert wird, bevor mit der Übertragung des nächsten Bits begonnen<br />

wird. Die Bits werden durch rezessive (Bitwert 1) und dominante (Bitwert 0) Signalpegel<br />

repräsentiert. Genau dann, wenn mindestens ein Knoten einen dominanten Pegel sendet,<br />

stellen alle Knoten einen dominanten Pegel fest. Folglich hat der Bus nur dann einen<br />

rezessiven Pegel, wenn kein Knoten einen dominanten Pegel sendet. Der Bus wirkt also<br />

wie ein logisches UND-Gatter, bei dem jeder Knoten mit der Sendeeinheit an einen Eingang<br />

und mit der Empfangseinheit an den Ausgang gekoppelt ist, so dass alle Knoten für<br />

jedes Bit eine konsistente Sicht des Buszustandes haben. Diese Eigenschaft wird bei der<br />

Arbitrierung und zur Erkennung und Signalisierung von Fehlern ausgenutzt.<br />

Arbitrierung Die Arbitrierung, also <strong>die</strong> Zuteilung des Netzzugris, basiert auf dem<br />

Carrier-Sense-Multiple-Access-Prinzip (CSMA). Ein Knoten, der eine Nachricht senden<br />

will, horcht zunächst auf dem Übertragungsmedium, ob gerade ein anderer Knoten sendet.<br />

4<br />

Dies stellt sicher, dass nie zwei Knoten gleichzeitig Nachrichten mit derselben ID aber verschiedenem<br />

Inhalt senden. Letzteres ist nach dem CAN-Standard verboten.<br />

15


2 Grundlagen und verwandte Arbeiten<br />

Wenn das der Fall ist, wartet er bis <strong>die</strong> laufende Übertragung abgeschlossen ist. Anderenfalls<br />

beginnt er sofort zu senden. Wenn zwei oder mehr Knoten gleichzeitig zu senden<br />

beginnen, kommt es zu einer Kollision. Diese wird während der bitweisen Übertragung<br />

der Nachrichten-IDs aufgelöst. Dazu beobachtet jeder Sender im Arbitrierungsprozess<br />

den Buszustand und vergleicht <strong>die</strong>sen jeweils mit dem von ihm gesendeten Bit. Wird<br />

ein rezessiver Pegel gesendet und ein dominanter beobachtet, steigt der Knoten aus der<br />

Arbitrierung aus, da mindestens eine Nachricht mit höherer Priorität (niedrigerer Zahlenwert<br />

der ID) sendebereit ist. Da <strong>die</strong> IDs eindeutig sein müssen, gewinnt <strong>die</strong> Arbitrierung<br />

immer genau ein Knoten: der mit der höchstprioren Nachricht. Während der restliche<br />

Data-Frame <strong>die</strong>ser Nachricht übertragen wird, warten <strong>die</strong> anderen Knoten auf <strong>die</strong> nächste<br />

Arbitrierungsphase.<br />

Der CAN-Bus bietet auf <strong>die</strong>se Weise eine sehr eziente, vorhersagbare Netzzuteilung,<br />

<strong>die</strong> einem verteilten prioritätsbasierten nicht-präemptiven Scheduling gleichkommt. Ohne<br />

weitere Annahmen kann eine beschränkte Latenz jedoch nur für <strong>die</strong> Nachricht mit der höchsten<br />

Priorität garantiert werden. Da <strong>die</strong>s nicht ausreicht, sobald mehrere Nachrichten aus<br />

verschiedenen Quellen Echtzeitgarantien benötigen, muss <strong>die</strong> Versenderate der Nachrichten<br />

eingeschränkt werden. Dann können auch für Nachrichten mit niedrigeren Prioritäten<br />

zeitliche Garantien angegeben werden. Siehe hierzu Abschnitt 2.3.2 bis 2.3.5.<br />

Fehlererkennung und -behandlung Das CAN-Protokoll nutzt <strong>die</strong> von der physikalischen<br />

Schicht bereitgestellte konsistente Sicht aller Knoten, um eine schnelle Erkennung und<br />

Signalisierung von Fehler zu ermöglichen. So überwacht jeder Sender bei der Übertragung<br />

einer Nachricht, ob der auf dem Bus beobachtete Bitwert dem gesendeten entspricht.<br />

Neben der Ausnutzung im Arbitrierungsmechanismus lassen sich so auch Wertfehler bei<br />

der Datenübertragung schon beim Sender erkennen. Zusätzlich enthält jede Nachricht<br />

einen Cyclic-Redundancy-Check-Code (CRC) über den der Sender falsch empfangene<br />

Nachrichten mit sehr hoher Wahrscheinlichkeit erkennen kann. Wird beim Sender oder<br />

einem Empfänger ein Fehler festgestellt, wird <strong>die</strong>ser sofort signalisiert, indem ein Error-<br />

Frame gesendet wird. Dieser kann jederzeit von allen Knoten erkannt werden, da er aus<br />

mehr als fünf aufeinanderfolgenden dominanten Signalpegeln besteht, und somit <strong>die</strong> sonst<br />

geltende Bit-Stung-Regel verletzt. Diese schreibt vor, nach fünf gleichen Pegeln einen<br />

komplementären Signalpegel zu senden. Bei einem Fehler verwerfen alle Empfänger ihren<br />

Empfangspuer und der Sender initiiert automatisch einen erneuten Übertragungsversuch,<br />

ohne Zusatzaufwand für den Host-Prozessor. Fehlerzustände sind auch dann gegeben, wenn<br />

<strong>die</strong> formale Frame-Struktur verletzt wird oder zu einem Daten-Frame kein positives Acknowledge<br />

gegeben wird, also kein Knoten den Frame richtig empfangen hat.<br />

Durch das synchrone Auslesen der einzelnen Bits an allen Stationen und <strong>die</strong> konsistente<br />

Fehlersignalisierung und -behandlung wird eine Nachricht in allen intakten Knoten zeitsynchron<br />

ausgeliefert. In seltenen Fehlerfällen kann es hierbei zu Inkonsistenzen kommen.<br />

16


2.3 Controller Area Network<br />

In [KL99] wird jedoch beschrieben, wie auch für <strong>die</strong>se Fälle ein ezienter atomarer Multicast<br />

garantiert werden kann.<br />

Dauerhaft defekte Knoten werden im CAN-Protokoll über lokale Fehlerzähler erkannt und<br />

vom Bus genommen. Bis <strong>die</strong>ser Defekt erkannt ist kann der Knoten <strong>die</strong> Kommunikation<br />

über den Bus jedoch unmöglich machen, z. B. wenn ein Knoten ununterbrochen sendet und<br />

so Kommunikation anderer Knoten komplett unterbindet (Babbling-Idiot-Fehler). Durch<br />

einen Senderfehler kann ein mit 1 Mbit/s betriebener CAN-Bus beispielsweise bis zu 2,4 ms<br />

unbenutzbar sein (vgl. [RV95]).<br />

CAN bietet Dank der umfangreichen Fehlererkennungsmaÿnahmen und der automatischen<br />

Sendewiederholung im Fehlerfall einen sehr verlässlichen Datentransfer. Für harte Echtzeitsysteme<br />

ist Zuverlässigkeit nur so lange nützlich, wie alle wichtigen zeitlichen Anforderungen<br />

garantiert werden können. Beim Entwurf solcher Systeme müssen daher <strong>die</strong> verschiedenen<br />

Fehlerfälle und <strong>die</strong> daraus resultierenden Konsequenzen für <strong>die</strong> Echtzeitkommunikation<br />

und das gesamte System gründlich bedacht werden.<br />

2.3.2 Einplanbarkeitsanalyse<br />

Der im vorigen Abschnitt beschriebene, auf statischen Prioritäten basierende, Arbitrierungsmechanismus<br />

des CAN-Protokolls bietet eine vorhersagbare Auösung von Kollisionen.<br />

Das heiÿt, wenn <strong>die</strong> Nachrichtenmenge mit ihren Prioritäten und zeitlichen Parametern<br />

bekannt ist, können <strong>die</strong> Netzzuteilung und <strong>die</strong> daraus resultierenden maximalen<br />

Verzögerungen analysiert werden, um zu überprüfen, ob <strong>die</strong> Einhaltung der Echtzeitanforderungen<br />

garantiert werden kann. Um <strong>die</strong> maximale Latenz auch für niedrige Prioritäten<br />

zu beschränken, muss für alle höher priorisierten Nachrichten eine Periode bzw.<br />

minimale Zeit zwischen dem Auftreten zweier Nachrichten angegeben werden können. Umfangreiche<br />

Ausführungen und Literaturhinweise zu der üblichen Einplanbarkeitsanalyse<br />

ndet man in [DB07]. Diese Arbeit korrigiert einen Fehler in der lange eingesetzten Analyse<br />

nach [Tin94, TB94], durch den einige nicht planbare Systeme als planbar eingestuft<br />

werden. Für harte Echtzeitbedingungen muss bei der Analyse ein angemessenes Fehlermodell<br />

berücksichtigt werden.<br />

Für <strong>die</strong> Planbarkeit einer Nachrichtenmenge ist <strong>die</strong> Wahl der Prioritäten von entscheidender<br />

Bedeutung. Bei den meisten Anwendungen müssen Deadlines bzw. Perioden auf<br />

Prioritäten abgebildet werden. Hierbei ist zu beachten, dass eine Prioritätenzuordnung<br />

nach Deadline-Monotonic (je früher <strong>die</strong> Deadline, um so höher <strong>die</strong> Priorität) nicht optimal<br />

ist, d. h. insbesondere bei starker Auslastung nicht immer <strong>die</strong> beste Prioritätszuordnung<br />

liefert. Das liegt daran, dass Deadline-Monotonic nur für präemptive Tasks optimal ist (vgl.<br />

[GVC96]), <strong>die</strong> einzelnen Nachrichten bei CAN jedoch nicht unterbrechbar übertragen werden.<br />

In [DB07] wird ein Algorithmus angegeben, um eine optimale Prioritätszuordnung zu<br />

nden.<br />

17


2 Grundlagen und verwandte Arbeiten<br />

Die Prioritätszuteilung und Einplanbarkeitsanalyse zur Design-Zeit hat den Vorteil, dass<br />

der Overhead zur Laufzeit minimal ist. Andererseits ist <strong>die</strong>se Art, Echtzeitgarantien bereitzustellen,<br />

schwer zu überschauen. Der Entwickler muss eine recht komplizierte Analyse<br />

verstehen und anwenden oder ist auf unter Umständen teure Design-Tools angewiesen.<br />

Auÿerdem sind Erweiterungen oder Änderungen im System aufwendig, da <strong>die</strong> Einplanbarkeitsanalyse<br />

erneut durchgeführt und eventuell Prioritäten geändert werden müssen.<br />

Ein weiterer Nachteil, insbesondere für Regelungsalgorithmen, ist der im Vergleich zu<br />

einem zeitgesteuerten Netzzugri sehr hohe Jitter, da das Versenden einer Nachricht durch<br />

andere Nachrichten stark verzögert werden kann. Mit dem höheren Jitter geht auch eine<br />

höhere Fehlererkennungslatenz einher.<br />

2.3.3 Kalender und dynamische Prioritäten<br />

In [LKJ99, LK98] wird ein Ansatz beschrieben, der auf der Arbitrierung des CAN-<br />

Protokolls aufbaut. Der Entwickler vergibt keine statischen Prioritäten, sondern ordnet<br />

eine Nachricht einer Klasse zu: harte Echtzeit, weiche Echtzeit oder nicht-Echtzeit. Für<br />

harte Echtzeitnachrichten wird <strong>die</strong> Einplanbarkeit über einen Kalender (TDMA, Time<br />

Division Multiple Access) sichergestellt. Durch <strong>die</strong> Festlegung der Sendezeitpunkte werden<br />

Konikte mit anderen harten Echtzeitnachrichten ausgeschlossen und sowohl <strong>die</strong><br />

Pünktlichkeit als auch ein geringer Jitter garantiert. Der Preis hierfür ist jedoch, dass<br />

durch Uhrensynchronisation eine gemeinsame Zeitbasis etabliert werden muss. Die weichen<br />

Echtzeit-Nachrichten sind niedriger priorisiert und werden ohne zeitliche Garantien<br />

zwischen den harten Echtzeitnachrichten übertragen. Es werden jedoch so viele Deadlines<br />

eingehalten, wie <strong>die</strong> Datenrate erlaubt, denn für <strong>die</strong>se Nachrichten wird ein verteiltes<br />

Earliest-Deadline-First-Scheduling durchgesetzt. Dazu wird der Spielraum, also <strong>die</strong> noch<br />

verbleibende Zeit bis zur Deadline, in der Nachrichtenpriorität co<strong>die</strong>rt. Da sich der Spielraum<br />

über <strong>die</strong> Zeit verändert, ist eine regelmäÿige Anpassung der Priorität nötig. Nicht-<br />

Echtzeit-Nachrichten haben <strong>die</strong> niedrigste Priorität und werden somit nur gesendet, wenn<br />

sich weder harte noch weiche Echtzeit-Nachrichten an der Arbitrierung beteiligen.<br />

Das Konzept bietet groÿe Flexibilität. Es liefert Garantien für harte Echtzeit-Nachrichten.<br />

Die ungenutzten Netzressourcen lassen sich auÿerdem ezient für sporadische Nachrichten<br />

mit weichen Echtzeitanforderungen nutzen. Nachteilig ist, dass ein groÿer Overhead zur<br />

Laufzeit anfällt, denn <strong>die</strong> periodische Aktualisierung der Nachrichten im Sendepuer muss<br />

auf Interrupt-Basis in Software realisiert werden, da <strong>die</strong> Hardwareunterstützung hierfür<br />

fehlt. Bei der Aktualisierung der Priorität kann es auÿerdem zu einer Verzögerung der<br />

Nachricht kommen, wenn hierbei ein sonst gewonnener Arbitrierungsprozess verpasst wird.<br />

Auÿerdem sind zur Laufzeit keine Änderungen im Kalender für harte Echtzeit-Nachrichten<br />

möglich, da <strong>die</strong> nebenläuge Reservierung eines Zeitschlitzes durch mehrere Knoten nicht<br />

ausgeschlossen werden kann.<br />

18


2.3 Controller Area Network<br />

2.3.4 TTCAN<br />

TTCAN (Time-Triggered CAN, vgl. [FMD + 00]) erweitert das CAN-Protokoll um <strong>die</strong><br />

Möglichkeit zur zeitgesteuerten Kommunikation. Über eine periodisch versendete Referenznachricht<br />

eines replizierbaren Zeit-Masters wird eine globale Zeit etabliert. Sie markiert<br />

auÿerdem jeweils den Anfang eines Basis-Zyklus'. Der Basis-Zyklus ist in Zeitfenster unterteilt,<br />

deren Länge und Verwendung zur Design-Zeit festgelegt werden. Ein Zeitfenster<br />

kann exklusiv einem Knoten für periodische Kommunikation zugeteilt werden. Alternativ<br />

kann es als Arbitrierungsfenster für spontane Nachrichten genutzt werden. Hierbei<br />

greift <strong>die</strong> prioritätsbasierte Standard-Arbitrierung von CAN. Die Slots können auch über<br />

mehrere aufeinanderfolgende Basis-Zyklen unterschiedlich vergeben werden. Diese Zyklen<br />

bilden dann zusammen einen Matrix-Zyklus. Die Länge der Zeitfenster innerhalb der Basis-<br />

Zyklen lässt sich aber nicht variieren.<br />

TTCAN erlaubt sowohl zeitgesteuerte Kommunikation mit geringem Jitter für harte<br />

Echtzeit, als auch sporadische prioritätsbasierte Nachrichten, <strong>die</strong> sich für weiche Echtzeit<br />

und Nicht-Echtzeit einsetzen lassen. Die zeitgesteuerte Kommunikation ist jedoch statisch<br />

geplant und nicht zur Laufzeit änderbar.<br />

2.3.5 FTT-CAN<br />

FTT-CAN (Flexible Time-Triggered CAN, vgl. [APF02]) ermöglicht zeitgesteuerte<br />

Echtzeitkommunikation mit dynamischem Scheduling. Die Zeit wird in aufeinanderfolgende<br />

gleichlange Elementarzyklen unterteilt. Diese bestehen aus einem synchronen Zeitfenster<br />

und einem zeitlich isolierten asynchronen Fenster. Der synchrone Teil ist für zeitgesteuerte<br />

periodische Kommunikation gedacht. Ein replizierbarer Master-Knoten kennt<br />

<strong>die</strong> Menge aller synchronen Nachrichtenströme inklusive ihrer Zeitanforderungen. Auf Basis<br />

<strong>die</strong>ses Wissens plant er für jeden Elementarzyklus <strong>die</strong> zu versendenden synchronen<br />

Nachrichten und löst deren Versand mit einer Trigger-Nachricht aus. Diese wird auch zur<br />

Synchronisation verwendet, indem sie den Beginn eines neuen Elementarzyklus' markiert.<br />

Die Zeitanforderungen eines Nachrichtenstroms lassen sich zur Laufzeit ändern. Eine Änderung<br />

wird nur zugelassen, wenn sie ohne Verletzung von zeitlichen Garantien einplanbar<br />

ist. Im asynchronen Teil wird wie bei den Arbitrierungsfenstern in TTCAN auf <strong>die</strong> prioritätsbasierte<br />

Arbitrierung von CAN gesetzt.<br />

FTT-CAN bietet zeitgesteuerte und prioritätsbasierte Kommunikation, <strong>die</strong> zur Laufzeit<br />

geplant wird. Jedoch wird <strong>die</strong> synchrone Kommunikation nicht durch den Fortschritt<br />

der Zeit, sondern durch den Master getriggert. Durch das Verwenden einer gemeinsamen<br />

Trigger-Nachricht für alle Nachrichten eines synchronen Fensters und <strong>die</strong> Ausnutzung der<br />

prioritätsbasierten Arbitrierung zur Lösung des Zugriskonikts, kommt es zu deutlich<br />

gröÿerem Jitter als bei direkter zeitgesteuerter Kommunikation. Ein weiterer Nachteil ist,<br />

dass <strong>die</strong> Perioden der synchronen Nachrichten nur als Vielfache der Elementarzykluslänge<br />

gewählt werden können.<br />

19


2 Grundlagen und verwandte Arbeiten<br />

Lösung Prinzip Jitter Planung<br />

(1) Einplanbarkeitsanalyse Prioritäten groÿ statisch<br />

(2) Kalender und dyn. Prio. TDMA gering statisch<br />

(3) TTCAN TDMA gering statisch<br />

(4) FTT-CAN Master/Slave, Prioritäten mittel dynamisch<br />

Tabelle 2.1: Vergleich von Lösungen für harte Echtzeitgarantien bei CAN<br />

2.3.6 Zusammenfassung<br />

Es wird deutlich, dass sich <strong>die</strong> deterministische Arbitrierung des CAN-Basisprotokolls<br />

gut ausnutzen lässt, um <strong>die</strong> eziente Durchsetzung verschiedener zeitlicher Anforderungen<br />

garantieren zu können. Jedoch eignet sich keine der untersuchten Lösungen für den<br />

Einsatz in <strong>FAMOUSO</strong>. Die Tabelle 2.1 vergleicht <strong>die</strong> Ansätze bezüglich harter Echtzeitgarantien.<br />

Die Ausnutzung der prioritätsbasiertenen Arbitrierung in (1) und (4) führt zu<br />

einem hohen Jitter, der für Regelungsanwendungen unerwünscht ist, und zu einer höheren<br />

Fehlererkennungslatenz. Bei (2) und (3) ist <strong>die</strong> Etablierung von harten Echtzeitgarantien<br />

zur Laufzeit nicht möglich. Daher wird in Kapitel 3 eine eigene Lösung entwickelt.<br />

2.4 Ethernet<br />

Bei Ethernet handelt es sich um <strong>die</strong> momentan am weitesten verbreitete Technologie für<br />

lokale Netzwerke. Obwohl es keine zeitlich vorhersagbare Kommunikation bietet, wird<br />

Ethernet nicht selten für Echtzeitaufgaben eingesetzt. Motivation hierfür sind vor allem<br />

<strong>die</strong> geringen Kosten für <strong>die</strong> Ethernet-Hardware, <strong>die</strong> hohen Datenübertragungsraten oder<br />

<strong>die</strong> leichte Anbindbarkeit an das Internet und andere IT-Infrastrukturen.<br />

Der folgende Abschnitt gibt eine Einführung in das Ethernet-Protokoll. In den darauf<br />

folgenden Abschnitten werden verschiedene existierende Ansätze diskutiert, <strong>die</strong> Ethernet<br />

echtzeittauglich machen sollen. Dabei werden nur Lösungen betrachtet, <strong>die</strong> keine modi-<br />

zierte Hardware benötigen, um <strong>die</strong> <strong>Middleware</strong> nicht von der Verfügbarkeit spezieller<br />

Hardware abhängig zu machen.<br />

2.4.1 Basisprotokoll<br />

Der Begri Ethernet bezeichnet ein im Standard IEEE 802.3 [iee08] deniertes Kommunikationsprotokoll<br />

in der Datensicherungsschicht nach dem ISO/OSI-Referenzmodell. Die<br />

Spezikation umfasst auÿerdem verschiedene physikalische Schichten mit Übertragungsraten<br />

im Bereich von 1 Mbit/s bis 10 Gbit/s für Twisted-Pair-, Koaxial- und Glasfaserkabel.<br />

Es werden zwei Betriebsmodi unterstützt. Im Halbduplexmodus teilen sich mehrere<br />

Knoten das Übertragungsmedium. Es ergibt sich eine logische Bustopologie, für <strong>die</strong> der<br />

Me<strong>die</strong>nzugri reguliert werden muss (engl.: Media Access Control, MAC). Hierfür wird<br />

20


2.4 Ethernet<br />

das Verfahren CSMA/CD (Carrier Sense Multiple Access with Collision Detection) eingesetzt.<br />

Der Vollduplexmodus ermöglicht <strong>die</strong> Kommunikation von jeweils zwei Knoten, ohne<br />

dass Kollisionen auftreten können, so dass hier CSMA/CD nicht gebraucht wird. Er ist<br />

jedoch nicht mit allen Übertragungsme<strong>die</strong>n möglich. Ein typischer Einsatz von Vollduplex<br />

ist Switched Ethernet, auf das in Abschnitt 2.4.6 eingegangen wird.<br />

Nachrichten werden in Datenframes übertragen, <strong>die</strong> neben den Nutzdaten unter anderem<br />

einen CRC-Fehlererkennungscode sowie <strong>die</strong> Empfänger- und Absender-Adresse enthalten.<br />

Die Adressen sind 6 Byte lang und werden auch MAC-Adressen genannt. Jeder Knoten<br />

sollte eine eindeutige Adresse haben. Zur Gruppenkommunikation gibt es auÿerdem eine<br />

Broadcast-Adresse, über <strong>die</strong> alle Knoten erreicht werden, sowie einen Adressbereich für<br />

Multicast-Adressen. Ein Frame kann bis zu 1.500 Byte Nutzdaten transportieren. Werden<br />

weniger als 46 Byte Nutzdaten versendet, wird das Feld bis zu <strong>die</strong>ser Länge aufgefüllt. Die<br />

entstehende minimale Framelänge ist nötig, um Kollisionen zuverlässig in allen Stationen<br />

erkennen zu können.<br />

CSMA/CD Im Halbduplexmodus prüft ein sendebereiter Knoten, ob momentan eine<br />

Nachricht eines anderen Knotens empfangen wird (Carrier Sense) und wartet gegebenenfalls<br />

mit dem Senden, bis <strong>die</strong> Übertragung beendet ist. Zu Kollisionen kommt es, wenn<br />

mehrere Knoten gleichzeitig zu senden beginnen, beispielsweise nachdem zwei sendewillige<br />

Knoten auf das Freiwerden des Mediums gewartet haben. Es ist aber auch möglich, dass ein<br />

Knoten eine bereits laufende Übertragung nicht bemerkt, wenn das Signal ihn noch nicht<br />

erreicht hat, denn anders als bei CAN wird bei der Übertragung nicht gewartet, bis ein<br />

Bit durch <strong>die</strong> Leitung propagiert wurde. Eine Nachricht erreicht verschiedene Empfänger<br />

somit im Allgemeinen zu unterschiedlichen Zeitpunkten. Damit eine Kollision trotzdem<br />

von allen Stationen einer Kollisionsdomäne erkannt werden kann (Collision Detection),<br />

wurde, wie bereits erwähnt, eine minimale Framelänge eingeführt, <strong>die</strong> gegebenenfalls automatisch<br />

durch das Einfügen eines Pad-Feldes hinter den Nutzdaten erreicht wird. Bei<br />

einer Kollision überlagern sich <strong>die</strong> Signale additiv, so dass der Pegel zumindest zeitweise<br />

ungültige Werte annimmt. Erkennt eine Station hierüber eine Kollision, so sendet sie ein<br />

zusätzliches Störsignal, das sicherstellt, dass alle Knoten eine Kollision erkennen und ihre<br />

Empfangspuer verwerfen. Die Wahrscheinlichkeit für Kollisionen steigt mit der Anzahl<br />

der Stationen, deren Sendeaufkommen und der Leitungslänge.<br />

Um eine erneute Kollision zu vermeiden, warten <strong>die</strong> sendebereiten Knoten für eine zufällige<br />

Zeit, bevor sie einen erneuten Übertragungsversuch nach CSMA/CD starten. Bei wiederholten<br />

Kollisionen werden <strong>die</strong> Wertebereiche, aus denen <strong>die</strong> zufälligen Wartezeiten gewählt<br />

werden, exponentiell vergröÿert (Exponential Backo), so dass sich <strong>die</strong> Wahrscheinlichkeit<br />

zur Auösung des Konikts mit fortschreitender Zeit schnell erhöht. Da <strong>die</strong> Zeit zur Lösung<br />

von Me<strong>die</strong>nzugriskonikten von Zufallszahlen abhängt, ist sie nicht vorhersagbar<br />

und damit für harte Echtzeitsysteme ungeeignet. Auÿerdem verursacht der Exponential<br />

21


2 Grundlagen und verwandte Arbeiten<br />

Backo einen immensen Jitter und eine sehr hohe maximale Fehlererkennungslatenz in der<br />

Echtzeitanwendung.<br />

Fehlererkennung und -behandlung In Ethernet werden Übertragungsfehler auf<br />

Empfängerseite über einen Cyclic-Redundancy-Check-Code erkannt. Beschädigte Frames<br />

werden verworfen. Anders als bei CAN gibt es keinen netzwerkweiten Konsens bezüglich<br />

des Empfangs von Datenframes. Auÿerdem ist keine Erkennung und Behandlung von<br />

Fehlern der Sende- bzw. Empfangshardware vorgesehen.<br />

2.4.2 RETHER<br />

RETHER (vgl. [CV94]) ist ein Protokoll, das den Aufbau von Echtzeit-Netzwerkverbindungen<br />

erlaubt. Wenn keine Echtzeitverbindung oen ist, wird CSMA/CD verwendet.<br />

Beim Aufbau des ersten Echtzeitkanals wird in den RETHER-Modus gewechselt, in dem<br />

<strong>die</strong> Sendeberechtigung mittels Token-Passing von Knoten zu Knoten weitergegeben wird.<br />

Jeder Knoten kennt seinen Vorgänger und Nachfolger. Zunächst läuft das Token durch<br />

<strong>die</strong> Menge der Knoten mit Echtzeitverbindungen. Dabei hat jeder Knoten eine für ihn<br />

reservierte maximale Haltezeit des Tokens, während der er Echtzeitnachrichten versenden<br />

kann. Nach Ablauf der Zeit oder wenn nichts mehr zu übertragen ist, gibt er das Token an<br />

den Nachfolgerknoten weiter. Mit dem Token wird unter anderem <strong>die</strong> noch verbleibende<br />

Zeit bis zum Ablauf der maximalen Token-Rotationszeit mitgeteilt. Der letzte Knoten der<br />

Menge mit Echtzeitverbindungen verschickt das Token an einen der Nicht-Echtzeit-Knoten.<br />

Dieser überprüft, ob noch genug Zeit zur Übertragung seines Pakets vorhanden ist. Wenn<br />

ja, dann überträgt er sein Paket und reicht das Token an den nächsten Nicht-Echtzeit-<br />

Knoten weiter. Falls <strong>die</strong> Zeit nicht ausreicht, wird eine neue Runde begonnen, indem der<br />

Token an den ersten Echtzeit-Knoten gesendet wird. Der Nicht-Echtzeit-Teil der Runde<br />

beginnt beim Nachfolger des zuletzt aktiven Nicht-Echtzeitknotens.<br />

RETHER erlaubt den Auf- und Abbau von Echtzeitverbindungen mit reservierten Bandbreiten<br />

zur Laufzeit. Andere QoS-Parameter wie <strong>die</strong> Periode oder <strong>die</strong> Ende-zu-Ende-<br />

Latenz lassen sich nicht beeinussen. Auÿerdem entsteht durch <strong>die</strong> Variation der Token-<br />

Halte- und -Rotationszeiten ein hoher Jitter und eine hohe maximale Fehlererkennungslatenz.<br />

Problematisch ist auch, dass das Token bei einer Verkettung von Fehlern verloren<br />

gehen kann, wodurch <strong>die</strong> Kommunikation komplett unmöglich wird.<br />

2.4.3 RT-EP<br />

Das Real-Time Ethernet Protocol (RT-EP, vgl. [MHG03]) nutzt Prioritäten zur Zuteilung<br />

der Netzwerkressourcen. Vor der Übertragung eines Nutzdatenpaketes wird hierfür in der<br />

Arbitrierungsphase mittels eines Tokens, das durch den logischen Ring gereicht wird, <strong>die</strong><br />

Station mit der am höchsten priorisierten Nachricht ermittelt. Anschlieÿend wird das<br />

22


2.4 Ethernet<br />

Sendetoken an <strong>die</strong>sen Knoten geschickt. Dieser überträgt seine Nachricht und beginnt<br />

erneut mit der Arbitrierungsphase.<br />

Das prioritätsbasierte Scheduling erfordert eine Einplanbarkeitsanalyse, auf deren<br />

Nachteile bereits in Abschnitt 2.3.2 eingegangen wurde. Gegen das Protokoll spricht<br />

auch der groÿe Overhead bei der Arbitrierung, denn bei N Stationen müssen für jedes<br />

Nutzdatenpaket N + 1 Token-Nachrichten übertragen werden.<br />

2.4.4 RTnet<br />

Bei RTnet (vgl. [KW05]) handelt es sich um einen echtzeitfähigen Netzwerk-Stack. Zu<br />

<strong>die</strong>sem gehört auch eine Schicht zur Regelung des Me<strong>die</strong>nzugris (RTmac), mit der sich<br />

nicht-deterministische Mechanismen des Me<strong>die</strong>nzugris, wie CSMA/CD, umgehen lassen.<br />

Zu RTnet gehört eine TDMA-basierte Implementierung, bei der ein replizierbarer Master<br />

zu Beginn jeder Runde eine Synchronisationsnachricht verschickt, über <strong>die</strong> eine globale<br />

Zeit etabliert wird. Eine TDMA-Runde besteht aus einer Reihe statisch kongurierter<br />

Slots mit individuellen Gröÿen. Jeder Knoten hat mindestens einen Zeitschlitz, kann aber<br />

auch mehrere haben. Die Anwendungen können ihre Nachrichten explizit einem speziellen<br />

Slot zuweisen. Auÿerdem können Prioritäten vergeben werden, welche <strong>die</strong> Reihenfolge<br />

der über einen Slot versendeten Nachrichten festlegen. Es ist auch möglich, Perioden als<br />

Vielfaches der TDMA-Rundenzeit zu wählen und somit einen Zeitschlitz über verschiedene<br />

Phasenverschiebungen mehreren Knoten zuzuteilen.<br />

Das in RTnet implementierte TDMA erlaubt eine sehr exible Slot-Zuteilung, <strong>die</strong> eine optimale<br />

Bandbreitenausnutzung erlaubt. Weitere Vorteile sind ein geringer Jitter und damit<br />

eine niedrige Fehlererkennungslatenz. Nachteilig ist, dass zur Laufzeit keine Reservierung<br />

von Netzressourcen möglich ist.<br />

2.4.5 FTT-Ethernet<br />

FTT-Ethernet (vgl. [PAG02]) basiert auf dem gleichen Paradigma wie das in Abschnitt<br />

2.3.5 beschriebene FTT-CAN. Die Elementarzyklen bestehen aus einem synchronen<br />

und einem asynchronen Teil. Der Master leitet den synchronen Teil durch eine Trigger-<br />

Nachricht ein. Diese wird zur Uhrensynchronisation und zur Zuteilung des Me<strong>die</strong>nzugris<br />

verwendet. Sie enthält <strong>die</strong> IDs der zu versendenden Echtzeit-Nachrichten und <strong>die</strong> jeweilige<br />

Dauer der Übertragung. Die Nachrichtenströme werden beim Master mit QoS-Parametern<br />

angefragt und von ihm eingeplant. Im asynchronen Teil können weiche Echtzeit- und Nicht-<br />

Echtzeit-Nachrichten verschickt werden. Sie werden vom Master gepollt, d. h. der Master<br />

gibt den Knoten nacheinander eine jeweils zeitlich begrenzte Sendeberechtigung.<br />

FTT-Ethernet erlaubt <strong>die</strong> Etablierung von Echtzeitkanälen zur Laufzeit. Problematisch ist<br />

jedoch, wie bei FTT-CAN, der Jitter durch <strong>die</strong> Variation der Sendezeitpunkte innerhalb<br />

23


2 Grundlagen und verwandte Arbeiten<br />

des synchronen Zeitfensters. Perioden können nur als Vielfache der Elementarzykluslänge<br />

angegeben werden.<br />

2.4.6 Switched Ethernet<br />

Bei Switched Ethernet wird jeder Knoten mit einer Empfangs- und Sendeeinheit der zentralen<br />

Vermittlerkomponente, dem Switch, verbunden. Es ergibt sich eine Sterntopologie,<br />

in der keine Verzögerungen durch Kollisionen auftreten (vgl. Abschnitt 2.1.5). Trotzdem<br />

ist Switched Ethernet ohne Weiteres nicht echtzeitfähig, denn der Switch sortiert<br />

<strong>die</strong> empfangenen Pakete zur Weiterleitung in Sendewarteschlangen ein, in denen es zu<br />

Stauungen kommen kann. Folge sind nicht vorhersagbare Verzögerungen und, bei überlaufenden<br />

Warteschlangen, Paketeverlust. Die Problematik tritt verstärkt im Zusammenhang<br />

mit Publish/Subscribe auf, wo zur Gruppenkommunikation Broadcast oder Multicast<br />

verwendet wird. Hierbei werden im Switch alle empfangenen Pakete in alle Sendewarteschlangen<br />

gelegt. Dabei geht der wesentliche Vorteil des Switches, mehrere parallele<br />

Übertragungswege, verloren. Daher werden Echtzeit-Ansätze für Switched Ethernet in<br />

<strong>die</strong>ser Arbeit nicht weiter betrachtet.<br />

2.4.7 Zusammenfassung<br />

Ethernet ist preisgünstig, erlaubt hohe Datenraten und eine einfache Anbindung<br />

an Standard-IT-Infrastrukturen. Daher existieren viele Lösungen, <strong>die</strong> das nichtdeterministische<br />

CSMA/CD umgehen, um Echtzeitgarantien auch bei hoher Netzwerklast<br />

zu ermöglichen. Den für den Einsatz in <strong>FAMOUSO</strong> gestellten Anforderungen wird keiner<br />

der betrachteten Ansätze gerecht, denn keiner bietet sowohl geringen Jitter als auch<br />

Möglichkeiten zur dynamischen Etablierung von Echtzeitkanälen mit konkreten Quality-of-<br />

Service-Garantien. Daher wird keine der vorgestellten Lösungen verwendet. Teilkonzepte<br />

werden jedoch in den eigenen im Kapitel 3 vorgestellten Ansatz übernommen.<br />

24


3 Echtzeitkommunikationskanäle<br />

Um der <strong>Middleware</strong> <strong>FAMOUSO</strong> <strong>die</strong> Durchsetzung von Echtzeitanforderungen zu ermöglichen,<br />

wird eine zusätzliche Softwareschicht geschaen. Diese verhindert nicht vorhersagbare<br />

Verzögerungen beim Zugri auf das Netzwerkmedium, indem sie <strong>die</strong> Sendezeitpunkte<br />

aller Nachrichten koordiniert.<br />

Der erste Teil des Kapitels befasst sich damit, wie der echtzeitfähige Zugri auf <strong>die</strong> gemeinsam<br />

genutzten Netzwerkme<strong>die</strong>n bei CAN und Ethernet garantiert werden soll. Die dafür<br />

nötige Planung zur Vergabe von Me<strong>die</strong>nzeit zur Laufzeit wird im zweiten Teil behandelt.<br />

Beide Konzepte lassen sich auch abseits von Publish/Subscribe einsetzen. Im dritten Teil<br />

wird ein Protokoll vorgestellt, das den zur dynamischen Planung notwendigen Informationsaustausch<br />

regelt. Dieses ist stark auf Publish/Subscribe und <strong>FAMOUSO</strong> zugeschnitten.<br />

Die in <strong>die</strong>sem Kapitel erarbeiteten Konzepte werden im Kapitel 4 in <strong>FAMOUSO</strong><br />

integriert.<br />

3.1 Durchsetzung über TDMA<br />

Echtzeitanforderungen wie eine maximale Latenz, geringer Jitter oder eine konkrete<br />

Nachrichtenperiode lassen sich auf Netzwerkebene sehr zuverlässig über <strong>die</strong> Reservierung<br />

von Me<strong>die</strong>nzeit durchsetzen. Für <strong>FAMOUSO</strong> wurde ein TDMA-basierter Ansatz gewählt.<br />

Alle Knoten eines Netzes verfügen dabei über synchronisierte Uhren und versenden ihre<br />

Nachrichten in für sie reservierten Zeitfenstern.<br />

Im Folgenden wird zunächst auf Gründe für <strong>die</strong> Wahl des Verfahrens und nötige Annahmen<br />

eingegangen. Abschnitt 3.1.3 präsentiert <strong>die</strong> Details des verfolgten TDMA. In<br />

Abschnitt 3.1.4 wird <strong>die</strong> Integration von Nachrichten ohne Echtzeitanforderungen (NRT)<br />

in das TDMA-Schema besprochen.<br />

3.1.1 Wahl des Verfahrens<br />

Steuerungs- und Regelungsaufgaben in verteilten Systemen erfordern typischerweise eine<br />

periodische und vorhersagbare Übertragung der Echtzeitdaten. TDMA ist hierfür aus folgenden<br />

Gründen gut geeignet:<br />

25


3 Echtzeitkommunikationskanäle<br />

• TDMA ist zeitlich vorhersagbar, denn <strong>die</strong> Zeitpunkte der Nachrichtenübertragung<br />

sind vorgegeben. Im Gegensatz zu anderen Verfahren gibt es für Echtzeitnachrichten<br />

keine unbekannten Wartezeiten beim Me<strong>die</strong>nzugri. Die Latenz ist unabhängig von<br />

der Auslastung des Netzes. So erzeugt TDMA den geringsten möglichen Jitter und<br />

erlaubt damit auch <strong>die</strong> schnellste Fehlererkennung.<br />

• Da TDMA nicht auf der Ausnutzung von speziellen Netzwerk-Eigenschaften beruht,<br />

kann es für viele Netzwerktypen eingesetzt werden. Es erlaubt eine gemeinsame<br />

Lösung für <strong>die</strong> Echtzeitfähigkeit von CAN und Ethernet, <strong>die</strong> auch auf andere Netzwerke<br />

mit gemeinsam genutzten Me<strong>die</strong>n übertragbar ist. Neben kabelgebundenen<br />

Bussystemen ist der Einsatz beispielsweise auch für Single-Hop 1 Funknetze denkbar.<br />

Wenn <strong>die</strong> Verarbeitungszeit im Vermittlerknoten berücksichtigt wird, lässt sich der<br />

Ansatz auch in Sterntopologien wie Switched Ethernet verwenden.<br />

• TDMA ist sehr ezient für periodische Nachrichtenübertragung. Anders als bei<br />

Token-Passing oder Master/Slave-Protokollen müssen für <strong>die</strong> Echtzeitfähigkeit nicht<br />

ständig Verwaltungsnachrichten übertragen werden, <strong>die</strong> den Durchsatz für Nutzdaten<br />

reduzieren.<br />

• Die für TDMA notwendige Uhrensynchronisation liefert den Echtzeitknoten eine<br />

globale Zeit, <strong>die</strong> sich im verteilten System ausnutzen lässt, um z. B. kooperative<br />

Tasks zu synchronisieren oder den Zeitpunkt eines Ereignisses angeben zu können.<br />

• TDMA eignet sich gut für Systeme mit hohen Anforderungen an <strong>die</strong> Verlässlichkeit.<br />

Es gibt keinen Single-Point-of-Failure 2 , der den laufenden Echtzeitbetrieb stören<br />

kann. TDMA ist zwar abhängig von der Uhrensynchronisation, <strong>die</strong>se kann aber über<br />

einen verteilten Algorithmus sehr fehlertolerant ausgelegt werden.<br />

Um auch nicht echtzeitfähige Knoten an ein Echtzeitnetz anbinden zu können, wird<br />

der Me<strong>die</strong>nzugri für Nicht-Echtzeit-Nachrichten (NRT-Nachrichten) nicht über reines<br />

TDMA geregelt. Stattdessen wird ein anderes Verfahren eingesetzt, das mit TDMA harmoniert<br />

und <strong>die</strong> Garantien für <strong>die</strong> Echtzeitnachrichten nicht gefährdet. Siehe hierzu Abschnitt<br />

3.1.4.<br />

3.1.2 Annahmen<br />

Grundvoraussetzung für das Funktionieren von TDMA ist ein dediziertes Netz, an das<br />

ausschlieÿlich Knoten angeschlossen sind, <strong>die</strong> sich an das hier beschriebene Protokoll halten.<br />

Bei Hardwarefehlern wird von einem Fail-Silent-Verhalten ausgegangen, d. h. eine<br />

fehlerhafte Komponente ist passiv und sendet nicht.<br />

1<br />

Alle Empfänger liegen im Einzugsbereich der Sender, so dass keine Weiterleitung über Zwischenstationen<br />

nötig ist.<br />

2<br />

Ein Single-Point-of-Failure ist eine Schwachstelle, an der ein einzelner Fehler zum Ausfall des Gesamtsystems<br />

führen kann. Beispiele sind der unbehandelte Verlust eines Sende-Tokens oder der Ausfall einer<br />

Master-Komponente, <strong>die</strong> <strong>die</strong> Kommunikation triggert.<br />

26


3.1 Durchsetzung über TDMA<br />

Auÿerdem wird angenommen, dass in allen Echtzeitknoten eine globale Zeit zur Verfügung<br />

steht. In einem Knoten weicht sie nie mehr als α von einer Referenzzeit ab (Accuracy).<br />

Daraus folgt, dass sich zwei Globalzeituhren nie um mehr als 2α voneinander unterscheiden<br />

(Precision). Daher wird für <strong>die</strong> Granularität g (Zeit zwischen zwei aufeinanderfolgenden<br />

Ticks) der globalen Zeit ein Wert gröÿer als 2α gewählt. Der Einuss der mit der<br />

Uhrensynchronisation erreichten Genauigkeit α und der danach gewählten Zeitgranularität<br />

g wird in Abschnitt 3.2.5 diskutiert.<br />

3.1.3 TDMA-Zyklus<br />

Die Me<strong>die</strong>nzeit wird in Zyklen unterteilt. Ein Zyklus besteht wiederum aus einer Abfolge<br />

von Zeitschlitzen (Slots). Abb. 3.1 zeigt einen beispielhaften TDMA-Zyklus. Jeder der<br />

Zeitschlitze ist entweder für einen Produzenten von Echtzeitnachrichten reserviert (RT i )<br />

oder frei (NRT). Alle Slots eines Produzenten i haben <strong>die</strong> gleiche Länge und sind<br />

streng periodisch angeordnet, d. h. ein Slot wiederholt sich jeweils nach der Periode p i .<br />

Während eines Zeitschlitzes RT i hat der Produzent i <strong>die</strong> alleinige Sendeberechtigung<br />

für das Medium 3 , wodurch Zugriskonikte vermieden werden. Die Länge des TDMA-<br />

Zyklus' Z entspricht dem kleinsten gemeinsamen Vielfachen aller Perioden p i . Freie Slots<br />

werden für Nicht-Echtzeit-Nachrichten verwendet (siehe Abschnitt 3.1.4).<br />

Jeder Produzent zeichnet sich durch eigene QoS-Anforderungen aus. In <strong>FAMOUSO</strong> übernimmt<br />

somit jeder Publisher-Ereigniskanal, der mit QoS-Anforderungen versehen ist, <strong>die</strong><br />

Rolle eines Produzenten. Die QoS-Anforderungen des Produzenten i werden durchgesetzt,<br />

indem <strong>die</strong> Slots RT i für den Produzenten gemäÿ seiner Anforderungen reserviert werden.<br />

Die Menge <strong>die</strong>ser Slots wird auch Echtzeitkommunikationskanal des Produzenten i bzw.<br />

Kommunikationskanal i genannt. Auf einem Knoten kann es mehrere Produzenten von<br />

Echtzeitnachrichten und damit auch mehrere Echtzeitkommunikationskanäle geben. Durch<br />

<strong>die</strong> enge Kopplung des Produzenten i und des passend reservierten Kommunikationskanals<br />

ist beim Versenden kein lokales Scheduling der Nachrichten nötig, was den Rechenaufwand<br />

in den Knoten verringert. Die dafür aufwendigere Planung bei der Reservierung der Me<strong>die</strong>nzeit<br />

wird in einem rechenstarken Master-Knoten durchgeführt (siehe Abschnitt 3.2).<br />

Der Kommunikationskanal i wird über folgende Parameter beschrieben:<br />

• Die Dauer eines Sendeslots wird als Länge l i bezeichnet. Ein Slot wird durch <strong>die</strong><br />

Bereitzeit des Mediums r j i<br />

und <strong>die</strong> Frist zum Abschluss der Datenübertragung d j i<br />

begrenzt. In der Zwischenzeit darf für <strong>die</strong> Zeit l i = d j i − rj i<br />

ausschlieÿlich von dem<br />

Produzenten i gesendet werden.<br />

3<br />

Kein anderer Produzent von Echtzeitnachrichten darf während des Slots RT i senden. Nach in Abschnitt<br />

3.1.4.2 und 3.3.2 eingeführten Regeln können innerhalb von Echtzeitslots jedoch Nicht-Echtzeit-<br />

Nachrichten verschickt werden, da der Vorrang der Echtzeitnachrichten sichergestellt ist und kritische<br />

Verzögerungen durch Zugriskonikte ausgeschlossen sind.<br />

27


3 Echtzeitkommunikationskanäle<br />

Zeit t<br />

Perioden<br />

p2<br />

p1<br />

Me<strong>die</strong>nzuteilung RT1 RT2 NRT RT2 NRT RT2 NRT RT1 RT2<br />

Zykluslänge<br />

Z = kgV(p1, p2, . . . , pn)<br />

Zyklusparameter:<br />

Z Zykluslänge<br />

z k Beginn des Zyklus' k<br />

Echtzeitslot RT2<br />

v2 l2<br />

Zeit t<br />

z k r j 2 u j 2 d j 2<br />

f2<br />

Slotparameter für Produzent i:<br />

pi Periode<br />

li Länge<br />

vi Phasenverschiebung<br />

fi Übertragungsstartfenster (ÜSF)<br />

r j i<br />

Beginn des Slots j<br />

d j i<br />

Ende des Slots j<br />

u j i<br />

Ende des ÜSF im Slot j<br />

Abbildung 3.1: TDMA-Zyklus und Zeitparameter von Echtzeitslots<br />

28


3.1 Durchsetzung über TDMA<br />

(1) A B C<br />

(2) A B C<br />

t<br />

r j i<br />

u j i<br />

d j i<br />

Abbildung 3.2: Versand von Echtzeitnachrichten im reservierten Slot: (1)<br />

Der Produzent i sendet <strong>die</strong> Nachrichten A, B und C wie eingeplant. (2) Ein<br />

Zeitfehler verzögert <strong>die</strong> Übertragung. C wird nicht übertragen, da der Sendebeginn<br />

hinter dem Übertragungsstartfenster liegt. C würde <strong>die</strong> Slotgrenze<br />

verletzen.<br />

• Die Periode p i ist <strong>die</strong> Zeitspanne zwischen zwei aufeinander folgenden Sendeslots<br />

des Produzenten i. Beginnt ein Slot zur Zeit r j i<br />

, folgt der nächste Slot also zum<br />

Zeitpunkt r j+1<br />

i<br />

= r j i + p i.<br />

• Die Zeit zwischen dem Beginn eines TDMA-Zyklus' z k und dem ersten Slot des<br />

Produzenten i ist <strong>die</strong> Phasenverschiebung v i . Sie ist vor allem bei der Planung<br />

des TDMA-Zyklus' relevant. Es gilt: r j i = zk + v i .<br />

• Es muss garantiert sein, dass zum Zeitpunkt d j i<br />

keine Datenübertragung mehr im<br />

Gange ist. Hierfür wird der Produzent verpichtet, das bei der Planung berechnete<br />

Übertragungsstartfenster f i einzuhalten. Es gibt <strong>die</strong> Zeitspanne nach r j i<br />

an, in<br />

der mit dem Senden begonnen werden darf. Nach dem Zeitpunkt u j i = rj i + f i darf<br />

keine neue Übertragung gestartet werden, da <strong>die</strong>se sonst <strong>die</strong> Frist d j i<br />

verletzen würde.<br />

Zur Einhaltung des Protokolls benötigt der Produzent i lediglich <strong>die</strong> Periode p i , das Übertragungsstartfenster<br />

f i und eine beliebige Bereitzeit r j i<br />

. Aus der Bereitzeit kann durch Additionen<br />

bzw. Subtraktion von Vielfachen der Periode <strong>die</strong> Menge aller späteren bzw. früheren<br />

Bereitzeiten bestimmt werden. Abb. 3.2 veranschaulicht, wie Echtzeitnachrichten in einem<br />

Slot übertragen werden. Bevor der Produzent zu senden beginnt, wartet er auf <strong>die</strong> nächste<br />

Bereitzeit. Der Produzent sendet dann maximal <strong>die</strong> beim Planer reservierte Datenmenge,<br />

für welche <strong>die</strong> Slotlänge ausgelegt ist. Kommt es bei dem Produzenten zu einem Zeitfehler,<br />

der den Sendebeginn hinauszögert, könnte <strong>die</strong> Frist d j i<br />

trotz ausreichender Slotlänge verletzt<br />

werden. Das kann verhindert werden, indem vor jedem Sendebeginn überprüft wird,<br />

ob <strong>die</strong> aktuelle Startzeit noch innerhalb des Übertragungsstartfensters f i liegt (t ≤ u j i ).<br />

Falls <strong>die</strong>s nicht gegeben ist, darf nicht gesendet werden. Um auch zu frühzeitiges Auslösen<br />

des Sendevorgangs zu erkennen, muss auÿerdem überprüft werden, ob t ≥ r j i .<br />

Sendewiederholung bei CAN Wie bereits im Abschnitt 2.3.1 erwähnt, sieht das CAN-<br />

Protokoll bei Übertragungsfehlern eine automatische Sendewiederholung durch <strong>die</strong> Hardware<br />

vor. Damit bei CAN auch im Fehlerfall <strong>die</strong> Grenzen der TDMA-Slots eingehalten<br />

werden, muss <strong>die</strong>se Sendewiederholung deaktiviert oder <strong>die</strong> maximale Anzahl der Wiederholungsversuche<br />

eingeschränkt werden. Mit aktueller CAN-Hardware ist <strong>die</strong>s möglich.<br />

29


3 Echtzeitkommunikationskanäle<br />

Sendewiederholung bei Ethernet Wie in Abschnitt 2.4.1 beschrieben, ndet bei Ethernet<br />

im Falle von Kollisionen eine Sendewiederholung nach dem Exponential-Backo-<br />

Prinzip statt. Kollisionen werden jedoch durch das TDMA-Prinzip und <strong>die</strong> Planung der<br />

Slots vermieden. Eine automatische Sendewiederholung bei anderen Fehlern sieht <strong>die</strong> Spezikation<br />

von Ethernet nicht vor.<br />

3.1.4 Nicht-Echtzeit-Kommunikation<br />

Das Me<strong>die</strong>nzugrisverfahren soll in der Lage sein, auch NRT-Nachrichten zu übertragen,<br />

ohne <strong>die</strong> Garantien für <strong>die</strong> Echtzeitnachrichten zu gefährden. Denkbar wäre, auch für<br />

NRT-Nachrichten Slots im TDMA-Zyklus zu reservieren, beispielsweise je Knoten. Diese<br />

würden wegen des typischerweise sporadischen Auftretens der Nachrichten jedoch zu einer<br />

schlechten Me<strong>die</strong>nausnutzung führen, denn Knoten können nicht benötigte Slots nicht<br />

an andere Knoten weitergeben, <strong>die</strong> <strong>die</strong>se Slots gerade benötigen. Auÿerdem müssten so<br />

auch Knoten ohne Echtzeitaufgaben ihre Uhren synchronisieren. Dieser Aufwand kann<br />

eingespart werden, indem TDMA mit einem anderen Arbitrierungsverfahren kombiniert<br />

wird, beispielsweise einem Master/Slave-Ansatz. Dieser funktioniert zwar in allen Netzen,<br />

erzeugt jedoch einen recht groÿen Nachrichtenoverhead und macht <strong>die</strong> Kommunikation<br />

von einem Master abhängig. Im Interesse der Ezienz wurde sich daher für eine jeweils<br />

individuelle Lösung der Nicht-Echtzeit-Arbitrierung entschieden.<br />

3.1.4.1 Ethernet<br />

Ethernet baut auf einem nicht-deterministischen MAC-Mechanismus auf, der <strong>die</strong> Wartezeit<br />

bis zum Erhalten des Me<strong>die</strong>nzugris nicht beschränkt. Die Ausführung des MAC-<br />

Mechanismus' kann auch nicht gezielt unterbrochen werden, um das Medium zeitgesteuert<br />

für einen Echtzeitslot freizumachen. Somit lässt sich der Mechanismus auch im Nicht-<br />

Echtzeit-Bereich nicht ausnutzen.<br />

Daher wird hier ein Master/Slave-Ansatz verfolgt, bei dem der Master innerhalb der freien<br />

und ungenutzen 4 Slots des TDMA-Zyklus' <strong>die</strong> Sendeberechtigung für NRT-Nachrichten<br />

vergibt. Diese Sendeberechtigung ist zeitlich begrenzt und geht nach dem Ablauf der<br />

Zeit automatisch an den Master zurück. Sie wird in Form einer Poll-Nachricht an einen<br />

konkreten Knoten gesendet.<br />

Die Knoten haben folgende Eigenschaften:<br />

• Jeder Knoten muss individuell adressierbar sein, denn es muss sichergestellt sein,<br />

dass sich nie mehr als ein Knoten von einer Poll-Nachricht angesprochen fühlt. Anderenfalls<br />

kann es zu Kollisionen kommen <strong>die</strong> wegen CSMA/CD mit Exponential<br />

Backo <strong>die</strong> Einhaltung der Slotgrenzen gefährden.<br />

4<br />

Das in Abschnitt 3.3 vorgestellte Reservierungsprotokoll erlaubt <strong>die</strong> Ausweitung des Pollings auf reservierte<br />

Slots, <strong>die</strong> von den Produzenten nicht zur Versendung von Nachrichten verwendet werden.<br />

30


3.1 Durchsetzung über TDMA<br />

• Der Knoten muss keine mit dem Master synchronisierte Uhr haben. Die Driftrate<br />

5 der Uhren muss jedoch durch eine bekannte Schranke ρ max begrenzt sein.<br />

• Jeder Knoten verwaltet eine Warteschlange von zu übertragenden NRT-<br />

Nachrichten.<br />

Mit der Poll-Nachricht werden <strong>die</strong> folgenden Informationen verschickt:<br />

• Die Adresse des Knotens, der <strong>die</strong> Sendeberechtigung erhalten soll.<br />

• Die Dauer der Sendeberechtigung. Da der Knoten keine zum Master synchrone<br />

Uhr haben muss, kann kein absoluter Zeitwert verwendet werden. Stattdessen wird<br />

<strong>die</strong> Dauer eines Übertragungsstartfensters übermittelt.<br />

Adressierung der Knoten Damit alle Knoten <strong>die</strong> Gelegenheit zum Senden erhalten, muss<br />

der Master alle im System vorkommenden Knotenadressen kennen, d. h. für dynamische<br />

Systeme, alle Adressen, <strong>die</strong> im System während des Betriebs vorkommen können. Da <strong>die</strong><br />

Sendeberechtigung nach einer denierten Zeit automatisch an den Master zurückgeht, ist<br />

das Pollen von gerade nicht verwendeten Adressen unproblematisch. Es führt lediglich zur<br />

Verschwendung von Me<strong>die</strong>nzeit, da <strong>die</strong> Sendeberechtigung für einen nicht aktiven Knoten<br />

immer ungenutzt bleibt und sich <strong>die</strong> für aktive Knoten verfügbare Me<strong>die</strong>nzeit verringert.<br />

Zur Adressierung bietet sich <strong>die</strong> Verwendung der Ethernet-MAC-Adressen an. Hierdurch<br />

können <strong>die</strong> Poll-Nachrichten per Unicast versendet werden, was im Vergleich zu Broadcast-<br />

Nachrichten <strong>die</strong> Prozessoren der nicht angesprochenen Knoten entlastet. Bei der Umsetzung<br />

gibt es zwei Möglichkeiten:<br />

1. Man verwendet <strong>die</strong> in den Ethernet-Komponenten vorhandenen MAC-Adressen. Der<br />

Adressraum für Unicast-Adressen ist hier mit 47 Bit deutlich zu groÿ, um alle<br />

möglichen Adressen zu pollen. Daher muss dem Master eine Liste der Adressen aller<br />

Knoten vorliegen, <strong>die</strong> etwas senden wollen. Diese Liste wird dann zyklisch abgearbeitet.<br />

2. Alternativ kann der zu pollende MAC-Adressraum eingeschränkt werden, indem <strong>die</strong><br />

Bits der Adresse in einen vorgegebenen und einen variablen Bereich unterteilt werden.<br />

Um beispielsweise 256 Knoten zu erlauben, könnte man <strong>die</strong> letzten 8 Bit der<br />

Adresse variabel lassen und <strong>die</strong> ersten 40 Bit vorgeben. Der Master pollt dann alle<br />

256 möglichen Adressen, unabhängig davon, ob <strong>die</strong> Adressen tatsächlich in Verwendung<br />

sind. Bei <strong>die</strong>ser Methode ist eine Anpassung der MAC-Adressen aller Knoten<br />

nötig, so dass jeder Knoten eine eindeutige Adresse aus <strong>die</strong>sem 8 Bit Adressraum<br />

bekommt.<br />

5<br />

Unter der Drift versteht man <strong>die</strong> Abweichung einer Uhr CLK bezüglich einer Referenzuhr CLK R:<br />

drift = CLK(t 2)−CLK(t 1 )<br />

. Die Driftrate entspricht ρ = |drift − 1|. CLK R (t 2 )−CLK R (t 1 )<br />

31


3 Echtzeitkommunikationskanäle<br />

Der Autor bevorzugt <strong>die</strong> 1. Variante, da sie keine Anpassung von MAC-Adressen erfordert<br />

und bezüglich der Knotenanzahl exibler ist. Auÿerdem kann bei <strong>die</strong>ser Variante <strong>die</strong> Erstellung<br />

der Adressliste in Spezialfällen automatisiert werden:<br />

• Wenn alle Knoten aktiv sind, bevor <strong>die</strong> erste Reservierung von Echtzeitslots statt-<br />

ndet, kann der Master alle Knoten über eine Broadcast-Nachricht auordern,<br />

ihm ihre MAC-Adressen zu senden. Denn bevor Echtzeitgarantien vergeben werden,<br />

stellt <strong>die</strong> nicht-deterministische Kollisionsauösung von Ethernet kein Problem<br />

dar. Der Masterknoten wartet nach dem Versenden bis zum Zeitpunkt t end , zu<br />

dem sichergestellt ist, dass alle Knoten auf <strong>die</strong> Broadcast-Nachricht reagieren konnten.<br />

Er wartet mindestens <strong>die</strong> maximale Round-Trip-Zeit 6 , so dass initial t end ←<br />

t send + ∆t RT T ist. Wenn nach <strong>die</strong>ser Zeit keine Antworten angekommen sind, gibt es<br />

keine zu pollenden Knoten im Netzwerk. Wenn eine Antwort eingegangen ist, gibt<br />

es mindestens einen Knoten, der gepollt werden muss. Weitere Antworten könnten<br />

in <strong>die</strong>sem Fall durch Kollisionen verzögert worden sein, so dass nach einer empfangenen<br />

Antwort mindestens für <strong>die</strong> maximale Dauer des Exponential Backos (∆t EB )<br />

gewartet werden muss. Für 10 Mbit/s liegt <strong>die</strong>se beispielsweise bei 366 ms (vgl.<br />

[HJ03]). Somit muss beim Empfangen einer Antwort der Terminierungszeitpunkt<br />

neu gesetzt werden: t end ← max{t end , t receive + ∆t EB }. Wenn der Zeitpunkt t end erreicht<br />

wird, sind dem Poll-Master alle aktiven zu pollenden Knoten bekannt, so dass<br />

mit dem Pollen und der Reservierung von Echtzeitkommunikationskanälen begonnen<br />

werden kann.<br />

• Der Master kann auch während des Echtzeitbetriebs dynamisch neue Knoten in seine<br />

Liste integrieren, wenn durch Wissen der Anwendung garantiert ist, dass sich nie<br />

mehrere Knoten gleichzeitig beim Master anmelden wollen. So beispielsweise, wenn<br />

<strong>die</strong> Knoten nacheinander gestartet und initialisiert werden. Der Master sendet dann<br />

regelmäÿig in einem freien Slot per Broadcast eine spezielle Poll-Nachricht, <strong>die</strong> einen<br />

neu gestarteten Knoten auordert, seine Adresse zu übertragen.<br />

Nach den Anforderungen, <strong>die</strong> <strong>FAMOUSO</strong> erfüllen soll, sind <strong>die</strong>se Fälle im Allgemeinen<br />

nicht gegeben. Wenn <strong>die</strong> Anwendung jedoch einem der Spezialfälle gerecht wird, bringt<br />

<strong>die</strong> Verwendung der angesprochenen Verfahren deutliche administrative Vereinfachungen<br />

mit sich.<br />

Dauer der Sendeberechtigung Der Poll-Master ist dafür zuständig, <strong>die</strong> Länge des Übertragungsstartfensters<br />

(ÜSF) so zu bestimmen, dass der gepollte Knoten nur innerhalb<br />

des freien bzw. ungenutzten Slots überträgt, damit <strong>die</strong> nachfolgenden Echtzeitnachrichten<br />

nicht beeinträchtigt werden. Wenn der zur Verfügung stehende Slot hinreichend lang ist,<br />

6<br />

Die maximale Round-Trip-Zeit setzt sich aus der maximalen lokalen Verzögerung am Master beim<br />

Senden, der maximalen Latenz bei der Übertragung des Broadcast-Pakets, der maximalen lokalen Verarbeitungszeit<br />

beim Slave, der Latenz bei der Übertragung der Antwort sowie der maximalen lokalen<br />

Verzögerung auf dem Master beim Empfangen zusammen.<br />

32


3.1 Durchsetzung über TDMA<br />

Slot beginnt<br />

Poll-Übertragung beginnt<br />

Poll-Übertragung endet<br />

ÜSF beginnt<br />

ÜSF endet<br />

Slot endet<br />

globale Zeit<br />

∆ M<br />

∆ P<br />

∆ K<br />

∆ F<br />

∆ R<br />

t g<br />

Me<strong>die</strong>nnutzung Poll K A B<br />

lokale Zeit in K<br />

τ F<br />

t lK<br />

ÜSF-Timer gestartet<br />

ÜSF-Timer läuft ab<br />

Abbildung 3.3: Versand von NRT-Nachrichten bei Ethernet: In einem freien<br />

oder ungenutzten Slot übergibt der Master dem Knoten K in einer Poll-<br />

Nachricht eine zeitlich begrenzte Sendeberechtigung. K versendet hier <strong>die</strong><br />

Nachrichten A und B.<br />

kann der Master ihn in mehrere Teile unterteilen und so nacheinander mehrere Sendeberechtigungen<br />

vergeben. Im Folgenden wird <strong>die</strong> Dauer des betrachteten Teils bzw. des<br />

gesamten Slots als verfügbare Slotdauer bezeichnet.<br />

Die verfügbare Slotdauer ∆ setzt sich aus mehreren Zeitintervallen zusammen, <strong>die</strong> in<br />

Abb. 3.3 veranschaulicht sind.<br />

∆ = ∆ M + ∆ P + ∆ K + ∆ F + ∆ R<br />

• ∆ M ist <strong>die</strong> maximale Verzögerung ab dem Anfang des Slots bis <strong>die</strong> Übertragung<br />

der Poll-Nachricht des Masters auf dem Medium beginnt. Sie ist von der Hard- und<br />

Software des Masters abhängig.<br />

• ∆ P bezeichnet <strong>die</strong> Zeit zur Übertragung der Poll-Nachricht an den Knoten K. Sie<br />

wird im Wesentlichen durch <strong>die</strong> Bitrate und <strong>die</strong> minimale Ethernet-Framelänge bestimmt.<br />

• ∆ K ist <strong>die</strong> maximale Verzögerung im Knoten K, bis <strong>die</strong>ser den Zeitstempel zur<br />

Bemessung des ÜSF nimmt. Sie hängt von der Hard- und Software des Knotens K<br />

ab.<br />

33


3 Echtzeitkommunikationskanäle<br />

• ∆ F ist <strong>die</strong> gesuchte Länge des ÜSF. Der Knoten K muss vor jedem Sendebeginn<br />

überprüfen, ob der momentane Zeitpunkt noch im ÜSF liegt.<br />

• ∆ R ist <strong>die</strong> Reservezeit nach dem ÜSF. Sie entspricht mindestens der Summe aus der<br />

Übertragungszeit des längsten erlaubten Frames und der maximalen Verzögerung<br />

zwischen der ÜSF-Überprüfung und dem tatsächlichen Beginn der Übertragung.<br />

Zur Berechnung der gesuchten Variable ∆ F ergibt sich durch Umstellung und Zusammenfassung<br />

der Konstanten:<br />

∆ F = ∆ − (∆ M + ∆ P + ∆ K + ∆ R )<br />

= ∆ − ∆ MP KR<br />

Das hier bestimmte ÜSF garantiert <strong>die</strong> Einhaltung der Slotgrenze jedoch nur, wenn der<br />

Knoten K über eine synchronisierte Uhr verfügt. Im Allgemeinen ist das jedoch nicht<br />

der Fall. Daher muss dass ÜSF noch gekürzt werden, um <strong>die</strong> Garantie auch zu erhalten,<br />

wenn <strong>die</strong> Uhr im Knoten K zu langsam läuft. Denn wenn der ÜSF-Timeout durch eine zu<br />

langsam laufende Uhr bestimmt wird, löst er zu spät aus, so dass der Knoten <strong>die</strong> Slotgrenze<br />

durch einen zu späten Übertragungsbeginn gefährdet. Die Länge des ÜSF lässt sich mit<br />

Hilfe der maximalen Driftrate der Uhr von Knoten K hinreichend verkürzen:<br />

τ F =<br />

∆ F<br />

ρ max + 1<br />

In der Poll-Nachricht wird τ F als Länge des ÜSF versendet. Im Knoten K muss τ F auf<br />

ein Vielfaches der dortigen Uhrengranularität abgerundet, also auf das nächstkleinere<br />

Vielfache reduziert werden. So ist auch bei einer maximal abdriftenden Uhr im Knoten K<br />

<strong>die</strong> Einhaltung der Slotgrenzen gesichert.<br />

Erhöhung der Me<strong>die</strong>nausnutzung NRT-Nachrichten werden oft in Bursts versendet, d. h.<br />

<strong>die</strong> Sendezeitpunkte sind nicht gleichmäÿig über <strong>die</strong> Zeit verteilt. Stattdessen produziert<br />

ein Knoten innerhalb einer kurzen Zeit sehr viele Nachrichten, <strong>die</strong> sich in der Warteschlange<br />

stauen. Werden alle Knoten nacheinander gepollt, unabhängig davon wie viele Daten sie<br />

zu versenden haben, so führt das bei ungleich gefüllten Warteschlangen zu hohen Latenzen<br />

und einer schlechten Ausnutzung des Mediums. Dieses Problem lässt sich reduzieren, indem<br />

<strong>die</strong> gepollten Knoten in einem Headerfeld ihrer NRT-Nachrichten mitschicken, wie viele<br />

NRT-Nachrichten noch in ihrer Warteschlange stehen. Der Master kann <strong>die</strong>se Information<br />

34


3.1 Durchsetzung über TDMA<br />

NRT A NRT B RT A 1 NRT C RT B 1<br />

RT 2 NRT D NRT E<br />

r j 1 u j 1 d j 1 = rk 2<br />

u k 2 d k 2<br />

Abbildung 3.4: Me<strong>die</strong>nnutzung bei CAN am Beispiel. Es gibt keine<br />

Sendebeschränkungen für NRT-Nachrichten, so dass RT-Nachrichten durch<br />

NRT-Nachrichten verzögert werden können. Wenn RT-Nachrichten kürzer<br />

sind als reserviert, steht <strong>die</strong> frei werdende Me<strong>die</strong>nzeit für NRT-Nachrichten<br />

zur Verfügung.<br />

t<br />

ausnutzen, um den Knoten mit mehr wartenden Nachrichten häuger <strong>die</strong> Sendeberechtigung<br />

zu erteilen. Sie darf jedoch nicht einziges Kriterium sein, damit auch Knoten mit<br />

geringem Nachrichtenaufkommen noch senden dürfen.<br />

3.1.4.2 CAN<br />

Bei CAN lässt sich <strong>die</strong> prioritätsbasierte Arbitrierung des CAN-Protokolls ausnutzen, um<br />

auf einfachem Wege eine sehr eziente Übertragung von NRT-Nachrichten zu ermöglichen.<br />

Der vorgeschlagene verteilte Ansatz ist sehr verlässlich, dynamisch und erfordert keine<br />

speziellen Knoten oder zusätzliche Konguration. Er erlaubt auÿerdem das Versenden von<br />

NRT-Nachrichten ohne synchrone Uhren.<br />

Der Preis für <strong>die</strong> Vorteile ist eine Lockerung des TDMA-Modells, <strong>die</strong> mit einer leichten Erhöhung<br />

des Jitters einhergeht. Echtzeitslots werden, wie in Abschnitt 3.1.3 beschrieben, für<br />

einen Produzenten von Echtzeitnachrichten reserviert. Während eines solchen Slots darf<br />

kein anderer Produzent Echtzeitnachrichten senden. Anders als im allgemeinen Fall dürfen<br />

bei CAN NRT-Nachrichten jedoch auch innerhalb von reservierten Slots versendet werden.<br />

Dabei muss sichergestellt werden, dass NRT-Nachrichten immer eine niedrigere Priorität<br />

haben als Echtzeitnachrichten. Bei der Arbitrierung gewinnt dadurch eine Echtzeitnachricht<br />

immer gegen eine NRT-Nachricht.<br />

NRT-Nachrichten können jederzeit gesendet werden. Dadurch kann beim Me<strong>die</strong>nzugri<br />

eine zusätzliche Verzögerung entstehen, <strong>die</strong> durch <strong>die</strong> maximale Übertragungsdauer eines<br />

Frames beschränkt ist. Dies muss bei der Planung der Echtzeitslots berücksichtigt werden<br />

(siehe Abschnitt 3.2). Abb. 3.4 veranschaulicht den Me<strong>die</strong>nzugri anhand eines<br />

beispielhaften TDMA-Zyklus-Ausschnitts. Die Nachricht NRT A wird dort während eines<br />

freien Slots gesendet. NRT B ragt in den Echtzeitslot und verzögert so RT1 A . NRT C wird<br />

sendebereit, während RT1 A übertragen wird. Daher erfolgt unmittelbar nach RT1 A eine neue<br />

Arbitrierung. Diese gewinnt NRT C , weil RT1<br />

B noch nicht sendebereit im CAN-Controller<br />

liegt. Die Software triggert <strong>die</strong> Versendung von RT1<br />

B zwar ohne Zeitfehler vor Ende des<br />

ÜSF, den Me<strong>die</strong>nzugri erhält <strong>die</strong> CAN-Hardware jedoch erst nach dem Ende der Übertragung<br />

von NRT C , da <strong>die</strong>se bereits im Gange ist, als RT1<br />

B im CAN-Controller sendebereit<br />

35


3 Echtzeitkommunikationskanäle<br />

wird. Das ÜSF wird entsprechend geplant, dass RT1<br />

B auch ohne <strong>die</strong> Verletzung der Slotgrenze<br />

verschickt werden kann, wenn eine Arbitrierung verpasst und zwischenzeitlich eine<br />

NRT-Nachricht übertragen wird. RT 2 wird nicht verzögert, hat aber nicht <strong>die</strong> eingeplante<br />

maximale Länge, so dass sie das Medium vorzeitig freigibt. Die frei werdende Me<strong>die</strong>nzeit<br />

wird bei Bedarf automatisch für NRT-Nachrichten genutzt.<br />

Anders als für Echtzeitnachrichten, muss für NRT-Nachrichten <strong>die</strong> automatische<br />

Sendewiederholung von CAN nicht deaktiviert oder begrenzt werden, wenn eine zuverlässige<br />

Übertragung gewünscht ist. Die Sendewiederholung ist unproblematisch, da<br />

beim erneuten Senden eine neue Arbitrierung stattndet, <strong>die</strong> einer ggf. wartenden<br />

Echtzeitnachricht den Vortritt gewährt.<br />

Priorisierung der Nachrichten Die nötige Priorisierung lässt sich realisieren, indem das<br />

höchstwertigste Bit der CAN-ID zur Unterscheidung von Echtzeit- und Nicht-Echtzeit-<br />

Nachrichten verwendet wird. Bei Echtzeitnachrichten steht an <strong>die</strong>ser Stelle der Bitwert 0,<br />

bei NRT-Nachrichten der Bitwert 1. Damit haben Echtzeitnachrichten immer eine zahlenmäÿig<br />

kleinere ID und somit <strong>die</strong> höhere Priorität. Um zu garantieren, dass eine ID nicht<br />

doppelt verwendet wird, muss in dem Bitfeld auÿerdem eine Knoten-ID des Absenders<br />

co<strong>die</strong>rt sein.<br />

Es können auch mehrere der höchstwertigen Bits zur Co<strong>die</strong>rung einer Priorität verwendet<br />

werden. Bei Echtzeitnachrichten werden alle <strong>die</strong>se Bits auf 0 gesetzt. Die restlichen<br />

verfügbaren Prioritätswerte können beliebig verwendet werden. Mit ihnen können z. B.<br />

verschiedene Wichtigkeits- bzw. Dringlichkeitsklassen für NRT-Nachrichten geschaen werden,<br />

beispielsweise um Verwaltungs- und Anwendungsnachrichten unterschiedlich zu priorisieren.<br />

36


3.2 Dynamische Planung<br />

3.2 Dynamische Planung<br />

Wie im ersten Teil des Kapitels ausführlich behandelt, werden <strong>die</strong> Echtzeitgarantien beim<br />

Me<strong>die</strong>nzugri über ein TDMA-Schema realisiert. Um Echtzeitkommunikationskanäle zur<br />

Laufzeit aufbauen zu können, müssen <strong>die</strong> Produzenten von Echtzeitnachrichten dem Planer<br />

ihre QoS-Anforderungen übermitteln. Dieser überprüft anschlieÿend <strong>die</strong> Einplanbarkeit.<br />

Wenn <strong>die</strong> Einhaltung der Anforderungen garantiert werden kann, reserviert der Planer<br />

<strong>die</strong> entsprechende Me<strong>die</strong>nzeit als Kommunikationskanal für den Produzenten und teilt<br />

das <strong>die</strong>sem mit. Falls <strong>die</strong> Einplanung nicht möglich ist, wird auch <strong>die</strong>s dem Produzenten<br />

mitgeteilt. Es wird ein zentralisierter Planungsansatz bevorzugt, weil <strong>die</strong>ser im Vergleich zu<br />

einem verteilten Ansatz mit deutlich geringeren Ressourcen-Anforderungen für <strong>die</strong> Knoten<br />

einhergeht, da <strong>die</strong> Planungskomplexität komplett in einen oder mehrere Master-Knoten<br />

verlagert wird. So können auch kleinste eingebettete Systeme wie Smart Sensors an der<br />

dynamischen Me<strong>die</strong>nzeitvergabe partizipieren.<br />

Im Folgenden wird zunächst das Planungsproblem genauer dargestellt. Es folgt in Abschnitt<br />

3.2.2 eine Abhandlung über <strong>die</strong> Dimensionierung der Slotlängen und der zugehörigen<br />

Übertragungsstartfenster. Der Abschnitt 3.2.4 geht auf <strong>die</strong> eigentliche Planung<br />

des TDMA-Zyklus' ein. In <strong>die</strong>ser Arbeit wird nur <strong>die</strong> Echtzeitplanung für ein Broadcast-<br />

Medium besprochen. Garantien, <strong>die</strong> über <strong>die</strong> Grenzen eines Netzwerksegments hinweg<br />

gehen, werden in Abschnitt 3.3.6 für eine auf <strong>die</strong>ser Diplomarbeit aufbauende, weiterführende<br />

Arbeit vorgeschlagen. Ein Protokoll für <strong>die</strong> nötige Kommunikation zwischen Produzenten<br />

und dem Planer-Master wird in Abschnitt 3.3 vorgestellt.<br />

3.2.1 Planungsproblem<br />

Ein Echtzeitnachrichten-Produzent i kann seine Anforderungen über folgende Parameter<br />

ausdrücken:<br />

1. Maximale Nachrichtenlänge LB i in Bytes: Es wird davon ausgegangen, dass<br />

je Echtzeitslot eine Nachricht mit der maximalen Länge von LB i Bytes versendet<br />

wird. Diese wird gegebenenfalls in mehrere Fragmente zerlegt, <strong>die</strong> jeweils als einzelne<br />

Frames übertragen werden. Der Produzent bestimmt aus LB i <strong>die</strong> Fragmentanzahl<br />

Ni<br />

∗ sowie <strong>die</strong> Gesamtdatenmenge aller Fragmente LBi ∗ , welche der Summe aus<br />

LB i und der Byteanzahl der zusätzlichen Header-Informationen entspricht, also der<br />

Gesamtdatenmenge der Nutzdaten, <strong>die</strong> in den Frames übertragen werden. Durch<br />

<strong>die</strong> Anreicherung der Anforderungen um LBi ∗ und Ni<br />

∗ muss der Planer keine Kenntnisse<br />

über <strong>die</strong> bei der regulären Datenübertragung verwendeten Protokolle, wie das<br />

Fragmentierungsprotokoll, haben.<br />

2. Wiederholung Rep i (engl.: repetition): Um <strong>die</strong> Zuverlässigkeit der Datenübertragung<br />

zu erhöhen, kann ein Produzent zusätzliche Me<strong>die</strong>nzeit für zeitredundante<br />

37


3 Echtzeitkommunikationskanäle<br />

(A)<br />

Sensorwert holen<br />

und vorverarbeiten<br />

R 4 D 4<br />

Spielraum zum Versenden<br />

des Sensorwerts<br />

Ansteuerung<br />

eines Aktors<br />

t<br />

(B) RT 2 RT 1 RT 4<br />

RT 2<br />

(C)<br />

Versenden des Sensorwerts<br />

durch <strong>die</strong> <strong>Middleware</strong><br />

Abbildung 3.5: Synchronisierung von Produzent und Kommunikationskanal<br />

mit Hilfe des Slot-Rahmenintervalls am Beispiel: (A) Die lokale Planung der<br />

Prozessorzeit des Knotens sieht nicht verschieb- oder unterbrechbare Aktivitäten<br />

vor. Das verbleibende Zeitfenster, in dem <strong>die</strong> Daten versendet werden<br />

können und sollen, kann dem Netzwerkplaner über das Slot-Rahmenintervall<br />

mitgeteilt werden. Dieser wählt <strong>die</strong> Phasenverschiebung des Kommunikationskanals<br />

passend, so dass Me<strong>die</strong>nplanung (B) und Prozessorplanung (C) harmonieren.<br />

Versendung reservieren lassen. Durch <strong>die</strong> mehrfache Übertragung erhöht sich <strong>die</strong><br />

Wahrscheinlichkeit, dass <strong>die</strong> Daten korrekt empfangen werden. Rep i muss ganzzahlig<br />

und gröÿer oder gleich Null sein und wird als Wiederholungsfaktor für <strong>die</strong> aus LB i<br />

bestimmten Frames verwendet. Die Angabe von Rep i ist optional. Beim Fehlen einer<br />

expliziten Angabe wird Rep i = 0 angenommen, so dass jeder Frame nur einmal<br />

versendet wird.<br />

3. Periode p i : Die Periode bestimmt <strong>die</strong> Zeitspanne zwischen zwei aufeinander folgenden<br />

Sendeslots.<br />

4. Slot-Rahmenintervall (R i , D i ): Hierüber kann der Produzent den für <strong>die</strong> Positionierung<br />

des Slots infrage kommenden Zeitrahmen einschränken. R i ist der früheste<br />

mögliche Zeitpunkt für den Beginn eines Übertragungsslots und D i der letzte erlaubte<br />

Zeitpunkt für das Ende desselben Slots. Bei R i und D i kann es sich auch um<br />

bereits vergangene Zeitpunkte handeln, denn im Zusammenhang mit der Periode p i<br />

ist <strong>die</strong> Positionierung für alle früheren oder späteren Slots eingegrenzt. Die Parameter<br />

sind optional. Sie lassen sich ausnutzen, um den Echtzeitkommunikationskanal<br />

mit der lokalen Ressourcenplanung des Produzentenknoten zu synchronisieren. Auf<br />

<strong>die</strong>se Weise lässt sich beispielsweise eine geringe Verzögerung von der Erzeugung<br />

bis zur tatsächlichen Übertragung der Daten erreichen. Auÿerdem kann auf <strong>die</strong>sem<br />

Wege, wie in Abb. 3.5 illustriert, <strong>die</strong> Nebenläugkeit von Produktions- und Sende-<br />

Task vermieden werden, so dass ein weniger komplexes System nötig ist, das auch<br />

auf Hardware mit stärkeren Ressourcenbeschränkungen lauähig ist.<br />

38


3.2 Dynamische Planung<br />

Die Periode muss als Vielfaches der Planungsgranularität G angegeben werden. Die Planungsgranularität<br />

entspricht der Uhrengranularität g oder einem Vielfachen dessen. Die<br />

Wahl der Planungsgranularität wird in Abschnitt 3.2.5 diskutiert.<br />

Aufgabe des Planers ist <strong>die</strong> Überprüfung, ob <strong>die</strong> Reservierung des Kommunikationskanals<br />

gemäÿ der gegeben Anforderungen im Kontext der bereits vorhandenen Reservierungen<br />

möglich ist. Wenn ja, muss er für <strong>die</strong> Etablierung des Kommunikationskanals <strong>die</strong> Startzeit<br />

des ersten zu nutzenden Slots ri<br />

start sowie <strong>die</strong> Länge des Übertragungsstartfensters f i bestimmen<br />

und an den Produzenten übermitteln. Neben <strong>die</strong>sen Gröÿen muss auch <strong>die</strong> Slotdauer,<br />

<strong>die</strong> Phasenverschiebung und <strong>die</strong> neue Länge des TDMA-Zyklus' berechnet werden.<br />

Auÿerdem muss der Planer einen eventuell vorhandenen Poll-Master informieren, welche<br />

Slots frei sind und somit für NRT-Nachrichten genutzt werden können.<br />

3.2.2 Slotlänge und Übertragungsstartfenster<br />

Die Länge bzw. Dauer der Echtzeitslots eines Produzenten muss berechnet werden, um eine<br />

überschneidungsfreie Planung des TDMA-Zyklus' zu ermöglichen. Sie muss hinreichend<br />

groÿ gewählt werden, um garantieren zu können, dass bei der Übertragung der Echtzeitnachrichten<br />

<strong>die</strong> Slotgrenzen eingehalten werden. Das Übertragungsstartfenster (ÜSF) soll<br />

dem Produzenten <strong>die</strong> Erkennung von Zeitfehlern erleichtern, um den Eekt der Fehler<br />

einzugrenzen. Es gibt <strong>die</strong> Dauer eines Zeitintervalls ab dem Slotbeginn an, während der<br />

das Senden einer Nachricht zulässig ist. Späteres Senden könnte zur Verletzung der Slotgrenzen<br />

führen, <strong>die</strong> eine Ausweitung des Zeitfehlers auf das Gesamtsystem, und dadurch<br />

einen Funktionsausfall zur Folge haben kann.<br />

3.2.2.1 Modellierung der Slots<br />

Abb. 3.6 veranschaulicht das für <strong>die</strong> Berechnungen aufgestellte Modell. Alle Parameter des<br />

Modells sind Worst-Case-Werte, d. h. für Zeiträume wird jeweils <strong>die</strong> längste mögliche Dauer<br />

herangezogen, denn nur so können <strong>die</strong> Garantien auch bei der Verkettung von ungünstigen<br />

Umständen eingehalten werden. Wie bereits im vorherigen Abschnitt erwähnt, können<br />

mehrere Frames pro Slot übertragen werden. Jeder der N i Frames hat ein eigenes Worst-<br />

Case-Fenster der Länge ˆδ j i 7 . Ein solches Fenster j setzt sich jeweils wie folgt zusammen:<br />

ˆδ j i<br />

=<br />

⌈<br />

ˆFi + ˆB i + Ŵi + ˆM j i<br />

⌉<br />

1. ˆFi bezeichnet <strong>die</strong> maximale Zeit zwischen dem Auslösen (engl.: trigger) des Sendevorgangs<br />

eines Frames und der Überprüfung auf Einhaltung des ÜSF. Diese Zeit ist<br />

von Hard- und Software des Produzenten i abhängig.<br />

g<br />

7<br />

Das Dach-Symbol ˆ ist im Folgenden ein Kennzeichen, dass <strong>die</strong> Gröÿe den maximal vorkommenden Wert<br />

(Worst-Case) beinhaltet.<br />

39


3 Echtzeitkommunikationskanäle<br />

Slot beginnt<br />

Slot endet<br />

li<br />

ˆδ1 ˆδNi<br />

i i A<br />

Worst-Case-Fenster<br />

erster Frame<br />

Worst-Case-Fenster<br />

letzter Frame<br />

t<br />

fi<br />

ˆFi<br />

ˆBi<br />

Ŵi<br />

ˆM<br />

1<br />

i<br />

ˆFi<br />

ˆBi<br />

Ni<br />

Ŵi<br />

ˆM<br />

i<br />

t<br />

Trigger<br />

Überprüfung ÜSF ∗<br />

Hardware sendebereit ∗<br />

Sendebeginn auf Medium ∗<br />

Medium wieder frei ∗<br />

nächster mögl. Trigger ∗<br />

Trigger ∗<br />

Überprüfung ÜSF ∗<br />

letzter positiver ÜSF-Test<br />

Hardware sendebereit ∗<br />

Sendebeginn auf Medium ∗<br />

Medium wieder frei ∗<br />

nächster mögl. Trigger ∗<br />

∗<br />

spätester Zeitpunkt<br />

Abbildung 3.6: Modellierung eines Echtzeitslots des Produzenten i zur Bestimmung der Slotlänge li und des ÜSF fi für Ni Frames<br />

40


3.2 Dynamische Planung<br />

2. ˆBi ist <strong>die</strong> maximale Zeit, <strong>die</strong> nach der ÜSF-Überprüfung vergeht, bis <strong>die</strong> Hardware<br />

zum Versenden des Frames über das Medium bereit ist. Auch <strong>die</strong>se ist hard- und<br />

softwareabhängig.<br />

3. Ŵ i beinhaltet <strong>die</strong> maximale Wartezeit der Hardware auf das Erhalten des Me<strong>die</strong>nzugris.<br />

Sie ist vom Netzwerk und Me<strong>die</strong>nzugrisverfahren abhängig. Bei dem in<br />

<strong>die</strong>ser Arbeit verwendeten Verfahren ist Ŵi = Ŵ für alle Produzenten gleich.<br />

j<br />

4. ˆM<br />

i<br />

ist <strong>die</strong> maximale Dauer der tatsächlichen Übertragung des Frames über das Medium.<br />

Sie wird vom Beginn der Übertragung bis zum erneuten Sendebereit-Werden des<br />

Mediums gemessen. Diese Gröÿe ist von der maximalen Länge der zu übertragenden<br />

Daten, dem verwendeten Netzwerk und seiner Übertragungsrate abhängig.<br />

5. Für den Fall, dass das Versenden aller Frames in einem Slot zeitgesteuert ausgelöst<br />

wird, muss <strong>die</strong> Granularität der Uhr bei Bestimmung der Fenstergröÿe berücksichtigt<br />

werden. Das Fenster wird bis zum nächsten möglichen Trigger-Zeitpunkt erweitert,<br />

indem <strong>die</strong> Summe der oben beschriebenen Zeiten auf ein Vielfaches der Uhrengranularität<br />

aufgerundet wird.<br />

Das ÜSF wird so dimensioniert, dass ein pünktlich triggernder Knoten unter Einhaltung<br />

der zur Berechnung herangezogenen Parameter immer alle seine eingeplanten Frames<br />

senden kann. Zur Bestimmung des ÜSF wird folglich <strong>die</strong> Zeit vom Beginn des Slots bis<br />

zum spätesten Überprüfungszeitpunkt des ÜSF im letzten Frame herangezogen.<br />

f i =<br />

⎡<br />

⎤<br />

N∑<br />

i −1<br />

ˆδ j i<br />

⎢<br />

+ ˆF i ⎥<br />

j=1<br />

⎥<br />

g<br />

Das ÜSF wird auf ein Vielfaches der Uhrengranularität g aufgerundet, um ein fehlerfreies<br />

Vergleichen mit der aktuellen Zeit zu ermöglichen, <strong>die</strong> in Schritten der Weite g fortschreitet<br />

8 .<br />

Nach dem ÜSF muss noch hinreichend Zeit bleiben, um <strong>die</strong> Übertragung des letzten Frames<br />

abzuschlieÿen. Die Summe wird wieder auf ein Vielfaches der Uhrengranularität aufgerundet,<br />

um <strong>die</strong> eben erwähnten Granularitätsprobleme beim Sende-Trigger des nachfolgenden<br />

Slot zu vermeiden.<br />

l ′ i =<br />

⌈<br />

f i + ˆB i + Ŵi + ˆM<br />

⌉<br />

N i<br />

i<br />

Zur Vervollständigung des Slots muss auÿerdem ein Zeitpuer von A eingeplant sein, um<br />

der Ungenauigkeit der Uhren gerecht zu werden. Im Allgemeinen muss A = 2α gesetzt<br />

8<br />

Zeitpunkte, <strong>die</strong> innerhalb eines Granularitätsticks liegen, sind nicht unterscheidbar. Zum Beispiel werden<br />

bei g = 10 <strong>die</strong> Zeitpunkte 11 und 19 gleichermaÿen auf <strong>die</strong> Zeit 10 abgebildet. Ein Vergleich mit einem<br />

Zeitstempel höherer Granularität, wie 15, bringt falsche Ergebnisse. Der Zeitpunkt 19 wird als früher<br />

eingeordnet, liegt jedoch in Wahrheit später.<br />

g<br />

41


3 Echtzeitkommunikationskanäle<br />

werden, da <strong>die</strong> Ticks der Uhren verschiedener Knoten nach Annahme bis zu 2α zeitversetzt<br />

liegen können. Wurde der aktuelle Slot α zu spät begonnen, tritt so auch kein Konikt<br />

auf, wenn der nachfolgende Knoten α zu früh beginnt. Wenn in der MAC-Schicht CSMA<br />

zum Einsatz kommt und α > ˆM N i<br />

i<br />

ist, kann A = α gewählt werden. Geht <strong>die</strong> Uhr eines<br />

Knotens vor, so dass er vor dem Beginn seines Slots senden will, wartet er durch CSMA<br />

auf das Freiwerden des Mediums, also maximal bis zum tatsächlichen Beginn des Slots.<br />

Die zur Planung des TDMA-Zyklus' verwendete Länge l i erhält man durch Aufrundung<br />

auf ein Vielfaches der Planungsgranularität G.<br />

l i = ⌈ l ′ i + A ⌉ G<br />

Während sich <strong>die</strong> Parameter Ŵ i und ˆM j i<br />

aus den Netzwerkeigenschaften herleiten<br />

lassen (siehe folgende Abschnitte), sind ˆF i und ˆB i schwieriger zu bestimmen. Sie hängen<br />

von der konkret verwendeten Software und Hardware ab. Sind alle verwendeten<br />

Komponenten bekannt, lassen sich <strong>die</strong> Werte analytisch ermitteln, indem <strong>die</strong> Worst-<br />

Case-Ausführungszeiten der genutzten Software- und Hardwarefunktionen ad<strong>die</strong>rt werden.<br />

Unter Umständen ist auch eine Messung von Ausführungszeiten denkbar. Jedoch<br />

muss beachtet werden, dass Hardware oft auf im Durchschnitt hohe Performance optimiert<br />

ist, z. B. wenn Speicher-Cache zum Einsatz kommt. Hier wird in der Regel ein Wert<br />

gemessen, der weit unter dem Worst-Case liegt. Auÿerdem muss ein groÿes Augenmerk<br />

auf <strong>die</strong> Genauigkeit der Messmethode gelegt werden.<br />

Besonders wichtig ist eine korrekte, also nicht zu niedrige, Abschätzung von ˆB i . Ein zu<br />

kurzes ˆB i kann zu Zeitfehlern auf dem Medium führen, <strong>die</strong> sich auf <strong>die</strong> Funktionsfähigkeit<br />

des Gesamtsystems auswirken können.<br />

Bei der Umsetzung der Slotlängen-Berechnungen in <strong>FAMOUSO</strong> wird von jeweils einer<br />

gemeinsamen oberen Schranke ˆF bzw. ˆB für alle Produzenten (Publisher) ausgegangen.<br />

3.2.2.2 Frame-Anzahl und -Nutzdatenmengen<br />

Für <strong>die</strong> Anwendung des Modells aus dem vorherigen Kapitel, müssen noch einige Parameter<br />

bestimmt werden. Grundlegend ist <strong>die</strong> Anzahl der Frames N i . Sie berechnet sich<br />

aus der Fragmentanzahl Ni<br />

∗ und dem Wiederholungsfaktor Rep i , <strong>die</strong> als Anforderungen<br />

gegeben sind. Jedes der Ni<br />

∗ Fragmente wird Rep i Mal wiederholt:<br />

N i = N ∗ i + N ∗ i · Rep i<br />

= N ∗ i · (Rep i + 1)<br />

Auÿerdem werden für <strong>die</strong> Bestimmung der maximale Übertragungsdauer der Frames <strong>die</strong><br />

Nutzdatenmengen benötigt, <strong>die</strong> in den jeweiligen Frames übertragen werden sollen. Zur<br />

42


3.2 Dynamische Planung<br />

Berechnung der Werte werden <strong>die</strong> Anforderungen Ni<br />

∗ und Rep i sowie LBi ∗ , <strong>die</strong> Gesamtdatenmenge<br />

aller Fragmente, herangezogen. Es wird davon ausgegangen, dass alle Fragmente<br />

mit Ausnahme des letzten immer <strong>die</strong> volle MT U 9 ausnutzen, so dass <strong>die</strong> zugehörigen<br />

Frames LB j i<br />

= MT U Byte Nutzdaten enthalten. Das letzte Fragment transportiert<br />

<strong>die</strong> nach den vorherigen Fragmenten noch verbleibenden Nutzdaten, so dass<br />

hier LB j i<br />

= LBi ∗ − (Ni ∗ − 1) · MT U gilt. Jedes Fragment wird nach der ersten Übertragung<br />

Rep i Mal wiederholt, so dass jedes Fragment in (Rep i + 1) Frames übertragen<br />

wird. Die Anzahl der Frames, <strong>die</strong> nicht das letzte Fragment enthalten, ist daher<br />

Ni<br />

MT U = (Ni ∗ − 1) · (Rep i + 1) = N i − (Rep i + 1). Somit ergibt sich <strong>die</strong> Nutzdatenmenge<br />

des Frames j wie folgt:<br />

LB j i<br />

=<br />

{<br />

MT U<br />

LB ∗ i − (N ∗ i<br />

− 1) · MT U<br />

für 1 ≤ j ≤ Ni<br />

MT U<br />

für N<br />

MT U<br />

+ 1 ≤ j ≤ N i<br />

i<br />

3.2.2.3 CAN<br />

In <strong>die</strong>sem Abschnitt wird <strong>die</strong> Bestimmung der Modellparameter Ŵi und ˆM j i<br />

für CAN-<br />

Netze besprochen. Einussfaktoren sind hier <strong>die</strong> Bitrate, mit welcher der Bus betrieben<br />

wird, und <strong>die</strong> Länge der zu versendenden Frames. Die Bitrate bestimmt <strong>die</strong> Zeit τ bit zur<br />

Übertragung eines einzelnen Bits.<br />

τ bit =<br />

1<br />

Bitrate<br />

Die Dauer der Übertragung eines Frames mit der Nutzdatenlänge LB j i<br />

variiert mit dem<br />

Nachrichteninhalt, da gemäÿ der Bit-Stung-Regel zusätzliche Bits eingefügt werden<br />

müssen. Sie ist jedoch durch folgendes Maximum beschränket (vgl. [DB07]):<br />

Ĉ j i<br />

=<br />

(8 · LB j i + 67 + ⌊<br />

= (10 · LB j i + 80) · τ bit<br />

⌋)<br />

8 · LB j i + 54 − 1 · τ bit<br />

4<br />

Es wird von der Verwendung von 29-Bit-Identiern ausgegangen. Neben den 8 · LB j i<br />

Bit<br />

Nutzdaten ist das Medium hier für weitere 67 Bitzeiten belegt, <strong>die</strong> sich aus Frame-Header-<br />

Feldern und Inter-Frame Space zusammensetzen. Die Bit-Stung-Regel wird auf alle Nutzdatenbits<br />

und auf 54 der Overhead-Bits angewendet. Im Worst-Case wird nach den ersten<br />

5 Bits und im Anschluss nach jeweils 4 Bits ein Stu-Bit eingefügt 10 . Wird das Stung<br />

auf N Bits angewendet, so werden folglich maximal ⌊ ⌋<br />

N−1<br />

4 Bits eingefügt.<br />

9<br />

MTU = Maximum Transmission Unit (maximale Nutzdatenmenge in einem Frame)<br />

10<br />

Auch <strong>die</strong> Stu-Bits selbst müssen beim Bit-Stung berücksichtigt werden. So wird <strong>die</strong> Bitfolge<br />

"00000111100001" beispielsweise in "00000111110000011" überführt.<br />

43


3 Echtzeitkommunikationskanäle<br />

Bitrate τ bit<br />

ˆMmin ˆMmax<br />

1 Mbit/s 1 µs 111 µs 191 µs<br />

500 Kbit/s 2 µs 222 µs 382 µs<br />

250 Kbit/s 4 µs 444 µs 764 µs<br />

Tabelle 3.1: Zeitparameter bei CAN. Die Übertragungsdauer für ein Bit<br />

sowie für eine Nachricht mit minimaler und maximaler Nutzdatenmenge für<br />

typische Bitraten bei 29-Bit-IDs<br />

Die maximale Dauer von Inanspruchnahme bis zur erneuten Freigabe des Mediums erhöht<br />

sich bei Beachtung der Mechanismen zur Fehlersignalisierung um weitere 31 Bitzeiten.<br />

ˆM j i<br />

= Ĉj i + 31τ bit<br />

= (10 · LB j i + 111) · τ bit<br />

Die Tab. 3.1 gibt einen Überblick über <strong>die</strong> Worst-Case Me<strong>die</strong>nbelegungszeiten für Nachrichten<br />

ohne Nutzdaten bzw. mit dem Maximum von 8 Byte Nutzdaten.<br />

Bei CAN können jederzeit NRT-Nachrichten mit beliebiger Nutzdatenmenge versendet<br />

werden. Bei einer Arbitrierung gewinnt jedoch eine Echtzeitnachricht immer gegen eine<br />

NRT-Nachricht. Somit entspricht <strong>die</strong> maximale Wartezeit auf das Freiwerden des Mediums<br />

Ŵi der maximalen Me<strong>die</strong>nbelegungszeit für <strong>die</strong> längste mögliche Nachricht.<br />

Ŵ i = ˆM max<br />

= (10 · 8 + 111) · τ bit = 191τ bit<br />

3.2.2.4 Ethernet<br />

Dieser Abschnitt behandelt <strong>die</strong> Modellparameter Ŵi und ˆM j i<br />

für typische Ethernet-Netze<br />

gemäÿ IEEE 802.3 [iee08]. Wie bei CAN spielt auch hier <strong>die</strong> Bitrate eine wesentliche Rolle,<br />

denn sie bestimmt <strong>die</strong> Bitübertragungszeit τ bit .<br />

Jedem übertragenen Frame wird eine Präambel der Länge 8 Byte vorangestellt. Der Frame<br />

besteht aus 18 Byte Headerdaten und bis zu MT U = 1500 Byte Nutzdaten. Er muss<br />

jedoch immer eine minimale Länge von 64 Byte haben und wird falls nötig verlängert. Die<br />

Übertragung eines Frames mit LB j i<br />

Byte Nutzdaten dauert folglich:<br />

C j i = (8 + max{64, 18 + LBj i }) · 8τ bit<br />

44


3.2 Dynamische Planung<br />

Bitrate τ bit<br />

ˆMmin ˆMmax<br />

10 Mbit/s 0,1 µs 67,2 µs 1.230,4 µs<br />

100 Mbit/s 0,01 µs 6,72 µs 123,04 µs<br />

1 Gbit/s 0,001 µs 4,26 µs 12,304 µs<br />

Tabelle 3.2: Zeitparameter bei Ethernet. Die Übertragungsdauer für ein Bit<br />

sowie für eine Nachricht mit minimaler (0 Byte) und maximaler Nutzdatenmenge<br />

(1500 Byte) für typische Bitraten.<br />

Bei Gigabit-Ethernet muss der Frame mindestens 4.096 Bitzeiten lang sein, so dass sich<br />

dort statt einem Minimum von 64 Byte ein Minimum von 512 Byte ergibt:<br />

C j i = (8 + max{512, 18 + LBj i }) · 8τ bit<br />

Hinzu kommt ein Inter-Packet-Gap, also ein minimale Wartezeit nach der Übertragung<br />

eines Pakets. Diese beträgt 96 Bitzeiten.<br />

ˆM j i<br />

= C j i + 96τ bit<br />

Tab. 3.2 gibt einen Überblick zu typischen Zeitparametern von Ethernet nach der aufgestellten<br />

Berechnungsvorschrift. Ethernet ist ein sehr umfangreicher Standard mit zahlreichen<br />

Facetten, deren Betrachtung an <strong>die</strong>ser Stelle den Rahmen sprengen würde, wie beispielsweise<br />

Envelope-Frames mit erweiterter maximaler Nutzdatenmenge, Packet-Bursting oder<br />

<strong>die</strong> Möglichkeit zur Verlängerung des Inter-Packet-Gaps. Kommen <strong>die</strong>se Besonderheiten<br />

zum Einsatz, müssen sie bei der Berechnung der maximalen Me<strong>die</strong>nbelegungszeit berücksichtigt<br />

werden.<br />

Durch das TDMA-Schema, das Nachrichten verschiedener Absender bei Ethernet zeitlich<br />

isoliert, muss vor der Übertragung nicht auf das Freiwerden des Mediums gewartet werden.<br />

Ŵ i = 0<br />

3.2.3 Phasenverschiebungsfenster<br />

Das Slot-Rahmenintervall, welches von einem Produzenten als Anforderung angegeben werden<br />

kann, ist durch absolute globale Zeitwerte gegeben. Für <strong>die</strong> Planung des TDMA-Zyklus'<br />

werden jedoch Phasenverschiebungswerte relativ zum Zyklusbeginn z k benötigt. Daher<br />

wird das Slot-Rahmenintervall (R i , D i ) in das Phasenverschiebungsfenster (vi<br />

min , vi width )<br />

umgerechnet:<br />

45


3 Echtzeitkommunikationskanäle<br />

v min<br />

i =<br />

(<br />

⌈R i ⌉ G<br />

− z k) mod + p i<br />

v width<br />

i = ⌊D i ⌋ G<br />

− l i − ⌈R i ⌉ G<br />

Die Werte müssen in das durch <strong>die</strong> Planungsgranularität G vorgegebene Zeitraster passen.<br />

Daher wird R i als frühster erlaubter Zeitpunkt auf das nächsthöhere Vielfache von<br />

G aufgerundet, während D i als spätester erlaubter Zeitpunkt auf ein Vielfaches von<br />

G abgerundet wird. Die Variable z k entspricht dem Zeitpunkt des Beginns vom aktuellen<br />

TDMA-Zyklus. Falls ⌈R i ⌉ G<br />

− z k < 0 ist, stellt <strong>die</strong> Operation mod + sicher, dass<br />

0 ≤ vi<br />

min < p i gilt.<br />

Nach der Berechnung der bei der Planung gesuchten Phasenverschiebung v i (siehe folgender<br />

Abschnitt), muss ein absoluter Zeitpunkt für den Beginn des ersten Sendeslots<br />

bestimmt werden:<br />

r start<br />

i = z k + v i<br />

Falls der Zeitpunkt ri<br />

start nicht in der Zukunft liegt, wenn er den Produzenten i erreicht,<br />

kann <strong>die</strong>ser ihn in einen zukünftigen Zeitpunkt überführen, indem er Vielfache der Periode<br />

ad<strong>die</strong>rt.<br />

3.2.4 Planung des TDMA-Zyklus'<br />

Das hier beschriebene Planungsverfahren <strong>die</strong>nt der Reservierung von Me<strong>die</strong>nzeit für Produzenten<br />

von Echtzeitnachrichten gemäÿ deren Anforderungen. Eine Zuteilung von Me<strong>die</strong>nzeit<br />

in Form eines Kommunikationskanals aus periodisch wiederholten Slots erfolgt<br />

nur dann, wenn <strong>die</strong> Anforderungen im Kontext der schon eingeplanten Kanäle erfüllbar<br />

sind, ohne dass sich Slots überschneiden.<br />

Die Anforderungen sind hier in Form einer Periode p i , einer Slotlänge l i und optional<br />

eines Phasenverschiebungsfensters (vi<br />

min , vi<br />

width ) gegeben. Die Slotlänge und das Intervall<br />

wurden in den vorherigen Abschnitten aus anderen Parametern bestimmt. Die Periode<br />

stammt direkt vom Produzenten. Wenn eine Reservierung möglich ist, bestimmt der Planer<br />

<strong>die</strong> Phasenverschiebung v i der Slots. Aus <strong>die</strong>ser kann, wie im vorherigen Abschnitt<br />

beschrieben, <strong>die</strong> Bereitzeit ri<br />

start berechnet werden, zu der dem Produzenten i das Medium<br />

für <strong>die</strong> erste Datenübertragung zur Verfügung steht. Alle Gröÿen sind hier Vielfache<br />

der Planungsgranularität G, <strong>die</strong> in Abschnitt 3.2.5 diskutiert wird.<br />

Da <strong>die</strong> Planung zur Laufzeit stattndet, ist <strong>die</strong> Menge der Produzenten und ihrer Anforderungen<br />

a-priori unbekannt. Es können jederzeit neue Reservierungsanfragen und Freigabeauorderungen<br />

an den Planer gerichtet werden. Der Planungsalgorithmus ist folglich<br />

46


3.2 Dynamische Planung<br />

p 1 = 4<br />

p 1 = 4<br />

p 3 = 2<br />

(A) RT 1 RT 2 RT 1 RT 2<br />

p 2 = 4<br />

(B) RT 1 RT 3 RT 2 RT 3 RT 1 RT 3 RT 2 RT 3<br />

p 2 = 4<br />

Abbildung 3.7: Ein optimaler Planer muss bereits reservierte Ressourcen<br />

umplanen können. Ein dritter Kanal mit p 3 = 2 kann bei (A) nur reserviert<br />

werden, wenn der bestehende Plan zu (B) geändert wird.<br />

G G G G G . . .<br />

(M) RT 1 NRT RT 2 NRT<br />

(F) 0 1 1 1 0 0 1 1<br />

z k<br />

t<br />

Abbildung 3.8: Me<strong>die</strong>nzuteilung (M) und zugehöriges Feld F ree zur Speicherung<br />

freier Slots (F).<br />

auf das Hinzufügen und Freigeben von Kanälen ausgelegt. Das Finden eines optimalen<br />

Plans 11 wird hingegen in <strong>die</strong>ser Arbeit nicht behandelt. Mangels Kenntnis der zukünftig<br />

gestellten Anforderungen, wäre hierzu <strong>die</strong> Umplanung von schon zugesicherten Ressourcen<br />

nötig. Abb. 3.7 veranschaulicht das am Beispiel. Die Schwierigkeit bei der Umplanung ist<br />

<strong>die</strong> verlässliche systemweite Etablierung des neuen Plans, ohne <strong>die</strong> existierenden Echtzeitgarantien<br />

zu beeinträchtigen. Sie ist im Allgemeinen nicht ohne aufwendigere Protokolle<br />

und zusätzlichen Ressourcenaufwand in den Knoten und auf dem Medium machbar. Das<br />

hier angesprochen Thema könnte in einer weiterführenden Arbeit behandelt werden.<br />

3.2.4.1 Repräsentation des Plans<br />

Für eine vereinfachte Darstellung des TDMA-Zyklus' wird <strong>die</strong> Diskretisierung der Zeit<br />

nach der Uhren- bzw. Planungsgranularität ausgenutzt. Hierdurch lässt sich <strong>die</strong> Länge<br />

von reservierten und freien Slots durch eine endlichen Anzahl von nicht unterteilbaren<br />

Zeitabschnitten beschreiben. Die nicht unterteilbaren Zeitabschnitte werden im Folgenden<br />

atomare Slots genannt. Bei einer Zykluslänge Z setzt sich der TDMA-Zyklus aus<br />

AtomSlotsP erCycle = Z G<br />

atomaren Slots zusammen. Auch <strong>die</strong> Phasenverschiebung und<br />

<strong>die</strong> Periode lassen sich in atomaren Slots bemessen. Die Repräsentation des errechneten<br />

Plans enthält daher für jeden Produzent i der N Produzenten mit erfolgreich reserviertem<br />

Kommunikationskanal ein Tupel RT (i), dessen Einträge als Anzahl von atomaren Slots zu<br />

interpretieren sind:<br />

11<br />

Ein optimaler Planer ndet immer einen korrekten Plan, wenn ein solcher existiert.<br />

47


3 Echtzeitkommunikationskanäle<br />

RT (i).p = p i<br />

G<br />

RT (i).l = l i<br />

G<br />

RT (i).v = v i<br />

G<br />

(Periode)<br />

(Slotlänge)<br />

(Phasenverschiebung)<br />

Da p i , l i und v i immer Vielfache von G sind, ist hier keine Rundung nötig. Die Menge von<br />

allen Tupeln {RT (i), 0 ≤ i ≤ N −1} beschreibt den TDMA-Zyklus bereits vollständig. Auf<br />

Basis <strong>die</strong>ser Informationen ist es jedoch nur mit groÿem Aufwand möglich, einen freien<br />

Slot zu nden bzw. zu überprüfen, ob ein Slot frei ist. Für eine eziente Realisierung<br />

eines Reservierungsalgorithmus' muss aber mindestens eine <strong>die</strong>ser Aufgaben schnell ausführbar<br />

sein. Daher wird parallel zu den Reservierungsinformationen eine Datenstruktur<br />

zur Speicherung der freien Slots verwaltet. Für jeden <strong>die</strong>ser atomaren Slots wird in einem<br />

Feld (engl.: array) F ree gespeichert, ob er Teil eines freien Slots ist. Die Reihenfolge der<br />

Feldelemente entspricht der zeitlichen Reihenfolge der atomare Slots innerhalb des TDMA-<br />

Zyklus'. Abb. 3.8 veranschaulicht <strong>die</strong>s. Das Feld erlaubt einen Zugri auf <strong>die</strong> Elemente in<br />

der Laufzeit O(1). Somit kann sehr ezient überprüft werden, ob ein Slot frei ist.<br />

Wenn das Versenden von NRT-Nachrichten wie bei Ethernet durch Polling geregelt wird,<br />

muss der Poll-Master immer <strong>die</strong> momentan freien Slots kennen. Zur Übermittlung <strong>die</strong>ser<br />

Information kann das eben besprochene Feld übertragen werden. Um Speicher und ggf.<br />

Netzwerkressourcen zu sparen, können <strong>die</strong> Belegungsinformationen von 8 aufeinanderfolgenden<br />

atomaren Slots in einem Byte des Feldes co<strong>die</strong>rt werden.<br />

Alle Algorithmen in den folgenden Teilabschnitten haben Zugri auf <strong>die</strong> soeben denierten<br />

Zustandsdaten, <strong>die</strong> den aktuellen Plan repräsentieren.<br />

3.2.4.2 Reservierung<br />

Zur Etablierung eines Kommunikationskanals schickt ein Produzent eine Reservierungsanfrage<br />

an den Planer. Dieser überprüft zunächst <strong>die</strong> Einplanbarkeit. Wenn <strong>die</strong>ser Test positiv<br />

ausgeht, wird <strong>die</strong> entsprechende Me<strong>die</strong>nzeit für den Produzenten reserviert.<br />

Ein- und Ausgabedaten Da der im Folgenden beschriebene Reservierungsalgorithmus<br />

mit atomaren Slots rechnet, müssen <strong>die</strong> Anforderungen der Reservierungsanfrage zunächst<br />

umgerechnet werden. Die Anfrage (engl.: request) von Produzent i wird dann durch <strong>die</strong><br />

folgenden Variablen beschrieben:<br />

Req.p = p i<br />

G<br />

Req.l = l i<br />

G<br />

Req.vBegin = vmin<br />

i<br />

G<br />

Req.vW idth = vwidth i<br />

G<br />

(Periode)<br />

(Slotlänge)<br />

(minimale Phasenverschiebung)<br />

(Breite des v-Suchfensters)<br />

48


3.2 Dynamische Planung<br />

Eingabe : Reservierungsanfrage Req<br />

Ausgabe : Suchfenster (vsBegin, vsEnd)<br />

1 if v-Fenster in Req angegeben then<br />

2 vsBegin ← Req.vBegin<br />

3 vsEnd ← vsBegin + min {Req.vW idth, Req.p, AtomSlotsP erCycle}<br />

4 else<br />

5 vsBegin ← 0<br />

6 vsEnd ← min {Req.p, AtomSlotsP erCycle}<br />

7 end<br />

Algorithmus 3.1: Eingrenzung des Suchfensters der Phasenverschiebung<br />

Davon sind <strong>die</strong> letzten beiden Parameter optional. Ausgabedaten sind ein boolescher Wert,<br />

ob eine Reservierung möglich ist, und gegebenenfalls <strong>die</strong> Phasenverschiebung vResult.<br />

Diese lässt sich im Anschluss über v i = vResult·G in <strong>die</strong> sonst übliche Form überführen.<br />

Eingrenzung des Suchbereichs möglicher Phasenverschiebungen Bei der Suche nach<br />

vResult lässt sich <strong>die</strong> strenge Periodizität der reservierten und des zu reservierenden Slots<br />

ausnutzen. Wird ein Kommunikationskanal i nämlich um eine oder mehrere seiner Perioden<br />

p i verschoben, ändert sich nichts am TDMA-Zyklus. Folglich reicht für <strong>die</strong> Suche der<br />

Phasenverschiebung v i immer ein Bereich der Breite p i aus. Wird innerhalb <strong>die</strong>ser Breite<br />

kein hinreichender freier Slot gefunden, kann <strong>die</strong> Periodizität nicht erfüllt werden. Eine Reservierung<br />

ist folglich nicht möglich. Muss der momentane TDMA-Zyklus zur Einplanung<br />

verlängert werden, so wird der bisherige Zyklus durch <strong>die</strong> Periodizität vervielfacht. Daher<br />

ist <strong>die</strong> Suche nach passenden freien Slots nur bis zum bisherigen Zyklus-Ende sinnvoll.<br />

Anschlieÿend wiederholen sich nur <strong>die</strong> bereits geprüften freien Slots in einer zeitversetzten<br />

Kopie.<br />

Algorithmus 3.1 wendet <strong>die</strong>se Erkenntnisse an, um den Suchbereich einzugrenzen. Wenn<br />

<strong>die</strong> Phasenverschiebung nicht durch <strong>die</strong> Anforderungen eingegrenzt ist, wird ab Beginn des<br />

TDMA-Zyklus' gesucht. Falls entsprechende Angaben gemacht wurden, beginnt <strong>die</strong> Suche<br />

gemäÿ der Anforderungen. Für das Ende wird jedoch nicht pauschal <strong>die</strong> angegebene Fensterbreite<br />

ad<strong>die</strong>rt. Auch hier lässt sich <strong>die</strong> Periodizität wie oben beschrieben ausnutzen. So<br />

wird ein Fenster, das <strong>die</strong> Periode oder Zykluslänge überschreitet, entsprechend gekürzt.<br />

Intuitiver Einplanbarkeitstest Zum Testen der Einplanbarkeit muss eine Phasenverschiebung<br />

gefunden werden, bei der es nicht zu Konikten, also Überschneidungen, mit<br />

Slots anderer Produzenten kommt. Da keine Kenntnisse über zukünftige Reservierungsanfragen<br />

vorliegen, <strong>die</strong> sich zur Optimierung des Plans ausnutzen lieÿen, ist der Algorithmus<br />

auf <strong>die</strong> Minimierung des momentanen Rechenaufwands ausgelegt. Er verfolgt dazu eine<br />

First-Fit-Strategie, d. h. der Algorithmus bricht ab, sobald er <strong>die</strong> erste passende Lösung<br />

gefunden hat, ohne nach weiteren möglichen Lösungen zu suchen. In Algorithmus 3.2 wird<br />

<strong>die</strong> Anwendung der Strategie gezeigt. Die Variable v enthält <strong>die</strong> jeweils gerade betrachtete<br />

49


3 Echtzeitkommunikationskanäle<br />

Eingabe : Reservierungsanfrage Req, Suchfenster (vsBegin, vsEnd)<br />

Rückgabe : Phasenverschiebung vResult, wenn planbar; -1 sonst<br />

1 v ← vsBegin<br />

2 while v < vsEnd do<br />

3 if Req planbar mit Phasenverschiebung v then // s. Algorithmus 3.3<br />

4 return v<br />

5 end<br />

6 v ← v + 1<br />

7 end<br />

8 return -1<br />

Algorithmus 3.2: Intuitiver Einplanbarkeitstest: Suche nach koniktfreier Phasenverschiebung<br />

gemäÿ First-Fit-Strategie<br />

Eingabe : Reservierungsanfrage Req, Phasenverschiebung v<br />

Rückgabe : Konikt mit anderen Slots?<br />

1 NewAtomSlotsP erCycle ← kgV(AtomSlotsP erCycle, Req.p)<br />

2 vr ← v<br />

3 repeat<br />

4 vl ← vr<br />

5 repeat<br />

6 if F ree(vl mod AtomSlotsP erCycle) ≠ 1 then<br />

7 return Konikt<br />

8 end<br />

9 vl ← vl + 1<br />

10 until vl < vr + Req.l<br />

11 vr ← vr + Req.p<br />

12 until vr < v + NewAtomSlotsP erCycle<br />

13 return kein Konikt<br />

Algorithmus 3.3: Intuitiver Einplanbarkeitstest: Überprüfung einer Phasenverschiebung<br />

auf Koniktfreiheit mit bereits reservierten Kommunikationskanälen<br />

Phasenverschiebung. Sie wird mit dem Beginn des Suchfensters initialisiert. Es wird überprüft,<br />

ob eine koniktfreie Einplanung mit v möglich ist. Wenn ja, wurde eine passende<br />

Lösung gefunden <strong>die</strong> direkt zurückgegeben wird. Anderenfalls wird v inkrementiert und<br />

wiederum auf Einplanbarkeit überprüft. Wenn v das Ende des Suchfensters erreicht, wurde<br />

keine Lösung gefunden, d. h. der angefragte Kommunikationskanal Req ist nicht reservierbar.<br />

Algorithmus 3.3 konkretisiert den Test einer gegeben Phasenverschiebung auf Konikte<br />

mit den bereits reservierten Kommunikationskanälen, der in Algorithmus 3.2 verwendet<br />

wurde. Bei dem Test werden im Feld F ree alle atomaren Slots überprüft, <strong>die</strong> der angefragte<br />

Kommunikationskanal bei der Phasenverschiebung v belegen würde. Ist einer der<br />

Slots nicht frei (Zeile 6), kann sofort abgebrochen werden (Zeile 7), denn eine Einplanung<br />

ist mit <strong>die</strong>sem v nicht möglich. Der restliche Code ist im Wesentlichen dafür zuständig,<br />

<strong>die</strong> Positionen der zu überprüfenden atomaren Slots zu berechnen. Wenn <strong>die</strong> momentane<br />

50


3.2 Dynamische Planung<br />

Angefragte Slotlänge Req.l = 20<br />

v = 3 vr<br />

vl<br />

v = 4 vr<br />

20∑<br />

i=1<br />

i = 210 Überprüfungen<br />

vl<br />

. . .<br />

v = 22<br />

vr<br />

frei<br />

belegt<br />

Abbildung 3.9: Optimierungspotential beim intuitiven Einplanbarkeitstest<br />

am Beispiel: Da v bei der First-Fit-Suche inkrementiert wird, werden viele<br />

Abfragen von F ree unnötigerweise mehrfach getätigt.<br />

Zykluslänge nicht ein Vielfaches der angefragten Periode ist, muss der TDMA-Zyklus verlängert<br />

werden. Die eventuell erhöhte Zykluslänge NewAtomSlotsP erCycle wird in Zeile 1<br />

berechnet. In Zeile 2 wird vr initialisiert, das auf den Anfang des momentan untersuchten<br />

Slots zeigt. In der Schleife Zeile 3-12 wird mit Hilfe <strong>die</strong>ser Variable über alle Slots iteriert,<br />

aus denen sich der Kommunikationskanal in dem neuen TDMA-Zyklus zusammensetzen<br />

würde. Die Variable vl, <strong>die</strong> innerhalb der Schleife jeweils mit vr initialisiert wird (Zeile 4),<br />

iteriert in der eingeschachtelten Schleife (Zeile 5-10) über <strong>die</strong> atomaren Slots, aus denen<br />

sich der jeweilige Slot zusammensetzt. Innerhalb <strong>die</strong>ser Schleife erfolgt <strong>die</strong> bereits erwähnte<br />

Überprüfung der atomaren Slots, und ggf. der Abbruch des Algorithmus'. Falls <strong>die</strong><br />

Schleifen komplett abgearbeitet werden, war keiner der atomaren Slots belegt. Somit gibt<br />

es in <strong>die</strong>sem Fall keinen Konikt mit anderen Kommunikationskanälen (Zeile 13). In Zeile 6<br />

wird bei der Adressierung innerhalb des Feldes F ree eine Modulo-Operation verwendet.<br />

Diese ist nötig, weil sowohl NewAtomSlotsP erCycle als auch v gröÿer sein kann, als<br />

<strong>die</strong> aktuelle Zykluslänge AtomSlotsP erCycle, durch <strong>die</strong> F ree bemessen wird. Auÿerdem<br />

können sich Slots auch über Zyklusgrenzen hinweg erstrecken. Da sich der TDMA-Zyklus<br />

wiederholt, kann durch <strong>die</strong> Modulo-Operation auch der Belegungszustand von atomaren<br />

Slots hinter dem Zyklusende überprüft werden.<br />

Optimierungen Der intuitive Algorithmus zum Einplanbarkeitstest lässt sich zur Verringerung<br />

der Laufzeit optimieren, jedoch auf Kosten der Lesbarkeit. Daher werden <strong>die</strong><br />

angewendeten Optimierungen hier separat beschrieben.<br />

Abb. 3.9 veranschaulicht am Beispiel, dass <strong>die</strong> Laufzeit der Kombination der Algorithmen<br />

3.2 und 3.3 bei zu kurzen freien Slots unnötig lang ist. Es soll ein Slot der Länge 20<br />

reserviert werden. Bei einem freien Slot der Länge 19 fallen bei der bisherigen Lösung<br />

210 Überprüfungen von atomaren Slots an, da v im First-Fit-Algorithmus inkrementiert<br />

wird, ohne <strong>die</strong> Erkenntnisse eines erkannten Slot-Konikts auszunutzen. Nachdem in der<br />

ersten Iteration über den freien Slot mit v = 3 kein hinreichend langer Slot gefunden<br />

wurde, ist bereits klar, dass bei v = 4 bis v = 22 auch kein passender Slot gefunden wird;<br />

51


3 Echtzeitkommunikationskanäle<br />

schlieÿlich verändert sich <strong>die</strong> Belegung der atomaren Slots nicht zwischenzeitlich. Auÿerdem<br />

verkürzt sich der untersuchte freie Slot durch das Vorrücken des Slotbeginns sogar.<br />

Der Aufwand lässt sich deutlich verringern, wenn der Konikttest den nächsten Phasenverschiebungskandidaten<br />

angeben kann. Im Falle eines Konikts erhöht <strong>die</strong>ser v um vl − vr,<br />

bevor v durch den First-Fit-Algorithmus inkrementiert wird. Dann wird nach v = 3 direkt<br />

auf v = 23 gesprungen, so dass statt 210 nun nur noch 20 Überprüfungen von atomaren<br />

Slots stattnden. Durch <strong>die</strong>se Verbesserung wird kein atomarer Slot mehrfach überprüft,<br />

so dass sich bei dem Einplanbarkeitstest eine Worst-Case Laufzeitkomplexität von O(M)<br />

ergibt, wobei M der neuen Zykluslänge entspricht.<br />

Die neue Zykluslänge NewAtomSlotsP erCycle muss auÿerdem nicht für jedes v neu<br />

berechnet werden, sondern sollte auÿerhalb aller Schleifen bestimmt werden. Sie ist nämlich<br />

lediglich von Perioden abhängig und damit invariant bezüglich der Schleifen.<br />

Auch könnte <strong>die</strong> auf einigen Architekturen sehr teure Modulo-Operation in Algorithmus<br />

3.3 (Zeile 6) eingespart werden, indem vor den umgebenden Schleifen überprüft wird,<br />

ob vr bzw. vl gröÿer oder gleich AtomSlotsP erCycle ist. Ggf. muss mit Indizes weitergearbeitet<br />

werden, <strong>die</strong> auf den erlaubten Wertebereich heruntergebrochenen wurden. D. h. auch,<br />

dass der veränderte Algorithmus <strong>die</strong> Schleifen wenn nötig in mehrere Teile zerlegen muss.<br />

Freihalten von NRT-Reserven Netzwerke wie Ethernet sind zum Versenden von NRT-<br />

Nachrichten auf freie Slots angewiesen (siehe Abschnitt 3.1.4.1). Daher muss dort bei der<br />

Überprüfung der Einplanbarkeit auch beachtet werden, dass noch hinreichend lange Slots<br />

frei bleiben. Dies kann in einem zusätzlichen Test überprüft werden, der ausgeführt wird,<br />

wenn eine passende Phasenverschiebung gefunden wurde. Falls <strong>die</strong>ser Test feststellt, dass<br />

bei dem aktuellen Planvorschlag keine hinreichenden NRT-Reserven mehr frei sind, wird<br />

<strong>die</strong> First-Fit-Suche fortgeführt. Anderenfalls kann der Plan so akzeptiert werden.<br />

Reservierung des Kommunikationskanals Wenn der Einplanbarkeitstest positiv war,<br />

kann der Kommunikationskanal reserviert werden. Dazu wird ein neues Tupel RT (i) mit<br />

den entsprechenden Parametern angelegt und <strong>die</strong> Anzahl der reservierten Kommunikationskanäle<br />

N inkrementiert. Auÿerdem muss ggf. der TDMA-Zyklus verlängert werden. Dazu<br />

wird <strong>die</strong> Zykluslänge AtomSlotsP erCycle auf NewAtomSlotsP erCycle gesetzt und das<br />

Feld F ree verlängert. Der neu angelegte Bereich von F ree wird mit Kopien des bisherigen<br />

Inhalts gefüllt. Auÿerdem müssen <strong>die</strong> vom Kommunikationskanal belegten atomaren<br />

Slots in F ree als belegt markiert werden. Dazu kann eine Abwandlung von Algorithmus 3.3<br />

eingesetzt werden, in der <strong>die</strong> Zeilen 6-8 durch F ree(vl mod NewAtomSlotsP erCycle) ← 0<br />

ersetzt werden. Auÿerdem entfällt der Rückgabewert.<br />

52


3.2 Dynamische Planung<br />

3.2.4.3 Freigabe<br />

Die Freigabe eines Kommunikationskanals ist seitens des Planers nicht an Bedingungen<br />

geknüpft, so dass <strong>die</strong> Schritte aus der eben angegeben Reservierung des<br />

Kommunikationskanals lediglich rückgängig gemacht werden müssen. Das Tupel RT (i)<br />

des Kommunikationskanals muss entfernt und <strong>die</strong> Anzahl N dekrementiert werden. Die<br />

belegten atomaren Slots aus F ree müssen als frei markiert und <strong>die</strong> TDMA-Zykluslänge<br />

AtomSlotsP erCycle muss gegebenenfalls verringert werden.<br />

3.2.4.4 Änderung von Anforderungen<br />

Die Änderung von Anforderungen eines Kommunikationskanals kann als Verkettung<br />

von Freigabe und anschlieÿender Neureservierung implementiert werden. Falls eine Reservierung<br />

mit den neuen Anforderungen nicht möglich ist, kann der alte Kommunikationskanal<br />

durch eine Reservierung mit den alten Parametern wiederhergestellt werden, wenn<br />

<strong>die</strong> Ressourcen zwischenzeitlich nicht für einen anderen Kommunikationskanal reserviert<br />

wurden.<br />

3.2.5 Einussfaktoren<br />

Neben den Anforderungen der Reservierungsanfragen und den Netzwerkeigenschaften<br />

haben auch andere, weniger oensichtliche Parameter Einuss auf <strong>die</strong> Planbarkeit und<br />

Me<strong>die</strong>nausnutzung.<br />

Planungsgranularität Der im letzten Abschnitt angegebene Algorithmus zur Einplanung<br />

von Kommunikationskanälen basiert auf der Diskretisierung der Zeit in atomare Slots der<br />

Dauer G. Bei der Wahl von G besteht ein Zielkonikt zwischen dem Aufwand der Planung<br />

und dem resultierenden nutzbaren Datendurchsatz des Netzwerkes. Der Speicherbedarf<br />

des vom Planungsalgorithmus verwendeten Feldes F ree ist proportional zu Z G<br />

. Auch <strong>die</strong><br />

Laufzeitkomplexität der Algorithmen ist als O ( Z<br />

G) von der Dauer der atomaren Slots abhängig.<br />

Die Wahl eines groÿen G ist somit vorteilhaft für <strong>die</strong> Ressourcen des Planers, weil<br />

dadurch Speicher und Rechenzeit gespart werden. Andererseits führt <strong>die</strong> Wahl eines groÿen<br />

G auch zu gröÿeren Slotlängen. Diese hängen gemäÿ der Modellierung aus Abschnitt 3.2.2<br />

nicht nur von der maximal zu übertragenden Datenmenge und Netzwerkparametern ab.<br />

Auch hard- und softwarebedingte Verzögerungen beim Senden, <strong>die</strong> Uhrengranularität und<br />

nicht zuletzt <strong>die</strong> Planungsgranularität G spielen eine groÿe Rolle. Da <strong>die</strong> Längen der Slots<br />

für <strong>die</strong> Planung des TDMA-Zyklus' immer Vielfachen von G entsprechen müssen, ist es<br />

meist nötig, <strong>die</strong> Slots zu verlängern. Die Folge ist, dass für einen Kommunikationskanal bei<br />

gleichen Anforderungen im Mittel mehr Me<strong>die</strong>nzeit reserviert wird und dadurch weniger<br />

für weitere Reservierungen zur Verfügung steht. Um ein Abwägen der Eekte im Zielkon-<br />

ikt zwischen Netzwerkressourcen und den Ressourcen des Planers zu erlauben, kann G als<br />

53


3 Echtzeitkommunikationskanäle<br />

Systemparameter gewählt werden. Da es sich um <strong>die</strong> kleinste planbare Slotdauer handelt,<br />

wurde für G der Begri Planungsgranularität gewählt. Die niedrigste mögliche Planungsgranularität<br />

ist <strong>die</strong> Uhrengranularität g. Höhere G müssen als Vielfaches der Uhrengranularität<br />

gewählt werden, da sonst <strong>die</strong> errechneten Zeitpunkte nicht genau messbar sind.<br />

Wichtig ist auch, dass <strong>die</strong> Periode nur als Vielfaches von G gewählt werden darf, weil sonst<br />

<strong>die</strong> Planung des Kommunikationskanals nicht möglich ist.<br />

Zykluslänge Der zweite Einussfaktor bezüglich des Ressourcenbedarfs im Planer-<br />

Knoten ist <strong>die</strong> Zykluslänge Z. Diese kann als kleinstes gemeinsames Vielfaches der Perioden<br />

nicht gut vorhergesagt werden. Der Ressourcenbedarf im Planer kann jedoch<br />

beschränkt werden, indem eine maximale Zykluslänge festgelegt wird, deren Überschreitung<br />

zur Ablehnung einer Reservierungsanfrage führt.<br />

Uhrensynchronisation Die Güte der Uhrensynchronisation bestimmt <strong>die</strong> Genauigkeit α<br />

und <strong>die</strong> Uhrengranularität g für <strong>die</strong> globale Zeit des verteilten Systems. Je besser <strong>die</strong><br />

Uhrensynchronisation, um so mehr Zeitpunkte können unterschieden werden. Dies erhöht<br />

den maximalen Datendurchsatz, der auf einem Medium für Echtzeitnachrichten genutzt<br />

werden kann, weil zum Versenden nur unterscheidbare Zeitpunkte infrage kommen. Da<br />

g auch <strong>die</strong> minimale Planungsgranularität ist, bestimmt es auch <strong>die</strong> minimale Slotlänge<br />

und Periode. Aber auch für Slotlängen über dem Minimum spielen g bzw. α ein Rolle,<br />

denn höhere Werte von α und g führen im Mittel zu längeren Slots und damit zu einer<br />

geringeren Ausnutzung des Mediums. Eine bestmögliche Uhrensynchronisation ist also für<br />

eine eziente Nutzung der Netzwerkressourcen erstrebenswert. Dagegen ist jedoch der<br />

Ressourcenaufwand für <strong>die</strong> Uhrensynchronisation aufzuwiegen.<br />

Hardware und Software Die Länge der Slots hängt auch von den Worst-Case-<br />

Verzögerungen in der Hard- und Software ab. Die Ermittlung der Gröÿen ist erst bei<br />

genauer Kenntnis der verwendeten Komponenten möglich. Eine zu niedrige Bemessung ist<br />

kritisch, da sie <strong>die</strong> Echtzeitfähigkeit gefährdet. Eine zu hohe Bemessung führt durch eine<br />

unnötige Verlängerung der Slots zu einer geringeren Me<strong>die</strong>nausnutzung. Bei Multitasking-<br />

Systemen muss dem Scheduling der Tasks groÿe Aufmerksamkeit gewidmet werden, da<br />

hierdurch unter Umständen groÿe und schwer vorhersagbare Verzögerungen entstehen<br />

können.<br />

54


3.3 Reservierungsprotokoll<br />

3.3 Reservierungsprotokoll<br />

Da <strong>die</strong> im Abschnitt 3.2 besprochene dynamische Planung im Allgemeinen nicht auf dem<br />

Knoten stattndet, auf dem sich auch der Produzent der Echtzeitnachrichten bendet, ist<br />

ein Kommunikationsprotokoll nötig, dass den Informationsaustausch zwischen den Komponenten<br />

regelt. Dabei muss beachtet werden, dass es bei der Kommunikation zu Paketverlusten<br />

und anderen Eekten 12 kommen kann, <strong>die</strong> zu inkonsistenten Sichten zwischen dem<br />

Planer-Master und seinen Klienten führen. Eine mögliche Konsequenz ist <strong>die</strong> mehrfache<br />

Vergabe der selben Me<strong>die</strong>nzeit, <strong>die</strong> sich als Verletzung der Echtzeitgarantien äuÿert. Dies<br />

muss das Protokoll verhindern.<br />

Das vorgeschlagene Reservierungsprotokoll ist auf Publish/Subscribe und <strong>FAMOUSO</strong><br />

zugeschnitten. <strong>FAMOUSO</strong> unterstützt <strong>die</strong> Nutzung mehrerer Netzwerkanbindungen auf<br />

einem Knoten, so dass mehrere Subnetze auch verschiedenen Typs zu einem zusammenhängenden<br />

<strong>FAMOUSO</strong>-Netzwerk verbunden werden können. In <strong>FAMOUSO</strong> kann es somit<br />

nötig sein, dass ein Publisher-Ereigniskanal, über den eine Applikation Echtzeit-Events<br />

veröentlicht, in mehrere Netzwerke publizieren muss. In <strong>die</strong>sem Fall sind einem Echtzeit-<br />

Publisher-Ereigniskanal mehrere Echtzeitkommunikationskanäle zugeordnet. Der logische<br />

Publisher-Ereigniskanal deniert dabei <strong>die</strong> QoS-Anforderungen, <strong>die</strong> für jedes angebundene<br />

Netzwerk durch <strong>die</strong> Reservierung eines konkreten Kommunikationskanals durchgesetzt werden.<br />

Der Publisher-Ereigniskanal bietet <strong>die</strong> Schnittstelle für <strong>die</strong> Anwendung und nimmt <strong>die</strong><br />

Events entgegen, <strong>die</strong> über <strong>die</strong> Kommunikationskanäle in den jeweiligen Netzen versendet<br />

werden. In den meisten Fällen <strong>die</strong>nt ein Knoten mit mehreren Netzwerkanbindungen als<br />

Gateway, das veröentlichte Events eines Subnetzes selektiv in ein anderes Subnetz weiterleitet,<br />

wenn in <strong>die</strong>sem Subscriber für <strong>die</strong>ses Event vorhanden sind. Unter Ausnutzung<br />

<strong>die</strong>ser vorhandenen Infrastruktur soll es möglich sein, einen Planer-Master gemeinsam für<br />

mehrere Subnetze zu verwenden. In <strong>die</strong>ser Arbeit werden Echtzeitgarantien nur innerhalb<br />

eines Subnetzes bereitgestellt. Die Verwendung eines Planers für mehrere Subnetze legt<br />

jedoch den Grundstein, um Echtzeitanforderungen auch über mehrere Subnetze hinweg<br />

durchsetzen zu können. Das Protokoll soll es jedoch auch erlauben, für jedes Subnetz<br />

einen eigenen Planer zu verwenden.<br />

Eine wichtige Annahme für das Reservierungsprotokoll ist, dass Wertfehler bei der<br />

Datenübertragung in einer unter dem Protokoll arbeitenden Schicht zu Auslassungen maskiert<br />

werden. Die Annahme ist bei Ethernet und CAN erfüllt. Beide Spezikationen sehen<br />

CRC-Codes zur Erkennung von Übertragungsfehlern vor.<br />

Das Protokoll basiert auf der zyklischen Übertragung von Zustandsinformationen der<br />

Knoten. In Abschnitt 3.3.1 und 3.3.2 werden <strong>die</strong> Grundlagen des Protokolls erläutert.<br />

Die Abschnitte 3.3.3 und 3.3.4 thematisieren kritische Inkonsistenzen und ihre Vermeidung.<br />

Es folgt eine Betrachtung über den Einsatz von Leasing-Mechanismen für<br />

12<br />

Verzögerungen durch <strong>die</strong> Verwendung von NRT-Kanälen müssen ebenso beachtet werden, wie <strong>die</strong> in<br />

einigen Systemen mögliche Umordnung von Nachrichten. Siehe Abschnitt 3.3.4.<br />

55


3 Echtzeitkommunikationskanäle<br />

Echtzeitkanäle (Abschnitt 3.3.5) sowie eine Zusammenfassung der Eigenschaften des Protokolls<br />

(Abschnitt 3.3.6).<br />

3.3.1 Announcements und Subscriptions<br />

Bevor ein Publisher Echtzeitnachrichten veröentlichen kann, muss er der <strong>Middleware</strong><br />

seine Existenz und seine QoS-Anforderungen bekannt machen. Dies tut er, indem er einen<br />

Publisher-Ereigniskanal (PEC) erzeugt und für <strong>die</strong>sen <strong>die</strong> <strong>Middleware</strong>-Funktion announce<br />

aufruft. Wenn der Publisher <strong>die</strong> Dienste der <strong>Middleware</strong> nicht mehr benötigt, meldet er<br />

den PEC über <strong>die</strong> Funktion unannounce wieder ab, wodurch dessen Zustand von bekannt<br />

zurück auf unbekannt wechselt.<br />

Die <strong>Middleware</strong> verwaltet in jedem Knoten eine Liste der bekannten lokalen PECs. Diese<br />

Liste wird samt der zugehörigen QoS-Anforderungen und der Reservierungszustände der<br />

Kommunikationskanäle zyklisch in einem Announcements-Event an den Planer-Master<br />

übertragen. Dieser verwaltet ebenfalls eine Liste der ihm bekannten PECs, <strong>die</strong> er mit der<br />

empfangenen Liste abgleicht. Unterschiede in den Listen lösen dabei, wie in Abschnitt 3.3.2<br />

beschrieben, Aktionen des Planers aus.<br />

Das Announcements-Event enthält <strong>die</strong> Knoten-ID des Absenders, einen Block der<br />

Netzwerk-IDs der angebundenen Netze und einen Block, der <strong>die</strong> PECs beschreibt.<br />

Knoten-ID Die Knoten-ID ist eine im Gesamtsystem eindeutige Kennung des Knotens.<br />

Gemeinsam mit der Netzwerk-ID und der lokalen PEC-ID identiziert sie einen<br />

Kommunikationskanal eindeutig.<br />

Netzwerk-IDs In <strong>die</strong>sem Block werden <strong>die</strong> IDs aller Netzwerke aufgezählt, über <strong>die</strong> der<br />

Knoten mittels <strong>FAMOUSO</strong> kommuniziert. Eine Netzwerk-ID ist eine eindeutige Kennung<br />

eines Netzes. Sie <strong>die</strong>nt dem Planer-Master, der ggf. für mehrere Netzwerke<br />

zuständig ist, zur Zuordnung zwischen Produzenten und Netz bzw. dessen TDMA-<br />

Zyklus. Der Planer muss über <strong>die</strong> ID auÿerdem den Netzwerk-Typ und <strong>die</strong> Netzwerk-<br />

Eigenschaften (z. B. <strong>die</strong> Übertragungsrate) nachschlagen können. Alternativ ist auch<br />

eine Co<strong>die</strong>rung <strong>die</strong>ser Informationen in der Netzwerk-ID denkbar.<br />

PEC-Informationen Dieser Block enthält für jeden PEC das Subject, <strong>die</strong> QoS-<br />

Anforderungen, eine lokal eindeutige PEC-ID, und <strong>die</strong> momentanen Reservierungszustände.<br />

Ein PEC hat für jeden potentiellen Kommunikationskanal, also für jedes<br />

angebundene Netzwerk, einen eigenen unabhängigen Zustand. Die Reservierungszustände<br />

werden im folgenden Abschnitt vorgestellt. Die für Echtzeit-Publisher<br />

unterstützten QoS-Anforderungen wurden bereits im Abschnitt 3.2.1 behandelt.<br />

Auch <strong>die</strong> Subscriber müssen sich bei der <strong>Middleware</strong> anmelden, bevor Events an sie<br />

ausgeliefert werden. Dazu abonniert ein Subscriber durch den Aufruf der <strong>Middleware</strong>-<br />

Funktion subscribe ein konkretes Subject. Die zugehörige Abmeldung erfolgt über<br />

56


3.3 Reservierungsprotokoll<br />

Deliv<br />

nicht<br />

Res<br />

Start ungenutzt genutzt<br />

reserviert<br />

NoDeliv<br />

Abbildung 3.10: Reservierungszustände eines Kommunikationskanals<br />

unsubscribe. Auch hier werden lokal und im Planer Listen der bekannten Subscriber<br />

verwaltet, <strong>die</strong> periodisch über ein Subscriptions-Event abgeglichen werden. Dieses enthält<br />

im Wesentlichen <strong>die</strong> gleichen Informationen wie das Announcements-Event. Für das<br />

hier vorgestellte Protokoll ist jedoch als Subscriber-Informationen nur das Subject relevant.<br />

Auÿerdem gibt es auf der Subscriber-Seite keinen Reservierungzustand oder ähnliches.<br />

3.3.2 Reservierungszustände<br />

Jeder der <strong>Middleware</strong> bekannte PEC hat für jedes an den Knoten angebundene Netz, also<br />

für jeden potentiellen Kommunikationskanal, einen eigenen Reservierungszustand. Wenn<br />

<strong>die</strong> <strong>Middleware</strong> in einem Knoten an N Netze angeschlossen ist, hat jeder PEC folglich N<br />

unabhängige Reservierungszustände, <strong>die</strong> angeben, ob eine Auslieferung über das jeweilige<br />

Netzwerk möglich und nötig ist. Abb. 3.10 veranschaulicht, welche Reservierungszustände<br />

ein Kommunikationskanal haben kann und wie <strong>die</strong> Zustandsübergänge erfolgen.<br />

• Kommunikationskanal nicht reserviert: Nachdem ein PEC über announce neu<br />

bekannt gemacht wurde, benden sich alle zugehörigen Kommunikationskanäle im<br />

Zustand nicht reserviert. Der oder <strong>die</strong> Planer-Master erfahren über das Announcements-Event<br />

von dem PEC und seinen QoS-Anforderungen. Jeder Planer überprüft<br />

anschlieÿend <strong>die</strong> Einplanbarkeit für alle benötigten Kommunikationskanäle, <strong>die</strong> auf<br />

den von ihm geplanten Netzwerken etabliert werden sollen.<br />

Geht ein Einplanbarkeitstest positiv aus, reserviert der Planer den Kommunikationskanal<br />

und sendet dem Publisher-Knoten ein Res-Event. Beide setzen den Zustand<br />

des nun etablierten Kommunikationskanals auf ungenutzt. Ist keine Reservierung der<br />

benötigten Ressourcen möglich, vermerkt der Planer <strong>die</strong>s in seinem Log 13 . Der nicht<br />

reservierbare Kommunikationskanal verbleibt in seinem Zustand. Bei der Freigabe<br />

von Ressourcen (unannounce) wird der Einplanbarkeitstest für alle Kommunikationskanäle<br />

mit <strong>die</strong>sem Status wiederholt.<br />

Im Zustand nicht reserviert ist keine Auslieferung von publizierten Events möglich.<br />

Um für <strong>die</strong> Subscriber eine einheitliche Sicht zu schaen, wird ein auf einem PEC<br />

13<br />

Das Log des Planers liefert dem Entwickler an einer zentralen Stelle Informationen über alle reservierten<br />

und nicht reservierbaren Kommunikationskanäle. Es hilft somit bei der Untersuchung von Problemen<br />

und der Einstellung von frei wählbaren Parametern.<br />

57


3 Echtzeitkommunikationskanäle<br />

veröentlichtes Event nur dann an Subscriber ausgeliefert, wenn alle zum PEC gehörigen<br />

Kommunikationskanäle reserviert werden konnten, sich also keiner mehr im Zustand<br />

nicht reserviert bendet. Anderenfalls wird das Event weder an lokale Subscriber<br />

ausgeliefert, noch über einen Kommunikationskanal in das Netzwerk publiziert.<br />

Stattdessen wird <strong>die</strong> Publisher-Applikation über das Problem informiert.<br />

In <strong>FAMOUSO</strong> wird dafür beim Veröentlichen eines Events der Ausnahmerückruf<br />

aufgerufen.<br />

• Kommunikationskanal ungenutzt: Dieser Zustand zeigt an, dass der Kommunikationskanal<br />

gemäÿ der QoS-Anforderungen des PECs vorgemerkt ist, aber momentan<br />

keine Auslieferung von Events über <strong>die</strong>sen Kommunikationskanal nötig ist. Erfährt<br />

der Planer jedoch über ein Subscriptions-Event von einem passenden Subscriber<br />

in dem entsprechenden Netz, wird <strong>die</strong>s dem PEC über ein Deliv-Event mitgeteilt.<br />

Dieser ändert den Zustand des Kommunikationskanals zu genutzt und beginnt mit<br />

der Auslieferung von Events über <strong>die</strong>sen Kommunikationskanal.<br />

In einem Publish/Subscribe-System sind Publisher und Subscriber komplett unabhängig.<br />

Es ist nicht a-priori bekannt, wo sich <strong>die</strong> Subscriber benden oder ob<br />

überhaupt Subscriber vorhanden sind. Wenn in anderen Knoten des Netzwerks<br />

kein Subscriber für das publizierte Subject existiert, dann ist es auch nicht nötig,<br />

<strong>die</strong> Events über <strong>die</strong>ses Netzwerk zu versenden. Daher wird in <strong>die</strong>sem Fall darauf<br />

verzichtet. Hierdurch kann z. B. Energie gespart werden. Auÿerdem lässt sich <strong>die</strong><br />

unbenutzte Me<strong>die</strong>nzeit zur Übertragung von NRT-Events ausnutzen. Bei CAN funktioniert<br />

<strong>die</strong>s durch Ausnutzung der prioritätsbasierten Arbitrierung automatisch.<br />

Wenn NRT-Events wie bei Ethernet im Polling-Betrieb übertragen werden, muss<br />

beim Poll-Master zwischen ungenutzten und genutzten Kommunikationskanälen unterschieden<br />

werden. Freie Slots und <strong>die</strong> Slots eines ungenutzten Kommunikationskanals<br />

stehen dem Poll-Master zur Verfügung. Es muss jedoch ausgeschlossen sein,<br />

dass ein Kommunikationskanal gleichzeitig vom Poll-Master und zum Versenden von<br />

Echtzeit-Events verwendet wird, da <strong>die</strong>s zur Verletzung der Echtzeitgarantien führen<br />

würde. In Abschnitt 3.3.3 wird beschrieben, wie das verhindert wird.<br />

Eine Reservierung der Kommunikationskanäle wird immer, unabhängig von der momentanen<br />

Existenz von Subscribern, vorgenommen. Dies verbessert <strong>die</strong> Orts- und<br />

Migrationstransparenz des Systems, denn ein planbares System bleibt nach der Migration<br />

eines Publishers oder Subscribers auf einen anderen Knoten des Subnetzes<br />

planbar, selbst wenn erst durch <strong>die</strong> Änderung Kommunikation über das Netz erforderlich<br />

wird. Auch <strong>die</strong> Erweiterung eines Systems um neue Subscriber kann Echtzeitkommunikation<br />

nötig machen, wo <strong>die</strong> Events vorher nur lokal ausgeliefert wurden. Da<br />

jedoch immer ein Kommunikationskanal reserviert wird, können neue Subscriber in<br />

einem funktionierenden System immer hinzugefügt werden, ohne Probleme mit der<br />

Netzwerkplanung zu verursachen.<br />

58


3.3 Reservierungsprotokoll<br />

• Kommunikationskanal genutzt: Ein reservierter Kommunikationskanal wird<br />

in <strong>die</strong>sen Zustand versetzt, wenn es Subscriber des zugehörigen Subjects im<br />

entsprechenden Netz gibt. In <strong>die</strong>sem Zustand werden veröentlichte Events über<br />

den Kommunikationskanal ausgeliefert, also unter Beachtung des im ersten Teil des<br />

Kapitels denierten Me<strong>die</strong>nzugrisprotokolls.<br />

Wenn ein Subscriber den Status bekannt verlässt, überprüft der Planer, ob noch<br />

andere Subscriber mit dem gleichen Subject in dem gleichen Netz bekannt sind.<br />

Falls kein entsprechender Subscriber mehr vorhanden ist, wird <strong>die</strong>s allen PECs des<br />

zugehörigen Subjects in <strong>die</strong>sem Netzwerk über ein NoDeliv-Event mitgeteilt. Die<br />

PECs ändern den Zustand des jeweiligen Kommunikationskanals von genutzt zu<br />

ungenutzt und beenden damit <strong>die</strong> Auslieferung von Events in <strong>die</strong>sem Netz.<br />

Aus jedem Zustand ist es möglich, dass der PEC über <strong>die</strong> unannounce-Funktion<br />

abgemeldet wird. Der Planer erfährt darüber durch das nächste Announcements-Event<br />

und gibt ggf. reservierte Ressourcen frei.<br />

Die Events Res, Deliv und NoDeliv enthalten das zur Identikation des<br />

Kommunikationskanals notwendige Tupel aus Knoten-ID, Netzwerk-ID und lokaler PEC-<br />

ID. In Res werden auÿerdem <strong>die</strong> für das Me<strong>die</strong>nzugrisprotokoll nötigen Parameter<br />

übertragen, <strong>die</strong> vom Planer berechnet wurden: der Beginn des ersten Übertragungsslots<br />

ri<br />

start sowie das Übertragungsstartfenster f i . Ist dem Planer bereits ein passender<br />

Subscriber bekannt, wenn er einen neuen Kommunikationskanal reserviert, kann der Zustand<br />

von nicht reserviert über ungenutzt direkt auf genutzt gesetzt werden. Um den<br />

hierbei anfallenden Kommunikationsaufwand von zwei Events auf eines zu reduzieren,<br />

wird ein Event ResDeliv eingeführt. Dieses beinhaltet <strong>die</strong> Informationen aus Res und<br />

löst einen direkten Zustandswechsel nach genutzt aus.<br />

3.3.3 Fehlertoleranz<br />

Alle in <strong>die</strong>sem Protokoll versendeten Events enthalten ausschlieÿlich Zustandsinformationen.<br />

Res, Deliv, ResDeliv und NoDeliv werden vom Planer versendet, um im PEC den<br />

Reservierungszustand eines Kommunikationskanals zu setzen. Die Announcements- und<br />

Subscriptions-Events transportieren <strong>die</strong> Bekanntheitszustände und QoS-Anforderungen<br />

zum Planer. Announcements wird auÿerdem als Rückkanal für <strong>die</strong> Bestätigung der vom<br />

Planer initiierten Zustandsänderungen genutzt. Auf <strong>die</strong>sem Weg erfährt der Planer von<br />

einem verloren gegangenen Res, Deliv, ResDeliv oder NoDeliv, weil <strong>die</strong> erwartete<br />

Zustandsänderung des Kommunikationskanals beim PEC ausbleibt. Der Planer kann den<br />

Verlust des Events durch eine erneute Übertragung des aktuellsten Zustands-Events kompensieren.<br />

Hierbei können Duplikate entstehen, wenn ein verloren geglaubtes Event tatsächlich<br />

noch auf dem Weg zum Empfänger war. Duplikate stellen jedoch kein Problem<br />

dar, da ein erneut eintreendes Event lediglich zum erneuten Setzen eines bereits aktiven<br />

59


3 Echtzeitkommunikationskanäle<br />

PollCycle<br />

Warte auf<br />

Poll-M.<br />

Deliv<br />

nicht<br />

Res<br />

Start ungenutzt genutzt<br />

reserviert<br />

PollCycle<br />

Warte auf<br />

PEC<br />

NoDeliv<br />

Abbildung 3.11: Reservierungszustände eines Kommunikationskanals: Erweiterung<br />

auf Planerseite für Kongurationen mit Poll-Master<br />

Status führt. Auslassungen bei den Announcements und Subscriptions müssen nicht<br />

erkannt und explizit behandelt werden, da <strong>die</strong> Events ohnehin zyklisch versendet werden,<br />

so dass <strong>die</strong> Zustandsübermittlung automatisch wiederholt wird.<br />

Auch wenn <strong>die</strong> Zustände durch <strong>die</strong> Sendewiederholung früher oder später abgeglichen werden,<br />

können <strong>die</strong> Inkonsistenzen zwischenzeitlich Probleme bereiten, wenn ein Poll-Master<br />

beteiligt ist. Sie treten auf, wenn der Planer das Nutzungsrecht für Me<strong>die</strong>nzeit entzieht<br />

und es bereits neu vergibt, bevor der alte Besitzer von dem Entzug erfahren hat. Dann gibt<br />

es zwei Knoten, <strong>die</strong> während eines Slots senden wollen, was zur Verletzung der Echtzeitgarantien<br />

führt. Um das zu verhindern, muss das Zustandsmodell für den Planer erweitert<br />

werden. Diese Erweiterung bleibt vor den PECs versteckt, <strong>die</strong> weiterhin mit dem einfacheren<br />

Modell arbeiten. Abb. 3.11 zeigt das um zwei Zustände ergänzte Modell.<br />

Der neue Zustand Warte auf Poll-Master fügt sich vor der Versendung des Deliv-Events<br />

ein. Wenn ein Poll-Master für <strong>die</strong> NRT-Kommunikation auf dem Medium verantwortlich<br />

ist, hat er <strong>die</strong> Sendeberechtigung für <strong>die</strong> gesamte Me<strong>die</strong>nzeit, <strong>die</strong> nicht zur Übertragung von<br />

Echtzeitnachrichten genutzt wird. Dazu gehören alle freien Slots sowie <strong>die</strong> Slots von Kommunikationskanälen<br />

im Zustand ungenutzt. Soll nun ein Kommunikationskanal zur Auslieferung<br />

von Echtzeit-Events genutzt werden, so muss dem Poll-Master <strong>die</strong> Sendeberechtigung<br />

für <strong>die</strong> Slots des Kommunikationskanals entzogen werden. Folglich darf der PEC, für<br />

den der Kommunikationskanal reserviert ist, erst dann zu senden beginnen, wenn der Poll-<br />

Master bestätigt hat, dass er <strong>die</strong> zugehörige Me<strong>die</strong>nzeit nicht weiter verwendet. Wenn ein<br />

Subscriber für einen ungenutzten Kommunikationskanal bekannt wird und ein Poll-Master<br />

in Verwendung ist, so wird <strong>die</strong>sem ein PollCycle-Event geschickt. Dieses enthält den letzten<br />

TDMA-Zyklusbeginn z last , das Feld P ollable sowie eine Sequenznummer. Der Zyklusbeginn<br />

<strong>die</strong>nt der initialen Synchronisierung der TDMA-Zyklen von Planer und Poll-Master<br />

60


3.3 Reservierungsprotokoll<br />

mit dem ersten PollCycle-Event. Das Feld P ollable ähnelt dem Feld F ree, markiert<br />

neben den freien Slots jedoch auch <strong>die</strong> Slots der ungenutzten Kommunikationskanäle.<br />

Es enthält somit <strong>die</strong> Informationen, welche Slots für das Pollen von NRT-Nachrichten<br />

genutzt werden dürfen, sowie <strong>die</strong> Länge des TDMA-Zyklus'. Empfängt der Poll-Master<br />

ein PollCycle-Event, passt er sein Polling an und sendet ein PollCycleACK-Event<br />

mit der erhaltenen Sequenznummer. Diese erlaubt dem Planer <strong>die</strong> Zuordnung von empfangenen<br />

PollCycleACK- zu den gesendeten PollCycle-Events und <strong>die</strong> Ableitung einer<br />

zeitlichen Ordnung 14 . Ein verschicktes PollCycle-Event wird erneut übertragen, wenn<br />

nach einer gewissen Zeit, <strong>die</strong> für einen Paketverlust spricht, keine Bestätigung eingegangen<br />

ist. Als Bestätigung gilt ein PollCycleACK mit der gleichen oder einer neueren<br />

Sequenznummer als das zugehörige PollCycle-Event. Eine neuere Sequenznummer ist<br />

auch hinreichend, da sie bestätigt, dass eine spätere PollCycle-Zustandsübertragung<br />

erfolgreich war, <strong>die</strong> auch alle vorherigen Änderungen enthält, insofern sie noch aktuell<br />

sind. Sobald eine Bestätigung erhalten wurde, kann das Deliv-Event an den PEC verschickt<br />

werden, da <strong>die</strong>sem in den Slots des Kommunikationskanals nun exklusiver Zugri<br />

auf das Medium garantiert werden kann. Falls kein Poll-Master verwendet wird, entfällt<br />

der Zustand Warte auf Poll-Master, so dass beim bekannt-Werden eines Subscribers sofort<br />

das Deliv-Event veröentlicht werden kann.<br />

Wenn sich alle Subscriber eines Kommunikationskanals abmelden, sind <strong>die</strong> Rollen<br />

vertauscht. Der Planer entzieht hier dem PEC <strong>die</strong> Sendeberechtigung für den<br />

Kommunikationskanal und übergibt sie dem Poll-Master. Hierbei muss sichergestellt<br />

sein, dass der PEC den Kommunikationskanal nicht weiter nutzt, bevor <strong>die</strong> Ressourcen<br />

vom Poll-Master verwendet werden. Dafür wird der Zustand Warte auf PEC eingeführt.<br />

Wenn <strong>die</strong> Auslieferung der Events über den Kommunikationskanal nicht mehr benötigt<br />

wird, weil keine passenden Subscriber mehr vorhanden sind, so wird das dem PEC<br />

zunächst über das NoDeliv-Event mitgeteilt. Im Anschluss wartet der Planer auf das<br />

nächste Announcements-Event des entsprechenden Knotens. Enthält <strong>die</strong>ses für den betreenden<br />

Kommunikationskanal noch den Reservierungszustand genutzt, so wird NoDeliv<br />

erneut gesendet. Erst wenn durch den Zustand ungenutzt bestätigt ist, dass der PEC<br />

den Kommunikationskanal nicht mehr verwendet, kann <strong>die</strong>ser dem Poll-Master über ein<br />

PollCycle-Event zur Verfügung gestellt werden. Der Verlust <strong>die</strong>ses PollCycle-Events<br />

ist unkritisch, da <strong>die</strong>ses dem Poll-Master lediglich zusätzliche Me<strong>die</strong>nzeit zur Verfügung<br />

stellt. Das Warten auf ein bestätigendes PollCycleACK-Event und eine eventuelle<br />

erneute Übertragung des PollCycle-Events beim Ausbleiben des PollCycleACK<br />

sind daher optional.<br />

14<br />

Die Sequenznummer wird bei jedem versendeten PollCycle-Event inkrementiert. Da alle PollCycle-<br />

Events aus einer Quelle stammen, lässt sich von der Sequenznummer eine zeitliche Ordnung ableiten.<br />

In der Praxis ist hierbei der Überlauf des Zählers zu beachten.<br />

61


3 Echtzeitkommunikationskanäle<br />

PEC A<br />

announce unannounce announce<br />

ResDeliv<br />

Beginne<br />

Auslieferung?!<br />

t<br />

Announcements Ann. Ann.<br />

Planer<br />

Warte auf<br />

Ressourcen<br />

t<br />

Announcements<br />

ResDeliv<br />

PEC B<br />

announce<br />

Beginne<br />

Auslieferung<br />

t<br />

Abbildung 3.12: Inkonsistenz durch nebenläuges unannounce und<br />

announce. In PEC A muss erkannt werden, dass ResDeliv veraltet ist. Anderenfalls<br />

kommt es zur Verletzung des Me<strong>die</strong>nzugrisprotokolls, da zwei<br />

PECs <strong>die</strong> selbe Me<strong>die</strong>nzeit für sich beanspruchen.<br />

3.3.4 Verzögerung und Umordnung<br />

Auch durch Verzögerungen bei der Abarbeitung des Reservierungsprotokolls und der<br />

dazu nötigen Kommunikation kann es zu einer Inkonsistenz kommen, durch <strong>die</strong> Echtzeitgarantien<br />

gefährdet werden. In Abb. 3.12 wird ein solcher Fall gezeigt. Hier ruft ein<br />

Publisher in recht kurzer Zeit announce, unannounce und erneut announce auf. Durch<br />

Verzögerungen im Planer und bei der Kommunikation erreicht das ResDeliv-Event den<br />

Knoten des PEC A erst nach dem zweiten announce. Hier muss verhindert werden, dass<br />

der PEC zu senden beginnt, da das ResDeliv veraltet ist und <strong>die</strong> Me<strong>die</strong>nzeit, wie im<br />

Beispiel, bereits an einen anderen PEC vergeben sein kann. Anderenfalls kann es hier zur<br />

Verletzung der Echtzeitgarantien kommen. Eine einfache Lösung für das Problem ist es,<br />

<strong>die</strong> lokale PEC-ID bei einem unannounce verfallen zu lassen und sie beim announce durch<br />

eine neue zu ersetzen. Da ein veraltetes ResDeliv-Event noch <strong>die</strong> alte PEC-ID enthält,<br />

wird es nach dem zweiten announce mangels Interessent verworfen.<br />

Eine andere Problematik betrit Systeme, in denen <strong>die</strong> Auslieferungsreihenfolge der Events<br />

von der Reihenfolge der Veröentlichung abweichen kann, also zwischen zwei Knoten<br />

keine FIFO-Ordnung (First-In-First-Out) garantiert wird. So beispielsweise, wenn mehrere<br />

Routen bei der Paketweiterleitung im Netz verwendet werden oder <strong>die</strong> Events nicht gemäÿ<br />

FIFO auf <strong>die</strong> Auslieferung warten. Bei der hierbei möglichen Umordnung von Events kann<br />

es beim Reservierungsprotokoll zum temporären Einnehmen von bereits veralteten Zuständen<br />

kommen. Läuft beispielsweise der Planer für das Echtzeit-CAN-Netz eines mobilen<br />

Roboters auf einem Knoten eines Wireless-Mesh-Networks, das über ein Gateway mit<br />

dem CAN-Netz verbunden ist, so kann es durch eine Änderung im Routing des Wireless-<br />

Mesh-Networks zu einer Umordnung von Announcements-Events kommen, so dass ein<br />

62


3.3 Reservierungsprotokoll<br />

neueres Event den Planer früher erreicht als ein älteres. Dies kann z. B. statt zu einer<br />

eigentlich angedachten Reservierung, zu zweimaliger Reservierung mit zwischenzeitlicher<br />

Freigabe führen. Verhindern lässt sich <strong>die</strong>s, indem jeder Sender einen eigenen Sequenzzähler<br />

verwaltet. Beim Versenden eines Events wird der aktuelle Wert des Sequenzzählers mitgegeben<br />

und inkrementiert. Beim Empfänger wird <strong>die</strong> neueste erhaltene Sequenznummer<br />

eines Senders gespeichert. So lässt sich überprüfen, ob ein Event einen bereits veralteten<br />

Zustand enthält. Im Normalfall der im Kontext von Echtzeit-<strong>FAMOUSO</strong> betrachteten<br />

Anwendungen ist jedoch <strong>die</strong> FIFO-Reihenfolge zwischen zwei Kommunikationspartnern<br />

garantiert.<br />

3.3.5 Leasing<br />

Die zyklische Veröentlichung der Announcements und Subscriptions legt <strong>die</strong> Verwendung<br />

des Leasing-Prinzips nah. Unter gewissen Annahmen erlaubt <strong>die</strong>ses <strong>die</strong> Erkennung<br />

eines Absturzes oder einer nicht kommunizierten Abschaltung eines Knotens. In der Folge<br />

können nicht mehr benötigte Ressourcen freigegeben werden. Ein aktiver Knoten sendet<br />

dem Planer regelmäÿig ein Lebenszeichen. Ist der Knoten nicht mehr aktiv, so bleibt das<br />

Lebenszeichen aus. Um jedoch umgekehrt vom Ausbleiben auf einen inaktiven Knoten zu<br />

schlieÿen, sind Annahmen nötig. Problematisch ist nämlich, dass das Lebenszeichen wie<br />

jede Nachricht verloren gehen kann. Auÿerdem kann <strong>die</strong> Auslieferung der Events unvorhersagbar<br />

verzögert werden, da das Reservierungsprotokoll über NRT-Kanäle arbeitet. Die<br />

Ausnutzung von RT-Kanälen für das Lebenszeichen behebt zwar das letztere Problem,<br />

erfordert aber noch immer eine Annahme, ab wieviel ausgebliebenen Lebenszeichen <strong>die</strong><br />

Inaktivität eines Knotens garantiert ist. Kernproblem ist folglich, nach welcher Zeit ein<br />

Lease abläuft, also bis wann er spätestens erneuert werden muss. Ein abgelaufener Lease<br />

führt zu einem planerseitigen unannounce bzw. unsubscribe. Das unannounce führt zur<br />

Freigabe von reservierter Me<strong>die</strong>nzeit, <strong>die</strong> im Anschluss erneut vergeben werden kann. Falls<br />

ein Knoten jedoch fälschlicherweise für inaktiv erklärt wurde und seine Me<strong>die</strong>nzeit neu<br />

vergeben wird, kommt es zur Verletzung des TDMA-Schemas, so dass <strong>die</strong> Echtzeiteigenschaften<br />

des Gesamtsystems nicht mehr garantiert werden können. Um sicherzustellen,<br />

dass das TDMA-Schema eingehalten wird, muss somit sichergestellt sein, dass ein noch<br />

aktiver Echtzeitknoten nie für inaktiv erklärt wird. Eine Alternative wäre, wenn garantiert<br />

werden kann, dass ein fälschlicherweise inaktiv erklärter Knoten aufhört zu senden, indem<br />

man ihn verlässlich über den Entzug der Ressourcen informiert.<br />

Beides ist jedoch nur möglich, wenn <strong>die</strong> Anzahl der aufeinander folgenden Auslassungen<br />

im Netzwerk beschränkt ist. Letzteres ist daher eine Voraussetzung, um Leasing für<br />

Echtzeitkanäle erlauben zu können. Wenn <strong>die</strong> Lebenszeichen-Events wie Announcements<br />

und Subscriptions per NRT versendet werden, muss auÿerdem deren Latenz beschränkt<br />

sein, inklusive der Zeit in Warteschlangen. Notwendige Bedingung hierfür ist es, <strong>die</strong>se<br />

Events höher zu priorisieren, als NRT-Events der Anwendungen, da sich über letztere<br />

63


3 Echtzeitkommunikationskanäle<br />

keine Aussagen machen lassen. Anders als beim Leasing im NRT-Bereich müssen alle hier<br />

getroenen Annahmen eine sehr hohe Assumption-Coverage aufweisen, da eine Verletzung<br />

der Annahmen vergebene Echtzeitgarantien gefährdet. Daher wird <strong>die</strong> Erweiterung des<br />

Protokolls um Leasing für Echtzeitkanäle für eine weiterführende Arbeit vorgeschlagen.<br />

3.3.6 Eigenschaften des Protokolls<br />

Das vorgestellte Reservierungsprotokoll vereint folgende Eigenschaften:<br />

• Es erlaubt den Auf- und Abbau von Kanälen mit QoS-Anforderungen zur Laufzeit.<br />

Änderungen von QoS-Anforderungen sind möglich, indem der Kanal abgebaut und<br />

anschlieÿend mit den neuen Anforderungen wieder aufgebaut wird. Das Protokoll verwendet<br />

NRT-Events, so dass für <strong>die</strong> Protokollabarbeitung keine zeitlichen Garantien<br />

gegeben werden können. Der Auf- und Abbau von Echtzeitkanälen ist folglich nur<br />

auÿerhalb des echtzeitkritischen Pfades möglich.<br />

Über eine Erweiterung des Protokolls könnten auch Reservierungen in Echtzeit unterstützt<br />

werden. Dazu müssen <strong>die</strong> Protokoll-Events über einen Echtzeitkanal versendet<br />

werden. Dieser kann bei Initialisierung des Knotens über <strong>die</strong> bisherige NRT-Version<br />

des Protokolls aufgebaut werden. Für Reservierungen in Echtzeit ist jedoch auch ein<br />

echtzeitfähiger Planer nötig.<br />

• Echtzeit-Events werden nur über das Netzwerk versendet, wenn es dort Subscriber<br />

für <strong>die</strong>se Events gibt. Die eingesparte Me<strong>die</strong>nzeit erhöht den Durchsatz für NRT-<br />

Events. Kommunikationskanäle für <strong>die</strong> Echtzeit-Events werden jedoch immer reserviert,<br />

auch wenn <strong>die</strong> Kanäle beispielsweise nur zur lokalen Kommunikation verwendet<br />

werden. So bleibt eine planbare Menge von Echtzeit-Publishern auch planbar,<br />

wenn Publisher oder Subscriber auf andere Knoten migriert werden oder neue Subscriber<br />

hinzukommen. Wenn nicht genug Ressourcen für <strong>die</strong> Reservierung vorhanden<br />

sind, wird der Einplanbarkeitstest automatisch wiederholt, sobald Me<strong>die</strong>nzeit<br />

freigegeben wird.<br />

Das Protokoll lässt sich auch variieren, um Echtzeit-Events unabhängig von der Existenz<br />

eines Subscribers zu versenden. Vorteil ist <strong>die</strong> Vereinfachung des Protokolls,<br />

da hier nur noch <strong>die</strong> Events Announcements und ResDeliv, sowie <strong>die</strong> Zustände<br />

nicht reserviert, genutzt und planerseitig ggf. Warte auf Poll-Master benötigt<br />

werden. Nachteilig ist, dass Echtzeit-Events auch versendet werden, wenn kein Subscriber<br />

vorhanden ist. Dies führt bei fehlender Filterung in der Netzwerk-Hardware<br />

zu einer höheren Prozessorauslastung in allen Knoten des Netzwerks. Auÿerdem kann<br />

<strong>die</strong> belegte Me<strong>die</strong>nzeit natürlich nicht zur Übertragung von NRT-Events verwendet<br />

werden.<br />

• Das Protokoll ist unempndlich gegen den Verlust von Events und gegen Duplikate.<br />

Announcements und Subscriptions werden automatisch wiederholt. Stimmt der<br />

64


3.3 Reservierungsprotokoll<br />

Reservierungszustand eines Kommunikationskanals nicht mit dem vom Planer erwarteten<br />

Zustand überein, wird ein entsprechendes Event gesendet, um den Zustand<br />

im PEC anzugleichen.<br />

• Wenn ein Knoten (ausgenommen Planer- und Poll-Master) abstürzt und per<br />

Watchdog-Timer neu gestartet wird, so wird der vorherige Zustand im Regelfall<br />

direkt wieder hergestellt, indem <strong>die</strong> initialen Reservierungszustände durch erneut<br />

gesendete Res- oder ResDeliv-Events an <strong>die</strong> im Planer liegenden Zustände<br />

angeglichen werden. Wenn dem Knoten bei der Versendung des ersten Announcements-<br />

bzw. Subscriptions-Events noch nicht alle Publisher bzw. Subscriber<br />

bekannt sind, werden <strong>die</strong> entsprechenden Kanäle vom Planer ab- und später erneut<br />

aufgebaut. Gleiches gilt, wenn <strong>die</strong> PEC-IDs vor und nach dem Neustart nicht übereinstimmen.<br />

• Das Protokoll harmoniert mit anderen Features von <strong>FAMOUSO</strong>. Die mit den Announcements<br />

und Subscriptions versendeten Informationen werden auch für<br />

Composability Checks [SL09] und das Forwarding von Events an Gateways genutzt.<br />

• Das Protokoll lässt sich um Leasing-Mechanismen erweitern, welche <strong>die</strong> Freigabe von<br />

verwaisten Kommunikationskanälen möglich machen.<br />

• Das Protokoll erlaubt Erweiterungen, um <strong>die</strong> Komponierbarkeit der QoS-<br />

Anforderungen von Publishern und zugehörigen Subscribern zu überprüfen. Durch<br />

Gegenüberstellung der Announcements und Subscriptions könnten z. B. nicht<br />

zueinander passende Perioden oder maximale Event-Längen erkannt und anschlieÿend<br />

gemeldet werden.<br />

• Durch <strong>die</strong> Verwendung eines zentralen Planers für mehrere Netze lässt sich das Protokoll<br />

auch gut für netzwerkübergreifende Planung ausbauen. So könnte der Planer<br />

bei Kenntnis der Topologie des dedizierten Netzverbundes überwachen, ob in allen<br />

Teilstrecken eines über mehrere Netze reichenden Echtzeit-Pfads eine Reservierung<br />

möglich ist. Denkbar ist auÿerdem, bei der netzwerkübergreifenden Planung auch<br />

Anforderungen wie <strong>die</strong> maximale Latenz zu beachten, <strong>die</strong> unter Umständen eine<br />

Abstimmung der TDMA-Zyklen mehrerer Netze nötig machen.<br />

65


4 Integration in <strong>FAMOUSO</strong><br />

Die im vorherigen Kapitel erarbeiteten Echtzeitkommunikationskanäle ermöglichen es,<br />

Nachrichten zeitlich vorhersagbar von einem Knoten zu anderen Knoten zu übertragen.<br />

Auÿerdem können <strong>die</strong> Kanäle zur Laufzeit aufgebaut werden, wobei für jeden Kanal individuelle<br />

QoS-Anforderungen gestellt werden können. Ziel <strong>die</strong>ses Kapitels ist es, <strong>die</strong> erarbeiteten<br />

Konzepte in <strong>FAMOUSO</strong> zu integrieren. Auf <strong>die</strong>se Weise werden <strong>die</strong> bisher<br />

vorhandenen Features von <strong>FAMOUSO</strong> auch für Echtzeitanwendungen nutzbar.<br />

Die von der <strong>Middleware</strong> angebotenen Publish/Subscribe-Dienste werden durch<br />

Ereigniskanäle bereitgestellt. Daher wird zunächst auf <strong>die</strong> Besonderheiten der für Echtzeitanwendungen<br />

entworfenen Ereigniskanäle eingegangen. Der zweite Teil des Kapitels<br />

behandelt <strong>die</strong> Umsetzung der Echtzeitereigniskanäle und <strong>die</strong> dafür nötigen Erweiterungen<br />

und Anpassungen in <strong>FAMOUSO</strong>. Im dritten Teil geht es um <strong>die</strong> Konguration der <strong>Middleware</strong>.<br />

In <strong>die</strong>sem Kapitel werden konzeptionellen Sachverhalte in Verbindung mit Aspekten<br />

der Implementierung und der Verwendung der <strong>Middleware</strong> dargestellt. Auf Details der<br />

Implementierung wird jedoch nicht eingegangen 1 .<br />

4.1 Echtzeitereigniskanäle<br />

In <strong>FAMOUSO</strong> sind Ereigniskanäle <strong>die</strong> Programmierschnittstelle, <strong>die</strong> dem Anwendungsentwickler<br />

Zugri auf <strong>die</strong> <strong>Middleware</strong>-Funktionen bietet. Ein Ereigniskanal ist ein Objekt,<br />

dass durch eine Kommunikationsrichtung Publisher oder Subscriber , ein<br />

Subject, eine Menge von QoS-Anforderungen und Anwendungsrückrufe gekennzeichnet<br />

ist. Die Kommunikationsrichtung bestimmt dabei <strong>die</strong> zur Verfügung stehenden<br />

<strong>Middleware</strong>-Funktionen (z. B. publish oder subscribe) und Anwendungsrückrufe. Für<br />

einen Subscriber-Ereigniskanal (engl.: Subscriber Event Channel, SEC) kann <strong>die</strong> Anwendung<br />

einen Notizierungsrückruf (engl.: Notify Callback) angeben. Die <strong>Middleware</strong> ruft<br />

<strong>die</strong> als Rückruf gebundene Funktion auf, um ein eingegangenes Event an <strong>die</strong> Anwendung<br />

auszuliefern. Es gibt auÿerdem einen Ausnahmerückruf (engl.: Exception Callback), der<br />

aufgerufen wird, wenn <strong>die</strong> spezizierten QoS-Anforderungen nicht eingehalten werden können.<br />

Dieser Rückruf ist bei SECs und Publisher-Ereigniskanälen (engl.: Publisher Event<br />

Channel, PEC) verfügbar.<br />

1<br />

Die Implementierung ist Teil von <strong>FAMOUSO</strong>. Der Quellcode und dessen Dokumentation kann über <strong>die</strong><br />

Projekt-Website http://famouso.sf.net/ abgerufen werden.<br />

67


4 Integration in <strong>FAMOUSO</strong><br />

Im Folgenden wird zwischen den bisher vorhanden Best-Eort-Ereigniskanälen und den<br />

neu geschaenen Echtzeitereigniskanälen unterschieden. Anders als bei der Best-Eort-<br />

Kommunikation ist im Echtzeitkontext eine Entkopplung von Applikation und <strong>Middleware</strong>-<br />

Kern bezüglich Zeit und Programmuss nötig. Auf <strong>die</strong> Gründe und Eekte der Entkopplung<br />

wird in Abschnitt 4.2.1 eingegangen. Die Best-Eort-Ereigniskanäle stehen weiterhin<br />

mit der bisherigen Semantik zur Verfügung. In den Echtzeitereigniskanälen werden <strong>die</strong> für<br />

Echtzeitanwendungen vorgesehenen Features realisiert.<br />

Der Entwurf der Echtzeitkanäle orientiert sich an Echtzeitanwendungen zur digitalen<br />

Steuerung und Regelung, bei denen das Einlesen von Sensordaten, <strong>die</strong> Verarbeitung und<br />

<strong>die</strong> Ausgabe von Steuersignalen periodisch wiederholt werden. In verteilten Systemen sind<br />

an <strong>die</strong>ser Kette oft mehrere Komponenten beteiligt, wobei <strong>die</strong>se periodisch kommunizieren.<br />

Gemäÿ <strong>die</strong>ser typischen Anforderung wird für <strong>die</strong> Echtzeitkanäle streng periodische Kommunikation<br />

vorgesehen. Diese Flexibilitätseinschränkung geht mit dem groÿen Vorteil einher,<br />

dass es damit a-priori-Wissen über <strong>die</strong> Sende- und Empfangszeitpunkte gibt. Dieses<br />

Wissen ist ideal für <strong>die</strong> Bereitstellung von Echtzeitgarantien beim Me<strong>die</strong>nzugri und für<br />

eine schnelle Fehlererkennung.<br />

Für jeden Echtzeit-PEC muss mittels einer Periode angegeben werden, wie oft er Informationen<br />

in Events veröentlichen will. Die vom Publisher angegebene Periode erlaubt<br />

eine direkte Kopplung mit einem Kommunikationskanal des im Kapitel 3 beschriebenen<br />

echtzeitfähigen Me<strong>die</strong>nzugrisverfahrens. Lokales Scheduling von Echtzeit-Events ist somit<br />

nicht nötig. Auÿerdem wird keine Warteschlange gebraucht, in der sich Echtzeitdaten<br />

stauen und dabei veralten könnten. Eine geringere Ende-zu-Ende-Latenz und geringerer<br />

Jitter sind <strong>die</strong> Folge. Die Verpichtung, in jeder Periode zu senden, erlaubt auf den Subscribern,<br />

über das Ausbleiben von Events Fehler zu erkennen und angemessen auf das<br />

Fehlen aktueller Informationen zu reagieren, beispielsweise indem ein sicherer Zustand<br />

eingenommen wird. Dies ist eine wichtige Grundlage für <strong>die</strong> Entwicklung verlässlicher<br />

verteilter Echtzeitsysteme.<br />

4.1.1 Quality of Service<br />

Für jeden Ereigniskanal können individuelle QoS-Anforderungen speziziert werden,<br />

deren Einhaltung in <strong>FAMOUSO</strong> gemäÿ der Multi-Level-Composability-Check-<br />

Architecture (MLCCA, vgl. [SL09]) überprüft wird. Die entwickelten Echtzeitkommunikationskanäle<br />

ermöglichen darüber hinaus <strong>die</strong> Durchsetzung von zeitbezogenen QoS-<br />

Anforderungen wie einer Periode, einer maximalen Latenz oder eines maximalen Jitters.<br />

Durch <strong>die</strong> Koordination der Me<strong>die</strong>nzugrie (siehe Kapitel 3) kann für <strong>die</strong> Übertragung<br />

von Events innerhalb eines Netzwerks eine beschränkte Latenz mit geringem Jitter<br />

garantiert werden. Eine durch den Netzwerk-Planer gegebene QoS-Garantie bleibt auch<br />

beim Hinzukommen beliebig vieler weiterer Knoten und unabhängig von der Auslastung<br />

des Mediums erhalten. In Kombination mit der für <strong>die</strong>se Arbeit geltenden Annahme, dass<br />

68


4.1 Echtzeitereigniskanäle<br />

<strong>die</strong> Software in einer Umgebung läuft, in der <strong>die</strong> Einhaltung der Fristen von lokalen Tasks<br />

sichergestellt ist 2 , ergibt sich auch eine beschränkte Ende-zu-Ende-Latenz von der Veröffentlichung<br />

durch den Publisher bis zur Benachrichtigung des Subscribers.<br />

Einige der in MLCCA unterstützten QoS-Anforderungen haben für Echtzeitereigniskanäle<br />

eine erweiterte Bedeutung, <strong>die</strong> über <strong>die</strong> Composability-Checks hinaus gehen. Diese werden<br />

im Folgenden erläutert.<br />

4.1.1.1 Zeiteigenschaften<br />

Dieser Abschnitt behandelt <strong>die</strong> Parameter, <strong>die</strong> zur direkten Beeinussung der Zeiteigenschaften<br />

von Echtzeitereigniskanälen zur Verfügung stehen. Die an einen Echtzeit-PEC<br />

gestellten Anforderungen Periode, maximale Event-Länge und Slot-Rahmenintervall <strong>die</strong>nen<br />

als Anforderungen für <strong>die</strong> Reservierung des oder der zugehörigen Kommunikationskanäle.<br />

Die Bedeutung der Anforderungen in <strong>die</strong>sem Zusammenhang wurde bereits in<br />

Abschnitt 3.2.1 erklärt. Die Anforderungen Periode und maximale Event-Länge sind auch<br />

für Echtzeit-SECs und im Zusammenspiel von Echtzeit-PEC und -SEC relevant. Daher<br />

wird auf <strong>die</strong>se beiden nochmals eingegangen:<br />

• Periode: Die Echtzeitereigniskanäle funktionieren streng periodisch, so dass bei<br />

<strong>die</strong>sen <strong>die</strong> Periode als kennzeichnendes Attribut immer angegeben werden muss. Sie<br />

gibt <strong>die</strong> Zeit an, <strong>die</strong> zwischen der Auslieferung von zwei zeitlich aufeinander folgenden<br />

Events liegt. Als Werte sind nur Vielfache der Planungsgranularität G zulässig<br />

(siehe Abschnitt 3.2.5).<br />

Bei PECs bestimmt <strong>die</strong> Periode, wie oft Events veröentlicht werden können und<br />

müssen. Beim Publizieren von Sensorwerten entspricht sie beispielsweise der Abtastperiode<br />

oder einem Vielfachen dessen, wenn eine Vorverarbeitung über mehrere<br />

Werte stattndet. Der Publisher muss genau einmal pro Periode <strong>die</strong> <strong>Middleware</strong>-<br />

Funktion publish aufrufen, um ein Event wenn auch nur ein leeres Event <br />

zu veröentlichen. Abweichendes Verhalten wird als Fehler der Anwendung interpretiert.<br />

Beim SEC entspricht <strong>die</strong> Periode der gewünschten Periodizität der Weiterverarbeitung,<br />

denn einmal pro angegebener Periode wird der Anwendung über den<br />

Notizierungsrückruf (engl.: Notication Callback) das zu <strong>die</strong>sem Moment aktuellste<br />

Event ausgeliefert, falls <strong>die</strong>ses nicht veraltet ist. Wenn doch, wird stattdessen der<br />

Ausnahmerückruf (engl.: Exception Callback) aufgerufen. Details zu den Echtzeit-<br />

PECs und -SECs werden in Abschnitt 4.2.1 besprochen.<br />

2<br />

Hierzu wird ein echtzeitfähiges Task-Scheduling benötigt. Auÿerdem müssen ausreichend Betriebsmittel<br />

vorhanden sein, um <strong>die</strong> gegebenen Fristen einhalten zu können. Nicht vorhersagbare Verzögerungen,<br />

wie sie beispielsweise beim Swapping im Zusammenhang mit der Verwendung von virtuellem Speicher<br />

auftreten, sind auszuschlieÿen.<br />

69


4 Integration in <strong>FAMOUSO</strong><br />

Die Periode kann bei PECs und SECs eines Subjects unterschiedlich gewählt werden.<br />

Damit <strong>die</strong> geforderte QoS jedoch mit der gebotenen QoS kompatibel ist, muss <strong>die</strong><br />

Periode des Subscribers gröÿer oder gleich der des Publishers sein.<br />

Im Zusammenhang mit der maximalen Event-Gröÿe bestimmt <strong>die</strong> Periode auch den<br />

möglichen Datendurchsatz eines Kanals. Unter der Annahme, dass <strong>die</strong> beteiligten<br />

lokalen Tasks in den geforderten Zeitschranken ausführbar sind, hat <strong>die</strong> Periode auch<br />

Einuss auf <strong>die</strong> Ende-zu-Ende-Latenz. Im Worst-Case liegt <strong>die</strong>se bei der Summe<br />

aus Publisher-Periode, Netzwerklatenz und Subscriber-Periode. Durch <strong>die</strong> Abstimmung<br />

der lokalen Task-Planung und der Netzwerkplanung über <strong>die</strong> Angabe eines<br />

Slot-Rahmenintervalls kann <strong>die</strong> Ende-zu-Ende-Latenz jedoch auch direkt vorgegeben<br />

werden. Dies wird im Abschnitt 5.3 an einem Beispiel verdeutlicht.<br />

• Maximale Event-Länge: Bei Echtzeit-PECs und -SECs muss eine maximale Event-<br />

Länge (in Byte) angegeben werden, um <strong>die</strong> zu reservierenden Ressourcen genau<br />

bemessen zu können. Sie <strong>die</strong>nt der Dimensionierung der lokalen Event-Puer und<br />

beeinusst <strong>die</strong> Slotdauer auf dem Übertragungsmedium. Je geringer <strong>die</strong> maximale<br />

Event-Gröÿe, desto weniger Ressourcen müssen reserviert werden.<br />

Die maximale Event-Gröÿe sollte für ein Subject in globaler Übereinstimmung<br />

angegeben werden. Bei PECs können nur Events veröentlicht werden, <strong>die</strong> nicht<br />

gröÿer als <strong>die</strong> angegebene maximale Event-Länge sind. Bei Subscribern werden ebenso<br />

nur Events angenommen, <strong>die</strong> kleiner oder gleich der angegebenen maximalen<br />

Gröÿe sind.<br />

Für <strong>die</strong> Echtzeitkanäle ist auÿerdem das Kontext-Attribut Frist (engl.: Deadline) relevant,<br />

mit dem Events versehen werden können. Das Attribut erlaubt <strong>die</strong> Angabe eines absoluten<br />

spätesten Zeitpunktes für <strong>die</strong> Auslieferung des Events an einen Subscriber. Es wird nicht<br />

garantiert, dass das Event innerhalb der angegebenen First ausgeliefert werden kann, denn<br />

<strong>die</strong> Übertragung des Events erfolgt gemäÿ der QoS-Zusicherungen des zur Veröentlichung<br />

verwendeten PECs. Es wird jedoch sichergestellt, dass das Event nach Ablauf der Frist<br />

verworfen und nicht an Subscriber ausgeliefert wird. Dieses Attribut ist insbesondere bei<br />

der Weiterleitung von Events über Netzwerkgrenzen hinweg relevant. Hier können bisher<br />

keine beschränkten Latenzen garantiert werden. Mithilfe <strong>die</strong>ses Attribut kann jedoch <strong>die</strong><br />

Überschreitung einer maximal erlaubten Latenz erkannt werden.<br />

4.1.1.2 Verlässlichkeit<br />

Durch <strong>die</strong> Verpichtung der Publisher, einmal pro Periode ein Event zu veröentlichen,<br />

können Zeitfehler und Abstürze von Publisher-Applikationen von der <strong>Middleware</strong> erkannt<br />

werden. Beide äuÿern sich als Auslassung des erwarteten Events. Durch <strong>die</strong> Protokollierung<br />

derartiger Fehler kann der Entwickler bei der Diagnose von Problemen unterstützt werden.<br />

Sämtliche Fehler von Publisher-Knoten werden durch Fail-Silent-Verhalten kommuniziert<br />

70


4.1 Echtzeitereigniskanäle<br />

und werden somit über das Ausbleiben von erwarteten Events erkannt. Auch Übertragungsfehler<br />

im Netzwerk werden beim Empfang über CRC-Codes zu Auslassungen maskiert, so<br />

dass <strong>die</strong>se über den gleichen Mechanismus <strong>die</strong> Erkennung von Auslassungen durch <strong>die</strong><br />

Verletzung der spezizierten Periodizität erkennbar sind.<br />

Erkannte QoS-Verletzungen führen zum Aufruf des Ausnahmerückrufs des jeweiligen<br />

Ereigniskanals. Bei SECs werden nicht nur lokale Fehler erkannt, sondern auch Fehler der<br />

Publisher oder der Übertragung. PECs werden hingegen im Allgemeinen nur über lokale<br />

Fehler informiert. Bei CAN können dem PEC auch Fehler des Netzwerks gemeldet werden,<br />

da <strong>die</strong>se dem Sender bei CAN signalisiert werden. Eine derart eziente Rückmeldung ist<br />

bei Ethernet nicht möglich.<br />

Für <strong>die</strong> Verlässlichkeit im Kontext der Echtzeitkommunikationskanäle sind besonders <strong>die</strong><br />

durch Störungen des Netzwerks verursachten Auslassungen relevant. Da es sich dabei meist<br />

um kurzzeitige temporäre Störungen handelt, lässt sich <strong>die</strong> Wahrscheinlichkeit für das korrekte<br />

Empfangen der Daten durch mehrfaches Senden (Zeitredundanz) deutlich erhöhen.<br />

Für <strong>die</strong> mehrfache Übertragung derselben Daten muss zusätzliche Me<strong>die</strong>nzeit reserviert<br />

werden. Es existiert hier ein Zielkonikt zwischen Verlässlichkeit der Übertragung und der<br />

Menge der zu reservierenden Ressourcen. Um dem Anwendungsentwickler <strong>die</strong> Möglichkeit<br />

zum Abwägen in <strong>die</strong>sem Zielkonikt zu geben, kann für jeden PEC über das Attribut Repetition<br />

angegeben werden, wie häug ein Event wiederholt gesendet werden soll. Bei CAN<br />

kann <strong>die</strong> Repetition als maximale Anzahl der Wiederholungen genutzt werden, da hier bei<br />

Übertragungsfehlern eine sofortige Rückmeldung erfolgt. Somit kommt <strong>die</strong> Zeitredundanz<br />

dort nur im Fehlerfall zum Einsatz. Bei Ethernet wird jedes Paket mehrfach übertragen,<br />

um <strong>die</strong> Auslassungen zuverlässig zu maskieren.<br />

Eine Alternative zur Verwendung des Repetition-Attributs ist <strong>die</strong> Anwendung unterschiedlicher<br />

Perioden bei PEC und SEC. Ist <strong>die</strong> Periode beim PEC N Mal so groÿ wie<br />

beim SEC, so können innerhalb einer Subscriber-Periode bis zu N − 1 verloren gegangene<br />

Events maskiert werden.<br />

Andererseits gibt es auch den Fall, dass nicht jedes der veröentlichten Events für das<br />

System funktionskritisch ist, so dass eine gewisse Anzahl an Auslassungen lediglich zur<br />

Verringerung der von der Anwendung erbrachten Dienstgüte führt, ohne dass es zu<br />

einem kritischen Funktionsausfall kommt. Hierfür kann bei einem Echtzeit-SEC über das<br />

QoS-Attribut Omission <strong>die</strong> Anzahl der tolerierbaren aufeinanderfolgenden Auslassungen<br />

deniert werden. Der Wert beeinusst <strong>die</strong> Gültigkeitsdauer eines beim SEC eingegangenen<br />

Events, falls <strong>die</strong>se nicht explizit als Kontext-Attribut des Events angegeben wurde. Die<br />

Bestimmung und <strong>die</strong> Rolle der Gültigkeitsdauer wird in Abschnitt 4.2.1 besprochen.<br />

71


4 Integration in <strong>FAMOUSO</strong><br />

4.1.2 Verwendung der API<br />

Dieser Abschnitt gibt einen Überblick, wie <strong>die</strong> Echtzeitereigniskanäle verwendet werden<br />

können. Das hier vorgestellte Interface ist konzeptionell äquivalent zu den bereits vor Beginn<br />

der Arbeit in <strong>FAMOUSO</strong> vorhandenen Best-Eort-Ereigniskanälen. Auf <strong>die</strong> typische<br />

Verwendung des Interfaces in der momentanen Implementierung wird in Abschnitt 4.2.1<br />

gesondert eingegangen.<br />

Spezikation von QoS-Anforderungen QoS-Anforderungen von Ereigniskanälen werden<br />

unter Nutzung des Attribut-Frameworks AFFIX (vgl. [SF11]) in Form einer Attributmenge<br />

angegeben. Attributmengen werden in der Implementierung des Frameworks als<br />

C++-Klassentemplates realisiert. Dies ermöglicht <strong>die</strong> Composability-Checks zur Compile-<br />

Zeit über Template-Metaprogramme sowie <strong>die</strong> Optimierung des Programmcodes, der zur<br />

Erstellung der zur Laufzeit verwendeten Binärrepräsentation der Attribute <strong>die</strong>nt.<br />

Im folgenden C++ Codebeispiel werden Anforderungen für einen Echtzeitereigniskanal<br />

deniert:<br />

typedef SetProvider<<br />

Period ,<br />

MaxEventLength<br />

>:: attrSet Req ;<br />

Die Attributmenge Req enthält <strong>die</strong> Attribute Periode (Period) und maximale<br />

Eventlänge (MaxEventLength). Als Periode wird der Wert 5000 µs angegeben. Die<br />

Eventlänge wird auf maximal 20 Byte beschränkt. Die denierte Attributmenge Req wird<br />

im nachfolgenden Beispiel jeweils einem Echtzeit-PEC (RealTimePublisherEventChannel)<br />

und einem Echtzeit-SEC (RealTimeSubscriberEventChannel) als QoS-Anforderung zugeordnet.<br />

typedef RealTimePublisherEventChannel<<br />

famouso : : config : : PEC ,<br />

Req<br />

> MyRTPEC ;<br />

typedef RealTimeSubscriberEventChannel<<br />

famouso : : config : : SEC ,<br />

Req<br />

> MyRTSEC ;<br />

Sowohl RealTimePublisherEventChannel als auch RealTimeSubscriberEventChannel<br />

sind Klassen-Templates. Als erster Template-Parameter muss der PEC- bzw. SEC-Typ<br />

der verwendeten <strong>FAMOUSO</strong>-Konguration angegeben werden (siehe Abschnitt 4.3). Der<br />

72


4.1 Echtzeitereigniskanäle<br />

zweite Parameter ist <strong>die</strong> als QoS-Anforderung zu verwendende Attributmenge. Wenn für<br />

verschiedene Ereigniskanäle unterschiedliche QoS-Anforderungen speziziert werden, wird<br />

das verwendete Template zu verschiedenen Klassen-Typen instanziiert. Zur leichteren Verwendung<br />

wird den resultierenden Echtzeitereigniskanal-Typen hier mittels typedef jeweils<br />

ein kurzer Bezeichner zugeordnet. Der denierte Echtzeit-PEC mit den oben angegebenen<br />

QoS-Anforderungen ist nun als Typ MyRTPEC bekannt. Hinter dem Typ MyRTSEC<br />

verbirgt sich <strong>die</strong> Klasse für Echtzeit-SEC mit den selben QoS-Anforderungen. Andere<br />

QoS-Anforderungen können anlog zu den Beispielen deniert und an den Ereigniskanälen<br />

angewendet werden.<br />

Verwendung eines Echtzeit-Publisher-Ereigniskanals Um nun tatsächlich einen<br />

Ereigniskanal zu verwenden, muss lediglich der Typ des Kanals instanziiert werden.<br />

Um mehrere Kanäle mit den gleichen Anforderungen zu nutzen, müssen entsprechend<br />

mehrere Instanzen angelegt werden. Hier wird jedoch nur ein Kanal mit dem Bezeichner<br />

pec angelegt:<br />

MyRTPEC pec ( "my subj" ) ;<br />

pec . announce ( ) ;<br />

Bei der Instanziierung muss dem Konstruktor das Subject des Kanals übergeben werden.<br />

Das Subject ist in <strong>FAMOUSO</strong> genau 8 Byte lang. Hier wurde es als String "my subj"<br />

angegeben. In der zweiten Zeile wird der Kanal der <strong>Middleware</strong> bekannt gemacht, indem<br />

<strong>die</strong> Methode announce aufgerufen wird. Diese führt zur asynchronen Abarbeitung des<br />

in Abschnitt 3.3 beschriebenen Reservierungsprotokolls. Es wird folglich aus announce<br />

zurückgekehrt ohne auf Antworten des Planers zu warten. Nach dem announce sollte <strong>die</strong><br />

Anwendung einmal pro spezizierter Periode (hier 5000 µs) ein Event veröentlichen:<br />

Event event ( pec . subject ( ) ) ;<br />

event . data = "Payload" ;<br />

event . length = 7;<br />

pec . publish ( event ) ;<br />

Hier wird zunächst ein Event event angelegt und mit dem Subject der Kanals<br />

pec, den Nutzdaten "Payload" sowie der Byteanzahl der Nutzdaten initialisiert. Anschlieÿend<br />

wird das Event über den Aufruf der Methode publish auf dem Kanal<br />

veröentlicht. Ist <strong>die</strong> Auslieferung des Events nicht gemäÿ der QoS-Anforderungen<br />

möglich, da ein Echtzeitkommunikationskanal (noch) nicht zur Verfügung steht, wird<br />

beim publish der Ausnahmerückruf (engl.: Exception Callback) des PEC aufgerufen,<br />

falls <strong>die</strong>ser gebunden wurde. Unter der Voraussetzung, dass eine Funktion mit der Signatur<br />

void my_exception_handler() existiert, kann <strong>die</strong>se auf folgende Weise gebunden<br />

werden:<br />

73


4 Integration in <strong>FAMOUSO</strong><br />

pec . exception_callback . bind();<br />

Die unannounce-Methode zum Abbau des Kanals wird implizit beim Löschen des Kanalobjekts<br />

pec aufgerufen.<br />

Verwendung eines Echtzeit-Subscriber-Ereigniskanals Die Instanziierung des Echtzeit-<br />

SECs erfolgt analog zum -PEC. An <strong>die</strong> Stelle des announce-Aufrufs tritt jedoch hier das<br />

subscribe. Um den Kanal nutzen zu können, muss auÿerdem mindestens einer der Rückrufe<br />

gebunden werden. Im Folgenden Beispiel werden beide, sowohl der Notizierungs- als<br />

auch der Ausnahmerückruf, gebunden.<br />

MyRTSEC sec ( "my subj" ) ;<br />

sec . notify_callback . bind();<br />

sec . exception_callback . bind();<br />

sec . subscribe ( ) ;<br />

Die Signatur des Ausnahmerückrufs stimmt mit der beim PEC erwähnten überein. Die Auslieferung<br />

von Events an <strong>die</strong> Anwendung geschieht über den Aufruf des Notizierungsrückrufs.<br />

Er erhält das Event als Parameter.<br />

void my_notification_handler ( const Event & event ) {<br />

}<br />

// Verarbeitung des Events . . .<br />

Da pec und sec das gleiche Subject haben und ihre QoS-Anforderungen kompatibel sind,<br />

werden auf pec veröentlichte Events über <strong>die</strong> Funktion my_notificytion_handler an<br />

<strong>die</strong> Subscriber-Anwendung ausgeliefert. Ist <strong>die</strong> Auslieferung gemäÿ der spezizierten QoS<br />

nicht möglich, so wird stattdessen my_exception_handler aufgerufen. Der Abbau von<br />

SECs erfolgt über ein implizites unsubscribe beim Löschen von sec.<br />

4.2 Umsetzung in <strong>FAMOUSO</strong><br />

In <strong>die</strong>sem Abschnitt wird <strong>die</strong> Integration der Echtzeitkanäle in <strong>die</strong> bestehende Software-<br />

Architektur von <strong>FAMOUSO</strong> behandelt. Dafür werden neue Komponenten hinzugefügt<br />

und einige vorhandenen Komponenten um benötigte Funktionalität erweitert. Dabei wird<br />

auf <strong>die</strong> Kompatibilität der Schnittstellen geachtet, so dass <strong>die</strong> <strong>Middleware</strong> auch mit der<br />

Ergänzung vielfältig kongurierbar bleibt.<br />

Abb. 4.1 gibt einen Überblick über <strong>die</strong> erweiterte Architektur von <strong>FAMOUSO</strong>. Neu<br />

hinzugefügte Komponenten sind darin grau hinterlegt. Im unteren Teil des Bildes ist<br />

der Stapel der <strong>Middleware</strong>-Schichten dargestellt, über welche <strong>die</strong> angebotenen Dienste<br />

bereitgestellt werden. Als Schnittstelle zu den darauf aufbauenden Applikationen <strong>die</strong>nen<br />

<strong>die</strong> Ereigniskanäle (engl.: Event Channels, EC). Für Echtzeit-Applikationen wurde<br />

74


4.2 Umsetzung in <strong>FAMOUSO</strong><br />

Applikationen<br />

RT-Netz-Planer NRT-Poll-Master ...<br />

<strong>Middleware</strong><br />

RT-PEC RT-SEC NRT-PEC NRT-SEC<br />

Management Layer<br />

Event Layer<br />

Event Dispatcher<br />

Abstract Network Layer<br />

Network Guard<br />

Network Layer<br />

Abbildung 4.1: Integration in <strong>FAMOUSO</strong>. Neu hinzugefügte Komponenten<br />

sind grau hinterlegt.<br />

<strong>die</strong> Schnittstelle um Echtzeit-Publisher-Ereigniskanäle (RT-PEC) und Echtzeit-Subscriber-<br />

Ereigniskanäle (RT-SEC) erweitert. Anders als <strong>die</strong> Nicht-Echtzeit-Varianten (NRT-PEC<br />

und NRT-SEC) ndet in <strong>die</strong>sen eine Entkopplung der Anwendung und des <strong>Middleware</strong>-<br />

Kerns statt. Die Ereigniskanäle setzen auf dem Event Layer auf, der <strong>die</strong> eigentliche<br />

Publish/Subscribe-Funktionalität zur Verfügung stellt. Im Rahmen <strong>die</strong>ser Arbeit wurde er<br />

in zwei Sublayer untergliedert. Die bisherige Funktionalität des Event Layers wird nun vom<br />

Event Dispatcher übernommen. Seine Aufgaben sind im Wesentlichen <strong>die</strong> Auslieferung von<br />

Events an lokale Subscriber, <strong>die</strong> Verwaltung von Listen der bekannten lokalen PECs und<br />

SECs sowie unter Verwendung der darunter liegenden Ebenen das Publizieren über<br />

das Netzwerk sowie das Abholen von empfangenen Events. Neu hinzugefügt wurde der<br />

Management Layer, über den <strong>die</strong> Reservierung von Echtzeitkommunikationskanälen und<br />

andere QoS-Aspekte abgewickelt werden. Unterhalb des Event Layers liegen der Abstract<br />

Network Layer und der Network Layer, zwischen denen sich bei einem Echtzeit-Netzwerk<br />

der Network Guard eingliedert. Im Abstract Network Layer ndet <strong>die</strong> Fragmentierung<br />

von Nachrichten in Pakete statt, <strong>die</strong> im Netzwerk übertragbar sind. Der Network Guard<br />

sorgt für <strong>die</strong> Einhaltung des Echtzeit-Me<strong>die</strong>nzugrisprotokolls. Im Network Layer sind<br />

<strong>die</strong> Eigenheiten des verwendeten Netzwerk-Typs gekapselt. Für Netzwerk-Typen, <strong>die</strong> auf<br />

verschiedenen Plattformen unterschiedlich angesprochen werden, ist unterhalb des Network<br />

Layers eine Gerätetreiber-Abstraktion mit einheitlicher Schnittstelle vorgesehen, auf<br />

<strong>die</strong> in der Abbildung verzichtet wurde. Auf Knoten mit mehreren Netzwerkanbindungen<br />

können Abstract Network Layer, Network Guard und Network Layer für jedes Netzwerk<br />

individuell konguriert werden.<br />

75


4 Integration in <strong>FAMOUSO</strong><br />

Für <strong>die</strong> Echtzeitkanäle werden zwei spezielle, zur <strong>Middleware</strong> gehörende Applikationen<br />

ergänzt: der Echtzeit-Netzwerk-Planer und der Poll-Master. Auÿerhalb des <strong>Middleware</strong>-<br />

Kerns sind <strong>die</strong>se beiden Komponenten sehr leicht austauschbar, so dass <strong>die</strong> verwendete<br />

Planungs- und Polling-Strategie einfach modiziert werden kann. Die Kommunikation mit<br />

dem <strong>Middleware</strong>-Kern erfolgt über Ereigniskanäle mit für <strong>die</strong>sen Zweck reservierten Subjects.<br />

Neben <strong>die</strong>sen beiden speziellen Echtzeitapplikationen, können beliebig viele weitere<br />

Echtzeit- und Nicht-Echtzeit-Anwendungen existieren.<br />

4.2.1 Echtzeit-Publisher- und Echtzeit-Subscriber-Ereigniskanal<br />

Entkopplung von Anwendungen und <strong>Middleware</strong> Für <strong>die</strong> bisher vorhandenen Best-<br />

Eort-Ereigniskanäle kehrt der Aufruf der <strong>Middleware</strong>-Funktion publish erst nach der<br />

Übertragung des Events in alle eingebundenen Netze sowie der Auslieferung des Events<br />

an alle lokalen Subscriber zurück. Im Kontext einer Echtzeitanwendung ist <strong>die</strong>ses Verhalten<br />

problematisch, weil hierdurch eine sehr schwer vorhersagbare Verzögerung entsteht. Die<br />

Verzögerung wird auÿerdem sehr groÿ ausfallen, da im Allgemeinen keine Synchronität<br />

zwischen den publish-Aufrufen und den geplanten Sendezeitpunkten (siehe Kapitel 3)<br />

gegeben ist. Somit müsste vor der Rückkehr aus der publish-Funktion für alle angebundenen<br />

Netze auf den jeweils nächsten geplanten Sendezeitpunkt gewartet werden. Als Lösung<br />

für <strong>die</strong>ses Problem wurde <strong>die</strong> Entkopplung von Echtzeit-Applikationen und <strong>Middleware</strong>-<br />

Kern bezüglich Zeit und Programmuss gewählt. Auf <strong>die</strong>se Weise wird <strong>die</strong> Laufzeit von<br />

publish unabhängig von anderen Anwendungen, den Interna der <strong>Middleware</strong> und der<br />

Planung der Echtzeitkommunikationskanäle.<br />

Auch auf Subscriber-Seite ist <strong>die</strong> Entkopplung von Vorteil. Für Best-Eort-SECs erfolgt<br />

der Aufruf der Notizierungsrückrufe sequentiell aus dem <strong>Middleware</strong>-Kern. Die Laufzeit<br />

des Anwendungscodes zur Notizierung verzögert so bei mehreren lokalen Subscribern<br />

eines Subjects <strong>die</strong> Notizierung der anderen Subscriber, so dass zeitliche Vorhersagbarkeit<br />

nicht gegeben ist. Um <strong>die</strong>ses Problem zu umgehen, werden Events nicht sofort beim Empfang<br />

ausgeliefert, sondern über einen streng periodischen Anwendungstask.<br />

Minimales Multitasking Damit <strong>FAMOUSO</strong> in der minimalen Konguration für Mikrocontroller<br />

auch ohne Betriebssystem lauähig ist, wurde ein einfaches, nicht-präemptives<br />

und kooperatives Multitasking implementiert. Im umgesetzten Modell besteht jeder Task<br />

aus einer Funktion, einer Startzeit und einer optionalen Periode. Auÿerdem wird zwischen<br />

Echtzeit-Tasks (RT-Tasks) und Nicht-Echtzeit-Tasks (NRT-Tasks) unterschieden.<br />

Für <strong>die</strong> Ausführung der Tasks ist ein Task-Dispatcher zuständig. Dieser verwaltet eine<br />

nach Startzeit sortierte Liste der angemeldeten Tasks, <strong>die</strong> der Reihe nach abgearbeitet<br />

wird. Beim Anmelden periodischer Tasks wird der Startzeitpunkt wenn nötig durch<br />

Addition von Vielfachen der Periode in einen zukünftigen Zeitpunkt überführt. Der Dispatcher<br />

arbeitet <strong>die</strong> Task-Liste nun der Reihe nach ab und ruft jeweils zur angegebenen<br />

76


4.2 Umsetzung in <strong>FAMOUSO</strong><br />

Startzeit <strong>die</strong> Task-Funktion auf. Ein Task ist beendet, wenn seine Funktion zurückkehrt.<br />

Ein NRT-Task kann jedoch zwischenzeitlich kooperativ <strong>die</strong> Kontrolle an den Dispatcher<br />

übergeben, der nun <strong>die</strong> Möglichkeit hat, fällige RT-Tasks auszuführen. Es werden hierbei<br />

keine NRT-Tasks ausgeführt, sondern ausschlieÿlich RT-Tasks. Da RT-Tasks <strong>die</strong> Kontrolle<br />

nicht abgeben dürfen ist somit innerhalb der Aufrufhierarchie eines Dispatchers nur eine<br />

Kontrollabgabe möglich. Dadurch ist ein Deadlock zwischen mehreren NRT-Tasks ausgeschlossen.<br />

Die Abgabe der Kontrolle geschieht beispielsweise bei der Veröentlichung<br />

eines Events auf einem Best-Eort-Kanal über Ethernet, da hier auf <strong>die</strong> vom Poll-Master<br />

vergebene Sendeberechtigung gewartet werden muss 3 . Die Kontrolle kann in einem NRT-<br />

Task aber auch an beliebiger anderer Stelle abgegeben werden. Ist ein periodischer Task<br />

beendet, wird sein nächster Startzeitpunkt berechnet und er wird für <strong>die</strong>sen Zeitpunkt<br />

erneut in <strong>die</strong> Task-Warteschlange einsortiert. Die Perioden und <strong>die</strong> Startzeiten der Tasks<br />

müssen vom Anwendungsentwickler so gewählt werden, dass sich <strong>die</strong> Ausführungszeiten<br />

nicht überschneiden 4 .<br />

Das gewählte Task-Modell kommt mit nur einem Funktionsaufruf-Stack aus und ist daher<br />

insbesondere für stark ressourcenbeschränkte eingebettete Systeme interessant. Momentan<br />

wird es jedoch auch für <strong>Middleware</strong>-Kongurationen eingesetzt, <strong>die</strong> auf einem Betriebssystem<br />

mit präemptiven Multithreading-Support laufen. Hierbei werden alle Tasks in einem<br />

Dispatcher-Thread abgearbeitet. Eine bessere Ausnutzung des Multithreadings in <strong>die</strong>sen<br />

Umgebungen wird für eine weiterführende Arbeit vorgeschlagen.<br />

Verwendung des RT-PECs und RT-SECs mit dem Multitasking-Modell Wird das<br />

eben vorgestellte Multitasking-Modell verwendet, so kann es vom Entwickler auch zur<br />

Ausführung der Anwendungstasks eingesetzt werden. Wurde wie in Abschnitt 4.1.2 ein<br />

RT-PEC mit dem Bezeichner pec deniert, so könnte beispielsweise folgender einfacher<br />

Publisher-Task implementiert werden, der ein Event auf dem RT-PEC veröentlicht.<br />

void my_publisher_task_func ( ) {<br />

}<br />

// I n i t i a l i s i e r e Event ( ohne Kontext−A t t r i b u t e )<br />

Event event ( pec . subject ( ) ) ;<br />

event . length = 2;<br />

event . data = get_sensor_value ( ) ;<br />

// P u b l i z i e r e Event<br />

pec . publish ( event ) ;<br />

3<br />

Diese Funktionalität ist als Policy realisiert und kann bei Verwendung von präemptiven Multithreading<br />

durch eine Implementierung ausgetauscht werden, <strong>die</strong> an einer Semaphore auf <strong>die</strong> Sendeberechtigung<br />

wartet.<br />

4<br />

Da <strong>die</strong> Planung von Prozessorzeit nicht Thema <strong>die</strong>ser Arbeit ist, muss <strong>die</strong>ser Plan vom Anwendungsentwickler<br />

bereitgestellt werden.<br />

77


4 Integration in <strong>FAMOUSO</strong><br />

Um <strong>die</strong> Task-Funktion periodisch ausführen zu lassen, muss sie nun noch beim Dispatcher<br />

angemeldet werden:<br />

Task publisher_task ( publisher_task_start_time , period ,<br />

Task : : RealTime ) ;<br />

publisher_task . bind();<br />

Dispatcher : : enqueue ( publisher_task ) ;<br />

Hier wird zunächst eine Instanz der Klasse Task angelegt, <strong>die</strong> mit der Startzeit und der Periode<br />

initialisiert und als Echtzeit-Task markiert wird. Anschlieÿend wird <strong>die</strong> Task-Funktion<br />

gebunden. In der letzten Zeile wird der Task beim Dispatcher angemeldet. Im Anschluss<br />

ruft der Dispatcher ab dem Zeitpunkt publisher_task_start_time mit der angegebenen<br />

Periodizität (period) <strong>die</strong> Funktion my_publisher_task_func() auf.<br />

Auf der Subscriber-Seite ist ein Task für den periodischen Aufruf des gebundenen<br />

Notizierungs- bzw. Ausnahmerückrufs zuständig: der Subscriber-Task. Er wird intern<br />

im RT-SEC initialisiert und verwaltet. Optional kann bei der Erstellung des RT-SEC<br />

eine subscriber_task_start_time angegeben werden, um den Task mit anderen Aktivitäten<br />

zu synchronisieren. Sie gibt den Zeitpunkt des ersten Aufrufs des Notication<br />

bzw. Exception Callbacks als globale Zeit an. Damit wird auch <strong>die</strong> Phasenverschiebung<br />

bezüglich anderer Tasks deniert. Der zwischen publisher_task_start_time<br />

und subscriber_task_start_time bestehende Zeitversatz bestimmt <strong>die</strong> Ende-zu-<br />

Ende-Latenz vom Veröentlichen des Events bis zur Auslieferung des Events beim<br />

Subscriber. Es wird auÿerdem eine Abstimmung mit der Netzwerkplanung über <strong>die</strong><br />

Angabe eines Slot-Rahmenintervalls für den RT-PEC empfohlen. Denn wenn dadurch<br />

sichergestellt ist, dass <strong>die</strong> Übertragung über das Netzwerk zwischen der publisher- und<br />

subscriber_task_start_time stattndet, kann eine Ende-zu-Ende-Latenz garantiert<br />

werden, <strong>die</strong> der Dierenz der beiden Zeiten entspricht. Im Zusammenhang mit der<br />

Evaluation (Abschnitt 5.3) wird <strong>die</strong> Abstimmung von Prozessor- und Netzwerkplanung<br />

illustriert.<br />

Temporal Firewall Da das zur Veröentlichung bestimmte Event beim publish nicht<br />

direkt versendet bzw. an lokale Subscriber ausgeliefert wird, muss es zwischengespeichert<br />

werden. Konzeptionell handelt es sich bei dem Zwischenspeicher um eine Temporal Firewall<br />

(vgl. [KN97]), da sie <strong>die</strong> Schnittstelle zwischen der Anwendung und der <strong>Middleware</strong> als<br />

Kommunikationssystem darstellt. Die kommunizierten Echtzeitdaten verfügen über eine<br />

zeitlich beschränkte Gültigkeit, weil sich <strong>die</strong> zu Grunde liegenden physikalischen Gröÿen<br />

als Funktionen der Zeit ständig ändern können. Die Temporal Firewall verhindert <strong>die</strong> Verbreitung<br />

veralteter Informationen, <strong>die</strong> für <strong>die</strong> Echtzeitsteuerung wertlos sind, oder sogar<br />

schädlich sein können, wenn sie nicht als veraltet identizierbar sind. Daher funktioniert<br />

<strong>die</strong> Temporal Firewall nicht als Queue, sondern enthält zu jedem Zeitpunkt genau ein<br />

Event, nämlich das zuletzt veröentlichte und damit aktuellste Event. Dieses wird jedoch<br />

78


4.2 Umsetzung in <strong>FAMOUSO</strong><br />

nach Ablauf der Gültigkeit verworfen, wenn es nicht bereits zwischenzeitlich durch ein<br />

neueres Event überschrieben wurde.<br />

Funktionsweise RT-PEC Beim RT-PEC schreibt der publish-Aufruf das Event in <strong>die</strong><br />

Temporal Firewall. Ist zur Zeit <strong>die</strong> Einhaltung der QoS nicht garantiert, da (noch) nicht<br />

alle benötigten Echtzeitkommunikationskanäle zur Verfügung stehen, wird beim publish<br />

auÿerdem der Exception Callback aufgerufen. Erfolgt eine Periode lang kein publish,<br />

so verliert das gepuerte Event seine Gültigkeit. Die Auslieferung des Events an lokale<br />

Subscriber und über angebundene Netzwerke erfolgt zeitlich entkoppelt. Für jeden in Verwendung<br />

bendlichen Kommunikationskanal gibt es einen eigenen Deliver-Task, der <strong>die</strong><br />

Temporal Firewall liest und das Event über das jeweilige Netzwerk versendet, wenn das<br />

Event noch gültig ist. Auf <strong>die</strong>se Weise werden Zeitfehler der Anwendung erkannt und <strong>die</strong><br />

Verbreitung veralteter Events verhindert. Lokale Subscriber werden im Deliver-Task des<br />

ersten Netzwerks der <strong>FAMOUSO</strong>-Konguration be<strong>die</strong>nt.<br />

Funktionsweise RT-SEC Auch im RT-SEC wird eine Temporal Firewall eingesetzt. Hier<br />

schreibt <strong>FAMOUSO</strong> in den Event-Puer, wenn ein auf Subject und Kontextlter passendes<br />

nicht veraltetes Event vom Netzwerk abgeholt oder von einem lokalen Deliver-Task verteilt<br />

wird. Ein Event ist veraltet, falls es eine bereits verstrichene Frist als Kontextattribut<br />

enthält. Liegt eine angegebene Frist in der Zukunft, so wird sie als Gültigkeitsfrist<br />

für das Event verwendet. Wenn das Kontextattribut fehlt, wird <strong>die</strong> Frist aus den QoS-<br />

Anforderungen des RT-SEC bestimmt:<br />

t expire = t rcv + (n om + 1) · p sub<br />

Dabei entspricht t rcv dem aktuellen Zeitpunkt beim Schreiben der Temporal Firewall, p sub<br />

der Subscriber-Periode und n om der für den RT-SEC spezizierten Anzahl an tolerierbaren<br />

Auslassungen. Falls letztere nicht angegeben wurde, wird n om = 0 angenommen. Der<br />

Subscriber-Task liest das in der Temporal Firewall liegende Event und liefert es über den<br />

Notizierungsrückruf an <strong>die</strong> Anwendung aus, wenn sein Gültigkeit noch nicht abgelaufen<br />

ist. Anderenfalls wird der Exception Callback aufgerufen, so dass <strong>die</strong> Anwendung auf den<br />

Fehler reagieren kann, beispielsweise indem sie das Echtzeitsystem in einen sicheren Zustand<br />

bringt. Nach dem Ablauf einer Periode wird der Subscriber-Task erneut ausgeführt.<br />

Wurde für den RT-SEC eine Auslassung n om speziziert, so wird der Exception Callback<br />

erst aufgerufen, nachdem n om + 1 Perioden in Folge kein Event eingegangen ist.<br />

Nebenläugkeit an der Temporal Firewall Beim Puer der Temporal Firewall handelt es<br />

sich um eine gemeinsam genutzte Ressource, <strong>die</strong> nicht gleichzeitig geschrieben und gelesen<br />

werden darf. Wird beispielsweise ein Task beim Lesen von einem anderen unterbrochen, der<br />

ein neues Event in den Puer schreibt, so hat der lesende Task am Ende eine inkonsistente<br />

79


4 Integration in <strong>FAMOUSO</strong><br />

Sicht, da sich das gelesene Event aus Teilen zweier verschiedener Events zusammensetzt. In<br />

der momentanen Implementierung besteht das Problem nur für <strong>die</strong> Temporal Firewall im<br />

RT-SEC. Beim RT-PEC erfolgt das Lesen und Schreiben nicht nebenläug, da für beides jeweils<br />

ein nicht unterbrechbarer Task gemäÿ des oben beschriebenen Modells vorgesehen ist<br />

und <strong>die</strong>se vom Task-Dispatcher nur nacheinander ausgeführt werden. Beim RT-SEC wird<br />

der Puer jedoch nebenläug beschrieben, in eingebetteten Systemen ohne Betriebssystem<br />

aus dem Interrupt-Kontext und anderenfalls aus einem separaten Thread. Folglich muss<br />

für <strong>die</strong> Temporal Firewall im RT-SEC der wechselseitige Ausschluss sichergestellt werden.<br />

Die momentane Implementierung sieht dafür <strong>die</strong> doppelte Auslegung des Event-Puers<br />

vor. Einer der Puer steht jederzeit zum Lesen bereit, der andere zum Schreiben. Wurde<br />

ein neues Event in letzteren Puer geschrieben, so werden <strong>die</strong> Aufgaben der Puer (Lese-<br />

Puer und Schreib-Puer) in einem kurzen nicht unterbrechbaren Abschnitt getauscht, so<br />

dass das neu geschriebene Event nun zum Lesen bereitsteht. Anders als bei der Verwendung<br />

von Semaphoren oder anderen Locking-Konzepten entsteht hier beim Zugri auf den<br />

Puer keine Verzögerung und kein Jitter.<br />

In Spezialfällen kann durch <strong>die</strong> Abstimmung des Slot-Rahmenintervalls mit den Zeitparametern<br />

des Subscriber-Tasks sichergestellt werden, dass es nie zu nebenläugen Zugrien<br />

auf <strong>die</strong> Temporal Firewall kommt, so dass eine doppelte Auslegung des Puers nicht nötig<br />

ist. Bei einer Erweiterung des Systems könnte <strong>die</strong>se Eigenschaft jedoch leicht verloren<br />

gehen, wobei ein schwer zu ndender Race-Condition-Bug entsteht. Daher empehlt der<br />

Autor, für RT-SECs immer <strong>die</strong> sichere doppelt gepuerte Temporal Firewall zu verwenden<br />

5 .<br />

4.2.2 Management Layer<br />

Der Management Layer ist ein Sublayer des Event Layers. Er ist für Protokolle des<br />

<strong>Middleware</strong>- und QoS-Managements verantwortlich. Für <strong>die</strong>se Arbeit ist hier das Reservierungsprotokoll<br />

(Abschnitt 3.3) zu nennen. Das Protokoll nutzt <strong>die</strong> in <strong>FAMOUSO</strong><br />

vorhandenen Mechanismen indem es über einen Management-Kanal arbeitet, einen NRT-<br />

Kanal der über ein spezielles reserviertes Subject erreichbar ist. Der Management Layer<br />

übernimmt bei dem Reservierungsprotokoll <strong>die</strong> Rolle des Slaves. Dazu publiziert er<br />

zyklisch <strong>die</strong> QoS-Anforderungen der Ereigniskanäle in Announcements- und Subscriptions-Events.<br />

Vom Planer erhält er über den Kanal veröentlichte Events zum Setzen<br />

des Reservierungszustands (z. B. Res). Beim Erhalt eines solchen Events informiert der<br />

Management Layer den angesprochenen RT-PEC.<br />

Die Announcements- und Subscriptions-Events werden auch für <strong>die</strong> Composability-<br />

Checks zur Laufzeit (vgl. [SL09]) und <strong>die</strong> selektive Weiterleitung von Events an Gateways<br />

verwendet. Werden weder <strong>die</strong>se beiden Features noch Echtzeitkanäle benötigt, kann<br />

5<br />

Die zu verwendende Temporal Firewall ist ein Kongurationsparameter der Echtzeitkanäle.<br />

80


4.2 Umsetzung in <strong>FAMOUSO</strong><br />

der Management Layer in der <strong>FAMOUSO</strong>-Konguration abgeschaltet werden, um den<br />

Ressourcenverbrauch in eingebetteten Systemen zu verringern.<br />

4.2.3 Planer<br />

Der Planer ist eine spezielle <strong>FAMOUSO</strong>-Applikation, <strong>die</strong> für <strong>die</strong> Koordination der Me<strong>die</strong>nzugrie<br />

in einem oder mehreren Netzwerken zuständig ist. Dafür wird in der Komponente<br />

das in Abschnitt 3.2 vorgestellte Planungsverfahren eingesetzt. Als <strong>FAMOUSO</strong>-<br />

Applikation ist der Planer leicht gegen eine andere Implementierung austauschbar, beispielsweise<br />

gegen einen netzwerkübergreifenden Planer oder einen Planer, der einen statischen<br />

vorberechneten Plan an <strong>die</strong> Knoten verteilt. Die Konguration des im Rahmen<br />

<strong>die</strong>ser Arbeit implementierten Planers wird in Abschnitt 4.3.2 vorgestellt.<br />

Der Planer abonniert den Management-Kanal und erhält auf <strong>die</strong>sem Weg <strong>die</strong> Announcements-<br />

und Subscriptions-Events aller Knoten. Er ltert aus <strong>die</strong>sen Events all jene<br />

Information, <strong>die</strong> für von ihm geplante Netze relevant sind. Wenn mehrere Planer aktiv<br />

sind, gilt <strong>die</strong>s für jeden Planer. Momentan kann jedoch jedes Netz nur von einem Planer<br />

verwaltet werden, so dass der Ausfall eines Planers nicht durch Komponentenredundanz<br />

maskiert werden kann. Hierfür ist eine Erweiterung der Protokolle nötig, <strong>die</strong> Inkonsistenzen<br />

zwischen replizierten Komponenten ausschlieÿt. Für bereits reservierte und verwendete<br />

Kommunikationskanäle ist der Ausfall des Planers jedoch unkritisch, da <strong>die</strong>ser nach der<br />

Etablierung der Kanäle nicht mehr benötigt wird.<br />

Die aus den Announcements- und Subscriptions-Events gewonnenen Informationen<br />

werden vom Planer gemäÿ des vorgestellten Reservierungsprotokolls und Planungsalgorithmus'<br />

(siehe Abschnitt 3.3 bzw. 3.2) verarbeitet. Dabei veröentlicht er Events über den<br />

Management-Kanal zum Setzen des Reservierungszustandes der angeforderten Echtzeitkommunikationskanäle.<br />

Wie im Protokoll vorgesehen, kommuniziert er auÿerdem mit dem<br />

Poll-Master, falls ein solcher verwendet wird.<br />

4.2.4 Network Guard und Poll-Master<br />

Für Netzwerke, über <strong>die</strong> Echtzeitkommunikation laufen soll, muss in <strong>die</strong> Konguration<br />

des zugehörigen Netzwerk-Stacks ein Network Guard integriert werden. Die Aufgabe des<br />

Network Guards ist es, <strong>die</strong> Einhaltung des Me<strong>die</strong>nzugrisprotokolls (siehe Abschnitt 3.1)<br />

sicherzustellen. Er ordnet sich unterhalb des für <strong>die</strong> Fragmentierung verantwortlichen Abstract<br />

Network Layers ein. Die unten aufgeführten Überprüfungen werden somit nicht nur<br />

für jedes Event, sondern für jedes zu versendende Paket durchgeführt 6 .<br />

6<br />

Bei der Fragmentierung werden Events, <strong>die</strong> nicht in einem Paket übertragbar sind, in mehrere Pakete<br />

zerlegt.<br />

81


4 Integration in <strong>FAMOUSO</strong><br />

RT-Kommunikation Bei der Echtzeitkommunikation ist der Network Guard eine Kontrollinstanz,<br />

um das Netzwerkmedium vor der Ausbreitung von Zeitfehlern zu schützen,<br />

wie sie etwa durch Fehler bei der Planung der Prozessornutzung oder durch falsche Dimensionierung<br />

der lokalen Verzögerung ˆF entstehen können. Ein von einem RT-PEC stammendes<br />

Paket wird nur dann zum Versenden an den Network Layer weitergereicht, wenn<br />

der momentane Zeitpunkt innerhalb des Übertragungsstartfensters des Echtzeitkommunikationskanals<br />

liegt (siehe Abschnitt 3.1.3). Das Senden sollte auÿerdem unterbunden<br />

werden, wenn <strong>die</strong> Genauigkeit der Uhr (globale Zeit) nicht der Annahme gerecht wird, <strong>die</strong><br />

bei der Planung verwendet wurde.<br />

NRT-Kommunikation Die zweite Aufgabe des Network Guards ist <strong>die</strong> zeitliche Einordnung<br />

von NRT-Paketen in das TDMA-Schema des RT-Netzwerks gemäÿ Abschnitt 3.1.4.<br />

Für Ethernet wird hier der Poll-Slave eingesetzt, das Gegenstück zum Poll-Master. Er<br />

abonniert den Polling-Kanal und erhält so <strong>die</strong> dort vom Poll-Master veröentlichten Sendeberechtigungen.<br />

Wird auf einem Best-Eort-Kanal ein Event veröentlicht, so wird für<br />

jedes zu versendende Paket überprüft ob der Knoten gerade eine NRT-Sendeberechtigung<br />

hat. Wenn ja, wird das Paket sofort an den Network Layer weitergereicht. Falls momentan<br />

keine Sendeberechtigung vorliegt, wartet der Task in einer Schleife auf <strong>die</strong> Sendeberechtigung.<br />

Dabei gibt er kooperativ <strong>die</strong> Kontrolle an den Task-Dispatcher ab 7 , der eventuell<br />

fällige RT-Tasks abarbeitet. Kehrt der Aufruf des Task-Dispatchers zurück, so wird erneut<br />

überprüft, ob eine Sendeberechtigung vorliegt.<br />

Für CAN ist eine Implementierung vorgesehen, <strong>die</strong> NRT-Pakete ohne Warten an den Network<br />

Layer weiterleitet, da NRT hier über <strong>die</strong> CAN-Prioritäten in das TDMA-Schema<br />

integriert wird. Im Sinne der Erweiterbarkeit kann <strong>die</strong> zur Einordnung der NRT-Pakete<br />

verwendete Lösung bei der Konguration des Netzwerk-Stacks angegeben werden (siehe<br />

Abschnitt 4.3). So lassen sich auch alternative Strategien leicht in <strong>FAMOUSO</strong> integrieren.<br />

Beispielsweise könnte Polling auch bei CAN eingesetzt werden, wenn der durch <strong>die</strong><br />

prioritätsbasierte Lösung erzeugte Jitter vermieden werden soll. Denkbar wäre auch, <strong>die</strong><br />

NRT-Nachrichten über einen für den Knoten reservierten TDMA-Slot abzuwickeln. Beide<br />

Strategien lieÿen sich als Policy implementieren und in der <strong>Middleware</strong>-Konguration<br />

verwenden, ohne dass Änderungen an bestehenden Komponenten nötig wären.<br />

Poll-Master Der Poll-Master ist eine spezielle <strong>FAMOUSO</strong>-Anwendung, <strong>die</strong> den Austausch<br />

von NRT-Nachrichten im Netzwerk koordiniert. In Abschnitt 3.1.4.1 wurde das<br />

Polling-Konzept für Ethernet vorgestellt. Der Poll-Master erhält vom Planer <strong>die</strong> Information,<br />

welche Slots zum Polling zur Verfügung stehen und vergibt in <strong>die</strong>sen Slots zeitlich begrenzte<br />

Sendeberechtigungen an <strong>die</strong> ihm bekannten Knoten. Wie für den Planer wird auch<br />

7<br />

Das Publizieren auf einem Best-Eort-Kanal ist aus einem RT-Task nicht erlaubt, da <strong>die</strong>s den Task<br />

unvorhersagbar verzögert.<br />

82


4.2 Umsetzung in <strong>FAMOUSO</strong><br />

für den Poll-Master fehlerfreies Arbeiten angenommen. Die Erweiterung der Protokolle zur<br />

Unterstützung eines Backup-Masters wird für eine weiterführende Arbeit vorgeschlagen.<br />

4.2.5 Network Layer<br />

Zur Realisierung der Echtzeitkommunikationskanäle sind Anpassungen in den Network<br />

Layern nötig. Das zeitredundante Versenden von Paketen infolge einer bei einem RT-<br />

PEC spezizierten Repetition wird hier implementiert. Hierdurch können spezielle Features<br />

der verschiedenen Netzwerke ausgenutzt werden. Die Fehlersignalisierung bei CAN<br />

kann genutzt werden, um dort nur im Fehlerfall eine erneute Übertragung einzuleiten, bzw.<br />

<strong>die</strong> Häugkeit der automatischen Sendewiederholung auf Basis des Fehler-Interrupts auf<br />

den entsprechenden Wert einzuschränken. Auf <strong>die</strong>se Weise steht bei CAN mehr Me<strong>die</strong>nzeit<br />

für NRT-Nachrichten zur Verfügung. Bei Ethernet gibt es keine derart eziente Rückmeldung<br />

über den Erfolg einer Multicast-Nachrichtenübertragung. Daher wird hier das Paket<br />

immer Rep + 1 Mal versendet, wenn Rep als Wiederholungsfaktor angegeben wurde. Um<br />

auf der Empfängerseite <strong>die</strong> Duplikate zu ltern, werden <strong>die</strong> Pakete mit Sequenznummern<br />

versehen, wobei wiederholte Pakete <strong>die</strong> gleiche Sequenznummer erhalten.<br />

Eine weitere Anpassung betrit <strong>die</strong> Treiber für CAN-Netzwerk-Hardware. In Abschnitt<br />

3.1.4.2 wurde erklärt, wie NRT-Nachrichten unter Ausnutzung der CAN-<br />

Prioritäten in das TDMA-Schema integriert werden können. Hierfür muss jedoch garantiert<br />

sein, dass eine RT-Nachricht lokal nie von einer NRT-Nachricht verzögert wird, auch nicht<br />

auf der Ebene der Hardware. So muss ein RT-Frame auch versendet werden können,<br />

während ein NRT-Frame noch auf seinen Versand wartet. Dies muss der Treiber sicherstellen.<br />

Vom CAN-Network-Layer erhält er dafür jeweils <strong>die</strong> Information, ob es sich um<br />

einen RT- oder NRT-Frame handelt. Je nach Möglichkeiten der Hardware bzw. der verwendeten<br />

Schnittstelle zur Hardware sind verschiedene Implementierungen denkbar. Wenn in<br />

einem CAN-Controller mehrere Sendepuer zur Verfügung stehen, kann ein Puer für RT-<br />

Frames und einer für NRT-Frames reserviert werden. Ist nur ein Sendepuer vorhanden<br />

und unterstützt <strong>die</strong> Schnittstelle das Abbrechen eines einmal veranlassten Sendevorgangs,<br />

so kann ein noch nicht abgeschlossener Sendevorgang eines NRT-Frames abgebrochen<br />

werden, um den Sendepuer für den RT-Frame frei zu machen. Nach dem Versenden<br />

des RT-Frames kann der noch ausstehende, woanders zwischengespeicherte, NRT-Frame<br />

erneut in den Sendepuer geschrieben werden. Ist auch <strong>die</strong>s nicht möglich, können zwei<br />

CAN-Controller verwendet werden, <strong>die</strong> an das selbe Netz angeschlossen werden. Dabei<br />

werden RT-Frames über den einen und NRT-Frames über den anderen CAN-Controller<br />

versendet. Zum Empfang von Frames wird nur einer der beiden Controller genutzt.<br />

83


4 Integration in <strong>FAMOUSO</strong><br />

1 namespace famouso {<br />

2 class config {<br />

3 typedef CAN : : avrCANARY can ;<br />

4 typedef nl : : CAN : : ccp : : Client ccpClient ;<br />

5 typedef nl : : CAN : : etagBP : : Client etagClient ;<br />

6 typedef nl : : CANNL NL ;<br />

7 typedef guard : : NetworkGuard<<br />

8 NL ,<br />

9 guard : : RT_WindowCheck ,<br />

10 guard : : NRT_HandledByNL<br />

11 > NG ;<br />

12 typedef anl : : AbstractNetworkLayer ANL ;<br />

13 public :<br />

14 typedef el : : EventLayer<<br />

15 ANL ,<br />

16 el : : ml : : ManagementLayer<br />

17 > EL ;<br />

18 typedef api : : PublisherEventChannel PEC ;<br />

19 typedef api : : SubscriberEventChannel SEC ;<br />

20 } ;<br />

21 }<br />

4.3 Konguration<br />

Abbildung 4.2: Beispielkonguration des <strong>Middleware</strong>-Stacks<br />

4.3.1 <strong>Middleware</strong>-Stack<br />

Der <strong>Middleware</strong>-Stack von <strong>FAMOUSO</strong> ist kongurierbar, so dass der Entwickler <strong>die</strong> <strong>Middleware</strong><br />

auf <strong>die</strong> Bedürfnisse der Anwendung und <strong>die</strong> genutzte Hardware zuschneiden kann.<br />

Die Konguration erfolgt zur bzw. vor der Compile-Zeit, so dass der generierte Maschinencode<br />

nur <strong>die</strong> benötigten Komponenten enthält. Dies ist insbesondere für eingebettete<br />

Systeme mit stark beschränkten Ressourcen wichtig.<br />

Der Quellcodeausschnitt in Abb. 4.2 zeigt eine Beispielkonguration. Die Konguration<br />

des <strong>Middleware</strong>-Stacks erfolgt anhand von aufeinander aufbauenden Typ-Denitionen<br />

in einer Klasse (hier config). Zeile 3 deniert den zu verwendenden CAN-Treiber.<br />

Hier wird avrCANARY eingesetzt, der CAN-Treiber für AVR-Mikrocontroller mit CAN-<br />

Unterstützung. In Zeile 4 und 5 wird <strong>die</strong> Rolle deniert, <strong>die</strong> der Knoten bei dem CANspezischen<br />

Binde- bzw. Kongurationsprotokoll einnimmt. In der 6. Zeile wird der mit<br />

den bisher denierten Policy-Klassen parametrisierte CAN-Network-Layer als Network-<br />

Layer-Typ (NL) festgelegt. Auf <strong>die</strong>sem baut der Network Guard auf, da es sich hier um<br />

84


4.3 Konguration<br />

ein CAN-Netz handelt, über das Echtzeitkommunikation laufen soll. Neben dem Network-<br />

Layer-Typ hat er zwei weitere Template-Parameter über <strong>die</strong> sich sein Verhalten kongurieren<br />

lässt. In Zeile 9 wird <strong>die</strong> Policy angegeben, <strong>die</strong> der Network Guard für <strong>die</strong> Überprüfung<br />

der Zeiteigenschaften der RT-Pakete verwenden soll. Mögliche Optionen sind<br />

hier RT_WindowCheck und RT_NoWindowCheck. RT_WindowCheck verhält sich wie in Abschnitt<br />

4.2.4 beschrieben, während RT_NoWindowCheck keine Überprüfungen durchführt.<br />

Letzteres ist sinnvoll, um den Ressourcenverbrauch zu reduzieren, wenn ein Knoten an<br />

einen RT-Netzwerk angeschlossen ist, aber selbst keine RT-Events publiziert. In Zeile 10<br />

wird <strong>die</strong> Policy zur Handhabung von NRT-Paketen angegeben. NRT_HandledByNL bietet<br />

hier das in Abschnitt 4.2.4 beschriebene Verhalten für CAN, NRT_PollSlave das für Ethernet.<br />

An <strong>die</strong>ser Stelle können auch andere Strategien eingesetzt werden, indem hier eine<br />

entsprechend implementierte Policy-Klasse angegeben wird. Für Netzwerke ohne Echtzeitkommunikationskanäle<br />

ist kein Network Guard nötig. Dort würde bei der Denition des<br />

Abstact Network Layers ANL (Zeile 12) der NL anstelle des Network Guards NG als Template-<br />

Parameter angegeben werden, so dass dort der Abstract Network Layer direkt auf dem<br />

Network Layer aufbauen würde. Die Denition des Event-Layer-Typs EL in Zeile 14 bis 17<br />

komplettiert den <strong>Middleware</strong>-Stack. Als erster Template-Parameter wird hier, wie in allen<br />

Denitionen, <strong>die</strong> darunter liegende Schicht angegeben. Der zweite Parameter (Zeile 16)<br />

sorgt hier für das Einbinden des Management Layers. Wenn <strong>die</strong>ser nicht benötigt wird,<br />

entfällt der zweite Parameter. In Zeile 18 und 19 werden <strong>die</strong> Typen PEC und SEC deniert,<br />

<strong>die</strong> als Ereigniskanäle <strong>die</strong> Schnittstelle zur Anwendung darstellen und bei der Denition<br />

der Echtzeitereigniskanal-Typen (siehe Abschnitt 4.1.2) benötigt werden.<br />

Es ist auch weiterhin möglich, <strong>die</strong> <strong>Middleware</strong> komplett ohne <strong>die</strong> Unterstützung von<br />

Echtzeitkanälen zu kongurieren, indem Network Guard und Management Layer ausgelassen<br />

werden. Da beides neue Komponenten sind, <strong>die</strong> in früheren Kongurationen nicht<br />

vorkommen, behalten ältere Kongurationen ihre Gültigkeit. Dort entsteht auÿerdem kein<br />

zusätzlicher Ressourcenaufwand durch <strong>die</strong> Echtzeit-Erweiterungen, da sie bei <strong>die</strong>sen Kon-<br />

gurationen nicht in den Maschinencode übernommen werden.<br />

4.3.2 Planer und Poll-Master<br />

Der Echtzeit-Netzwerk-Planer und der Poll-Master sind als Klassen-Template implementiert.<br />

Sie erhalten als Template-Parameter <strong>die</strong> Ereigniskanal-Typen der <strong>Middleware</strong>-Stack-<br />

Konguration. Diese werden benötigt, da intern der Management-Kanal abonniert wird<br />

und auch darauf publiziert werden muss. Zur Verwendung des Planers muss eine Instanz<br />

der Planer-Template-Klasse RTNetScheduler angelegt werden. Dem Planer müssen anschlieÿend<br />

Netzwerke zugeordnet werden, für deren Echtzeitplanung <strong>die</strong>ser verantwortlich<br />

sein soll. Dafür muss jeweils eine Instanz der Klasse NetworkSchedule angelegt werden,<br />

<strong>die</strong> mit der Netzwerk-ID, den Planungsparametern und einem Verweis auf den Planer<br />

initialisiert wird.<br />

85


4 Integration in <strong>FAMOUSO</strong><br />

RTNetScheduler<<br />

famouso : : config : : PEC ,<br />

famouso : : config : : SEC> sched ;<br />

NetworkSchedule can (<br />

NetworkID ( 1 ) ,<br />

CanNetworkTimingConfig (<br />

250000 , // Bitrate in Bit pro Sekunde<br />

50 , // Uhrengranularität g in µs<br />

1000 , // Planungsgranularität G in µs<br />

10000 , // ˆF in ns<br />

10000) , // ˆB in ns<br />

sched ) ;<br />

Auf <strong>die</strong> Zeitparameter wurde in Kapitel 3 bereits ausführlich eingegangen. ˆF und ˆB sind<br />

<strong>die</strong> maximalen lokalen Verzögerungen vor bzw. nach dem Test auf <strong>die</strong> Einhaltung des<br />

Übertragungsstartfensters (siehe Abschnitt 3.2.2.1).<br />

Der Poll-Master ist immer für genau ein Netzwerk zuständig. Daher werden <strong>die</strong> Parameter<br />

des Netzwerks direkt an den Konstruktor der Template-Klasse PollMaster übergeben.<br />

PollMaster<<br />

famouso : : config : : PEC ,<br />

famouso : : config : : SEC<br />

> ethernet_poll_master (<br />

NetworkID ( 2) ,<br />

100 , // Bitrate in MBit pro Sekunde<br />

1000 , // Planungsgranularität G in µs<br />

10000 , // ˆB in ns<br />

100000 , // ∆ M in ns<br />

100000 , // ∆ K in ns<br />

6 ) ; // negativer Exponent der maximalen Driftrate ρ max<br />

// hier: ρ max = 10 −6<br />

Die Master-Verzögerung ∆ M , <strong>die</strong> Slave-Verzögerung ∆ K und <strong>die</strong> maximale Driftrate ρ max<br />

wurden bereits in Abschnitt 3.1.4.1 erläutert. Die übrigen Gröÿen müssen mit den beim<br />

Planer für <strong>die</strong>ses Netzwerk angegebenen Werten übereinstimmen.<br />

86


5 Evaluierung<br />

In <strong>die</strong>sem Kapitel wird <strong>die</strong> in <strong>FAMOUSO</strong> integrierte Implementierung des erarbeiteten<br />

Konzepts anhand einer beispielhaften verteilten Echtzeitanwendung evaluiert. Die in den<br />

Abschnitten 5.1 bis 5.4 dargestellten Ergebnisse wurden anhand von Versuchen ermittelt,<br />

<strong>die</strong> in einem dedizierten Netzwerk von fünf PCs 1 durchgeführt wurden. Die Rechner wurden<br />

dabei unter Linux/Xenomai 2 betrieben. Abschnitt 5.5 zeigt auÿerdem <strong>die</strong> Eignung der<br />

Implementierung für ressourcenbeschränkte eingebettete Systeme<br />

5.1 Uhrensynchronisation<br />

Eine wesentliche Voraussetzung für das Funktionieren des umgesetzten TDMA-Schemas<br />

ist, dass den Knoten eine hinreichend genaue globale Zeit zur Verfügung steht. Dies<br />

wird über ein Verfahren zur Uhrensynchronisation sichergestellt, über das jeder Knoten<br />

<strong>die</strong> Genauigkeit seiner Uhr bezüglich einer Master-Uhr messen kann, um seine Uhr<br />

entsprechend anzugleichen.<br />

Da <strong>die</strong> Uhrensynchronisation nicht Schwerpunkt <strong>die</strong>ser Arbeit ist, wurde lediglich ein für<br />

CAN entwickelter Algorithmus realisiert. Dieser wird auch bei der Echtzeitkommunikation<br />

über Ethernet eingesetzt, so dass dort momentan ein zusätzliches CAN-Netzwerk zur<br />

Uhrensynchronisation benötigt wird.<br />

Implementierter Algorithmus Zur Messung der Uhrengenauigkeit wurde der in [GS94]<br />

präsentierte Algorithmus umgesetzt. Dieser nutzt <strong>die</strong> Eigenschaft, dass das Senden und<br />

Empfangen von CAN-Nachrichten gleichzeitig stattndet, da jedes Bit durch den Bus<br />

propagiert wird, bevor mit dem Senden des nächsten Bits begonnen wird. Somit nden<br />

der Sendeinterrupt und <strong>die</strong> zugehörigen Empfangsinterrupts auf den anderen Knoten zeitgleich<br />

statt. Alle Knoten nehmen dabei gleichzeitig 3 einen Zeitstempel ihrer lokalen Uhr.<br />

Der Master versendet seinen Zeitstempel in der nächsten Synchronisationsnachricht 4 . Die<br />

1<br />

Intel Core i7 mit 2,93 GHz im Single-Core-Modus, 3,4 GB RAM. Für <strong>die</strong> Ethernet-Latenzmessungen<br />

wurden andere Rechner verwendet. Siehe hierzu Abschnitt 5.3.<br />

2<br />

Xenomai ist eine Echtzeiterweiterung für den Linux-Kernel. Sie ist auf http://www.xenomai.org/ als<br />

Open-Source-Software erhältlich.<br />

3<br />

Es kann passieren, dass <strong>die</strong> Zeitstempel leicht zeitversetzt genommen werden. So z. B. wenn unterschiedliche<br />

Hardware verwendet wird oder der Interrupt verzögert auslöst, beispielsweise wegen temporär<br />

deaktivierten oder höher priorisierten Interrupts.<br />

4<br />

Die Zeitstempel werden als 64-Bit-Werte in der Einheit Nanosekunden verschickt.<br />

87


5 Evaluierung<br />

Slaves bestimmen dann <strong>die</strong> Dierenz zwischen <strong>die</strong>sem Zeitstempel der Master-Uhr und<br />

dem zwischengespeicherten Zeitstempel ihrer lokalen Uhr, der zur gleichen Zeit aufgenommen<br />

wurde. Sie erhalten so <strong>die</strong> Genauigkeit ihrer Uhr bezüglich der Master-Uhr, <strong>die</strong> sie<br />

beim Empfang der vorletzten Synchronisationsnachricht hatten.<br />

Zur Angleichung der Uhren wird in jedem Slave eine Drift-Korrektur durchgeführt. Da<br />

durch <strong>die</strong> Software keine Frequenzveränderungen an der Hardware-Uhr möglich sind, betreibt<br />

jeder Slave eine Software-Uhr für <strong>die</strong> globale Zeit. Die Umrechnung zwischen der<br />

lokalen, durch <strong>die</strong> Hardware-Uhr bestimmten Zeit und der globalen Zeit erfolgt auf Basis<br />

eines Osets sowie eines Drift-Wertes. Letzterer wird anhand der gemessenen Genauigkeiten<br />

durch einen PI-Regler eingestellt. Die Drift-Korrektur hat im Gegensatz zur reinen<br />

Oset-Korrektur den Vorteil, dass <strong>die</strong> Stetigkeit der Zeit erhalten bleibt, so dass ein Zeitpunkt<br />

nicht mehrfach vorkommen kann. Auÿerdem wird auf Dauer eine sehr stabile Zeit<br />

etabliert, so dass bei gleichen Genauigkeitsanforderungen deutlich weniger Synchronisationsnachrichten<br />

je Zeiteinheit nötig sind. Allerdings braucht der PI-Regler beim Knotenstart<br />

eine gewisse Zeit, bis <strong>die</strong> gewünschte Uhrengenauigkeit erreicht wird. Erst danach<br />

kann mit der eigentlichen Programmausführung begonnen werden. Bei den in den folgenden<br />

Abschnitten durchgeführten Messungen, bei denen der Master eine Synchronisationsnachricht<br />

je Sekunde versendet, dauerte <strong>die</strong> initiale Synchronisation bis zum Erreichen<br />

einer Genauigkeit von 10 Mikrosekunden zwischen 19 und 66 Sekunden.<br />

Messung der Genauigkeit Um <strong>die</strong> Qualität der Uhrensynchronisation unter CPU- und<br />

Netzwerklast einschätzen zu können, wurden <strong>die</strong> Uhrengenauigkeiten bei den in Abschnitt<br />

5.3 durchgeführten Latenztests aufgezeichnet. Im Folgenden werden <strong>die</strong> Messergebnisse<br />

vorgestellt, <strong>die</strong> an einem der Knoten bei einem Versuch mit NRT-Netzwerklast ermittelt<br />

wurden. Die an den anderen Knoten und bei anderen Versuchen bestimmten Zahlenwerte<br />

lagen immer in der gleichen Gröÿenordnung. Bei dem 6 Stunden andauernden Versuch<br />

wurde mehr als 20.000 Mal gemessen, wie stark <strong>die</strong> Globalzeit-Uhr des Slaves von der<br />

des Masters abweicht. Nach der initialen Sychronisierung bewegten sich alle Messungen im<br />

Bereich zwischen -5.303 und 4.415 Nanosekunden. Damit liegt <strong>die</strong> schlechteste gemessene<br />

absolute Genauigkeit α bei 5,3 Mikrosekunden. Bei der Planung wurde eine Uhrengranularität<br />

g von 50 Mikrosekunden angenommen. Die gemessene Genauigkeit wird den<br />

Annahmen der Planung folglich gerecht, da g > 2α erfüllt ist.<br />

Die globale Zeit wird auch zur später behandelten Messung der Latenzen genutzt. Um <strong>die</strong><br />

dadurch entstehenden Messfehler einschätzen zu können, wurde aus den gemessenen Uhrengenauigkeiten<br />

eine Wahrscheinlichkeitsverteilung angenähert. Entsprechend der linearen<br />

Approximation der globalen Zeit in den Slaves wurde <strong>die</strong> Genauigkeit für den Zeitraum<br />

zwischen zwei Messungen linear interpoliert. Zwischen zwei Messungen entsteht so eine<br />

Gleichverteilung der Genauigkeiten. Überlagert man <strong>die</strong> Gleichverteilungen zwischen allen<br />

Messungen, so erhält man eine angenäherte Wahrscheinlichkeitsverteilung der Uhrengenauigkeit.<br />

Dazu wurden <strong>die</strong> Gleichverteilungen ad<strong>die</strong>rt, wobei jede Gleichverteilung mit dem<br />

88


5.2 Einplanbarkeit<br />

6 ·10−2 Genauigkeit in µs<br />

Wahrscheinlichkeit<br />

4<br />

2<br />

0<br />

−2 0 2<br />

Abbildung 5.1: Diskrete Wahrscheinlichkeitsverteilung der Uhrengenauigkeit<br />

(Intervalle von je 50 Nanosekunden wurden zusammengefasst)<br />

Anteil gewichtet wurde, den <strong>die</strong> Zeit<strong>die</strong>renz zwischen den zwei Messungen bezüglich der<br />

Gesamtzeit ausmacht. Zur Berechnung wurden jeweils Genauigkeiten in einem Intervall<br />

von 50 Nanosekunden unter einer Wahrscheinlichkeit zusammengefasst. Die resultierende<br />

diskrete Wahrscheinlichkeitsverteilung ist in Abb. 5.1 zu nden. Der Erwartungswert der<br />

Verteilung liegt bei 2,32 Nanosekunden, <strong>die</strong> Standardabweichung bei ca. 475 Nanosekunden.<br />

Die gemessen Latenzen übersteigen <strong>die</strong>se Werte um mehrere Gröÿenordnungen. Daher<br />

hat der Fehler durch <strong>die</strong> Ungenauigkeit der Uhren nur einen vernachlässigbar kleinen<br />

Einuss auf <strong>die</strong> ermittelten Wahrscheinlichkeitsverteilungen der Latenzen. Für <strong>die</strong> Bestimmung<br />

der minimalen und maximalen Latenz ist jedoch jeder einzelne Messwert relevant.<br />

Daher kann bei <strong>die</strong>sen Gröÿen durch <strong>die</strong> Ungenauigkeit der Uhrensynchronisation ein für<br />

<strong>die</strong> Auswertung signikanter Fehler entstehen. Der Betrag des Fehlers entspricht schlimmstenfalls<br />

der erreichten Präzision der Globalzeit, also dem maximal auftauchenden Oset<br />

zweier beliebiger Uhren. Gemäÿ der bereits oben aufgeführten Messungen entspricht <strong>die</strong>ser<br />

ca. 10.000 Nanosekunden. Da <strong>die</strong>ser Fehler sowohl bei der Messung der minimalen als auch<br />

der maximalen Latenz entstehen kann, ergibt sich beim Jitter ein theoretischer maximaler<br />

Messfehler von 20.000 Nanosekunden, also von bis zu 20 Mikrosekunden.<br />

5.2 Einplanbarkeit<br />

Vorstellung des Testszenarios Die Evaluierung der erreichten Echtzeitfähigkeit von<br />

<strong>FAMOUSO</strong> orientiert sich an dem Anwendungsszenario eines autonomen mobilen Roboters<br />

mit mehreren verteilten Komponenten. Sie beschränkt sich jedoch auf <strong>die</strong> Aspekte der<br />

Kommunikation, ohne tatsächlich einen Roboter zu betreiben. Stattdessen versenden und<br />

empfangen <strong>die</strong> Testprogramme Events, <strong>die</strong> einen Zeitstempel oder eine Sequenznummer<br />

enthalten und bis zur gewünschten Gröÿe mit Null-Bytes aufgefüllt sind.<br />

89


5 Evaluierung<br />

Kanal p i in ms LB i in Byte<br />

CAN Ethernet<br />

"Sensor_1" 100 32 3.200<br />

"Motor__1" 20 8 8<br />

"Sensor_2" 10 4 16.000<br />

"Motor__2" 20 8 8<br />

"Not-Aus_" 50 0 0<br />

"TimeSync" 1.000 8 8<br />

Tabelle 5.1: QoS-Anforderungen an <strong>die</strong> Kommunikationskanäle: Periode p i<br />

und maximale Event-Länge LB i für CAN und Ethernet<br />

"Sensor_1"<br />

"SeMoNode"<br />

"CtrlNode"<br />

"Motor__1"<br />

"MasterNo"<br />

"Sensor_2", "Not-Aus_"<br />

"Oth1Node"<br />

"Oth2Node"<br />

"Motor__2"<br />

Abbildung 5.2: Knoten und ihre Kommunikationsbeziehungen im Testszenario<br />

Das Szenario sieht fünf Echtzeitkanäle vor. Diese haben <strong>die</strong> Subjects "Sensor_1",<br />

"Sensor_2", "Motor__1", "Motor__2" und "Not-Aus_". Auf den Kanälen "Sensor_1"<br />

und "Sensor_2" könnten Umgebungsinformationen bereitgestellt werden. Eine Steuerung<br />

kann <strong>die</strong>se verarbeiten und über <strong>die</strong> Kanäle "Motor__1" und "Motor__2" zwei Aktoren<br />

ansteuern. Über das Subject "Not-Aus_" wird ein Heart-Beat-Signal gesendet, dessen<br />

Ausbleiben zum sofortigen Stoppen der Aktoren führt. Desweiteren ist ein Echtzeitkommunikationskanal<br />

("TimeSync") für <strong>die</strong> Übertragung der Uhrensynchronisationsnachrichten<br />

vorgesehen. Tabelle 5.1 zeigt <strong>die</strong> bei den Tests verwendeten QoS-Anforderungen der<br />

Kanäle. Für CAN und Ethernet wurden zum Teil unterschiedliche Event-Gröÿen gewählt,<br />

um trotz der sehr verschiedenen Bitraten eine ähnliche Netzwerklast zu erreichen.<br />

Das <strong>Middleware</strong>-Konzept erlaubt es, <strong>die</strong> Publisher und Subscriber der Kanäle beliebig<br />

auf verschiedene Knoten zu verteilen. Für <strong>die</strong> Evaluierung der Echtzeitkommunikation<br />

wurde eine Zuordnung gewählt, <strong>die</strong> den Einuss der CPU-Planung minimal hält, da<br />

letztere nicht Thema <strong>die</strong>ser Arbeit ist. Abb. 5.2 zeigt <strong>die</strong> Knoten mit ihren verwendeten<br />

Knoten-IDs. Die zwischen den Knoten liegenden gerichteten Kanten veranschaulichen<br />

90


5.2 Einplanbarkeit<br />

<strong>die</strong> Kommunikationsbeziehung der Knoten. Sie verlaufen jeweils vom Publisher zum Subscriber<br />

des bzw. der in der Kantenbeschriftung angegebenen Subjects. "Sensor_1" und<br />

"Motor__1" werden zur Messung der Latenzen verwendet. Die anderen Kanäle <strong>die</strong>nen<br />

bei den Latenzmessungen dazu, eine realistische Netzwerklast herzustellen. Um den Ein-<br />

uss der CPU-Planung auf <strong>die</strong> Latenzmessungen gering zu halten, wurden <strong>die</strong> zwei Knoten<br />

"SeMoNode" und "CtrlNode" ausschlieÿlich für jene Publisher und Subscriber genutzt, <strong>die</strong><br />

an der Latenzmessung beteiligt sind. Auf <strong>die</strong>se Weise ist sichergestellt, dass dort gemäÿ<br />

der Annahme der Arbeit ausreichend CPU-Ressourcen zur Verfügung stehen. Mit den anderen<br />

Kanälen wird zwischen den Knoten "Oth1Node" und "Oth2Node" kommuniziert. Bei<br />

den Latenztests mit hoher NRT-Last ndet zwischen <strong>die</strong>sen beiden auch <strong>die</strong> Übertragung<br />

von NRT-Events statt. Alle Knoten kommunizieren mit dem Knoten "MasterNo", der<br />

<strong>die</strong> Uhrensynchronisationsnachrichten verschickt und für <strong>die</strong> Netzwerkplanung zuständig<br />

ist.<br />

Dynamische Planung und <strong>die</strong> Vergabe von Garantien Die zentrale Zielstellung der<br />

Arbeit ist es, für jeden Echtzeitereigniskanal <strong>die</strong> Einhaltung von QoS-Anforderungen<br />

garantieren zu können. Um <strong>die</strong>s zu ermöglichen wird <strong>die</strong> Nutzung des Netzwerkmediums<br />

zur Laufzeit geplant. Für <strong>die</strong> Netzwerkplanung bei der Evaluierung wurden <strong>die</strong> im Quellcodebeispiel<br />

in Abschnitt 4.3.2 angegeben Parameter verwendet. Das CAN-Netz wurde<br />

mit einer Bitrate von 250 Kbit/s betrieben, das Ethernet mit 100 Mbit/s.<br />

Zur Veranschaulichung werden im Folgenden Bildschirmfotos eingesetzt, <strong>die</strong> <strong>die</strong> Ausgaben<br />

der Knoten bei den durchgeführten Tests zeigen. Um den Einuss der Ausgaben auf das<br />

Zeitverhalten des Systems zu minimieren, wurde das in <strong>FAMOUSO</strong> verwendete Logging-<br />

Framework [Sch10b] vom Autor um ein Echtzeit-Logging-Back-End erweitert. Dieses verursacht<br />

im Echtzeitkontext nur minimale Verzögerungen, da <strong>die</strong> Ausgaben hier lediglich in<br />

einen Ring-Puer kopiert werden. Ein NRT-Thread liest regelmäÿig den Inhalt des Puers<br />

und schreibt ihn auf den Bildschirm oder in eine Datei.<br />

Die in Tabelle 5.1 angegebenen QoS-Anforderungen wurden so gewählt, dass <strong>die</strong> benötigte<br />

Me<strong>die</strong>nzeit für jeden der Kommunikationskanäle reserviert werden kann. Abb. 5.3 zeigt<br />

jeweils einen verkürzten Log des Planers für <strong>die</strong> CAN- und Ethernet-Konguration. Er<br />

listet für jeden der angeforderten Echtzeitkommunikationskanäle <strong>die</strong> Periode und <strong>die</strong> Länge<br />

der benötigten Slots auf. Auÿerdem wird jeweils ausgegeben, ob eine Reservierung des<br />

Kanals möglich war. Im Erfolgsfall ist auch <strong>die</strong> Phasenverschiebung im TDMA-Zyklus<br />

aufgeführt. Alle Gröÿen sind wie in Abschnitt 3.2.4 als Anzahl atomarer Slots (aSlots)<br />

angegeben. Sowohl für CAN als auch für Ethernet konnten <strong>die</strong> Kommunikationskanäle<br />

für <strong>die</strong> Subjects "TimeSync", "Sensor_1", "Motor__1", "Sensor_2", "Not-Aus_" und<br />

"Motor__2" reserviert werden. Für <strong>die</strong> zugehörigen Echtzeitereigniskanäle ist folglich <strong>die</strong><br />

Einhaltung der angeforderten QoS garantiert.<br />

91


5 Evaluierung<br />

Abbildung 5.3: Reservierungen angeforderter Echtzeitkommunikationskanäle<br />

für CAN (links) und Ethernet (rechts) in einem Ausschnitt des<br />

Netzwerkplaner-Logs.<br />

Für einen hier zusätzlich hinzugefügten Kanal mit dem Subject "Sensor_3" ist keine<br />

Reservierung möglich. Für <strong>die</strong>sen wurde eine Periode von 5 Millisekunden und eine maximale<br />

Event-Länge von 20 Byte bei CAN bzw. 500 Byte bei Ethernet angefordert. Bei CAN<br />

entspricht <strong>die</strong> zu reservierende Periode der Länge der benötigten Slots, so dass für den<br />

Kommunikationskanal <strong>die</strong> gesamte Me<strong>die</strong>nzeit reserviert werden müsste. Da bereits andere<br />

Kanäle etabliert sind, sind <strong>die</strong> Anforderungen hier nicht erfüllbar. Bei Ethernet ist<br />

<strong>die</strong> Periode von 5 atomaren Slots das Problem, denn <strong>die</strong> Kanäle "TimeSync", "Sensor_2",<br />

"Not-Aus_" und "Motor__2" belegen bereits 6 aufeinander folgende atomare Slots mit<br />

den Phasenverschiebungen 0 bis 5. Somit kann <strong>die</strong> für "Sensor_3" geforderte Periodizität<br />

in <strong>die</strong>sem Bereich des TDMA-Zyklus' nicht erfüllt werden. Da <strong>die</strong> Zusicherung der angeforderten<br />

QoS auf beiden Netzen nicht möglich ist, schlagen beide Reservierungen fehl.<br />

In der Folge wird <strong>die</strong> Kommunikation auf <strong>die</strong>sen Kanälen komplett unterbunden und <strong>die</strong><br />

Anwendung wird über den Fehler informiert.<br />

Damit ist ein Ziel der Arbeit erfüllt, denn <strong>die</strong> Kommunikation kommt nur dann zustande,<br />

wenn <strong>die</strong> Einhaltung der QoS-Anforderungen garantiert werden kann. Falls eine Zusicherung<br />

nicht möglich ist, wird <strong>die</strong>s als Fehler erkannt. Auf <strong>die</strong>se Weise wird <strong>die</strong> Software-<br />

Entwicklung erleichtert, da das System mögliche Probleme selbst erkennen und melden<br />

kann. Diese Meldung geht auch an <strong>die</strong> kommunizierenden Anwendungen, so dass auch<br />

während des regulären Betriebs angemessen auf einen Fehler reagiert werden kann, beispielsweise<br />

durch das Einnehmen eines sicheren Zustands. Dass <strong>die</strong> zugesicherten QoS-<br />

Anforderungen tatsächlich eingehalten werden, wird im folgenden Abschnitt gezeigt.<br />

92


5.3 Latenz und Jitter<br />

(A)<br />

r pub R i t snd t rcv D i r sub<br />

Pub.-Task<br />

Deliv.-Task<br />

t<br />

(B)<br />

NRT<br />

RT i<br />

(C)<br />

Komm.-Latenz<br />

Ende-zu-Ende-Latenz<br />

Interrupt<br />

Notify<br />

Abbildung 5.4: CPU- und Netzwerknutzung für ein RT-Event: (A) Das<br />

Event wird auf dem Knoten des Publishers im Publisher-Task veröentlicht<br />

und im Deliver-Task versendet. Letzterer ist mit dem Kommunikationskanal<br />

(B) synchronisiert. Der Empfang des übertragenen Events RT i löst beim<br />

Empfänger-Knoten (C) einen Interrupt aus. Bei der nächsten eingeplanten<br />

Notizierung wird das Event an den Subscriber ausgeliefert.<br />

Kanal<br />

Zeitparameter in ms<br />

p i r pub R i D i r sub L E<br />

"Sensor_1" 100 20 20,2 40,1 50 30<br />

"Motor__1" 20 10,1 10,2 20 20,1 10<br />

Tabelle 5.2: Abstimmung der CPU- und Netzwerkplanung: Über <strong>die</strong> Angabe<br />

der Startzeit des periodischen Publisher-Tasks (r pub ) und der periodischen<br />

Notizierung (r sub ) sowie des Slot-Rahmenintervalls (R i , D i ) lässt sich <strong>die</strong><br />

Ende-zu-Ende-Latenz L E vorherbestimmen.<br />

5.3 Latenz und Jitter<br />

Um <strong>die</strong> geforderte QoS durchsetzen zu können, müssen <strong>die</strong> Events innerhalb der für <strong>die</strong><br />

Kommunikationskanäle reservierten Slots übertragen werden. Dafür muss <strong>die</strong> durch Kommunikation<br />

entstehende Latenz entsprechend beschränkt sein. Für viele Anwendungen ist<br />

auÿerdem ein minimaler Jitter gewünscht, also eine möglichst geringe Dierenz von der<br />

maximal und der minimal auftretenden Latenz. Zur Einschätzung, inwieweit <strong>die</strong>se Ziele<br />

erreicht wurden, wurden verschiedene Versuche durchgeführt. Für jeden der Versuche wurden<br />

6 Stunden lang Latenzen gemessen und aufgezeichnet. Für das Subject "Sensor_1"<br />

sind dabei jeweils ca. 215.000 Messwerte entstanden. Für "Motor__1" waren es aufgrund<br />

der niedrigeren Periode etwa 1,08 Millionen Werte.<br />

Es wurden <strong>die</strong> zwei Gröÿen Kommunikationslatenz und Ende-zu-Ende-Latenz untersucht.<br />

Abb. 5.4 veranschaulicht, wie <strong>die</strong> Begrie zu verstehen sind. Die Kommunikationslatenz<br />

wird innerhalb der <strong>Middleware</strong> gemessen. Dafür wird <strong>die</strong> Startzeit t snd des Deliver-<br />

Tasks mit dem Event versendet. Ohne Zeitfehler entspricht t snd dem Beginn des Slots<br />

93


5 Evaluierung<br />

des Kommunikationskanals. Nach dem Ende der Übertragung des Events wird auf dem<br />

Empfängerknoten ein Empfangsinterrupt ausgelöst. Dieser sorgt dafür, dass ein auf Nachrichten<br />

wartender, hoch priorisierter Echtzeit-Thread weiter läuft und den Zeitstempel<br />

t rcv nimmt. Die Dierenz von t rcv und t snd ist <strong>die</strong> Kommunikationslatenz L K . Versuchsbedingt<br />

sind in L K auch Verzögerungen enthalten, <strong>die</strong> durch <strong>die</strong> Hardware und Software des<br />

Sende- und Empfangsrechners entstehen 5 . Der durch <strong>die</strong>se lokalen Verzögerungen verursachte<br />

Jitter sollte durch <strong>die</strong> Verwendung von echtzeitfähiger Systemsoftware gering sein.<br />

Eine exakte Messung <strong>die</strong>ser Gröÿe ist jedoch sehr aufwendig und konnte daher im zeitlichen<br />

Rahmen <strong>die</strong>ser Diplomarbeit nicht durchgeführt werden. Somit kann ihr Einuss bei der<br />

Auswertung lediglich abgeschätzt werden. Bei CAN gibt es einen weiteren Aspekt, der<br />

deutlich gröÿeren Einuss auf L K hat. Werden dort NRT-Nachrichten verschickt, so können<br />

<strong>die</strong>se für RT-Nachrichten das Erhalten des Me<strong>die</strong>nzugris verzögern. Der hierdurch<br />

entstehende Jitter wird weiter unten durch den Vergleich der Ergebnisse verschiedener<br />

Versuche eingeschätzt.<br />

Neben der Kommunikationslatenz wird auch <strong>die</strong> Ende-zu-Ende-Latenz L E gemessen. Hierbei<br />

handelt es sich um <strong>die</strong> Zeit, <strong>die</strong> zwischen der Veröentlichung eines Events durch<br />

den Publisher und dem Aufruf des Notizierungsrückrufs beim Subscriber vergeht. Zur<br />

Bestimmung <strong>die</strong>ser Gröÿe nimmt der Test-Publisher zu Beginn seines Tasks einen Zeitstempel<br />

und veröentlicht <strong>die</strong>sen als Teil des Events. Der Subscriber nimmt beim Start<br />

des periodisch aufgerufenen Notizierungsrückrufs ebenfalls einen Zeitstempel und berechnet<br />

<strong>die</strong> Dierenz zum Wert aus dem erhaltenen Event. Diese Dierenz ist <strong>die</strong> Ende-zu-<br />

Ende-Latenz. Sie lässt sich a-priori festlegen. Dafür müssen <strong>die</strong> Startzeitpunkte für den<br />

Publisher-Task (r pub ) und <strong>die</strong> Notizierung (r sub ) mit dem Slot-Rahmenintervall (R i , D i )<br />

abgestimmt werden. Gilt r pub < R i und D i < r sub , so wird das veröentlichte Event<br />

vor der nächsten Notizierung zum Subscriber-Knoten übertragen. Dann ergibt sich eine<br />

Ende-zu-Ende-Latenz von L E = r sub − r pub . Für Kanäle, <strong>die</strong> an den Latenzmessungen<br />

beteiligt sind, wurden <strong>die</strong> Parameter entsprechend abgestimmt. In Tabelle 5.2 sind <strong>die</strong><br />

Werte aufgeführt.<br />

Die Latenzmesswerte wurden jeweils mit einer Genauigkeit von einer Mikrosekunde<br />

aufgenommen. Für jeden der Messwerte wurde <strong>die</strong> absolute Häugkeit des Auftretens<br />

gezählt und gespeichert. Aufgrund der hohen Anzahl an Messwerten lässt sich über <strong>die</strong><br />

Verteilung der absoluten Häugkeiten jeweils eine diskrete Wahrscheinlichkeitsverteilung<br />

annähern.<br />

5<br />

Die <strong>Middleware</strong>, in dessen Kontext <strong>die</strong> Messungen durchgeführt werden, läuft als Echtzeitanwendung im<br />

User-Space von Linux/Xenomai. Zwar handelt es sich hierbei um ein Echtzeitbetriebssystem, jedoch<br />

entstehen auch in <strong>die</strong>sem zusätzliche Verzögerungen durch Kontextwechsel und durch Code zur Geräte-<br />

Abstraktion und -Ansteuerung.<br />

94


5.3 Latenz und Jitter<br />

5.3.1 Kommunikationslatenz und -jitter bei CAN<br />

Zur Messung der Kommunikationslatenz L K wurden im CAN-Netzwerk drei Versuche<br />

durchgeführt. Im ersten Versuch wurden ausschlieÿlich RT-Kanäle verwendet, so dass keine<br />

NRT-Last auftritt 6 . Der zweite Versuch misst <strong>die</strong> Latenzen der Echtzeitkommunikation<br />

bei maximaler NRT-Last. Im Vergleich mit dem ersten Versuch veranschaulicht <strong>die</strong>ser den<br />

Einuss von NRT-Last auf <strong>die</strong> Zeiteigenschaften der RT-Kommunikation. Im dritten Versuch<br />

kommunizieren auch alle Kanäle mit Echtzeitanforderungen über NRT-Kanäle. Die<br />

Ergebnisse <strong>die</strong>ses Versuchs verdeutlichen, wie <strong>die</strong> Latenzen bei hoher NRT-Last aussehen<br />

können, wenn keine Echtzeitkommunikationskanäle verwendet werden. In Abb. 5.5 sind <strong>die</strong><br />

ermittelten Wahrscheinlichkeitsverteilungen für <strong>die</strong> Latenzen ohne NRT-Last und bei hoher<br />

NRT-Last dargestellt. Die Tabelle 5.3 listet <strong>die</strong> Ergebnisse aller Versuche in konkreten<br />

Zahlenwerten auf.<br />

Auf dem Kanal "Motor__1" wurden jeweils 8 Byte, also ein CAN-Frame, übertragen. Die<br />

Zeit zur Übertragung eines Frames auf dem Medium lässt sich über <strong>die</strong> in Abschnitt 3.2.2.3<br />

angegebenen Gleichungen bestimmen. Sie liegt zwischen M j min = (8LBj i + 67)τ bit (kein<br />

Bit-Stung nötig) und M j max = (10LB j i + 111)τ bit (Worst-Case-Bitstung und Fehlersignalisierung).<br />

Mit τ bit = 4 µs ergibt sich somit für "Motor__1" eine Übertragungszeit zwischen<br />

524 µs und 764 µs. Für den Versuch ohne NRT-Last liegen erwartungsgemäÿ alle<br />

gemessenen Latenzen in <strong>die</strong>sem Bereich. Die maximale Latenz liegt mit 630 µs sogar deutlich<br />

unter dem möglichen Worst-Case, obwohl in der Kommunikationslatenz zusätzlich<br />

auf den Knoten entstandene Verzögerungen enthalten sind. Bei hoher NRT-Last erhöht<br />

sich <strong>die</strong> maximale Latenz auf ca. zwei mittlere Frame-Längen. Der Grund hierfür ist,<br />

dass der Me<strong>die</strong>nzugri für das Versenden einer RT-Nachricht durch eine laufende NRT-<br />

Übertragung verzögert werden kann. Nach <strong>die</strong>ser greift jedoch <strong>die</strong> prioritätsbasierte Arbitrierung,<br />

so dass jede RT-Nachricht maximal um eine Nachrichtenlänge verzögert wird.<br />

Da <strong>die</strong> minimale Latenz in etwa gleich bleibt, erhöht sich der Jitter durch <strong>die</strong> NRT-Last<br />

um etwa eine Frame-Länge. Im Versuch ohne NRT ist <strong>die</strong> entscheidende Einussgröÿe<br />

auf <strong>die</strong> Latenzverteilung der Jitter, der durch das Bit-Stung bzw. auf den beteiligten<br />

Rechnern entsteht. In Abb. 5.5(c) ist ersichtlich, dass <strong>die</strong>se nicht mehr <strong>die</strong> bestimmenden<br />

Gröÿen sind, wenn NRT-Last hinzukommt. Stattdessen wird <strong>die</strong> Verteilung der Latenzen<br />

dort im Wesentlichen durch <strong>die</strong> zeitliche Charakteristik der NRT-Last vorgegeben. Im<br />

Versuch wurde ein Knoten allein dafür verwendet, permanent NRT-Events zu versenden.<br />

Hierfür wurde nicht explizit eine Periode gewählt. Dennoch stellt sich durch den Determinismus<br />

der am Netz beteiligten Echtzeit-Rechner eine periodische Netzwerknutzung ein.<br />

Diese äuÿert sich in der abgebildeten Verteilung durch <strong>die</strong> wellenartigen Strukturen. Die<br />

Frequenz und Amplitude <strong>die</strong>ser Wellen ist stark abhängig von der Periodizität und der<br />

6<br />

Das Reservierungsprotokoll, das über NRT-Events arbeitet, wurde hier nicht zyklisch ausgeführt, so<br />

dass nur für Planänderungen NRT-Last entsteht. Mit den Messungen wurde erst nach dem initialen<br />

Kanalaufbau begonnen.<br />

95


5 Evaluierung<br />

Wahrscheinlichkeit<br />

6<br />

4<br />

2<br />

Wahrscheinlichkeit<br />

6<br />

4<br />

2<br />

0<br />

0<br />

8 ·10−2 L K in µs<br />

580 590 600 610 620<br />

·10 −2 L K in µs<br />

2.840 2.850 2.860 2.870 2.880<br />

(a) "Motor__1" ohne NRT-Last<br />

(b) "Sensor_1" ohne NRT-Last<br />

·10 −3 L K in µs<br />

·10 −3 L K in µs<br />

4<br />

3<br />

Wahrscheinlichkeit<br />

2<br />

Wahrscheinlichkeit<br />

2<br />

1<br />

0<br />

600 800 1.000<br />

0<br />

3.000 3.200 3.400<br />

(c) "Motor__1" bei hoher NRT-Last<br />

(d) "Sensor_1" bei hoher NRT-Last<br />

Abbildung 5.5: Kommunikationslatenzen bei CAN als diskrete Wahrscheinlichkeitsverteilung<br />

(Intervalle von je 1 µs sind in einer Wahrscheinlichkeit<br />

zusammengefasst)<br />

Kanal Kommunikationslatenzen in µs<br />

(Versuch) min(L K ) max(L K ) Jitter E(L K ) σ(L K )<br />

"Motor__1"<br />

(ohne NRT-Last) 587 630 43 599 6<br />

(hohe NRT-Last) 574 1.175 601 877 164<br />

(als NRT-Kanal) 589 3.413 2.824 1.112 575<br />

"Sensor_1"<br />

(ohne NRT-Last) 2.828 2.882 54 2.852 6<br />

(hohe NRT-Last) 2.835 4.509 1.674 3.130 169<br />

(als NRT-Kanal) 2.872 888.436 885.564 213.070 102.310<br />

Tabelle 5.3: Kommunikationslatenzen bei CAN im Vergleich. Es werden<br />

<strong>die</strong> minimale und maximale gemessene Latenz, der daraus errechnete Jitter,<br />

sowie der Erwartungswert und <strong>die</strong> Standardabweichung der Wahrscheinlichkeitsverteilungen<br />

angegeben.<br />

96


5.3 Latenz und Jitter<br />

Phasenverschiebung der NRT-Last. Das aufmodulierte hochfrequente Rauschen entsteht<br />

durch den Jitter, der durch das Bit-Stung und <strong>die</strong> lokalen Aktivitäten verursacht wird.<br />

Für den Kanal "Sensor_1" sind qualitativ ähnliche Resultate zu verzeichnen, wie<br />

für "Motor__1". Sie unterscheiden sich jedoch deutlich in den Zahlenwerten, da über<br />

"Sensor_1" Events mit einer Länge von 32 Byte versendet werden. Diese werden im<br />

<strong>Middleware</strong>-Stack unter Verwendung des für <strong>FAMOUSO</strong> entwickelten Fragmentierungsprotokolls<br />

AFP (vgl. [SWLK11]) in 5 CAN-Nachrichten zerlegt. Sie enthalten neben der<br />

eigentlichen Nutzlast auch Information für das Zusammenfügen der Fragmente beim<br />

Empfänger. Vier der Fragmente haben eine Länge von 8 Byte. In dem 5. Fragment werden<br />

5 Byte transportiert. Unter Anwendung der oben aufgeführten Formeln ergibt sich für <strong>die</strong><br />

fünf CAN-Nachrichten des Events eine zu erwartende Übertragungsdauer zwischen 2.524<br />

und 3.700 µs. Ohne NRT-Last liegen alle gemessenen Kommunikationslatenzen in <strong>die</strong>sem<br />

Bereich und der entstehende Jitter ist ähnlich gering wie bei "Motor__1". Beim Versuch<br />

mit hoher NRT-Last wurde eine maximale Latenz von ca. 4.500 µs gemessen. Auch hier ist<br />

<strong>die</strong>ser Anstieg dadurch zu erklären, dass RT-Frames durch <strong>die</strong> bereits laufende Übertragung<br />

eines NRT-Frames verzögert werden können. Dabei kann jeder RT-Frame nur um eine<br />

Frame-Länge verzögert werden. Da hier jedoch fünf Frames übertragen werden, können<br />

bis zu fünf Verzögerungen auftreten. Das hier gemessene Maximum deutet jedoch nur auf<br />

drei verzögerte RT-Frames hin. In der Verteilung in Abbildung 5.5(d) wird deutlich, dass<br />

<strong>die</strong> überwiegende Anzahl der Messungen Latenzen im Bereich zwischen 2.840 und 3.420 µs<br />

ergeben haben, was für <strong>die</strong> Verzögerung lediglich eines RT-Frames spricht. Hierbei handelt<br />

es sich in der Regel um den jeweils ersten RT-Frame im Slot, da das Medium zuvor<br />

ungenutzt und somit für den Versand von NRT-Frames oen ist. Dass zwischen mehreren<br />

Fragmenten eines RT-Events ein NRT-Frame versendet wird, ist deutlich unwahrscheinlicher.<br />

Das liegt daran, dass der RT-Sender hierfür nach dem Versenden eines RT-Fragments<br />

eine Arbitrierung verpassen muss. Aufgrund der Leistungsfähigkeit der Versuchsrechner<br />

und der geringen Bitrate von CAN kam <strong>die</strong>s sehr selten vor.<br />

Der bereits oben ausgewertete Versuch mit hoher NRT-Last wurde zum Vergleich noch<br />

einmal ohne <strong>die</strong> Verwendung der Echtzeitkommunikationskanäle durchgeführt, also mit<br />

den Best-Eort-Kanälen von <strong>FAMOUSO</strong>. In Tabelle 5.3 sind <strong>die</strong> zugehörigen Ergebnisse<br />

unter der Versuchsbezeichnung als NRT-Kanal aufgeführt. Bei den Best-Eort-Kanälen<br />

werden <strong>die</strong> IDs von CAN nicht zur Priorisierung von Nachrichten verwendet. CAN nutzt<br />

<strong>die</strong> IDs trotzdem zur Auösung von Zugriskonikten. Somit erfolgt <strong>die</strong> tatsächliche Priorisierung<br />

nach Kriterien, <strong>die</strong> eigentlich nicht für <strong>die</strong>se Aufgabe bestimmt, aber in der<br />

ID co<strong>die</strong>rt sind. Dies ist primär <strong>die</strong> Information, ob es sich um ein Fragment oder ein<br />

vollständiges Event handelt. Letztere werden bevorzugt. Sekundär hängt <strong>die</strong> Priorisierung<br />

vom Knoten ab, da in den nächsten niedrigwertigeren Bits der Absender co<strong>die</strong>rt ist. Die<br />

Priorisierung der Knoten wird dabei durch das CAN-Kongurationsprotokoll festgelegt,<br />

wobei in der momentanen Realisierung im Wesentlichen <strong>die</strong> Startreihenfolge der Knoten<br />

ausschlaggebend ist. Wenn das Fragmentierungsbit und der Absender übereinstimmen,<br />

97


5 Evaluierung<br />

entscheidet das Subject über <strong>die</strong> Priorisierung. Die entsprechende Co<strong>die</strong>rung in der ID<br />

wird durch das CAN-Bindeprotokoll zugeteilt, wobei hier <strong>die</strong> Reihenfolge der jeweils ersten<br />

Announcements bzw. Subscriptions der Subjects ausschlaggebend ist. An den Messwerten<br />

wird deutlich, dass der Publisher von "Motor__1" höher priorisiert ist als der von<br />

"Sensor_1". Er ist jedoch nicht der am höchsten priorisierte Publisher, da seine maximale<br />

Latenz deutlich über einer Frame-Länge liegt und er somit Arbitrierungen verloren<br />

haben muss. Während <strong>die</strong> gemessene Worst-Case-Latenz bei "Motor__1" lediglich beim<br />

etwa dreifachen des Versuchs mit Echtzeitkanälen liegt, beträgt <strong>die</strong>se beim niedriger priorisierten<br />

"Sensor_1" schon fast 0,9 Sekunden. Theoretisch ist <strong>die</strong> maximale Latenz jedoch<br />

für beide Kanäle unbeschränkt, wenn das Medium durch den oder <strong>die</strong> höher priorisierten<br />

Kanäle komplett ausgelastet wird.<br />

Die praktischen Versuche haben deutlich gemacht, dass <strong>die</strong> implementierten Echtzeitkommunikationskanäle,<br />

anders als Best-Eort-Kanäle, zur Durchsetzung von QoS-<br />

Anforderungen geeignet sind. Sowohl bei "Motor__1" als auch bei "Sensor_1" lagen<br />

alle Latenzen deutlich unter der reservierten Slotlänge. Dies bestätigt, dass <strong>die</strong> bei der<br />

Planung getroenen Annahmen hinreichend sind. In Kombination mit der Zeitfehlerüberprüfung<br />

durch den Network Guard ist somit sichergestellt, dass <strong>die</strong> Events innerhalb der<br />

reservierten Slots übertragen werden. Der erreichte Jitter ist bei reiner RT-Last gering.<br />

Um den Jitter bei NRT-Last ebenso niedrig zu halten, könnte wie bei Ethernet ein Polling-<br />

Mechanismus eingesetzt werden, jedoch auf Kosten des möglichen NRT-Durchsatzes.<br />

5.3.2 Kommunikationslatenz und -jitter bei Ethernet<br />

Für <strong>die</strong> Versuche mit Ethernet wurde RTnet 7 verwendet, ein echtzeitfähiger Netzwerk-<br />

Stack für Linux/Xenomai. Dabei wurde der in Abschnitt 2.4.4 beschriebene interne MAC-<br />

Mechanismus deaktiviert, weil dessen Aufgabe von den Echtzeitkommunikationskanälen<br />

von <strong>FAMOUSO</strong> übernommen wird, <strong>die</strong> hier getestet werden sollen. Das für <strong>die</strong> CAN-<br />

Versuche genutzte, bereits vorhandene Testsystem basiert komplett auf der Ausnutzung<br />

des Ethernet-Netzwerks 8 . Da <strong>die</strong> Versuche jedoch nur auf einem dedizierten Netzwerk<br />

möglich sind, wurde sämtliche benötigte Software inklusive Betriebssystem auf USB-Sticks<br />

installiert, um <strong>die</strong> Rechner von <strong>die</strong>sen zu booten. Es zeigte sich dann jedoch, dass <strong>die</strong> in den<br />

Rechnern vorhandene Netzwerk-Hardware noch nicht von RTnet unterstützt wird. Letztendlich<br />

wurden für <strong>die</strong> Ethernet-Versuche andere Rechner verwendet 9 . Der Aufwand für<br />

<strong>die</strong> Einrichtung der Testsysteme hat sich als deutlich gröÿer herausgestellt, als zunächst<br />

erwartet. Daher waren im vorgegebenen Zeitrahmen nur Versuche mit zwei über Ethernet<br />

kommunizierenden Knoten möglich. Als Uhren-Master und Netzwerkplaner wurde ein<br />

7<br />

RTnet ist unter http://rtnet.org/ als Open-Source-Software verfügbar.<br />

8<br />

Linux/Xenomai wird auf <strong>die</strong>sen Rechnern über das Netzwerk gebootet und alle Dateizugrie laufen über<br />

NFS (Network File System), wobei jeweils Kommunikation mit einem Server nötig ist.<br />

9<br />

AMD Athlon 64, 1,8 GHz, 1 GB RAM<br />

98


5.3 Latenz und Jitter<br />

0,4<br />

0,3<br />

Wahrscheinlichkeit<br />

0,3<br />

0,2<br />

0,1<br />

Wahrscheinlichkeit<br />

0,2<br />

0,1<br />

0<br />

0<br />

30 40 50 60 70 80<br />

300 310 320 330 340<br />

L K in µs<br />

L K in µs<br />

(a) "Motor__1"<br />

(b) "Sensor_1"<br />

Abbildung 5.6: Kommunikationslatenzen bei Ethernet als diskrete<br />

Wahrscheinlichkeitsverteilung (Intervalle von je 1 µs sind in einer Wahrscheinlichkeit<br />

zusammengefasst)<br />

Kanal Kommunikationslatenzen in µs<br />

min(L K ) max(L K ) Jitter E(L K ) σ(L K )<br />

"Motor__1" 34 81 47 41 4<br />

"Sensor_1" 303 342 39 310 4<br />

Tabelle 5.4: Kommunikationslatenzen bei Ethernet. Es werden <strong>die</strong> minimale<br />

und maximale gemessene Latenz, der daraus errechnete Jitter, sowie der Erwartungswert<br />

und <strong>die</strong> Standardabweichung der Wahrscheinlichkeitsverteilungen<br />

angegeben.<br />

dritter Knoten eingesetzt, der über ein zusätzlich angeschlossenes CAN-Netzwerk mit den<br />

anderen verbunden wurde.<br />

Die Ergebnisse eines Versuchs zur Messung der Kommunikationslatenz sind in Abb. 5.6<br />

als diskrete Wahrscheinlichkeitsverteilungen dargestellt. In der Tabelle 5.4 sind <strong>die</strong> zugehörigen<br />

Zahlenwerte aufgeführt. Die Dauer zum Versenden eines Ethernet-Frames über<br />

das Medium lässt sich über <strong>die</strong> in Abschnitt 3.2.2.4 gegebenen Formeln berechnen. Mit<br />

τ bit = 0,01 µs liegt sie zwischen 6,72 µs (bei weniger als 47 Byte Nutzdaten) und 123,04 µs<br />

(bei 1.500 Byte Nutzdaten). Für "Motor__1", wo in jedem Event lediglich 8 Byte übertragen<br />

werden, liegt <strong>die</strong> minimale mögliche Latenz also bei 6,72 µs. Als Kommunikationslatenz<br />

wurden jedoch immer deutlich höhere Werte gemessen, weil <strong>die</strong>se zusätzlich <strong>die</strong> lokalen<br />

Verzögerungen im Publisher- und Subscriber-Knoten enthalten. Auch wenn <strong>die</strong> gemessenen<br />

Latenzen deutlich über 6,72 µs liegen, sind <strong>die</strong> Echtzeitgarantien nicht gefährdet,<br />

weil <strong>die</strong> lokalen Verzögerungen bei der Netzwerkplanung berücksichtigt werden. Durch<br />

<strong>die</strong> lokalen Verzögerungen entsteht auch der Jitter von 47 µs. Der überwiegende Teil der<br />

Messungen liegt jedoch nah am Erwartungswert von ca. 41 µs, wie auch in Abb. 5.6(a)<br />

zu erkennen ist. Die sehr achen lokalen Maxima bei 48, 52 und 59 µs sind durch<br />

zusätzliche lokale Verzögerungen verursacht, <strong>die</strong> nicht in jeder Periode auftauchen. So<br />

99


5 Evaluierung<br />

hat beispielsweise <strong>die</strong> Abfolge der ausgeführten Threads, auch der NRT-Threads, Einuss<br />

auf <strong>die</strong> Invali<strong>die</strong>rung von Speicher-Cache-Zeilen des x86-Prozessors. So nden bei einigen<br />

Thread-Abfolgen deutlich mehr Cache-Misses statt, wodurch in <strong>die</strong>sen Fällen <strong>die</strong> lokale<br />

Latenz ansteigt. Im Versuchsaufbau wurde keine hohe NRT-Prozessorlast erzeugt. Damit<br />

waren vor allem <strong>die</strong> Echtzeit-Threads und der Xenomai-Kernel aktiv, <strong>die</strong> periodisch bzw.<br />

zumindest gemäÿ eines zeitlichen Determinismus' ausgeführt wurden. Aus <strong>die</strong>sem Grund<br />

können sich auch durch <strong>die</strong> Nutzungseekte von Cache-Speicher, <strong>die</strong> zeitlich schwer vorhersagbar<br />

sind, Häufungen in der Latenzverteilung entstehen.<br />

Über den Kanal "Sensor_1" werden Events mit 3.200 Byte Nutzdaten übertragen. Diese<br />

werden in jeweils drei Fragmente zerlegt. Das Fragmentierungsprotokoll und das Ethernet-<br />

Protokoll der <strong>Middleware</strong> belegen je Fragment 17 Byte für Header-Informationen. Für <strong>die</strong><br />

ersten zwei Events nutzt AFP <strong>die</strong> volle MTU von 1.500 Byte aus, so dass in jedem der<br />

beiden Fragmente jeweils 1.483 Byte Nutzdaten übertragen werden. Für das letzte Fragment<br />

bleiben somit noch 234 Byte der Nutzdaten übrig, so dass sich für <strong>die</strong>ses Fragment<br />

LB j i<br />

= 251 Byte ergibt. Durch Einsetzen in <strong>die</strong> Gleichung aus Abschnitt 3.2.2.4 erhält man<br />

für das letzte Fragment eine Versendedauer von 23,12 µs. Für <strong>die</strong> ersten zwei Fragmente<br />

fallen jeweils 123,04 µs an, so dass für das Versenden des Event eine reine Me<strong>die</strong>nbelegungszeit<br />

von 23, 12 + 2 · 123, 04 = 269, 2 µs nötig ist. Auch hier liegen <strong>die</strong> gemessenen<br />

Kommunikationslatenzen im Mittel 310 µs deutlich über <strong>die</strong>sem Wert, weil <strong>die</strong> lokalen<br />

Verzögerungen beim Publisher- und Subscriber-Knoten enthalten sind. Der gemessene Jitter<br />

ist kleiner als bei "Motor__1". Dies überrascht zunächst, da beim Versenden mehrerer<br />

Fragmente, absolut gesehen, mehr lokale Aktivitäten auf den Rechnern nötig sind, <strong>die</strong><br />

sich bei Ethernet für den Jitter verantwortlich zeigen. Der Unterschied liegt jedoch im Bereich<br />

der Präzision der Uhren, so dass hier vermutlich ein Messfehler vorliegt. Dieser kann<br />

durch ein zeitweilig hohes Oset der an der Latenzmessung beteiligten Uhren entstehen.<br />

Abgesehen vom Erwartungswert hat <strong>die</strong> Latenzverteilung von "Sensor_1" eine ähnliche<br />

Charakteristik wie <strong>die</strong> von "Motor__1". Das lokale Maximum bei 320 µs kann mit lokalen<br />

Aktivitäten begründet werden, <strong>die</strong> nicht in allen Perioden stattnden.<br />

Da alle gemessenen Latenzen unterhalb der für <strong>die</strong> Kanäle eingeplanten Slotlänge liegen,<br />

bestätigt der Versuch <strong>die</strong> Einhaltung der Garantien bei den Echtzeitkommunikationskanälen<br />

für Ethernet.<br />

5.3.3 Ende-zu-Ende-Latenz und -Jitter<br />

Im CAN-Testsetup wurde ein Versuch zur Messung der Ende-zu-Ende-Latenz durchgeführt,<br />

um zu zeigen, inwieweit sich <strong>die</strong>se, für <strong>die</strong> Anwendung unmittelbar wichtige Gröÿe,<br />

vorherbestimmen lässt. Die Ergebnisse sind in der Tabelle 5.5 zu nden. Nach der Abstimmung<br />

von Prozessor- und Netzwerkplanung gemäÿ Tabelle 5.2 ist für "Motor__1" eine<br />

Ende-zu-Ende-Latenz von 10.000 µs zu erwarten. Der Mittelwert aller Messungen liegt<br />

mit 10.000,4 µs nahe an <strong>die</strong>sem Wert. Auch für "Sensor_1" wird im Mittel nahezu <strong>die</strong><br />

100


5.4 Verlässlichkeit<br />

Kanal Ende-zu-Ende-Latenzen in µs<br />

min(L E ) max(L E ) Jitter E(L E ) σ(L E )<br />

"Motor__1" 9.972 10.025 53 10.000,4 1,3<br />

"Sensor_1" 29.975 30.021 46 30.000,7 1,3<br />

Tabelle 5.5: Ende-zu-Ende-Latenzen. Es werden <strong>die</strong> minimale und maximale<br />

gemessene Latenz, der daraus errechnete Jitter, sowie der Erwartungswert und<br />

<strong>die</strong> Standardabweichung der Wahrscheinlichkeitsverteilungen angegeben.<br />

gewünschte Ende-zu-Ende-Latenz von 30.000 µs erreicht. 10 Der ermittelte Jitter liegt bei<br />

ca. 50 µs. Die Kommunikation hat daran keinen Anteil, da sie zum Zeitpunkt r sub bereits<br />

abgeschlossen ist. Stattdessen ist der Jitter hier komplett auf <strong>die</strong> Prozessorzuteilung zurückzuführen.<br />

Unter Linux/Xenomai werden <strong>die</strong> Echtzeit-Threads prioritätsbasiert eingeplant.<br />

Eine hohe Abweichung zwischen dem geplanten und dem tatsächlichen Start- bzw. Fortsetzungszeitpunkt<br />

eines Threads kann zustande kommen, wenn ein höher oder gleich priorisierter<br />

Thread den Prozessor für sich in Anspruch nimmt. Aber selbst für den am höchsten<br />

priorisierten Thread entsteht ein nicht unerheblich Jitter. Auf dem Versuchssystem lieÿ<br />

sich <strong>die</strong>ser mit dem zu Xenomai gehörenden Testprogramm latency auf ca. 30 µs beziern.<br />

Und auch <strong>die</strong> Ungenauigkeit der Uhrensynchronisation kann nach den in Abschnitt 5.1 gemessenen<br />

Werten im Worst-Case einen Jitter von ca. 10 µs beitragen. Trotz des relativ<br />

hohen insgesamt gemessenen Jitters von ca. 50 µs liegt der Groÿteil der gemessenen Latenzen<br />

sehr nah am Erwartungswert, wie an der niedrigen Standardabweichung von 1,3 µs zu<br />

erkennen ist.<br />

Der Versuch veranschaulicht, dass <strong>die</strong> Ende-zu-Ende-Latenz vom Anwendungsentwickler<br />

vorherbestimmt werden kann. Es wird jedoch auch deutlich, dass es stark von der Ausführungsumgebung<br />

und der Uhrensynchronisation abhängt, wie genau <strong>die</strong>s in der Praxis<br />

eingehalten werden kann.<br />

5.4 Verlässlichkeit<br />

In der Implementierung wurden verschiedene Mechanismen umgesetzt, um Fehler zu erkennen<br />

und zu behandeln bzw. der Anwendung <strong>die</strong> Möglichkeit zur Behandlung zu geben. Ziel<br />

dabei ist es, Fehler tolerieren zu können, ohne dass es zum Funktionsausfall des Gesamtsystems<br />

kommt. Zur Veranschaulichung einiger Fehlerarten wurde <strong>die</strong> Testanwendung so<br />

modiziert, dass <strong>die</strong> Fehler absichtlich herbeigeführt werden. Abbildung 5.7 zeigt <strong>die</strong> dabei<br />

entstandenen Ausgaben des Publisher- und des Subscriber-Knotens. Bei (1) wird <strong>die</strong><br />

Picht verletzt, innerhalb jeder Periode ein Event auf dem Echtzeitkanal zu veröentlichen.<br />

Der Deliver-Task erkennt <strong>die</strong>s und ruft den Ausnahmerückruf des Publishers auf. Bei (2)<br />

10<br />

Die gemessenen Erwartungswerte liegen jeweils leicht über den geplanten Werten, da beim Subscriber<br />

vor der Messung von r sub geprüft werden muss, ob das vorliegende Event veraltet ist. Eine derartige<br />

Verzögerung ist beim Publisher nicht vorhanden.<br />

101


5 Evaluierung<br />

Abbildung 5.7: Beispiel für <strong>die</strong> Fehlererkennung und -behandlung auf der<br />

Publisher-Seite (oben) und beim Subscriber (unten).<br />

wird der Publisher-Task nicht zum eigentlich eingeplanten Zeitpunkt gestartet, so dass<br />

das Event 10 ms später publiziert wird. Der Deliver-Task wird hier jedoch rechtzeitig ausgeführt<br />

und ndet wie in (1) kein aktuelles Event vor. Folglich wird kein Event über<br />

das Netzwerk veröentlicht und der Ausnahmerückruf aufgerufen. Bei (3) kommt es zu<br />

einem <strong>Middleware</strong>-Zeitfehler. Der Deliver-Task verspätet sich um 5 ms. Das Event wird<br />

jedoch nicht versendet, da es zu einer Verletzung der Slotgrenzen des Echtzeitkommunikationskanals<br />

kommen würde. Der Network Guard erkennt vor dem Versenden, dass das<br />

Übertragungsstartfenster verpasst wurde, und verhindert <strong>die</strong> Ausbreitung des Zeitfehlers<br />

auf das Netzwerkmedium. In <strong>die</strong>sem Beispiel werden folglich <strong>die</strong> Events in den Perioden<br />

11, 13 und 15 ausgelassen. Die übrigen Events werden ohne Fehler veröentlicht. Auf der<br />

Subscriber-Seite werden <strong>die</strong> Auslassungen über <strong>die</strong> Verletzung der Periodizität erkannt,<br />

so dass <strong>die</strong> Anwendung nicht nur mit den erhaltenen Events notiziert wird, sondern per<br />

Ausnahmerückruf auch über fehlende Events informiert wird.<br />

102


5.5 Eignung für eingebettete Systeme<br />

Funktion Realisierung Flash RAM<br />

Publisher RT-Kanal 13.698 399<br />

NRT-Kanal 6.440 348<br />

Subscriber RT-Kanal 10.818 399<br />

NRT-Kanal 6.614 348<br />

Tabelle 5.6: Speicherbedarf von einfachen Test-Anwendungen auf einem<br />

AVR-Mikrocontroller (Angaben in Byte)<br />

5.5 Eignung für eingebettete Systeme<br />

Für <strong>die</strong> Portierung der <strong>Middleware</strong> sind nur wenige Anpassungen in der Konguration<br />

nötig, da der überwiegende Teil der <strong>Middleware</strong> plattformunabhängig ist. Der plattformspezische<br />

Code ist in einigen wenigen Policy-Klassen gekapselt. Von den im Rahmen<br />

<strong>die</strong>ser Arbeit implementierten Komponenten sind lediglich <strong>die</strong> Anbindung an den lokalen<br />

Zeitgeber und <strong>die</strong> Temporal Firewall 11 plattformabhängig.<br />

Diese wurden auch für den 8-Bit-AVR-Mikrocontroller AT90CAN128 implementiert, um<br />

<strong>die</strong> prinzipielle Eignung der Echtzeitkanäle für stark ressourcenbeschränkte eingebettete<br />

Systeme zu zeigen. Der AT90CAN128 arbeitet bei einer Taktfrequenz von bis zu 16 MHz.<br />

Er verfügt über 128 KByte Flash als Programmspeicher sowie 4 KByte internen SRAM.<br />

In Tabelle 5.6 ist der Flash- und der permanente RAM-Bedarf 12 verschiedener Testprogramme<br />

gegenübergestellt. Es wird eine einfache Publisher- und eine einfache Subscriber-<br />

Applikation betrachtet. In einer Version kommunizieren <strong>die</strong> beiden über <strong>die</strong> Echtzeitkanäle,<br />

in der anderen komplett ohne QoS-Zusicherungen über Best-Eort-Kanäle. Die Programme<br />

wurden mit dem Compiler avr-g++ 13 (Version 4.3.5) übersetzt 14 . Wie zu erwarten<br />

war, benötigen <strong>die</strong> Echtzeit-Features von <strong>FAMOUSO</strong> zusätzliche Speicherressourcen. Beim<br />

Publisher ergeben sich ca. 7.300 Byte, beim Subscriber ca. 4.200 Byte zusätzlicher Flash-<br />

Bedarf. Hiervon entfallen jeweils etwa 1.200 Byte auf <strong>die</strong> Uhrensynchronisation 15 und den<br />

Task-Dispatcher, <strong>die</strong> bei der NRT-Version nicht enthalten sind. Die eigentliche Implementierung<br />

der Echtzeitkanäle belegt somit auf der Publisher-Seite ungefähr 4.900 Byte und<br />

auf der Subscriber-Seite rund 1.800 Byte Flash. Der permanente RAM-Bedarf erhöht sich<br />

insgesamt um etwa 50 Byte, wobei <strong>die</strong> Uhrensynchronisation und der Task-Dispatcher<br />

hier nahezu <strong>die</strong> Hälfte ausmachen. Alles in allem nutzen <strong>die</strong> Testprogramme, <strong>die</strong> mit den<br />

11<br />

Bei der Temporal Firewall muss sichergestellt werden, dass es durch nebenläugen Zugri nicht zu Race-<br />

Conditions kommt. Hierfür bieten verschiedene Plattformen unterschiedliche Mechanismen, <strong>die</strong> in der<br />

jeweiligen Implementierung ausgenutzt werden.<br />

12<br />

Die Nutzung des Stacks wird hierbei nicht betrachtet.<br />

13 avr-g++ ist ein C++-Compiler für AVR-Mikrocontroller. Er ist Teil der GNU-Compiler-Collection (siehe<br />

http://gcc.gnu.org/).<br />

14<br />

Als Optimierungseinstellung bei der Übersetzung wurde -Os -ffunction-sections -fdata-sections<br />

-Wl,gc-sections verwendet. Zur Ermittlung des Speicherbedarfs wurde der Befehl avr-size -C<br />

mcu=at90can128 eingesetzt.<br />

15<br />

Für den AVR wurde nicht das in Abschnitt 5.1 beschriebene Verfahren verwendet, da <strong>die</strong>s nur mit<br />

groÿem Aufwand auf den 8-Bit-Mikrocontroller portiert werden kann. Stattdessen wird eine weniger<br />

rechenaufwendige Oset-Korrektur durchgeführt.<br />

103


5 Evaluierung<br />

Echtzeitkanälen arbeiten, nur ungefähr 10% des im Mikrocontroller vorhandenen Speichers.<br />

Die <strong>Middleware</strong> lässt somit noch hinreichend Platz für komplexere Anwendungen.<br />

Zusätzlich gibt es bei der Ressourcennutzung noch Einsparpotential, das durch Anpassungen<br />

in der Implementierung ausgenutzt werden kann, beispielsweise durch <strong>die</strong> Verwendung<br />

kleinerer Datentypen für <strong>die</strong> Knoten-IDs, Netzwerk-IDs und <strong>die</strong> lokalen PEC-IDs 16 .<br />

In den etwa 400 Byte reservierten RAM ist auÿerdem ein Puer von 255 Byte für das<br />

Zusammensetzen fragmentiert übertragener Events enthalten. Dessen Gröÿe lässt sich als<br />

Kongurationsparameter leicht an <strong>die</strong> Anforderungen der Anwendung anpassen.<br />

16<br />

Momentan werden für alle IDs 64-Bit-Datentypen verwendet, deren Verarbeitung auf einem 8-Bit-<br />

Prozessor sehr aufwendig ist.<br />

104


6 Zusammenfassung und Ausblick<br />

In der vorliegenden Arbeit wurde <strong>die</strong> <strong>Middleware</strong> <strong>FAMOUSO</strong> um Echtzeitkommunikationskanäle<br />

erweitert. Diese ermöglichen <strong>die</strong> Durchsetzung von strikten QoS-Anforderungen bei<br />

der Kommunikation mehrerer Knoten in einem Netzwerk.<br />

In Kapitel 2 wurde eine Einführung in Echtzeitsysteme gegeben. Dabei wurde <strong>die</strong> zentrale<br />

Problemstellung der Arbeit herausgearbeitet: Der Zugri auf das Netzwerk muss reguliert<br />

werden, da es eine Ressource ist, <strong>die</strong> von mehreren Knoten gemeinsam genutzt wird. Die<br />

Regulierung muss in einer Art und Weise geschehen, <strong>die</strong> beschränkte Latenzen garantieren<br />

kann auch bei hoher Auslastung des Netzwerks. Existierende Ansätze, mit denen <strong>die</strong>se<br />

zeitliche Vorhersagbarkeit für CAN und Ethernet erreicht werden kann, wurden den für<br />

<strong>FAMOUSO</strong> gestellten Anforderungen nicht gerecht.<br />

Daher wurde ein neues Verfahren zur Koordination der Netzwerkme<strong>die</strong>nzugrie entwickelt,<br />

das in Kapitel 3 vorgestellt wurde. Es basiert auf dem TDMA-Prinzip, d. h. <strong>die</strong> Me<strong>die</strong>nzeit<br />

ist in Slots unterteilt, <strong>die</strong> jeweils einem Echtzeitkommunikationskanal zugeordnet sind.<br />

Die Dauer und Periode der Slots werden entsprechend der QoS-Anforderungen dimensioniert,<br />

<strong>die</strong> von der Anwendung an den Kanal gestellt werden. Das Verfahren garantiert,<br />

dass ein Event, das auf einem Kanal veröentlicht wurde, innerhalb des zugehörigen<br />

Slots übertragen werden kann. Somit ergibt sich eine beschränkte Kommunikationslatenz<br />

mit geringem Jitter, wie sie in verteilten Echtzeitsystem gefordert ist. Um <strong>die</strong> Echtzeitkommunikationskanäle<br />

zur Laufzeit etablieren zu können, wurde ein Reservierungsprotokoll<br />

erarbeitet. Jeder Knoten kommuniziert <strong>die</strong> QoS-Anforderungen seiner Kanäle über<br />

einen Management-Kanal. Ein zentraler Netzwerkplaner empfängt über <strong>die</strong>sen <strong>die</strong> Anforderungen,<br />

reserviert einen entsprechenden Kanal und sendet dessen Zeitparameter zurück<br />

an den Knoten. Damit ist der Kommunikationskanal etabliert, so dass veröentlichte<br />

Events nun an <strong>die</strong> Subscriber ausgeliefert werden können. Kann <strong>die</strong> Einhaltung der QoS-<br />

Anforderungen nicht garantiert werden, erfolgt keine Reservierung und somit keine Kommunikation<br />

über den Kanal. Stattdessen wird der Fehler den Anwendungen gemeldet. Es<br />

wurde ein zentraler Planungsansatz gewählt, weil <strong>die</strong>ser im Vergleich zu einem verteilten<br />

Ansatz mit deutlich geringeren Ressourcen-Anforderungen für <strong>die</strong> Knoten einhergeht.<br />

So können <strong>die</strong> Echtzeitkanäle auch auf sehr limitierten eingebetteten Systemen genutzt<br />

werden. Die Koordination der Me<strong>die</strong>nzugrie wurde für CAN und Ethernet beschrieben,<br />

kann aber auch auf andere Netzwerke übertragen werden. Änderungen sind hierfür bei der<br />

Dimensionierung der Slot-Länge sowie bei der Integration von NRT-Nachrichten in das<br />

105


6 Zusammenfassung und Ausblick<br />

TDMA-Schema nötig. Das Konzept ist unabhängig von der verwendeten Uhrensynchronisation.<br />

Die erreichte Uhrengenauigkeit ist wie <strong>die</strong> anderen Zeiteigenschaften ein Modellparameter,<br />

der sich in der Konguration des Netzwerkplaners angeben lässt.<br />

Die Echtzeitkommunikationskanäle wurden in <strong>FAMOUSO</strong> integriert (siehe Kapitel 4). Als<br />

API zur Verwendung der Kommunikationskanäle wurden Echtzeitereigniskanäle bereitgestellt.<br />

Für jeden <strong>die</strong>ser Ereigniskanäle kann eine individuelle QoS gefordert werden. Diese<br />

wird durchgesetzt, wenn ausreichend Ressourcen verfügbar sind. Wird <strong>die</strong> geforderte QoS<br />

nicht eingehalten, so wird <strong>die</strong> Anwendung darüber unverzüglich mittels eines Ausnahmerückrufs<br />

informiert. Es wurde ein einfaches kooperatives Multitasking realisiert, um <strong>die</strong><br />

<strong>Middleware</strong> auf eingebetteten Systemen auch ohne Betriebssystem verwenden zu können.<br />

Zeitfehler, <strong>die</strong> beispielsweise durch unkooperatives Verhalten von Tasks entstehen können,<br />

werden erkannt und es wird verhindert, dass sich <strong>die</strong>se auf das Netzwerkmedium ausweiten.<br />

Unterstützt wird auch <strong>die</strong> Synchronisation von Prozessor- und Netzwerkplanung, über<br />

<strong>die</strong> sich eine gewünschte Ende-zu-Ende-Latenz einstellen lässt. Die Implementierung ist<br />

portabel und kongurierbar.<br />

In Kapitel 5 wurden <strong>die</strong> erarbeiteten und in der Implementierung umgesetzten Konzepte<br />

evaluiert. Dazu wurden Langzeit-Versuche zur Messung der Kommunikationslatenz<br />

durchgeführt. Diese haben gezeigt, dass mit den Echtzeitkommunikationskanälen <strong>die</strong><br />

zeitliche Vorhersagbarkeit geschaen wurde, <strong>die</strong> für <strong>die</strong> geforderten QoS-Garantien nötig<br />

ist. Bei den Versuchen wurde auch <strong>die</strong> erreichte Uhrengenauigkeit überprüft, um <strong>die</strong> Messfehler<br />

und <strong>die</strong> Einhaltung der Genauigkeitsannahme einzuschätzen. Der Versuch zur Endezu-Ende-Latenz<br />

veranschaulicht <strong>die</strong> zeitliche Vorherbestimmbarkeit des Systems durch<br />

den Anwendungsentwickler. Anhand von Beispielen wurde auÿerdem <strong>die</strong> Reservierung<br />

und Ablehnung von angeforderten Kommunikationskanälen sowie einige Aspekte der<br />

Fehlererkennung und -behandlung demonstriert. Zusätzlich wurde <strong>die</strong> prinzipielle Eignung<br />

der Echtzeitkanäle für ressourcenbeschränkte eingebettete Systeme gezeigt, indem<br />

der Ressourcenbedarf einer Beispielanwendung auf dem AVR-Mikrocontroller untersucht<br />

wurde.<br />

Die Evaluierung hat gezeigt, dass <strong>FAMOUSO</strong> dank der in <strong>die</strong>ser Arbeit entstandenen<br />

Erweiterungen nun auch gut für <strong>die</strong> Entwicklung verlässlicher verteilter Echtzeitsysteme<br />

geeignet ist.<br />

Ausblick<br />

Während der Entwicklung der Konzepte und deren praktischer Umsetzung sind verschiedene<br />

Aspekte festgestellt wurden, bei denen weiterführende Arbeiten ansetzen können,<br />

um <strong>die</strong> Eigenschaften und Einsatzmöglichkeiten von <strong>FAMOUSO</strong> weiter zu verbessern.<br />

• Die vorliegende Arbeit bietet QoS-Garantien für <strong>die</strong> Kommunikation innerhalb eines<br />

Netzwerksegments. Für viele Anwendungen sind jedoch netzwerkübergreifende<br />

106


Echtzeitgarantien interessant. So beispielsweise, wenn mehrere Roboter, von denen<br />

jeder selbst ein verteiltes Echtzeitsystem darstellt, kooperativ zusammenarbeiten<br />

sollen. Daher ist eine Erweiterung der Netzwerkplanung wünschenswert, <strong>die</strong><br />

Garantien für <strong>die</strong> Kommunikation über mehrere Netzwerksegmente ermöglicht (vgl.<br />

Abschnitt 3.3.6).<br />

• Momentan ist <strong>die</strong> Einplanbarkeit von Kommunikationskanälen abhängig von der<br />

Reihenfolge ihrer Anforderung. So kann eine Menge von Kanälen in einem Lauf des<br />

Systems planbar sein, während in einem anderen Lauf nicht alle Kanäle reservierbar<br />

sind. Das Problem lässt sich zwar durch <strong>die</strong> Angabe von Slot-Rahmenintervallen<br />

lösen, jedoch ist <strong>die</strong>s ein zusätzlicher Aufwand für den Anwendungsentwickler. Eine<br />

bessere Lösung wäre <strong>die</strong> Umsetzung eines optimalen Planungsalgorithmus' (vgl.<br />

Abschnitt 3.2.4). Dieser erfordert jedoch <strong>die</strong> Umplanung von bereits verwendeten<br />

Kommunikationskanälen, was wiederum <strong>die</strong> Erweiterung des Reservierungsprotokolls<br />

nötig macht. Da hierdurch in allen Knoten zusätzlicher Ressourcenbedarf entsteht,<br />

sollte <strong>die</strong> optimale Planung als optionales Feature realisiert werden.<br />

• Das Konzept schreibt einen zentralen Netzwerkplaner vor. Zwar läuft <strong>die</strong> bereits in<br />

Gang gesetzte Echtzeitkommunikation auch weiter, wenn der Planer ausfällt. Es sind<br />

jedoch keine neuen Reservierungen oder Freigaben möglich. Auch der Ausfall des Poll-<br />

Masters kann momentan nicht toleriert werden. Im Interesse der Verlässlichkeit könnte<br />

daher <strong>die</strong> Unterstützung von Backup-Komponenten realisiert werden, durch<br />

<strong>die</strong> der Ausfall von Komponenten maskiert werden kann.<br />

• Der implementierte Ethernet Network Layer sendet alle Events als Broadcast, so<br />

dass auch Events nicht abonnierter Subjects in der <strong>Middleware</strong> empfangen werden.<br />

Über <strong>die</strong> Verwendung von Multicast MAC-Adressen lieÿe sich <strong>die</strong> CPU-Belastung<br />

reduzieren, weil <strong>die</strong> Filterung so schon auf Hardware-Ebene oder zumindest im Betriebssystem<br />

stattnden kann. Zur Unterstützung muss ein entsprechendes Bindeprotokoll<br />

für Ethernet entwickelt werden.<br />

107


Literaturverzeichnis<br />

[ALRV00] Avizienis, Algirdas ; Laprie, Jean-Claude ; Randell, Brian ; Vytautas:<br />

Fundamental Concepts of Dependability. (2000). http://citeseerx.ist.<br />

psu.edu/viewdoc/summary?doi=10.1.1.24.1400<br />

[APF02]<br />

[Coo03]<br />

[CV94]<br />

[DB07]<br />

Almeida, L. ; Pedreiras, P. ; Fonseca, J.A.G.: The FTT-CAN protocol:<br />

why and how. In: Industrial Electronics, IEEE Transactions on 49 (2002),<br />

Dezember, Nr. 6, S. 1189 1201. ISSN 02780046<br />

Cooling, Jim: Software Engineering for Real-Time Systems. Addison-Wesley,<br />

2003. ISBN 0201596202<br />

Chiueh, Tzi cker ; Venkatramani, Chitra: Supporting Real-Time Trac on<br />

Ethernet. In: in Proc. of Real-Time Systems Symposium, 1994, S. 282286<br />

Davis, Robert I. ; Burns, Alan: Controller Area Network (CAN) Schedulability<br />

Analysis: Refuted, Revisited and Revised. In: Refuted, Revisited and<br />

Revised. Real-Time Systems 35 (2007), S. 239272<br />

[FMD + 00] Führer, Thomas ; Müller, Bernd ; Dieterle, Werner ; Hartwich, Florian<br />

; Hugel, Robert ; Walther, Michael: Time Triggered Communication on<br />

CAN / Robert Bosch GmbH. 2000. Forschungsbericht<br />

[GPS04]<br />

[GS94]<br />

[GVC96]<br />

[HJ03]<br />

Gore, Pradeep ; Pyarali, Irfan ; Schmidt, Douglas C.: The Design and Performance<br />

of a Real-Time Notication Service. In: Proceedings of the 10th IEEE<br />

Real-Time and Embedded Technology and Applications Symposium, IEEE Computer<br />

Society, 2004, S. 112<br />

Gergeleit, M. ; Streich, H.: Implementing a distributed high-resolution<br />

real-time clock using the CAN-Bus. In: Proceedings of the 1st International<br />

CAN-Conference. Mainz, Germany, 1994<br />

George, Laurent ; Voluceau, Domaine D. ; Cedex, Bp Le C.: Preemptive<br />

and Non-Preemptive Real-Time Uni-Processor Scheduling. 1996. Technical<br />

Report 2966, Institut National de Recherche et Informatique et en Automatique<br />

(INRIA), France<br />

Hanssen, Ferdy ; Jansen, Pierre G.: Real-Time Communication Protocols:<br />

An Overview. 2003. Forschungsbericht<br />

109


Literaturverzeichnis<br />

[HLS97]<br />

[Hüs94]<br />

[iee08]<br />

Harrison, Timothy ; Levine, David L. ; Schmidt, Douglas C.: The Design<br />

and Performance of a Real-time CORBA Event Service. In: Proceedings of<br />

OOPSLA '97, (Atlanta, GA), ACM, ACM, 1997, S. 184199<br />

Hüsener, Thomas: Entwurf komplexer Echtzeitsysteme State of the Art.<br />

BI-Wissenschaftsverlag, 1994. ISBN 3411164417<br />

IEEE Standard for Information TechnologyTelecommunications and Information<br />

Exchange Between SystemsLocal and Metropolitan Area Networks<br />

Specic Requirements Part 3: Carrier Sense Multiple Access With Collision<br />

Detection (CSMA/CD) Access Method and Physical Layer Specications<br />

- Section One. In: IEEE Std 802.3-2008 (Revision of IEEE Std 802.3-<br />

2005) (2008). http://dx.doi.org/10.1109/IEEESTD.2008.4726971. DOI<br />

10.1109/IEEESTD.2008.4726971<br />

[KL99] Kaiser, Jörg ; Livani, Mohammad A.: Achieving Fault-Tolerant Ordered<br />

Broadcasts in CAN. In: Proc. of the 3rd European Dependable Computing<br />

Conference, 1999, S. 351363<br />

[KN97]<br />

[KN98]<br />

[Kop97]<br />

[Kop04]<br />

[KW05]<br />

[LK98]<br />

[LKJ99]<br />

Kopetz, H. ; Nossal, R.: Temporal rewalls in large distributed real-time<br />

systems. In: Distributed Computing Systems, 1997., Proceedings of the Sixth<br />

IEEE Computer Society Workshop on Future Trends of, 1997. ISSN 1071<br />

0485, S. 310 315<br />

Kaiser, Jörg ; Nett, Edgar: Echtzeitverhalten in dynamischen, verteilten<br />

Systemen. In: Informatik Spektrum 21 (1998), Nr. 6, S. 356365<br />

Kopetz, Hermann: Real-Time Systems: Design Principles for Distributed Embedded<br />

Applications. 1st. Norwell, MA, USA : Kluwer Academic Publishers,<br />

1997. ISBN 0792398947<br />

Kopetz, Hermann: On the Fault Hypothesis for a Safety-Critical Real-Time<br />

System. In: Workshop on Future Generation Software Architectures in the<br />

Automotive Domain (2004)<br />

Kiszka, Jan ; Wagner, Bernardo: RTnet - A Flexible Hard Real-Time Networking<br />

Framework. In: In 10th IEEE International Conference on Emerging<br />

Technologies and Factory Automation, 2005<br />

Livani, Mohammad A. ; Kaiser, Jörg: EDF Consensus on CAN Bus Access<br />

for Dynamic Real-Time Applications. In: in José Rolim (Ed.): Lecture Notes<br />

in Computer Science, Springer, 1998, S. 10881097<br />

Livani, Mohammad A. ; Kaiser, Jörg ; Jia, Weijia: Scheduling Hard and Soft<br />

Real-Time Communication in a Controller Area Network. In: in Controller<br />

Area Network (CAN), 23RD IFAC/IFIP Workshop On Real Time Programming,<br />

1999<br />

110


Literaturverzeichnis<br />

[Lun08]<br />

Lunze, Jan: Regelungstechnik 1. 7. neu bearbeitete Auage. Springer, 2008. <br />

ISBN 9783540689072<br />

[MHG03] Martínez, José M. ; Harbour, Michael G. ; Gutiérrez, J. J.: RT-EP:<br />

Real-Time Ethernet Protocol for Analyzable Distributed Applications on a<br />

Minimum Real-Time POSIX Kernel. In: Proceedings of the 2nd International<br />

Workshop on Real-Time LANs in the Internet Age, RTLIA 2003, 2003<br />

[NL08]<br />

[PAG02]<br />

[PcS94]<br />

[RGS95]<br />

[Rob91]<br />

[RV95]<br />

Navet Nicolas (Hrsg.) ; Lion Françoise Simonot (Hrsg.): The Automotive<br />

Embedded Systems Handbook. Taylor & Francis / CRC Press, 2008 (Industrial<br />

Information Technology Series). 488 S. ISBN 9780849380266<br />

Pedreiras, Paulo ; Almeida, Luís ; Gai, Paolo: The FTT-Ethernet Protocol:<br />

Merging Flexibility,Timeliness and Eciency. In: Proceedings of the 14th<br />

Euromicro Conference on Real-Time Systems. Washington, DC, USA : IEEE<br />

Computer Society, 2002. ISBN 0769516653, 152<br />

Pardo-castellote, Gerardo ; Schneider, Stan: The Network Data Delivery<br />

Service: Real-Time Data Connectivity for Distributed Control Applications. In:<br />

Proc. IEEE Int. Conf, 1994, S. 28702876<br />

Rajkumar, Ragunathan ; Gagliardi, Mike ; Sha, Lui: The Real-Time Publisher/Subscriber<br />

Inter-Process Communication Model for Distributed Real-<br />

Time Systems: Design and Implementation. In: Proceedings of the IEEE Realtime<br />

Technology and Applications Symposium, 1995, S. 6675<br />

Robert Bosch GmbH: CAN Specication Version 2.0. Robert Bosch GmbH,<br />

1991<br />

Rufino, José ; Veríssimo, Paulo: A Study on the Inaccessability Characteristics<br />

of the Controller Area Network. In: Proc. of the 2nd International CAN<br />

Conference, CiA, 1995, S. 712<br />

[Sch] Schulze, Michael: <strong>FAMOUSO</strong> Project Website. http://famouso.<br />

sourceforge.net<br />

[Sch09]<br />

[Sch10a]<br />

[Sch10b]<br />

[SF11]<br />

Schulze, Michael: <strong>FAMOUSO</strong> Eine adaptierbare Publish/ Subscribe <strong>Middleware</strong><br />

für ressourcenbeschränkte Systeme. In: Electronic Communications of<br />

the EASST (ISSN: 1863-2122) 17 (2009). ISSN 18632122<br />

Schulz, Gerd: Regelungstechnik 1 - Lineare und Nichtlineare Regelung, Rechnergestützter<br />

Reglerentwurf. 4. Oldenbourg Wissenschaftsverlag GmbH, 2010<br />

Schulze, Michael: A Highly Congurable Logging Framework In C++. In:<br />

Dr. Dobb's (2010), June 18. http://www.drdobbs.com/cpp/225700666<br />

Schulze, Michael ; Förster, Marcus: Ressourcengewahres Framework für<br />

Kontextinformationen in eingebetteten verteilten System. In: Electronic Communications<br />

of the EASST (ISSN: 1863-2122) 37 (2011), S. 12. Proceedings<br />

111


Literaturverzeichnis<br />

of the Workshops der wissenschaftlichen Konferenz Kommunikation in Verteilten<br />

Systemen 2011 (WowKiVS 2011)<br />

[SL09] Schulze, Michael ; Lukas, Georg: MLCCA Multi-Level Composability<br />

Check Architecture for Dependable Communication over Heterogeneous Networks.<br />

In: Procedings of 14th International Conference on Emerging Technologies<br />

and Factory Automation. Mallorca, Spain : IEEE, 2009<br />

[SWLK11] Schulze, Michael ; Werner, Philipp ; Lukas, Georg ; Kaiser, Jörg: AFP<br />

an Adaptive Fragmentation Protocol for Supporting Large Datagram Transmissions.<br />

In: Journal of Communications (2011). eingereicht 10. Februar,<br />

angenommen 23. März<br />

[TB94]<br />

[Tin94]<br />

[ZA95]<br />

[ZS95]<br />

Tindell, Ken ; Burns, Alan: Guaranteeing Message Latencies On Control<br />

Network (CAN). In: Proceedings of the 1st International CAN Conference,<br />

CiA, 1994, S. 12<br />

Tindell, K.W.: Analysing Real-Time Communications: Controller Area Network<br />

(CAN). 1994<br />

Zöbel, Dieter ; Albrecht, Wolfgang: Echtzeitsysteme-Grundlagen und Techniken.<br />

1. Attenkirchen : International Thomson Publishing, 1995. ISBN<br />

3826601505<br />

Zuberi, Khawar M. ; Shin, Kang G.: Non-Preemptive Scheduling of Messages<br />

on Controller Area Network for Real-Time Control Applications. In: IEEE<br />

Transactions On Robotics And Automation, 1995, S. 240249<br />

112


Selbstständigkeitserklärung<br />

Hiermit versichere ich, dass ich <strong>die</strong> vorliegende Diplomarbeit selbstständig und nur unter<br />

Verwendung der angegebenen Quellen und Hilfsmittel angefertigt habe, sowie alle Zitate<br />

entsprechend kenntlich gemacht habe.<br />

Magdeburg, 31. März 2011<br />

Philipp Werner

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!