Funktionale Sicherheit Deutlich schneller zur Sicherheits-Zertifizierung

Funktionale Sicherheit spielt heute eine große Rolle beim Entwurf vieler Applikationen. Bei der Entwicklung sind erhebliche Aufwände einzuplanen, um die Zertifizierungen zu erlangen. Anbieter von Mikrocontrollern können Ihre Kunden entlasten und spezifische Hardware-Komponenten einbauen oder Software-Module anbieten.

Haushaltsgeräte sind heute mit Sicherheitsfunktionen wie Überhitzungsschutz, Füllstandsmessungen oder Druckkontrollen ausgestattet. Die Sicherheit der Geräte hängt von der korrekten Funktion dieser Einrichtungen ab. Natürlich beschränkt sich die Notwendigkeit für solche (Sub-) Systeme nicht auf Haushaltsgeräte. Ganz im Gegenteil, in vielen Bereichen sind sogar weitaus höhere Anforderungen an die Sicherheit gefordert. Denn bei Komponenten der Prozessautomatisierung, Antrieben in Fertigungsanlagen oder Systemen in Kraftfahrzeugen können Fehlfunktionen nicht nur zu Beschädigung von Sachgütern, sondern auch zu ernsthaften Verletzungen oder sogar zum Tod von Menschen führen. Im Medizinbereich hängt das Leben von Menschen sogar oft unmittelbar von Geräten ab. Dementsprechend sind die Sicherheitsanforderungen je nach Gefährdungsgrad in verschiedene Klassen eingeteilt.

Diese so genannten sicherheitsrelevanten Systeme bestehen nicht nur aus elektronischen, sondern meist auch aus mechanischen und elektrischen Komponenten. Allerdings führt die Komplexität elektronischer, insbesondere programmierbarer Steuerungen, zu einer größeren Zahl möglicher Fehler. Deshalb hat man vor etwas mehr als zehn Jahren damit begonnen, die Entwicklung elektronischer, sicherheitsrelevanter Systeme in verschiedenen Normen zu definieren.

Einer der bekanntesten und allgemeinen internationalen Standards ist die von der International Electrotechnical Commission herausgegebene IEC61508. Viele nationale Normungs-Institute haben diese inhaltsgleich übernommen, wie z.B. in die deutschen DIN EN 61508. Der Titel dieses Standards lautet »Funktionale Sicherheit sicherheitsbezogener elektrischer/elektronischer/programmierbarer elektronischer Systeme«. In den acht Teilen der Norm werden Anforderungen an Systeme definiert, deren Ausfall eine Gefahr für die Umwelt und die Gesundheit von Lebewesen bedeutet. Neben der Elektronik wird insbesondere auch das Design der Software behandelt. Außerdem beschreiben die Autoren vier sogenannte Sicherheitsanforderungsstufen (Safety Integriy Level – SIL). Diese werden, abhängig von der Gefährdungsbeurteilung, für Sicherheitsfunktionen festgelegt. SIL4 stellt hierbei die höchste Stufe dar. Hersteller können ihre Geräte bis zum Level 2 entsprechend der Richtlinien selbst beurteilen. Für SIL3 und 4 muss das durch einen unabhängigen Dritten erfolgen.

Die IEC61508 dient als Grundnorm. In weiteren Standards wird diese an anwendungsspezifische Anforderungen angepasst. So stellt beispielsweise die IEC26262 eine Implementierung für den Automobilbereich dar, oder die IEC60601 für medizinische elektronische Geräte und Systeme. Ähnlich der in IEC61508 definierten Sicherheitsanforderungsstufen legt die IEC60730 drei Klassen von elektronischen Steuerungen fest. Hierbei werden an Steuerungen der Klasse A (z.B. Schalter, Thermostate) die geringsten und an Klasse C (z.B. Heizungssteuerung) die höchsten Anforderungen gestellt. Die üblichen Haushaltsgeräte wie Geschirrspülmaschinen oder Kühlschränke werden der Klasse B zugeordnet.

Bei einer Sicherheits-Zertifizierung wird immer das Gesamtsystem bewertet, nicht die einzelnen Komponenten. Einzelne Maßnahmen der Funktionalen Sicherheit erstrecken sich meist auf mehrere Bausteine. Der Entwickler muss also auf Systemebene denken. Trotzdem ist es hilfreich, wenn ihm vorbereitete Sicherheits-Module zur Hand gegeben werden, die sich nur auf eine Komponente, wie zum Beispiel einen Mikrocontroller, beziehen. Der Entwickler kann diesen Baustein benutzen und in das Gesamtkonzept einbetten.

Fujitsu bietet für seine 8- und 32-Bit-Mikrocontroller, darunter auch die ARM Cortex-M3 basierten FM3 Familien, eine Selbsttest-Bibliothek (Self Test Library - STL) nach IEC60730, Klasse B an, die Fehler und Störungen im Mikrocontroller erkennt. Wie der Name schon andeutet, läuft das Testprogramm auf dem Controller der auch getestet wird. Die Fehlerbehandlung kann jedoch nicht Bestandteil der Bibliothek sein. Das System muss das Ergebnis der Überprüfung auswerten und im Fehlerfall entsprechend reagieren.

Wie sieht die Implementierung einer solchen Bibliothek aus? In Anhang H des IEC60730 Standards sind für alle wesentlichen Teile eines Mikrocontrollers, wie Speicher, CPU oder Taktgeber, Fehlermodelle gelistet, also mögliche Störungen oder Beschädigungen der Hardware. Man kann diese Liste als »Leitfaden« für die Implementierung einer Selbsttest-Bibliothek betrachten. Das Testprogramm muss die Liste Punkt für Punkt abarbeiten und die einzelnen Komponenten prüfen. In der Praxis wird das Testprogramm üblicherweise auf handliche, eigenständige Funktionen heruntergebrochen, die der Nutzer dann selbst an verschiedenen Stellen der Mikrocontroller-Applikation einsetzt. Man kann diese Sammlung von Funktionen in zwei Gruppen unterteilen. Solche, die beim Systemstart ausgeführt werden und solche, die periodisch immer wieder aufgerufen werden, beispielsweise innerhalb einer Interrupt-Service-Routine. Der erste Fall wird als POST (Power On Self Test) bezeichnet, im zweiten Fall spricht man von BIST (Build In Self Test). Natürlich steigt der Sicherheitsgrad, wenn möglichst viele Tests im laufenden Betrieb wiederholt werden und nicht einmalig beim Einschalten ausgeführt werden. Allerdings ist die BIST-Implementierung für einige Komponenten mit erhöhtem Aufwand und einem größeren Bedarf an Rechenzeit verbunden. Denn im laufenden Betrieb muss der Ausgangszustand nach dem Test wieder hergestellt werden. Register und Speicherbereiche müssen nach dem Test den gleichen Inhalt aufweisen wie zuvor. Eine POST-Implementierung kann dagegen destruktiv ausgeführt sein. Die Norm macht für Klasse B-Applikationen keine konkreten Vorgaben. Für die meisten Komponenten reicht ein Test während des Systemstarts aus.