Hallo! Ich versuche mich gerade an einem digitalen PID-Regler für folgenden Aufbau: an dem Schlitten einer Schrittmotor-betriebenen Lineareinheit in vertikaler Einbaulage sitzt ein Kraftsensor, der federnd gelagert ist. Der Schlitten fährt nun eine Platte an und ich möchte als Führungsgröße die Kontaktkraft angeben (Stellgröße: Mikroschritte / s). Bislang mache ich es so, dass ich den Algorithmus des PID-Reglers mit dem Erhalt eines neuen Kraftwertes vom Messverstärker triggere. Konkret heißt das, dass ich alle 30 ms einen neuen Kraftwert einlese und somit auch den Regelalgorithmus nur alle 30 ms ausführe -> Abtastzeit Ta = 0,03 ms. Irgendwie bin ich mir jetzt gar nicht mehr sicher, ob das so richtig ist oder ich den Algorithmus häufiger aufrufen sollte, als ich neue Messdaten zur Verfügung habe. Letztendlich würde ich ja, wenn ich den Algorithmus z.B. 5 mal häufiger aufrufe als neue Messdaten zur Verfügung stehen, die Stellgröße durch den I-Anteil immer weiter nach oben ziehen. Wie macht man es richtig? Die Kraft möchte ich maximal auf 20 N regeln, weswegen ich den I-Anteil (e_sum) auf -20….20 begrenzt habe, da ich meine gelesen zu haben, dass man den I-Anteil nicht größer als den maximalen Sollwert setzen soll. Stimmt das so? Die Stellgröße (Mikroschritte / s) habe ich ebenfalls auf ein Viertel der maximal möglichen Geschwindigkeit begrenzt, diesen Wert habe ich einfach durch Ausprobieren festgelegt… Ist ein PID-Regler prinzipiell die richtige Wahl für mein Vorhaben? Außerdem habe ich mich daran versucht, ein Modell der Strecke mittels DGL aufzustellen, leider komme ich da auf keinen grünen Zweig. Hätte evtl. jemand einen Ansatz zur Modellierung der Strecke, wenn ich als Stellgröße Anzahl Mikroschritte / s = dPhi/dt verwende? Nach Integration erhalte ich ja den absoluten Winkel, unter Berücksichtigung der Spindelsteigung die Position des Schlittens, multipliziert mit der Federkonstante der Feder, die den Kraftsensor lagert, die Ist-Kraft… denke ich ;-) Nur wie ich mir eine Ü-Funktion und im besten Fall die Zeitkonstante der Strecke berechnen kann, weiß ich nicht. Vielleicht kann mir ja jemand auf die Sprünge helfen… MfG thelightener
Torch M. schrieb: > Bislang mache > ich es so, dass ich den Algorithmus des PID-Reglers mit dem Erhalt eines > neuen Kraftwertes vom Messverstärker triggere. Konkret heißt das, dass > ich alle 30 ms einen neuen Kraftwert einlese und somit auch den > Regelalgorithmus nur alle 30 ms ausführe -> Abtastzeit Ta = 0,03 ms. > Irgendwie bin ich mir jetzt gar nicht mehr sicher, ob das so richtig ist > oder ich den Algorithmus häufiger aufrufen sollte, als ich neue > Messdaten zur Verfügung habe. Letztendlich würde ich ja, wenn ich den > Algorithmus z.B. 5 mal häufiger aufrufe als neue Messdaten zur Verfügung > stehen, die Stellgröße durch den I-Anteil immer weiter nach oben ziehen. > Wie macht man es richtig? Normalerweise legt man die Abtastzeit in Abhängigkeit von der kleinsten Zeitkonstante aus, so 1/10..1/20s. Dann kann kann von einen quasikontinuierlich Regler ausgehen. Viele Sensoren sind aber langsamer. Es bringt nix schneller zu regeln als der Sensor es hergibt, da sonst die Invarianz nicht gegeben ist. > Die Kraft möchte ich maximal auf 20 N regeln, weswegen ich den I-Anteil > (e_sum) auf -20….20 begrenzt habe, da ich meine gelesen zu haben, dass > man den I-Anteil nicht größer als den maximalen Sollwert setzen soll. > Stimmt das so? Desto größer die Stellgröße ist desto schneller wird die gewollte Sollgröße erreicht. Es macht eher mehr Sinn die Stellgröße insgesammt zu begrenzten, damit der Motor nicht heiß laufen kann oder eventuell keine Kraft bestitzt bei höheren Geschwindigkeiten aufgrund der hohen Stellgröße. Simualtion hilft. > Die Stellgröße (Mikroschritte / s) habe ich ebenfalls > auf ein Viertel der maximal möglichen Geschwindigkeit begrenzt, diesen > Wert habe ich einfach durch Ausprobieren festgelegt… Ist ein PID-Regler > prinzipiell die richtige Wahl für mein Vorhaben? Ja. > Außerdem habe ich mich daran versucht, ein Modell der Strecke mittels > DGL aufzustellen, leider komme ich da auf keinen grünen Zweig. Hätte > evtl. jemand einen Ansatz zur Modellierung der Strecke, wenn ich als > Stellgröße Anzahl Mikroschritte / s = dPhi/dt verwende? Nach Integration > erhalte ich ja den absoluten Winkel, unter Berücksichtigung der > Spindelsteigung die Position des Schlittens, multipliziert mit der > Federkonstante der Feder, die den Kraftsensor lagert, die Ist-Kraft… > denke ich ;-) Nur wie ich mir eine Ü-Funktion und im besten Fall die > Zeitkonstante der Strecke berechnen kann, weiß ich nicht. Vielleicht > kann mir ja jemand auf die Sprünge helfen… Für DC Motoren gibt es viele gute Ansätze wie man eine Strecke moduliert (analytisch). Man kann also versuchen einen Schrittmotor die Eigenschaften eines DC Motors... Das übersteigt deine Kompetenz, denke ich. Mach einfach eine Sprungantwort. Nicht über Umwege! Du hast einen Sensor. Wenn der Motor stark genug ist, dann könnte ein einfacher P-Regler sogar reichen.
aSma>> schrieb: > Es macht eher mehr Sinn die Stellgröße insgesammt zu > begrenzten, damit der Motor nicht heiß laufen kann ... Warum soll ein Schrittmotor heiß laufen. Normalerweise betreibt man die heutzutage mit Stromregelung und dann ist der Strom - unabhängig von der Last - im Rahmen der Möglichkeiten der Stromquelle konstant.
Aahhh. Das ist ja das Begrenzen der Stellgroesse. Sinvollerweise bildet man das auch in software ab. Mach mal ein paar Simulationen. Allenfalls lohnt es sich sich in Simulationen einzuarbeiten. Wenn's nicht geht bitte mit konkreten Fragen kommen. Wie macht man mehr Schritte pro Zeiteinheit ? Dann muessen die Parameter Werte kleiner sein. Der Parameter "pro dt" wird kleiner.
:
Bearbeitet durch User
@Sapperlot In meinem Text verbirgt sich schon die ein oder andere konkrete Frage ;-) "Mach mal ein paar Simulationen" ist gut. Wenn ich wüsste, wie ich mir die Strecke einigermaßen korrekt modellieren könnte, würde ich gerne simulieren. Wie ich mehr Schritte pro Zeiteinheit mache ist nicht das Problem. Das ist ja gerade meine Stellgröße... in Abhängigkeit der Regelabweichung sendet mein µC die Verfahrgeschwindigkeit in Mikroschritte / s an den Schrittmotor-Controller. Da ergibt sich für mich noch die Frage, ob ich die Motoreigenschaften überhaupt in meine Regelung einbeziehen muss? Die Stromregelung übernimmt ja der Controller, so dass es für mich doch eigentlich ausreichen müsste, nur die Mikroschritte / s als Stellgröße zu berücksichtigen? Setzt der Kraftsensor auf der Platte an, wird die Druckfeder, die den Sensor trägt, mit jedem Mikroschritt weiter gestaucht, so dass sich aus der Längenänderung multipliziert mit der Federkonstante die Ist-Kraft ergibt...
Mikroschritte sind eigentlich nur Schummelei. Sie dienen hauptsächlich zur Reduzierung der Laufgeräusche. Auf Mikroschritten kann man nur stehenbleiben, wenn fast keine Kraft geliefert werden muß. Nur Vollschritte sind voll belastbar, da dann der Luftspalt am geringsten ist. Zur Modellierung der Regelstrecke müßtest Du die Federkonstante ermitteln, d.h. die Zunahme der Kraft je Schritt. Bei Schrittmotoren kann man die Zugkraft auch recht gut über den Spulenstrom einstellen, d.h. überschreitet die Last die eingestellte Kraft, bleibt der Schrittmotor einfach stehen. Man könnte also erstmal mit einem bestimmten Spulenstrom einfach losfahren und dann die Kraft messen und gegebenfalls mit maximalem Spulenstrom und Einzelschritten die Kraft fein justieren. Eine komplette PID-Regelung benutzt man selten bei Schrittmotoren, da sie im Gegensatz zu DC-Motoren keinen Anlauf und keinen Nachlauf haben.
Wolfgang schrieb: > Warum soll ein Schrittmotor heiß laufen. Normalerweise betreibt man die > heutzutage mit Stromregelung und dann ist der Strom - unabhängig von > der Last - im Rahmen der Möglichkeiten der Stromquelle konstant. Hier bin ich davon ausgegangen, dass er selber den Strom regelt. Man muss halt die physikalischen Gegebenheit des Motors im Auge behalten. Torch M. schrieb: > Wie ich mehr Schritte pro Zeiteinheit mache ist nicht das Problem. Das > ist ja gerade meine Stellgröße... in Abhängigkeit der Regelabweichung > sendet mein µC die Verfahrgeschwindigkeit in Mikroschritte / s an den > Schrittmotor-Controller. Da ergibt sich für mich noch die Frage, ob ich > die Motoreigenschaften überhaupt in meine Regelung einbeziehen muss? Die > Stromregelung übernimmt ja der Controller, so dass es für mich doch > eigentlich ausreichen müsste, nur die Mikroschritte / s als Stellgröße > zu berücksichtigen? Setzt der Kraftsensor auf der Platte an, wird die > Druckfeder, die den Sensor trägt, mit jedem Mikroschritt weiter > gestaucht, so dass sich aus der Längenänderung multipliziert mit der > Federkonstante die Ist-Kraft ergibt... Jetzt verstehe ich dein Problem besser. Also eine Simulation ist hier unerlässlich. Du musst also eine Annahme treffen. 100% der Stellgröße ergibt z.B. 40N. Dann beaufschlagst du einen Sollwertsprung mit z.B. 20% Stellgröße. Nachdem der stationäre Zustand erreicht ist, gibst du nochmals 50% Sollgröße. Schon hast du eine Sprungantwort kreiert.
Est mal muss man feststellen, ob das System linear oder nichtlinear ist. Falls das System sichtlinear ist, kann ein PID immer noch funktionieren, man kanns einfach nicht mehr mit der Standard Theorie rechnen, weil die Uebertragungsfunktion nicht mehr dieselbe Aussage hat. Es gibt auch einen Uebergangsbereich, wo die Theorie noch so halb gueltig ist. Also man geht mal von einem linearen system aus, und misst das Stellglied zusammen mit der Strecke und Sensor aus. Und wir nehmen das Stellglied als P- und den Sensor auch als P Glied an, dh nur eine skalierung, ohne Zeitverhalten. Dabei sind die proportionalitaetskonstanten wichtig. Beim Betrachten des Systems faellt sofort auf, wenn die Strecke weglaeuft. Das waere dann eine integrierende Strecke. zB Ein Wasserhahn ist konstant offen, der Behaelter fuellt sich. Falls der Sensor den Fuellstand misst. Oder dass auf eine Aenderung der stellgroesse sich sofort etwas regt, aber nachlaeuft, Endwert nur langsam erreicht wird. Das waere dann Tiefpass verhalten. Hierbei waere die Zeitkonstante charakteristisch. Aus diesen Konstanten setzt man dann die Simulation zusammen. Und laesst die Zeit nummerisch wirken.
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.