Sollwertkurven Optimierung im "stark" gedämpften System

Rob87

Level-2
Beiträge
39
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi allerseits,

ich habe eine Aufgabe wo mir vielleicht der korrekte Ansatz fehlt. Geben ist:
- Eine Sinusförmige Sollwertkurve im 10ms Raster
- ein Istwert verzögert um ca. 550-650 ms mit einer Aktualisierungsrate von 30-70 ms
- Eine S7-1500 und ein ABB DCS


Realisiert ist aktuell, dass die S7 alle 10ms einen Sollwert an den DCS schickt und der das direkt umsetzt (Rampe = 0 weil in SPS Realisiert).


Jetzt ist es so das die Last sich noch in der Beschleunigungsphase befindet, während die SW-Kurve schon in die Verzögerung umschlägt. -> Dadurch wird die Maximal-/Minimalgeschwindigkeit nicht erreicht.
Vor dem Upgrade auf S7/DCS war ein S5 etc. verbaut. Dort wurde der ServoController(der jetzt durch den DCS ersetzt wurde) Zuerst mit der gewollten Sollkurve gefüttert. Dann wurde die diese abgefahren und die Differenz zwischen Soll- und Istkurve auf die Sollkurve aufgeschlagen(addiert). Anschließend wurde die Optimierte Sollkurve abgefahren und wieder die Differenz addiert. Dies wurde bis zu 10x wiederholt.

(1) Beim Versuch das im neuen System zu automatisieren kamen "zacken" in die optimierte sollkurven was wieder spürbare Vibrationen hervorrief.
(2) ein Dauerhafter Prozentualer Offset(nochmals gedämpft über die aktuelle Position in der Sinus Bewegung) führte dazu das die Beschleunigung viel besserwurde, bei der Verzögerung ein "Bauch" entstand, weil die Masse nicht nur beschleunigt werden muss, sondern neben der neg. Beschleunigung auch noch gegen den "Vorwärtsdrang"[mir fällt das Fachwort nicht ein] der gerade eben noch beschleunigten Masse angekämpft werden muss.
(3) Ein PI-Regler zur Berechnung eines Offsets nahm zwar die zackenraus brachte jedoch keine Dauerhafte Optimierung.

### Was für Konzepte gibt es noch zu Automatischen Sollkurven Optimierung?###

Anbei Aufzeichnung:
Orange: Optimierte Sollkurve
Rot: Gewollte Sollkurve
Braun: Istkurve

(Ich hoffe man sieht wie die Braune Kurve nach Rechts von der Roten abweicht?)

Danke.
 

Anhänge

  • Screenshot 2026-01-13 122229.png
    Screenshot 2026-01-13 122229.png
    58,4 KB · Aufrufe: 63
Das es einen zeitlichen Abstand zwischen Ist und Vorgabe gibt ist klar, weil der Antriebsregler ja erstmal auf deine Vorgabe reagieren muss - er läuft also schon zwangsläufig in dieser Konstellation immer "hinterher".
Wenn es dir aber um eine Profilkurve dieser Art geht ... warum gibst du dann nicht einfach nur den jeweiligen Umlenkpunkt (der Kurve) und die von dir gewünschte Beschleunigung an den Regler. Hier würde sich dann der Regler insgesamt um alles kümmern, der zeitliche Verzug wäre nicht so groß und die Kurve selbst sollte dann auch glatter sein - einzig kann ich jetzt nicht sagen, wie die Istkurve dann real aussieht ...
 
Die Sollkurve soll vermutlich nich 'optimiert' werden.
Eher die Regler für die Umdrehungen muss so eingestellt werden dass die Istwert schnellstmöhlich und ohne Überschwingungen den Sollwert so nah wie möglich folgt.
Vermutlich gibt es eine klassichen PI oder PID Regler.

(1) Beim Versuch das im neuen System zu automatisieren kamen "zacken" in die optimierte sollkurven was wieder spürbare Vibrationen hervorrief.
Was wurde 'automatisiert' ?

(2) ein Dauerhafter Prozentualer Offset(nochmals gedämpft über die aktuelle Position in der Sinus Bewegung) führte dazu das die Beschleunigung viel besserwurde, bei der Verzögerung ein "Bauch" entstand, weil die Masse nicht nur beschleunigt werden muss, sondern neben der neg. Beschleunigung auch noch gegen den "Vorwärtsdrang"[mir fällt das Fachwort nicht ein] der gerade eben noch beschleunigten Masse angekämpft werden muss.
Lautet als ob du einen Art P-Anteil programmiert hast. Mit einen grossen P-Anteil kann man einen Prozess beschleunigen. Aber dann kann es auch unstabil gemacht werden.

Um eine PI(D) Regler zu tunen gibt es keine einfache Empfehlungen.
Es gibt hands-on Verfahren (Ziegler Nichols z.B.), und es gibt theoretische Verfahren.
In den letzten Fall erstellt man eine theoretischen Modell von die Prozess der geregelt werden muss.
Damit erkennt man z.B. wie einen PI(D) Regler eingestellt werden muss damit dass die Prozess nicht unstabil wird (d.h. gelangt ins Schwingungen).
Und mann kann die erreichbare Grenzen finden, von wie nah die Istwert den Sollwert finden kann, damit man nicht versucht was unmöglich ist zu erreichen.

- ein Istwert verzögert um ca. 550-650 ms [..]
Das kommt von die Inertie von den gesammte System.

Leider ist es ungf. 30 Jahren her dass ich mit klassische PID Regler theoretisch gearbeitet habe. Einige Erfahrungen bleiben noch hinten im Kopf.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Sollkurve soll vermutlich nich 'optimiert' werden.
Eher die Regler für die Umdrehungen muss so eingestellt werden dass die Istwert schnellstmöhlich und ohne Überschwingungen den Sollwert so nah wie möglich
Der Regler in dem Fall ist der FU(DCS) und der kann aufgrund von gegebener Haftreibung und dem Trägheitsmoment nur genau so aggieren wie es oben beschrieben ist.
Was wurde 'automatisiert' ?
Die Addition der Soll/ist Differenz auf die Sollkurve.

Das zu lösende Problem ist wie muss ich den Sollwert verändern damit der FU genau das richtig Maß an Leistung ins System gibt um eine gewünscht Sollkurve zu fahren.
 
Vor dem Upgrade auf S7/DCS war ein S5 etc. verbaut. Dort wurde der ServoController(der jetzt durch den DCS ersetzt wurde) Zuerst mit der gewollten Sollkurve gefüttert. Dann wurde die diese abgefahren und die Differenz zwischen Soll- und Istkurve auf die Sollkurve aufgeschlagen(addiert). Anschließend wurde die Optimierte Sollkurve abgefahren und wieder die Differenz addiert. Dies wurde bis zu 10x wiederholt.
Ich lese dies, als ob du versucht hast einen selbst optimierende Regler zu programmieren.
Hast du Kentniss von basale Regelungsprinzipen ?
Was ist deine Ausbildung ?
 
Was ist deine Ausbildung ?

Studierter Automatisierungstechniker. Das Alte Verfahren wurde vom Kunden so gemacht. Ich Programmierung und mache die IBN der Neuen Steuerung ;).

Ich kenne und nutze PI[D] Relger für viele Anwendungen seit über 10Jahren(im Beruf)...

Und wie ich schon Schrieb hab ich bereits ein Offst-Pi-Regler als Ansatz versucht. Problem bei der Sinus Fahrt ist im Abbremsen die Schwungmasse zu kompensieren...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Problem bei der Sinus Fahrt ist im Abbremsen die Schwungmasse zu kompensieren...
Ist dass die eigentliche Problem, nur beim Abbremsen ?
Die Beschreibung von das System, die Aufgabe und das Problem ist unklar.

Studierter Automatisierungstechniker.
[..]
Ich kenne und nutze PI[D] Relger für viele Anwendungen seit über 10Jahren(im Beruf)...
Regelung ist einen mächtigen Thema.
In bisschen Kenntniss von PID ist in viele Fällen genug, aber für komplizierter Aufgaben nicht.
Ist dein Regelungs-Kenntniss auf Bachelor Niveau, oder Master Niveau ?
 
