Guten Abend allerseits
Ich habe wieder ein bisschen gebastelt an meinem Projekt... Also der Stand der Dinge:
- Event- und Casestruktur wieder getrennt, Ansteuerung durch Enum Typdef.
- Vergleiche mit Null ersetzt durch fertige Funktion
- "Warten" aus dem SubVI entfernt [da muss ich nochmal gucken, ob ich für die Endlagenanfahrt eine bessere Lösung finde]
-Bewegungssteuerung in einem SubVI zusammengefasst
- Positionsprüfung angepasst
- Automatiksteuerung umgesetzt [im Moment fährt die Kiste vom Startpunkt bis zum Endpunkt, wird evtl. noch um Rückfahrt erweitert]
- und natürlich habe ich bestens probiert nach dem "THINK DATAFLOW"-Prinzip zu arbeiten, ich hoffe es ist mir einigermaßen gelungen
So, jetzt haben sich (wie sollte es auch anders sein) wieder neue Probleme ergeben....
- Ist es sinnvoll anstelle von Referenzen den vorhandenen Ring-Terminal an das SubVI zu übergeben? Im Moment habe ich zur Endlagenbestimmung die Referenz der Kiste an meine SubVIs übergeben und lese daraus die Position aus. Wenn ja, wie würde ich im SubVI die Position abgreifen?
- Ist das Prüfen der Endlagen im "Timeout"-Zustand der Eventstruktur programmiertechnisch richtig? Ich habe das Problem, das wenn ich die Endlagen bzw. meine Hilfszustände für die Automatiksteuerung in der While-Schleife abfrage, das diese auch nach beenden des Programms noch gesetzt sind [das kommt daher, dass der Zustand "Exit" durchläuft und danach in der While-Schleife die Endlagen überprüft werden, somit können diese nicht rückgesetzt werden....]
- Nachdem die Automatiksteuerung nun endlich funktioniert, bereitet sie mir natürlich auch gleich tolle Probleme zu... Mein momentaner Lösungsansatz für die Automatiksteuerung lautet:
Automatiktaster gedrückt? => Abfrage des jeweiligen Hilfzustandes (S_Hoch/S_Runter/S_Rechts) => Sprungbefehl für die Eventstruktur in den jeweiligen Zustand
Das ganze läuft bis zum rechten unteren Ende. Das Problem ist aber, drückt man den Automatiktaster öfters während dem Ablauf, bleibt dieser im "TRUE"-Zustand hängen. Das liegt daran, das ich im "Timeout"-Zustand der Eventstruktur einen zusätzlichen Sprungbefehl zum Automatik-zustand gesetzt habe (solange Taster Automatik gedrückt). Leider kann ich ohne diesen Sprung die Automatiksteuerung nicht realisieren. Ansonsten würde die Kiste hochfahren und stehen bleiben (nachdem S_Hoch angesteuert wurde, springt die Eventstruktur wieder in Timeout), erst nach nochmaligem Drücken des Automatiktasters fährt die Kiste weiter. Gibt es eine sauberere Lösung?
Danke schonmal und einen angenehmen Abend gewünscht
LG Niko