03.01.2013 Aufrufe

Zustandsautomat (endlicher Automat) ein Objekt, dessen Verhalten ...

Zustandsautomat (endlicher Automat) ein Objekt, dessen Verhalten ...

Zustandsautomat (endlicher Automat) ein Objekt, dessen Verhalten ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Zustandsautomat</strong>en<br />

<strong>Zustandsautomat</strong> (<strong>endlicher</strong> <strong>Automat</strong>)<br />

<strong>ein</strong> <strong>Objekt</strong>, <strong>dessen</strong> <strong>Verhalten</strong> nicht nur durch die momentanen Eingaben,<br />

sondern auch durch die vergangenen bestimmt wird.<br />

Besteht aus <strong>ein</strong>er endlichen Anzahl innerer Konfigurationen (Zustände).<br />

Zustand: Informationen, die sich aus bisherigen Eingaben ergeben haben<br />

und die benötigt werden, um die Reaktion auf noch folgende Eingaben zu<br />

bestimmen.<br />

Erstellung <strong>ein</strong>es <strong>Automat</strong>en<br />

Beispiel: Stellen der Uhrzeit <strong>ein</strong>er Digitaluhr mit 2 Stellknöpfen.<br />

Knopf 1: Stellmodus (Normalzeit, h stellen, m stellen, s stellen) toggeln<br />

Knopf 2: Einstellen der Zeit gemäß Modus<br />

Schritt 1: Zustände und Ein- und Ausgaben identifizieren<br />

Schritt 2: Übergänge festlegen<br />

<strong>Zustandsautomat</strong>en<br />

09:17:46<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/1<br />

Schritt 1: Zustände, Eingaben und Ausgaben identifizieren<br />

Zustände beim Stellen der Digitaluhr:<br />

Zustand Normalzeit: Nach Einlegen der Batterie (Startsignal)<br />

Zustand Stunden stellen<br />

Zustand Minuten stellen<br />

Zustand Sekunden stellen<br />

Mögliche Ereignisse:<br />

Ereignis Startsignal: Wenn Batterie <strong>ein</strong>gelegt wird<br />

Ereignis Knopf 1 gedrückt<br />

Ereignis Knopf 2 gedrückt<br />

Mögliche Ausgaben:<br />

Ausgabe Stunden blinken (Zustandsanzeige für Stellen Stunde)<br />

Ausgabe Minuten blinken<br />

Ausgabe Sekunden blinken<br />

Ausgabe Stunden erhöhen (Um 1 erhöhte Anzeige der Stunden)<br />

Ausgabe Minuten erhöhen<br />

Ausgabe Sekunden stellen (Anzeige von 00 für Sekunden)<br />

Ausgabe Initialisierung (Anzeige von 00:00:00)<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/2


<strong>Zustandsautomat</strong>en<br />

Schritt 2: Übergänge festlegen<br />

Wie Übergänge zwischen den Zuständen in Abhängigkeit von Eingaben<br />

oder Ereignissen aussehen,<br />

welche Ausgaben oder Aktionen ausgelöst werden.<br />

Wenn Startsignal auftritt, dann Übergang in Zustand Normalzeit und<br />

Durchführung der Aktion Initialisierung.<br />

Wenn Knopf 1 gedrückt wird und Uhr im Zustand Normalzeit ist, dann<br />

Aktion Blinken ausführen und Zustand Stunden stellen <strong>ein</strong>nehmen.<br />

...<br />

<strong>Zustandsautomat</strong>en<br />

Zustand<br />

E/A<br />

Anfangszustand<br />

(Pseudozustand)<br />

Zustandsübergang<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/3<br />

Eingabe,<br />

Ereignis<br />

Ergebnis,<br />

Durchzuf. Aktion<br />

Endzustand<br />

(Pseudozustand)<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/4


Knopf 2<br />

gedrückt/<br />

Stunden<br />

erhöhen<br />

<strong>Zustandsautomat</strong>en<br />

Beispiel Zustandsdiagramm<br />

Knopf 1 gedrückt/<br />

Stunden blinken<br />

Std.<br />

stellen<br />

Knopf 1 gedrückt/<br />

Minuten blinken<br />

<strong>Zustandsautomat</strong>en<br />

Normalzeit<br />

Min.<br />

stellen<br />

Zustandstabelle<br />

Nur wenn Diagramme zu unübersichtlich<br />

Aktueller<br />

Zustand<br />

Normalzeit<br />

Stunden stellen<br />

Minuten stellen<br />

Sekunden<br />

stellen<br />

Start<br />

Kompakte Darstellung<br />

Start/Initialisierung<br />

Knopf 1 gedrückt/<br />

Normalzeit anzeigen<br />

Sek.<br />

stellen<br />

Knopf 1 gedrückt/<br />

Sekunden blinken<br />

Knopf 2<br />

gedrückt/<br />

Minuten<br />

erhöhen<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/5<br />

Ereignis<br />

Knopf 1 gedrückt<br />

Knopf 1 gedrückt<br />

Knopf 2 gedrückt<br />

Knopf 1 gedrückt<br />

Knopf 2 gedrückt<br />

Knopf 1 gedrückt<br />

Knopf 2 gedrückt<br />

Aktion<br />

Initialisierung<br />

Stunden blinken<br />

Minuten blinken<br />

Stunden<br />

erhöhen<br />

Sekunden<br />

blinken<br />

Minuten erhöhen<br />

Normalzeit<br />

anzeigen<br />

Sekunden<br />

stellen<br />

Folgezustand<br />

Normalzeit<br />

Stunden stellen<br />

Minuten stellen<br />

Stunden stellen<br />

Sekunden<br />

stellen<br />

Minuten stellen<br />

Normalzeit<br />

Sekunden<br />

stellen<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/6<br />

Knopf 2<br />

gedrückt/<br />

Sekunden<br />

stellen


<strong>Zustandsautomat</strong>en<br />

Zustandsmatrix 1<br />

Nur wenn Diagramme zu unübersichtlich<br />

Ereignis<br />

Zustand<br />

Start<br />

Normalzeit<br />

Stunden stellen<br />

Minuten stellen<br />

Sekunden<br />

stellen<br />

Start<br />

Initialisierung<br />

Normalzeit<br />

<strong>Zustandsautomat</strong>en<br />

Knopf 1<br />

gedrückt<br />

Stunden blinken<br />

Stunden stellen<br />

Minuten blinken<br />

Minuten stellen<br />

Sekunden<br />

blinken<br />

Sekunden<br />

stellen<br />

Normalz. anzeig.<br />

Normalzeit<br />

Zustandsmatrix 2<br />

Nur wenn Diagramme zu unübersichtlich<br />

Zu<br />

Zustand<br />

Von Zustand<br />

Start<br />

Normalzeit<br />

Stunden stellen<br />

Minuten stellen<br />

Sekunden stellen<br />

Normalzeit<br />

Start<br />

Initialisierung<br />

Knopf 1 gedrückt<br />

Normalzeit<br />

anzeigen<br />

Knopf 2<br />

gedrückt<br />

Stunden<br />

erhöhen<br />

Stunden stellen<br />

Minuten erhöhen<br />

Minuten stellen<br />

Sekunden<br />

stellen<br />

Sekunden<br />

stellen<br />

Aktion<br />

Folgezustand<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/7<br />

Stunden stellen<br />

Knopf 1 gedrückt<br />

Stunden blinken<br />

Knopf 2 gedrückt<br />

Stunden erhöhen<br />

Minuten stellen<br />

Knopf 1 gedrückt<br />

Minuten blinken<br />

Knopf 2 gedrückt<br />

Minuten stellen<br />

Ereignis<br />

Aktion<br />

Sekunden<br />

stellen<br />

Knopf 1 gedrückt<br />

Sekunden<br />

blinken<br />

Knopf 2 gedrückt<br />

Sekunden stellen<br />

Vorteil: alle Kombinationen Zustand/Ereignis: Vollständigkeit prüfbar<br />

Nachteil: dünn besetzt => Vorlesung Platzbedarf<br />

<strong>Automat</strong>isierungsprojekte Seite 4/8


<strong>Zustandsautomat</strong>en<br />

<strong>Zustandsautomat</strong> mit Endzuständen<br />

Beispiel: Roboter-Kommando erkennen<br />

Drehgelenk<br />

Hand<br />

Beugegelenk<br />

Hand<br />

Beugegelenk<br />

Elle<br />

Beugegelenk<br />

Schulter<br />

Greifgelenk<br />

Finger<br />

o<br />

o<br />

o<br />

Drehgelenk<br />

Schulter<br />

<strong>Zustandsautomat</strong>en<br />

Steuerkommandos<br />

BSA+/-xxx : Beugen Schulter Absolut (Ausgabe: 1)<br />

BSR+/-xxx : Beugen Schulter Relativ (Ausgabe: 2)<br />

RSA+/-xxx : Rotieren Schulter Absolut (Ausgabe: 3)<br />

RSR+/-xxx : Rotieren Schulter Relativ (Ausgabe: 4)<br />

...<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/9<br />

<strong>Zustandsautomat</strong> mit Endzuständen „B“ Start „R“<br />

Beispiel: Roboter-Kommando erkennen<br />

anderes<br />

Beugen Zeichen Rotieren<br />

anderes anderes<br />

„S“ Zeichen<br />

„S“<br />

Steuerkommandos<br />

Zeichen<br />

anderes<br />

anderes<br />

Schulter Zeichen<br />

Zeichen Schulter<br />

BSA+/-xxx :<br />

Falsches Kommando<br />

„R“/2 „A“/3<br />

Beugen Schulter Absolut (Ausgabe: 1) „A“/1<br />

„R“/4<br />

BSR+/-xxx :<br />

Absolut<br />

Relativ<br />

Beugen Schulter Relativ (Ausgabe: 2)<br />

„-“/- „+“<br />

RSA+/-xxx :<br />

Rotieren Schulter Absolut (Ausgabe: 3)<br />

RSR+/-xxx :<br />

Rotieren Schulter Relativ (Ausgabe: 4)<br />

„+“<br />

Vorzei-<br />

Ziffer/ chen<br />

Ziffer Ziffer/Ziffer<br />

„-“/anderes<br />

Zeichen<br />

Ziffer/Ziffer<br />

3 Endzustände (2 Fehlerzustände)<br />

anderes<br />

Zeichen<br />

anderes<br />

Zeichen<br />

1. Ziffer<br />

Ziffer/Ziffer<br />

2. Ziffer<br />

Ziffer/Ziffer<br />

anderes<br />

Zeichen<br />

