Bandpassfilter programmieren

Zuviel Werbung?
-> Hier kostenlos registrieren
Also ich lese bisher mit der CPU 313C alle 100 ms ein. Mit einem SPS-Analyzer zeichne ich auf. Die Werte aus dem
Analyzer exportiere ich mit Intervall von 100 ms in eine Exceltabelle. Mit der Excel mache ich die FFT. Und das FFT-Bild bis 10 Hz kam dabei heraus.
Wenn ich das ganze mit 10 ms mache, dann wird eine FFT bis 100Hz dargestellt. Die Werte (0-10Hz) aus beiden FFT passen weitgehend überein.

Also hierzu :
Ich bin mir nicht so sicher, dass die Aufzeichnung mit dem SPS-Analyser das 100 ms Intervall stabil halten kann - ein 10 ms Intervall aber mit Sicherheit nicht. Wie kommst du dann aber auf die 100 Hz FFT ? Für eine FFT solltest du außerdem auch immer (mindestens !!!) doppelt so schnell aufzeichnen, wie du auswerten willst. Von da her stelle ich deine diesbezügliche Analyse ein klein bißchen in Frage - sorry 8).

Ich würde hier auch, wie schon mehrfach vorgeschlagen, die Abtastfrequenz deines OB35 deutlich erhöhen (z.B. 5 ms oder noch schneller wenn deine CPU das noch hergibt) und dann entsprechend deines Wunsch-Intervalls den Mittelwert aus entsprechend vielen Werten bilden (also bei 5 ms Abtasten und 100 ms Wunsch-Intervall entsprechend aus bis zu 20 Werten).

Gruß
Larry
 
Hallo Jo_Janzen,
Deine verwendete PT1-Formel kommt mir auch etwas komisch vor. Ein PT1-Glied wird durch Umwandlung der Differentialgleichung des Tiefpasses in eine Differenzengleichung realisiert.
Das Ergebnis ist dann eine Rekursion des dem Wert des vorherigen Abtastzykluses. Bei genauerem Interesse mußt Du Dich noch einmal melden. Ich habe irgendwo eine Ableitung.

Deine Aussagen, daß die niedrigen Frequenzen im Spektrum das Nutzsignal sind, kann man so nicht genau sagen.
Die FFT sagt Dir nur welche Frequenzen mit welcher Amplitude vorkommen. Jedes periodische Signal läßt sich bekannterweise in eine Fourierreihe zerlegen (Summe von Harmonischen entsprechender Amplitude und Frequenz). Bei nicht periodischen Signalen wird es halt eine Fouriertransformation.
Aussagekräftiger sind dann schon das Leistungsdichtespektrum oder andere Methoden wie das Cepstrum (Rückwärts von Spektrum).

Gruß Frank

Anbei noch ein alter Kommentar von mir zu diesem Thema.
http://www.sps-forum.de/showthread....loge-Ausreißer?highlight=Differenzengleichung
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jo_Janzen,
Anbei noch ein alter Kommentar von mir zu diesem Thema.
http://www.sps-forum.de/showthread....loge-Ausreißer?highlight=Differenzengleichung

Auf den FB80 bin ich auch schon gestoßen. Nur da stellt sich für mich wieder die Frage woher der Baustein weiß, welche Frequenzen er durchlassen soll.
Und was müsste ich für die beiden Eingänge eingeben. Was ist hier der Unterschied beider Variablen? (Stammt aus der S7 Hilfe)


IN Eingang real Eingabewert der aktuellen Abtastzeit (Zykluszeit), die bearbeitet werden soll.
SAMPLE_T Eingang int Abtastzeit



Hallo Jo_Janzen,
Deine verwendete PT1-Formel kommt mir auch etwas komisch vor. Ein PT1-Glied wird durch Umwandlung der Differentialgleichung des Tiefpasses in eine Differenzengleichung realisiert.
Das Ergebnis ist dann eine Rekursion des dem Wert des vorherigen Abtastzykluses. Bei genauerem Interesse mußt Du Dich noch einmal melden. Ich habe irgendwo eine Ableitung.
Und die Auswahl der Koeffizienten bestimmen die Frequenzen die ein PT1 Filter durchlassen soll.Ist doch so richtig, oder?
Ich könnte ein konkretes Beispiel gebrauchen, wo auch die Koeffizienten berechnet werden.


