Hallo Ihr!
Ich bin ein LabVIEW-Neuling und hab folgendes Problem:
Ich will eine Ventilsteuerung programmieren, bei der nacheinander Ventile auf und zu gemacht werden. Die Schaltzeiten von AUF auf ZU und andersherum soll weniger 100 ms betragen. Soweit so gut. Desweiteren sollen die Ventile eine
bestimmte Zeit offen sein und sich dann automatisch schließen.
In meinem Beispiel mit einem Ventil 4 sec.
Im Debug-Modus funktioniert das alles auch aber wenn man das VI normal laufen lässt passiert garnichts. Ich weis nicht warum
..vielleicht seh ich auch den Wald vor lauter Bäumen nicht
Das ganze soll über einen Button gestartet werden und sich danach automatisch zurücksetzen.
Vielleicht habt ihr Ideen??
' schrieb:Im Debug-Modus funktioniert das alles auch aber wenn man das VI normal laufen lässt passiert garnichts. Ich weis nicht warum..vielleicht seh ich auch den Wald vor lauter Bäumen nicht
Aber auch nur, wenn man ein schlechtes Zeitgefühl besitzt. Die Funktion wartet schließlich nicht, bis die eingestellte Zeit vorüber ist, sondern guckt bei jedem Aufruf, ob die Zeit abgelaufen ist. Dazu kommt sie aber gar nicht, denn sie wird nur einmal aufgerufen. Die abgelaufene Zeit ist da natürlich 0. Was du da mit "Erster Aufruf?" machst ist mir schleierhaft. Auch mit der Schaltzeit < 100 ms kann ich nichts anfangen. Aber versuch mal so:
[
attachment=19282]
Hallo,
ich bin neu hier im Forum.
Ich brauch im Prinzip das gleiche (soweit war ich schon) bloss ´ne Nummer komplizierter.
Ich hab ein riesen Programm mit allen möglichen Funktions-, Sicherheits- und Zusatzschleifen.
Jetzt brauch ich noch das Ventil.
In dem Beispiel wird das Ventil (eine Case-Schleife ) mit einem Button gestartet.
Der Zeitablauf wird dann über ein ExpressVi "verstrichene Zeit" mit True quitiert und rückgeschleift.
Was ich brauche:
Mein Button ist dauerhaft an und das Ventil soll trotzdem nach Zeit X ausgehen.
Wenn mein Button deaktiviert wird, soll das Ventil ausgehen und VI "verstrichene Zeit" wieder auf 0 gesetzt werden.
Oder als reales Problem:
Wenn eine Schutztüre geöffnet wird, soll 2 Sekunden ein Warnton kommen.
Nach schließen und erneutem öffnen wieder!
Hat Jemand eine Idee?
Vielen Dank und schönen Abend - der LabView Anfänger
Hallo Anfänger,
Zitat:Ich hab ein riesen Programm mit allen möglichen Funktions-, Sicherheits- und Zusatzschleifen.
Oha…
Zitat:In dem Beispiel wird das Ventil (eine Case-Schleife ) mit einem Button gestartet.
Was ist eine "Case-Schleife"? Es gibt eine Case-
Struktur und FOR/WHILE-
Schleifen…
Zitat:Der Zeitablauf wird dann über ein ExpressVi "verstrichene Zeit" mit True quitiert und rückgeschleift.
Ein VI würde deutlich mehr aussagen als diese Sätze…
Zitat:Mein Button ist dauerhaft an und das Ventil soll trotzdem nach Zeit X ausgehen.
Wenn mein Button deaktiviert wird, soll das Ventil ausgehen und VI "verstrichene Zeit" wieder auf 0 gesetzt werden.
Der Button startet also "ElapsedTime", das Ventil wird als Verknüpfung von Button und ElapsedTime geschaltet.
Hier mal eine Lösung ohne ExpressVI (auch wenn ElapsedTime sehr nützlich sein mag):
[
attachment=51861]
Vielen Dank für die Hilfe und schnelle Antwort!
Ja, ich gebe zu die Erklärung war nicht so gut. Ich habe mich auf das Vi ein posting zuvor von schrotti bezogen.
In Deinem Beispiel ist die Schleifenzeit gleich der Ventilzeit wenn ich das richtig nachprogrammiert und verstanden hab.
Das heißt dass wenn ich z. B. 10 min Schleifenzeit hab, muss ich im schlimmsten Fall 9:59 warten, bis das Ventil aktiviert wird.
Ich will meine While-Schleife so schnell wie möglich laufen lassen und die OK-Schaltfläche überwachen.
Wenn OK aktiviert wird, soll für 2 Sekunden das Ventil angehen und danach wieder ausgehen.
Wenn ich OK deaktiviere, soll alles wieder "resetet" werden -das heißt bei erneuter Aktivierung wieder 2 Sekunden Ventil.
Hier mal mein Anfänger_Ventil.vi:
Es funktioniert: Ich aktiviere OK, 2 Sekunden ist das Ventil an, danach geht es aus.
Es funktioniert nicht: Leider stoppt dann die verstrichene Zeit. Nach Deaktivierung OK und erneuter Aktivierung starten die 2 Sekunden nicht neu, das ExpressVi läuft weiter. Die Case-Struktur links ist der verzweifelte Versuch das ExpressVi zu reseten.
Ich brauch jetzt entweder was wesentlich klügeres oder das True aus der linken Case-Struktur muss kurz aufgehalten werden, bis die Haupt-Case Struktur auf True steht und das ExpressVi zur Verfügung steht.
[
attachment=51867]
Herzlichen Dank für die Mühe!
Hallo Anfänger,
probiere das mal aus:
[
attachment=51873]
Zitat:Die Case-Struktur links ist der verzweifelte Versuch das ExpressVi zu reseten. Ich brauch jetzt entweder was wesentlich klügeres oder das True aus der linken Case-Struktur muss kurz aufgehalten werden, bis die Haupt-Case Struktur auf True steht und das ExpressVi zur Verfügung steht.
Nichts für ungut, aber wenn jemand anfängt, Case-Strukturen einzusetzen, die man mit einem NOT ersetzen kann und boolsche Werte auf (Un-)Gleichheit prüft, dann ist immer etwas im argen…
P.S.: Trotzdem sollte in die Schleife eine kleine Wartezeit. Oder man arbeitet mit einer Event-Struktur. Ungebremstes Polling von Bedienelementen ist einfach nur (grotten-)schlechtes Ressourcenmanagment!
Zitat:In Deinem Beispiel ist die Schleifenzeit gleich der Ventilzeit wenn ich das richtig nachprogrammiert und verstanden hab.
Das heißt dass wenn ich z. B. 10 min Schleifenzeit hab, muss ich im schlimmsten Fall 9:59 warten, bis das Ventil aktiviert wird.
Dann hast du entweder etwas falsch programmiert oder nicht richtig verstanden.
Mein Beispiel oben aktiviert ein Ventil für 2s, nachdem der Button gedrückt wurde…
Guten Morgen,
danke das letzte Beispiel funktioniert prima!!!
Ich wünsche allen ein schönes WE
glücklicher Anfänger