Autor
|
Thema: Mehtode zur Rufsteuerung (1410 / mal gelesen)
|
Erdnussbutter93 Mitglied Student
Beiträge: 14 Registriert: 25.07.2017
|
erstellt am: 26. Jul. 2017 08:42 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe einen Fahrstuhl entwickelt und möchte nun eine Methode schreiben, damit der Fahrstuhl nur fährt, wenn er gerufen wird. Das heißt, befindet sich jemand in meinen linken Puffern, so soll ein Ruf ausgelöst werden und sich der Fahrstuhl dort hin bewegen. Hat jemand eine Idee, um das umzusetzen? Viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 31. Jul. 2017 15:59 <-- editieren / zitieren --> Unities abgeben: Nur für Erdnussbutter93
Hallo Erdnussbutter93, wie sieht dein EPK, eindlicher Automat oder Pseudokode aus? vg Nadin ------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erdnussbutter93 Mitglied Student
Beiträge: 14 Registriert: 25.07.2017
|
erstellt am: 31. Jul. 2017 16:34 <-- editieren / zitieren --> Unities abgeben:
Hi Nadin, das ist mein aktueller Stand der Dinge. Mit der CreationTabelle generiere ich für jede Quelle BEs mit dem Attribut "Zieletage" (0,1 oder 2). Aktuell fährt mein Aufzug hoch und runter, setzt die Personen mit der Attribut zugeteilten Etage ab und nimmt bei Bedarf neue Personen auf. Doch jetzt soll der Aufzug auf Ruf reagieren und alle vorhandenen Aufträge in Rufrichtung abarbeiten. Könntest du mir weiterhelfen? Danke und viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erdnussbutter93 Mitglied Student
Beiträge: 14 Registriert: 25.07.2017
|
erstellt am: 31. Jul. 2017 16:52 <-- editieren / zitieren --> Unities abgeben:
meine Tabelle sieht dann übrigens so aus. In der Integer-Spalte steht das Ziel meines BEs. Jetzt stelle ich mir das ungefähr so vor: -Wenn Eintrag in Liste, fahre dort hin -Wenn weitere Einträge, prüfe ob der aktuellste Eintrag größer oder kleiner der Abholetage ist -Wenn größer, (fährt dann nach oben) halte an allten Etagen, die aufsteigend sind -Wenn kleiner, (fährt nach unten) halte an allen Etagen, die absteigend sind -Nach dem Abarbeiten einer Richtung (zb von der 3 bis zur ersten Etage), nimm aktuellsten Auftrag und führe ihn aus und dann wieder von vorn. Allerdings kann ich das so nicht in eine Methode schreiben...Ist das überhaupt so möglich? Beste Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nadin1223 Mitglied Ing.
Beiträge: 938 Registriert: 29.03.2016
|
erstellt am: 01. Aug. 2017 01:19 <-- editieren / zitieren --> Unities abgeben: Nur für Erdnussbutter93
Zitat: Doch jetzt soll der Aufzug auf Ruf reagieren
Der Lift hat zwei Zustände. Entweder Arbeitend oder Wartet. Wenn Arbeitend dann Person drückt Taste und Lift kommt auf diese Etage. Wenn Arbeitend haben die Personen im Lift priorität. TIPP: diesen Zustand in Variable abfangen. Wenn Wartend dann LiftSteuerung aktivieren. Zitat:
-Wenn Eintrag in Liste, fahre dort hin -Wenn weitere Einträge, prüfe ob der aktuellste Eintrag größer oder kleiner der Abholetage ist -Wenn größer, (fährt dann nach oben) halte an allten Etagen, die aufsteigend sind -Wenn kleiner, (fährt nach unten) halte an allen Etagen, die absteigend sind -Nach dem Abarbeiten einer Richtung (zb von der 3 bis zur ersten Etage), nimm aktuellsten Auftrag und führe ihn aus
im Prinzip PseudoKode Station Eingang: Code:
Tabelle eintragen wenn Wartend LiftSteuerung()
PseudoKode Sensor Code:
setze Fahrrichtung (in erster und letzter Etage Fahrrichtung = Ziel Erreicht. Das was noch im Lift verbleibt gibt die Fahrrichtung vor. Achtung!!! Fahrrichtung hat drei Zustände: Hoch/Runter/Ziel Erreicht) wenn auf Etage warten Personen oder in Lift Personen haben Etage als Ziel, dann halte an Lift.anhalten:= true --> Entladen --> Beladen --> LiftSteuerung() wenn sensorposition = Ziel dann halte an und setze Fahrrichtung = Ziel Erreicht sonst fahre durch
PseudoKode LiftSteuerung Fahrrichtung hat priorität Code:
Lift.arbeitend := true wenn Fahrrichtung = Ziel Erreicht dann --> wenn Personen im Lift setze nächstes Ziel (setzeFahrrichtung Person in Lift) wenn Fahrrichtung /= Hoch oder Runter dann --> dann fahre weiterwenn Personen auf Etage (in Tabelle.Ydim > 0) und Lift leer --> dann setze Fahrrichtung zu nächster Etage und Lift.start (Etage in Fahrrichtung priorisieren. Wenn keine Fahrrichtung, dann steigen eig. alle ein) sonst Lift bleibt auf Etage stehen und Lift.arbeitend := false
setzeFahrrichtung Person in Lift priorität Fahrrichtung Code:
Gehe BE in Lift durch, wenn Person in Fahrrichtung dann setze Ziel in Fahrrichtung wenn keine BE in Fahrrichtung, dann nächste Fahrrichtung und Fahrrichtung setzen und Lift.start
Lift init
Code:
Ziel setzen und fahren lassen.
TIPP: in Tabelle dann BE als Index speichern Beladen Code:
wenn Platz dann --> wenn Lift.Fahrrichtung gleich Richtung Etage dann --> dieses Objekt umlagern auf Lift Tabelle.entferneZeile(das was du Umlagers als Objekt)<--wenn BE als index, sonst suchen sonst nichts
Für Lift Attribute: --> Fahrrichtung [integer] -->init auf Ziel Erreicht --> Ziel [integer] --> init in Lift_init Methode (hier geht auf Zielort) Das Ziel hat nichts mit Entladen und Beladen zu tun, da auch bei zwischenstation angehalten werden sollte, aber die zuvor gesetze Etage priorität hat. Variable: --> V_Lift [boolean] --> init wartend vg Nadin
------------------ „Die einfachste Art an korrekte Informationen zu gelangen ist, etwas Falsches in ein Forum zu posten und auf die Korrektur zu warten.“ Matthew Austern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Erdnussbutter93 Mitglied Student
Beiträge: 14 Registriert: 25.07.2017
|
erstellt am: 01. Aug. 2017 09:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Nadin, danke für die vielen Tipps! Ich versuche sie nacheinander abzuarbeiten. Als erstes beschäftige ich mich mit der Globalen Variable. Diese wollte ich so defnieren, dass ich sage: Wenn Aufzug mit Inhalt beladen AufzugAktiv:=true Wenn Aufzug nicht mit Inhalt beladen AufzugAktiv:=false Wenn ich das definiert habe, kann ich dem Aufzug anweisen, ob er den innen oder ausrufen Priotität eingestehen soll. Allerdings scheitere ich mit dem deklarieren der Globalen Variable. Wo könnte mein Fehler sein? Viele Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|