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: