Lokale Variable in Unterprogramm - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Lokale Variable in Unterprogramm (/Thread-Lokale-Variable-in-Unterprogramm) |
Lokale Variable in Unterprogramm - vogster - 06.03.2007 11:41 Hallo Forum! Ich habe folgendes Problem: Mein Unterprogramm besteht aus einer While-Schleife, darin defindet sich eine Sequenz. In dieser Sequenz wird eine lokale Variable erste auf TRUE, später dann wieder auf FALSE gesetzt. (Lampe an, dann wieder aus) Die Lampe befindet sich außerhalb aller Schleifen auf der Hauptebene. Im Programm selber funktioniert alles, nur nachdem ich ein Unterprogramm erstellt habe, tut sich bei meiner Lampe nix mehr! Hat jemand eine Idee? Mit freundlichen Grüßen und vielen Dank für Eure Mühe! Vogster Lokale Variable in Unterprogramm - Achim - 06.03.2007 12:03 Hi, du musst den Wert aus dem SubVI in dein Hauptprogramm bringen! Das geht über Konnektoren oder in Notfällen auch über globale Variablen. Wenn du die lokale Var in dein Sub kopiert hast, wurde dort automatisch auch ein entsprechendes Control erstellt, dieses wird nun vermutlich im SubVI auch korrekt gesetzt! Das könntest du jetzt als Ausgangskonnektor des SubVIs verwenden und dann im HaupVI an deine "echte" Lampe anschließen...dann klappts auch mit dem Nachbarn... Gruss Achim Lokale Variable in Unterprogramm - vogster - 06.03.2007 12:29 Hi Achim, eigentlich müsste ich das auch so gemacht haben. Vielleicht noch ein paar Infos: Mein SubVI wird im späteren HauptVI mehrmals verwendet (5+), daher wollte ich keine globale Variable nutzen. Im SubVi habe ich während der Erstellung mit dem Kabel-Tool alle Ein- und Ausgänge mit dem Feld oben rechts verbunden. Insgesamt habe ich 7 Verbindungen. Eines ist mir aufgefallen: Oben rechts im Feld ändern sich ja die Farben entsprechend des verwendeten Datentyps. Bei einem Schalter ist die Farbe grün, bei meiner Lampe ist die Farbe eher dunkelgrün. Kann das etwas damit zu tun haben? Danke für Deine / Eure Mühe! Vogster Lokale Variable in Unterprogramm - Achim - 06.03.2007 12:39 Hi, nee, grün ist grün...nur solange der Anschluss noch markiert ist, ist er dunkelgrün! Wenn du das VI mehrfach verwendest: Wird das evtl. "gleichzeitig" aufgerufen? Evtl. nützt es dann was, wenn du es "ablaufinvariant" (reentrant execution) definierst (rechtsklick aufs Icon oben rechts >> VI Properties >> Execution)! Ansonsten: Poste mal dein VI... Gruss Achim Lokale Variable in Unterprogramm - vogster - 06.03.2007 13:08 Also, hier ist mein VI! Als eigenständiges VI tuts ohne Probleme. Nur als Unterprogramm wird die Lampe nicht bedient. [attachment=5491] Danke für Eure Mühe! Vogster Lokale Variable in Unterprogramm - eg - 06.03.2007 13:14 Was ich da nicht verstehe: warum übergibst du einem Indicator (deine Lampe) sein Wert noch mal. Gruss, Eugen P.S. Bitte nicht ernst nehmen: es ist ähnlich wie wenn du dir die linke Hand mit der rechten drückst und sagst "Hallo" Lokale Variable in Unterprogramm - eg - 06.03.2007 13:21 Und zum Thema würde ich dringend eine State Machine empfehlen. Trotzdem mein Vorschlag im Anhang. Gruss, Eugen Lokale Variable in Unterprogramm - Achim - 06.03.2007 13:28 Hi, mit Verlaub: Hä? Was machst du da? Evtl. hast du "Abblaufprobleme" (race condition), d.h. du schreibst oder liest zu früh oder zu spät...dann könnte eg's Tip was nützen...aber ich werd generell aus deinem Screenshot nicht schlau! Was bringt die Übergabe Control->Variable? Und auch noch außerhalb deiner Sequenz?! Das wird ja zu einem bezüglich der Sequenzreihenfolge undefinierten Zeitpunkt abgearbeitet...und ist auch noch sinnlos...wie eg schon sagte... Gruss Achim PS: Erklär doch nochmal, was du vorhast und poste mal ein komplettes VI, das deinen "Fehler" verdeutlicht! Lokale Variable in Unterprogramm - vogster - 06.03.2007 13:52 Hallo, ich möchte die Lampe anschalten und dann nach einer gewissen Zeit wieder ausschalten. So wie in meinem VI dargestellt, funktioniert das auch. Nur halt dann in einem Unterprogramm nicht. Wo muss die Lampe denn am besten hin, oder welche Alternative habe ich beim Ein- und Ausschalten von Lampen. Ich bin erst seit einer Woche mit LabVIEW am daddeln, ich habe das ganze Prinzip noch nicht so geblickt. Ich setzte die lokale Variable auf True, dann wieder auf False, das müsste doch eigentlich gehen. Vielen Dank für Eure Mühe! Vogster Lokale Variable in Unterprogramm - eg - 06.03.2007 13:54 ' schrieb:Hallo, Ja, richtig, nur du musst noch wissen, dass deine lokale Variable die Abbildung deiner Lampe schon ist. Du musst nicht zuerst in die lokale Variable schreiben und dann von der lokalen Variable in die Lampe. Gruss |