LabVIEWForum.de - VI öfters benutzen!!

LabVIEWForum.de

Normale Version: VI öfters benutzen!!
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
hallo zusammen,

ich stehe mal wieder vor einem Problem!!

Ich habe ein Programm geschrieben, das mir meine funktionen wunderbar ausführt.

Nun brauche ich das Programm aber ungefähr 10-20 mal.

Das heißt, mit dem einen Programm kann ich an einern Maschine einen Kanal
ansteuern und dem sagen was er machen soll, nun hat die Maschine aber mehrere Kanäle,
und ich will nun das selbe Programm wieder nutzen.

Am bestern wäre es wenn ich das Programm in eine endlosschleife bringen würde, und
wenn ich eins ausgefüllt habe, soll dann auf klick eines Buttons das nächste geöffnet werden,
was dann wieder genau so aussieht, nur vielleicht irgendwo als "2" gekennzeichnet ist.
Und das spiel soll soweit gehen, bis ich Sagen kann, so das ist nun meine letztes!??!?!

Kann mir da jemand helfen.

Vielen Dank

Micha
Hi Micha.

Also ich würde dein Programm als modales Sub-VI programmieren.

Drumrum ein Hauptprogramm mit Endlosschleife und Event-Structure. So kannst du dann diverse Buttons abfragen, ob du und welchen Kanal du messen willst oder ob du das Programm beenden möchtest.

Ist das dann bekannt, wird das Berechnungs-Unterprogramm gestartet und führt seine Arbeit aus. Nach Ende der Berechnung geht es wieder ins Haupt-VI zurück und du kannst wieder wählen, was du machen willst.

Hoffe, dass das hilft.
Gruß,
Joe
Hi,

es gibt bis jetzt nur ein VI, indem alles enthalten ist!!!!

in dem VI wird der Kanal auch angesteuert und das gemacht was er machen muss.

Das nächste Programm was ausgeführt werden muss, soll genau so aussehen und
die selben Funktionen haben, (also das glitze gleiche), es soll auch nach dem ersten
ausgeführt werden.

Als erstes sollte ich alle z.b. 20 (gleichen Programme) einstellen können.
(alles was ich brauche, in meinen Programm).
Als nächsten Schritt sollte ich das dann ausführen könne, und es wird
einfach Programm 1 dann Programm 2 dann Programm 3 usw. ausgeführt
(nacheinander, wenn das eine 1 fertig dann das 2, usw.).

So habe ich mir das gedacht?!?!

Danke
' schrieb:So habe ich mir das gedacht?!?!
Und genau so machst du es auch.

Ich gehe davon aus, mit "Programm" meinst du (z.B.) einen Datensatz - also kein Programm im Sinne eines VIs. Von diesen Datensätzen hast du also (z.B.) 20 Stück. Dann ist das ganz einfach. Dieses Datensatz (der möglicherweise ja schon als Cluster vorliegt) ziehst du in ein - ARRAY (meinetwegen darf das Array auch global sein). An dein bestehendes SubVI übergibst du nun den Index im Array, welcher Datensatz abgearbeitet werden soll.
' schrieb:Hi,

es gibt bis jetzt nur ein VI, indem alles enthalten ist!!!!
Vor allem das "BIS JETZT" gefällt mir in dem Satz sehr gut.
Ein Programm mit nur einem einzigen VI aufzubauen ist nicht wirklich übersichtlich. Und die Funktionalität, wie du sie beschreibst, ist nunmal ideal dazu geeignet, ein steuerndes Element außenrumzubauen.
Dafür hast du doch auch in diesem Forum hier nachgefragt, weil es nicht so funktioniert, wie du es bislang angegangen bist.
Daher hab ich dir eine mögliche Lösung angeboten, die wahrscheinlich auch ohne Probleme und großen Aufwand funktionieren wird. Ob du das jetzt verwendest, ist ja dir überlassen.

Zitat:in dem VI wird der Kanal auch angesteuert und das gemacht was er machen muss.

Das nächste Programm was ausgeführt werden muss, soll genau so aussehen und
die selben Funktionen haben, (also das glitze gleiche), es soll auch nach dem ersten
ausgeführt werden.
Unter der Voraussetzung, dass du nur ein VI haben willst, müsste dich das Programm also nach einem Durchlauf fragen, ob du weitermessen willst und was du weitermessen willst. Schon alleine hierfür wäre ein SubVI geeignet. Aber ok, das geht auch ohne.
Wenn der Benutzer dann sagt, es soll noch eine weitere Messung kommen, musst du abfragen, welchen Kanal und dann ruft sich das Programm iterativ wieder auf.

Wenn du irgendwann dann sagst, dass alle Messungen gemacht wurden, muss dein Programm nur Stück für Stück aus der Verschachtelung wieder rauskommen, damit alle Referenzen geschlossen werden.

Das geht, ist aber furchtbar unübersichtlich.

