Guten Morgen,
ich sitze momentan an einem Projekt, dass es erfordert, eine Kalibrierkurve zu erstellen. Diese Kalibrierkurve setzt sich aus einem Druck auf der x-Achse und einer Spannung auf der y-Achse zusammen. Ich habe bereits eine Kurve erstellt und möchte nun eine entsprechende Formel für die Kurve herausfinden, damit eine Spannung ebenso gefunden werden kann, wenn der Druck einen noch nicht gemessenen Wert annimmt.
Ich habe es mit dem VI Kurvenanpassung versucht. Das Problem, vor dem ich nun stehe, ist, dass ich den Graphen nicht über der Zeit auftragen möchte, sondern über den Druck den ich vorher eingelsesn habe. Es scheint mir, dass man keine xy-Graphen mit diesem Tool analysieren kann. Kann mir jemand für ein solches Problem helfen?
Ich verwende LabView2009
Schöne Grüße
Bergi
Hallo Bergi,
das ExpressVI "Kurvenanpassung" besitzt 2 Eingänge: Locations und Signals. Wo würdest du da die X-Werte anschließen?
(Tipp: Ich würde es mal mit Locations probieren...)
Das habe ich auch schon vermutet. Nur wird der Eingang kategorisch ignoriert von dem Programm. Ich habe dort Werte von 0 bis 1 bar. Die Ausgabe des Programms ist jedoch 0 bis 10. Und die Daten werden definitiv nicht eingegeben.
Oder muss ich zunächst ein Array erstellen um damit die Zusammengehörigkeit der Werte klarzustellen? Die Daten entnehme ich einer csv-Datei, die vorher durch das Programm erstellt wurde. Danach lese ich zwei Spalten dieser Datei aus und möchte diese als x und y Wert verwenden.
Ich hoffe, das veranschaulicht das Problem ein wenig mehr.
Danke für die Mühe
EDIT: Ich habe einmal eben die Daten angehängt, die ausgewertet werden sollen.
Am besten du postest mal diese CSV-Datei (am besten als Textkonstante in einem VI). Dann kannst Du sogar hoffen, daß Dir ein funktionierender Vorschlag frei Haus geliefert wird
Ich würde hier aber nicht versuchen, das Rad neu zu erfinden, sondern, da es hier um Datenerfassung geht, eine der Möglichkeiten nutzen, wie sie im MAX und den DAQmx-VIs bereits vorgegeben sind:
[
attachment=32072]
Der Vorteil ist, daß Du dann beim Einlesen der Werte mit DAQmx Read keine Spannungen mehr erhälts, sondern die fertigen Werte: linearisiert und in der gewünschten physikalischen Einheit. Jegliche Kuvenanpassung im Haupt-VI entfällt damit.
Danke erst einmal für die Hilfe. Jedoch ist die Datenerfassung eigentlich nicht das Problem.
Es muss doch möglich sein, dass man eine Gleichung für bestimmte Wertepaarungen herausfinden kann. Die Einheiten sind letztlich [bar] und [V]. Jedem Druck ist eine Spannung zugeordnet.
Aus diesen Werten möchte ich dann eine Kalibrierkurve entwickeln. Ich dachte, dass man nur über eine Kurvenanpassung dies vollbringen kann. Aber vielleicht gibt es ja auch eine andere Möglichkeit, die mir bisher nicht geläufig ist. Die Daten müßten mit Hilfe einer quadratischen Gleichung genau genug dargestellt werden.
Das Problem ist also nicht die Skalierung sondern die fehlende Übernahme der Drücke.
Ich habe die Daten einmal als Bild angehängt und auch eine lvm-Datei hinzugefügt. Die csv Datei konnte ich nicht hochladen
Danke schon mal im voraus für die gemachten Gedanken und Lösungsvorschläge.
Hallo Bergi,
also bei mir funktioniert's:
[
attachment=32083]
Links in der Array-Konstanten stecken die Werte deiner lvm-Datei (Tipp: nächste Mal Textdateien als *.txt oder *.zip hochladen!). Dann die Kurvenanpassung über zwei Spalten. Rechts dann Erzeugen einer Kontrollkurve und plotten beider Kurven...
Bei mir scheiterts darin, daß die LVM-Daten Schrott sind, und die Werte aus der Graphik abzutippen habe ich keinen Bock.
[
attachment=32084]
Ok, also die Kurve wird schon einmal komplett ausgelesen. Nur bekomme ich die Fehlermeldung, dass die Datentypen zwischen Polynomialkoeffizient und der mathematischen Formel nicht zusammen passen. Und ich sehe beim besten Willen nicht wo.
Tut mir leid, wenn das eine absurde Frage ist, aber ich hoffe du hast ein bißchen Nachsicht.
Danke für den Post
Hallo Bergi,
wenn du genau hinschaust, siehst du auch den Unterschied zwischen meinem Bild und deinem:
Bei mir ist der (Eingangs-)Tunnel (der For-Loop) auf "Autoindizierung disabled" gestellt...
P.S.: Warum nimmst du nicht einfach mein
Snippet und integrierst es bei dir?
Entferne mal das Autoindexing! Rechtsklick auf den Eingang des Arrays an der For-Loop -> Disable Indexing.
Gruß, Jens
EDIT: Scho wieder knapp zu spät...