INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Zeitverzögerung bei Auswahl eines bestimmten Cases



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!

20.08.2012, 10:56
Beitrag #1

Herm Offline
LVF-Grünschnabel
*


Beiträge: 24
Registriert seit: Jun 2011

LV 2009 & 2012
2011
DE


Deutschland
Zeitverzögerung bei Auswahl eines bestimmten Cases
Hey,
ich wende mich mal wieder mit einem Problem an euch, was ich alleine nicht gelöst bekomme.
Ich lasse in einer Whileschleife einen Matlab Skriptknoten laufen, der ca. 70 ms braucht. Insgesamt möchte ich diesen Knoten in der Sekunde 13x durchlaufen lassen, aber nicht öfter. Die Laufzeit des Knotens beträgt nie eine exakte Zeit sondern liegt zwischen 35 und 71 ms aber meistens um die 70.
Ich wollte das so realisieren, dass der 0. Durchaluf immer bei jeder vollen Sekunde gestartet wird, habe aber da keine Idee, wie genau ich das realisieren kann. Im angehängten VI wird bei count 0 der eine Case und bei 1-13 der andere Case ausgewählt.

Viele Grüße

Herm


Angehängte Datei(en)
9.0 .vi  Zeitverzögerung.vi (Größe: 7,05 KB / Downloads: 205)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.08.2012, 11:38
Beitrag #2

Schwand Offline
LVF-Stammgast
***


Beiträge: 276
Registriert seit: Nov 2007

2014
2006
DE

31789
Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
Moin,

wenn ich dein Problem recht verstehe, könntest du doch um deine Schleife eine zweite mit dem VI "Wait until next multiple" mit 1000ms am Eingang bauen. Dann würde die innere Schleife immer zur vollen Sekunde anfangen.

Grüßle
S.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2012, 11:54
Beitrag #3

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
Hallo Herm,
im Anhang eine Alternative mit einfacher Ausregelung der Iterationszeit.

Gruß
Ralf


Angehängte Datei(en) Thumbnail(s)
   

9.0 .vi  Zeitverzögerung_rs.vi (Größe: 7,65 KB / Downloads: 184)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2012, 13:58
Beitrag #4

Herm Offline
LVF-Grünschnabel
*


Beiträge: 24
Registriert seit: Jun 2011

LV 2009 & 2012
2011
DE


Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
(20.08.2012 11:38 )Schwand schrieb:  Moin,

wenn ich dein Problem recht verstehe, könntest du doch um deine Schleife eine zweite mit dem VI "Wait until next multiple" mit 1000ms am Eingang bauen. Dann würde die innere Schleife immer zur vollen Sekunde anfangen.

Grüßle
S.

Diese Schleife läuft so lange, bis der Benutzer sie beendet, also eine unendliche Whileschleife. Wenn das Programm einmal drinnen ist, kommt es garnicht mehr in die äußere Schleife rein. Ich würde also beim ersten Mal bis zur vollen Sekunde warten und dann garnicht mehr in diese Schleife kommen.

(20.08.2012 11:54 )rasta schrieb:  Hallo Herm,
im Anhang eine Alternative mit einfacher Ausregelung der Iterationszeit.

Gruß
Ralf

Ich möchte mit dem Programm evtl. auf andere Rechner gehen, die ein bischen weniger leistungsfähig sind. Wenn ich dann bei jedem Durchlauf warte bis die durchschnittliche Zeit erreicht ist funktioniert das so lange, bis einige Durchläufe über der Zeit von 1000/13=77 ms liegen. Wenn ich solche Durchläufe habe, würde sich das durch die kürzeren Schleifendurchläufe insgesamt ausgeleichen, nicht aber, wenn ich diese künstlich auf die Durchschnittszeit verlängere. Deswegen will ich nur den 0. Durchaluf zeitabhängig machen und nicht jeden einzelnen.

Ich habe da sowas im Sinn, dass ich eine zweite Casestruktur habe, wenn ich im 0. Durchlauf bin muss diese Case zusätzlich noch warten, bis 1 sec voll ist. In etwa so, wie im Anhang. Nur müsste da noch in den true-case ein "wait until true" für "Zeit verstrichen" hinein, gibt es sowas?

Gruß

Herm


Angehängte Datei(en)
9.0 .vi  Zeitverzögerung.vi (Größe: 24,27 KB / Downloads: 206)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2012, 14:15 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2012 14:16 von GerdW.)
Beitrag #5

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
Hallo Herm,

ich habe mal dein RubeGoldberg-Gefrickel mit den diversen "=0" und "Wenn Null Dann doch 1"-Abfragen rausgeschmissen und durch diesen Ansatz ersetzt:
   
Die Modulo-Funktion ersetzt den Zählervergleich. Die Case-Struktur wartet bei Case 0 auf die nächste volle Sekunde, sonst kannst du machen, was dir beliebt. Ob die zusätzliche "Wait for 70ms multiple" noch nötig ist, sei dahingestellt...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2012, 15:51
Beitrag #6

Herm Offline
LVF-Grünschnabel
*


Beiträge: 24
Registriert seit: Jun 2011

