kramann.info
© Guido Kramann

Login: Passwort:










kramann.info
© Guido Kramann

Login: Passwort:




State Machine / Endlicher Automat

(EN google-translate)

(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 0-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 0-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.

Tabelle 0-2: Typen von Zustandsmaschinen

Tabelle 0-3: