Sequenzen durch State Machines ersetzen mit Timer - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Sequenzen durch State Machines ersetzen mit Timer (/Thread-Sequenzen-durch-State-Machines-ersetzen-mit-Timer) |
Sequenzen durch State Machines ersetzen mit Timer - Herr Müller - 20.04.2011 14:08 Hallo zusammen, im Zuge meines Praxissemesters bin ich dabei eine Steuerung für einen kleinen Prüfstand zu entwickeln. Im Groben und Ganzen gibt es hierbei 3 wichtige Geräte die bedient werden wollen: Motor, Kamera und Ventile. In den unten angehängten VI´s kann man sich meinen aktuellen Stand der Programmierung zu Gemüte führen. Nun zu meinem Problem: Ich Trottel habe den Ablauf in eine Sequenz gepackt... Da ich 1. eine Sequenz nicht unterbrechen kann und 2. nicht die Möglichkeit habe z. B. nur jeden 3. Zyklus ein Foto zu schießen möchte ich gerne auf eine State-Machine umsteigen. Habe nun schon einige Zeit damit verbracht die verschieden Cases der State-Machine ordentlich zu timen, leider ohne Erfolg. Wie man im VI sieht, soll nach einer angegeben Zeit der Motor drehen und jeweils 5 sek vor der Drehung ein Foto geschossen werden. Hat jemand einen Tipp? Evtl. Queue mit State- Machine? Merci mal im Voraus Timi RE: Sequenzen durch State Machines ersetzen mit Timer - GerdW - 20.04.2011 21:07 Hallo Herr, Zitat:Wie man im VI sieht, soll nach einer angegeben Zeit der Motor drehen und jeweils 5 sek vor der Drehung ein Foto geschossen werden.Viel sieht man ja nicht, da alle subVIs fehlen... Statemachine hört sich gut an, ich würde States wie folgende vorschlagen: - Bild aufnehmen - Motor drehen - alle weiteren Aktionen... - Warten (entweder definierte Zeitspanne oder bis Zielzeit) Zitat:die verschieden Cases der State-Machine ordentlich zu timenBisher hast du eine Sequenz mit einem Wait in jedem Frame. Also ersetzen durch jeweils einen State für die Aktion (und ermitteln der Startzeit für die Aktion) und einem Wait-State mit Zielzeitangabe (Startzeit + Wartezeit)... RE: Sequenzen durch State Machines ersetzen mit Timer - Herr Müller - 21.04.2011 08:55 Servus Gerd, danke für die schnelle Antwort! (20.04.2011 21:07 )GerdW schrieb: Viel sieht man ja nicht, da alle subVIs fehlen... Die SUB Vis [MOTOR] [SNAP] [VENTILE] beinhalten nur die Weitergabe zur jeweiligen Schnittstelle ( RS232 und zum Compact Field Point), wenn es dir hilft, stell ich diese aber gerne zur Verfügung, no problemo. Das mit den WAIT-States probier ich direkt mal aus! (20.04.2011 21:07 )GerdW schrieb: ...(und ermitteln der Startzeit für die Aktion) und einem Wait-State mit Zielzeitangabe (Startzeit + Wartezeit)... Kannst du mir das vielleicht anhand eines einfachen Beispiels veranschaulichen? Grüße Timi RE: Sequenzen durch State Machines ersetzen mit Timer - Herr Müller - 03.05.2011 12:17 Update: -Dank eurer Hilfe habe ich es nun geschafft alles Sequenzen durch State-Machines zu ersetzen! Vielen Dank!! Nun habe ich folgendes Problem: - Es gibt drei verschiedene State-Machines in meinem Programm: Nr1 ist für die Steuerung des Motors Nr2 ist für die Steuerung der Fotos Nr3 ist für die Steuerung der Ventile Wenn ich alle Abläufe in eine State-Machine packe, dann haut die zeitliche Planung nicht mehr hin, da es beispielsweise zu lange dauert die Fotos zu speichern... Frage: Kann ich die State-Machines irgendwie synchronisieren? Gibt es vielleicht eine bessere Steuerung der Zeit, als durch WAIT Timer in den Cases? Kann es evtl. sein, dass die Probleme daher kommen, dass der PC an dem ich arbeite zu langsam ist? 1,6GHz, 2GB Ram. Die State Machines und das Hauptprogramm habe ich mal dazugepackt. Grüße Timi |