hallo
ich bin neu in LabVIEW und soll ein kleines programm zur durchflussmessung/regelung schreiben.
dazu werden die drehzahlen von zwei pumpen mithilfe eines usb 6009 gesteuert.
vom durchflussmessgerät erhalte ich ein rechtecksignal (je mehr impulse umso mehr durchfluss).
ich brauche eine kontinuierliche anzeige des volumenstromes (ca. jede sec).
die steuerung der pumpen habe ich mittels daq ass. u einer while schleife realisiert und jetzt frage ich wie ich
das eingangssignal des zähler am besten benützen kann um zb einen graph mit dem aktuellen durchfluß zu erhalten (vl for-loop?).
lg
ugarcia
Bitte
LVF-Regeln lesen und beachten (vor allem den allerletzten Abschnitt).
Beiträge im SMS-Stil (d.h. alles klein geschrieben) wollen wir hier nicht haben. Eine Computertastatur hat eine (bzw. sogar zwei) Shift-Tasten!
Gruß, Jens
Ok... Groß/Kleinschreibung hab ich überlesen... wusste nicht dass man darauf noch Wert legt...
also um genauer zu werden:
wie gesagt die zwei analogen Eingangsignale der Pumpen, welche die Ist-Drehzahl darstellen und die analogen Ausgangssignale zur Sollwertregelung werden mithilfe eines USB 6009 dargestellt bzw. ausgegeben... Ganz einfach in einer While-Schleife und mittels des DAQ-Ass (kontinuierlich).
Mein Problem ist jetzt das Rechtecksignal des Durchflussmessgerät welches ich am dig. Zählereingang angschlossen habe...
Ich zähle die Flanken und rechne sie um in l/min d.h. je mehr Flanken umso mehr Durchfluss - gezählt wird eine Sekunde lang. Der aktuelle Durchflusswert ist dann die Differenz zwischen akt. und letzten Wert was ja eigentlich mit einer For-Schleife zu lösen sein sollte...
Hierfür bräuchte ich eine gute Lösung, sodass als Ergebnis der aktuelle Durchfluss angezeigt wird...
Zurzeit mühe ich noch mit einer For-schleife in einer While-Schleife ab, was aber nicht wirklich eine gute Lösung zu sein scheint...
Danke für Eure Hilfe
ugarcia
' schrieb:Ok... Groß/Kleinschreibung hab ich überlesen... wusste nicht dass man darauf noch Wert legt...
:huh
u bist Student, hmm?
:mellow:Schick mir ne Kopie von deinem Bewerbungsschreiben... dann hab ich was zum Lachen für schlechte Tage...
Gruß SeBa
in foren seh ichs eigentlich nicht oft, aber egal...
' schrieb:Ich zähle die Flanken und rechne sie um in l/min d.h. je mehr Flanken umso mehr Durchfluss - gezählt wird eine Sekunde lang. Der aktuelle Durchflusswert ist dann die Differenz zwischen akt. und letzten Wert was ja eigentlich mit einer For-Schleife zu lösen sein sollte...
Hört sich schon mal gut an.
' schrieb:Hierfür bräuchte ich eine gute Lösung, sodass als Ergebnis der aktuelle Durchfluss angezeigt wird...
Zurzeit mühe ich noch mit einer For-schleife in einer While-Schleife ab, was aber nicht wirklich eine gute Lösung zu sein scheint...
Lad doch mal ein VI mit deinen Versuchen hoch, dann bekommst du sicher schnell Verbesserungsvorschläge.
' schrieb:in foren seh ichs eigentlich nicht oft, aber egal...
Dann sind wir hier halt die Ausnahme (wobei ich auch einige Foren kenne, die es genauso handhaben).
Sieh es als Übung für dein zukünftiges Berufsleben an. (vgl. SeBa...
)
Gruß, Jens
Anbei das Test VI mit den beiden Schleifen:
Die LV-Version mit der das VI geschrieben wurde ist LV2009 (9.0).
LG
ugarcia
Hallo Zusammen,
ich finde es schade, dass vor einem konstruktieven Lösungsansatz erstmal über Groß- und Kleinschreibung diskutiert wird
So nun zu Deinem Problem:
Ich kann leider Dein VI (noch) nicht öffnen, weil ich das Update noch nicht installiert habe. Aber als Ansatz ein paar Zeilen von mir als Schubs in eine Richtung:
Nimm zwei Whileschleifen die paralell laufen. In der einen ließt du zyklisch mit einer Schleifenverzögerung von z.B. 1000ms den Counterwert ein. Ziehe bei jedem Schleifendurchgang den Wert vom vorherigen Schleifendurchgang ab. Dann hast das Delta und kannst Deinen Durchfluss berechnen. Das geht ganz einfach durch ein Schieberegister. Ich würde jedoch 500ms nehmen.
In der zweiten Schleife wertest Du den Wert aus, steuerst entsprechend deine Analogen Outputs und Gestaltest die Programmoberfläche und Anzeigeelemente. Diese Schleife kannst etwas schneller laufen lassen z.B. 100ms.
Eine Idee wäre auch noch alles in eine Whileschleife zu packen, den Counterwert öfters auszulesen und die Werte in ein Array zu schreiben. Durch das Auswerten des Arrays und ein bissle rechnen kannst auch hier das Delta auf Zeit umrechnen.
Hoffe ein wenig geholfen zu haben.
Grüße Marco
Danke Marco. Mittlerweile hab ich es so ähnlich gemacht wie du es vorgeschlagen hast.
Ich habe das neue VI wieder hochgeladen (LV2009).
Allerdings funktioniert es nicht immer, d.h. der Wert 0 kommt als Ergebnis raus.
Ich weiß nicht ob es am Signal oder an der Schleife liegt, also falls wer noch Verbesserungsvorschläge hat bitte melden.
Danke ugarcia
Hallo ugarcia,
ich habe leider LV2009 immer noch nicht drauf. Hab derzeit keinen Kopf für Updates. Wenn Du das eventuell als 8.6.er Version speichern kannst?
Grüße Marco