HSG

Aktuelle Seite: HSG/Fächer/Informatik/Material

Modellierung eines Aufzugs mit einem endlichen Automaten

nach einer Vorlage aus Informatik mit Prolog, Gerhard Röhner, S.87

Modellvereinfachungen:
Der Aufzug bedient die 3 Stockwerke SE, S1 und S2. In der Aufzugskabine gibt es drei Tasten E, 1 und 2, um das anzufahrende Stockwerk zu wählen. Die gleichen Eingaben können auch mit den Ruftasten auf den einzelnen Stockwerken gemacht werden.

Die Eingaben ergeben sich aus den möglichen Anforderungskombinationen:
E = {_, E, 1, 2, E1, E2, 12, E12}

Naheliegende Ausgaben sind A = {h, r, s} , wobei h für hoch, r für runter und s für stoppt steht.

Bei der Festlegung der Zustände ist zu bedenken, dass Anforderungen, die der jeweiligen Fahrtrichtung entsprechen, Priorität haben sollen.
Z = {SE,S1s,S1h,S1r,S2} , dabei bedeutet z.B. S1h, dass der Aufzug sich in S1 befindet und die Fahrtrichtung nach oben ist. In SE und S2 spielt die Fahrtrichtung keine Rolle.
Es ergibt sich folgender Zustandsgraph

Automaten-Beschreibung für unseren allgemeinen Mealy-Automaten

const
  { 0. Automatenname eintragen                                 }
  automatname = 'Aufzug mit drei Stockwerken SE, S1, S2';
type
  { 1. Zustandsmenge, Eingabe- und Ausgabealphabet anpassen    }
  TZustand = (SE,S1r,S1s,S1h,S2);
  TEingabe = (e_,eE,e1,e2,eE1,eE2,e12,eE12);
  TAusgabe = (h,r,s);
const
  { 2. Startzustand eintragen }
  startzustand = SE;
  { 3. Klartextentsprechungen eintragen                        }
  zText : array[TZustand] of string =
          ('Erdgeschoss','1.Stock, runter','1. Stock, stoppt',
           '1. Stock, hoch','2. Stock');
  eText : array[TEingabe] of string =
          ('nichts','E','1','2','E 1','E 2','1 2','E 1 2');
  aText : array[TAusgabe] of string =
          ('hoch','runter','stoppt');
  { 4a. Automatentafel eingeben, auf Zeilen und Spalten achten }
  fue   : array[TZustand,TEingabe] of TZustand =
          ((SE,SE,S1h,S1h,SE,SE,S1h,SE),
           (S1s,SE,S1r,S2,S1r,SE,S1r,S1r),
           (S1s,SE,S1s,S2,S1s,SE,S1s,S1s),
           (S1s,SE,S1h,S2,S1h,S2,S1h,S1h),
           (S2,S1r,S1r,S2,S1r,S2,S2,S2));
  { 4b. Automatentafel eingeben, auf Zeilen und Spalten achten }
  fa    : array[TZustand,TEingabe] of TAusgabe =
          ((s,s,h,h,s,s,h,s),
           (s,r,s,h,s,r,s,s),
           (s,r,s,h,s,r,s,s),
           (s,r,s,h,s,h,s,s),
           (s,r,r,s,r,s,s,s));
aufzug3.zip

vorläufiges Fazit

Die Modellierung ist schon ganz ordentlich, aber von der Wirklichkeit noch zu weit entfernt.
Bei einem wirklichen Aufzug werden alle noch nicht bearbeiteten Anfragen gespeichert.
Wie soll das modelliert werden?

Interessant

Das Aufzugsproblem scheint strukturgleich zur Positionierung von Festplatten-Schreib/Lese-Köpfen.

Links

Aufzugsmodell an der TU Freiberg
Aufzug Uni Münster
Spezifikation eines Aufzugssystems mit SDL Jürgen Gau, Martin Heilmann und Heiko Rellecke