TC3: Drehzahl- und Drehmomentmesswerte glätten

Beiträge
6.451
Reaktionspunkte
1.512
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
an einem Prüfstand für E-Motore wird unter anderem das Drehmoment und die Drehzahl aufgezeichnet. Diese Werte schwanken minimal so das eine Welle entsteht, was nicht gewünscht ist und geglättet werden soll. Die Frage wäre jetzt wie? Eine Möglichkeit wäre einen Filter zu nehmen, z.B. FILTER_I von Oscat oder man arbeitet mit dem gleitenden Mittelwert, gebe es auch bei Oscat. Was würdet Ihr nutzen?
Beide müssten aber angepasst werden, da sie mit dem falsche Variablentyp arbeiten und der gleitende Mittelwert nicht genügend Einträge besitzt. Bei der aktuellen Anlage liegen die Werte als Real-Wert vor. Die Task für die Aufzeichnung arbeitet mit 500µs. Die Glättung soll soll über eine variable Anzahl von Messwerten und damit über einen wählbaren Zeitraum erfolgen. Die maximal mögliche Anzahl von Messwerten liegt bei 2000.
In diesem Thread gab es zum Thema gleitender Mittelwert mal ein Beispiel.
 
an einem Prüfstand für E-Motore wird unter anderem das Drehmoment und die Drehzahl aufgezeichnet. Diese Werte schwanken minimal so das eine Welle entsteht, was nicht gewünscht ist und geglättet werden soll. Die Frage wäre jetzt wie? Eine Möglichkeit wäre einen Filter zu nehmen, z.B. FILTER_I von Oscat oder man arbeitet mit dem gleitenden Mittelwert, gebe es auch bei Oscat. Was würdet Ihr nutzen?
Beide müssten aber angepasst werden, da sie mit dem falsche Variablentyp arbeiten und der gleitende Mittelwert nicht genügend Einträge besitzt. Bei der aktuellen Anlage liegen die Werte als Real-Wert vor. Die Task für die Aufzeichnung arbeitet mit 500µs. Die Glättung soll soll über eine variable Anzahl von Messwerten und damit über einen wählbaren Zeitraum erfolgen. Die maximal mögliche Anzahl von Messwerten liegt bei 2000.
Leider verstehe ich nicht so genau, worauf Deine Frage hinausläuft, Oliver.

Es häufen sich zu viele Messwerte an, so dass die Bildung eines gleitenden MittelWerts zu Platz- und Zeit-raubend würde?
Wie sieht es mit der Welligkeit Deines geglätteten Wertes aus? Ist sie periodisch und bleibt die PeriodenLänge der Welle denn konstant? Dann würde ich die Anzahl der erfassten/ausgewerteten Werte so auslegen, dass möglichst genau 1 Periode ausgewertet wird.

Wenn Du "TP1-mässig" glätten willst, so gibt es das Problem mit der Anzahl der Werte nicht. Die Wichtung der Werte nimmt exponentiell ab mit ihrem "Alter".

Ein FIFO in den DatenTyp REAL umzustricken, sollte für Dich eigentlich kein Problem sein.
Vielleicht prüfst Du auch vorher, ob das FIFO REAL sein muss oder ob die TypWandlung in den im FIFO verwendeten DatenTyp vor dem Eintragen der Werte ins FIFO überhaupt eine übermässige Ungenauigkeit produzieren würde.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
.. Diese Werte schwanken minimal so das eine Welle entsteht ...
Nur mal so als unqualifizierter Einspruch. Falls es sich um eine kontinuierliche Welle handelt, so wäre es sehr wahrscheinlich, dass diese nicht durch Messfehler entsteht, sondern durch die Ansteuerung bzw. Regelung selbst, oder auch durch mechanische Schwingungen. Dann wäre es für einen Prüfstand höchst kontraproduktiv, diese Tatsache zu retuschieren.
 
Leider verstehe ich nicht so genau, worauf Deine Frage hinausläuft, Oliver.

Es häufen sich zu viele Messwerte an, so dass die Bildung eines gleitenden MittelWerts zu Platz- und Zeit-raubend würde?
Wie sieht es mit der Welligkeit Deines geglätteten Wertes aus? Ist sie periodisch und bleibt die PeriodenLänge der Welle denn konstant? Dann würde ich die Anzahl der erfassten/ausgewerteten Werte so auslegen, dass möglichst genau 1 Periode ausgewertet wird.

Wenn Du "TP1-mässig" glätten willst, so gibt es das Problem mit der Anzahl der Werte nicht. Die Wichtung der Werte nimmt exponentiell ab mit ihrem "Alter".

