Forum: Analoge Elektronik und Schaltungstechnik Wie behandele ich regelungstechnisch einen Stepper mit Trapezprofil


von Mario I. (thunder)


Lesenswert?

Hallo zusammen,


ich bin gerade dabei mit Simulink einen Regelkreis zu entwerfen.
Dabei habe ich als Regelstrecke

S = Schrittmotor + Motorregelung
[Das dies ein Schrittnmotor ist, ist hier glaube ich egal, da man mit 
dem Motor nur über eine gegebene Motorregelung kommunizieren kann]

gegeben. Diese funktioniert derart, dass S eine geforderte 
(Winkel)Geschwindigkeit als Eingang hat und als Ausgang den derzeitige 
Winkel ausgibt.
(d.h. S hat grob gesagt integrales Verhalten!?)
Die Motorregelung (bzw. S) habe ich als BlackBox und kann nichts daran 
ändern. Ich weiss aber, dass stets eine (optimale) Rampe bzw. ein 
Trapezprofil für die Geschwindigkeit gefahren wird. D.h. der 
Schrittmotor bewegt sich mit der konstanten (Winkel)Beschleunigung a 
oder -a oder 0.

Soweit ich das bis jetzt verstanden habe, hat der so festgelegte Block S 
kein lineares Verhalten...

Welche Möglichkeiten und Wege seht ihr, einen Regler zu entwerfen, 
welcher eine gewünschte Winkelposition anfährt? Also quasi ein gute 
Führungsverhalten hat.

Vielen Dank für eure Vorschläge.

Gruß Mario

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

Ich fürchte, dass du den Schrittmotor nicht verstanden hast. Der motor 
dreht sich bei jeder vollständigen Kommutierung um einen durch die 
Konstruktion bestimmten,konstanten Winkel weiter( z.B. 1,8°).Wird das 
maximale Moment überschritten, so tut er dies nicht mehr und die 
Rotorstellung liegt ein vielfaches des Schrittwinkels zurück 
(Schrittverlust). D.H. bei moderatem Moment(ohne Schrittverlust)lässt 
sich die Winkelbewegung des Rotors aus der Anzahl der erfolgten 
Kommutierungen errechnen. Ein Regelkreis ist hierfür nicht notwendig. 
Deine angesprochene Trapezkurve hat den Sinn, das Beschleunigungsmoment 
klein zu halten, damit kein Schrittverlust auftritt.

Grüsse

von Mario I. (thunder)


Lesenswert?

Hallo Gerhard,

ich gehe von Idealfall aus, dass keine Schrittverluste auftreten, d.h.
die Motoransteuerung das Trapez so gut abfährt, dass dies nicht 
passiert.
Somit weiß ich zu jedem Zeitpunkt, welchen Winkel der Rotor gerade hat.


Ich versuche nochmal meine eigentliches Vorhaben zu präzisieren.
Ich interessiere mich für folgende Aufgabenstellung:

Gegeben ist eine zeitlich abhängige Führungsgröße w
(z.B. ein Sinus oder eine Sprungfunktion) die man als gewünschter
Winkel interpretiert, welcher der Stepper einnehmen soll.

Der aktuelle Winkel des Steppers ist die rückgeführte Größe im 
Regelkreis.
Die Regelstrecke ist der Stepper, welcher einen geforderte Winkel oder 
(wie von mir bisher beabsichtigt) eine Geschwindigkeit mittels eines 
Trapezes umsetzt.

Der Regelkreis soll nun so agieren, dass der Stepper "optimal" dem 
Signal w folgt.


Viele Grüße
Mario

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

>Der Regelkreis soll nun so agieren, dass der Stepper "optimal" dem
>Signal w folgt.
Optimal heisst jetzt vermutlich so schnell wie möglich (ein 
Überschwingen tritt ja nicht auf, bzw. ist es kleiner ein Halbschritt). 
Dh. weiters, dass du dir die Rampen ausrechnen musst. Aber vorher gilt 
es noch die Drehmomente zu ermitteln (interne und externe 
Trägheitsmomente + abzugebendes Moment) die verglichen mit dem 
Motormoment(abhängig von der Winkelgeschw.) die Steigung der Rampe 
bestimmen.

