LabVIEWForum.de - Verständnisfrage zu SubVI

LabVIEWForum.de

Normale Version: Verständnisfrage zu SubVI
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Leute,

ich hab da mal ein paar grundlegende Fragen zu SubVI´s.

So wie ich das jetzt gesehen habe, werden Daten bei Aufruf an das SubVI übergeben, dieses dann abgearbeitet und anschließend die Daten ausgegeben? Erst danach wird das Hauptprogramm fortgesetzt?

Ich möchte nun eine Motorsteuerung als SubVI programmieren.
Darin soll der Motor mit Rampe anfahren, solange eine Freigabe vom Hauptprogramm erteilt ist.
Fällt diese Freigabe weg, so soll der Motor abgebremst werden.

Ich sehe nun nur die Möglichkeit, das SubVI mehrmals hintereinander aufzurufen um darin dann die Rampe zu berechnen?
Gibts da noch ne elegantere Version? Und wenn nein, wie übergebe ich Werte vom vorherigen Aufruf des SubVIs an den nächsten Aufruf des SubVIs? Ein Schieberegister ausserhalb ist mir eingefallen, aber ich würde es lieber innerhalb des SubVIs lösen...


Das SubVI sollte kontinuierlich Daten von einem Wegmesssystem bekommen und kontinuierlich den Motor dazu regeln.


Grüße,

Tom

PS: LabVIEWversion 7.1
' schrieb:So wie ich das jetzt gesehen habe, werden Daten bei Aufruf an das SubVI übergeben, dieses dann abgearbeitet und anschließend die Daten ausgegeben?
Das ist soweit richtig. Das ist das allgemeine Vorgehen mit einem SubVI.

Zitat:Erst danach wird das Hauptprogramm fortgesetzt?
Das ist nur bedingt richtig. Es wird der der Datenfluß gestoppt - respektive fortgesetzt, in den das SubVI eingebunden ist. Wenn du mehrere Datenflüße parallel hast, werden die parallelen unabhängig von diesem SubVI weitergeführt.

Zitat:Ich möchte nun eine Motorsteuerung als SubVI programmieren.
Darin soll der Motor mit Rampe anfahren, solange eine Freigabe vom Hauptprogramm erteilt ist.
Fällt diese Freigabe weg, so soll der Motor abgebremst werden.
Mach das SubVI als Modul, selbständig laufend (also ohne Einbindung in einen Datenfluß), steuerbar mittels Queue etc.

Zitat:Ich sehe nun nur die Möglichkeit, das SubVI mehrmals hintereinander aufzurufen um darin dann die Rampe zu berechnen?
Genau dieses ist ja schlecht. Deswegen also ein Modul, das selbständig läuft und durch eine Queue gestuertet wird.

Zitat:Gibts da noch ne elegantere Version? Und wenn nein, wie übergebe ich Werte vom vorherigen Aufruf des SubVIs an den nächsten Aufruf des SubVIs? Ein Schieberegister ausserhalb ist mir eingefallen, aber ich würde es lieber innerhalb des SubVIs lösen...
Das SubVI sollte kontinuierlich Daten von einem Wegmesssystem bekommen und kontinuierlich den Motor dazu regeln.
Das Modul besteht aus einer While-Schleife, die beliebig viele Schieberegister hat. In der While-Schleife ist eine case-Sequenz, die als Statemachine dienen kann. Neben der Case-Sequenz steht eine Queue-Abfrage, die Anforderungen von außen bearbeitet. Dann kann es noch eine Queue bzw. einen Melder geben, der Daten nach außen gibt. Wie das Modul genau aufgebaut ist ist dabei völlig egal. Hauptsache While-Schleife mit Schieberegistern, Case-Sequenz und Queue.
' schrieb:Mach das SubVI als Modul, selbständig laufend (also ohne Einbindung in einen Datenfluß), steuerbar mittels Queue etc.

Hei,

das hört sich schon ziemlich gut an! Cool
Kannst Du mir noch kurz auf die Sprünge helfen, wie ich es zu einem "Modul" mache?


Grüße,

