Filter für analoge Ausreißer

mitchih

Level-2
Beiträge
806
Reaktionspunkte
32
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich brauche einen Filter für analoge Eingänge eines Messrades. Grund wenn die Anlage das Werkstückschneidet kommt es zu einen Peak und oder Einbruch des Analogwertes.

Da anhand des Eingagswertes weitere Prozesse gesteuert werden kommt es zu fehlfunktionen.

Nun möchte ich diese Ausreißer durch eine Art Filter dämpfen.
Hat jemand eine Idee??
Habe es mit einem Schieberegister versucht und 10 Einträge die im 100ms Takt geschrieben werden. Aus diesen 10 Werten wird ein Mittelwert gebildet.

Aber so Richtig hat das nichts gebracht.
 
Hallo,

hast du noch etwas genauere Infos?

Wie groß sind die Peaks?
Wie schnell ändert sich der Analogwert im Normalfall? (Wie stark darf gedempft werden?)

Anscheinend hast du ein EMV-Problem.
Evt. hast du dieses Problem nicht, wenn alles in Bezug auf EMV super ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gegen kurze, extrem hohe Spitzen hilft einfach nur 'ne Zeit.

Oder du machst dir die Mühe die Steigung zu berechnen und korrigierst dann die Kurve mit Ersatzwerten.
 
ich würde in diesem fall einfach alles wegfiltern was außerhalb der spec liegt und aber zählen wie oft das passiert und einen grenzwert bilden...

...btw: es muß kein emv-problem sein, manche messungen machen sich einfach, auf grund der abtastrate selbstständig und fliegen bei nicht erkanntem objekt durch die gegend
 
Hallo,
zum Glätten von Analogwerten nimmt man ein PT1-Glied (Lag-Glied).

Sieh Dir einmal den FB80 (Lead-Lag-Convert) im Simatic-Manager an.
Noch besser ist der FB9 (Lag1FST). Dieser Baustein ist aber nur in der käuflich zu erwerbenden Bibliothek Modular PID von Siemens enthalten.

Du kannst Dir dieses PT1-Glied aber auch selber schreiben. Die Realisierung funktioniert über eine Rekursion des Einganges mit den Werten der Abtastung aus dem vorherigen Zyklus (Umsetzung der Differentialgleichung für ein PT1-Glied in eine Differenzengleichung). Hierzu kannst Du einmal im Internet suchen oder Du mußt Dich noch einmal melden.

Gruß Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
zum Glätten von Analogwerten nimmt man ein PT1-Glied (Lag-Glied)
....
Du kannst Dir dieses PT1-Glied aber auch selber schreiben.
Ich habe mir dazu folgenden einfachen FB geschrieben, vielleicht ist sowas ja von Interesse (er hat ausserdem noch eine Nullpunktverschiebung für den Eingang, ich brauchte sowas damals gerade ...)
Code:
FUNCTION_BLOCK "SMOOTH"
TITLE =Smooth
//Smooth function for integers
//rout = (fact*real(in-null)) + ((1-fact)*rout)
//out=int(rout)
AUTHOR : MMarx
NAME : SMOOTH
VERSION : 0.1


VAR_INPUT
  IN : INT ;    //Input 16 bit
  NULL : INT ;    //zero point correction
  FACT : REAL  := 1.000000e-001;    //Factor Real
END_VAR
VAR_OUTPUT
  OUT : INT ;    //Output 16 bit
END_VAR
VAR
  ROUT : REAL ;    //stored real value
END_VAR
BEGIN
NETWORK
TITLE =


      L     1.000000e+000; 
      L     #FACT; 
      -R    ; 
      L     #ROUT; 
      *R    ; 
      T     #ROUT; 

      L     #IN; 
      L     #NULL; 
      -I    ; 
      ITD   ; 
      DTR   ; 

      L     #FACT; 
      *R    ; 
      L     #ROUT; 
      +R    ; 
      T     #ROUT; 
      RND   ; 
      T     #OUT; 


END_FUNCTION_BLOCK
Wenn die Glättung auch mathematisch einigermassen korrekt sein soll, so muss der Aufruf im Zeit-OB erfolgen, aber mir reicht (zur Glättung) in der Regel der normale Aufruf im Zyklus. Als Einstellwert für FACT sind Werte im Bereich 1E-2 bis 5E-1 sinnvoll (ich verwende meist 1E-1 d.h. 0,1 für "normale" Glättungsaufgaben).

Gruß Michael aka Dumbledore
 
:rolleyes: ... ich würde hier vielleicht (wegen der großen Ausreisser) eher den Vorschlag von Vierlagig weiter verfolgen ...

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich würd den Mittelwert der letzten 10 oder 20 Messungen bilden und mir einen Grenzwert für den Peak definieren.

Geht der Peak über den Grenzwert, dann verwende den Mittelwert für den aktuellen Zyklus als Steuerwert und Zähle diese Grenzwertverletzung.

Kommt dies Situation in x Sekunden x mal vor, dann liegt ne Störung an.
 
@Dr.M:
Das wäre ja im Grunde der gleiche Vorschlag wie der von 4L ...
Ganz grundsätzlich bekommt man große Ausreisser nur weggeglättet (oder -gefiltert) wenn man sie gegen viele andere (normale) Werte stellt - oder man ignoriert sie oder man bewertet sie seperat ...

Gruß
Larry
 
Etwas aufwendiger zu programmieren, aber wirkungsvoll ist auch ein Medianfilter. Nachteil ist der Wertevorlauf,d.h. man kann nicht direkt mit dem aktuellen Messwert arbeiten, sondern braucht den Vorlauf von mindestens einem zusätzlichen Wert.:cool:

MfG
 
Zurück
Oben