Grüsse

von UrsU (Gast)


Lesenswert?

Hallo Mario,

Bei Lageregelungen wird gerne ein Kaskadenregler verwendet.

Du hast nen überlagerten P(I) Regler für die Position und unterlagert 
einen für Drehzahl und darunter einen für den Strom.

Bei Deinem System hast Du den Drehzahl und Stromregler schon. Mit der 
Besonderheit, dass die Drehzahl auf eine Trapezfunktion begrenzt wird.

Überlicherweise macht man es so, dass man den Status "Drehzahlregler ist 
in Begrenzung", bei Dir wäre das also "Die Rampe läuft gerade hoch oder 
runter" an den überlagerten Lageregler weiter gibt. Der hält dann den 
I-Anteil an.

Du brauchst also einen P(I) Regler. Und musst den I-Anteil dann 
anhalten, wenn der Drehzahlregler eine steigende oder fallende Rampe 
fährt. Mehr nicht.
Lösungsansätze:
- Falls der Status "Rampe" zur Verfügung steht, diesen im Lageregler 
verwenden.
- nur P anstatt PI Regler nehmen, wenn keine Genauigkeit gefordert ist.
- Auf das Anhalten des I-Reglers verzichten, dann wird aber nicht so 
ideal geregelt
- Falls der Status "Rampe" nicht zur Verfügung steht, diesen künstlich 
mit einem Beobachtermodell erzeugen.

von Mario I. (thunder)


Lesenswert?

Hallo UrsU,

vielen Dank für deine Hinweise.


> Du hast nen überlagerten P(I) Regler für die Position und unterlagert
> einen für Drehzahl und darunter einen für den Strom.
> Bei Deinem System hast Du den Drehzahl und Stromregler schon.

Wo ist hier bei meinem Beispiel der Strom versteckt? Der Stepper bekommt 
doch von der Motorregelung nur Pulsfolgen geschickt, oder!?


> Überlicherweise macht man es so, dass man den Status "Drehzahlregler ist
> in Begrenzung", bei Dir wäre das also "Die Rampe läuft gerade hoch oder
> runter" an den überlagerten Lageregler weiter gibt. Der hält dann den
> I-Anteil an.

Wenn ich den Stepper (unter Vernachlässigung der Rampe) als Block sehe, 
welcher eine geforderte Geschwindigkeit in einen Winkel umsetzt, so hat 
dieser Block doch integrales Verhalten. Weshalb brauche ich da einen 
I-Anteil...mir scheint, dass ich deine Kaskadierung noch nicht richtig 
verstanden habe.

Das ganze Problem ist, dass ich noch nicht wirklich weiß, welche 
Schnittstelle die Motorregelung des Steppers haben wird. Momentan gehe 
ich von einer BlackBox aus, die bei einer geforderten Geschwindigkeit 
die Differenz zur aktuellen Geschw. überprüft und gegebenfalls mit 
konstanter Beschleunigung +-a bremst oder beschleunigt.


Viele Grüße
Mario

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

>mir scheint, dass ich deine Kaskadierung noch nicht richtig
>verstanden habe.

Kein Wunder, wenn da einer bei einem Schrittmotor von Lageregler faselt, 
dann hat der gar nix verstanden.

Grüsse

von Mario I. (thunder)


Lesenswert?

Danke Gerhard für diesen außerordentlich konstruktiven Beitrag.

Ich denke, dass ich mein Problem bisher nicht gut vermitteln konnte.

von UrsU (Gast)


Lesenswert?

Die Schrittmotorendstufe ist als Stromregler ausgeführt.
Sie hat wahrscheinlich ca. 30-40V und regelt den Strangstrom. Das macht 
wahrscheinlich direkt die Treiberendstufe. Also am Mikrocontroller 
vorbei. Bei den L298 Treibern ist dazu im Fußpunkt ein Messhunt. Es ist 
ein 2-Punkt Regler.

Der Mikrocontroller der Schrittmotorkarte macht dann die 
Drehzahlregelung. Bzw in dem Fall ist es eine Steuerung.

Jetzt kommt noch der Lageregler außen rum. Hier müsste man sich 
überlegen, ob man überhaupt einen I-Anteil braucht. Wenn nicht, dann 
wird's ganz einfach und Du musst Dir um die "Rampe" keine Sorgen machen.

Angenommen Du stehts minimal, also ein Schritt vor dem Sollwert. Der 
P-Regler gibt dann einen sehr kleinen Stellwert aus. Wenn es eine 
Spannung ist, dann wäre das also zum Beispiel 0.1V.

Je nach Schrittmotorsteuerung könnte diese bei 0.1V nicht mehr verfahren 
und du würdest immer um diesen einen Schritt falsch stehen. Nur für 
diesen Fall brauchst Du den I-Anteil.

>Kein Wunder, wenn da einer bei einem Schrittmotor von Lageregler faselt,
>dann hat der gar nix verstanden.
Vielleicht hast Du die Frage nicht verstanden ?!

von Gebhard R. (Firma: Raich Gerätebau & Entwicklung) (geb)


Lesenswert?

>Angenommen Du stehts minimal, also ein Schritt vor dem Sollwert.
Dann ist von mir aus die Regelabweichung 1, multipliziert mit P=1 ergibt 
sich dann 1 Schritt für den Reglerausgang.
So gesehen hast du die Differenz Sollschrittstellung - 
IstSchrittstellung zu fahren, d. H. genau so viele Ipmulse auszugeben.-> 
Eher trivial.
Dazu muß aber die Schrittfrequenz berechnet werden und zwar nach den 
physikalischen Gegebenheiten wie ich oben angegeben habe.-> nicht ganz 
trivial

Das Ganze als Regelkreis aufzufassen ist an den Haaren herbeigezogen. 
Wem fällt sowas ein?

Grüsse

von UrsU (Gast)


Lesenswert?

Gebhard - ließ einfach nochmals die Frage durch.

Er hat eine Strecke mit Eingang Solldrehzahl und Ausgang Lage.
Besonderheit: Der Sollwert Drehzahl macht keine Sprünge.
Er will darüber eine Lageregelung.

von UrsU (Gast)


Lesenswert?

Hallo Mario,

so kann man es noch besser machen:

Du willst von Position A nach B

Beim P-Regler gilt ja:

y= (w-x) * Kp

Die Sprungantwort (neuer Positionswert) ist eine e-Funktion. Und auch 
die Geschwindigkeit ist eine e-Funktion. Sie ist somit langsamer, als 
Deine Trapez-Geschwindigkeitsfunktion.

Deshalb hier eine Verbesserung:

Ziel des Lagereglers soll es sein, den Drehzahlregler so anzusteuern, 
dass er das Ziel B so erreicht, dass die Drehzahl in einer Rampe linear 
runter fährt, und zwar genau so schnell, wie es auch der Drehzahlregler 
machen würde, wenn man ihm auf einmal Drehzahl 0 als Vorgaben geben 
würde.


Beim Drehzahlregler gilt also:
v(t) = a * t, wobei a die Steigung der Rampe ist.

Der Drehzahlverlauf kurz vorm Erreichen von B ist aber der gleiche wie 
der beim Verlassen von A. Und dort gilt für eine gleichmäßig 
beschleunigte Bewegung:

s(t) = 0.5 a * t²
mit v(t) = a * t von oben also:

v(t) = WURZEL_AUS(2  s  a)

v(t) ist der Ausgang des Reglers und s ist die Streckendifferenz bis zum 
Ziel B, also die Regelabweichung (w-x)
Dann gilt für den Regler also:

y = WURZEL_AUS(2 * (w-x) * a)

