LabVIEWForum.de - Mittelwertbildung und Datenkonvertierung

LabVIEWForum.de

Normale Version: Mittelwertbildung und Datenkonvertierung
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo alle zusammen.

Es werden kontinuierlich Daten vom ADC an ausgelesen.Die dAten kommen aus dem Sub_Vi(siehe Bild).Nun will ich von 4 Werten ein MW bilden.Die Funktion funktioniert soweit in einem kleinen VI.Jetzt habe ich das Vi auf mein FPGA_Vi umgeändert.Das Problem ist,das der FIFO sich mit den DAtentypen nach der Division "beißt".Welche Umwandlung oder einstellung ist am besten?Achso die DEzimalzahlen die durch das Sub_Vi ADC umgerechnet wurden sind befinden sich zwischen 0 und 16384.Ich würde gerne das ich nachh der Division auf U18 komme,weild amit hatte die Funktion soweit voreher funktioniert,bzw. der FIFO ist auf U18 eingestellt.Habe auch schon andere Datentypen versucht einzustellen.Hatte aber immer die gleiche Fehlermeldung zur Folge.


LV Version 2009
Mfg Frank
Hallo,

dass der Datentyp nach einer Division nicht mehr passt (= Konvertierungspunkt) ist bei der Division fast normal. Das stört eigentlich auch nicht.

Mir fallen 2 Dinge auf:

- Wieso nutzt du 2 For-Schleifen, eine reicht hier aus
- Die 2. For-Schleife hat ein nicht-initialisiertes Schieberegister. Das macht mich etwas skeptisch und ich würde sagen, das ist falsch.
Ich würde das mit 0 initialisieren, wenn du den Code so lassen und das Array aufsummieren möchtest.

Die Division kannst du jedoch auch so berechnen, wie es NI auf der Website zeigt und zwar aus fortlaufenden Subtraktionen.
Das Ganze kannst du in ein kleines SubVI packen und die Übersicht ist gewährleistet.
Hi,

es gäbe auch noch die Möglichkeit, durch Mehrfacharithmetik die Schleife für die Mittelwertbildung zu vermeiden (siehe IPNet, 8-point-Average http://decibel.ni.com/content/docs/DOC-1249 oder vielleicht doch über die wie ich finde sehr hübsche Moving-Average-Implementierung unter http://decibel.ni.com/content/docs/DOC-1128 nachdenken...

ch
Hi,

du solltest dir zunächst mal (neben allen guten Anregungen meiner Vorredner) Gedanken zum Thema Datentypen machen. Was bitte ist ein U18? du verwendest einen FixedPoint Datentypen bei deinem FIFO. Was mich irritiert ist, dass du bei deinem Divisor einen völlig unnötigen coercion dot hast. und wenn das ganze schon Werte von 0..16384 dann nimm doch für deinen FIFO einen ganzzahligen Datentypen(z.B. U16) und keine Gleitkommazahl. Im Bild ein arithmetischer Mittelwert über 4 Werte ohne coercion dots, wobei die vorher geposteten Ansätze natürlich viel eleganter sind.
Was bekommst du denn wann für einen Fehler?

Gruß

[attachment=32304]
Ich hab das jetzt nicht nachprogrammiert (und traue NI schon zu, diesen Sonderfall irgendwie zu implementieren), aber das wäre das erste Mal, dass man mal irgendwo durch Null teilen darf... Wink
Wie du siehst Leben wir noch und wurden nicht von einem schwarzen Loch verschlungen. Und es kommt sogar ein mehr oder weniger sinnvolles Ergebnis raus. Die Sache mit der Null solltest du aber nochmal mit der Spaltfunktion durchdiskutieren.
Hier noch eine nicht geschlossene Klammer auf das sich jemand darüber aufregt(
Aber der Punkt ist: Pass auf deine Datentypen auf. Vor allem auf dem FPGA.
(16.02.2011 09:28 )Nilbog schrieb: [ -> ]... ( ...

Hopper
__(__
Referenz-URLs