3. Ziffer<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/10<br />

Falscher Winkel


<strong>Zustandsautomat</strong>en<br />

Mealy- und Moore-<strong>Automat</strong>en<br />

Mealy-<strong>Automat</strong>:<br />

Ausgaben bzw. Aktionen sind an Zustandsübergänge gekoppelt.<br />

• Zustände werden für Zeitintervall <strong>ein</strong>genommen.<br />

• Übergänge finden zu Zeitpunkten statt.<br />

• Ausgaben zu diskreten Zeitpunkten, assoziiert mit Übergängen.<br />

Mathematische Beschreibung:<br />

Sechstupel M = (Q, Σ, ∆, δ, λ, q 0 )<br />

Q: endliche Menge von Zuständen<br />

Σ: endliches Eingabealphabet (Menge der Ereignisse)<br />

∆: Ausgabealphabet (Menge der Aktionen)<br />

δ: Übergangsfunktion (Transition) für Abbildung Q x Σ -> Q<br />

δ(q,a) ist <strong>ein</strong> (Folge-)Zust. für jeden Zust. q und jedes Eingabesymbol a<br />

q 0 : Anfangszustand (Statrzustand)<br />

λ: <strong>ein</strong>e Abbildung von Q x Σ -> ∆<br />

λ(q,a) liefert Ausgabe (Aktion) bei Übergang aus q mit Eingabe a<br />

<strong>Zustandsautomat</strong>en<br />

Mealy- und Moore-<strong>Automat</strong>en<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/11<br />

Moore-<strong>Automat</strong>:<br />

Ausgaben bzw. Aktionen sind an Zustände gebunden.<br />

�Aktivitäten (UML):<br />

Aktivität beginnt, wenn in den Zustand <strong>ein</strong>getreten wird<br />

Aktivität endet, wenn Zustand verlassen wird<br />

Notation am Beispiel Alarmanlage<br />

Alarm<br />

Bewegungsmelder<br />

Voralarm<br />

ausschalten<br />

Voralarm<br />

do/ Sicherungsmaßnahmen<br />

Ausgeschaltet<br />

Einschalten Ausschalten<br />

Aktiv<br />

do/ Vorbeugende Maßnahme<br />

Alarm<br />

Glasbruchmelder<br />

Alarm<br />

ausschalten<br />

Alarm<br />

Glasbruchmelder<br />

Alarm<br />

do/ Alarmmaßnahmen<br />

Mathematische Definition wie Mealy, außer Abbildung λ: Abbildung von Q<br />

nach ∆, spezifiziert die mit Zustand verknüpfte Ausgabe.<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/12


<strong>Zustandsautomat</strong>en<br />

Mealy- und Moore-<strong>Automat</strong>en<br />

Voraussetzung Moore:<br />

Im jeweiligen Zustand genau <strong>ein</strong>e Aktivität für die Zeitdauer des Zustandes<br />

Stoppuhr-Beispiel nicht direkt als Moore-<strong>Automat</strong> darstellbar<br />

Äquivalenz:<br />

Mealy- und Moore-<strong>Automat</strong>en sind äquivalent und können jeweils in<strong>ein</strong>ander<br />

überführt werden:<br />

Moore -> Mealy: An jeden Zustandsübergang wird die Ausgabe gekoppelt,<br />

die vom Zustand generiert wird.<br />

<strong>Zustandsautomat</strong>en<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/13<br />

Beispiel Drehkranversuch im <strong>Automat</strong>isierungslabor<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/14


<strong>Zustandsautomat</strong>en<br />

Beispiel Drehkranversuch im <strong>Automat</strong>isierungslabor<br />

<strong>Zustandsautomat</strong>en<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/15<br />

Beispiel Drehkranversuch im <strong>Automat</strong>isierungslabor<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/16


<strong>Zustandsautomat</strong>en<br />

Kran<br />

anheben<br />

Kran<br />

oben<br />

Beispiel Drehkranversuch im <strong>Automat</strong>isierungslabor<br />

<strong>Zustandsautomat</strong>en<br />

Kran anheben<br />

Start<br />

Kran absenken<br />

Werkstück anheben<br />

Kran rechts drehen<br />

Werkstück absenken<br />

Werkstück ablegen<br />

Fehler<br />

Fehleranzeige<br />

Kran nach<br />

links drehen<br />

Not-Aus<br />

Aufnahmeposition<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/17<br />

Start<br />

10 Sek.<br />

abgelaufen<br />

Starttaste<br />

Zustand Aktivität do/<br />

Kran nach links drehen<br />

Werkstück aufnehmen<br />

Kran<br />

absenken<br />

Fehleranzeige<br />

Kran auf<br />

Kran links<br />

Grüne Lampe an<br />

Grüne Lampe aus; Kran ab<br />

Vakuum an; warte 500 ms<br />

Kran auf<br />

Kran rechts<br />

Kran ab<br />

Vakuum aus<br />

Vakuum aus; Kran auf<br />

Weisse Lampe blinken<br />

Kran<br />

unten<br />

Kran<br />

oben<br />

K<strong>ein</strong><br />

Vakuum<br />

Werkstück<br />

aufnehmen<br />

K<strong>ein</strong><br />

Vakuum<br />

Fehler<br />

Werkstück<br />

ablegen<br />

Not-Aus<br />

Vakuum Werkstück<br />

anheben<br />

Kran<br />

