state machine v Zustandsmaschine

Gast #116013
Hallo Jungs


Ich bin auf der Suche, nach einer Beschreibung einer solchen.
Wie ist sowas aufgebaut und welche Aufgaben, kann ich damit erledigen?
Wäre nett, wenn jemand einen Link hat.
Im WWW finde ich zwar viele Dokumente, die den Begriff benutzen, aber
niemand erklärt den Aufbau.
Ist wahrscheinlich alles Basic Know-How, aber mir leider unbekannt.

Danke
Gast #116014
Eine Zustandsmaschine (als Software) hat einfach verschiedene Zustände
und eine große Schleife mit vielen if-Abfragen, in denen steht, unter
welchen Bedingungen sie von einem Zustand in den nächsten wechseln
darf.
Der Zustand selber wird einfach in einer Variablen gespeichert.

Tank befüllen:

Zustand = Warten
do
  wenn Taste_Start = gedrückt und Tank nicht voll dann
      Wasser marsch und Zustand = befuellen.
  wenn Zustand = befuellen und Taste_Stop = gedrueckt,
      dann Zufluß abschalten und Zustand = Warten
  wenn Zustand = befuellen und Tank = voll, dann
      Zufluß abschalten und Zustand = voll.
loop


Das Ganze kann man auch noch grafisch darstellen, damit kann man schön
sehen wann was passieren darf und was nicht.

Benutzt wird das z.B. bei Steuerungen, bei Signalauswertung usw. usf.

Markus
Gast #116017
"Ich hatte mir das etwas komplizierter vorgestellt.
Aber ist ja auch schön, wenn mal was einfach ist."

Das ist relativ. In der Informatik wird eine Zustandsmaschine sehr wohl
formal mathematisch behandelt und dann ist das nicht mehr ganz so
trivial.
Es hängt halt davon ab, wofür Du das brauchst. Für eine
Controller-Anwendung ist das sicherlich nicht notwendig.
Gast #116018
Hallo,

man kann sowas auch in Hardware bauen. Haben wir vor 14 Jahren im
Studium noch gemacht und wurde Zustandsautomat genannt. Das Prinzip:
Mittels Flip-Flops oder anderen diskreten Speichern merkt sich die
Maschine den Zustand (als Bitset). Im Zustandsdiagramm sind die
zulässigen Übergänge definiert - diese werden mittels diskreten
Logikbausteinen geschaltet. Was dabei herauskommt lässt sich ähnlich
wie das Beispiel von Markus umgangssprachlich beschreiben:
    wenn Zustand=0100 und Eingang_x=1 und Eingang_y=0
        Wechsle in Zustand 0101

Über den Zustand kann man die Ausgänge beschalten, also z.B. eine
Anzeige oder einen Motor steuern. Seit es Mikrocontroller zu
erschwinglichen Preisen gibt, hat sich das Aufbauen mit diskreten
Logikbausteinen aber wohl erledigt...

Achim.
Gast #116019
Der diskrete Aufbau hat sich garantiert nicht erledigt. Was meinst Du
wozu die ganzen programmierbaren Logikbausteine gut sind?
Allerdings werden für "langsame" Aufgaben heute sicher
Mikrocontroller eingesetzt, wo früher diskrete Logik oder vielleicht
ein PAL unumgänglich waren.
Gast #116020
Das ist eine gute Methode, um in VHDL "Programme" auf einem FPGA zu
programmieren.

Ein gutes State-Machine-Beispiel für Mikrokontroller (AVR) ist das
Programm, das auf dem AVR-Butterfly-Board läuft. Sourcen sind frei
verfügbar.

jörn

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.