Ist dass die eigentliche Problem, nur beim Abbremsen ?
Die Beschreibung von das System, die Aufgabe und das Problem ist unklar.
Beim beschleunigen bekomme ich den Sollwert zu 99,xx% hin durch den Prozentualen Offset Multipliziert mit Sin(t).
Beim Bremsen entsteht ein Versatz, sodass ein "Bauch" entsteht siehe Bild(braune Linie), der deutlich >3% vom soll abweicht.

Ist dein Regelungs-Kenntniss auf Bachelor Niveau, oder Master Niveau ?
3 Semester Reglungstechnik im Bachelor, da spezialisiert auf Automatisierung.
 
Beim Bremsen entsteht ein Versatz, sodass ein "Bauch" entsteht siehe Bild(braune Linie)
Ich kann das Bild nicht interpretieren. Wo den Bauch zu sehen ist z.B.
Was ist den Sollwert (ohne Manipulation). Was ist den Istwert. Wann wird gebremmst ?

Immer noch verstehe ich nicht was du mit 'Automatischen Sollkurven Optimierung' meinst.
Einen Sollwert (ob fest oder variabel) ist ja gegeben, es wird nicht manipulert oder 'optimiert'.
Ich denke du vielleicht mit die 'Prozentualen Offset Multipliziert mit Sin(t)' einen Vorwärtsregelung erstellt hast. Und dann hast du einen Art Rückkopplungsregelung an die Vorwärtsregler mit dieses gemacht:
Dort wurde der ServoController(der jetzt durch den DCS ersetzt wurde) Zuerst mit der gewollten Sollkurve gefüttert. Dann wurde die diese abgefahren und die Differenz zwischen Soll- und Istkurve auf die Sollkurve aufgeschlagen(addiert). Anschließend wurde die Optimierte Sollkurve abgefahren und wieder die Differenz addiert. Dies wurde bis zu 10x wiederholt.
Oder vielleicht verstehe ich es ganz falsch.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich kann das Bild nicht interpretieren. Wo den Bauch zu sehen ist z.B.
Was ist den Sollwert (ohne Manipulation). Was ist den Istwert. Wann wird gebremmst ?
Orange: Optimierte Sollkurve <- (Sollwert mit 100 Multipliziert um Einheiten auszugleichen)
Rot: Gewollte Sollkurve
Braun: Istkurve
-> Gebremst wird wenn die Kurve nach unten geht. Es werden dort Geschwindigkeiten gezeigt.
Immer noch verstehe ich nicht was du mit 'Automatischen Sollkurven Optimierung' meinst.
Eine veränderte Sollkurve um die gewollte Sollkurve zu erreichen. Spich User gibt ein 1m/s +-0,20m/s mit 0,5hz als Sinus. Hieraus wird ein Array(bis zu 3000 Werte) berechnet. SPS Gibt die Werte 1:1 an FU im 10ms Raster. -> Braune Kurve resultiert. SPS Vergleicht die Soll/Ist Wert und soll die (bis zu) 3000 so verändern, das die Braune Kurve der Usereingabe entspricht.
Und dann hast du einen Art Rückkopplungsregelung an die Vorwärtsregler mit dieses gemacht:
-> Das War das alte manuelle Verfahren, dass einiger Maßen das gewünschte Ergebnis erzielt hat. [Wird so nicht mehr gemacht]

Ich habe die oben genannten Logiken einzeln als Optimierungsversuch ausgetestet:
(1) Beim Versuch das im neuen System zu automatisieren kamen "zacken" in die optimierte sollkurven was wieder spürbare Vibrationen hervorrief.
-> Differenz einfach drauf setzten
(2) ein Dauerhafter Prozentualer Offset(nochmals gedämpft über die aktuelle Position in der Sinus Bewegung) führte dazu das die Beschleunigung viel besserwurde, bei der Verzögerung ein "Bauch" entstand, weil die Masse nicht nur beschleunigt werden muss, sondern neben der neg. Beschleunigung auch noch gegen den "Vorwärtsdrang"[mir fällt das Fachwort nicht ein] der gerade eben noch beschleunigten Masse angekämpft werden muss.

(3) Ein PI-Regler zur Berechnung eines Offsets nahm zwar die zacken raus, brachte jedoch keine Dauerhafte Optimierung.
 
-> Gebremst wird wenn die Kurve nach unten geht. Es werden dort Geschwindigkeiten gezeigt.
??
Meinst du den 'Bauch' ist den Unterschied zwischen Ist und Soll beim Bremsen ?
Willst du tatsächlich die Geschwindigkeit wie die rote Kurve haben ?
Was passiert bei die "?" in das Kurvenanzeige ? Ist das so gewollt ?
1768468014293.png
Es wäre für die Analyse wertvoll die Gesteuerte Variabel in die Kurvenanzeige zu sehen.

-> Das War das alte manuelle Verfahren, dass einiger Maßen das gewünschte Ergebnis erzielt hat. [Wird so nicht mehr gemacht]
Und warum muss es geändert werden ?
Was du mit die 'optimierte Solwert' machst kapiere ich immer noch nicht.
 
??
Meinst du den 'Bauch' ist den Unterschied zwischen Ist und Soll beim Bremsen ?
Ja genau zusehen zwischen Sekunde 13 und 16.
Willst du tatsächlich die Geschwindigkeit wie die rote Kurve haben ?
Ja, ohne die Ruckler. -> Vor 1. [?] Anfahrrampe(sollte direkt in Kurve übergehen)
Was passiert bei die "?" in das Kurvenanzeige ? Ist das so gewollt ?
Anhang anzeigen 93710
Bei Beiden Fragezeichen ist ein Übergang von Rampe in Sinus. Im Rampenmodi habe ich die Totzeit nicht kompensiert deshalb die "zacken". Bitte die Zacken Ignorieren!
Es wäre für die Analyse wertvoll die Gesteuerte Variabel in die Kurvenanzeige zu sehen.
Das ist die Orange Kurve allerding im m/s statt in cm/s. Bei t1 hat Stellwert sein Maximum bei 1,37(137) bei t2 hat das System sein Maximum 131(1,31) was der Vorgabe entspricht.
Und warum muss es geändert werden ?
Weil die Anlage Elektrotechnisch erneuert wurde.
Was du mit die 'optimierte Sollwert' machst kapiere ich immer noch nicht.
-> Siehe Orange Linie.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die gesteuerte Variabel ist die Ausgang von den gesammte 'Regelungsalgoritmus'. Also was die rotierende Masse treibt.
Drehmoment ? Drehzahl an einen eksternen Servo oder FU ? Oder ?

Wenn ich es verstanden habe, dann ist die 'optimierte Sollwert' einen Zwischen-Variabel. Es ist nicht was direkt die Maschine antreibt.

Wenn möglich wäre z.B. auch Antriebsmoment, Stromaufnahme oder andere Prozesswerte in die Kurvenanzeige zu sehen. Damit erkennt man was die Regelung tatsächlich macht.

Und warum muss es geändert werden ?
Weil die Anlage Elektrotechnisch erneuert wurde.
Das ist keinen Grund von die alte fungierende Verfahren auf eine selbsterstellte Regelungsverfahren zu wechseln.

(So langsahm verschwindet meine Interesse in diesen Thema).
 
Meinst du den 'Bauch' ist den Unterschied zwischen Ist und Soll beim Bremsen ?
Ja genau zusehen zwischen Sekunde 13 und 16.
Mit 'Bremsen' meinst du die Zeitlichen Versatz zwischen treiben und bremsen in die Sinuskurve ? Nicht bremsen beim stoppen ?
In den Fall gibt es ein Unterschied in den Kurvenznseige (ein Bauch) wenn treiben.
Wenn man eine längere Zeit sehen konnte, wurde man vermutlich die dementsprechende positiven Unterschied sehen können beim bremsen.
 
Zuletzt bearbeitet:
Die gesteuerte Variabel ist die Ausgang von den gesammte 'Regelungsalgoritmus'.
Korrekt
Also was die rotierende Masse treibt.
Falsch Linear bewegte Masse (Schienenwagen).
Drehmoment ? Drehzahl an einen eksternen Servo oder FU ? Oder ?
- Eine S7-1500 und ein ABB DCS
ABB DCS =FU
Wenn ich es verstanden habe, dann ist die 'optimierte Sollwert' einen Zwischen-Variabel. Es ist nicht was direkt die Maschine antreibt.
optimierte Sollwert = Stellwert = gesteuerte Variable
Wenn möglich wäre z.B. auch Antriebsmoment, Stromaufnahme oder andere Prozesswerte in die Kurvenanzeige zu sehen. Damit erkennt man was die Regelung tatsächlich macht.
Sobald ich Wieder auf der Anlage bin kann ich hier etwas nachreichen.
Das ist keinen Grund von die alte fungierende Verfahren auf eine selbsterstellte Regelungsverfahren zu wechseln.
Wenn sowohl das gesamte Steuerungsprogramm und die Steuerelektronik, als auch das User Interface anders sind. Dann schon.
Zudem Soll die Sollkurve genauer abgefahren werden, was Bestandteil des Auftrages ist.
Das Alte Verfahren muss also Automatisiert und verbessert werden.

(So langsahm verschwindet meine Interesse in diesen Thema).
Schade.

Mit 'Bremsen' meinst du die Zeitlichen Versatz zwischen treiben und bremsen in die Sinuskurve ? Nicht bremsen beim stoppen ?
Mit Bremsen meine ich Geschwindigkeit reduzieren. [V(t) < V(t-1)] nicht bis zum stillstand.

Wenn man eine längere Zeit sehen konnte, wurde man vermutlich die dementsprechende positiven Unterschied sehen können beim bremsen.
=> Das Verstehe ich nicht
Ich kann den Wagen im Betrieb Mehrfach hin- und herfahren und so mehrfach optimieren(lassen durch die SPS).

Aktuell spiele ich mit dem Gedanken bei jeder V-Istwert Änderung die Durchschnittliche Abweichung von Sollwert zu nehmen.
Diesen Durchschnittswert dann auf alle Sollwerte die während des letzten Istwerts Aktiv waren zu addieren.

Hier Nochmal ein Bild zur Verdeutlichung Abtastung Sollwert(=Stellwert) und Istwert .
 

Anhänge

  • Bild_2026-01-15_113955504.png
    Bild_2026-01-15_113955504.png
    62,8 KB · Aufrufe: 8
Zuviel Werbung?
-> Hier kostenlos registrieren
Laangsahm kommt die Information, Tropf, Tropf ...

Es gibt also ein FU.
optimierte Sollwert = Stellwert = gesteuerte Variable
Also, mit Sollwert meinst du die Ausgabe von deine Algoritmus an die FU.

Die genannte Ist und Sollwerte sind Positionen (nehme ich an).
Regelt die FU selber die Position, es gibt eine Positionsrückgabe an die FU, oder ist diese Regelung in dein Programm ?
Wenn du 2 Regler kaskadiert, die Regler in FU und deine Algoritmus, dann wird es komplex. Kann funktionieren, aber ist keinen simplen Fall.

Du willst die Genauigkeit von die Position verbessern. Das hinterherschleppen vermindern oder eliminieren.
Mit eine klassische Rückkopplungsregelung kann man nie die Fehler komplett elimieren.
Mit eine Vorwärtsregler kann man die Fehler prinzipiell eliminieren. Aber nur mit vielmehr Analyse und Kontrolle. Und dann darf die Prozess sich über die Dauer nicht ändern. Aüssere Variabeln die sich ändern können müssen eliminiert werden.
Eine Kombination von Rückkopplung und Vorwärtsregler kan das beste Kompromis sein.