unten<br />

Kran<br />

oben<br />

Kran nach<br />

rechts drehen<br />

Ablageposition<br />

Werkstück<br />

absenken<br />

Not-Aus-Aktivität<br />

Diagramm des Drehkran-Versuchs<br />

im <strong>Automat</strong>isierungslabor<br />

aus Platzgründen<br />

nicht in normgerechter Notation:<br />

Darstellung als Moore-<strong>Automat</strong>, aber<br />

Aktivitäten sind bis auf „Fehleranzeige“<br />

eigentlich Aktionen.<br />

Kästen nicht abgerundet.<br />

Zustandsbezeichnungen wie Aktivitätsbezeichnungen.<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/18


<strong>Zustandsautomat</strong>en<br />

Zustandstabelle für den Drehkranversuch im <strong>Automat</strong>isierungslabor<br />

Akt. Zustand<br />

Kran anheben<br />

Kran nach links<br />

drehen<br />

Start<br />

Kran absenken<br />

Werkstück<br />

aufnehmen<br />

Werkstück<br />

anheben<br />

Kran rechts drehen<br />

Werkstück<br />

absenken<br />

Werkstück ablegen<br />

Fehler<br />

Fehleranzeige<br />

Ereignis<br />

Kran oben<br />

Aufnahmeposition<br />

Starttaste<br />

Kran unten<br />

Vakuum<br />

K<strong>ein</strong> Vakuum<br />

Kran oben<br />

Ablageposition<br />

Kran unten<br />

K<strong>ein</strong> Vakuum<br />

Kran oben<br />

10 s abgelaufen<br />

Aktion<br />

Kran auf<br />

Kran links<br />

Grüne Lampe an<br />

Grüne Lampe aus;<br />

Kran ab<br />

Vakuum an; warte<br />

500 ms<br />

Kran auf<br />

Kran rechts<br />

Kran ab<br />

Vakuum aus<br />

Vakuum aus; Kran<br />

auf<br />

Weisse Lampe<br />

blinken<br />

Folgezustand<br />

Kran nach links<br />

drehen<br />

Kran absenken<br />

Werkstück<br />

aufnehmen<br />

Werkstück<br />

anheben<br />

Fehler<br />

Kran rechts drehen<br />

Werkstück<br />

absenken<br />

Werkstück ablegen<br />

Kran anheben<br />

Fehleranzeige<br />

Kran anheben<br />

Zustandsmatrizen auf <strong>ein</strong>em Blatt nicht darstellbar (11x12x2 bzw. 11x11x2 Elemente)<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/19<br />

<strong>Zustandsautomat</strong>en<br />

Harel-<strong>Automat</strong>en<br />

Konzeptionelle Erweiterung der <strong>Zustandsautomat</strong>en:<br />

• Hybride <strong>Zustandsautomat</strong>en<br />

Kombination von Mealy- und Moore-<strong>Automat</strong>en<br />

• Bedingte Zustandsübergänge<br />

Auslösung durch Ereignis in Kombination mit <strong>ein</strong>em Wächter<br />

(Bedingung)<br />

• Hierarchische <strong>Zustandsautomat</strong>en<br />

Schachtelung von Zuständen (Unterzustände, Substates)<br />

• Zustände mit Gedächtnis<br />

Rückkehr in den zuletzt <strong>ein</strong>genommenen Unterzustand <strong>ein</strong>es<br />

Oberzustandes<br />

• Nebenläufige Zustände<br />

Ein Oberzustand besteht aus Unterzuständen, in denen sich das System<br />

gleichzeitig befindet.<br />

Start<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/20


<strong>Zustandsautomat</strong>en<br />

Harel-<strong>Automat</strong>en<br />

UML-Notation<br />

Zustand 1 Ereignis 1<br />

Zustand 2<br />

do/ Aktivität<br />

Zustand 3<br />

Entry / Aktion 3<br />

Exit / Aktion 4<br />

Ereignis 4<br />

Anfangszustand<br />

<strong>Zustandsautomat</strong>en<br />

Harel-<strong>Automat</strong>en<br />

Ereignisbezeichner<br />

Ereignis 3 [Wächter]<br />

Zustandsübergang<br />

bzw. Transition<br />

Zustand 4<br />

Implizites<br />

Ereignis<br />

Ereignis 2 / Aktion 2<br />

Moore<br />

Mealy<br />

Endzustand Bedingter Übergang (guarded transition)<br />

Zustandsübergang findet nur dann statt, wenn zum<br />

Eintrittszeitpunkt des Ereignisses die Wächterbedingung zutrifft.<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/21<br />

Kl<strong>ein</strong>es Beispiel für bedingten Übergang: Parkkarten-Zahlautomat<br />

Bereit<br />

Wartet auf Geld<br />

Geld <strong>ein</strong>geworfen [reicht aus] / Karte ausgeben<br />

Karte <strong>ein</strong>geschoben / Betrag anzeigen<br />

Geld <strong>ein</strong>geworfen [reicht nicht aus] /<br />

Restbetrag anzeigen<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/22


Harel-<strong>Automat</strong>en: Aktivitäten und Aktionen<br />

Aktion:<br />

Mit Zustandsübergang verbunden<br />

Sofortige Ausführung<br />

K<strong>ein</strong> Zeitintervall (idealisiert)<br />

Aktivität:<br />

