LabVIEWForum.de
verzögerte For-Schleife abbrechen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: verzögerte For-Schleife abbrechen (/Thread-verzoegerte-For-Schleife-abbrechen)



verzögerte For-Schleife abbrechen - *Gerald* - 21.11.2008 13:28

Hi,

habe folgendes Problem. Ich habe ein Testprogramm geschrieben mit dem ich aus einem txt File Werte auslese z.b. die Anzahl von Durchläufen und die Durchlaufsdauer. diese Werte füge ich dann einmal als N an die For-Schleife und die Durchlaufsdauer lege ich an ein Timing-vi in der Schleife. Damit ich die For schleife vorzeitig verlassen kann habe ich einen Bedingungsanschluss eingefügt. Das klappt auch, Probleme gibts es dann wenn die Durchlaufsdauer groß wird (ca. 10min) weil ich dann trotzdem den einen Schleifen durchlauf abwarten muss. Wie kann ich das umgehen, dass er den Durchlauf fertig macht und gleich stoppt.


danke schonmal gruß Gerald


verzögerte For-Schleife abbrechen - TSC - 21.11.2008 13:48

' schrieb:Hi,

habe folgendes Problem. Ich habe ein Testprogramm geschrieben mit dem ich aus einem txt File Werte auslese z.b. die Anzahl von Durchläufen und die Durchlaufsdauer. diese Werte füge ich dann einmal als N an die For-Schleife und die Durchlaufsdauer lege ich an ein Timing-vi in der Schleife. Damit ich die For schleife vorzeitig verlassen kann habe ich einen Bedingungsanschluss eingefügt. Das klappt auch, Probleme gibts es dann wenn die Durchlaufsdauer groß wird (ca. 10min) weil ich dann trotzdem den einen Schleifen durchlauf abwarten muss. Wie kann ich das umgehen, dass er den Durchlauf fertig macht und gleich stoppt.
danke schonmal gruß Gerald


evtl kannst du die 10minuten schleife in mehrere kleine unterteilen? sprich du hast nachher 10 "eine minuten" schleifen die nacheinander abgearbeitet werden, und alle auf den stoppbutton hören!


verzögerte For-Schleife abbrechen - Lucki - 21.11.2008 15:13

Oder mit Eventstruktur. Ob Du dann den Haupt-Code in die For- Schleife oder in den Timout-Case der Event-Struktur hineinsteckst, ist egal.
Lv85_img[attachment=15458]


verzögerte For-Schleife abbrechen - TSC - 21.11.2008 19:22

' schrieb:Oder mit Eventstruktur. Ob Du dann den Haupt-Code in die For- Schleife oder in den Timout-Case der Event-Struktur hineinsteckst, ist egal.
Lv85_img[attachment=43002:abbruch.vi]


hatte ich auch überlegt, aber schafft es ein event eine schleife mittendrin zu unterbrechen? da läuft doch der grade laufende schleifendurchlauf auch erst noch zu ende oder? hab grade leider kein LabVIEW da zum testen.


verzögerte For-Schleife abbrechen - Lucki - 21.11.2008 20:17

' schrieb:hatte ich auch überlegt, aber schafft es ein event eine schleife mittendrin zu unterbrechen? da läuft doch der grade laufende schleifendurchlauf auch erst noch zu ende oder? hab grade leider kein LabVIEW da zum testen.
Das hast Du einen Schwachpunkt richtig erkannt. Es wird nur dann sofort unterbrochen, wenn das Programm im Timeout-Case der Event-Struktur wartet. Wenn das Programm irgendwo anders wartet, z.B auf irgendwelche Bytes bei einem DAQ-Read-VI, oder weil aufgerufenes Sub-Vis so lange brauchen usw., dann hilft natürlich diese Struktur nichts.

Die Frage nach der Unterbrechbarkeit eines Programm wird ja häufig gestellt, und es gibt da keine universelle Lösung. So wie Du es vorgeschlagen hast geht es auch, aber es ist genau so wenig eine Universallösung. Mit Deiner Frage "Kannst Du nicht..?" gibst Du ja auch zu erkennen, daß Du das weißt.

