05.02.2013, 14:37
Beitrag #1
|
Salia80
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Feb 2013
8.5
2012
DE
|
LabView und Mathematica Link for LabView
Hallo!
Im Rahmen eines Wägeexperiments nehmen wir alle 2s verschiedene Messwerte auf, unter Verwendung eines LV-Programms. Bisher konnte LV all unsere Probleme lösen, aber jetzt scheinen wir ein wenig an die Grenzen des Programms zu stoßen.
Es geht um folgendes Problem:Zur Ermittlung des Auftriebs aus den Messwerten "Druck" und "Temperatur" soll zu jedem Wertepaar eine Lösung der sog. Virialgleichung ermittelt werden und dann gleich in die Datei geschrieben werden (damit wir das nicht im Nachhinein "per Hand" machen müssen -was bei tausenden Werten auch nahezu unmöglich wäre). Die Virialgleichung ist in unserem Fall ein Polynom 4. Ordnung und die jeweiligen Koeffizienten hängen in nicht ganz trivialer Weise von der Temperatur ab.
Abgesehen davon, dass es ein recht großer Aufwand wäre, diese Gleichung in LV einzuprogrammieren (im Formelknoten verliert man vor lauter Klammern schnell den Überblick), scheint mir das Lösen einer solchen Gleichung doch ein wenig zu "hoch" für LV zu sein. Nicht, dass ich glaubte, es schaffe dies generell nicht. Aber für Programme wie Maxima oder Mathematica sind solche Formeln ein Klacks, ohne allzuviel Programmieraufwand.
Daher war meine Idee, dass LV und Mathematica Hand in Hand vielleicht mein Problem lösen könnten. Dazu fand ich den "Mathematica Link for LabView", eine Art Zusatzprogramm, das wohl LV und Mathematica kommunizieren/interagieren lässt.
Meine Frage wäre: Hat irgendjemand Erfahrungen mit diesem Programm? Insbesondere wäre interessant zu wissen, ob diese Kommunikation während der Messung so einfach möglich ist oder ob z.B. die Übermittlung der Daten, Berechnung der entsprechenden Werte durch Mathematica und dann anschließende Rückübermittlung bereits so viel Zeit in Anspruch nehmen würde, dass mir das Messprogramm Probleme bereiten würde, wenn ich ein Messintervall von 2s habe.
Es ist mir übrigens deswegen wichtig mehr über diese Möglichkeit zu erfahren, weil wir dann erst Mathematica samt Zusatzprogramm kaufen müssten (wir benutzen im Moment Maxima), sollte es sich als nützlich erweisen.
So, ich hoffe, ich konnte einigermaßen verständlich machen, auf was ich hinaus will. Ich bin noch nicht besonders fortgeschritten in LV oder anderen Programmiersprachen und kann mich deswegen nicht so "fachlich gekonnt" ausdrücken 8-)
Vielen Dank für jeden Tipp oder Erfahrungsbericht, den Ihr für mich habt.
|
|
|
05.02.2013, 16:03
Beitrag #2
|
swatski
LVF-Gelegenheitsschreiber
Beiträge: 51
Registriert seit: Jul 2011
2010, 2012
2010
DE_EN
Deutschland
|
RE: LabView und Mathematica Link for LabView
Hallo Salia,
komplizierte Formeln kannst du mit Formula Node oder dem Express VI Formula bearbeiten.
Du kannst mehrere Eingänge definieren, deine Formel angeben und am ende kommt dein Ergebniss raus.
|
|
|
26.02.2013, 10:16
Beitrag #3
|
Salia80
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Feb 2013
8.5
2012
DE
|
RE: LabView und Mathematica Link for LabView
Nach einer kurzen Recherche im Internet bin ich leider über den wenig erfreulichen Umstand gestolpert, dass das angesprochene Linkprogramm wohl schon recht alt ist (weswegen vermutlich auch die Antworten ausblieben) und nur mit ebenso alten Versionen von LabView (maximal 8.0.1) und Mathematica (max. 7) funktionert. Gut, die alte LV-Version haben wir noch im Institut, aber Mathematica samt Link-Programm müssten wir dann erst anschaffen. Ärgerlich, wenn man dafür eine Uralt-Version kaufen muss (ist ja nicht gerade billig).
Hat jemand von Euch Erfahrung damit, wie man per C-Programmierung eine Kommunikation zwischen LV und Mathematica herstellen kann? Laut unseres Software-Anbieters geht das prinzipiell.
Bzw. weiß jemand, ob man LV nicht eventuell doch dazu bringen könnte, komplizierte Gleichung zu LÖSEN (nicht nur einsetzen und ausrechnen -> LV soll eine Gleichung 4. Ordnung, nämlich D(T)*x^4 + C(T)*x^3 + B(T)*x^2 + A *x - p/(R*T) = 0 lösen, wobei die Messwerte T (Temperatur) und p (Druck) jedes Mal eingesetzt, die Koeffizienten ausgerechnet und die Gleichung dann nach x gelöst werden soll. Hinter den Koeffizienten verstecken sich wiederum von T abhängige, nicht ganz unkomplizierte Formeln und x ist in unserem Fall die Gasdichte, die für jedes Wertepaar berechnet werden muss. Per Hand geht das bei mehreren tausend Messwerten nicht mehr.)
Ich kann durchaus (Sub)VIs schreiben, die die Koeffizienten berechnen. Aber beim Thema "Lösen einer Gleichung höherer Ordnung" muss ich passen. Und die Suche hier im Forum hat eigentlich nur ergeben, dass davon abgeraten wird, eine solche Mathematik mit LV zu betreiben, da es ja passende Software wie Mathematica gibt. Nur nützt mir das hier nichts.
Nun gut, vielleicht kann mir ja doch noch jemand weiterhelfen. Und sei es nur mit einem Tipp, wo ich so etwas programmieren lassen kann (dann am besten in einer PN, nicht dass es noch Ärger wegen Werbung oder so etwas gibt).
|
|
|
26.02.2013, 10:49
Beitrag #4
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: LabView und Mathematica Link for LabView
Hallo Salia,
Zitat: LV soll eine Gleichung 4. Ordnung, nämlich D(T)*x^4 + C(T)*x^3 + B(T)*x^2 + A *x - p/(R*T) = 0 lösen, wobei die Messwerte T (Temperatur) und p (Druck) jedes Mal eingesetzt, die Koeffizienten ausgerechnet und die Gleichung dann nach x gelöst werden soll. Hinter den Koeffizienten verstecken sich wiederum von T abhängige, nicht ganz unkomplizierte Formeln und x ist in unserem Fall die Gasdichte, die für jedes Wertepaar berechnet werden muss.
- Die Koeffizienten A-D musst du sowieso irgendwo berechnen, anscheinend ist das aber eine feste Formel -> die kann man in einem subVI abbilden.
- p und T sind Messwerte, R bekannt und A-D nach Rechnung ebenfalls
- Du hast jetzt also die Formel dx^4+cx^3+bx^2+ax+n=0 und in der Mathematikpalette die Funktion " Nullstellen eines Polynoms berechnen": was brauchst du mehr?
|
|
|
26.02.2013, 13:58
Beitrag #5
|
Salia80
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Feb 2013
8.5
2012
DE
|
RE: LabView und Mathematica Link for LabView
Hm, auf die letzte Frage bezogen, müsste ich wahrscheinlich antworten: Mehr Ahnung von LabView?!?
Den Weg mit "Nullstellen eines Polynoms berechnen" wollte ich ursprünglich auch gehen bzw. habe diverse Ansätze unternommen, LabView ein vernünftiges Resultat zu entlocken.
Solange ich feste Koeffizienten per Hand in das zugehörige Array eingebe (z.B. 1, 2, 3, 4), berechnet mir das VI auch brav die richtigen Lösungen. Bei dem Versuch, das Array mit "In Array einfügen" und den zugehörigen SubVIs (die die jeweiligen Koeffizienten berechnen, wenn auch derzeit noch nicht ganz richtig - *seufz* Fehlersuche bei komplizierten Formeln macht Spaaaaß :-P) zu füllen und die Nullstellen berechnen zu lassen, bin ich dann stecken geblieben. Ich tue mir außerdem schwer, den Term p/(RT) zu integrieren bzw. bin mir nicht sicher, wie das Polynom tatsächlich aussieht, das LV aufstellt. Beginnt die Indizierung i bei 0 oder bei 1? Im VI steht ja die Summenformel "*Summe über* a_i*x^i". Kann man das irgendwo nachschauen?
Gut, ich werde mich jetzt erst einmal mit den Fehlern in den SubVIs beschäftigen. Morgen hab ich vielleicht wieder einen klareren Kopf und seh, was in meinem VI nicht passt.
|
|
|
26.02.2013, 14:13
(Dieser Beitrag wurde zuletzt bearbeitet: 26.02.2013 14:18 von GerdW.)
Beitrag #6
|
GerdW
______________
Beiträge: 17.469
Registriert seit: May 2009
LV2021
1995
DE_EN
10×××
Deutschland
|
RE: LabView und Mathematica Link for LabView
Hallo Salia,
Zitat:Bei dem Versuch, das Array mit "In Array einfügen"
Das hört sich schon so grausam an
"In Array einfügen" ist garantiert nicht die richtige Funktion, ein Element an der richtigen Stelle abzulegen. Entweder du erstellst dein Parameter-Array mit BuildArray oder nutzt ReplaceArraySubset, um Werte kontrolliert zu ersetzen...
Zitat: Ich tue mir außerdem schwer, den Term p/(RT) zu integrieren bzw. bin mir nicht sicher, wie das Polynom tatsächlich aussieht, das LV aufstellt. Beginnt die Indizierung i bei 0 oder bei 1?
Der Term ist wohl p0. Und die Indizierung beginnt (wie in jeder ordentlichen Programmiersprache!) bei 0...
Die Nullstellensuche erwartet ein Array P(x) mit den Polynomkoeffizienten - in aufsteigender Reihenfolge p0, p1,...,p4!
|
|
|
26.02.2013, 14:40
Beitrag #7
|
Salia80
LVF-Neueinsteiger
Beiträge: 4
Registriert seit: Feb 2013
8.5
2012
DE
|
RE: LabView und Mathematica Link for LabView
Okay, danke schön :-)
Dann versuch ich das Ganze doch mal mit "Build Array". Mal schauen, wie gut es klappt. Hab bisher noch nie wirklich mit Arrays gearbeitet, deswegen gleicht diese Geschichte an manchen Stellen wohl einem (für einen Profi sicher grausam anmutenden) Trial and Error.
|
|
|
| |