LabVIEWForum.de
Umrechnung/Skalierung: 1D-Array(U32) -> 1D-Array(Dbl) - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Umrechnung/Skalierung: 1D-Array(U32) -> 1D-Array(Dbl) (/Thread-Umrechnung-Skalierung-1D-Array-U32-1D-Array-Dbl)



Umrechnung/Skalierung: 1D-Array(U32) -> 1D-Array(Dbl) - eb - 18.07.2011 15:39

Guten Tag,

Ich habe mal wieder eine konzeptionelle Phase beim Meditieren über meinen bisher geschrieben Quellcode gehabt. Dabei ist mir durch eine Analyse des "Profile" (Tools) aufgefallen, dass die Kanalwert-Umrechnungen (relativ) viel Rechenzeit in Anspruch nehmen. Bei hohen Messfrequenzen und vielen Kanälen kann es eine kritische Größe für den Mess-PC darstellen; daher dieser Post.

Ausgangssituation: ein 2D-Array, das zyklisch hereinkommt (Messung kommt über DMA). Nach einer Dezimierung soll nun jeder 1D-Kanal abweichend umgerechnet werden. Aktuell verwende ich dafür die LabVIEW-Funktionen wie z.B. "Divide" und "Add". Bei manchen Umrechnungen gibt es die Besonderheit, das der Umrechnungsfaktor einer Potenz von 2 enspricht; da dividiere ich aber dennoch. (Multiplizieren würde ja mit einem Bitshift gehen)

Ich werde noch den Formelknoten ausprobieren um mir selbst ein Bild von der Alternative zu machen...

Was sind eure Erfahrungen zum Thema effektives Umrechnen von Messdaten? Gibt es eine beste Methode?


Mit bestem Dank
Erik Brenncke


ps.: wie bekommt man eigentlich Code-Schnipsel in diesem neuen Look in den Post. Ich meine diese Snippets.


RE: Umrechnung/Skalierung: 1D-Array(U32) -> 1D-Array(Dbl) - NWOmason - 18.07.2011 15:56

(18.07.2011 15:39 )erik.brenncke schrieb:  Was sind eure Erfahrungen zum Thema effektives Umrechnen von Messdaten? Gibt es eine beste Methode?

Meine Skalierungen mache ich gerne im Code mit den normalen LabVIEW Arithmetikfunktionen. Wobei ich noch nichts kompliziertes skalieren musste. Also meist nur einen linearen Offset oder ähnliches.

(18.07.2011 15:39 )erik.brenncke schrieb:  ps.: wie bekommt man eigentlich Code-Schnipsel in diesem neuen Look in den Post. Ich meine diese Snippets.

Am besten so: <KLICK> Big Grin

Beste Grüße,
NWO


RE: Umrechnung/Skalierung: 1D-Array(U32) -> 1D-Array(Dbl) - eb - 18.07.2011 16:05

Danke für deinen Snippet-Hinweis! Echt genial einfach! Blush

Zitat:Meine Skalierungen mache ich gerne im Code mit den normalen LabVIEW Arithmetikfunktionen. Wobei ich noch nichts kompliziertes skalieren musste. Also meist nur einen linearen Offset oder ähnliches.
Die Berechnungen an sich sind fast schon trivial, aber bei der schieren Masse an Daten zur Laufzeit, kann es halt eng werden mit der Prozessorauslastung. Daher suche ich nach der "besten" Methode. Dann bin ich mir sicher, dass ich eine neue CPU im Mess-PC brauche.

Danke für die schnelle Antwort.
Erik Brenncke


RE: Umrechnung/Skalierung: 1D-Array(U32) -> 1D-Array(Dbl) - GerdW - 19.07.2011 08:00

Hallo Erik,

Zitat:Ich werde noch den Formelknoten ausprobieren
Der wird nicht schneller sein als ein simples Multiply/Add-Paar.

Wenn du hier evtl. von DAQmx-Inputs redest: dort kannst du für jeden Kanal eine eigene Skalierung erstellen, die dann gleich im Treiber angewendet wird...


RE: Umrechnung/Skalierung: 1D-Array(U32) -> 1D-Array(Dbl) - eb - 19.07.2011 09:12

Guten Morgen GerdW,

in der Tat, der Formelknoten ist nicht schneller. Leider handelt es sich nicht um einen DAQmx-Kanal. Wie beschrieben sind es u32-Daten, die über einen DMA-Transfer hereinkommen (FPGA2Host-FIFO).
Ich bedanke mich für die Antworten.

Fazit: die LV-Primitives sind die beste Lösung. Sollte es zu einer zu hohen CPU-Auslastung kommen, muss halt die Datenmenge begrenzt werden.

Erik Brenncke