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
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
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
>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
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.
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
>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
Danke Gerhard für diesen außerordentlich konstruktiven Beitrag. Ich denke, dass ich mein Problem bisher nicht gut vermitteln konnte.
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 ?!
>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
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.
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.
Nachtrag: Es ist also in P-Regler mit einer nichtlinearen Korrektur am Ausgang.
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
>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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.