Angenommen die Analge steht, beide Zylinder sind vorne & ich starte mein Programm.
Der Zylinder 1A bleibt doch vorne, bis ich aktiv den Ausgang 1M2 auf 1 setze.
Der Zylinder 2A bleibt doch vorne, bis ich aktiv den Ausgang 2M2 auf 1 setze.
Hab ich einen Denkfehler?
Ja.
Du hast doch oben eine Zuweisung, z.B. wenn Schritt 1 oder 2 oder 3 gleich Zylinder ausfahren.
Jetzt muss Dein Programm im nächsten Netzwerk die Aufgabe der Feder übernehmen: Wenn
nicht Zylinder ausfahren gleich einfahren. (Nebenbei hast Du hier dadurch noch gleich 'ne Verriegelung der beiden Ausgänge, da nicht beide gleichzeitig aktiv sein können.)
Somit wird immer, wenn
nicht Schritt 1, 2 oder 3 aktiv ist, der Zylinder eingefahren - und ist beim Einschalten oder nach einem Reset einer der 3 Schritte aktiv?
Und solange die Zylinder noch nicht eingefahren sind, sorgen die Transitionen von Schritt 1 dafür, das dieser nicht gestartet werden kann.
Und immer daran denken: Das Programm wird ständig (zyklisch) von oben nach unten abgearbeitet, nicht wie ein PC-Programm nur einmal!
Mein Problem ist, dass mein Warteschritt immer der letzte Schritt ist,
wenn ich meine Programme schreibe.
Das kommt daher dass ich immer das Bild anschaue wie die
Anlage im Ruhezustand ist und dann fang ich halt an Schritt
für Schritt den Text abzuarbeiten.
In Folge dessen ist mein letzter Schritt immer der Warteschritt.
Das ist genau das, was Dir Godi mitteilen wollte.
Du beginnst absolut richtig. Du fragst bei Schritt 1 die Ausgangslage und den Starttaster (Flanke) ab. Wenn beides zusammen vorliegt, kann die Schrittkette starten.
Deine Schrittkette läuft komplett durch.
Jetzt machst Du nur den "Fehler", am Ende einen Warte- = Grundstellungsschritt einzufügen. Den einfach weglassen. Dafür die Transitionen, die Du zum Setzen dieses Schrittes nutzt, direkt zum Rücksetzen des vorigen Schrittes benutzen. Somit ist nach Beendigung des nunmehr letzten Schrittes kein Schrittmerker mehr aktiv. Du bist also wieder in der Ausgangslage, wie direkt nach dem Einschalten.