Hallo Leute,
irgendwie will mein Programm nicht so, wie ich es möchte. Die Programme aus "Einführung in Labview" konnte ich immer ohne Probleme als Unterprogramme einbinden, nur funktioniert es hier derzeit nicht. Ich komm auch einfach nicht weiter. Wenn ich das Programm als Unterprogramm einbinde und starte, wird zwar das Programm sauber ausgeführt (wenn man sich das Unterprogramm anzeigen lässt), aber die Daten die es anzeigen soll werden nicht ins Hauptprogramm übergeben - ich hoffe das ist so verständlich ausgedrückt.
Vielleicht kann mal jemand kurz drüber sehen und sich mal daran versuchen, es als Unterprogramm hinzubekommen. Vielen Dank!
Grüße, Ludwig
Hallo Ludwig,
- wozu die Sequenzstruktur?
- wozu die lokale Variable Stopp, wenn deren Terminal ungenutzt rumliegt?
- wieso verbindest du sowohl "derzeitige Drehzahl" als auch den Chart als VI-Ausgang? Beide liefern den gleichen selben Wert...
- wozu die "Stop"-Funktion in der Schleife? Die würde dein komplettes Programm stoppen...
Lösung:
THINK DATAFLOW!
Werte eines subVI werden erst nach Abarbeitung des subVI weitergereicht!
Vielen Dank für die flinke Hilfestellung!
(02.07.2012 12:05 )GerdW schrieb: [ -> ]Hallo Ludwig,
- wozu die Sequenzstruktur? Habe das komplette Programm, das wir schon in unsere Steuerungssoftware eingebunden haben, so rauskopiert. Natürlich funktioniert es auch so, hab ich vergessen zu löschen.
- wozu die lokale Variable Stopp, wenn deren Terminal ungenutzt rumliegt? Hab ich nun rausgenommen
- wieso verbindest du sowohl "derzeitige Drehzahl" als auch den Chart als VI-Ausgang? Beide liefern den gleichen selben Wert... Ich wollte es mir so visuell ausgeben lassen, die derzeitige Drehzahl und halt einen Wert haben um ihn an den Motor weiterzugeben. Vermutlich sinnlos, wenn du das so hinterfragst.
- wozu die "Stop"-Funktion in der Schleife? Die würde dein komplettes Programm stoppen... Hab ich nun auch rausgenommen, danke.
Lösung:
THINK DATAFLOW!
Werte eines subVI werden erst nach Abarbeitung des subVI weitergereicht!
Also würde das heißen, es bringt mir an dieser Stelle garnichts, das Programm als Unterprogramm zu deklarieren, wenn ich die Daten sofort nutzen möchte?! (Drehzahl eines Motors, stufenlos drehbar) Hab ich das so richtig verstanden?
Danke!
Grüße, Ludwig
Hallo Ludwig,
Zitat:es bringt mir an dieser Stelle garnichts, das Programm als Unterprogramm zu deklarieren, wenn ich die Daten sofort nutzen möchte?!
Es bringt dir dann etwas, wenn du den DATAFLOW beachtest.
Z.B. könnte dies geschehen, in dem du die Whileschleife im subVI entfernst...
(02.07.2012 13:58 )GerdW schrieb: [ -> ]Hallo Ludwig,
Zitat:es bringt mir an dieser Stelle garnichts, das Programm als Unterprogramm zu deklarieren, wenn ich die Daten sofort nutzen möchte?!
Es bringt dir dann etwas, wenn du den DATAFLOW beachtest.
Z.B. könnte dies geschehen, in dem du die Whileschleife im subVI entfernst...
Danke das du mich auf den richtigen Weg bringen möchtest, nur irgendwie stell ich mich eben wohl nicht gerade clever an. Die WhileSchleife hatte ich schon entfernt, aber irgendwie macht es einfach nicht das, was es soll. Nach wie vor hab ich das Problem mit dem DATAFLOW (wenigstens weiß ich nun, was damit gemeint ist
)
Danke für deine Geduld.
Grüße, Ludwig.
Hallo Ludwig,
THINK DATAFLOW!
Dein subVI gibt momentan nur den letzten Wert deiner Drehzahlrampe aus.
Warum wohl? Einfach mal debuggen und über den DATAFLOW nachdenken...
Mögliche Lösung: Aufgaben funktional trennen.
Das subVI erledigt das Einlesen der Datei und das Generieren der Rampe. Punkt. Mehr nicht.
Das MainVI bekommt die ganze Rampe (als Array) und übernimmt die Ausgabe der Rampe - oder überlässt dies einem weiteren subVI...