Ein FIFO in den DatenTyp REAL umzustricken, sollte für Dich eigentlich kein Problem sein.
Vielleicht prüfst Du auch vorher, ob das FIFO REAL sein muss oder ob die TypWandlung in den im FIFO verwendeten DatenTyp vor dem Eintragen der Werte ins FIFO überhaupt eine übermässige Ungenauigkeit produzieren würde.
Da missverstehst Du mich. Ich bin mir mangels Erfahrung nicht sicher was für die Glättung die bessere Methode ist, der gleitende Mittelwert oder der Filter. Zu viele Werte habe ich eigentlich nicht, es ist halt nur so, dass der Baustein in der OSCAT Lib nur 32 Werte verarbeiten kann und ich den aufbohren und auf Real-Zahlen umstellen müsste, den Filterbaustein müsste ich auch auf Real umstellen.
 
Nur mal so als unqualifizierter Einspruch. Falls es sich um eine kontinuierliche Welle handelt, so wäre es sehr wahrscheinlich, dass diese nicht durch Messfehler entsteht, sondern durch die Ansteuerung bzw. Regelung selbst, oder auch durch mechanische Schwingungen. Dann wäre es für einen Prüfstand höchst kontraproduktiv, diese Tatsache zu retuschieren.
Das werde ich mal weitergeben, aber ich denke die Kollegen die die Glättung möchten wissen was sie tun.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss gestehen, ich weiß nicht was ich tue.
Ich habe den Filter_DW aus der OSCAT 3.33 wie folgt auf Real umgeschrieben:
C-ähnlich:
FUNCTION_BLOCK Filter_Real
VAR_INPUT
    X : REAL;
    T : TIME;
END_VAR
VAR_OUTPUT
    Y : REAL;
END_VAR
VAR
    last : REAL;
    tx: REAL;
    init: BOOL;
    Yi : REAL;
END_VAR

(* read system time *)
tx := DWORD_TO_REAL(T_PLC_MS());

(* startup initialisation *)
IF NOT init OR T = T#0S THEN
    init := TRUE;
    Yi := X;
ELSE
    Yi := Yi + (X - Y) * (tx - last) / TIME_TO_REAL(T);
END_IF;
last := tx;

Y := Yi;
Nur läuft Yi irgendwann über, weil ich vermutlich irgendwo einen Gedanken-/Bedienfehler mache.
 
