Archiv verlassen und diese Seite im Standarddesign anzeigen : Einstellen einer Kaskaden(?)-Regelung via AVR
Hallo allerseits,
ich suche nach der Möglichkeit, eine Regelung von einem µC selbstständig parametrisieren zu lassen.
Auf Hinweis eines Mods, dass das Thema schlecht beschrieben wäre, will ich es noch mal versuchen. Ich schreibe deshalb in die 2. Antwort, eine andere Version, die (hoffentlich) einfacher wird.
Der µC soll die Regelstrecke (Motor) via PWM regeln; der Chip hat natürlich die Informationen einer Resolver-Scheibe o.ä.
Dabei soll der µC zunächst mal sich selbst kalibrieren.
Ich hab mir das so gedacht: Er lässt den Motor bei voller Last anlaufen und erhält dann eine Art Liste mit Werten (vgl. Anhang, Spalte Zeit und s/steps) (=> Sprungantwort d. Strecke!). Aus dieser Liste (Sprungantwort)soll er nun die Streckenparameter bestimmen und dazu passende Regelparameter berechnen.
Ein kleines Problem am Rande: Das Ganze sollte schnell von statten gehen (nicht die Geschwindigkeit des Motors erhöhen, bis irgendwas passiert. Das muss gleich passieren, insbesondere, weil der Motor nicht allzuweit drehen sollte (ist über Getriebestange noch angeschlossen, sonst haut's mir die Mechanik auseinander). Darum kann man sich aber später kümmern.
Wie kann ich das den Chip so machen lassen, dass ich nacher im RAM irgendwlchen Variablen liegen habe, die mir sagen, wie ich den Motor "bearbeiten" muss. Sprcih die Konstanten für den/die digitalen Regler?
Ein paar (mehr oder wenigier) kleine Fragen am Rande:
Was ist hier am günstigsten/hier praktischsten: einfache Regelung, Kaskadenregelung (daran dacht ich) oder Zustandsregelung? Was müsste ich bei der Kaskadenregelung alles noch so mit in die Hardware einbauen für weitere Rückführungen (Shunts für Strommessung,...)?
Welche Regelstrecke soll ich annehmen? T1? T2? Es sollte schon recht genau am Ende sein, daher tendiere ich persönlich zu T2.
Welcher Regler wäre angebracht? PID? PI?
MfG und Danke im Voraus
Christian
Im Anhang befindet sich eine Tabelle, wie ich sie z.B. aufnehmen könnte. Damit ihr wisst was ich meine.
Hallo nochmal,
nur weil bisher sich noch niemand gemeldet hat: Sind meine Fragen zu schwer oder bin ich zu blöd und sehe den Wald vor lauter Bäumen nicht :-k (alle denken nur: "Was will der schräge Typ da nur?" ;-) )? Oder stelle ich schlechte Fragen? Oder bin ich versehentlich im falschen Forum gelandet (Wenn ja: Wo hätte es hingehört? @admin: bitte ggf. verschieben)?
MfG
Christian
Sodele, jetzt also nochmal:
Ziel: Aufbau einer Positionssteuerung eines Kreuztisches o.ä. mithilfe von DC-Motoren (keine Schrittmotoren). Dabei soll eine Standard-Gewindespindel M6 (vllt. auch was anderes, aber momentan M6 geplant) mit Steigung P=1,0 mm/Umdrehung die Rotation in lineare Bewegung umsetzen.
Jetzt mal das "Problem": Da ein Motor mit Synchron-Scheibe (nicht Servo!) eine gewisse Trägheit hat etc. sollte hier auch eine Regelung her, wenn ich auch wirklich die Achse genau steuern will.
Leider kenne ich mich bei der praktischen Umsetzung von Regelungen nicht aus; ich hab das Prinzip einer Regelung verstanden (Rückführung der Größe und ermittlung der Regeldifferenz), aber leider hab ich noch nicht so ganz die Funktion vieler Werte verstanden (dazu später).
Eine Regelung (ich dachte bisher an eine PID-Kaskadenregelung. Ist das ok?) erfodert immer eine Einstellung. Und hier ist meine erste Hauptfrage:
Ist folgendes möglich und wie mache ich das dann?:
Ich lasse den Motor mit voller Spannung anlaufen. Damit kann ich die Sprungantwort aufzeichnen. (Soweit klar)
Die Streckenparameter (ein Motor, der als T2-Glied (OK, oder?) interpretiert wird) werden nun vom µC, der die Sache aufzeichnet, bestimmt.
Wenn das erledigt ist, kommt die nächste Frage: Kann der µC auch die Regelparameter selber bestimmen, die "gut" wären. (Auch hier: wie machen? welches Verfahren ist gut geeignet? Ich denke halt, dass Bode & Co. eher schwer zu realisieren sind.)
Er kann ja ein bisschen rumprobieren, imdem er die Achse mit unterschiedlichen Parametern kurz laufen lässt und dann mit der Soll-Kurve vergleicht oder so.
Wichtig wäre nur, dass der Motor beim Aufnehmen der Sprungantwort nicht Unmengen an Umdrehungen macht, da irgandwann auch die Gewindestange aufhört ;-)
Bei der Kaskaden-Regelung muss ich ja die inneren Regelkreise schneller machen, als die äußeren. Am besten den inneren immer abarbeiten, die äußeren nur alle x Durchläufe, oder (manuell verzögern)?
Und noch eine Kleinigkeit: ich muss ja auch "Zwischenwerte" rückführen (Strom, Spannung, Drehmoment,...). Welche Werte führe ich am besten zurück? Wie mache ich das am besten, mit dem µC (vermutlich Atmel AVR).
Aha! Wenn man selbst nicht in der Lage ist, dann kann es ja der µC übernehmen. Cleveres Bürschen!
Was du da willst ist KI (künstliche Intelligenz). Sowas muss man aber programmieren. Um es zu programmieren, braucht man sehr gute Kenntnisse über die Regelungstechnik. Da sollte man schon ein Studium hinter sich haben. Lange Rede kurzer Sinn: Es ist einfacher die Regelparameter selbst zu bestimmen. Das kann man auch ohne Studium.
Der Sinn einer Regelung ist auch mit unterschiedlichen Lasten zurecht zu kommen. D.h. macht braucht so eine Regelung nur einmal zu dimensionieren. Richtig dimensioniert ist es nicht notwendig die Regelparameter immer wieder aufs Neue zu bestimmen.
Ich lasse den Motor mit voller Spannung anlaufen. Damit kann ich die Sprungantwort aufzeichnen. Das ist auch bei einer manuellen Dimensionierung sinnvoll, wenn man keine anderen Daten zur Modellierung zur Verfügung hat.
Bei der Kaskaden-Regelung muss ich ja die inneren Regelkreise schneller machen, als die äußeren. Am besten den inneren immer abarbeiten, die äußeren nur alle x Durchläufe, oder (manuell verzögern)?
Nix da, mit manuell verzögern. Das bringt nur zusätzliche Totzeiten in den Regelkreis, was sich wiederum nachteilig auf die Regelgeschwindigkeit auswirkt. Die Regelgeschwindigkeit wird sinnvollerweise durch die Parameter des Reglers eingestellt.
Und noch eine Kleinigkeit: ich muss ja auch "Zwischenwerte" rückführen (Strom, Spannung, Drehmoment,...). Welche Werte führe ich am besten zurück? Wie mache ich das am besten, mit dem µC (vermutlich Atmel AVR).Spannung kann der AVR direkt über den ADC messen und Strom als Spannungsabfall über einen Shunt. Für Drehmoment, Geschwindigkeit und Position braucht es spezielle Sensoren.
An deiner Stelle würde ich mit einem einschleifigen Regelkreis beginnen um mich in die Thematik Regelung einzuarbeiten. Wenn das funktioniert, kannst du dann in Stufen auf die Kaskadenregelung umsteigen.
Waste
OK, was schlägst du vor? Ein Test-Board/-Aufbau mit 1 Motor, einem Resolver, einer H-Brücke und einer Logik (AVR) und ein bisschen drum herum?
Oder gleich in die Vollen gehen? Ich hab halt Angst, dass das nix wird, und ich dann auf den Schrottteilen sitzen bleibe, was blöde wäre.
OK, was schlägst du vor? Ein Test-Board/-Aufbau mit 1 Motor, einem Resolver, einer H-Brücke und einer Logik (AVR) und ein bisschen drum herum?Ja genau. Klein anfangen und stetig erweitern. So eine Sache wird dir nicht auf einen Wurf gelingen. Da ist es sinnvoller, die mit Sicherheit kommenden Probleme zuerst mit einem Testaufbau zu lösen.
Waste
OK, da ich dann die Platine gerne so auslegen würde, dass die "richtigen" Motoren (für später) verwendet werden können, will ich auch die Platine so aufbauen. Warum ich das tippe:
Ich denke sinnvoll ist es die Regelkreise v. innne n. außen langsam aufzubauen, oder? Also müsste ich mit einem Strom-/Moment-Regelkreis anfangen.
Ich müsste also mit einem µC (AVR) einen Strom messen. Zunächst dachte ich daran, den Strom über einen Shunt zu jagen und dann die abfallende Spannung zu messen via ADC des AVRs. Ich glaube allerdings, dass das nicht so gut ist, da der ADC einige viele Zyklen braucht bis er ein Ergebins hat (ich meine mich an was von 1/4 ms oder so zu erinnern; muss noch mal nachschaun). Ich denke, das ist aber bei weitem nicht schnell genug, da das ja die Rückführung für den schnellsten Regelkreis sein müsste und damit die anderen nur langsamer werden können.
Wie ist das jetzt? Reicht die Geschwindigkeit eines AVR-ADCs oder nicht?
Ich hab hier zudem was von nem Trick mit nem Analog Comperator gelesen. Wie funkt das genau? Ist das besser/schlechter? Was ist "der Unterschied" (Geschwindigkeit, Auflösung, Aufwand)?
Mit klein anfangen meinte ich eher die einfache Regelung (einschleifig), um die Regelungstechnik verstehen zu lernen. Wahrscheinlich funktioniert die auch gut. Wenn nicht, kann danach immer noch auf eine Kaskadenregelung erweitert werden.
Wenn du eine Kaskadenregelung planst, dann nimm anstatt dem Momentregelkreis einen Geschwindigkeitsregelkreis. Da der Strom dem Drehmoment entspricht, wäre ein Strom- und ein Momentregelkreis doppelt gemoppelt.
Wie ist das jetzt? Reicht die Geschwindigkeit eines AVR-ADCs oder nicht?Mit der Geschwindigkeit des ADC sehe ich keine Probleme.
Ich hab hier zudem was von nem Trick mit nem Analog Comperator gelesen. Wie funkt das genau? Ist das besser/schlechter? Was ist "der Unterschied" (Geschwindigkeit, Auflösung, Aufwand)?Kannst du mir die Quelle nennen, ich weiß nicht was du meinst.
Waste
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.