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!
28.04.2010, 20:07 (Dieser Beitrag wurde zuletzt bearbeitet: 28.04.2010 20:10 von bluesaturn.)
1. Frage:
In Main_v2_LabVIEW2009_test1.vi ist die Main.vi meines LabVIEW Progs dargestellt.
Wenn man dieses nachher ausfuehrt, spielt sich alles in der zweiten Schleife ab.
Wenn ich die Flow rate waehrend des Programms aendern moechte (versteckt sich in Set_flow_rate_direction.vi), dann muesste diese vi eigentlich in die zweite Schleife. Das funktioniert theoretisch, aber dann flackert das Display meiner Pumpe, weil bei jedem Schleifendurchlauf die Flussrate kontrolliert und uebertragen wird. Das ist eher daemlich.
Jetzt suche ich nach einer Moeglichkeit, die Flow rate waehrend des Programms zu aendern, aber nicht staendig zu uebertragen, so dass das Display nicht wackelt. Es soll nur etwas uebertragen werden, wenn man die Flowrate geandert hat.
Geht das vielleicht mit Schiftregister, aber was mache ich in diesem Fall mit dem error in (gruene Linie) und der visa resource -Line (lila Linie) bitte?
2. Frage:
Ich habe zwei Schleifen und somit zwei Stop-Buttons. Muss ich die nicht verbinden und wenn ja, bitte wie geht das? Ueber eine lokale Variable oder muss man das auch verdrahten?
Vielen Dank fuer die Beantwortung der Fragen.
Alles in. Harvard... .zip beinhaltet die vis der Firma. Die sind normalerweise in der instr.lib bei mir.
1) Ja, Shiftregister und ein Vergleich helfen hier ungemein:)Siehe Anhang.
2) Wenn die zwei Schleifen unabhängig voneinander beendet werden sollen, brauchst du auch 2 Stopp-Buttons...
Hallo GerdW,
vielen Dank fuer die Erklaerung mit dem Schiftregister und den Stop-Buttons.
Ich moechte die Kreise beide unabhaengig stoppen. Der innere Kreis soll nur die Pumpe stoppen und so wie ich das verstehe, wird das LabVIEW-Programm komplet beendet mit dem aeusseren Kreis. Warum kann man dann nicht den roten Punkt oben in der LabVIEW-Leiste nehmen?Brauche ich wirklich einen Knopf im Panel zum Programmabbruch?
das mit den 2 Stopp-Buttons nicht zu wörtlich nehmen. Du musst nicht 20 Stopp-Buttons verwenden, wenn du mal ein VI mit 20 Schleifen hast...
Eher gemeint ist: jede Schleife benötigt ihre eigene Stopp-Bedingung. Ob diese nun von einem Button kommt oder anders generiert wird, ist unerheblich...
das mit den 2 Stopp-Buttons nicht zu wörtlich nehmen. Du musst nicht 20 Stopp-Buttons verwenden, wenn du mal ein VI mit 20 Schleifen hast...
Eher gemeint ist: jede Schleife benötigt ihre eigene Stopp-Bedingung. Ob diese nun von einem Button kommt oder anders generiert wird, ist unerheblich...
Hi Gerd,
in Ordnung. Aber in meinem Fall macht der Stop-Button genau dasselbe wie oben der rote Punkt in der Leiste. Kann ich den Knopf fuer die ausserste Schleife nicht einfach ausblenden? Im Prinzip soll das Programm staendig laufen, also solange laufen, wie es fuer die Experimente gebraucht wird.
"macht der Stop-Button genau dasselbe wie oben der rote Punkt in der Leiste"
Das glaube ich nicht. Der Stop-Button bewirkt, dass die (äußere) Schleife komplett abgearbeitet wird und dann beendet wird. Der "rote Punkt" unterbricht das Programm sofort, ohne irgendwelche Schleifen zu beenden...
Üblicherweise ist es sinnvoll, Hardware zu deinitialisieren, Dateien/Referenzen/etc zu schließen, usw. usf.
Hallo Gerd. Entschuldige, ich habe noch etwas anderes nicht kapiert.
Verstehe ich das richtig, das mein "Pause"-Button und der "innere Stop-Button" einfach nur die innere Schleife kurz anhalten?
Wenn ich den Stopp-Button fuer die innere Schleife druecke, beendet sich ja nicht das gesamte Programm, weil ich noch eine auessere Schleife habe.
Der Pause-Button stoppt auch die Pumpe. Vielleicht mag es daran liegen, dass das urspruengliche LabVIEW-Programm keine auessere Schleife hatte, die ich aber benoetige, so dass jetzt Stopp- und Pause-Button dasselbe machen. Tut mir leid, ich bin gerade etwas verwirrt.
Ich kann nicht erkennen, dass die Pumpe deinitialisiert wird. Der Punkt, die Dateien zunaechst zu schliessen, ist gut. Dann werde ich den auesseren Stop-Button sichtbar platzieren.
Die Stop.vi kommt vom Hersteller und wird zum Stoppen der Pumpe benutzt.
06.05.2010, 16:26 (Dieser Beitrag wurde zuletzt bearbeitet: 06.05.2010 16:28 von GerdW.)
Der "Pause"-Knopf bewirkt nur, dass die Pumpe einen Befehl (zufällig noch ein "Stop") gesendet bekommt... Der "innere Stop" bewirkt einen Abbruch der inneren Schleife.
Die Angaben "Deinitialisieren, Schließen von Dateien&Referenzen" waren nur Beispiele, was ein Programm üblicherweise noch erledigen sollte, wenn es beendet wird. Und somit Dinge, die nicht passieren, wenn die den Stop-Knopf von LV benutzt (den "roten Punkt").
Ich habe den äußeren Stop nochmal woanders hingeschoben, erschien mir sinnvoller (u.a. ein local weniger)...
Meines Erachtens ist hier das Einzig Wahre eine parallele Schleife zur Ereignisbehandlung bei Wertänderung der Flow-Properties:
Edit: Graphik geändert (Property Node Value signalisierend eingefügt, fehlt im VI)
lv2009
Main_v2_LV2009_test1.vi (Größe: 27,2 KB / Downloads: 197)
Hall Lucki.
Danke fuer deinen Vorschlag.
Der Grund fuer die aeussere Schleife ist, das das Programm tatsaechlich immer laufen soll und nicht nach Beendigung eines Vorgangs LabVIew sozusagen verlaesst. Das ist mit nur einer Schleife damals immer passiert. Die auessere Schleife haelt das Programm sozusagen am Laufen, die innere Schleife ist wohl ein Uebrigbleibsel eine Versuches, eine Evenstruktur ohne diese event structure.vi zu erzeugen. Funktioniert aber gut.
Moechte man aber Parameter wie flow rate oder target veraendern, so muessen die mit in die innere Schleife, weil das Programm sich am Ende dort abspielt. So habe ich bisher verstanden bzw es war mir nicht moeglich, die Flow rate zu aendern, als die flow rate properties noch ausserhalb der inneren Schleife waren. Es gibt sicherlich noch bessere, elegantere Moeglichkeiten, aber ich habe nur noch 2 Wochen bis zur Messzeit und bis dahin muss ich etwas haben, was meine Pump bewegt. Ich versuche, dennoch LabVIEW ordentlich zu lernen.
Wieso bist du somit der Ueberzeugung, dass die Schleife parallel ablaufen soll?
Laueft sie dann immer parallel ab , so dass ich immer die Moeglichkeit habe, die Flow rate zu aendern, bevor ich etwas injiziere oder heraussauge?
Hallo GerdW.
Danke ebenfalls fuer deine Erklaerung und ich denke, ich erkenne den Unterschied. Druecke ich den "inneren Stop"-Button so bricht die Schleife ab. Da ich allerdings keine Auswirkungen fuer diesen Fall programmiert habe, was man sicherlich koennte, sieht es halt wie ein gewoehnliches Stop aus, welches auch von der Stop.vi gemacht wird. Der Teufel steckt im Detail.
Ich bedanke mich und wuensche Euch noch einen schoenen Abend.