LabVIEWForum.de - Pumpensteuerung / Schleifen?

LabVIEWForum.de

Normale Version: Pumpensteuerung / Schleifen?
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich arbeite an einem biologischen Institut und würde gern eine (oder mehrer) Mehrkanalpumpen für einen Versuch verwenden, die per LabView gesteuert werden sollen.
Vorweg, meine LabView-Fertigkeiten sind bestenfalls basal.
Das VI habe ich auch nicht selbst erstellt, aber zumindest kann ich sagen, was es tun soll.

Was grundsätzlich gemacht werden soll:

Ich habe ein bestimmtes Ausgangsvolumen einer Flüssigkeit in einem Gefäß, das konstant mit gleich bleibender Rate verdünnt werden soll (X% pro Tag/Stunde; dilution rate /Verdünnungsrate).
Da die Verdünnungsrate konstant bleiben soll, aber das Volumen ja ansteigt muss die Zuflussrate proportional zum aktuellen Volumen sein.
Daraus ergibt sich ein exponentieller Anstieg sowohl vom Volumen im Gefäß, als auch von der Zuflussrate.
Zu einem bestimmten Zeitpunkt wird dem Gefäß so viel Volumen entnommen um wieder auf das Ausgangsvolumen zu kommen, dann beginnt der Prozess von vorn.

Anschluss der Pumpe:

Die Pumpe (Ismatec IPC-N, 12 Kanäle) hat eine RS232 Anschluss und ist über einen COM-Server (W&T) mit dem Netzwerk verbunden.

Was das VI machen soll:

Alle Stunde soll über das VI eine neue Zuflussrate (ml/min) eingestellt werden, die jeweilig Rate wird auf Basis der Formel für Exponentiellem Wachstum berechnet, z.B.:

Ausgangsvolumen = 400 ml
Verdünnungsrate = 0.3 (30%) --> für eine Stunde ergibt sich daraus eine Zuflussrate von 0.0833 ml/min, das sind dann nach 60 Minuten etwa 5 ml --> der neue Ausgangswert wäre also ~405 ml und die Zuflussrate 0.0844 ... ---> usw.

Der Übergabewert an die Pumpe ist jeweils ein Prozentsatz der maximalen Drehzahl des Pumpenmotors (was konsequenter Wiese gleichbedeutend mit der maximalen Zuflussrate ist).

Anmerkungen zum "Front Panel":
Startvolumen (N0) in Liter, beim Bespiel von oben also 0.4
Die Drehzahl wird falsch angezeigt, ist um eine Kommastelle verschoben (z.B. 100,00 anstatt 10,00), wird aber richtig an die Pumpe gesendet (wie ich das änder ist mir klar, habe es aber noch nicht gemacht, daher weise ich hier nur darauf hin).
Ähnliches gilt für "Flussrate in ml/min" (hier ist das Volumen für eine Stunde angzeigt, ebenfalls mit falscher Kommastelle)

Was macht das VI, was nicht:
Nach dem ich die Grundeinstellungen in Front Panel eingegeben habe (z.B. "Abstand t in h" = 1; "Max Flussrate in ml in 1h" = 48.3; "N0 Volumen in l" = 0.4; "dilution in %" = 30; "Anzahl Stunden"= 24) lässt sich das VI starten, die Pumpe geht an, läuft und die Zuflussrate stimmt.
Nach einer Stunde sollte, wie im Beispiel oben der neu Wert von ~405 im Feld "Volumen in ml" auftauchen, dies passiert leider nicht. Bei den als Beispiel angegeben Werten stellt sich nach einer Stunde dann eine "Volumen in ml" von 600 ein (die Zugehörige Drehzahl und Zuflussrate stimmt zwar, das bringt mir nur leider nix), ein Wert, der erst etwa nach 27-28 Stunden erreicht sein dürfte.

Wie Eingangs gesagt und wahrscheinlich auch durch den Text offensichtlich habe ich sehr wenig Ahnung von LabView, daher braucht Ihr eventuell noch mehr Informationen?
Eine Alternative zu dieser Herangehensweise wäre die Übergbabewerte aus eine (Excel)Tabelle auszulesen, je Stunde.

Ich Hoffe das ist nicht zu konfus oder basal für Euch.
Gruß
Robert
Wenn du ein Problem mit der Berechnung des Sollwertes hast, dann betrachte dieses Problem für sich alleine.

Und das lässt sich auch einfach machen, indem du die ganze Pumpenansteuerung erst einmal herausschmeißt. Das könnte so aussehen:
[attachment=43965]

Wenn du uns noch die Formel mitteilst, mit der du eigentlich den Soll-Durchfluss berechnen willst, dann können wir dir sicher ganz konkret weiterhelfen.

Gruß, Jens

P.S.: Ich bin mir sicher, der erste Fehler liegt schon bei deinem "Formelknoten 2". Da kommt eine Größe mit einer physikalischen Einheit (Liter) heraus, und davon bildest du dann einen Logarithmus. Das kann nicht stimmen.
Hallo Jens,

die grundlegende Formel ist die Formel für exponetiells Wachstum:

Nt = N0*e^a*t

