LabVIEWForum.de - Komplizierte Abfrage mit Schleife

LabVIEWForum.de

Normale Version: Komplizierte Abfrage mit Schleife
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo LV-Forum,

ich habe gerade mit einer etwas komplizierten Schleife zu tun.
Hintergrund: Ich moechte, dass meine Pumpe nach der Injektion die Motorrichtung umkehrt und dann wieder die gerade eingespritzte Fluessigkeit herausszieht. Dies solll solange erfolgen bis eine bestimmte Zeit oder ein Volumen erreicht wurde.

Auf dem Papier habe ich mir folgendes ausgedacht:

Status-Abfrage:

if pump direction == 0
next_pump_direction=1
else
next_pump_direction=0
end

while pump status is not T*
if next_pump_direction==1
right flow direction is chosen and pump
next_pump_direction=next_pump_direction-1
else
next pump_direction==0
right flow direction is chosen and pump
next_pump_direction=next_pump_direction+1
end

end

Was ich jetzt leider noch nicht in LabVIew versteh, ist die Behandlung von Variabelplatzhaltern (hier next_pump_direction). Koennte mir das jemand bitte kurz erklaeren und ist meine Abfrage in LabVIEW so ueberhaupt realisierbar?

Vielleicht sollte ich noch sagen, dass die Variabel pump_direction das erste Mal vom User gewaehlt wird und dann soll die next_pump_direction immer automatisch gewaehlt werden.

Vielen Dank.

Gruesse
Blue
Du kannst Deine Werte von "Next pump direction" z.B. in einem Schieberegister durchschleifen, dann hast Du bei jedem Schleifendurchlauf Zugriff darauf.

Gruß Markus
' schrieb:Du kannst Deine Werte von "Next pump direction" z.B. in einem Schieberegister durchschleifen, dann hast Du bei jedem Schleifendurchlauf Zugriff darauf.

Gruß Markus


Hallo Markus,weisst du zufaellig die englische Bezeichnung dafuer? Ist es vielleicht sogar der feedback node?
Mit diesen ganzen Draehten stehe ich gerade auf Kriegsfuss, das ist sehr gewoehnungsbeduerftig wenn man von Matlab kommt.

Vielen Dank fuer deine Antwort.

Ich haenge einmal in LabVIEW 8.5 meinen ersten Ansatz an. Es ist aber noch nicht fertig und ich habe noch Verstaendnisprobleme bei der Umsetzung meiner While-Schleife via der Draehte.

Gruss
Blue
Schieberegister = (engl.) shift register
Rückkopplungsknoten = (engl.) feedback node

Beide haben die gleiche Funktion nur sehen sie unterschiedlich auf dem Blockdiagramm aus. Ich finde die Darstellung vom Schieberegistern um Welten anschaulicher und hab' vorher auch nur in Matlab programmiert.

Edit: Hast du deinen Code aus dem ersten Post vielleicht als Matlab-Code da?


Gruß dimitri
' schrieb:Schieberegister = (engl.) shift register
Rückkopplungsknoten = (engl.) feedback node

Beide haben die gleiche Funktion nur sehen sie unterschiedlich auf dem Blockdiagramm aus. Ich finde die Darstellung vom Schieberegistern um Welten anschaulicher und hab' vorher auch nur in Matlab programmiert.

Edit: Hast du deinen Code aus dem ersten Post vielleicht als Matlab-Code da?
Gruß dimitri


Hallo Dimitri. Danke fuer die Uebersetzung. So kann ich meine LabVIEW-Version einmal danach durchsuchen.
Nein, nicht direkt. Das ist ein wenig Matlab-Code (if, end und Syntax). Tut mir leid, haette dir das bei anderen Sachen weitergeholfen?
Ich habe mich hier am Matlab-Code orientiert, weil ich so ein wenig denke.