Zitat:Als erstes sollte ich alle z.b. 20 (gleichen Programme) einstellen können.
(alles was ich brauche, in meinen Programm).
Als nächsten Schritt sollte ich das dann ausführen könne, und es wird
einfach Programm 1 dann Programm 2 dann Programm 3 usw. ausgeführt
(nacheinander, wenn das eine 1 fertig dann das 2, usw.).
Das hat nur einen Nachteil. Wenn du mittendrin entscheidest, dass du deine Messungen doch nicht weiterführen willst, dann arbeitet der erstmal alles ab, was du so am Anfang konfiguriert hast. Es sei denn, du arbeitest dir irgendwie noch einen Notaus-Schalter mit ein.

Alles in allem gibt es viele Möglichkeiten, dennoch empfinde ich den von dir angedachten als zu umständlich und kompliziert für eine Umsetzung.

Gruß,
Joe
' schrieb:Und genau so machst du es auch.

Ich gehe davon aus, mit "Programm" meinst du (z.B.) einen Datensatz - also kein Programm im Sinne eines VIs.
OK, das ist dann wohl die erste Frage, die beantwortet werden muss. Ist das "Programm" ein Datensatz, wie du das meinst, oder ein VI, so wie ich das verstehe?

Weil davon hängt ganz entscheidend ab, was das sinnvollste Vorgehen ist.
Wenn ich dich richtig verstanden habe, würde ich das so machen:

1. Du änderst dein Programm um in ein SubVi:
- Als Eingang gibst du einen Numeric, der die Nummer des Programms anzeigt
- Als Ausgang einen Boolean, der sagt, ob noch ein Programm aufgerufen werden soll
- Du musst dann auch noch das Fenstererscheinungsbild (Vi Einstellungen -> Fenstererscheinungsbild) anpassen, sodass das FP angezeigt wird.

2. Du erstellst ein Hauptvi, indem du dein Programm in einer Schleife aufrufst. Als Abbruch nimmst du den Boolean aus dem SubVi. Den Schleifenindex kannst du als Eingang nehmen.

- Den Eingang fürs SubVi brauchst du natürlich nicht unbedingt. Das ist nur, damit du angezeigt bekommst, das wievielte Programm gerade läuft.

- Du könntest natürlich auch gewisse Sachen aus dem SubVi ins Hauptvi auslagern. Z.B.: Könntest du mittels Statmachine das starten eines weiteren Programmes per Knopfdruck machen. Aber das führt hier wohl zuweit.

Im Anhang ein Beispiel.

Gruß
Joe:

Also es ist tatsächlich ein VI, und keine Datensätze die ich da habe!?!?!?

Und mein Programm ist garnicht so kompliziert, das es in einem unübersichtlich wird.


Kvasir:

Die Idee mit dem einen Haupt VI, finde ich eiegtnlich garnicht schlecht!!!!


Vorallem weil sich da das Haupt VI garnicht öffnet sondern sofort das unter VI.


aber wie kann ich ihm nun sagen , dass er alle die ich gespeichert habe nacheinander ausführen soll??

Hiermit kann ich alles einstellen aber, starten??
Ich dachte deine Programme seien alle ident?
Du willst nur Parameter innerhalb ändern?

Dann brauchst du ja nur das Hauptvi starten. Dann öffnet sich von selbst das Programm. Wenn du auf nächstes drückst öffnet sich das Programm wieder und du kannst deine Einstellungen ändern.
Das geht solange, bis du auf beenden klickst.

Du musst also dein Programm wirklich nur einmal abspeichern.

edit: Ok habe gerade gelesen, du willst zuerst alle Einstellungen treffen.
Habe dir also noch ein Beispiel erstellt, wie du das ganze Alternativ angehen könntest.

- Im Hauptvi kannst du nun einen Parameter einstellen. Je nachdem wieviele du angibst (Elemente im Array) wird dein Programm entsprechend oft dann durchlaufen.

- Mittels Button und Case Struktur startest du dann dein SubVi. Das steckt in einer For-Schleife und wird sooft aufgerufen, wie Parameter angegeben.

Gruß
Hallo ich nochmal,

also eure Hilfe war bis jetzt echt hilfreich,
aber ich muss nochmal das ganze erklären!?!?!?

ich habe dieses Programm, in diesem programm muss ich einstellungen machen können, d.h. ich will das es nie
heizt.
Dann solte wie oben rechts angedeutet sich beim klicken auf dem knopf nächstes programm, das gleiche nochmals öffnen, und
in dem kann ich dann wieder was einstellen, z.b. Heizen nach.....
dann sollte beim klicken wieder das nächste kommen.

Jetzt sollte noch ein Button kommen indem steht START. wenn ich nun diesem betätige sollte er programm 1 und dann Programm 2
und programm..... ausführen, und immer erst 1 dann 2 dann ... .
Seiten: 1 2
Referenz-URLs