kramann.info
© Guido Kramann

Login: Passwort:










Robuste Systemintegration
1 Grundlagen
..1.1 Newton
....1.1.1 LinearSchwinger
....1.1.2 Daempfung
....1.1.4 ODE
....1.1.5 Saaluebung
..1.2 NewtonEuler
....1.2.1 Traegheitsmomente
....1.2.2 Modellgleichungen
....1.2.3 Einfachpendel
..1.3 Scilab
....1.3.1 Erste_Schritte
....1.3.2 Skripte
....1.3.3 Funktionen
..1.4 Laplace
....1.4.1 Eigenwerte
....1.4.2 PT1
..1.5 Regleroptimierung
....1.5.1 Guetefunktion
....1.5.2 Heuristiken
....1.5.3 Scilab
..1.6 Einstellregeln
....1.6.1 Totzeit
....1.6.2 Methode1
....1.6.3 Methode2
....1.6.4 Scilab
..1.7 Zustandsregler
..1.8 Polvorgabe
..1.8 Polvorgabe_alt
..1.9 Beobachter
....1.9.1 Haengependel
..1.10 Daempfungsgrad
..1.11 Processing
....1.11.1 Installation
....1.11.2 Erste_Schritte
....1.11.3 Mechatronik
....1.11.4 Bibliotheken
....1.11.5 Uebung
....1.11.6 Snippets
......1.11.6.1 Dateioperationen
......1.11.6.2 Bilder
......1.11.6.3 GUI
......1.11.6.4 Text
......1.11.6.5 PDF
......1.11.6.8 Maus
......1.11.6.10 Zeit
......1.11.6.13 Animation
......1.11.6.15 Simulation
....1.11.7 Referenzen
..1.12 Breakout
2 Beispiel
3 Beispielloesung
4 Praxis
5 javasci
6 Fehlertoleranz1
7 Reglerentwurf
..7.1 Sprungantwort
..7.2 Messdaten
..7.3 Systemidentifikation
..7.4 Polvorgabe
..7.5 Beobachter
..7.6 Robuster_Entwurf
..7.7 SIL
8 Systementwicklung
9 Arduino
..9.1 Lauflicht
..9.2 Taster
..9.3 Sensor
..9.12 Motor_PWM1
..9.13 Motor_PWM2_seriell
..9.14 Motor_PWM3_analogWrite
..9.15 Scheduler
..9.20 AV
..9.21 Mikrofon
..9.22 Universal
....9.22.1 Laborplatine
....9.22.2 LED_Leiste
....9.22.3 Motortreiber
....9.22.4 Sensoreingaenge
....9.22.5 Taster
....9.22.6 Tests
....9.22.7 Mikrofon
....9.22.8 Lautsprecher
....9.22.9 Fahrgestell
..9.23 Zauberkiste
..9.24 OOP
....9.24.1 Uebungen
..9.25 AVneu
....9.25.1 Tests
..9.26 DA_Wandler
..9.27 CompBoard
....9.27.1 Tastenmatrix
....9.27.2 ASCIIDisplay
..9.28 CTC
..9.29 Tonerzeugung
10 EvoFuzzy
..10.1 Fuzzy
....10.1.1 Fuzzylogik
....10.1.2 FuzzyRegler
....10.1.3 Uebung9
....10.1.5 Softwareentwicklung
......10.1.5.1 AgileSoftwareentwicklung
......10.1.5.2 FuzzyRegler
......10.1.5.3 Uebung
....10.1.6 Umsetzung
......10.1.6.1 FuzzyRegler
......10.1.6.2 Simulation
......10.1.6.3 Optimierung
......10.1.6.4 Uebung
....10.1.7 Haengependel
......10.1.7.1 Haengependel
......10.1.7.2 Simulation
......10.1.7.3 FuzzyRegler
......10.1.7.4 Optimierer
......10.1.7.5 Genetisch
....10.1.8 Information
....10.1.9 Energie
..10.2 Optimierung
....10.2.1 Gradientenverfahren
....10.2.2 Heuristiken
....10.2.3 ModifizierteG
....10.2.4 optim
..10.3 Genalgorithmus
..10.4 NeuronaleNetze
....10.4.1 Neuron
....10.4.2 Backpropagation
....10.4.3 Umsetzung
....10.4.4 Winkelerkennung
..10.5 RiccatiRegler
11 Agentensysteme
12 Simulation
20 Massnahmen
21 Kalmanfilter
..21.1 Vorarbeit
..21.2 Minimalversion
..21.3 Beispiel
30 Dreirad
31 Gleiter
..31.1 Fehlertoleranz

6 Entwicklung von Fehler toleranter Software

Die nachfolgenden Ausführungen fassen einige zentrale Kapitel aus dem Buch "Patterns for Fault Tolerant Software" zusammen. Die dort beschriebenen Konzepte sollen auf das Problem der Regelung der Spiegelposition aus den vorangehenden Kapiteln angewendet werden.

Autor Titel erschienen
Hanmer, R.S. Patterns for Fault Tolerant Software John Wiley & Sons, Chichester, 2007.

Tabelle 6-1: Literatur zu "Fehlertoleranter Softwareentwurf"

  • zu lesen:
  1. Seiten 3..7
  2. Seiten 17..26
  3. Seiten 27..52
  4. Seiten 53..81