Lösung z.B bei DAQmx Read: kurzes Timeout setzen, den entstehenden Fehler abfangen, immer wieder neuer Leseversuch, bis die Bytes endlich da sind und gelesen werden können. Nach jedem Versuch kann man das Programm abbrechen.


verzögerte For-Schleife abbrechen - TSC - 21.11.2008 21:50

' schrieb:Das hast Du einen Schwachpunkt richtig erkannt. Es wird nur dann sofort unterbrochen, wenn das Programm im Timeout-Case der Event-Struktur wartet. Wenn das Programm irgendwo anders wartet, z.B auf irgendwelche Bytes bei einem DAQ-Read-VI, oder weil aufgerufenes Sub-Vis so lange brauchen usw., dann hilft natürlich diese Struktur nichts.

Die Frage nach der Unterbrechbarkeit eines Programm wird ja häufig gestellt, und es gibt da keine universelle Lösung. So wie Du es vorgeschlagen hast geht es auch, aber es ist genau so wenig eine Universallösung. Mit Deiner Frage "Kannst Du nicht..?" gibst Du ja auch zu erkennen, daß Du das weißt.

Lösung z.B bei DAQmx Read: kurzes Timeout setzen, den entstehenden Fehler abfangen, immer wieder neuer Leseversuch, bis die Bytes endlich da sind und gelesen werden können. Nach jedem Versuch kann man das Programm abbrechen.

Sprich, das Programm in möglichst kleine Einheiten unterteilen, eine andere Lösung kommt mir auch nicht auf.

LG
Torsten


verzögerte For-Schleife abbrechen - rasta - 22.11.2008 10:23

Hallo zusammen,
mein erster Post hier im Forum war für Signal ExpressVerdacht
Nun möchte ich auch für LabVIEW etwas beitragen, denn ich habe in diesem Klasse-Forum einiges gelernt und auf diesem Wege
allen danken die Ihre Zeit opfern und die Fragen beantworten und hoffe jetzt etwas zurückgeben zu können.

Zum Programm:
Ich habe angefangen mich mit den Timed Strukturen zu beschäftigen und muss sagen wow da steckt sehr viel Potenzial drin.
Darauf basiert auch das angehängte Vi.
Die zusätzliche Event-Struktur dient zum Abbruch der Timed-Struktur, kann aber auch sehr schön durch einen Notifier im Top-Level-Vi
ersetzt werden.

Folgende Einstellungen sind programmatisch veränderbar (Angaben auf bisherigen Wissensstand)
- Offset/Wartezeit bis das der eigentliche Code ausgeführt wird.
- Die Ausführungsgeschwindigkeit des Codes (die Abbruchbedingung ist davon völlig losgelöst !!)
- Welcher Prozessorkern zuständig ist.
- Gesamt (Absolut)-Zeit der Ausführungsdauer

Gerald ich hoffe das löst Dein Problem.

Gruß
Ralf


Lv85_img


verzögerte For-Schleife abbrechen - Lucki - 22.11.2008 10:57

' schrieb:Hallo zusammen,
mein erster Post hier im Forum war für Signal ExpressVerdacht
Da ist nix verdächtig, Du steigst hier ein mit einem ganz lauten Knall. Herzlichen Glückwunsch für dieses Beispiel!
Ignoranz ist nie gut, aber als mildernden Umstand rechne ich mir an: es scheint nicht nur mir so zu gehen, daß ich die Timeloop-Struktur weitgehend ignoriert habe, nach dem Motto: Wozu soll das gut sein?
Ich werde versuchen, an Hand Deines Beispiels die Timeloop-Struktur richtig zu verstehen. Wenn ich dazu Fragen habe, dann melde ich mich bei Dir.
Gruß
Ludwig


verzögerte For-Schleife abbrechen - rasta - 22.11.2008 11:59

Hallo Lucki,
Danke für den Glückwünsch und ja sehr gerne helfe ich.

Gruß
Ralf