Du musst jetzt nur noch y auf die Maximalgeschwindigkeit begrenzen und 
für a einen Wert einsetzen, der der Rampe des Drehzahlreglers 
entspricht.

von UrsU (Gast)


Lesenswert?

Nachtrag:
Es ist also in P-Regler mit einer nichtlinearen Korrektur am Ausgang.

von Mario I. (thunder)


Lesenswert?

Hallo UrsU,


> Ziel des Lagereglers soll es sein, den Drehzahlregler so anzusteuern,
> dass er das Ziel B so erreicht, dass die Drehzahl in einer Rampe linear
> runter fährt, und zwar genau so schnell, wie es auch der Drehzahlregler
> machen würde, wenn man ihm auf einmal Drehzahl 0 als Vorgaben geben
> würde.

genau so sehe ich das auch.


> y = WURZEL_AUS(2 * (w-x) * a)
bzw. y = sign(w-x)*WURZEL_AUS(2a * |w-x|) für den allgemeinen Fall.
Die Idee finde ich interessant.

Habe ich folgendes nun richtig zusammengefasst?
Deine Idee ist also, dass man den Regler so einstellt, dass der Stepper 
von einer Ruheposition in A zur Position B (das entspricht ja z.B. ein 
Sprung in w) so fährt, dass er die "optimale Rampe" fährt.
Dabei fordert der "nichtlineare P-Regler" am Anfang eine hohe/nicht 
umsetzbare Geschwindigkeit, welche dann mit dem Abstand abnimmt. Und der 
Stepper fährt in dieser Zeit die Rampe hoch und wird dann im richtigen 
Moment vom Regler die Rampe wieder runtergedrückt.


Welche Möglichkeiten hätte man dann noch das dynamische Verhalten bzgl. 
der Führungsgröße zu verbessern? Könnte man noch einen D-Anteil 
dazunehmen?

In der linearen Regelungstechnik ist es ja möglich den Regler so zu 
parametrieren, dass er bestimmte Frequenzen gut überträgt indem ich den 
Frequenzgang des Reglers anpasst...aber wie gehe ich diese Problematik 
hier an.


Vielen Dank für deine Mühe!
Gruß Mario

von UrsU (Gast)


Lesenswert?

>Welche Möglichkeiten hätte man dann noch das dynamische Verhalten bzgl.
>der Führungsgröße zu verbessern? Könnte man noch einen D-Anteil
>dazunehmen?
Keine mehr. Jede Änderung in "schneller" würde bedeuten: Die Stellgröße 
wird noch etwas größer. Aber genau das bringt nichts, da diese ja exakt 
auf dem Wert ist, bei dem der Drehzahlregler begrenz. Ein höherer Wert 
würde nur dazu führen, dass der Regler vor dem Erreichen von B zu spät 
erst abbremst und über das Ziel hinausfährt. Er ist dann zwar schneller 
an B, fährt aber drüber weg, wieder zurück und erreicht B dann Ende doch 
später, als wenn man optimal genau in's Ziel gefahren wäre.

von Mario I. (thunder)


Lesenswert?

Wenn man nun aber mittels einer Vorsteuerung die Ableitung der 
Führungsgröße reinnehmen würde, so müsste man doch ein besseres 
Führungsverhalten bekommen.
In diesem Falle würde die Sprungantwort ja immernoch genau gleich 
aussehen, wie ohne Vorsteuerung, oder?

Wenn man eine gute Vorhersage oder statistische Kenntnisse über die 
Führungsgröße hat, so müsste man dies doch ausnutzen können...
Könnte man dann vielleicht eine prädiktive Regelung anwenden?

Bisher fehlt mir noch einiges an praktischer Erfahrung, weshalb ich 
nicht so schnell einschätzen kann, ob gewisse erweiterte 
Regelkreisstrukturen hier gewinnbringend eingesetzt werden können.

Theorie und Praxis ist halt zweierlei ;)

Gruß Mario

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.