Echtzeitkommunikationskanäle für die FAMOUSO-Middleware
Echtzeitkommunikationskanäle für die FAMOUSO-Middleware
Echtzeitkommunikationskanäle für die FAMOUSO-Middleware
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