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!
ich bin noch blutiger Anfänger in Labview, soll aber eine Regelung für einen Heizkessel erstellen. Mein aktuelles Problem ist, dass ich über das Frontpanel, einen Prozessparameter einstellen lassen will (In meinem Fall ist das einfach eine Zahl, die über einen Drehregler (numeric control) eingestellt werden soll), der dann vom Programm weiterverarbeitet wird. Dieser Parameter wird in einer While-schleife eingelesen, das heißt er soll jeden Schleifendurchlauf aktualisiert eingelesen werden (je nachdem welcher Wert eben gerade am Frontpanel eingestellt wird).
Jetzt habe ich den Parameter einfach über einen Tunnel in die While-Schleife geleitet, doch wenn ich das Programm starte wird lediglich der Wert der am Anfang am Frontpanel eingestellt ist an die Schleife weitergegeben. Wenn ich diesen (während dem das Programm läuft) am Drehregler ändere, passiert gar nix. Was ist denn der Sinn eines Drehreglers, wenn der Wert dann wie eine Konstante verarbeitet wird?
Ich hoffe mit kann da jemand helfen. Danke schonmal,
Malte
14.02.2016, 22:32 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016 07:55 von GerdW.)
Dein Control wird einmal vor der Schleife gelesen. Der dann gerade aktuelle Wert wird dann per Draht in die Schleife geleitet. Und innerhalb der Schleife wird nur der Wert aus dem Draht bzw. dem Tunnel gelesen: Think DATAFLOW!
Zitat:ich bin noch blutiger Anfänger in Labview
Wie man an der Schreibweise von LabVIEW sieht…
Schau dir doch mal die Links in meiner Signatur an!
Das mit dem Dataflow Prinzip habe ich schon verstanden, aber es muss doch eine Möglichkeit geben für jeden Schleifendurchlauf den Parameter neu vom Drehregler einzulesen... oder nicht?
Grüße, Malte
15.02.2016, 15:07 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016 15:10 von GerdW.)
Ich habe das erste Beispiel programmiert und will das zweite Beispiel realisieren. Ich schätze du deutest an, dass Labview den Drehregler in der Schleife selber haben will. Mein Problem ist dann aber noch, dass sich die While-Schleife in einem SubVI befindet, ich möchte den Drehregler aber über das Frontpanel des MainVIs bedienen. Gibt es hierfür noch einen Workaround?
Danke für deine Hilfe und Geduld,
Malte
15.02.2016, 15:22 (Dieser Beitrag wurde zuletzt bearbeitet: 15.02.2016 15:25 von GerdW.)
Zitat:Mein Problem ist dann aber noch, dass sich die While-Schleife in einem SubVI befindet, ich möchte den Drehregler aber über das Frontpanel des MainVIs bedienen.
Das hast du bisher aber noch nicht erwähnt!
Mit einem VI im Anhang wäre das alles sicher schneller gegangen…
Zitat:Ich schätze du deutest an, dass Labview den Drehregler in der Schleife selber haben will.
Und schon sind wir wieder beim Schlagwort THINK DATAFLOW!
Zitat:Gibt es hierfür noch einen Workaround?
Ja klar, LabVIEW ist schließlich eine Programmiersprache…
- offensichtliche Lösung: Schleife aus dem subVI entfernen…
- andere Lösung: das "subVI" nicht in der Hauptschleife deines MainVIs laufen lassen, sondern parallel dazu. Dann die Daten wie zwischen parallelen Schleifen üblich transportieren (Melder, Queues, globale Variablen, FGVs/AEs, …).
Mal was grundsätzliches: Je mehr Informationen (Bilder, VIs, Beschreibungen) du über dein Problem bereitstellst, desto treffsicherer werden die Antworten/Lösungen…
Erstmal danke nochmals für die Hilfe, klappt jetzt soweit.
Es hat sich nur leider ein zweites Problem aufgetan. Den Parameter, den ich in jeder Schleife übergebe, brauche ich auch noch an anderer (früherer Stelle). Wegen des Dataflow Prinzips kann ich diesen Parameterwert ja nicht aus der erst später ablaufenden Schleife übertragen, wenn ich das probiere kommt auch der Fehler "befindet sich in einer Endlosschleife". Die beiden Prozesse bei denen ich den Parameter brauche müssen auch beide zeitlich getrennt voneinander stattfinden.
Kennt da jemand einen Ausweg?
Grüße, Malte
Anbei das Blockdiagramm, der Parameter von dem ich spreche ist der rot umkreiste Temperaturfühler, der hier erstmal als Bedienelement modelliert ist.
16.02.2016, 12:30 (Dieser Beitrag wurde zuletzt bearbeitet: 16.02.2016 12:31 von GerdW.)
Zitat:kommt auch der Fehler "befindet sich in einer Endlosschleife".
Du willst hier auf einen Wert zugreifen, der aufgrund des DATAFLOW erst zu einem späteren Zeitpunkt ermittelt wird…
So wie dein Bild aussieht, würde ich dir eine Statemachine empfehlen: die States könnten (u.a.) "Vorspülen", "Zünden", "Regeln" heißen. Dann hättest du wieder alles in einer Schleife und somit ständig Zugriff auf den Temperaturmesswert!
Aber ermittelt wird der Wert ja eigentlich nicht, das ist ja bloß ein Temperaturfühler, der während dem Prozess die Temperatur in der Brennkammer misst. Auf diesen Wert will ich dann in verschiedenen Abschnitten des Prozess zugreifen (nur halt natürlich immer den aktuellen Wert zum jeweiligen Zeitpunkt). Das kann doch eigentlich nicht so kompliziert sein oder?
Gruß,
Malte