Mit Zustand verbunden<br />

Zeitintervall<br />

Vorzeitig unterbrechbar<br />

Aktionen in Zuständen:<br />

Entry action: Beim Übergang in den Zustand (äquivalent zur B<strong>ein</strong>haltung der<br />

Aktion in allen Transitionen in diesen Zustand)<br />

Exit action: Beim Übergang aus dem Zustand (äquivalent zur B<strong>ein</strong>haltung der<br />

Aktion in allen Transitionen aus diesem Zustand)<br />

Ereignis 1<br />

Ereignis 2<br />

<strong>Zustandsautomat</strong>en<br />

Zustand 3<br />

do/ Aktivität<br />

entry / Aktion 1<br />

exit / Aktion 2<br />

<strong>Zustandsautomat</strong>en<br />

Ereignis 3<br />

Ereignis 4<br />

äquivalent<br />

Ereignis 1 / Aktion 1<br />

Ereignis 2 / Aktion 1<br />

Zustand 3<br />

do/ Aktivität<br />

Ereignis 3 / Aktion 2<br />

Ereignis 4 / Aktion 2<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/23<br />

Beispielhafte Umsetzung <strong>ein</strong>es <strong>Automat</strong>en im <strong>Automat</strong>isierungslabor in AWL<br />

Einfacher <strong>Automat</strong>:<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/24


<strong>Zustandsautomat</strong>en<br />

<strong>Zustandsautomat</strong>en<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/25<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/26


<strong>Zustandsautomat</strong>en<br />

<strong>Zustandsautomat</strong>en<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/27<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/28


<strong>Zustandsautomat</strong>en<br />

<strong>Zustandsautomat</strong>en<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/29<br />

Harel-<strong>Automat</strong>en: Hierarchische <strong>Automat</strong>en<br />

A<br />

C<br />

a<br />

b<br />

b<br />

c<br />

d<br />

B<br />

Superstate Substate<br />

Ohne Hierarchie Mit Hierarchie<br />

D<br />

A<br />

C<br />

a<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/30<br />

b<br />

c<br />

d<br />

B


<strong>Zustandsautomat</strong>en<br />

Harel-<strong>Automat</strong>en:<br />

Hierarchische <strong>Automat</strong>en<br />

Beispiel<br />

Roboter-Kommando Erkennung<br />

anderes<br />

Zeichen<br />

Falsches Kommando<br />

Falscher Winkel<br />

<strong>Zustandsautomat</strong>en<br />

anderes<br />

Zeichen<br />

Schulter<br />

„B“<br />

Start<br />

„R“<br />

Beugen<br />

Rotieren<br />

„S“ „S“<br />

„A“/1<br />

Harel-<strong>Automat</strong>en: Hierarchische <strong>Automat</strong>en<br />

UML-Regeln:<br />

„R“/2<br />

1. Ziffer<br />

2. Ziffer<br />

„A“/3<br />

Schulter<br />

„R“/4<br />

Absolut<br />

Relativ<br />

„-“/- „+“<br />

„+“<br />

„-“/-<br />

Ziffer/<br />

Ziffer<br />

Vorzeichen<br />

Ziffer/Ziffer<br />

Ziffer/Ziffer<br />

Ziffer/Ziffer<br />

Ziffer/Ziffer<br />

Vorlesung <strong>Automat</strong>isierungsprojekte 3. Ziffer Seite 4/31<br />

• Jede Verf<strong>ein</strong>erung besitzt genau <strong>ein</strong>en Anfangszustand.<br />

• Ein Zustandsübergang in <strong>ein</strong>en verf<strong>ein</strong>erten Zustand entspricht dem<br />

Zustandsübergang in den Anfangszustand des verf<strong>ein</strong>erten Zustands.<br />

• Wird <strong>ein</strong> verf<strong>ein</strong>erter Zustand durch <strong>ein</strong>en Zustandsübergang verlassen,<br />

dann wird jeder Unterzustand –egal auf welcher Verf<strong>ein</strong>erungsstufeverlassen<br />

und es werden die entsprechenden exit-Aktionen durchgeführt.<br />

• Wird <strong>ein</strong> Zustand mit <strong>ein</strong>em rekursiven Zustandsübergang verf<strong>ein</strong>ert, dann<br />

wird bei <strong>ein</strong>em erneuten Zustands<strong>ein</strong>tritt der Anfangszustand <strong>ein</strong>genommen<br />

und die entry-Aktion durchgeführt.<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/32


<strong>Zustandsautomat</strong>en<br />

Harel-<strong>Automat</strong>en: Hierarchische <strong>Automat</strong>en<br />

Top-Down-Entwicklung des Zustandsmodells:<br />

Modellierung von Oberzuständen („Superstates“)<br />

Beispiel: Modellierung Uhr stellen<br />

Erweiterung um Datumsanzeige Knopf 3: Datum/Uhrzeit 09:17:46 DI:30:11<br />

Knopf 3 gedrückt /<br />

Datum anzeigen<br />

Variante 1 Variante 2<br />

Uhrzeit<br />

Datum<br />

Knopf 3 gedrückt /<br />

Normalzeit anzeigen<br />

Von jedem Unterzustand in Uhrzeit wird in<br />

den Anfangszustand von Datum übergegangen<br />

und umgekehrt.<br />

<strong>Zustandsautomat</strong>en<br />

Knopf 3 gedrückt /<br />

