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,
gibt es in LabVIEW so etas wie einen Timer-Interrupt? Ich möchte ein Gerät nach einer bestimmten Zeit (in ms) ein bzw aus schalten.
Gibt es dazu eine Art Timer im Hintergrund laufen zu lassen, der nach der vorgegebenen Zeit einen Interrupt auslöst? Oder muss ich in einer While-Schleife die ganze Zeit die Zeit auslesen und mit meinem Wert vergleichen? Das wäre eher schlecht, weil diese Schleife ja fast ohne Verzögerung laufen müsste, ich aber neben her noch einige andere parallele Schleifen laufen habe.
MfG Jeffrey
' schrieb:Hallo,
gibt es in LabVIEW so etas wie einen Timer-Interrupt? Ich möchte ein Gerät nach einer bestimmten Zeit (in ms) ein bzw aus schalten.
Gibt es dazu eine Art Timer im Hintergrund laufen zu lassen, der nach der vorgegebenen Zeit einen Interrupt auslöst? Oder muss ich in einer While-Schleife die ganze Zeit die Zeit auslesen und mit meinem Wert vergleichen? Das wäre eher schlecht, weil diese Schleife ja fast ohne Verzögerung laufen müsste, ich aber neben her noch einige andere parallele Schleifen laufen habe.
MfG Jeffrey
' schrieb:Benutze das Wait.vi oder eine Timing Loop dazu.
eg
Hallo,
klingt gar nicht so schlecht, aber ich habe da noch ein paar Fragen dazu.
Vielleicht zuerst wofür ich das ganze brauche. Also ich will eine Regleung für mehrere (ca. 30) Heizungen realisieren. Dies können aber nur ein bzw aus geschaltet werden. Um nun die Leistung zu regeln soll für jede Heizung ein PWM Signal erzeugt werden. Die PWM-Periodendauer wird relativ lang (1-3s noch nicht ganz sicher, aber konstant) sein. Also ist es nicht ganz so zeitkritisch, also +- 5 ms oder so wäre nicht so tragisch. Deswegen weiß ich auch nicht in welcher Reihenfolge die Heizungen geschaltet werden müssen.
So jetzt wäre eine Lösung: Ich berechene die einzelnen Zeiten und damit die Differenzen dazwischen. Das ganze gebe ich in eine For-Schleife. In der Schleife wird dann der entsprechende Ausgang geschrieben und danach die Zeitdiffernz bis zum nächsten Schreibvorgang gewartet. Das Problem ist nun, dass der Schreibvorgang duraus einige ms dauern kann.
So jetzt die Probleme, die ich dabei habe:
Von wann bis wann wartet wait.vi? Vom Start der Schleife an, oder nach beenden des Schreibvorgangs?
Funktioniert das auch mit einem timed loop? Wie kann ich da die Anzahl der Schleifenwiederholungen einstellen?
Wait wartet vom Start der Schleife... Es funktioniert auch in For-Schleifen (weil du die Schleifenanzahl einstellen willst). Alternativ kann du auch den Schleifenzähler (blaues i) einer While- oder Timmed Loop abfragen. Wenn er einen bestimmten Wert erreicht, soll die Schleife verlassen werden.
Ok, um genauer zu sein: Wait wartet von da an, wo dieses VI ausgeführt wird. Da es aber eigentlich immer "einfach so" in der Schleife liegt, also parallel zum eigentlichen Inhalt, kann man davon ausgehen, dass es nahezu vom Beginn der Schleife wartet. Erst Recht, wenn es auf ein paar Millisekunden hoch und runter nicht ankommt - wie oben geschrieben.
' schrieb:Ok, um genauer zu sein: Wait wartet von da an, wo dieses VI ausgeführt wird. Da es aber eigentlich immer "einfach so" in der Schleife liegt, also parallel zum eigentlichen Inhalt, kann man davon ausgehen, dass es nahezu vom Beginn der Schleife wartet. Erst Recht, wenn es auf ein paar Millisekunden hoch und runter nicht ankommt - wie oben geschrieben.
Hallo,
und wann werden dann die Befehle ausgeführt, die in der Schleife stehen? Nach dem Wait? Es soll halt so sein, dass zuesrt meine Befehle über die Schnittstelle geschickt werden, und dann gewartet wird. Allerdings soll die Schleife insgesamt nur die in wait vorgegebene Zeit benötigen. Und nicht die Zeit von wait+ die Zeit, die das senden der Befehle benötigt. Das senden der Befehle kann mehrere ms dauern, so dass es schon eine Rolle spielt, ob diese zeit zusätzlich gebraucht wird, vorallem, weil es sich ja über die Heizungen aufaddiert. Außerdem ist es wichtig zu wissen, dass der Befehl gleich am Anfang der Schleife ausgeführt wird.
Werde mal versuchen das mit der zeitgesteuerten Schleife zu machen. Kann man da die einzelnen Zeiten für den Schleifendurchlauf während des Durchlaufs ändern?
MfG Jeffrey
' schrieb:Es gibt ja auch noch den Metronom: "Warten auf Raster von"
Hallo,
das funktioniert nicht, weil man ja nicht weiß, wie weit es bis zum nächsten Vielfachen ist, weil man ja nicht bei 0 statet.
Ich habe es noch nicht geschafft, bei einer zeitgesteurten Schleife die Durchlaufzeit während des Durchlaufs zu verändern. habe es so wie unten versucht. Funktioniert aber irgendwie nicht.