Ich wurde die Unterschied Ist/Soll in Phasenunterschied und Amplitudeuntershied erkennen, (da die Sollwert eine Sinuskurve bildet) und eine übergeordnete Regelung einrichten der die Phasen bzw. Amplitude von die Steuerwert and die FU regelt.
Die Algoritmus in dein Programm ist dann die Vorwärtsregler und die FU hat dann die Regler mit Rückkopplung.
Etwas in diesen Stil hast du schon gemacht (glaube ich) aber nur mit die direkten Unterschied Soll/Ist, nicht getrennt in Phase und Amplitude.
Die Phase und Amplitude wurde ich mit FFT (Fast Fourier Transformation) erkennen.
Ich hätte ein Projekt wo ich sowas machen wurde (https://www.sps-forum.de/threads/fast-fourier-transform-in-structured-text.119430/#post-980271), leider habe ich kein Zeit um es zu verfolgen. Vielleicht spähter.
 
Laangsahm kommt die Information, Tropf, Tropf ...

Es gibt also ein FU.
Siehe POST 6. Ja.
Also, mit Sollwert meinst du die Ausgabe von deine Algoritmus an die FU.
mit Optimiertem Sollwert - JA
Die genannte Ist und Sollwerte sind Positionen (nehme ich an).
Geschwindigkeiten. Soll m/s -> bzw. U/min ->FU | Ist_roh_wert als DINT cm/s
Regelt die FU selber die Position, es gibt eine Positionsrückgabe an die FU, oder ist diese Regelung in dein Programm ?
Wenn du 2 Regler kaskadiert, die Regler in FU und deine Algoritmus, dann wird es komplex. Kann funktionieren, aber ist keinen simplen Fall.
Nein. der FU hat ein Motorencoder und bekomm soll U/min (0-2000)
Du willst die Genauigkeit von die Position verbessern.
Istwert Position auf der Sinuskurve.
Das hinterherschleppen vermindern oder eliminieren.
das ist egal. WANN die Sinuskurve gefahren wird ist egal. Aber es soll eine Saubere Kurve sein.
Mit eine klassische Rückkopplungsregelung kann man nie die Fehler komplett elimieren.
ok
Mit eine Vorwärtsregler kann man die Fehler prinzipiell eliminieren. Aber nur mit vielmehr Analyse und Kontrolle. Und dann darf die Prozess sich über die Dauer nicht ändern. Aüssere Variabeln die sich ändern können müssen eliminiert werden.
Eine Kombination von Rückkopplung und Vorwärtsregler kan das beste Kompromis sein.
Ich bin ganz Ohr.(Auge)
Ich wurde die Unterschied Ist/Soll in Phasenunterschied und Amplitudeuntershied erkennen, (da die Sollwert eine Sinuskurve bildet) und eine übergeordnete Regelung einrichten der die Phasen bzw. Amplitude von die Steuerwert and die FU regelt.
Die Algoritmus in dein Programm ist dann die Vorwärtsregler und die FU hat dann die Regler mit Rückkopplung.
Etwas in diesen Stil hast du schon gemacht (glaube ich) aber nur mit die direkten Unterschied Soll/Ist, nicht getrennt in Phase und Amplitude.
Für den PI habe ich die Totzeit "eleminiert" (Istwert verzögert)
Die Phase und Amplitude wurde ich mit FFT (Fast Fourier Transformation) erkennen.
Ich hätte ein Projekt wo ich sowas machen wurde (https://www.sps-forum.de/threads/fast-fourier-transform-in-structured-text.119430/#post-980271), leider habe ich kein Zeit um es zu verfolgen. Vielleicht spähter.
Schau ich mir an.
 
Eine Kombination von Rückkopplung und Vorwärtsregler kan das beste Kompromis sein.
Ich bin ganz Ohr.(Auge)
Es ist eine Thema den man nicht ganz kurz in einem Forumthread erklären kann.
Aber mit deine Ausbildung sollte es ja bekannt sein (?).
Ist dein Regelungs-Kenntniss auf Bachelor Niveau, oder Master Niveau ?
3 Semester Reglungstechnik im Bachelor, da spezialisiert auf Automatisierung.
 
Zurück
Oben