Forum: Digitale Signalverarbeitung / DSP / Machine Learning Wie Regler-Adaption am Besten realisieren?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo, es geht um Folgendes:

Es geht um ein mechatronisches System, das auf einer Ebene und Gerade 
von A nach B fährt und positionieren muss. Es wird dabei einer 
Trajektorie nachgefahren, die u.a auch durch Eingabe einer maximalen 
Geschwindigkeit im Voraus berechnet wird. Das Übertragungsverhalten 
zwischen Motorspannung und gemessener Position ist nichtlinear. Ich habe 
den Plan, bei mehreren Ist-Geschwindigkeiten einzelne 
Linearisierungspunkte festzulegen und die Parameter eines existierenden 
PID-Reglers entsprechend zu adaptieren und interpolieren.
Mir ist nicht ganz klar, wie ich bei meinen einzelnen 
Geschwindigkeitsstufen am Besten mit Testsignalen arbeiten soll. Bisher 
habe ich es so gemacht, dass ich von einem verzögerten Integralglied 
ausgegangen bin und den Positionsverlauf einzelner Spannungssprünge 
aufgenommen habe. Dabei ist z.B. bei einem Sprung von 0 auf 5 V eine 
Übertragungsfunktion herausgekommen und bei einem Sprung von 0 auf 10 V 
eine andere, was Grundlage für die Adaption ist... Allerdings habe ich 
ja hier nur eine Adaption der Stellgröße und nicht der 
Geschwindigkeit... wie löse ich das am Besten?

Und könnte man evtl. mit einer Kaskadenregelung direkt auf die Adaption 
verzichten?

von Ulf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
kunherr schrieb:
> Hallo, es geht um Folgendes:
>
> Es geht um ein mechatronisches System, das auf einer Ebene und Gerade
> von A nach B fährt und positionieren muss. Es wird dabei einer
> Trajektorie nachgefahren, die u.a auch durch Eingabe einer maximalen
> Geschwindigkeit im Voraus berechnet wird. Das Übertragungsverhalten
> zwischen Motorspannung und gemessener Position ist nichtlinear.

Ok du hast eine DGL die nicht linear ist. Das halte ich erstmal für 
nicht so schlimm. Die Frage ist, wie sieht deine Strecke für den du den 
Regeler auslegen willst aus?

> Ich habe den Plan, bei mehreren Ist-Geschwindigkeiten einzelne
> Linearisierungspunkte festzulegen und die Parameter eines existierenden
> PID-Reglers entsprechend zu adaptieren und interpolieren.

Oft hat man einen Kaskadenregelkreis bei dem nach der Positionsregelung, 
die unterlagerte Geschwindigkeit und dann die Stromregelung kommt. Was 
hast du denn noch außer einem Motor? Für mich ist die Geschwindigkeit 
erstmal nur proportional der Spannung und wird letztlich von der Dynamik 
bestimmt.

> Mir ist nicht ganz klar, wie ich bei meinen einzelnen
> Geschwindigkeitsstufen am Besten mit Testsignalen arbeiten soll. Bisher
> habe ich es so gemacht, dass ich von einem verzögerten Integralglied
> ausgegangen bin und den Positionsverlauf einzelner Spannungssprünge
> aufgenommen habe. Dabei ist z.B. bei einem Sprung von 0 auf 5 V eine
> Übertragungsfunktion herausgekommen und bei einem Sprung von 0 auf 10 V
> eine andere, was Grundlage für die Adaption ist... Allerdings habe ich
> ja hier nur eine Adaption der Stellgröße und nicht der
> Geschwindigkeit... wie löse ich das am Besten?
>
> Und könnte man evtl. mit einer Kaskadenregelung direkt auf die Adaption
> verzichten?

Ich hätte mir erstmal eine Skizze der Strecke gemacht und anaysiert, wie 
ich die Nichtlinearitäten behandele bzw. wie diese Aussehen und dann ein 
hier für geeignetes Regelungskonzept entworfen.

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
naja ich schrieb ja, dass die Strecken einem verzögerten Integralglied 
entsprechen (geregelt wird nur die Position)..genauer gesagt einem 
IT2-Glied. Da aber die Sprungantwort zur Identifizierung dieses 
IT2-Glieds von der Sprunghöhe abhängig ist (0 auf 5V liefert anderes 
Ergebnis als z.B. 0 auf 10V), ist das mein Nachweis für Nichtlinearität. 
Die Struktur des IT2-Glieds kann aber beibehalten werden, lediglich 
Verstärkung und Zeitkonstanten variieren.. somit also die Frage, wie die 
Adaption am Cleversten gestalten

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
und natürlich meine ich die resultierende normierte Sprungantwort auf 
den EIínheitssprung.. die ist nicht einheitlich

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
Was ich zB noch gerne verwende bei nichtlinearen Systemen ist eine 
Linearisierung als Teil der Loesung. Ich kann ja zB bei einem PID, wo 
ich am Ende vor dem Stellglied Out = P + I + D addieren auch noch eine 
nichtlineare Stellgroesse bringen. also Out = P + I + D + NL. Und diese 
nichtlineare Stellgroesse ist zB mit einem Modell simulierbar, oder wird 
iterativ gemessen. Und hat natuerlich natuerlich nicht nur den 
Regelfehler als Eingang, sondern alles was hilft.

zB bei einer Heizung weiss ich, dass die benoetigte Leistung irgendwas 
proportional zur Differenz zur Umgebungstemperatur ist. Also nehme ich 
die Differenz zur Umgebungstemperatur. Dann bin ich schon mal besser wie 
ohne diesen Term. Durch diesen Term entlaste ich den Integrator des PID, 
welcher erst mal dorthin integrieren muss.

von Ulf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Du möchtest also erstmal ne Parameteridentifikation machen und dann den 
Regler auslegen?
Das sind ja 2 Paar Schuhe...

Ich würde aber behaupten, dass du bei einem I Anteil in der Strecke, im 
Regler gar keinen brauchst

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
ja, natürlich muss ich hier die Strecke genau identifizieren, um eine 
passende Adaption meines Reglers einzustellen.

Meine große Frage ist nach wie vor, wie ich die Adaption am Cleversten 
gestalte, wenn die Parameter der Strecke von der Stellgröße abhängen. 
(Eine Große Spannung evtl. einem gewissen Geschwindigkeitslevel 
zuornen?) Bei der Proportional-Verstärkung könnte man sogar grob eine 
lineare Abnahme mit steigender Spannung machen, bei den Zeitkonstanten 
kann man das aber nicht so einfach sagen.. Alles betrifft erst mal die 
Streckenparameter, wobei ja die Auslegung des Reglers direkt daraus 
resultiert

von Walter T. (nicolas)


Bewertung
0 lesenswert
nicht lesenswert
kunherr schrieb:
> Alles betrifft erst mal die
> Streckenparameter,

Wieso die Streckenparameter? Bei der Strecke nutzt man "einfach" die 
nichtlineare DGL anstelle vieler linearer DGL für verschiedene 
Eingangsgrößen.

Für den Regler kann man durch die Linearisierungen in unterschiedlichen 
Arbeitspunkten die Parameter für den Regler bestimmen. In vielen Fällen 
ist Gain Scheduling ausreichend.

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
okay ich muss noch dazu erwähnen, dass ich meine Regelstrecken 
experimentell ermittele.. also u.a. Faustformelverfahren um aus einer 
Sprungantwort die Parameter eines IT2-Glieds zu ermitteln... eine 
theoretisch ermittelte Differentialgleichung liegt mir also überhaupt 
nicht vor

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
bisher wurde hier leider alles nur intuitiv eingestellt ohne ein Modell 
zu verwenden, wie es in der Praxis wohl öfters der Fall sein soll^^