Tom
' schrieb:Kannst Du mir noch kurz auf die Sprünge helfen, wie ich es zu einem "Modul" mache?
Umbauen geht nicht. Neu machen ist wahrscheinlich angesagt. Weißst du was eine Queue ist und wie man sie verwendet etc? Hilfe lesen! Das selbe für Statemachine?

Guckst du hier - Muster Ohne Wert.
' schrieb:Umbauen geht nicht. Neu machen ist wahrscheinlich angesagt. Weißst du was eine Queue ist und wie man sie verwendet etc? Hilfe lesen! Das selbe für Statemachine?

Guckst du hier - Muster Ohne Wert.


Hei,

vielen Dank für Deine Hilfe! Neumachen ist kein Problem. Ich stehe eh noch ziemlich am Anfang.
Bis gerade eben wusste ich nicht was ein "Queue" ist, aber ich lese mich bereits ein. Cool
Statemachine? Das ist (wenn ich es richtig verstanden habe) wohl sowas wie mein Problem mit den zwei Schaltern, das ich mit einer Ereignisstruktur gelöst habe.

Herzlichen Dank für Deine Hilfe!


Grüße,

Tom
]
' schrieb:Hei,

vielen Dank für Deine Hilfe! Neumachen ist kein Problem. Ich stehe eh noch ziemlich am Anfang.
Bis gerade eben wusste ich nicht was ein "Queue" ist, aber ich lese mich bereits ein. Cool
Statemachine? Das ist (wenn ich es richtig verstanden habe) wohl sowas wie mein Problem mit den zwei Schaltern, das ich mit einer Ereignisstruktur gelöst habe.

Herzlichen Dank für Deine Hilfe!
Grüße,

Tom

Stop

Hallo erstmal.

Also verwechel bitte Eventstrukturen nicht mit State Machines.

Da gibts nur 2 Möglichkeiten. Hilfe lesen oder die beiden Strukturen mal als Vorlage laden und vergleichen.

Weiters wäre der Basic 1 Kurs zu entpfehlen, da wird zumindestens die Statemachine erklärt.

Edit: Hab noch einen Beitrag aus dem Forum gefunden:

Hier ein vergleich zwischen Statemachine und eventstruktur

mfg blacky
' schrieb:Weiters wäre der Basic 1 Kurs zu entpfehlen, da wird zumindestens die Statemachine erklärt.

Hei,

vielen Dank für Deinen Hinweis!
Hab gerade den Basic I hinter mir, aber State Machines haben wir nicht drangenommen.
Werde mich gleich noch genauer einlesen... Dein Link hilft mir.


Grüße,

Tom
Ich würde in dem Fall lieber einen "Treiber" empfehlen. Pro Aktion (Init, Start, Stop, Move, Close) ein SubVI machen und das entsprechende SubVI im Hauptprogramm verwenden.

Dabei hat aber dein Motor auch irgendwelche Statis, aktuelle Werte u.s.w. Diese würde ich in einen (Typedef) Cluster packen und in jedem TreiberVI als Eingang und Ausgang definieren und diesen Cluster im HauptVI vom SubVI zum SubVI verdrahten.


Gruß
Offtopic2
' schrieb:Dabei hat aber dein Motor auch irgendwelche Statis,

/KLUGSCHEISSMODUS_ON

Also wenn schon, dann "Stati"...aber auch das ist Quatsch! Das wäre so wie "Praktikas" als Mehrzahl von "Praktikum"...es ist halt einfach ein "s" zuviel...

Die Mehrzahl von "Status" ist "Status" (gesprochen etwa "Statuuuus")

KLUGSCHEISSMODUS_OFF/


Gruß
Achim
' schrieb:Offtopic2
/KLUGSCHEISSMODUS_ON

Also wenn schon, dann "Stati"...aber auch das ist Quatsch! Das wäre so wie "Praktikas" als Mehrzahl von "Praktikum"...es ist halt einfach ein "s" zuviel...

Die Mehrzahl von "Status" ist "Status" (gesprochen etwa "Statuuuus")

KLUGSCHEISSMODUS_OFF/
Gruß
Achim


Sorry, gut zu wissen.

P.S. Modus wird aber zu Modi. Aber klar, ein "s" ist hier auf jeden Fall zu viel.
Seiten: 1 2
Referenz-URLs