LV 2009 & 2012
2011
DE


Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
Das ist auf jeden Fall eine sehr einfache Idee. Bei mir klappt das nur nicht so ganz. Dadurch sind meine Durchgänge nicht exakt bei 1 Sekunde, sondern manchmal bis zu 1022 ms, woran kann das liegen?

Gruß

Herm
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
20.08.2012, 15:53
Beitrag #7

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
Hallo Herm,

das kann am zusätzlichen WaitUntilMultiple liegen, wie ich schon erwähnte! Denk mal drüber nach...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2012, 16:16
Beitrag #8

Herm Offline
LVF-Grünschnabel
*


Beiträge: 24
Registriert seit: Jun 2011

LV 2009 & 2012
2011
DE


Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
Wenn ich das ganze ins Hauptprogramm einbaue, bzw. dieses durch die case mit einem wait until multiple, dann habe ich ja nur dieses eine wait until multiple drin. Und gerade das soll ja rein. Der Rest wird über die Durchlaufzeiten des Skriptknoten geregelt. Aber selbst wenn ich nur eine Waitfunktion drin habe, erhalte ich Laufzeiten, die meistens über einer Sekunde liegen. Wenns, wie du sagst, an diesem WaitVI liegt, dann kann ich das ja überhaupt nicht mit rein nehmen. Dann verstehe ich aber auch nicht den Vorschlag genau das zu tun.

Grüße

Herm
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
20.08.2012, 16:22 (Dieser Beitrag wurde zuletzt bearbeitet: 20.08.2012 16:23 von GerdW.)
Beitrag #9

GerdW Offline
______________
LVF-Team

Beiträge: 17.480
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
Hallo Herm,

die vorgestellte Struktur wartet bei ersten Durchlauf (Case 0) auf den Beginn der nächsten Sekunde. Dann kommen noch 13 weitere Durchläufe mit deiner Rechenfunktion. Ob diese zusammen evtl. länger als 1s brauchen, kann ich nicht beurteilen...

Zwei Sachen:
- der zusätzliche 70ms-Wait stört definitiv!
- wenn deine Rechenfunktionen länger als 1s brauchen, wird bei der jetzigen Konstellation ca. 0,9s auf den Beginn der nächsten Sekunde gewartet. Dies könnte sich störend auswirken.

Tipp:
- Schau dir die TimedWhileLoop an. Hier kannst du festlegen, ob (bei Zeitüberschreitung) auf den Beginn der nächsten Sekunde gewartet werden soll oder ob sofort weitergerechnet wird.
- Außerdem ist es ziemlich "eng gestrickt", wenn ich Rechenroutinen, die (nur) durchschnittlich 13*70=910ms brauchen, im Sekundentakt aufrufen will. Damit ist dein Prozess schon zu >90% ausgelastet, jede Störung von außen bringt dich aus dem Takt...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
21.08.2012, 08:55
Beitrag #10

Herm Offline
LVF-Grünschnabel
*


Beiträge: 24
Registriert seit: Jun 2011

LV 2009 & 2012
2011
DE


Deutschland
RE: Zeitverzögerung bei Auswahl eines bestimmten Cases
dasselbe Problem ist aber auch aufgetreten, wenn ich deutlich weniger Schleifen pro Durchlauf verwendet habe. Bspw. bei 9 Schleifen habe ich eine Laufzeit von ca. 630 ms, also mit sehr viel Toleranz. Ich hatte trotzdem Laufzeiten von über 1 s. Die Laufzeit von 70 pro Durchlauf ist auch die Maximaltzeit. Es gibt Ausnahmen mit 71 ms, aber meistens liegt es knapp unter 70.
Ich verzögere jetzt nicht mehr den 0. Case, sondern den letzten und das klappt wunderbar. Damit komme ich fast immer auf 1000 ms, ab und zu habe ich 999 oder 997, aber ich glaube viel exakter geht nicht mehr.

Zur "Timed whileloop". Ich muss sowiso unbedingt vermeiden, dass ich über eine Sekunde komme, das würde mich so oder so aus dem Takt bringen, ich denke mit der Wartezeit nach dem letzten Case klappts am Besten.

Viele Dank für eure Hilfen

Herm
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Eingabe String nach einen bestimmten Format bearbeiten galilio 18 11.807 27.01.2017 10:58
Letzter Beitrag: jg
  Combobox Fallabhängige Auswahl ichmaglachs 4 5.564 29.11.2015 14:24
Letzter Beitrag: ichmaglachs
  Queued State Machine Zeitverzögerung NISI 5 5.616 03.06.2015 16:39
Letzter Beitrag: NISI
  Auswahl eines Arrays anhand des Wertes eines zweiten Arrays treffen alan 2 4.637 19.02.2015 16:12
Letzter Beitrag: alan
  Sinnvolle Cases MoJoJo 6 5.265 07.01.2015 11:09
Letzter Beitrag: MoJoJo
  Event durch Mausklick auf einen bestimmten Bereich auslösen Kalci 4 5.107 14.07.2014 12:59
Letzter Beitrag: Kalci

Gehe zu: