LabVIEWForum.de
Mehrere fertige VI's in eine Anwendung - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Application Builder (/Forum-Application-Builder)
+---- Thema: Mehrere fertige VI's in eine Anwendung (/Thread-Mehrere-fertige-VI-39-s-in-eine-Anwendung)

Seiten: 1 2


Mehrere fertige VI's in eine Anwendung - pumpkin - 02.03.2007 21:46

Hallo Forum,

die SuFu hat nichts Gescheites ausgespuckt, darum, mit der Gefahr gleich geschlachtet zu werden, eröffne ich ein neues Thema.

Folgendes: Ich möchte mehrere fertige VI's (Beispiele aus LV) in eine Anwendung packen. Nun bin ich jedoch noch reichlich unerfahren was LV angeht Dry . Bei den VI's handelt es sich um DAQmx nutzende Sachen (FFT, FRF, ...). Knüppel ich die Sachen zusammen in ein Blockschaltbild funktioniert die Sache nicht - Recourcenkonflikt, richtig? Also denke ich mir, ich mache Abhängigkeiten um die 'Einzel'blöcke - von einem "Haupt-VI" werden dann die einzelnen unter-VI's an- oder abgeschalten. Jeweils immer nur eins, nie zwei gleichzeitig. Geht das so, oder gehts so nicht, oder gehts eleganter (bestimmt)?

Unsure pumpkin


Mehrere fertige VI's in eine Anwendung - ChrisR - 03.03.2007 08:32

Hallo Pumpkin,

also ich bin auch noch absoluter Neuling in Sachen LV, aber vielleicht klappt sowas mit
einer Case-Struktur, also die SubVIs in die jeweiligen Fälle packen.

Also nur so ne Idee,

beste Grüße Chris


Mehrere fertige VI's in eine Anwendung - Y-P - 03.03.2007 09:55

Hallo,

ich würde Dir da eine State Machine empfehlen. Da war der Tip von ChrisR schon ganz nahe dran (super EinstandBig Grin).
Hier ist der Link zu einer State Machine.
Schau's Dir mal an und wenn Du Fragen dazu hast, dann kannst Du Dich gerne melden.
Bei dem Beispiel kannst Du in jedem "State" (Case) ein anderes VI reinpacken. Die Event-Structure kannst Du nehmen, brauchst Du aber nicht in jedem Fall. Das kommt auf Deine Anwendung an.

Gruß Markus

' schrieb:Hallo Forum,

die SuFu hat nichts Gescheites ausgespuckt, darum, mit der Gefahr gleich geschlachtet zu werden, eröffne ich ein neues Thema.

Folgendes: Ich möchte mehrere fertige VI's (Beispiele aus LV) in eine Anwendung packen. Nun bin ich jedoch noch reichlich unerfahren was LV angeht Dry . Bei den VI's handelt es sich um DAQmx nutzende Sachen (FFT, FRF, ...). Knüppel ich die Sachen zusammen in ein Blockschaltbild funktioniert die Sache nicht - Recourcenkonflikt, richtig? Also denke ich mir, ich mache Abhängigkeiten um die 'Einzel'blöcke - von einem "Haupt-VI" werden dann die einzelnen unter-VI's an- oder abgeschalten. Jeweils immer nur eins, nie zwei gleichzeitig. Geht das so, oder gehts so nicht, oder gehts eleganter (bestimmt)?

Unsure pumpkin



Mehrere fertige VI's in eine Anwendung - pumpkin - 03.03.2007 11:21

sehr angenehm nachzuvollziehen dein beispiel. nur eine sache will ich genau wissen: man betrachte die while-schleife und die übergabepunkte mit den pfeilen (anhang, rot eingekreist). was ist das für ein formeller vorgang? meine betrachtungsweise: nach jedem ausgeführtem rechen-case wird die konstante 'leerlauf' zurückgegeben (à la C: return("leerlauf")) damit eine erneute benutzereingabe erfolgen kann, denn nur in diesem fall (leerlauf) beachtet er neue eingaben. scheint mir sowas wie ein shift-register zu sein Dry .

pumpkin