Viele Gruesse
Blue
' schrieb:while pump status is not T* Was ist T*? True?
if next_pump_direction==1
right flow direction is chosen and pump Was ist right flow? Eine Variable right_flow? and pump? was heißt 'and pump'?
next_pump_direction=next_pump_direction-1
else
next pump_direction==0
right flow direction is chosen and pump Keine Ahnung was das heißt.
next_pump_direction=next_pump_direction+1
end

end

Den Matlab Compiler will ich sehen der damit was anfangen kann ^_^
Hi Dimitri.
Ja, du hast ja recht, alles ist nicht 100% Matlab-Code. Aber es ware jetzt ja nicht gerade sinnvoll, alle Unterprogramme auch noch zu uebersetzen. Meine Struktur reicht doch aus, um den Sinn zu verstehen.Smile
' schrieb:Meine Struktur reicht doch aus, um den Sinn zu verstehen.Smile
In deiner Welt ist alles bestimmt ganz logisch Hehe
Ich reduzier mal deine Schleife aufs Wesentliche...

' schrieb:Status-Abfrage:

if next_pump_direction==1
right flow direction is chosen and pump
else
right flow direction is chosen and pump
end

--> Die Pumpe dreht immer rechtsrum.


Wenn du so ein wenig denkst, wird dein Behälter entweder leeeeeeer oder voooooooooooll... jenachdem ob rechts pumpen oder saugen ist.


Gruß SeBa


PS:
Für dein Programm:
Da die Pumpe ja nur links oder rechts drehen kann, würde hier auch eine bool'sche Variable reichen.
(Die Pumpe kann auch anhalten, schnell und langsam drehen...?...)
' schrieb:Ich reduzier mal deine Schleife aufs Wesentliche...
--> Die Pumpe dreht immer rechtsrum.
Wenn du so ein wenig denkst, wird dein Behälter entweder leeeeeeer oder voooooooooooll... jenachdem ob rechts pumpen oder saugen ist.
Gruß SeBa
PS:
Für dein Programm:
Da die Pumpe ja nur links oder rechts drehen kann, würde hier auch eine bool'sche Variable reichen.
(Die Pumpe kann auch anhalten, schnell und langsam drehen...?...)


Hallo Seba,

der Schrittmotor kann in beide Richtungen (links, rechts) fahren. Mann kann insgesamt vier Spritzen auf dem Rack befestigen. Zwei zeigen dann nach links und die anderen zwei nach rechts. Wenn der Motor nun nach rechts faehrt, dann injiziert er das Volumen der rechten Spritzen. Wenn der Motor dann am Ende angekommen ist, soll er nach links fahren. Damit werden dann die Spritzen rechts wieder befuellt/aufgezogen und das Volumen der linken Spritzen injiziert. Das soll solange geschehen, bis eine bestimmte Zeit oder ein bestimmtes Volumen injiziert worden ist.

Ja, die Pumpe kann auf Kommando anhalten und die Schnelligkeit der Injektion wird durch die Flussrate bestimmt.
Mein erster Versuch laeuft mittlerweile, jedoch wird gerade zu schnell die Richtung gewechselt. Die Richtung sol ja erst gewechselt werden, wenn das Volumen der rechten Spritzen vollstaendig injiziert worden ist. Das muss ich noch einbauen. Im Moment wird bei jedem Schleifendurchlauf die Richtung gewechselt.

Seba, mit "right flow direction is chosen" meinte ich, dass die richtige Richtung gewaehlt wird, nicht die recht. Entschuldige. Ersetze bitte "right" durch "the corresponding", dann sollte es wieder passen. Der Wert 0 bedeutet, dass sich der Motor nach rechts (Injektion) bewegt und 1 (Befuellen oder Herausziehen) nach links.

Entschuldigung, dass ich Euch verwirrt habe. Ich bin heute selbst ganz verwirrt darueber. Ich probiere sowas zum ersten Mal aus. Ich werde nochmals gruendlich nachdenken.

Viele Gruesse
Blue
Seiten: 1 2
Referenz-URLs