Reihenfolge speichern und abarbeiten

artofautomation

Level-1
Beiträge
39
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,
ich habe hier ein kleines Problem. Es geht um ein Fahrstuhl Projekt was ich hier in Miniatur form habe.

Bei diesem Projekt gibt es insgesamt 4 Taster (Erdgeschoss, 1. 2. 3. Etage )
(Die, die man halt im Fahrkorb hat)
Diese 4 Taster werden ja in einer beliebigen Reihenfolge gedrückt.

Allerdings soll diese beliebe Reihenfolge des Taster drückens gespeichert werden und dann auch vom Fahrstuhl abgearbeitet werden. Und genau an dieser stelle komme ich nicht weiter.

Wie kann ich die Reihenfolge des Taster drückens speichern? So das wenn z.b. erst 2, dann 3 und dann 1 gedrückt wird, es auch so abgearbeitet wird und nicht von 2 nach 1 geht.

Ich hoffe ihr könnt mir da weiterhelfen.
Mit freundlichen grüßen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo M-Ott
Danke schonmal für deine antwort.

Ich habe mal die suche mit "FIFO" ausprobiert, da kommen viele sachen die mir nichts sagen.

Ich bin derzeit noch in der Ausbildung und kenne mich mit Step 7 noch nicht so gut aus, als das mir das jetzt weiterhelfen würde.
 
Welche Steuerung hast Du eigentlich?
Bei der S7-300/400 gibt es die Bausteine "FIFO" und "ATT" (ich habe gerade die Nummern nicht zur Hand, musst Du mal in der Hilfe suchen), die sollten Dir weiterhelfen. Und immer dran denken: Bei Siemens ist immer F1 Dein bester Freund!
Bei allgemeinen Fragen zu FIFO hilft Wikipedia.
 
Ich würde mir wahrscheinlich mal Gedanken machen ob das denn sinnvoll ist.

Der Fahrkorb steht im EG, dann wird erst die 3. Etage gedrückt, dann die 1. und dann die 2. Und genauso soll dein Aufzug fahren?

Vorschlag:
Ausgangssituation keine Anforderung, Aufzug steht.

Es wird irgendwo ein Taster gedrückt -> stetze Richtungsmerker

Fahre solange in die Richtung bis keine in dieser Richtung liegende Anforderung mehr besteht. -> rücksetze Richtungsmerker

Dann entweder fertig (keine verbleibende Anforderung mehr) oder weiter mit anderer Richtung weitermachen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Achso das sollte ich besser erwähnen.
Es handelt sich um eine S7-300 CPU315-2DP

Also ich arbeite in der FUB Ansicht, und unter Programmelemente sehe ich nirgends FIFO oder ATT ?
Gibt es noch eine andere stelle wo ich die finden kann?


@Aventinus
Bisher läuft mein Fahrstuhl so wie du es beschrieben hast.
Bisher ist es so das wenn er im Erdgeschoss steht, und man 3 drückt, und danach 2 oder 1 oder beide wird an diesen zwischen stellen auf dem weg nach oben auch angehalten.
Das selbe habe ich derzeit auch beim runterfahren. wenn er im 3.ten steht und jemand E drückt und danach 1 oder 2 wird auch dort angehalten und weiter nach unten gefahren.

Wie gesagt besteht nur das obige Problem.
Deswegen würde ich gerne mit einbinden das die Reihenfolge des tasten drückens auch eine rolle spielt.
 
FIFO und ATT sind entweder (bin mir gerade nicht sicher) in den Systemfunktionen oder in der standard library zu finden. Es handelt sich um (S)FB bzw. (S)FC.
@Aventinus:
Den Gedanken hatte ich auch schon, aber ich dachte mir, da käme er wahrscheinlich irgendwann von selbst drauf.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Leute, ich bins nochmal ^^

Also ich habe jetzt mal ein bisschen rumprobiert mit ATT und FIFO aber ich steig da nicht durch.
Liegt vllt auch mit daran das ich mit DB nicht so ganz klar komme?

Könnte mir hier vllt einer weiterhelfen und kurz nen simples programm mit ATT und FIFO schreiben?

Das z.b. E0.0 E0.1 E0.2 E0.3 einen wert in die tabelle schreiben können,
und nach der reihenfolge A8.0 A8.1 A8.2 A8.3 angehen?

Hoffe ihr versteht was ich meine und könnt mir helfen.
 
Hoffe ihr versteht was ich meine und könnt mir helfen.
Teilweise:
Das z.b. E0.0 E0.1 E0.2 E0.3 einen wert in die tabelle schreiben können,
Versteh' ich
und nach der reihenfolge A8.0 A8.1 A8.2 A8.3 angehen?
Versteh' ich nicht.

Hast Du Dir den Beitrag von Aventinus durchgelesen? Hälst Du es wirklich für sinnvoll, wenn der Aufzug die einzelnen Stockwerke in der Reihenfolge anfährt, in der sie gewählt werden?
 
Wenn ich FIFO und ATT richtig verstanden habe, kann ich doch folgendes machen.