Datum anzeigen<br />

Uhrzeit<br />

Datum<br />

Knopf 3 gedrückt /<br />

Normalzeit anzeigen<br />

Übergang von Uhrzeit nach Datum nur aus<br />

<strong>ein</strong>em bestimmten Unterzustand von Uhrzeit,<br />

desgleichen für Datum nach Uhrzeit.<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/33<br />

Harel-<strong>Automat</strong>en: Hierarchische <strong>Automat</strong>en<br />

Erweiterung „Uhr stellen“<br />

Knopf 2<br />

gedrückt/<br />

Stunden<br />

erhöhen<br />

Knopf 2<br />

gedrückt/<br />

Wo.-Tag<br />

erhöhen<br />

Knopf 1 gedrückt/<br />

Stunden blinken<br />

Std.<br />

stellen<br />

Knopf 1 gedrückt/<br />

Minuten blinken<br />

Knopf 1 gedrückt/<br />

Wo.-Tag blinken<br />

Wo.-Tag<br />

stellen<br />

Normalzeit<br />

Knopf 2 gedrückt /<br />

Minuten erhöhen<br />

Min.<br />

stellen<br />

Datum<br />

Knopf 2 gedrückt /<br />

Tag erhöhen<br />

Tag<br />

stellen<br />

Start/Initialisierung<br />

Knopf 1 gedrückt/<br />

Normalzeit anzeigen<br />

Sek.<br />

stellen<br />

Knopf 1 gedrückt/<br />

Sekunden blinken<br />

Monat<br />

stellen<br />

Knopf 2<br />

gedrückt/<br />

Sekunden<br />

stellen<br />

Knopf 3 gedrückt / Datum anzeigen Knopf 3 gedrückt / Normalzeit anzeigen<br />

Knopf 1 gedrückt/<br />

Tag blinken<br />

Knopf 1 gedrückt/<br />

Datum anzeigen<br />

Knopf 1 gedrückt/<br />

Monat blinken<br />

Knopf 2<br />

gedrückt/<br />

Monat<br />

erhöhen<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/34


<strong>Zustandsautomat</strong>en<br />

Harel-<strong>Automat</strong>en: Hierarchische <strong>Automat</strong>en<br />

Top-Down-Entwicklung des Zustandsmodells:<br />

Modellierung von Oberzuständen („Superstates“)<br />

„Stubbed transition“<br />

1. Übergang in anderen Oberzustand nur aus bestimmten<br />

Unterzuständen des aktuellen Oberzustands<br />

2. Übergang aus dem aktuellen Oberzustand nur in<br />

bestimmte Unterzustände des neuen Oberzustands<br />

Beispiel Roboter-Kommando Erkennung<br />

Kommando<br />

„A“/1 „A“/3 „R“/2 „R“/4<br />

<strong>Zustandsautomat</strong>en<br />

Winkel<br />

Anderes<br />

Zeichen<br />

Anderes<br />

Zeichen<br />

Falsches Kommando<br />

Falscher Winkel<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/35<br />

Harel-<strong>Automat</strong>en: Hierarchische <strong>Automat</strong>en<br />

Erlaubte Zustandsübergänge<br />

Zwischen Zuständen gleicher Ebene<br />

z.B. von D nach E<br />

In <strong>ein</strong>en Unterzustand,<br />

z.B. von A nach D<br />

Aus <strong>ein</strong>em Unterzustand,<br />

z.B. von E nach A<br />

In <strong>ein</strong>en Oberzustand,<br />

z.B. von A nach B<br />

(<strong>dessen</strong> Anfangszustand C)<br />

A<br />

a<br />

b<br />

c<br />

C<br />

D<br />

f<br />

d<br />

E<br />

Aus <strong>ein</strong>em Oberzustand,<br />

z.B. von B nach A<br />

e<br />

Bei Ereignis b wird jeder der Unterzustände C, D oder E<br />

verlassen.<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/36<br />

B


<strong>Zustandsautomat</strong>en<br />

Hierarchische <strong>Automat</strong>en: Einfaches Beispiel<br />

Drehkran (Ausschnitt)<br />

Kran anheben<br />

<strong>Zustandsautomat</strong>en<br />

Beispiel<br />

T4: 10s<br />

T6: 0.5s<br />

Fehler<br />

Kran oben<br />

Fehleranzeige<br />

Weisse Lampe an<br />

T5: 0.5s<br />

Weisse Lampe aus<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/37<br />

Harel-<strong>Automat</strong>en: Zustände mit Gedächtnis<br />

Eigenschaft:<br />

Bei Übergang in <strong>ein</strong>en Oberzustand mit Unterzuständen<br />

Rückkehr in den zuletzt <strong>ein</strong>genommenen Zustand.<br />

B<br />

A<br />

a<br />

b<br />

H<br />

C<br />

c<br />

d D<br />

Gedächtnis-<br />

Markierung (History)<br />

„a“ erstmals: Übergang in Unterzustand „C“<br />

Dann „c“: Übergang in Unterzustand „D“<br />

Dann „b“: Übergang in Zustand „A“<br />

Dann „a“: Übergang in Unterzustand „D“ (letzter Unterzustand<br />

von B)<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/38


<strong>Zustandsautomat</strong>en<br />

Harel-<strong>Automat</strong>en: Nebenläufige Zustände<br />

Eigenschaft:<br />

