Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
23.02.2010, 16:21 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2010 16:24 von bluesaturn.)
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.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Komplizierte Abfrage mit Schleife
Du kannst Deine Werte von "Next pump direction" z.B. in einem Schieberegister durchschleifen, dann hast Du bei jedem Schleifendurchlauf Zugriff darauf.
Gruß Markus
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
23.02.2010, 16:45 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2010 16:53 von bluesaturn.)
' 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
23.02.2010, 16:54 (Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2010 17:00 von dimitri84.)
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
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
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.
' 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 ^_^
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
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.
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...?...)
Dieser Beitrag soll weder nützlich, informativ noch lesbar sein.
Er erhebt lediglich den Anspruch dort wo er ungenau ist, wenigstens eindeutig ungenau zu sein.
In Fällen größerer Abweichungen ist es immer der Leser, der sich geirrt hat.
Rette einen Baum!
Diesen Beitrag nur ausdrucken, wenn unbedingt nötig!
' 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.