kramann.info
© Guido Kramann

Login: Passwort:










COACH2
1 Planung
2 Architektur
3 Anzeige
4 EEPROM
5 I2C
..5.1 MasterSendByte
..5.2 MasterSend2Bytes
..5.3 MasterReceiveByte
..5.4 MasterReceive2Bytes
6 UART
7 DFT
8 FFT
9 Planung2
10 Klassen
..10.1 AnzeigeTaster
..10.2 RS232
..10.3 MotorServo
..10.4 Drehgeber
..10.5 Sensor
..10.6 Funk
11 Adaption
..11.1 Programmiertechnik
..11.2 Evoopt
12 Fuzzy
..12.1 Uebungsaufgabe
..12.2 Fuzzygroesse
..12.3 Fuzzyset
..12.4 Lookuptable
13 Skript
..13.1 Funkkorrektur
..13.2 Skriptsprachen
..13.3 Anforderungen
..13.4 Agentensysteme
..13.5 Implementierung
..13.6 Experimente
14 Gesamtkonzept
..14.1 Skripterweiterung
..14.2 Makroverhalten
67 Echtzeitsysteme
..67.1 Einfuehrung
....67.1.1 Echtzeit
....67.1.2 Korrektheit
....67.1.3 Hardware
....67.1.4 Ziele
....67.1.5 Synchronprogramm
..67.2 Threads
....67.2.1 Java
....67.2.2 Synchronisierung
..67.3 COACH
....67.3.1 Kaskadenregler
....67.3.2 Zeitebene1
....67.3.3 Zeitebene2
....67.3.4 Zeitebene3
....67.3.5 Puck
....67.3.6 Puckschwarm
..67.4 RTAIlab
....67.4.1 Slax
....67.4.1 USB_Stick
....67.4.2 Sinus
..67.5 Semaphor
....67.5.1 Laufkatze
....67.5.2 Java
....67.5.3 Semaphor
..67.6 Audio
....67.6.1 wav
....67.6.2 Linux
..67.7 Lookup
....67.7.1 Fuzzy
....67.7.2 PWM
..67.8 NeuronaleNetze
....67.8.1 Neuron
....67.8.2 Backpropagation
....67.8.3 Umsetzung
....67.8.4 Winkelerkennung
..67.9 Internetprogrammierung
....67.9.1 Codegenerierung
....67.9.2 PHP_Programmierung
....67.9.3 PHP_OOP
....67.9.4 Java
....67.9.5 UDP
..67.10 DFT
..67.11 FFT
..67.12 Zustandsmaschine
..67.13 Fuzzy
....67.13.1 Fuzzylogik
....67.13.2 FuzzyRegler
....67.13.3 Uebung9
....67.13.5 Softwareentwicklung
......67.13.5.1 AgileSoftwareentwicklung
......67.13.5.2 FuzzyRegler
......67.13.5.3 Uebung
....67.13.6 Umsetzung
......67.13.6.1 FuzzyRegler
......67.13.6.2 Simulation
......67.13.6.3 Optimierung
......67.13.6.4 Uebung
....67.13.7 Haengependel
......67.13.7.1 Haengependel
......67.13.7.2 Simulation
......67.13.7.3 FuzzyRegler
......67.13.7.4 Optimierer
......67.13.7.5 Genetisch
....67.13.8 Information
....67.13.9 Energie

67.12 State Machine / Endlicher Automat

67.12 (EN google-translate)

67.12 (PL google-translate)

Ein Programmablauf wird über verschiedene Zustände und den Bedingungen für die Übergänge zwischen diesen Zuständen definiert.

Zur praktischen und auch recht übersichtlichen Realisierung eignen sich besonderd swith-case-Strukturen.

loop()
{
  switch(ZUSTAND)
  {
    case 0:
        delay(1000);
        if(zaehler>=3)
            ZUSTAND=1;
        zaehler++;
    break;
    case 1:
        index=0; 
        ZUSTAND=2;
    break;
    case 2:
        messwerte[index]=sensor();
        index++;
        if(index>=N)
        {
            ZUSTAND=3;
            index=0;
        }
    break;
    case 3:
        sende(messwerte[index]);
        index++;
        if(index>=N)
        {
            ZUSTAND=0;
            zaehler=0;
        }
    break;
    default:
        sende("ERROR"); //unerleubter Zustand
    break;
  }
}

Code 67.12-1: Beispiel einer State Machine mittels swith-case-Struktur.

Alternativ können auch if- else if- else - Strukturen benutzt werden.

Das Verhalten innerhalb der unendlichen Hauptschleife eines eingebetteten Systems kann mit dieser Technik grundlegend unterschiedlich sein, je nachdem welcher Zustand gerade aktiv ist.

ul Niemals wird dadurch der Durchlauf der Endlosschleife blockiert. Die den Zuständen zugeordneten Vorgänge können auch in extra Funktionen stehen, um eine übersichtlichere Programmstruktur zu gewährleisten.

Für einen guten Überblick der Zustände und deren Übergangsbedingungen kann beispielsweise eine Übergangstabelle verwendet werden.

Diese enthält in der Horizontsalen sämtliche Zustände und in der Vertikalen sämtliche Bedingungen und zeigt auf, unter welchen Bedingungen ein Zustand in einen anderen übergeht.

- Warten Initialisierung Meßwerte aufnehmen Meßwerte senden
Drei Sekunden vorbei Initialisierung
Indices Null gesetzt Meßwerte aufnehmen
Maximale Anzahl erreicht Meßwerte senden
Ende erreicht Warten
Reset Warten Warten Warten Warten

Tabelle 67.12-1: Beispiel einer Übergangstabelle

Synonyme: Endlicher Automat, Zustandsmaschine, finite state machine.

Typ § Erläuterung Akzeptoren § Logische Verarbeitungsprozesse, akzeptieren Eingaben, signalisieren Ausgaben Transduktoren § führen in den Zuständen Aktionen aus, Übergänge können von den Zuständen selbst und äußeren Einflüssen abhängen. Typen von Zustandsmaschinen

Tabelle 67.12-2: