-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: e-Funktion verarbeiten? Störungen Ignorieren?

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.01.2006
    Ort
    Homberg (Efze)/Nordhessen
    Alter
    32
    Beiträge
    207

    e-Funktion verarbeiten? Störungen Ignorieren?

    Anzeige

    Hi zusammen,

    ich möchte folgendes Projekt in Bascom realisieren:

    Mein Controller bekommt ein Rechtecksignal mit einer Frequenz zwischen ca. 15 und 200 Hz (Drehzahl einer Welle). Über den Pulsein-Befehl wird es ausgewertet und entsprechend in einen Wert zwischen ca. 7000 und 500 eingelesen (dieser Wert entspricht dem Pulsabstand in der Einheit [10µs], also je höher die Frequenz desto geringer der Wert).

    Bis hierhin funktioniert alles ganz gut, mit einem Problem: In der Messung sind immer mal kleine "Peaks" drin, d.h. wenn ich über mein LCD den Wert ausgebe, dann kommen vereinzelt mal Sprungwerte vor (sehr kleine oder sehr große Werte), was "nicht sein darf", da sich die Drehzahl der Welle nicht sprunghaft ändern kann.
    Ich führe diese Sprungwerte auf Störeinflüsse zurück, versuche diese auch noch möglichst herauszufiltern, was aber ggf. nicht 100% möglich sein wird.

    Meine Software muss unabhängig von der Hardware sicher sein, d.h. ein Sprungwert muss wenn er vorkommt ignoriert werden.
    Ich kenne die Steigung mit der sich die Eingangsfrequenz maximal ändern kann (150 Hz / sec). Wie kann ich es Softwaretechnisch realisieren zu sagen "wenn die Änderung des Wertes größer ist als die maximal zulässige Änderung, dann ignoriere diese Messung"?
    Woran ich momentan knobele ist, dass der eingelesene Wert leider nicht linear ist, sondern die Form a*e^-(1/t) hat (mit t = Pulsabstand). D.h. bei steigender Frequenz nähert sich die "Eingangswert-Kurve" Exponentiell-Abnehmend Asymptotisch der t-Achse...

    Vielleicht hat jemand ne gute Idee...

    Grüße Paul
    Grüße Paul

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Naja, die einfachste Lösung für derartige Probleme ist ein Tiefpass...

    den kann man z.B. als gleitende Mittelung realisieren, oder vielleicht als IIR Filter (letzterer benötigt deutlich weniger RAM).


    Man könnte zwar auch versuchen einfach nur Ausreißer zu entfernen, aber das ist aufwendiger, und meist nicht notwendig (speziell wenn keine schnellen Änderungen im Signal vorkommen können).
    So viele Treppen und so wenig Zeit!

  3. #3
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970

    Re: e-Funktion verarbeiten? Störungen Ignorieren?

    Zitat Zitat von Powell
    Meine Software muss unabhängig von der Hardware sicher sein, d.h. ein Sprungwert muss wenn er vorkommt ignoriert werden.
    Das verstehe ich nicht ganz, normaleweise eliminiert man Störungen dort wo sie entstehen.

    MfG

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.01.2006
    Ort
    Homberg (Efze)/Nordhessen
    Alter
    32
    Beiträge
    207
    Hi Felix,

    kannst du deinen Vorschlag noch präzisieren? Gleitende Mittelung und IIR Filter sagt mir leider nichts

    Wie lege ich den Tiefpass aus? Angenommen meine zulässige Frequenzänderung beträgt 200 Hz / sec und ich kriege einen Impuls mit 220 Hz / sec rein - filtert mir der Tiefpass die auch raus?
    Was mache ich, wenn mir mal ein Impuls "fehlt"? Das Kann mir der Tiefpass doch nicht rausfiltern?
    Grüße Paul

  5. #5
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.01.2006
    Ort
    Homberg (Efze)/Nordhessen
    Alter
    32
    Beiträge
    207
    Hi Picture,

    mein Signal wird induktiv aufgenommen und durchläuft eine Impulsformungs- und Verstärkerschaltung, das muss so sein. Nun kann es sein, dass über das Aufnehmerkabel auch mal "ähnliche" signale reinkommen, die werden dann eben auch geformt und Verstärkt und ergeben mir einen Störimpuls. Ich weiß nicht wie ich die rausfiltern kann ohne die "soll-signale" nicht auch zu beeinflussen.
    Weiterhin kann es für die Sicherheit des Systems nur von Vorteil sein auch Softwaretechnisch zu prüfen ob der Wert i.O. ist, stichwort Redundanz.

    Grüße Paul
    Grüße Paul

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Gleitende Mittelung heisst du speicherst jeweils die letzten "n" Messwerte in einem Array (Ringpuffer), und bildest darüber den Mittelwert.

    Ein IIR-Filter ist da etwas eleganter, den im Detail zu erklären würde an dieser Stelle aber wohl etwas zu weit führen (Wikipedia Artikel: IIR Filter). Vorteil ist, daß man deutlich weniger Messwerte zwischenspeichern muss um den gleichen Effekt zu erzielen.


    Wenn ein Impuls fehlt, entspricht das ja einem Ausreißer, d.h. beim nächsten vorhandenen Impuls bekommst du einen Wert der deutlich zu groß ist. Und genau dabei hilft dir der Tiefpass, denn der glättet das Ergebnis, so daß derartige Ausreißer nicht mehr so stark ins Gewicht fallen.
    So viele Treppen und so wenig Zeit!

  7. #7
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    17.01.2006
    Ort
    Homberg (Efze)/Nordhessen
    Alter
    32
    Beiträge
    207
    Danke Felix, hilft mir schon mal sehr weiter. Der IIR Filter ist in Wikipedia sehr theoretisch gehalten, ich denke ich werds erst mal mit der gleitenden Mittelung probieren, RAM ist unkritisch in der Anwendung.
    Grüße Paul

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von Felix G
    Registriert seit
    29.06.2004
    Ort
    49°32'N 8°40'E
    Alter
    34
    Beiträge
    1.780
    Naja, ein IIR Filter ist garnicht so kompliziert zu programmieren, aber wenn RAM kein Problem ist kannst du dir das natürlich sparen.

    Ich habe mal ein Bild angehängt das zeigt, was ein Tiefpass für dich tun kann. Die grauen Punkte sind Messwerte aus einem Temperatursensor, und der Tiefpass macht daraus das rote Signal.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken plot.png  
    So viele Treppen und so wenig Zeit!

  9. #9
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    66
    Beiträge
    10.970
    Du kannst probieren als Aufnehmerkabel geschirmtes zu nehmen, wobei der Schirm nur auf einem Ende mit GND verbinden. Sonst könnte man anstatt der Spule mit einem Hallsensor versuchen, der nicht als kapazitative "Antenne" wirkt.

    MfG

  10. #10
    Erfahrener Benutzer Robotik Visionär
    Registriert seit
    26.11.2005
    Ort
    bei Uelzen (Niedersachsen)
    Beiträge
    7.942
    Als erstes sollte man versuchen über die Hardware dafür zu sorgen, daß die Fehlerhaften Werte nichmehr oder nur sehr solten kommen. Wenn mehr als etwa jeder 10 te Wert falsch ist wird es schwer die Rauszufilter. Da die falschen Werte vermutlich vor allem zu klein sind (extra Puls), also bevorzugt in die eine Richtung gehen, ist ein reiner Tiefpaßfilter keine optimale Lösung, denn der Mittelwert wird falsch.

    Ein gute Lösung wäre es zu testen wie der neue Wert von den letzten akzeptierten Werten abweicht, und ihn dann zu verwerfen, wenn die Abweichung zu groß wird. Wenn man schon 1-2 Werte verworfen hat, wird einem kaum etwas übrigbleiben nicht mehr so wählerrisch zu sein.

    Wenn man genug Werte bekommt und es sich leisten kann lönnte man auch von z.B. je 4 Werten den kleinsten und größten verwerfen und dann die beiden restlichen mitteln. Das ist ein Beispiel für den Median, einen robusten Schätzer, der relativ unempfindlich gegen Ausreißer ist.

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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