Fehler oder Ausfälle im Schienenverkehr können die Umwelt zerstören, erheblichen Sachschaden verursachen oder gar Menschenleben gefährden. Die drei größten Verursacher von gefährlichen Zwischenfällen bei sicherheitskritischen Steuerungssystemen sind Bauteilausfälle, Abweichungen im System und menschliche Fehler. Der Bahnmarkt ist ein wichtiger Bereich für Embedded-Systeme. Neue Möglichkeiten liegen in der Zugbeeinflussung beziehungsweise Zugsicherung (englisch ATC, Automatic Train Control) mit Komponenten an Bord und an der Strecke. Ein großes Potenzial steckt in neuen Technologien für Signalanlagen und sicherheitskritischen Unterbereichen. Beispiele finden sich weltweit.
In Europa soll das European Train Control System (ETCS) den grenzübergreifenden Verkehr und die Signaleinrichtungen durch eine einheitliche europäische Norm für Zugsteuerungssysteme harmonisieren und sicherer machen. Ähnliches passiert in den vereinigten Staaten durch Positive Train Control (PTC) und in China mit dem Chinese Train Control System (CTCS). Die Infrastruktur, die für all diese Ansätze aus- und aufgebaut werden muss, ist immens. Jedes System muss genau wissen, wo sich ein Zug befindet und in welchem Zustand er ist.
Sicherheitsanforderungsstufen und Normen
Bereits bei der Konzeption kann der Entwickler die Wahrscheinlichkeit eines Systemausfalls mit katastrophalem Schaden senken. Ein systematischer Entwicklungsprozess lehnt sich an Normen und Richtlinien an und umfasst die gesamte Produktentwicklung und -realisierung einschließlich entsprechender Verifizierung und Dokumentation. Allgemein gilt die Norm IEC 61508 der Internationalen Elektrotechnischen Kommission zur funktionalen Sicherheit elektronischer Systeme. Sie definiert die Sicherheitsanforderungsstufen – Safety Integrity Levels – SIL 1 bis SIL 4. Speziell für den Bahnbereich hat die europäische Organisation für elektrische Normung (Cenelec) daran anknüpfend entsprechende Standards normiert. Dazu gehören:
EN 50126 – Zuverlässigkeit, Verfügbarkeit, Instandhaltbarkeit, Sicherheit (RAMS)
EN 50128 – Software für Eisenbahnsteuerungs- und Überwachungssysteme
EN 50129 – Sicherheitsrelevante elektronische Systeme für Signaltechnik.
Die EN 50129 enthält auch die genaue Definition der SIL-Stufen für Bahnanwendungen. Sie leitet die zutreffende SIL von der tolerierbaren Gefährdungsrate pro Stunde und pro Funktion ab.
Redundanz und Sicherheit
Eine sicherheitskritische Anwendung benötigt ein sicheres System mit einem bestimmbaren Fehlerverhalten. Mit Hilfe der Analysemethode FMEA (Fehlermöglichkeits- und Einflussanalyse), die in der ersten Planungsphase durchgeführt wird, lässt sich bestimmen, ob das System dem geforderten MTBF-Wert (Mean Time Between Failures) genügen wird. Um das Risiko im sicherheitskritischen Umfeld zu senken, werden mehrere Instanzen der gleichen Komponente in einem System integriert – macht sie also redundant. Ein verdoppelter Rechner erhöht die Verfügbarkeit, also den MTBF-Wert. Wenn eine CPU ausfällt, kann das System mit der verbleibenden CPU den Betrieb aufrechterhalten. Um auch die Sicherheit zu erhöhen, müssen beide Systeme ordnungsgemäß funktionieren, damit die Anwendung in Betrieb bleibt. Das wiederum senkt jedoch die Verfügbarkeit. Die üblichste Konstellation, um sowohl die Sicherheit als auch die Verfügbarkeit zu erhöhen, ist ein dreifach redundantes System. Drei CPUs oder Systeme laufen mit einer Entscheidungsstufe, einem Voter, der ständig die Ausgabe der drei Komponenten überwacht. Wenn es mit einem der Systeme ein Problem gibt, isoliert es der Voter; die anderen beiden bleiben in Betrieb.
Ein Minuspunkt bei diesem Design ist die Komplexität, die ein solches System erfordert. Alle drei CPUs müssen zwingend synchronisiert werden und in der Lage sein, miteinander zu kommunizieren – eine große Herausforderung aus Sicht der Softwareentwicklung und ein hoher Kostenfaktor auf der Hardwareseite. Wenn ein Entwickler Redundanz aufbaut, muss er sich auch darüber im Klaren sein, dass identische Systeme anfällig für Gleichartiges sind. Es kann zu Versagen mit einheitlichem Ablauf und Versagen aufgrund gemeinsamer Ursache kommen. Um dem entgegenzuwirken, baut er Unterschiede ein, sodass ein einzelner Fehler nicht zu einem Ausfall mehrerer Komponenten und schließlich des Systems führt. Nach diesem Prinzip der Diversität können zum Beispiel softwareseitig unterschiedliche, voneinander getrennt entwickelte Anwendungen auf den Subsystemen, hardwareseitig unterschiedliche Ein-/Ausgabe-Schnittstellen, Bauteile von unterschiedlichen Herstellern und so weiter verwendet werden. Die Funktionalität bleibt dabei immer die gleiche und gewährleistet, dass die Systeme trotzdem redundant arbeiten können.
Auf der Hardware- und Firmware-Seite kommen außerdem sogenannte BITE-Komponenten (Built-In-Test-Equipment) zum Einsatz, die die korrekte Funktionsweise des Systems überwachen und automatisiert auf auftretende Probleme reagieren. Bei redundanten Systemen ist das BITE meist in der Lage, das System zu rekonfigurieren, das heißt, defekte Baugruppen abzuschalten und funktionstüchtigen Ersatz in den Signalweg einzufügen. Auch die ECC-Fehlerbehandlung (Error Correcting Code), ein Fehlerkorrektur-Verfahren für Speicher, oder die Überwachung von internen Spannungen spielen hier eine wichtige Rolle.
Dreifache Redundanz
Ein System mit eingebauter Dreifachredundanz ist eine innovative Architektur und zugleich eine Alternative zu klassischen Konstellationen. Drei Prozessoren und drei Speicherinstanzen arbeiten im Lockstep-Modus. Alle werden von einem Voter überwacht, der in einem FPGA realisiert ist. Hierbei verhalten sich die Prozessoren absolut synchron. Für die Software stellen sie eine Einheit dar, die Redundanz wird sozusagen unsichtbar – womit der Softwareaufwand gesenkt wird. Sogar Diversität ist auf einer einzelnen Baugruppe möglich, mit Echtzeit-Betriebssystemen wie PikeOS. Die Speicherverwaltung muss ein Partitionieren der Ressourcen erlauben. Den Partitionen sind bestimmte Speicherbereiche genau zugewiesen. Die Anwendungen und Aufgaben, die innerhalb der Partitionen ausgeführt werden, können völlig verschieden sein. Echtzeit-Betriebssysteme erlauben außerdem ein deterministisches Verhalten, was bedeutet, dass das System innerhalb eines bestimmten, festgelegten Zeitintervalls auf ein externes Ereignis reagieren muss. Um das erwünschte Verhalten im Fehlerfall eines Systems richtig zu programmieren, müssen sich Entwicklungsingenieure bereits im Vorfeld detailliert mit möglichen Verhaltensweisen und deren Konsequenzen auseinandersetzen. Je genauer und umfassender die verschiedenen Szenarien und Fehlersituationen zusammen mit dem dann bestimmten Verhalten des Rechners definiert werden, desto sicherer wird das System.
Ingenieure können aber auch zwei Karten zu einem hoch verfügbaren Computer-Cluster zusammenfügen. In einer solchen Anordnung arbeitet jeder – bereits redundant aufgebaute – Kanal für sich allein, es ist jedoch nur ein Kanal aktiv. Wenn der aktive Kanal ausfällt, wechselt das System automatisch zum zweiten Kanal.
Sicherheit erfordert Erfahrung
Hersteller mit Erfahrung in den Schlüsseldisziplinen der funktionalen Sicherheit können schnellere und kostengünstigere Lösungen bieten. Dazu gehört auch Erfahrung im entsprechenden Normenumfeld und in der Praxis, zum Beispiel mit der Nachverfolgbarkeit von Anforderungen, dem Prüfen gegen Code-Regeln in der Software- und FPGA-Entwicklung, dem Risiko- und Bauteil-Obsoleszenz-Management, der Qualifikation oder einem IRIS-Qualitätsmanagement speziell für den Bahnmarkt. Die Anzahl der qualifizierten Anbieter nimmt zwar ab, je höher Anspruch und Anforderungen einer kritischen Anwendung sind, doch es gibt sie. Der Schutz menschlichen Lebens und das Vermeiden von katastrophalen Zwischenfällen stehen bei Rechnersystemen in sicherheitskritischen Anwendungen im Vordergrund. Systeme müssen zuverlässig funktionieren und effektiv kommunizieren.