Hallo Jo_Janzen,

Deine Aussagen, daß die niedrigen Frequenzen im Spektrum das Nutzsignal sind, kann man so nicht genau sagen.
Die FFT sagt Dir nur welche Frequenzen mit welcher Amplitude vorkommen. Jedes periodische Signal läßt sich bekannterweise in eine Fourierreihe zerlegen (Summe von Harmonischen entsprechender Amplitude und Frequenz). Bei nicht periodischen Signalen wird es halt eine Fouriertransformation.
Aussagekräftiger sind dann schon das Leistungsdichtespektrum oder andere Methoden wie das Cepstrum (Rückwärts von Spektrum).

Ich meinte nicht, dass die niedrigen Frequenzen die Nutzsingale sind, sondern dass die Frequenzen mit niederiger Amplitude die Nutzsignale sind.
Das kann man doch so sagen , oder nicht?
 
Ist das überhaupt ein PT1-Filter?
Ich habe den Code so we er ist erhalten zur Anwendung. Nur keiner konnte mir das erklären.

Nimm den Baustein "Lag_1st" aus der modular PID control bib von Siemens. Das ist ein PT1 Glied.
Alternativ: Programmiere einen Integrator und führe das Ausgangssignal additiv auf das Eingangssignal rück.
Das ergibt ebenfalls ein PT1 Glied.
 
Also hierzu :
Ich bin mir nicht so sicher, dass die Aufzeichnung mit dem SPS-Analyser das 100 ms Intervall stabil halten kann - ein 10 ms Intervall aber mit Sicherheit nicht. Gruß
Larry

Ich bin dankbar für jede Korrektur. Wie gesagt, ich bin noch neu im dem Bereich.
Du meinst, dass der Analyzer es nicht schafft auch wirklich alle 10ms aufzuzeichnen?


Also hierzu :
Wie kommst du dann aber auf die 100 Hz FFT ? Für eine FFT solltest du außerdem auch immer (mindestens !!!) doppelt so schnell aufzeichnen, wie du auswerten willst. Von da her stelle ich deine diesbezügliche Analyse ein klein bißchen in Frage - sorry 8).

Gruß
Larry
Also bisher hatte ich folgenden Gedanken:
Ich habe das so angenommen, dass ich das Signal mit 100 ms Zykluszeit in die SPS einlese. Aus der SPS zeichne ich Zyklusgenau (also auch 100ms)
das Signal mit dem Analyzer auf. Dadurch sieht die Aufzeichnung so aus, dass ich alle 100 ms einen neuen Wert habe.
Zum Exportieren des aufgezeichnteten Signales kann ich es wieder in unterschiedlichen Intervallen abtasten und es wird in eine Exceltabelle exportiert.
Dieses Abtasten habe ich bisher mit 100ms gemacht. Dadurch haben wir aber nicht die doppelte Abtastfrequenz. Deshalb habe ich das
auch mal mit 10ms probiert. Das FFT beider Abtastfrequnzen ergab folgendes:
Der Frequenzbereich der mir angezeigt wurde ging von 0-100 Hz bei der 10ms Abtastung.
Der Frequenzbereich der mir angezeigt wurde ging von 0-10 Hz bei der 100ms Abtastung.

Ist mein Vorgehen soweit ok?


Also hierzu :

Ich würde hier auch, wie schon mehrfach vorgeschlagen, die Abtastfrequenz deines OB35 deutlich erhöhen (z.B. 5 ms oder noch schneller wenn deine CPU das noch hergibt) und dann entsprechend deines Wunsch-Intervalls den Mittelwert aus entsprechend vielen Werten bilden (also bei 5 ms Abtasten und 100 ms Wunsch-Intervall entsprechend aus bis zu 20 Werten).

Gruß
Larry
Das werde ich gleich mal probieren.
Aber trotzdem versuche ich noch bessere Ergebnisse mit einem PT1 filter zu erhalten. Aber dafür muss man ihn erst richtig verstehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jo_Janzen,
bei einem PT1-Glied beginnt die Dämpfung ab der sogenannten Eckfrequenz im Bode-Diagramm. Die Eckfrequenz = 1/T .
T ist die Zeitkonstante des PT1-Gliedes. Nach ca. 5 * T hat man in der Sprungantwort des PT1-Gliedes 99,9 % des stationären Endwertes erreicht.
Die zeitkonstante T entspricht dem Tau bei einer Kondensatoraufladung.

Alle Frequenzen hinter der Eckfrequenz werden mit 3 dB/Dekade (wenn man sich Bode-Diagramm auf doppelt logarithmischen Millimeterpapier vorstellt gedämpft.

Beispiel: T = 30s

Eckfrequenz = 1/T = 1/30s= 0,033Hz

Ab dieser Frequenz werden alle größeren Frequenzen mit 3 db gedämpft (bei einem Tiefpaß).
Schaltest Du 2 Tiefpässe hintereinander erhältst Du ein PT2-Glied. Haben beide die gleiche Zeitkonstante erfol´gt die Dämpfung mit 6dB.

Gruß Frank
 
PT1-Glied (AWL-Quelle)

wo findet mal den fb80?

ich hab mal etwas gegoogelt und bin da auf eine brauchbare formel gestossen.
habe das mal in eine fc verpackt.
 

Anhänge

  • pt1-glied.AWL.txt
    1,9 KB · Aufrufe: 59
Hallo Johann,

es geht doch sicherlich noch um dieses Projekt?
http://www.sps-forum.de/showthread....chwindigkeitsregelung?highlight=Strangpressen

Wie weit war das eigentlich gelöst? Du wolltest die Geschwindigkeit regeln.

..Der Weggeber erfährt mechanische Vibrationen der Anlage, die nicht verhindert werden können..
Das würde ich mal im Hinterkopf behalten. Woher kommen diese Schwingungen? Ich kenne solche Strangpress-Anlagen nicht. Ich denke, es kann nur von dem mordsmäßig(?) großen Hydraulikzylinder, oder dessen Ansteuerung kommen. Vielleicht ist da noch was zu machen? Ein anderes Proportionalventil, oder ein zweites, kleineres pararell?
Ich nehme an, du kannst ausschließen dass die Schwingungen durch deine eigene Regelung verursacht werden?


Also ich denke ich werde den PT1 FIlter mit einer Mittelwertbildung kombinieren. Um so die Verzugszeit klein zu halten...
Sowohl Mittelwertbildung als auch eine Dämpfung verzögern das Signal. Zuviel des Guten verschlechtert das Regelverhalten durch eine zusätzliche Zeitkonstante. Ich denke, die zusätzliche Mittelwertbildung wird kaum Verbesserung bringen.


..Nur leider verstehe ich nicht was hinter dem Algorithmus steckt: hier mal der ganze SCL-Code..
Versuche es mal hiermit:
Funktioniert wie die von knarf erwähnte Ladefunktion eines Kondensators.
..Die zeitkonstante T entspricht dem Tau bei einer Kondensatoraufladung...

Code:
(**********************************************************************)
FUNCTION "PT1": VOID
TITLE = 'PT1-Glied' 
(**********************************************************************)
VERSION : '1.0'
AUTHOR  : Onkel
NAME    : PT1
FAMILY  : Entenhausen
(**********************************************************************)

VAR_INPUT
  x                         : REAL := 0.0;                  // Eingangswert
  #T1                       : REAL := 0.0;                  // Zeitkonstante [ms]
  TA                        : REAL := 0.0;                  // Abtastzeit [ms]
  RESET                     : BOOL := FALSE;                // RESET (y=0.0)
  INIT                      : BOOL := FALSE;                // INIT (y=x)
END_VAR

VAR_IN_OUT
  y                         : REAL := 0;                    // Ausgangswert
END_VAR

VAR_TEMP
  TEMP_REAL                 : REAL;
END_VAR

BEGIN

// RESET
IF RESET THEN
   Y := 0;
   RETURN;                                                  // Baustein verlassen
END_IF;   

// INIT
IF INIT THEN
   Y := X;
   RETURN;                                                  // Baustein verlassen
END_IF;   

IF #T1>0 THEN
  TEMP_REAL := TA/#T1;
  TEMP_REAL := EXP(-TEMP_REAL);
  Y := Y * TEMP_REAL;                                       // Y ist hier noch Altwert   
  Y := Y + X*(1-TEMP_REAL);
ELSE Y:=X;
END_IF;

END_FUNCTION

Y ist ein IN_OUT und muß extern gespeichert werden. TA ist die Abtastzeit, idealerweise aus den temporären Lokaldaten des OB35 zu ermitteln. #T1 ist die Zeitkonstante "TAU". Bei einer Wertänderung wird nach 1xTAU 63% des Endwertes erreicht. Das Zwischenergebnis "TEMP_REAL:=EXP(-TA/#T1)" ist letzten Endes eine Konstante und könnte bei Bedarf auch durch eine solche ersetzt werden.


Gruß, Onkel
 
Zuletzt bearbeitet:
Hallo Johann,

es geht doch sicherlich noch um dieses Projekt?
http://www.sps-forum.de/showthread....chwindigkeitsregelung?highlight=Strangpressen

Wie weit war das eigentlich gelöst? Du wolltest die Geschwindigkeit regeln.

Gruß, Onkel

Du kannst dich erinnern ?! Genau an dem Projekt bin ich noch.
Also ich bin soweit, dass ich die größten Störgrößen beseitigen konnte.
Die ganz großen Schwankungen wurden nämlich (nicht wie vermutet von der analogen veralteteten Regelung) durch ein Stick-Slip Effekt in den Führungen hervorgerufen. Durch bessere Schmierung konnte ich das beheben.
Nun bin ich, wie man sieht dabei ein schönes Eingangsignal zu erhalten bzw. das Eingangsignal so zu bearbeiten, dass ich es als
"glatten" Istwert auf Regelung geben kann. Es soll aber trotzdeim eine neue Regelung auf S7 Basis rein.


Hallo Johann,

Das würde ich mal im Hinterkopf behalten. Woher kommen diese Schwingungen? Ich kenne solche Strangpress-Anlagen nicht. Ich denke, es kann nur von dem mordsmäßig(?) großen Hydraulikzylinder, oder dessen Ansteuerung kommen. Vielleicht ist da noch was zu machen? Ein anderes Proportionalventil, oder ein zweites, kleineres pararell?
Ich nehme an, du kannst ausschließen dass die Schwingungen durch deine eigene Regelung verursacht werden?
Gruß, Onkel

Diese Schwingungen kommen auf jeden Fall nur durch Vibrationen der Anlage. Habe ich getestet.
Man hat 3 Zylinder mit einer Gesamtdurchmesser von über einen Meter. Also mechanisch ist da nichts mehr möglich. Zumindest
nicht ohne großen Aufwand.
 
Danke an euch alle. Jetzt habe ich das verstanden.
mein großer Hänger war, dass ich den Zusammenhang der Grenzfrequenz mit dem Tau nicht verstanden habe.
Ich erkläre mir das jetzt wie folgt:
Der Ursprung ist die Aufladung eines Kondensators. Wenn man sich dann eine Sinus-Frequenz bildlich vorstellt,
dann ist der Anstieg bis PI/2 bzw. 90° ähnlich dem eines Aufladevorgangs des Kondensators. Ein Aufladevorgang und somit auch der Anstieg bis PI/2 bzw. 90° meines Signales wird mit der Zeitkonstante Tau characterisiert.
Da unterschiedliche Frequenzen unterschiedlich "Aufladekurven" haben und somit auch unterschidliche Tau besitzen, kann man
anhand dieser Zeitkonstante bestimmte Frequenzen filtern.

So oder so ähnlich kann man das erklären oder?

Auch wenn es nicht ganz richtig ist, wie ich es mir vorstelle,
eure Antworten und Hilfsbereitschaft haben mir sehr geholfen.
Danke

Ich werde es morgen testen und berichten
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst dich erinnern ?!..
Wenn die Betonung auf "Du" liegt, dann könnte diese Fragestellung mit Fragezeichen und Ausrufezeichen von meinem Chef kommen :ROFLMAO: . Klar kann ich mich erinnern!


..So oder so ähnlich kann man das erklären oder?..
Ich verstehe es ganz salopp gesagt so, dass höhere Frequenzen stärker gefiltert werden und niedrige Frequenzen weniger. Bei "normalem" Rauschen sollte das helfen. Gegen einen "Stick-Slip Effekt" (ich habe gegoogelt) hilft das nur wenig.


..Ich werde es morgen testen und berichten
Ja, mach mal. Viel Erfolg!


Gruß, Onkel
 
Hallo Jo,
Deine letzte Erklärung verstehe ich nicht so ganz. Die Kondensatoraufladung mit dem Tau T gilt eigentlich nur wenn Du einen Sprung in Form einer Gleichspannung auf den Kondensator (PT1-Glied schaltest). Diese Sprungantwort kann man sich aber in einen Frequenzgang im Bode-Diagramm umrechnen. Den Frequenzgang kann man sich als das Verhältnis einer Ausgangsschwingung zur Eingangsschwingung eines Gerätes vorstellen.
Man legt also eine Sinusschwingung an den Eingang eines Gerätes und schaut was hinten rauskommt. Das Verhältnis der Amplituden ist der Amplitudengang und die Phasenverschiebung ist der Phasengang. Bei 1/T (Eckfrequenz) beginnt die Dämfung mit 3db/Dekade.

Gruß Frank
 
Zuletzt bearbeitet:
Ich verstehe es ganz salopp gesagt so, dass höhere Frequenzen stärker gefiltert werden und niedrige Frequenzen weniger. Bei "normalem" Rauschen sollte das helfen. Gegen einen "Stick-Slip Effekt" (ich habe gegoogelt) hilft das nur wenig.

Gruß, Onkel

den Stick-Slip effekt habe ich ja schon elemeniert. Jetzt habe ich nur noch "Rauschen" von der Vibrationen.
kann man in dem Fall überhaupt das Wort "Rauschen" verwenden?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Jo,
Deine letzte Erklärung verstehe ich nicht so ganz. Die Kondensatoraufladung mit dem Tau T gilt eigentlich nur wenn Du einen Sprung in Form einer Gleichspannung auf den Kondensator (PT1-Glied schaltest).
Gruß Frank

ich stelle mir das so vor:

wenn man sich eine Aufladekurve und eine abgeschnittene sinuskurve bei PI/2 bzw. 90° anschaut, (Also ein sinus bis zur 1.Ampliutde) dann steigen beide doch "bildlich" gesehen nach einer e-funktion. Also sind beide von der Form her identisch. Somit kann man das Tau der Aufladekurve auch für eine Frequenzcharacterisierung nutzen.

Beispiel:

bei F1= 1Hz hat man die 63% nach T1= 0.2 sek erreicht
bei F2 = 2Hz hat man die 63% schon nach T2= 0.1 sek erreicht, weil höhere Frequnzen schneller ansteigen.

Die Werte habe ich nur kurz überschlagen.

beide Frequnzen haben also unterschiedliche Zeitkonstanten,

weiter mit dem Beispiel:
wenn man nun die Frequenz F2=2Hz filtern möchte nimmt man eine Tiefpass mit z.b fg= 1,5 Hz


dann wählt man für das Tau = 1/fg= 1/1,5 = 0,667sek

und im exponent einer Aufladkurve steht ja : Abtastzeit/Tau = 0.1/0.667sek = 0.15sek Abtastzeit=100ms

damit befinden wir uns zwischen T1 und T2 und F2 wird gefiltertert.

So habe ich mir das "schön gemalt".
Oder wie kann man die Zeitkonstante in der Aufladekurve eines Kondensators mit der Zeitkonstante in der Grenzfrequenz mathematsich in Verbidnung bringen?
 
Zuletzt bearbeitet:
Achso zum Thema der Mittelwertbildung wollte ich ja noch berichten:

also je niedriger ich die Zykluszeit einstellte, desto größer die Schwingungenim Signal. Ist ja auch klar: Weil die SPS die Ausschläge der Vibrationen durch 10 ms teilt, anstatt durch 100 ms. Dadurch, dass ich aber mehr Messwerte für die Mittelwertbildung nehmen kann, so gleicht das in meinem Fall nur aus.
genau gesagt, mit niedrigerer Zykluszeit und mehr Messwert wurde das SIgnal schon besser. aber nicht in dem erhofften Mass.


Ich mach mich jetzt ran und teste noch eure PT1 Filter und die statistische Mittelwertbildung .

ich melde mich
 
Hallo Jo,
das Tau T der Kondensatoraufladung ist das 1/T als Grenzfrequenz im Bode-Diagramm.

Gruß Frank
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wobei das ja eine Glättung (!!!) darstellt und somit nicht anderes als eine gleitende Mittelwertbildung ist.
Die Wichtung der Vorgängerwerte ist so oder so ein Thema, das man ausprobieren muss.
 
Also ich habe heute das mit den unterschiedlichen PT1 Filtern getestet.
Im Grunde genommen haben alle das selbe Verhalten gezeigt.
Als Masstab habe ich eine FFT an allen Filterergebnisse angewendet.

Kann man folgendes als richtige Vorgehensweise/Gedanken bezeichnen die/den ich heute gemacht habe?:
ich habe zunächst eine allgemeine FFT angewendet um herauszufinden, in welchen Spektren wir uns überhaupt befinden.
Das kam dabei heraus:
FFT allgemein.JPG (die FFT die ich am Anfang postete war falsch)


Anschließend habe ich mit PT1-Filtern und deren Grenzfrequenzen experimentiert um zu schauen, ob und wie die höheren
Frequenzen gedämpft/gefiltert werden.


Folgendes habe ich als Ergebnis für fg=0.8Hz und fg=0.2Hz

fg 0.8.JPG Ich habe die FFT immer am Rohsignal und am gefilterten Signal der jeweiligen Aufzeichnung angewendet, um vergleichen zu können.


fg 0.2.JPG
Man kann immer erkennen, dass die Frequenzen ab der Grenzfrequenz abgeschnitten werden.
Für mich sieht es schon so aus, als wäre mein Vorgehen und das Ergebnisse richtig.
Was haltet ihr davon?
Seltsam finde ich nur, dass bei der FFT mit fg=0.8 Hz, die Amplituden unter 0.8 Hz auch schon kleiner sind als beim Rohsignal.


Eine Frage noch zur Zeitkonstante T:
Wenn ich nun ein fg=0,2 Hz anwenden möchte, dann habe ich ein T=5sek.
bedeutet das wirklich, dass ich wirklich 5 sek. Zeitverzug habe?
Also wenn ich in meinen Aufzeichnungen, die ich bisher mit fg=0.2 Hz gemacht habe, einen Sollwertsprung mache, dann pendelt
sich die Ausganggröße noch weit unter den 5 sekunden ein. (Ich meine die Zeit bei mir liegt so etwa bei 0,5-1 sek.)
 
Hallo,
5 s Zeitverzug stimmt nicht. Nach 5 * 5 s = 25 s hast Du 99,9% Deiner Sprunghöhe erreicht. Wenn dies bei Dir nicht so ist, stimmt etwas nicht. Wichtig ist. daß Du den FB richtig aufrufst und die Zeitbasis stimmen muß.

Die kleineren Amplituden im Spektrum der niedrigeren Frequenzen als 0,8 Hz könnte ich nur so erklären, daß bei der Grenzfrequenz im Bodediagramm kein direkter Knick ist. Die Dämpfung der Frequenzen beginnt schon etwas vor der Grenzfrequenz. Bei der Grenzfrequenz ist schon eine Dämpfung von 3 dB eingetreten. Der Amplitudengang ist bei der Grenzfrequenz schleichend mit 3dB / Dekade.

Gruß Frank
 
Zurück
Oben