Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Hallo LVG
ich wollte fragen ob einer von euch folgende Frage beantworten kann.
Ich würde gerne in einer Endlosschleife alle z.b. 10 sekunden eine Funktion ausführen und dadruch eine Anzeige setzen oder Re-setzen. Diese Funktion soll aber wirklich nur alle 10 sekunden auftretten. Wenn man z.b. eine Endlosschleife mit einer Periodendauer von 2s hat, müsste diese Funktion immer nach 5 Schleifendurchgängen aufgerufen werden. Oder wenn man z.b. eine Sequenz mit 100 Sequenzblöcken hat und jeder Block hat ne Dauer von 1s<t<2s, dann müsste LabVIEW praktisch nach 10 Sekunden in einem der 100 Blöcke kurz stoppen, die Funktion aufrufen und ausführen und dann da weiter machen wo LabVIEW angehalten hat. Kann man sowas in LabVIEW realisieren?
' schrieb:Hallo LVG
ich wollte fragen ob einer von euch folgende Frage beantworten kann.
Ich würde gerne in einer Endlosschleife alle z.b. 10 sekunden eine Funktion ausführen und dadruch eine Anzeige setzen oder Re-setzen. Diese Funktion soll aber wirklich nur alle 10 sekunden auftretten. Wenn man z.b. eine Endlosschleife mit einer Periodendauer von 2s hat, müsste diese Funktion immer nach 5 Schleifendurchgängen aufgerufen werden. Oder wenn man z.b. eine Sequenz mit 100 Sequenzblöcken hat und jeder Block hat ne Dauer von 1s<t<2s, dann müsste LabVIEW praktisch nach 10 Sekunden in einem der 100 Blöcke kurz stoppen, die Funktion aufrufen und ausführen und dann da weiter machen wo LabVIEW angehalten hat. Kann man sowas in LabVIEW realisieren?
Gruß Gabi
Hallo,
mach das ganze doch einfach in eigene eigene parallele Schleif, die nur alle 10s läuft.
MfG Jeffrey
' schrieb:Hallo,
mach das ganze doch einfach in eigene eigene parallele Schleif, die nur alle 10s läuft.
MfG Jeffrey
Hab ich schon versucht ...... ich bin in einer Endlosschleife die sich alle 20ms<t<500ms wiederholt und in diese Endlosschleife hab ich dann ne Zeitschleife mit der Periodendauer von 10s eingebaut --> das Problem dabei ist das die schleife 1 mal pro Endlosschleifendurchlauf ausgeführt werden muss, sodass sie solang wartet. D.h. wiederrum das sich die Endlosschleife der Periodendauer der 10s schleife anpasst.
Jedenfalls in meinem Beispiel.
23.01.2008, 11:42 (Dieser Beitrag wurde zuletzt bearbeitet: 23.01.2008 11:44 von Achim.)
Hi,
ich meinte nicht die Schleife dazu rein packen, sondern parallel dazu. Ich schätze mal Achim macht es genauso, kann siene VIs leider nicht öffnen, ist kein LV hier auf dem Rechner. Deswegen das Bild halt jetzt in Paint :-)
Hoff man blickt des trotzdem.
MfG Jeffrey
' schrieb:Probiers mal so:
[attachment=37844:warten.vi][attachment=37845:Time_out.vi]
Beide VI's in einen Ordner kopieren und dann "warten.vi" starten!
Danke erstmal für die schnellen Antworten.
Das VI von Dir Achim ist nicht die von mir erhoffte Lösung. Auf die Idee bin ich auch gekommen und so ähnlich werde ich es wohl auch lösen müssen wie es aussieht. Die Sache ist diese das desto länger die Hauptschleife ist desto ungenauer ist dein Funktionsaufruf. Und dauert die Hauptschleife sogar länger als deine Zeitgrenze hat kann man sowieso nicht mehr das Event rechzeichtig starten, ausser man setzt dein VI mehrmals in die Schleife. Naja jedenfalls hatte ich gehofft das das auch anderes geht.
' schrieb:Hi,
ich meinte nicht die Schleife dazu rein packen, sondern parallel dazu. Ich schätze mal Achim macht es genauso, kann siene VIs leider nicht öffnen, ist kein LV hier auf dem Rechner. Deswegen das Bild halt jetzt in Paint :-)
Hoff man blickt des trotzdem.
MfG Jeffrey
Nein das geht auch nicht ..... meine Hauptschleife ist doch ne endlosschleife und sobald LabVIEW diese einmal ausführt gelangt LabVIEW nie mehr in die andere Schleife. D.h. die Funktion wird nur ein einzigesmal ausgeführt und auch nur dann wenn LabVIEW die Zeitschleife beim ersten mal als erstes durchläuft und dann in die Endlosschleife gelangt.
' schrieb:Die Sache ist diese das desto länger die Hauptschleife ist desto ungenauer ist dein Funktionsaufruf. Und dauert die Hauptschleife sogar länger als deine Zeitgrenze hat kann man sowieso nicht mehr das Event rechzeichtig starten
Wat? Wie lange dauert denn bei dir ein Schleifendurchlauf? "Normale" Wartzeiten in ner Schleife liegen so zwischen 20-100 ms...da bist du doch mit deiner Wartezeit von 10 Sekunden Welten davon entfernt...
Wenn bei dir ein Schleifendurchlauf wesentlich größer sein sollte als diese "Normal"-Zeiten, solltest du evtl. mal deinen Programmier-Ansatz überdenken.
Abgesehen davon: Diese Wartezeit in der Schleife ist ein "Richtwert" und ist immer nur so genau, wie es die CPU zulässt...wenn die was anderes zwischenrein macht (ganz sicher!) oder wenn die Funktion in der Schleife länger dauert (warum auch immer), ist diese "Periodendauer" sowieso hinfällig. Wenn du's genauer brauchst, musst du ein RT-System verwenden!
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
' schrieb:Nein das geht auch nicht ..... meine Hauptschleife ist doch ne endlosschleife und sobald LabVIEW diese einmal ausführt gelangt LabVIEW nie mehr in die andere Schleife. .
FALSCH!
LV arbeitet diese Schleifen parallel ab! Quasi-Parallel (Multi-Threaded) bei nem normalen PC, bei nem Multi-Core-PC je nach Einstellung auch wirklich parallel...
Genauer wird's dadurch aber auch nicht...siehe meinen vorhergehenden Beitrag!
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)