LabVIEWForum.de
Kennfelder in LabVIEW - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenbank & File IO (/Forum-Datenbank-File-IO)
+---- Thema: Kennfelder in LabVIEW (/Thread-Kennfelder-in-LabVIEW)



Kennfelder in LabVIEW - gringo - 21.09.2007 17:16

Hallo!
Ich habe folgendes Problem: Ich will ein Kennfeld von Messdaten erstellen und dieses dann so ähnlich als eine Konstante benutzen, so wie man das vielleicht von MatLab kennt. Ich selbst bin kein MatLab-Kenner, weiss nur das so was gibt's. Das Prinzip ist eigentlich einfach: man hat zwei Eingangsgrößen z.B. Druck und Temperatur und eine Ausgangsgröße z.B. Volumen. D.h. man gibt Temperatur T_x und Druck P_y ein und bekommt aus diesem Kennfeld den entsprechenden Wert fürs Volumen. Es wäre einfach toll, wenn jemand so was schon mal gemacht hat, oder einfach eine gute Idee hat wie man so was realisieren kann!

Vielen Dank im voraus!


Kennfelder in LabVIEW - Kvasir - 21.09.2007 18:00

Wenn ich dich richtig verstehe dann willst du also im Vorhinein ein (2D) Feld eingeben (willkürlich), bei dem du zu den jeweiligen Spalten und Zeilen Werten (z.B.: Druck, Temp) dann eine sich ergebende 3. Größe (z.B. Volumen) eingibst.
Anschließend willst du, dass das Programm dir für beliebige Werte der Eingangsgrößen den entsprechenden Wert aus dem Kennfeld ausgibt?

Hab leider kein LV zur Hand, aber ich würde das so angehen:

1. Erzeuge 2 1D Arrays, in denen du die Werte für Druck, Temp eingibst.
2. Erzeuge ein 2D Array, indem du deine Werte eingibst. Wichtig hierbei: Die Zeilen, Spalten müssen sich auf dieselben Werte für Druck und Temp beziehen, wie in den 1D Arrays.
3. Erhältst du nun deine Eingangsdaten durchsucht du den jeweiligen 1D Array nach dem nähestem enthaltenen Wert und lässt dir den Index angeben. Mit den zwei erhaltenen Indizes greifst du dir den passenden Wert aus dem 2D Array.

Gruß


Kennfelder in LabVIEW - Lucki - 21.09.2007 19:11

Es geht schon so wie Kvasir sagt, aber das Ergebnis wird doch - ja nach Größe Deiner Tabelle - um Größenordnugen genauer, wenn Du , statt den nächstgelegenen Wert aus der Tabelle zu nehmen, zwischen den Werten interpolierst. Die Werte im 2D-Feld bilden dann nur die Stützstellen in einem Kontinuum.
Und nun die gute Nachricht 1:
Für ID-Arrays gibt es fertige Interpolations-VI für beide Richtungen.
Krummwertiger Index (dbl) nach Wert: "1D-Array interpolieren.vi"
Wert nach Index (DBL): "Schwellwert (1D Array).vi" (Das funktioniert natürlich nur, wenn die Array- Werte einen monotonen Verlauf haben)
Und die gute Nachricht 2: Mit ein paar Schleifen läßt sich die erstgenannte Funktion auch auf 2D erweitern - zumindest hat es bei mir schon mal funktioniert und ich habe es hier sogar schon mal gepostet.

Du hast also, genau wie Kvasir es gesagt hat, diese Arrays:
a) Einen 1D-Array für die Temperaturwerte
b) Einen 1D-Array für die Druckwerte.
c) Die Tabelle, bei denen die X-Indizees den Temperwerten von Array a und die Y-Indizees den Druckwerten von Array b entsprechen

Gesucht: Volumen zu Punkt [T,p]
1. Schritt: Mit "Schwellwert(1D Array).VI" die Indizees x(T) bzw. y(p) ermitteln.
2. Schritt: mit x(T) und y(T) in in ein selbstgebasteltes Sub-VI "2D Array interpolieren" hineingehen, um das Volumen zu ermittelen. (Dieses VI enthält die Funktion "1D-Array interpolieren.vi" und ein paar schlaue Schleifen für 2D-Erweiterung --> Deine Aufgabe).

Versuche mal etwas in dieser Richtung, und wenn Du nicht klar kommst, melde Dich, dann wirst Du geholfen.

Edit: Habe das VI gefunden, da müßte Dir helfen:
[attachment=8785]

(VI LV 8.2)


Kennfelder in LabVIEW - gringo - 24.09.2007 08:54

:top1:Vielen vielen Dank an euch beide, ihr habt mir sehr geholfen! Gleich werd' ich das ausprobieren.Tippen