"N0" = Ausgangswert (zum Zeitpunkt "t" = 0); "Nt" = Wert zum Zeitpunkt "t"; "e" = Eulersche Zahl; "a" = Wachstumskonstante (in meinem Fall die dilution rate / Verdünnungsrate)

bei N0 = 400 ml, a = 0.3 (30% Verdünnung) und t = 1 (Tag) ergibt sich ==> Nt = 539,9435 ml

--> nun möchte ich aber ein (1) Stunden Schritte haben, also t = 1/24 ==> Nt = 405.0314 ml
--> Nt - N0 ergibt dann das Volumen, das in der einen Stunde zugeflossen ist ==> Nt - N0 = 5.0314 ml
--> dieses Volumen durch 60 ist dann die Zuflussrate pro Minute ==> 5.0314/60 = 0.08386 ml/min

für den nächsten Studenschritt ist dann N0 = 405.0314 (Nt vom ersten Schritt) ==> Nt = 410.1260 ==> Zugeflossenes Volumen = 5.0947 ==> Zuflussrate = 0.08491 ml/min

usw.

Alternative geht auch (vieleicht einfacher? reicht für meine Zwecke auch, wäre mir der liebere Weg!)

Volumen, das in einer Stunde zufließt:
N0*a/24 --> 400*0.3/24 = 5
Zuflussrate ist gleich dieser Wert durch 60
5/60 = 0.08333
Volumen nach einer Stunde:
Nt = N0+N0*a/24 --> Nt = 400+400*0.3/24 = 405 ml
--> Dieser Wert ist dann wieder N0 für den nächsten Schritt

--> Nach 24 Stunden (24 Ein-Stundenschritte) hätte ich dann ein Volumen von 538.9404 ml. Je kleiner ich die Schritte mache, desto näher komme ich an den Wert von der Funktion oben (aber die Schrittgröße reicht mir völlig).


Der Prozentsatz, bezogen auf die maximale Drehgeschwindigkeit der Pumpe, der errechnet sich aus:

Zuflussrate ml/min * 100 / maximale Zuflussrate ml/min
z.B.: 0,08333*100/0.805 = 10.35%


Vielen Dank schonmal
Ich werde mir jetzt noch mal alles anschauen und testen.
Gruß
Robert

[EDIT] PS: Ich habe mir erst jetzt den Formelknoten angeschaut, warum da das "ln" drin ist kann ich gerade auch nicht sagen, aber zumindest für die erste Stunde macht das VI ja alles richtig oder spielt der Konten erst ab der zweiten Stunde wirklich eine Rolle? ... ich grübel weiter
Hallo Robert,

wenn man deine Formel in simple LabVIEW-Funktionen umsetzt, kommt der gewünschte Verlauf heraus:
[attachment=43968]
Vielleicht einfach mal auf unnötige ExpressVI verzichten? Big Grin

P.S.:
Im Anhang noch mit Subtraktion zur Berechnung der zugeflossenen Menge...
Falsch verstanden, die Formel, die bei dir "Formel 2" heißt, ist doch schon verkehrt, zumindest wenn du auf die Variante mit der exp-Funktion herauswillst.

Hier ist mal was zum Nachvollziehen:
[attachment=43970]
Gruß, Jens

EDIT & P.S.: Wie bei Gerd ebenfalls ohne Express-VI
Hallo,
vielen Danke für die Hilfe!
Das ursprünglich VI wurde von einem Studenten im ersten Semster (Studiengang?), frisch aus der Schule, geschrieben, der bei 0 anfing, das erklärt vieleicht auch die komplizierte(?)/falsche Umsetzung.
Weiterhin möchte ich nochmal anmerken, das ich so gut wie keine Ahnung von LabView habe (musste erstemal googlen was Ihr mit expressVI meint Blink), aber ich denke bis hier hin kann ich es auch alles nachvollziehen.
Jetzt müsste ich das nur noch an die Pumpensteuerung koppeln und testen.
Ich weiss nicht ob ich das kann und hoffe es ist ok, wenn ich im Zweifelsfall nochmal um "Hilfe" schreien darf.

Gruß
Robert

[EDIT] PS: Jens, wenn ich den Schalter Button/Zeit auf "Zeit" stelle läuft jeweils ein Zeitschritt mehr, als ich einstelle.
Nabend,
habe es hinbekommen, ich lasse jetzt über Nacht die Pumpe laufen und kontrolliere dann morgen früh, ob es noch läuft und auch das Volumen passt.
Ich melde mich dann Morgen nochmal und schicke dann auch noch mal das von mir modifizierte VI (vielicht gibt es ja noch Tipps zur Optimierung).
Dann werde ich eventuell auch noch eine weiterführende Frage haben, was ich aber zuvor erstmal selbst testetn will.
Gruß und nochmals Danke!
Robert
(14.03.2013 14:24 )bioR schrieb: [ -> ][EDIT] PS: Jens, wenn ich den Schalter Button/Zeit auf "Zeit" stelle läuft jeweils ein Zeitschritt mehr, als ich einstelle.
Ich weiß, wollte nicht alles perfekt machen. Du kannst mal überlegen, wieso das nicht stimmt (und auch schon vorher nicht stimmte).

Gruß, Jens
Werde ich machen, war auch nur als Hinweis gemeint, nicht als Aufforderung.
Gruß
Robert
Referenz-URLs