# Time-Triggered Protocol

TTP (Time-Triggered Protocol Class C oder kurz: TTP/C) ist ein feldbusbasierendes Übertragungsprotokoll, das fehlertolerante zeitgesteuerte Kommunikation zwischen elektronischen Komponenten regelt und harte Echtzeitanforderungen erfüllt.

## Allgemeines

Das Besondere an diesem Protokoll ist, dass es zeitgesteuert arbeitet, d. h., es als Steuersignale die gemeinsame Uhrzeit verwendet. Die Uhren der einzelnen Teilnehmer werden ständig durch Mittelwertbildung der Differenzen zwischen realer Ankunft der Nachricht und erwarteter Ankunft der Nachricht synchronisiert. Dieser Uhrensynchronisationsalgorithmus arbeitet dezentral und ist fehlertolerant gegenüber beliebigen Einzelfehlern. Die erwarteten Ankunftszeiten werden a priori in der MEDL (Message Descriptor List) festgelegt. Durch die MEDL ist jedem Teilnehmer bekannt, wann es ihm erlaubt ist zu senden und wann er empfangen muss.
Diese Art der Kommunikationsaufteilung wird TDMA (Time Division Multiple Access) genannt. In einer TDMA-Runde hat jeder Teilnehmer die Möglichkeit für eine bestimmte Zeit seine Nachricht zu senden. Die TDMA-Runde wiederholt sich, sobald die vorherige abgeschlossen ist.
Um die Störung der gesamten Kommunikation durch einen defekten Teilnehmer zu verhindern, der sinnlos Daten auf die Kanäle sendet (der sogenannte „Babbling idiot“), hat jeder Teilnehmer einen lokalen Buswächter (Bus-Topologie), der unabhängig vom Teilnehmer das Senden auf die Kanäle nur während der in der MEDL festgelegten Sendezeit zulässt. Bei Stern-Topologie wird pro Kanal ein zentraler Buswächter für alle Teilnehmer verwendet (Kostenersparnis).
Die Nachricht eines Teilnehmers muss durch einen minimalen Header ergänzt werden und dieser entstandene Frame wird durch eine CRC-Checksumme geschützt.
Eine weitere Maßnahme, um auch für sicherheitskritische Anwendungen geeignet zu sein, ist der Membership-Service, bei dem jeder Knoten eine Liste der als fehlerfrei angenommenen Knoten führt. Sollte die Membership-Liste nicht mit denen der anderen Knoten übereinstimmen, dann nimmt dieser Knoten einen Fehler bei sich selbst an und schaltet sich ab (Passive-Mode). Bei jeder Übertragung wird die Membership-Liste aktualisiert. Sollte ein Knoten einen fehlerhaften Frame senden, wird dieser aus der Liste ausgeschlossen.
Ein (geringes) Risiko bei diesem Verfahren ist, dass sich sogenannte Cliquen bilden, das sind zwei oder mehrere Gruppen, die sich untereinander als fehlerfrei ansehen und nur miteinander kommunizieren. Um dies zu vermeiden, prüft jeder Knoten zusätzlich, ob er Mitglied der größten 'Clique' ist und schaltet bei negativem Ergebnis in den passiven Modus.
TTP wird in einer Reihe von industriellen Serienprojekten eingesetzt. Honeywell verwendet das Protokoll in den Triebwerkssteuerungssystemen (FADEC) für die Lockheed Martin F-16 und für das Trainingsflugzeug Aermacchi M 346 sowie in einem Fly-by-Wire-Cockpit. Im Airbus A380 Mega-Airliner wird TTP zur Steuerung des von Nord-Micro hergestellten Kabinendrucksystems eingesetzt. Hamilton Sundstrand hat sich für den Einsatz einer TTP-basierten Datenkommunikationsplattform in den Stromerzeugungs- und Kabinensystemen des Boeing 787 Dreamliner entschieden. Alcatel benutzt das Protokoll seit Juni 2002 als Feldbusprotokoll in der Bahnhofssignalsteueranlage ELEKTRA 2.

## TTP/A

TTP/A (Time-Triggered Protocol Class A) ist ein weiteres zeitgesteuertes Protokoll der Time-Triggered Architecture, welches für die echtzeitfähige Ansteuerung von Sensoren, Aktuatoren und nicht sicherheitskritischen Steuergeräten konzipiert ist.
Wie TTP/C verwendet TTP/A ein TDMA-Schema für die kollisionsfreie Übertragung von Nachrichten. TTP/A ist ein Master-Slave-System, das für Low-Cost Feldbussystemanwendungen entwickelt worden ist. TTP/A kann auf einem Standard 8-bit Mikrocontroller mit einer Standard UART (Universal Asynchronous Receiver Transmitter) implementiert werden; dieser Physical Layer ist aber im Prinzip austauschbar. In der Standardimplementierung verwendet TTP/A eine UART-Kodierung mit einem Startbit, 8 Datenbits, einem Paritybit und einem Stopbit. Die Kommunikation ist in Runden und Slots unterteilt, in einem Slot wird genau ein UART-Wort gesendet. Eine Runde setzt sich aus einer festen Abfolge von Slots zusammen, wobei jeder Slot fix einer bestimmten Nachricht zugeordnet ist. Man spricht in diesem Zusammenhang auch von einem Nachrichtenfahrplan oder Round Description List (RODL). Nachrichten werden somit periodisch mit einem vorhersagbaren Zeitverhalten übertragen. TTP/A unterstützt acht verschiedene RODL, sodass schnell zwischen verschiedenen Zusammenstellungen von Daten gewechselt werden kann.
TTP/A garantiert eine feste Antwortzeit, wenn keine Übertragungsfehler auftreten. Treten hingegen Fehler auf, so verzögert sich die Übertragung der Nachricht um eine Periode. Dies ist bei Sensordaten im Allgemeinen kein Problem, bei gesendeten Befehlen müssen diese jedoch idempotent sein, um ein fehlertolerantes Verhalten im Zeitbereich zu garantieren.
TTP/A bietet ein Adressierungsschema namens Interface File System (IFS) für bis zu 256 Knoten mit je 64 Files. Ein File besteht aus bis zu 256 Records zu je 4 Bytes. Das IFS bietet eine einheitliche Adressierung von Datenwörtern bei der Erstellung von Nachrichtenfahrplänen.