Pauschal ein PT1- Glied zu nehmen sehe ich eher weniger zielführend, falls man ein sehr großes Drehzahlbereich betrachtet. Erstmal ist ja die Frage, warum willst Du glätten. Zunächst geht es darum Schmutzeffekte wie z.B. Quantisierungsfehler der Geberaufbereitung in der Drehzahldarstellung zu eliminieren.
Beispiel: Dein Antrieb dreht mit 6000rpm ==> 100Hz mechanisch und Du hast einen Geber mit einer Strichzahl von 2048. Da wirst Du Vielfache der Geberstrichzahl sehen (auch wenn moderne Antriebssysteme auch eine Amplidutenkorrektur etc. machen können). Also wärst Du da bei 204800Hz und Vielfache. Da wäre bereits eine Glättung von einigen ms schon zu viel und man würde z.B. Frequenzanteile die z.B. durch Rastmomente des Motors, unzulässig dämpfen (die Dich u.a. interessieren würden). Bei einer Drehzahl von 6rpm schaut das dann völlig anders aus.
Beim SINAMICS kenne ich das nun so: Da gibt es sog. TEC (Technologieerweiterungen) mit denen man z.B. Bandsperren auf Signale setzen kann, oder wenn man alles gern in der Steuerung macht, dann eben die ein Oversampling erlauben (dann bekommt man z.B. 4 Werte auf einmal, wenn man in 250µs IRT- Takt arbeitet und die Drehzahlistwerterfassung in 62,5µs).
Gerne arbeite ich da mit einer FFT- Darstellung (da lasse ich den Motor mit 60rpm = 1Hz mechanisch drehen - dann hat man im FFT direkt die Vielfachen und kann sich überlegen wo die herkommen). Dann kann man nochmal mit unterschiedlichen Drehzahlen arbeiten und schauen, ob Frequenzen linear mitwandern oder womöglich stehen bleiben (aber dafür kann man dann auch Bodediagramme aufnehmen).
In der Praxis aber, sind häufig die hochfrequenten Anteile gar nicht so kriegsentscheidend, da dort wenig Weg drinsteckt. D.h. womöglich werden die eh schon von der Mechanik / Kupplung etc. geschluckt. Das kann man dann durch einen Frequenzgang der Mechanik beurteilen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Pauschal ein PT1- Glied zu nehmen sehe ich eher weniger zielführend, falls man ein sehr großes Drehzahlbereich betrachtet. Erstmal ist ja die Frage, warum willst Du glätten. Zunächst geht es darum Schmutzeffekte wie z.B. Quantisierungsfehler der Geberaufbereitung in der Drehzahldarstellung zu eliminieren.
Beispiel: Dein Antrieb dreht mit 6000rpm ==> 100Hz mechanisch und Du hast einen Geber mit einer Strichzahl von 2048. Da wirst Du Vielfache der Geberstrichzahl sehen (auch wenn moderne Antriebssysteme auch eine Amplidutenkorrektur etc. machen können). Also wärst Du da bei 204800Hz und Vielfache. Da wäre bereits eine Glättung von einigen ms schon zu viel und man würde z.B. Frequenzanteile die z.B. durch Rastmomente des Motors, unzulässig dämpfen (die Dich u.a. interessieren würden). Bei einer Drehzahl von 6rpm schaut das dann völlig anders aus.
Beim SINAMICS kenne ich das nun so: Da gibt es sog. TEC (Technologieerweiterungen) mit denen man z.B. Bandsperren auf Signale setzen kann, oder wenn man alles gern in der Steuerung macht, dann eben die ein Oversampling erlauben (dann bekommt man z.B. 4 Werte auf einmal, wenn man in 250µs IRT- Takt arbeitet und die Drehzahlistwerterfassung in 62,5µs).
Gerne arbeite ich da mit einer FFT- Darstellung (da lasse ich den Motor mit 60rpm = 1Hz mechanisch drehen - dann hat man im FFT direkt die Vielfachen und kann sich überlegen wo die herkommen). Dann kann man nochmal mit unterschiedlichen Drehzahlen arbeiten und schauen, ob Frequenzen linear mitwandern oder womöglich stehen bleiben (aber dafür kann man dann auch Bodediagramme aufnehmen).
In der Praxis aber, sind häufig die hochfrequenten Anteile gar nicht so kriegsentscheidend, da dort wenig Weg drinsteckt. D.h. womöglich werden die eh schon von der Mechanik / Kupplung etc. geschluckt. Das kann man dann durch einen Frequenzgang der Mechanik beurteilen.
Der Prüfling läuft nicht 100% konstant, aber diese minimalen Schwankungen sollen nicht in der Aufzeichnung erscheinen. Um mal ein anderes Beispiel zu nehmen. Der Kollege hat ein Sinussignal mit einem relativ großem Offset und einer relativ niedrigen Amplitude als Sensorsignal eingespielt. Optimal gefiltert müsste in der Situation eine Gerade herauskommen, was es mit den von mir getesteten Varianten, dem Filter aus OSCAT FILTER_MAV_DW umgeschrieben auf Real und einem selbst geschriebenem FB der alle Real Werte eines Arrays addiert und durch die Anzahl der Elemente teilt und in jedem Durchlauf den ältesten Wert durch einen neuen ersetzt, nicht ganz tut. Die Schwankungen sind nicht mehr so sichtbar und das Ergebnis ist vermutlich auch in Ordnung, aber für weitere Ideen wäre ich offen.
 
Optimal gefiltert müsste in der Situation eine Gerade herauskommen, was es mit den von mir getesteten Varianten, ... nicht ganz tut. Die Schwankungen sind nicht mehr so sichtbar und das Ergebnis ist vermutlich auch in Ordnung, aber für weitere Ideen wäre ich offen.
Aber ein Bisschen Ähnlichkeit mit dem ungefilterten Signal darf noch erkennbar sein? ;)
Ich fürchte, dass Deine Erwartungen oder die Deines Kunden vielleicht etwas überzogen sind.
Wie gross ist denn die Amplitude der verbleibenden Schwankung im Verhältnis zu einem beliebig gewählten (sozusagen mittleren) Mittelwert?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber ein Bisschen Ähnlichkeit mit dem ungefilterten Signal darf noch erkennbar sein? ;)
Wenns sein muss.
😂
Ich fürchte, dass Deine Erwartungen oder die Deines Kunden vielleicht etwas überzogen sind.
Wie gross ist denn die Amplitude der verbleibenden Schwankung im Verhältnis zu einem beliebig gewählten (sozusagen mittleren) Mittelwert?
Das mag sein. Ich habe jetzt einen FB geschrieben, der eine bestimmte Anzahl von Messwerten nimmt und daraus den Durchschnitt errechnet. Jeder neue Messwert ersetzt den ältesten vorhandenen. Mit dem Ergebnis können die hier erstmal leben.
 
Zurück
Oben