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 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
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
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
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?
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
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
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!
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
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
06.03.2007, 13:54 (Dieser Beitrag wurde zuletzt bearbeitet: 06.03.2007 13:54 von eg.)
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
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.