Durch ATT kann ich
Mit E0.0 den wert 0 in die Tabelle setzen.
Mit E0.1 den wert 1 in die Tabelle setzen.
Mit E0.2 den wert 2 in die Tabelle setzen.
Mit E0.3 den wert 3 in die Tabelle setzen.

Durch FIFO wird dann der älteste wert zuerst abgearbeitet.
Wert 0 in der Tabelle, A8.0 aktiv
Wert 1 in der Tabelle, A8.1 aktiv
Wert 2 in der Tabelle, A8.2 aktiv
Wert 3 in der Tabelle, A8.3 aktiv

oder verstehe ich es falsch?
Mir geht es gerade nur ums abarbeiten.

Ich habe mir denn Beitrag von Aventinus durchgelesen. und das entspricht der Funktion die ich derzeit habe. Alle Stockwerke werden angefahren.
Also wenn mein Aufzug in E ist, und ich erst 3, dann 1, dann 2 drücke wird in allen Stockwerken gehalten.

Allerdings versuch ich auch eine art Vorrang einzubauen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn ich FIFO und ATT richtig verstanden habe, kann ich doch folgendes machen.

Durch ATT kann ich
Mit E0.0 den wert 0 in die Tabelle setzen.
Mit E0.1 den wert 1 in die Tabelle setzen.
Mit E0.2 den wert 2 in die Tabelle setzen.
Mit E0.3 den wert 3 in die Tabelle setzen.

Durch FIFO wird dann der älteste wert zuerst abgearbeitet.
Wert 0 in der Tabelle, A8.0 aktiv
Wert 1 in der Tabelle, A8.1 aktiv
Wert 2 in der Tabelle, A8.2 aktiv
Wert 3 in der Tabelle, A8.3 aktiv

oder verstehe ich es falsch?
Nein, das verstehtst Du richtig, das kannst Du mit FIFO und ATT so machen.
Ich habe mir denn Beitrag von Aventinus durchgelesen. und das entspricht der Funktion die ich derzeit habe.
Nein, tut es nicht. Dein Aufzug fährt die Stockwerke in der gewählten Reihenfolge an. Das macht aber wenig Sinn, wenn zum Beispiel der Aufzug im 3. Stock steht und unmittelbar nacheinander EG, 2. Stock, 1. Stock gewählt werden.
 
Hallo Michael,

wenn ich den TE richtig verstehe, hat er ein bestehendes Programm, dass so funktioniert, wie
es von Aventinus beschrieben wurde.
Da der TE aber noch was lernen will, will er die Vorrangschaltung in sein Programm einbinden.
Dabei ist es nicht wichtig, ob das Programm dann sinnvoll ist oder nicht.

Grüße
Gebs
 
Gebs hat mich halb verstanden ^^
Mein Programm läuft ja derzeit "richtig"

Allerdings will ich jetzt testweise mal eine "vorrang" schaltung haben.
Wer zuerst drückt, ist auch zuerst dran ;)

Also könnte mir jemand ein kurzes test programm schreiben wie oben beschrieben? für ATT und FIFO?

Ich habe zwar was versucht aber damit bekomme ich nur nen SF. Irgend wie versteh ich denn zusammenhang mit der DB und allem nicht.

Dürfte für euch profis doch nicht so schwer sein, oder? :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo artofautomation!

Hast Du einen DB erzeugt und diesen in die SPS geladen?
Wie sieht Dein DB aus? So:
Code:
DBW 0: WORD: = x  // x ist die Anzahl der FIFO-Plätze (händisch eintragen
DBW 2: WORD: = 0  // Wird von den Bausteinen ATT und FIFO versorgt
DBW 4: WORD: = 0  // 1. FIFO-Platz
DBW 6: WORD: = 0  // 2. FIFO-Platz
...
DBW y: WORD: = 0  // x. FIFO-Platz -> x in DBW 0

Dann hast Du 4 Aufrufe des ATT mit
EN = E0.0 bis E0.3 (besser noch mit Flanken)
DATA = Etagen-Nr.
TABLE = DB z.DBW 4

Wenn Dein Aufzug steht, rufst Du den FIFO auf mit
TABLE = DB z.DBW 4
In RET_VAL steht dann Deine Etagen-Nr. mit der Du weiterarbeiten kannst.

Stell doch mal Dein bisheriges Programm hier rein.

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Könntest du mir da mal kurz mit weiterhelfen?
ich wüsste nicht was ich daran jetzt änder muss.

Mit DB und so kenne ich mich kein bisschen aus. Habe nur einen erstellt in der hoffnung das es genügt :D
 
Ich hab das jetzt nicht angesehen.

wenn Gebs das so sagt, dann solltest du den DB um ein paar Datenwörter erweitern.

DB öffnen, letzte Zeile, dort weitere Wörter hinzufügen
 
Also ich habe jetzt was ins DB geschrieben, aber das bringt mich auch nicht weiter.

Er schreibt zwar die zustände ins DB, aber er arbeitet sie nicht richtig ab.
Also brauch ich hier noch irgend wie hilfe ;)
 
Zurück
Oben