von Walter T. (nicolas)


Bewertung
0 lesenswert
nicht lesenswert
Ich wüßte nicht, wie man ein vernünftiges Parameter Scheduling ohne 
vernünftiges Streckenmodell hinbekäme, aber das muss nicht heißen, dass 
es nicht geht.

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
naja mein Ansatz ist ja bei mehreren Geschwindigkeitsniveaus diese 
Sprungantworten zu verwenden... das ist doch im Prinzip gar nichts 
anderes, als würde man ein Modell in verschiedenen Arbeitspunkten 
linearisieren. Der Unterschied ist nur, dass meine linearen Teilmodelle 
experimentell ermittelt werden

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
und das ist ja der entscheidende Knackpunkt und Augsngsfrage: Kann ich 
einfach annehmen, dass wenn das System schneller und weiter fahren muss, 
dass ich dann auch von der Sprungantwort mit größerem Spannungssprung 
ausgehe

von Ulf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Walter T. schrieb:
> Ich wüßte nicht, wie man ein vernünftiges Parameter Scheduling
> ohne vernünftiges Streckenmodell hinbekäme, aber das muss nicht heißen,
> dass es nicht geht.

Eine Skizze würde mir reichen, um zu verstehen was er möchte.

Wenn es tatsächlich nur um die Regelung eines IQuadrat Gliedes geht, 
sehe ich hier keine Probleme

von Ulf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
kunherr schrieb:
> naja mein Ansatz ist ja bei mehreren Geschwindigkeitsniveaus diese
> Sprungantworten zu verwenden... das ist doch im Prinzip gar nichts
> anderes, als würde man ein Modell in verschiedenen Arbeitspunkten
> linearisieren. Der Unterschied ist nur, dass meine linearen Teilmodelle
> experimentell ermittelt werden

Warum Geschwindigkeit? Du misst eine Position und willst eine selbige 
regeln. Natürlich hast du ne Sättigung, aber die könntest du z.B. mit 
harmonischer Balance annähern...

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
es handelt sich um ein Integralglied mit zeitlicher Verzögerung 2. 
Ordnung (IT2). Ich habe aber festgestellt, dass es keine einheitliche 
Sprungantwort für verschiedene Sprunghöhen der Stellgrößen nach 
Normierung gibt (Sprungantwort bei Stellgrößensprung  0 auf 1 V hat 
andere Streckenparameter als 0 auf 5 V nach Normierung auf 1)..
Da das Ding einer Solltrajektorie nachfährt, bei der ganz klar die 
Geschwindihgkeit vom Endnutzer eingestellt werden kann, möchte ich somit 
eine Näherung machen:   Wenn das Ding schnell fahren soll, dann verwende 
ich auch das Streckenmodell bei dem größeren Spannungssprung, da mehr 
Spannung benötigt wird!

Hoffe, dass es jetzt klarer geworden ist, was ich meine

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hier ist eben eine sehr hohe Positioniergenauigkeit erforderlich, es 
geht um Genauigkeiten bis zu 150 nm) und die Geräte werden sehr schnell 
laut, wenn man sowohl für Ruheregelung als auch Fahrtregelung nach 
Trajektorie die selben Regelparameter verwendet

von Ulf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
kunherr schrieb:
> es handelt sich um ein Integralglied mit zeitlicher Verzögerung 2.
> Ordnung (IT2). Ich habe aber festgestellt, dass es keine einheitliche
> Sprungantwort für verschiedene Sprunghöhen der Stellgrößen nach
> Normierung gibt (Sprungantwort bei Stellgrößensprung  0 auf 1 V hat
> andere Streckenparameter als 0 auf 5 V nach Normierung auf 1).. Da das
> Ding einer Solltrajektorie nachfährt, bei der ganz klar die
> Geschwindihgkeit vom Endnutzer eingestellt werden kann, möchte ich somit
> eine Näherung machen:   Wenn das Ding schnell fahren soll, dann verwende
> ich auch das Streckenmodell bei dem größeren Spannungssprung, da mehr
> Spannung benötigt wird!
>
> Hoffe, dass es jetzt klarer geworden ist, was ich meine