Ein Oberzustand kann aus Unterzuständen bestehen, in denen sich das<br />

System gleichzeitig befindet.<br />

Beispiel<br />

Y<br />

A D<br />

B<br />

a<br />

c<br />

(in G)<br />

C<br />

e<br />

E<br />

G<br />

Nebenläufigkeitsmarkierung<br />

Oberzustand Y mit nebenläufigen Komponenten A und D<br />

Eintritt in Y: System befindet sich gleichzeitig in B und F: (B,F).<br />

„a“: Simultane Übergänge B nach C und F nach G: (B,F) -> (C,G).<br />

„b“: (B,F) -> (B,E)<br />

„c“: (in G) Übergang nur, wenn Komponente D in Zustand G.<br />

Synchr.<br />

<strong>Zustandsautomat</strong>en<br />

Beispiel DGS<br />

Wartephase<br />

Suchphase<br />

entry/ ok anzeigen<br />

do/ a/c suchen<br />

Flugzeug det.<br />

[nicht gemeldeter Typ]<br />

Flugzeugtypfehler<br />

Entry/ Fehlermeldung<br />

do/ Stop anzeigen<br />

Exit/Display Reset<br />

Fehlerquittierung<br />

Init<br />

b<br />

d<br />

a<br />

F<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/39<br />

Initialisierung<br />

entry/ Display Reset<br />

do/ Parameter laden<br />

exit/ a/c-Typ anzeigen<br />

Flugzeug det. [gemeldeter Typ]<br />

t > sched.arr. time<br />

Überfälligfehler<br />

Entry/ Fehlermeldung<br />

do/ Stop anzeigen<br />

Exit/Display Reset<br />

Parameter: a/c-Modell, sched. arr. Time, Gate Modell<br />

Trackingfehler<br />

v Flugzeug < 0<br />

Parameter<br />

geladen<br />

Markenerkennung ok<br />

Selbsttest<br />

Trackingphase<br />

do/ Pos messen<br />

und anzeigen;<br />

v messen;<br />

Status anzeigen<br />

(Stop, too short,<br />

too far)<br />

exit/ on-block<br />

Meldung, Bild<br />

a/c lost<br />

Pushback-Detektion<br />

do/ Pos. messen;<br />

v messen<br />

Exit/ Pushback melden<br />

Markenerkennung<br />

zu schlecht<br />

Selbsttestfehler<br />

Chocks on<br />

On-block phase<br />

do/ Stop<br />

anzeigen;<br />

Pos.messen;<br />

v messen;<br />

exit/ Display Reset<br />

Chocks off<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/40


<strong>Zustandsautomat</strong>en<br />

Übung 1<br />

U1: Zeichne das Zustandsdiagramm des Stapelmagazin-Versuches des<br />

<strong>Automat</strong>isierungslabors.<br />

U2: Entwickle Stoppuhr mit zwei Knöpfen, die nicht gleichzeitig gedrückt<br />

werden können. Die Stoppuhr soll folgende Funktionen haben.<br />

1. Stoppuhr kann <strong>ein</strong>- und ausgeschaltet werden<br />

2. Stoppuhr kann gestartet und gestoppt werden. Nach Stopp wird die<br />

zwischen Start und Stopp vergangene Zeit angezeigt.<br />

3. Nach dem Start kann <strong>ein</strong>e Zwischenzeit genommen werden, während<br />

die Uhr im Hintergrund weiterläuft. Dann kann entweder die<br />

Zwischenzeit oder die seit Start abgelaufene Gesamtzeit angezeigt<br />

werden. Ferner kann die im Hintergrund weiterlaufende Zeit gestoppt<br />

werden, ohne dass sich die Anzeige ändert.<br />

4. Die zwischen Start und Stopp vergangene Zeit kann bei gestoppter Uhr<br />

und bei Anzeige der Gesamtzeit auf Null zurückgesetzt werden.<br />

U3: Entwirf die Zustandsübergangstabelle und die beiden Arten der<br />

Zustandsmatrizen für das Zustandsübergangsdiagramm aus U1.<br />

<strong>Zustandsautomat</strong>en<br />

Übung 1<br />

Lösung:<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/41<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/42


<strong>Zustandsautomat</strong>en<br />

Übung 2<br />

Modellieren Sie folgende ver<strong>ein</strong>fachte Aufzugsteuerung als Harel-<strong>Automat</strong>:<br />

Der Aufzug fährt zwischen zwei Stockwerken S1 und S2. Dort gibt es jeweils<br />

<strong>ein</strong>en Druckknopf D1 und D2, mit dem der Aufzug angefordert werden kann<br />

sowie <strong>ein</strong>e Tür T1 bzw. T2 zum Betreten des Aufzugs mit jeweils <strong>ein</strong>er<br />

Lichtschranke L1 und L2, welche Menschen in der Tür detektieren, und den<br />

Sensoren T1z bzw. T2z und T1o bzw. T2o, der signalisiert, ob die jeweilige Tür<br />

zu oder offen ist. In jedem Stockwerk ist <strong>ein</strong> Niveausensor N1 bzw. N2, der <strong>ein</strong><br />

Signal gibt, wenn der Kabinen- und der Stockwerkboden auf gleicher Höhe sind.<br />

In der Aufzugkabine befindet sich <strong>ein</strong> Druckknopf F, mit dem die Fahrt veranlasst<br />

