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?
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.
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
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.
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
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
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.
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
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.
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
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
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
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...
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
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
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?
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
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
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?
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
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.)
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.
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.
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.
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
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
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.
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.
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