Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 5 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 41

Thema: Bandpassfilter programmieren

  1. #1
    Registriert seit
    28.01.2011
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!
    Ich bin auf der Suche nach einer Lösung für einen Bandpassfilter.
    Ich habe ein verrauschtes Signal und habe zunächst versucht einen PT1 Filter anzuwenden, mit folgendem Algorithmus in SCL :

    Ausgang_Neu = Ausgang_Alt*exp(2*PI*fg*T) + Eingang*( 1 - exp(2*PI*fg*T) )

    Das Ergebnis ist aber nicht zufriedenstellend. Nach einer FFT-Analyse konnte ich festellen, dass ein Bandpassfilter optimal wäre.
    Nur leider finde ich nirgendwo eine einfache Formel/ Code für einen Bandpassfilter.
    Die meisten Formeln die ich gefunden habe, arbeiten in z-Bereichen und so weiter. Aber da kenn ich mich nicht so aus und es wäre zu Zeitaufwändig
    mich einzuarbeiten.
    Hat da einer vielleicht einen Hinweis? Gibt es nicht schon fertige Funktionsbausteine in S7?

    Gruß
    Johann
    Zitieren Zitieren Bandpassfilter programmieren  

  2. #2
    Registriert seit
    17.07.2009
    Ort
    Am Rande der Ostalb
    Beiträge
    5.491
    Danke
    1.141
    Erhielt 1.243 Danke für 974 Beiträge

    Standard

    Was willst du denn überhaupt machen bzw. was verstehst du unter "verrauscht"?

    Gruß
    Dieter

  3. #3
    Registriert seit
    28.01.2011
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    also ich habe einen Weggeber.(MTS-Stab) mit 1um Auflösung. Es werden Geschwindigkeiten von 0.05- 0.3 mm/sek gefahren.
    Der Weggeber erfährt mechanische Vibrationen der Anlage, die nicht verhindert werden können. Und bei solch langsamen Geschwindigkeiten sind die Vibrationen deutlich im Positionssignal zu sehen.
    Das Geschwindigkeitssignal schwankt dabei (stochastisch) um +- 5%. Das meine ich dabei mit "Rauschen". Ich benötige aber ein
    sauberes Signal.Dafür habe ich eine FFT in excel durchgeführt. Der zeigt mir an, dass ich im Prinzip alle Frequnez drin habe.


    FFT.jpg


    Mit einem PT1 filter und Grenzfrequenz von 0.8Hz habe ich das Signal schon gut säubern können, aber wenn man sich die FFT anschaut, dann sind ja noch sehr viele Frequnzen unterhalb den 0.8Hz drin.
    nun dachte ich einen Bandpassfilter einzupflegen mit den Grenzfrequenzen in denen die FFT-Beträge sehr klein sind.
    hier z.b. um 0.9375 Hz herum. Das ist mein Gedanke gewesen, bin mir aber auch nicht sicher ob das so funktioniert.
    (Bin Neuling auf dem Gebiet der Signalverarbeitung).
    Die PT1 Formel ist ja recht einfach und es muss doch auch eine einfache Formel für einen Bandpass geben.

  4. #4
    Registriert seit
    19.05.2008
    Beiträge
    648
    Danke
    117
    Erhielt 136 Danke für 105 Beiträge

    Standard

    Hallo Johann,

    einfache Lösungen sind immer die besten.

    Meine Ansatz wäre auch ein Tiefpassfilter. Bei einem Bandpass würdest du doch im Stillstand keine Werte mehr bekommen!?

    Allerdings würde ich alle Messwerte per Zeiger in einen umlaufenden Puffer schreiben. Das bedeutet, ein neuer Wert überschreibt immer den ältesten. Vom Puffer wird die Summe gebildet, geteilt durch die Anzahl der Pufferplätze.

    Wenn das Signal nicht „ruhig“ wird, kann man die Anzahl weiter erhöhen, bis die Aktualisierung zu träge wird.

    Um welchen Prozess handelt es sich denn?
    Wenn der tatsächliche Geber mit allem darum schwingt, ist das dann kein Problem?

    Gruß
    Chräshe

  5. #5
    Registriert seit
    28.01.2011
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Chräshe!

    Warum bekommt man denn keine Werte mehr bei Stillstand?

    Eine Mittelwertbildung, so wie du das vorschlägst ist mir zu träge. Ich möchte ein sauberes Signal mit relativ wenig Verzögerungen.

    Es handelt sich um ein Geschwindigkeitsregelkreis einer Strangpresse.

  6. #6
    Registriert seit
    29.03.2004
    Beiträge
    5.741
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    In welcher Rate kannst du deine Messwerte denn überhaupt aktualisieren? Mal angenommen du liest deine Messwerte im 100ms Zyklus ein, bringt dir ein Filter 1. Ordnung mit Grenzfrequenz bei 0,8 Hz nicht sonderlich viel.
    Ein einfacher Ansatz für einen Bandpass ist zwei Tiefpassfilter zu nehmen und die Ausgangsgrößen voneinander abzuziehen. Oder eben einen Hoch- und Tiefpassfilter zu verwenden.
    Wenn es vernünftig werden soll, würde ich aber einen FIR-Filter nehmen und mir die Koeffizienten mit einem entsprechenden Tool berechnen lassen.

  7. #7
    Registriert seit
    28.01.2011
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja 100 ms Zyklus lese ich ein. aber warum habe ich trotzdem gute Ergebnisse wenn ich den PT1 filter nutze?
    Was haben die FIR-Koeffezienten für eine Bedeutung? Das ist doch nur ein Faktor für die Gewichtung des jeweiligen Samplewertes, oder nicht?
    Muss man die nicht selber bestimmen?
    Das mit den 2 Tiefpassfiltern ist eine gute Idee. Aber wie du schon sagst, will ich das schon vernünftig machen. Was hälst du von IIR?

  8. #8
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard

    Wie Thomas das bereits schon sagte, wichtig ist die Aktualisierungszeit! Was hast Du für einen SPS-Zyklus, bzw. falls Du mit nem OB35 arbeiten willst, wie schnell bekommst Du Deine Position? Ich glaube nicht das Du es schaffen wirst in einem Zyklus gut von schlecht zu trennen, dazu sind mehrere IST-Werte nötig. Eine Mittelwertberechnung wird es schon werden müssen. Wie wär es mit einer statistischen Mittelwertsberechnung? Man nehme eine Hand voll Messwerte, sortiere die der Größe nach und in der Mitte des Haufens liegt dann der Durchschnittswert!
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

  9. #9
    Registriert seit
    28.01.2011
    Beiträge
    43
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also ich arbeite mit dem OB 35.
    Wenn ich 5 Messwerte a 100ms für die Mittelwertbildung nehme , dann habe ich doch schon 0,5 sekunden Verzögerung. bei meiner jetzigen Anwendung wäre das noch ausreichend. Aber ich möchte auch eine Lösung für schnellere Geschwindigkeiten parat haben, um schnell auf Änderungen
    reagieren zu können.

  10. #10
    Registriert seit
    17.05.2010
    Ort
    Paderborn
    Beiträge
    824
    Danke
    84
    Erhielt 125 Danke für 94 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Was hast Du eigentlich für einen Antrieb bzw. Mechanik dahinter? Bei einem Servo könntest Du versuchen die Steifigkeit zu erhöhen um von vorn herein einen stabileren Positionswert zu erhalten!
    Grüße
    Michael

    1001101110110100... Das ist meine Welt

Ähnliche Themen

  1. Wärmerückgewinnung programmieren
    Von Syntaxfehler im Forum Programmierstrategien
    Antworten: 23
    Letzter Beitrag: 24.11.2014, 08:41
  2. PT100 Programmieren!
    Von Krma1985 im Forum Simatic
    Antworten: 99
    Letzter Beitrag: 13.12.2011, 07:38
  3. Taktmerker programmieren
    Von Benno97 im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 04.07.2010, 23:52
  4. S5 EPROM programmieren
    Von Helmpflicht im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 14.08.2009, 22:12
  5. Förderband programmieren
    Von Scrub im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 31.07.2009, 11:04

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •