Argh, dieses Programm macht mich noch wahnsinnig ;-) Ich würde gerne ein ganz einfaches Sub VI mit einem Eingang und einem Ausgang bauen (z.B. ein +1-Addierer). Aber wie bekomme ich den Ein- und Ausgang an mein VI (so dass man im Top-Level VI etwas an mein VI anschließen kann)? Ich kann in der ganzen Library keinen Input bzw. Output-Connector Baustein finden. Auch die Hilfe bzw. Google konnten mir diese Frage nicht beantworten... Hilfe!
Hallo! Links neben dem VI Symbol findest Du die Anschlussbelegung. (Frontpanel-Ansicht) Über die rechte Maustaste kann man diese verändern. Anschluss: Erst auf den Anschluss klicken (wird schwarz), danach auf das Bedien-/Anzeigeelement (Mauszeiger wird zur "Garnrolle") VI speichern - Bei VI einfügen sollten dann die oben festgelegten Anschlüsse vorhanden sein. Achtung! Wenn nachträglich Anschlüsse verändert werden, muss im "Haupt"-VI über "rechte Maustaste - Mit SubVI neu verbinden" die Konsistenz neu hergestellt werden. Mirko
Hi, danke erstmal. Das ist auch das was man immer im Netz findet. IMHO ist das aber keine Lösung, denn: 1. Braucht mein VI kein Frontpanel. Daher würde ich gerne auf Steuerelemente verzichten. 2. Funktioniert das nicht ;-) Das VI bekommt dann zwar tatsächlich die Connectoren. Aber weder Inputs die ich anlege kommen beim VI an, noch bekomme ich auf dem Top-Level die Outputs meines VI zu sehen...
Boris B. schrieb: > Hi, danke erstmal. > Das ist auch das was man immer im Netz findet. > IMHO ist das aber keine Lösung, denn: > > 1. Braucht mein VI kein Frontpanel. Daher würde ich gerne auf > Steuerelemente verzichten. Die definieren aber die Datentypen. Du musst dem SubVI nur sagen, dass er diese nicht exportieren soll, sondern nur im Sub Vi gültig sind.
Boris B. schrieb: > 2. Funktioniert das nicht ;-) > Das VI bekommt dann zwar tatsächlich die Connectoren. Aber weder Inputs > die ich anlege kommen beim VI an, noch bekomme ich auf dem Top-Level die > Outputs meines VI zu sehen... Du musst die Anschlüsse natürlich auch noch verschalten. Wie soll er sonst wissen, was ein- und Ausgang ist?
1. VIs in LabView haben immer so ein Frontpanel. Gehört zu dem schrott wohl dazu. 2. Musst du in deinem SubVI den Input/Output mit einbauen und verwenden. Hab das jetzt leider nicht auf dem Rechner deshalb kann ich das nicht so genau beschreiben. Sollte aber 1000x im Netz beschrieben sein.
ASDF schrieb: > Du musst die Anschlüsse natürlich auch noch verschalten. Wie soll er > sonst wissen, was ein- und Ausgang ist? Ich denke das habe ich: In meinem Sub-VI habe ich einen Addierer (Input + Konstante), ein Numeric Input und ein Numeric Output (auf dem Front-Panel). Letztere sind mit Terminals (komisches Icon oben rechts) verbunden. Im Top-Level-VI sind nun 2 Anschlüsse an meinem Sub-VI verfügbar. Hier habe ich nochmals zwei Numric controls angeschlossen, um mein Sub-VI zu testen. So weit so gut? Leider regt sich da nix. Wenn ich mein Sub-VI direkt teste, funktioniert es hingegen tadellos... Nur die Integrations in das Top-Level-CVI scheint schief zu gehen.
Was hast du an den Ausgang angeschlossen? Eine Ausgabeeinheit ist normalerweise kein Numeric Control
An einen Numeric Indicator. Gibt es noch andere Ausgangstypen?
Boris B. schrieb: > 1. Braucht mein VI kein Frontpanel. Daher würde ich gerne auf > Steuerelemente verzichten. Wie bekommst Du z.Z. Deine Daten in das VI? Irgend ein Eingabe/Ausgabeelement muss doch da sein? Man könnte es noch über globale Variablen machen...allerdings ist das sehr unsauber und entspricht nicht gerade den Datenflussmodell. > 2. Funktioniert das nicht ;-) > Das VI bekommt dann zwar tatsächlich die Connectoren. Aber weder Inputs > die ich anlege kommen beim VI an, noch bekomme ich auf dem Top-Level die > Outputs meines VI zu sehen... Poste bitte mal das VI als Bild (PNG), Irgendwie hast Du da was vergessen zu verbinden. Mirko
Hast Recht, ein Bild sagt mehr als 1000 Worte :-) Oben ist mein Sub-VI. Darunter die "Testumgebung" (Top-Level-VI). Da sind jetzt 2 Dinge drin (beide funktionieren nicht auf dem Top-Level): 1. Ein +1-Addierer 2. Ein Generator, der jede Sekunde eine Zufallszahl ausspuckt
So auf den ersten Blick kann das nicht klappen: Du hast eine While-Schleife, welche niemals verlassen wird, da die Abbruchbedingung nicht erfüllt wird. Welchen Wert soll das Sub-VI also beim beenden(!) zurückliefern? Immer im Hinterkopf behalten, dass man nach dem Datenfluss-Prinzip programmiert: Was irgendwo rein geht, muss auch wieder rauskommen... ;) Mirko
...ich sollte mich vielleicht doch mal anmelden: Einfach im Haupt-VI mal die kleine Lampe neben dem Startknopf anschalten: Und schon sieht man wo es hängt... ;) Mirko
MirkoB schrieb: > So auf den ersten Blick kann das nicht klappen: > > Du hast eine While-Schleife, welche niemals verlassen wird, da die > Abbruchbedingung nicht erfüllt wird. Welchen Wert soll das Sub-VI also > beim beenden(!) zurückliefern? > > Immer im Hinterkopf behalten, dass man nach dem Datenfluss-Prinzip > programmiert: Was irgendwo rein geht, muss auch wieder rauskommen... ;) > > Mirko Ja Mooooment ;-) Der Zufallszahlengenerator soll ja kontinuierlich laufen, und jede Sekunde einen Wert ausspucken. Dieser soll dann weitere Aktionen antriggern... (Er ist also eine Quelle im Datenfluss)
:
Bearbeitet durch User
Einfach die While Schleife vom Sub-Vi um das Haupt-Vi legen... ;) Ansonsten könnte das noch über einen (User-)Event lösbar sein. ... Oder über eine globale Variable, welche auf ihre Aktualität geprüft wird. (If WertNeu # WertAlt Then Neue Zufallszahl) Wege gibt es derer viele. Wie würdest Du es in einer anderen Programmiersprache lösen? PAP erstellen und in Labview umsetzen. ;) Mirko
Also es gibt ja z.B. auch Waveform-generatoren in labview. Das wäre ja im prinzip das, was ich auch will: Eine Schliefe, die als Quelle in bestimmten Zeitabständen Daten ausgibt. Die muss ja auch irgendwie implementiert sein?
Boris B. schrieb: > Eine Schliefe, die als Quelle in bestimmten Zeitabständen Daten ausgibt. > > Die muss ja auch irgendwie implementiert sein? Schau es Dir an: rechte Maustaste -> Frontpanel öffnen -> Konvertieren Dann liegt es Dir als normales VI vor. Und dir wird auffallen, dass es immer einen Wert gibt, der die Anzahl der zu erzeugenden Werte enthält. So etwas wie Du vorhast geht zwar, aber sehr umständlich und ist alles andere als sauber. Dir sind die Grundzüge der Datenflussprogrammierung noch nicht so richtig vertraut. Wie würde man es in einer anderen Programmierpsrache lösen? Timer auf 1 sek -> Interrupt -> Zufallszahl in eine Variable schreiben -> dem Hauptprogramm mitteilen, dass eine neue Zufallszahl da ist -> In ROutine für Verabreitung springen uswusf. Geht alles mit Eventstrukturen zu machen... ...oder man erzeugt die Zufallszahl, wenn man sie braucht. Mirko
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.