Du willst also im Prinzip sowohl die Geschwindigkeit als auch die 
Position regeln?

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Nein, will ich NOCH nicht ;) Aber bei der Trajektorie werden sehr viele 
Zwischenpositionen vorgegeben und je nach vorgegebener Geschwindigkeit 
ist das Positionsreglerverhalten ja auch anders... Der Positionsregler 
kann bei schnellen Fahrten einfach nicht die selben Parameter wie bei 
langsamen Fahrten haben

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
es wäre doch kein Problem zu sagen: Der Nutzer gibt nun eine 
Positionstrajektorie für eine schnelle Bewegung vor, also muss mein 
Regler nach dem Streckenmodell aus dem höheren Spannungssprung ausgelegt 
sein... und das ist doch genau das selbe, wie mehrere Linearisierungen 
in verschiedenen Arbeitspunkten

von stellgröße (Gast)


Bewertung
0 lesenswert
nicht lesenswert
kunherr schrieb:
>Der Positionsregler kann bei schnellen Fahrten einfach nicht die selben
>Parameter wie bei langsamen Fahrten haben


Da hab ich ein Problem Dir zu folgen.
Die Regelung für die Position gibt eine Stellgröße aus, die beim Motor 
eine Geschwindigkeit hervorruft.

Was soll dann schnelles und langsames Fahren bedeuten?
Willst Du die Stellgröße begrenzen, um das langsame Fahren zu erreichen?
Oder was macht diese Geschwindigkeitsvorgabe?

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Es wird langsam ein wenig schwierig und ich gebe es hier auch bald auf, 
weil es nicht weiterbringt:

Der Positionsregler fährt einem SollwertVERLAUF nach und der Regler muss 
die kleinen Zwischenpositionen auf diesem langen Weg ALLEN nachfolgen 
können. Dieser Verlauf hat eine feste zeitliche Vorgabe und wenn der 
Regler irgendwann nicht mehr nachkommt, schaltet das System mit einem 
Fehler ab... also bestimmt die Geschwindigkeit nicht der Regler, sondern 
die Sollvorgabe, die nach gewünschter Geschwindigkeit und 
Zielpositionsvorgabe des NUTZERS berechnet wird

von Walter T. (nicolas)


Bewertung
0 lesenswert
nicht lesenswert
Ist die Positionierung gefahrlos möglich, oder hängt da Risiko dran?

Im ersten Fall wäre es tatsächlich einen Versuch Wert, für verschiedene 
Einheitssprünge Parameter zu identifizieren, den Regler für einen 
mittlere Verstärkung auszulegen und ansonsten die Verstärkung an den 
Arbeitspunkt anzupassen (das klassische Gain Scheduling, das ich schon 
oben erwähnte).

Ich will nicht behaupten, dass das klappen muss. Ich habe "aufwendigere" 
Regler noch nie ohne Streckenmodell entworfen. Aber einen Versuch ist es 
wert, wenn keine anderen Punkte dagegensprechen.

(Ich selbst habe bei Trajektorienregelung auch sehr angenehme Erfahrung 
mit Sollgrößenaufschaltung gemacht, d.h. getrennten D-Anteil für 
Sollgröße und Rückführung. Das funktioniert aber nur gut, wenn der 
Zusammenhang zwischen Geschwindigkeit und Stellgröße analytisch bekannt 
ist.)

: Bearbeitet durch User
von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
eine Gefahr geht nicht wirklich aus, die Systeme können halt unangenehm 
laut werden und Schwingungen bis zu 4 kHz erreichen. Es sind mehrere 
Abschaltmechanismen realisiert (Schleppfehler, max. Motorstrom über 
Zeit, max. Leistung)

