Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
04.11.2009, 15:32 (Dieser Beitrag wurde zuletzt bearbeitet: 04.11.2009 15:45 von dimitri84.)
..... und dabei war ich mir so sicher das selbst hinzubekommen .....
Ich möchte gerne den RMS (RootMeanSquare) eines Signals berechnen:
Mit dem fertigen LV VI bin ich nicht glücklich, weil das Fenster immer um eine ganze Fensterlänge weiterspringt. Wenn ich also über ein Zeitfenster von 200 ms den RMS berechne, habe ich bei einer Abtastrate von 1kHz eine Reduktion der Auflösung um den Faktor 200. Lieber hätte ich es, wenn die Schrittweite des gleitenden Fensters einstellbar wäre. Das Fenster würde sich also, von einem Durchlauf zum nächsten, teilweise überlappen und die Auflösung des Effektivwerts wäre deutlich höher.
Ich weiß garnicht so recht was bei der Umsetzung schief geht. Mit den Datentypen von den Signalverläufen bekomme ich oft Konflikte beim rumprobieren. Wie mache ich aus einem "1-D Array von Signalverlauf(DBL)" ein "Signalverlauf(DBL)" und umgekehrt? Mein Eingangssignal hat auch meistens 4 Kanäle ... mein Versuch spuckt aber nur einen aus.
Ich hab' nicht gesagt, dass ich kein fertiges VI haben will ... ich war bloß mit dem unzufrieden, das ich dazu gefunden hab' (Signalverlaufsmessung). Wäre auch nicht darauf gekommen dort zu suchen.:huh:Danke für den Tip!
Damit könnte ich die numerischen Elemente in der Schleife ersetzten. Ich weiß aber immer noch nicht wie ich ein "1-D Array von Signalverlauf(DBL)" (4Kanäle) da einspeise und nach der Rechnung wieder ein "1-D Array von Signalverlauf(DBL)" rausbekomme.
Häng' mich da morgen nochmal rein.
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Oh man Ich war wohl gestern nicht ganz auf der Höhe ...
Ich hab' jetzt ein paar ganz offensichtliche Fehler verbessert. Z.B. habe ich den N Ausgang als i Index benutzt
Jetzt komme ich dem Ergebnis etwas näher (die Lücken im RMS habe ich erwartet, sie entstehen immer zwischen den Signalblöcken ... das ist nicht so schlimm, denn im fertigen Programm kommt jeweils nur ein Signalblock in das subVI)
Das Problem ist, dass ich 4 Kanäle reinschicke und nur einer schafft's zurück!
Dein Upload hat als Eingang "Signal" ein Waveform, das ist 1 Kanal. Da kommt natürlich nur ein Kanal raus. Schon mal dein RMS-VI in eine For-Schleife gepackt? Mit AutoIndexing am Ein- UND Ausgang?
Gruß, Jens
Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)
!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!
Ja mein Problem ist, dass die VIs "Signalausschnitt lesen" und "Signalverlaufskomponenten lesen" nur mit 1em Kanal funktionieren! Oder sehe ich das falsch?
Zitat:Schon mal dein RMS-VI in eine For-Schleife gepackt?
Ja. (Siehe letzter Screenshot)
Zitat:Mit AutoIndexing am Ein- UND Ausgang?
Nein. So wäre die Schrittweite des Fensters "1 Sample" (Bei entsprechender Benutzung der Eingänge Start/Dauer beim VI "Signalausschnitt lesen"). Das ist zuviel des Guten. So hoch aufgelöst muss das RMS-Signal nicht sein. Die Schrittweite soll in Samples angegeben werden können. Die Anzahl der Durchläufe ergibt sich daraus wie oft die Schrittweite des Fensters in den Signalblock passt.
Edit Prinzip: Es kommt ein Signalblock der Länge N --- Ein Fenster der Länge n (n << N) gleitet über den Signalblock mit einer einstellbaren Schrittweite delta_n (delta_n < n ) und berechnet für jede neue Position einen RMS Wert --- aus den RMS-Werten wird wieder ein Signal --- fertig
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Perfekt! Genau auf diese Konstruktion mit der for-Schleife um mein subVI bin ich nicht gekommen! Das DDT-Format hatte ich nur zum testen ... in meinem eigentliche VI lese ich zu Fuß tdms files ein.
Jetzt klappt alles wie gewollt! Viele Dank für die Mühe.
Edit: Kann es Probleme geben, wenn ein selbstgemachtes VI genauso heißt wie das LV VI? (siehe meine RMS.vi) In MatLab konnte man für seine Funktionen keine reservierten Namen verwenden.
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)
Du kannst beliebige Namen vergeben. Der Projektmanager wird evtl. mal beim Laden motzen, wenn er nicht weiß, welches VI zu laden ist. Ich würds sicherheitshalber unterschiedlich benennen ("DimitrisRMS.vi")
"Is there some mightier sage, of whom we have yet to learn?"
"Opportunity is missed by most people because it is dressed in overalls and looks like work." (Thomas Edison)
05.11.2009, 14:43 (Dieser Beitrag wurde zuletzt bearbeitet: 05.11.2009 14:44 von dimitri84.)
Mit dem qualitativen Ergebnis was mein VIs ausspuckt bin ich absolut zufrieden. Jedoch ist die Performace im Vergleich zum LV VI erbärmlich. Hätte ich nicht gedacht
Sieht jemand Optimierungsmöglichkeiten bzw. wo der Performance Killer sitzt? Beim LV VI kann ich ziemlich flüssig durchscollen ... mit meinem VI rückelts wie blöd.
„Sag nicht alles, was du weißt, aber wisse immer, was du sagst.“ (Matthias Claudius)