werden kann.<br />

In Bereitschaft steht der Aufzug mit geöffneter Tür in S1. Wird F gedrückt, wird<br />

die Tür geschlossen und der Aufzug fährt danach nach S2. Nach Erreichen von<br />

S2 wird die Tür geöffnet. Wird danach wiederum F gedrückt, läuft der Vorgang<br />

umgekehrt ab. Sonst wartet der Aufzug mit geöffneter Tür in S2.<br />

Steht der Aufzug mit geöffneter Tür in <strong>ein</strong>em Stockwerk und wird dann der<br />

Anforderungs-Druckknopf des anderen Stockwerks gedrückt, läuft der Vorgang<br />

analog wie oben ab.<br />

Wenn die Lichtschranke <strong>ein</strong>er schließenden Tür anspricht, wird der<br />

Schließvorgang abgebrochen und die Tür wieder geöffnet.<br />

<strong>Zustandsautomat</strong>en<br />

Übung 2<br />

Lösung:<br />

F gedrückt<br />

D2 gedrückt<br />

L1<br />

Tür1 schließt T1o Tür1 öffnet<br />

T1z<br />

Aufzug fährt<br />

nach S2<br />

N1<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/43<br />

Tür2 öffnet<br />

Wartet in S1<br />

T2o<br />

T1o<br />

Wartet in S2<br />

Tür 1 öffnet<br />

Aufzug fährt<br />

nach S1<br />

Tür2 öffnet T2o Tür2 schließt<br />

L2<br />

D1 gedrückt<br />

F gedrückt<br />

T2z<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/44<br />

N2


<strong>Zustandsautomat</strong>en<br />

Übung 3<br />

Modellieren Sie das Softwaresystem für die Steuerung <strong>ein</strong>er automatischen Personenschleuse als <strong>Zustandsautomat</strong>en:<br />

Kontaktmatte Waage<br />

Die Schleuse soll im Normalfall durch <strong>ein</strong>e <strong>ein</strong>zige<br />

Anzeige<br />

Person von „außen“ nach „innen“ durchquert werden.<br />

Der Boden von Bereich „A“ ist mit <strong>ein</strong>er Kontaktmatte<br />

belegt, die <strong>ein</strong> Signal gibt, wenn <strong>ein</strong>e Person darauf<br />

außen<br />

steht. Der Boden des Bereichs „B“ besteht statt <strong>dessen</strong><br />

A B C innen<br />

aus <strong>ein</strong>er Waage, mit der anhand <strong>ein</strong>er durch<br />

Wartungspersonal <strong>ein</strong>stellbaren Gewichtsschwelle<br />

entschieden werden kann, ob sich wirklich nur <strong>ein</strong>e<br />

Tür 1 Ausweis- Tür 2<br />

Person in Bereich „B“ befindet.<br />

leser<br />

Im Bereich „B“ ist <strong>ein</strong> Ausweisleser untergebracht, der die Ausweisdaten der<br />

Person in „B“ liest und an <strong>ein</strong> Leitsystem weitergibt. Das Leitsystem gibt <strong>ein</strong> Signal zurück, ob der Ausweis zum Eintreten<br />

nach „innen“ berechtigt. Ferner ist im Bereich „B“ <strong>ein</strong>e Anzeige angebracht, die „Eintreten“, „Ausweis“, „zurück“ und<br />

„weiter“ anzeigen kann, um zum Betreten, zur Eingabe des Ausweises oder zum Verlassen der Schleuse nach „außen“<br />

oder nach „innen“ aufzufordern.<br />

Das zu modellierende Softwaresystem soll durch Öffnen und Schließen der Türen sicherstellen, dass nur <strong>ein</strong>e <strong>ein</strong>zige<br />

berechtigte Person von „außen“ nach „innen“ passieren kann.<br />

Grundzustand: „A“ und „B“ sind leer, Tür 1 und Tür 2 sind zu, Die Anzeige zeigt „Eintreten“.<br />

Normaler Ablauf: Eine Person betritt „A“. Dann öffnet Tür 1, wenn außerdem „B“ leer und Tür 2 geschlossen ist. Person<br />

betritt „B“, Tür 1 schließt. Ist der Gewichtswert kl<strong>ein</strong>er als der Schwellwert, zeigt die Anzeige „Ausweis“ an. Wird nach 30<br />

Sekunden der Ausweis in den Leser gegeben, erfolgt das Auslesen und die Übertragung der Ausweisdaten an das<br />

Leitsystem. Ist die Rückmeldung durch das Leitsystem positiv, wird Tür 2 geöffnet und die Anzeige zeigt „weiter“ an. Hat<br />

die Person „B“ verlassen, wird Tür 2 geschlossen und die Anzeige auf „Eintreten“ geschaltet.<br />

Ausnahmeablauf: Wie zuvor bis zur Gewichtsprüfung. Gewicht der Person in B ist größer als der Schwellwert oder das<br />

Ergebnis der Ausweisprüfung ist negativ: Tür 1 öffnet und die Anzeige zeigt „zurück“. Nach Verlassen von „B“ wird Tür 1<br />

geschlossen und es wird „Eintreten“ angezeigt.<br />

<strong>Zustandsautomat</strong>en<br />

Übung 3: Lösung<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/45<br />

Vorlesung <strong>Automat</strong>isierungsprojekte Seite 4/46

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!