Hallo Paul,
Zitat:Es sind 6 quasi identische States, da ich in jedes State eine Aktion packen will um möglichst fehlerfrei die Routine durchlaufen zu lassen. Ich dachte das ist sinnvoller als würde ich mit Timeouts oder ähnlichen anfangen. Zum Verständnis also so:
State 1: Start der Filtrationspumpe mit bestimmter Drehzahl
State 2: Der Timer (2 Stunden) läuft ab bis auf 0 in diesem Fall wird der Folgecase abgerufen. 2te Bedingung wäre ein zu hoher Druck.
State 3: Abstellen der Filtrationspumpe, öffne ein Ventil.
State 4: Start Spülung mit Pumpe für 2 Minuten (Timer bis auf 0)
State 5: Stopp der spül Pumpe und Schließe Ventil,
STATE 6: alles Reset
State 1: ....(das gleiche von vorne)
Bin ich den damit total auf dem Holzweg?
- Wieso sollten die 6 States, deren Aufgaben du so detailliert auflistest, "quasi identisch" sein? Lt. deiner Beschreibung hast du doch 6 unterschiedliche Aufgaben in den States zu erledigen?
- Wieso benötigst du in jedem State identischen Code (durch Copy&Paste produziert), wenn du unterschiedliche Dinge erledigen willst?
Die Idee mit der Statemachine ist perfekt für deine Aufgabenstellung. Leider passt nur das, was du bisher programmiert hast, überhaupt nicht zu dieser Aufgabenstellung! Bisher werden nur irgendwelche Timer im Sekundentakt hochgezählt, unter Verwendung von lokalen Variablen und damit verbundenen RaceConditions.
Warum programmierst du nicht einfach das, was du oben aufgezählt hast?