okay danke für die Antwort.

von Ulf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Wie gesagt: Skizze hilft. Normal hat man bei sowas ne Kaskade. Du willst 
aber aktiv über eine Vorsteuerung in den dann unterlagerten RK 
eingreifen. Stellgrößenbegrenzungen hast du immer. Warum nicht einfach 
immer mit der max möglichen Geschwindigkeit fahren? Dein Positionsregler 
würde dann den Sollwert für die Geschwindigkeit vorgeben.

von Pandur S. (jetztnicht)


Bewertung
0 lesenswert
nicht lesenswert
Die ganzen Theorien mit Impulsantwort, Schrittantwort, TP1, usw kann man 
bei einem nichtlinearen System vergessen. Denn die basieren auf linearen 
Modellen. Lineares Modell bedeutet hier, der doppelte Eingang hat den 
doppelten Ausgang zu Folge.
Genauso kann man Frequenzgaenge vergessen, denn die basieren auch auf 
linearen Modellen. Lineares Modell bedeutet hier : ein Signal laesst 
sich aus Fourienkomponenten zusammenbauen. Das geht bei nichtlinearen 
Systemen nicht mehr.

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Ulf schrieb:
> Warum nicht einfach
> immer mit der max möglichen Geschwindigkeit fahren?

Ich wiederhole noch mal, dass die Trajektorie die Geschwindigkeit 
vorgibt und das soll auch mit einem neuen Regler so sein. Der Regler 
muss einfach dieser Trajektorie so schnell wie möglich folgen können. 
Oder meinst du das mit maximaler Geschwindigkeit?
Wenn der Endnutzer nämlich ein Geschwindigkeitsprofil vorgibt, dann wird 
ein möglichst ruckarmes Positionsverlaufsprofil berechnet, das dann 
geregelt nachgefahren wird

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Pandur S. schrieb:
> Die ganzen Theorien mit Impulsantwort, Schrittantwort, TP1, usw kann man
> bei einem nichtlinearen System vergessen. Denn die basieren auf linearen
> Modellen.

Naja aber es gibt viele wissenschaftliuche Methoden, die abschnittsweise 
lineare Annäherungen machen.. und genau das möchte ich hier tun

von Ulf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
kunherr schrieb:
> Ulf schrieb:
> Warum nicht einfach
> immer mit der max möglichen Geschwindigkeit fahren?
>
> Ich wiederhole noch mal, dass die Trajektorie die Geschwindigkeit
> vorgibt und das soll auch mit einem neuen Regler so sein. Der Regler
> muss einfach dieser Trajektorie so schnell wie möglich folgen können.
> Oder meinst du das mit maximaler Geschwindigkeit?
> Wenn der Endnutzer nämlich ein Geschwindigkeitsprofil vorgibt, dann wird
> ein möglichst ruckarmes Positionsverlaufsprofil berechnet, das dann
> geregelt nachgefahren wird

Ich empfehle für den Fall ne Sliding Mode Regelung. Die ist robust gegen 
deine Parameterschwankungen und auch für nichtlineare Strecken geeignet.

von kunherr (Gast)


Bewertung
0 lesenswert
nicht lesenswert
die Methode mit dem Sliding Mode finde ich interessant, wobei ich 
gelesen habe, dass die mehr für Zustandsregler geeignet ist und wohl 
häufiger für die Stromregelung bei Servoantrieben genutzt wird.

von Ulf (Gast)


Bewertung
0 lesenswert
nicht lesenswert
kunherr schrieb:
> die Methode mit dem Sliding Mode finde ich interessant, wobei ich
> gelesen habe, dass die mehr für Zustandsregler geeignet ist und wohl
> häufiger für die Stromregelung bei Servoantrieben genutzt wird.

Ich kenne sie als schaltende Regelung, um mit möglichst wenigen 
Umschaltung auf die Zieltrajektorie zu kommen. Das ist danb der 
sogennante Gleitzustand

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.