Probleme mit der Ereignisstruktur - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Probleme mit der Ereignisstruktur (/Thread-Probleme-mit-der-Ereignisstruktur) Seiten: 1 2 |
Probleme mit der Ereignisstruktur - JohnnyBlack - 10.07.2013 08:34 Hi, ich hab mal wieder ein Problem wo ich glaube ich einfach irgendwas noch nicht richtig verstanden habe. Es geht um bestimmte Bedingungen die passiert sein müssen, damit mein Programm startet. Ich hab den Teil mal aus meinem Programm isoliert und beschreibe hier mal die gewünschte Funktion: 1. Button aufzeichnung, ist dieser auf soll Status "Aufzeichnung nicht aktiv" ausgegeben werden. Anschließend soll gewartet werden, bis sich der Status von Aufzeichnung ändert. 2. Wurde der Button Aufzeichnung betätigt soll ein Regelkreis aufgebaut werden. In dieser Zeit soll der Button Aufzeichnung gesperrt werden damit dieser Prozess nicht unterbrochen werden kann. Es soll der Status "Regelkreis aufbauen Wartezeit x". 3. Nachdem der Regelkreis aufgebaut ist soll die Sensorik überprüft werden. Ist sie eingeschaltet soll in den Aufzeichnungs True-Case gegangen werden. Ist die Sensorik ausgeschaltet soll der Status "Sensorik ausgeschaltet" ausgegeben werden und an dieser Stelle gewartet werden, bis entweder die Sensorik eingeschaltet wird (dann soll das Programm in den Aufzeichnungs True-Case gehen) oder der Button Aufzeichnug ausgeschaltet wird. In diesem Fall soll erneut gewartet werden, bis dieser wieder eingeschaltet wird. 4. Im True Case soll der Status "Betriebsbereitschaft" so lange ausgegeben werden, bis Aufzeichnung beendet wird. 5. Nach Beenden der Aufzeichnung soll die Sequenz wieder bei Punkt 1 beginnen. Folgende Probleme hab ich, und ich weiß nicht wie ich sie umgehe: Punkt 1 klappt, wenn ich das Programm neu beginne. Wenn ich jedoch Punkt 4 beendet habe wartet das Programm nicht auf Wertänderung, sondern durchläuft Punkt 2 und 3 ohne auf Wertänderung zu warten. Punkt 3 Wenn die Sensorik ausgeschaltet ist, wartet das Programm nicht auf Wertänderung von Aufzeichnung oder Sensorik, sondern gelangt in den Aufzeichnungs True-Case. Wie es aussieht liegt mein Fehler in der Ereignisstruktur, da diese nicht anhält wenn ich das erwarte, bzw verlange. Es wird ohne die geforderte Wertänderung der nächste Schritt getätigt. Hoffe mir kann jemand die Funktionsweise näher bringen. RE: Probleme mit der Ereignisstruktur - eb - 10.07.2013 09:06 Hallo, bevor ich mir das VI jetzt genauer anschaue, hier mal ein kleiner Ersteindruck: - Du vermischt die Strukturen in einer "komischen" Art: Bei 2 Eventstrukturen in einem VI ist schon absolute Vorsicht geboten, aber dass beide das gleiche Ereignis abarbeiten und auch noch ineinander geschachtelt sind geht GAR NICHT. (Woher wissen die Strukturen welche jetzt das Ereignis abfangen soll?) - Die Case-Struktur um die Eventschleifen sind komischer Stil, am besten ist es du baust alles in eine StateMachine oder in ein Producer/Consumer-Design um Gruß bis dahin RE: Probleme mit der Ereignisstruktur - GerdW - 10.07.2013 09:15 Hallo Johnny, No-Go: - Events sollten immer möglichst schnell abgearbeitet werden. Du dagegen lässt Sequenzen und Schleifen mit langen Wartezeiten im Event ablaufen... Fragwürdig: - Warum nutzt du lokale Variablen, wenn die Terminals ungenutzt bleiben? - Warum ein Wertänderungs-Event innerhalb einer Case-Struktur, die schon vom gleichen Eingabeelement kontrolliert wird? - Warum eine Wartezeit in der Schleife, statt das vorhandene timeOut-Event ordentlich zu definieren? Tipps: - Du hast selbst schon mehrere Punkte definiert. Erstelle daraus eine Statemachine! - Steuere deine Statemachine über eine Queue, die wiederum von deiner Eventstruktur in einer parallelen Schleife gespeist wird (Producer-Consumer)! - Die "Namen" bei Propertynodes auszublenden ist zumindest äußerst schlechter Dokumentations-Stil in deinem VI... RE: Probleme mit der Ereignisstruktur - JohnnyBlack - 10.07.2013 09:50 (10.07.2013 09:15 )GerdW schrieb: Hallo Johnny, Ok danke schon einmal. Hab vorher mich noch nie mit ner state machine befasst. Ist es richtig wenn ich dann 4 Status habe, die ich dann in einer case Struktur verarbeite? Die Status wären dann ja: Status 0: Aufzeichnung aus Status 1: Aufzeichnung an, Regelkreis aufbauen Status 2: Regelkreis aufgebaut, Sensorik aus Status 3: Regelkreis aufgebaut, Sensorik an Von der Producer-Consumer Statemachine hab ich nix nix gehört, gibt es dazu ein einfaches Beispiel irgendwo?[/color] RE: Probleme mit der Ereignisstruktur - GerdW - 10.07.2013 10:38 Hallo Johnny, schon mal im LabVIEW-Startfenster unter "neue Projekte" geschaut? RE: Probleme mit der Ereignisstruktur - jg - 10.07.2013 10:54 Bzw. bei LabVIEW 2011 unter "File"->"New..." -> "Frameworks" Gruß, Jens RE: Probleme mit der Ereignisstruktur - JohnnyBlack - 10.07.2013 11:43 Danke allen. Hab mal versucht das einigermaßen hinzubekommen. Mag sich das noch einmal jemand angucken und prüfen, ob da Verbesserungsmöglichkeiten sind oder ob das so programmiertechnisch in Ordnung ist? RE: Probleme mit der Ereignisstruktur - Trinitatis - 10.07.2013 12:10 Hallo Johnny (klingt wie im Western), ich würde die Queue-Funktion "auf Nachricht warten" in jedem Fall mit einem TO versehen. Sonst hast du ohne Drücken von STOP keine Möglichkeit dieses VI zu beenden, z.B. über das Windowskreuz, was man ja erwarten könnte. Gruß, Marko RE: Probleme mit der Ereignisstruktur - ash - 22.07.2013 13:03 Ich hätte nochmal ne allgemeine Frage zum Producer/Consumer-Design bei Ereignisstrukturen: Wenn ich die eintreffenden Ereignisse der Producer Schleife mittels Queue asynchron in der Consumer Schleife abarbeite, ist das nicht im Prinzip dasselbe als wenn ich nur eine Ereignisstruktur (ohne Producer/Consumer Design) mit der Option "Benutzereingriffe auf dem Frontpanel erst verarbeiten, wenn der Ereignis-Case abgeschlossen ist" verwende? Immerhin passiert hier nun auch nichts anderes als dass die Ereignisse intern in eine Art Queue gelegt, nach und nach abgearbeitet werden und das Frontpanel auch wie gewünscht nicht blockiert wird. Oder worin liegt der Vorteil dieses Producer/Consumer-Designs bei Ereignisstrukturen? RE: Probleme mit der Ereignisstruktur - Y-P - 22.07.2013 14:04 Hier der Auszug von der NI-Webseite: Code: Why use Producer/Consumer? Und hier der Link zu der Seite: http://www.ni.com/white-paper/3023/en/ Dort steht die Antwort auf Deine Frage. Gruß Markus (22.07.2013 13:03 )ash schrieb: Ich hätte nochmal ne allgemeine Frage zum Producer/Consumer-Design bei Ereignisstrukturen: |