(17.02.2016 20:17 )Flenzelot schrieb: In der Theorie ist das in der Tat einfach. In der Praxis weiß ich nicht, wie ich "Status für Zeit x halten" befehlen kann bzw den Status mit einer Timer-Funktion verknüpfen kann.
Nimm als Selektor für die Statemachine nicht den Enumerator "Laden/Entladen/etc.". Mach einen neuen Enumerator, der z.B. die Werte "Start Schrittkette", "Vorauswahl Laden/Entladen", "Laden", "Pause nach Laden", etc. In den entsprechenden Cases dieses neuen Enumerators fragst du dann den bestehenden Enumarator ab ...
Eine Zeitverzögerung ist ganz einfach:
Im State "X-1" wird eine Variable resettet (z.B. Wert = 100, ergibt im Raster von 20ms 2 Sekunden). Diese Variable wird in einem Schieberegister auf der While-Schleife (ersatzweise ein Rückkopplngsknoten), die sich um die Statemachine befindet, gespeichert. Im State "X", wird 20ms gewartet und die Variable dekrementiert. Ist sie Null, wird nach State "X+1" verzweigt, ansonsten wird weiterhin State "X" ausgeführt. Außerdem wird im State "X" nachgekuckt (gekuckt klingt zwar blöd für einen Programmierer, wir reden aber auch nur von einer Struktur), ob denn das Warten abzubrechen ist und in welchem Case (z.B. "X+7") weitergemacht werden muss.