Begrifflichkeit

  • Ein System ist fehlerhaft programmiert. Es gibt darin Fehler (faults).
  • Die fehlerhafte Programmierung kann im Betrieb zu Defekten und Störungen führen (Errors).
  • Die Defekte und Störungen wiederum können zum Versagen / zu Ausfällen des Systems führen (Failure).

Im folgenden sind die relevanten Begriffe im engeren thematischen Rahmen der "Fault tolerant Software" noch einmal zusammengefaßt:

Englisches Wort Deutsche Übersetzung Bedeutung
fault Fehler Programmierfehler / logischer Umsetzungsfehler
error Störung Defekte und Störungen, die im Betrieb auftreten
failure Ausfall Ausfall oder Versagen eines Systems

Tabelle 6-2: Begriffsübersicht.

Fehlertolerante Systeme und Echtzeitsysteme

Dieses Thema hat einen engen Bezug zu der Echtzeitthematik., Bei den hier hauptsächlich behandelten mobilen Systemen mit eingebetteten Rechnern gibt es eine Vielzahl an möglichen Versagensursachen, die mit dem Zeitverhalten und einer Bewegung in unbekanntem Terrain zu tun haben:

  • Funkverbindungen mit einer Kontrollstation können abreißen,
  • Sensoren können falsche Werte liefern,
  • ein niedriger Ladungszustand der Bordbatterien kann zu fehlerhaften Signalen der Prozessoren oder zu deren Ausfall führen, was sich im schlimmsten Fall in einem unkontrollierten Fahrverhalten äußern kann.

Rezepte für die Erstellung Fehler toleranter Software (Pattern for Fault tolerant Software)

Diese Liste ließe sich beliebig verlängern, analysieren und kategorisieren. Aus einer solchen Arbeit heraus, sind Rezepte / Muster / Pattern entstanden, wie Software gestaltet werden sollte, um ein Fehler tolerantes (Fault tolerant) System zu erhalten.

Ein sehr elementares Konzept ist beispielsweise KIS für "Keep It Simple" - mach es einfach. Da jede Codezeile wieder eine Quelle für Programmierfehler sein kann, wird bei Fehler kritischen Systemen angestrebt, den Codeumfang auf das Wesentliche zu beschränken und gerade nicht zu versuchen Schnittstellen für alle möglichen Eventualitäte anzubieten.

11 Architectural Patterns / Software-Architektur zu 11 Mustern zur Umsetzung Fehler toleranter Software

Überlegen Sie sich, welche Probleme bei der Regelung des Spiegels auftreten und wie diese durch Umsetzung der nachfolgenden Pattern eventuell behoben werden könnten:

Nr. Pattern (engl.) Muster (deu.) Zweck
1 Units Of Mitigation Elemente zur Abschwächung / Besänftigung Realisierte Strategien, um beispielsweise mit Überlastung umzugehen. Redundanz, Rollback, Recovery Blocks...
2 Correcting Audits Korrigierende Betriebsprüfung Überprüfung, ob Daten oder Strukturen korrumpiert sind und nötigenfalls deren Wiederherstellung.
3 Redundancy Redundanz Verfügbarkeit mehrerer Komponenten, die die gleichen Aufgaben übernehmen können.
4 Recovery Blocks Regenerierungs-Blöcke Zeitliches Hinternanderschalten von Blöcken, die die gleiche Aufgabe auf unterschiedliche Weise versuchen zu lösen. Versagt ein vorangehender Block, wird sein Nachfolger mit der gleichen Aufgabe betraut, versagt dieser, kommt dessen Nachfolger an die Reihe.
5 Minimize Human Intervention Minimierung menschlicher Einmischung Viele Fehler werden noch schlimmer, wenn durch Menschen in unsachgemäßer Weise interveniert wird.
6 Maximize Human Participation Maximierung menschlicher Anteilnahme Das System sollte Methoden bereithalten, die es Experten erlauben, an der Beseitigung von Fehlern mitzuwirken.
7 Maintenance Interface Wartungsschnittstelle Das System sollte eine Wartungsschnittstelle bereitstellen.
8 Someone in Charge Aufsichtsführung Zu jedem Modul und dessen Aktionen sollte es ein beaufsichtigendes Element geben.
9 Escalation Eskalation Wenn die üblichen Korrekturmethoden versagen, sollte ein Konzept für eine nächst höhere Eskalationsstufe greifen und danach eine weitere usw.
10 Fault Observer Fehler Beobachter Das System sollte Fehler automatisch korrigieren, jedoch sollte dies ggf. auch kenntlich gemacht werden. Mitgeschriebene Fehler sollten an passende Observer weitergeleitet werden.
11 Software Update Software Aktualisierung Entwerfe Dein System so, dass Software Updates vorgesehen sind. Se sollten im produktiven Betrieb möglich sein.

Tabelle 6-3: Software-Architektur-Muster für Fehler tolerante Software.

Weitere englische Begriffe

englisch deutsch
Reliability Ausfallsicherheit
Mitigation Abschwächung/Besänftigung
Recovery Erholung/Rettung
Tradeoff Austauschbeziehung
Mindset Denkweise
Coverage Absicherung
availability Betriebsbereitschaft

Tabelle 6-4: Weitere englische Begriffe.