Mehrere fertige VI's in eine Anwendung - Mr.T - 03.03.2007 11:55

Hallo!

Tatsächlich es ist ein Shift- oder Schieberegister, welches für die Verschiedensten Datentypen verwendet werden kann. Unter anderem für diese ENUMs. Wenn Du einen Rechtsklick direkt auf der Schleife durchführst kannst Du einen hinzufügen:

[attachment=5461]

Wenn Du am "Pfeil" nach unten ziehst, also am "linken" Schieberegister, hast Du tatsächlich noch die Möglichkeit die vorangegangenen Inhalte vorheriger Schleifendurchläufe auszuwerten.

Sprich: In diesen Schieberegistern steht Dir links der Inhalt im folgenden Schleifendurchlauf zur Verfügung, den Du rechts übergeben hast (Datenflussprinzip).

Diese Struktur kannst Du also verwenden. Natürlich gibt es auch jede Menge anderer Möglichkeiten.

Gruß

P.S.: Hier wird keiner geschlachtet...sind ein gutes ForumBig Grin


Mehrere fertige VI's in eine Anwendung - pumpkin - 03.03.2007 12:13

oha, das mit dem 'nach unten ziehen' hab' ich noch nicht entdeckt. wie läuft das: je mehr ich es nach unten ziehe, desto mehr slots stehen also zur verfügung? oder haben die shiftregister im hintergrund immer eine konstante größe (meinetwegen 256) und versotten mir den arbeitsspeicher? ich denke mal nicht. nicht dass das was zur lösung beiträgt, ich will nur wissen wie LV im hintergrund tickt. Tippen

pumpkin


Mehrere fertige VI's in eine Anwendung - Y-P - 03.03.2007 12:35

Wie Mr. T schon richtig und ausführlich erklärt hat, ist das ein Schieberegister (Shift Register). So kommst Du an alle möglichen vorherigen Werte des Schleifendurchlaufs (durch Erweitern des linken Pfeils nach unten). Im ersten Pfeil (so wie hier) ist immer der Wert des letzten Schleifendurchlaufs.
Im darunterliegenden 2. linken Pfeil (wenn er denn da wäre), wäre dann der Wert des vorletzten Schleifendurchlaufs, im 3. Pfeil der Wert des vorvorletzten Schleifendurchlaufs,.......
Was man bei einem Schieberegister in diesem Fall aber immer machen muss, ist vorinitialisieren. In diesem Fall ist das der "Leerlauf" (links vom "linken Pfeil"), ansonsten könnte es sein, dass beim Aufruf des VIs noch irgendwelche zufälligen Werte drinstehen.
In dem Fall ist gewährleistet, dass bei VI-Start auf jeden Fall der Leerlauf-Case aufgerufen wird.

Gruß Markus

Edit: Ich habe noch einen Screenshot gemacht, damit Du siehst, wie ich das gemeint habe.


Mehrere fertige VI's in eine Anwendung - pumpkin - 03.03.2007 13:06

danke danke, ist schon klar wie das läuft. aber die frage mit dem speicher wurde noch nicht beantwortet - ist nur interessehalber.

pumpkin


Mehrere fertige VI's in eine Anwendung - Y-P - 03.03.2007 13:16

Hallo,

wie der Speicher exakt zugewiesen wird, weiß ich auch nicht, ich habe LabVIEW nicht entwickelt.
Aber ein Schiebergister und somit eine "Verdrahtung" ist jeglicher Art von Variable, oder einem Property-Node (was den Speicher angeht) vorzuziehen (vgl. auch hier).

Gruß Markus

EDIT: Dies hat auch mit der Speicheroptimierung zu tun und ist von daher bestimmt auch interessant für Dich.

' schrieb:danke danke, ist schon klar wie das läuft. aber die frage mit dem speicher wurde noch nicht beantwortet - ist nur interessehalber.

pumpkin



Mehrere fertige VI's in eine Anwendung - pumpkin - 05.03.2007 20:14

danke für die interessanten (und recht allgemeingültigen) links. leider wird die frage darin nicht beantwortet, was aber auch unwichtig ist.. ^_^

pumpkin