LabVIEWForum.de - Datenfilter Problem mit Schieberegister

LabVIEWForum.de

Normale Version: Datenfilter Problem mit Schieberegister
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
Ich komme einfach nicht weiter. Hier kurz der Zusammenhang:
Gegeben ist eine Tabelle mit Spannungsmesswerten. Dieses Messwerte oszilieren von + nach -. Also immter ca. drei positive dann wieder drei negative Messwerte. Dabei nenne ich einfach mal ein Paar von pos und neg Werten eine Periode.
Da es manchmal zu Fehlmessungen kommt müssen diese rausgefiltert werden. (Bandpass!?)
Das ganze soll so gefiltert werde, dass immer eine bestimmte Anzahl(Inkrement) an Perioden genommen wird und je von den positiven und negativen Werten der Mittelwert gebildet wird und dann jedes Element gelöscht wird, das mehr als 10% abweicht. Per Schleife will ich dann so die ganze Tabelle durchgehen und per Schieberegister will ich eigentlich immer die aktuelle Tabellenposotion übergeben um mein Inkrement von der "aktuellen" Position der Tabelle zu bilden.
Funktionieren tut auch schon alles, bis auf die Übergabe der aktuellen Position. D.h. wenn ich nur das erste Inkrement bilde, also die Schleife nur einmal laufen lasse, filtert das Programm genau so wie es soll.
Sonden am Schieberegister zeigen, dass die aktuelle Tabellenposition immer den gleichen Wert hat egal wie oft die Schleife läuft.
Ich hab die Bsp Tabelle und das VI mal angehängt.
Die äußere Schleife und oben das Schieberegister ist das worum es geht. Bevor das VI ausgeührt wird muss im Frontpanel die Anzahl der Perioden eingestellt werden, über die gemittelt werden soll.
Falls ich irgendwas vergessen hab zu erklären bitte fragen.

Version:Lv09_img2

Danke für Antworten schon jetzt
Gruß vom Tuner
' schrieb:D.h. wenn ich nur das erste Inkrement bilde, also die Schleife nur einmal laufen lasse, filtert das Programm genau so wie es soll.
.....
Die äußere Schleife und oben das Schieberegister ist das worum es geht.

Der Effekt läßt sich gut mit dem nicht initialisierten Scheiberegister (links oben) erklären. Schließe dort erst mal eine Null an und dann werden wir weiter sehen.
Jo das hatte ich auch schon versucht. Bringt aber leider nichts.
Werden Register nicht immer auf Null initialisiert wenn man nichts anschließt?
Hab grad noch was gebastelt. Wenn ich die äußere Schleife jetzt x mal durchlaufen lasse, wird x mal hintereinander der gleiche (also erste) gefilterte Tabellenabschnitt ins neue Array geschrieben.

Edit:
Ich habe mal sondiert. S. Anhang.
Bei 3 Iterationen müssten die Sonden ja eigentlich schon viel höhere Werte anzeige, da je eigentlich immer durch das Register und die Addition erhöht wurde.

EDIT2!!!!!!!!!: Ich hab erstmal selbst noch n Fehler gefunden woran es liegen könnte, also macht euch erstmal keinen Kopf mehr.
Ich meld mich dann ggf nochmal.

Lv09_img2
Könnt hier zumachen.
Der Fehler lag daran, dass ich die Schieberegister generell nicht initialisiert habe.
Beim ersten Schleifendurchlauf ist es noch egal, beim zweiten aber nicht mehr.
Danke für den kleinen Denkanstoß!!!
Offtopic2
Wieso postet du eigentlich so ziemlich jede Frage im Unterforum "Datenbank & FileIO", obwohl sie nie etwas mit diesem Thema zu tun hat? Habe gerade fast alle deine Threads ins "Allgemein-Forum" verschoben.

Gruß, Jens
' schrieb:Werden Register nicht immer auf Null initialisiert wenn man nichts anschließt?
[...]
Der Fehler lag daran, dass ich die Schieberegister generell nicht initialisiert habe.
Beim ersten Schleifendurchlauf ist es noch egal, beim zweiten aber nicht mehr.
Zur Erklärung, was es damit auf sich hat:
Bei uninitialisierten Schieberegistern spricht man auch von sog. Funktionalen Globalen Variablen (FGV). Diese Schieberegister behalten beim erneuten Aufruf ihren ursprünglichen Wert.

Diese FGVs sind auch der Grund dafür, dass While-Schleifen, die nur ein einziges Mal durchlaufen werden (Stopp-Anschluss ist z.B. mit einer True-Konstanten verbunden), Sinn ergeben können. Dann haben Sie alleine die Aufgabe, diese FGVs zu realisieren.
Nur, falls du das mal irgendwo sehen solltest.

Ich persönlich setze FGVs sehr häufig in SubVIs ein und da habe ich somit häufig While-Schleifen, die nur ein einziges Mal durchlaufen werden.

Anbei noch ein Beispiel, das zeigt, wie man so etwas einsetzt (gut, hier ergibt es wenig Sinn, aber es zeigt das speichernde Verhalten der FGVs):

[attachment=30481] [attachment=30482]Lv85_img

Haupt-VI: "main_zaehler.vi"
Sub-VI mit FGV: "sub_zaehler.vi"

Grüße
Matze
Danke für den Tipp. Werde ich mir mal anschauen.

@Jens: oh sorry. Jetzt hab ich erst gecheckt, dass es unter den ganzen Unterforen noch das allgemeine gibt..
Ist meiner Meinung nach auch ziemlich blöd gemacht. Auf meinem kleinen Bildschirm hier(immerhin 18''Wink sehe ich wenn ich auf LabView allgemein gehe nur die Unterforen und dachte halt, dass ich da noch eins auswählen muss um posten zu können.
Referenz-URLs