Hallo Ich arbeite mit einem Eval Board von TI RDK-BLDC. Dabei funktioniert die Geschwindigkeitsregelung super. Ich muss jetzt aber noch zusätzlich eine Positionsregelung realisieren. Ich habe jetzt vom Quadraturencoder die aktuelle Position (IST) und die gewünschte Sollposition gebe ich über UART ein. Der PI Regler für die Position funktioniert, nur wie muss ich diesen jetzt mit dem PI Regler vom Speed verknüpfen? Ich stehe da gerade an und weiss nicht wie ich vorgehen soll, denn der Ausgang des PI Reglers muss bei Regelabweichung = 0 den Motor sofort auf null fahren. Ich komme infach nicht weiter. Danke für jeglichen Input.
Hallo, prinzipiell ist das trivial, wenn die Positionsabweichung 0 ist, muss die Geschwindigkeit 0 sein - der Teufel steckt im Detail, hauptsächlich im zeitlichen Verhalten, Verzögerungen bewirken Überschwingen. Also erstens muss alles möglichst schnell funktionieren, und möglicherweise brauchst du auch noch einen D-Anteil. Mit den richtigen PID-Parametern lässt sich präzise auf 0 fahren. Da wird man viel experimentieren müssen, langsames Verfahren in der Nähe des Ziels hilft zunächst mal. Gruss Reinhard
Ok vielen Dank Das heisst ich muss die Regelabweichung als Soll-Speed nehmen und dem PI vom Speed Regler einspeisen? Gruss
Kann ich nicht den Ausgang vom PI(D) vom Positionieren direkt auf den Speed geben und den PI für den Speed rauswerfen? Danke & Gruss
Dominik Eugster schrieb: > den PI für den Speed rauswerfen? Du meinst, als Steuergrösse für Speed? Das macht genau genommen garkeinen Unterschied aus, jedenfalls nicht im mathematischen Sinn - 2 hintereinandergeschaltete PID-Regler ergeben wieder einen PID-Regler. Da das aber heute alles Algorithmen sind und keine Ansammlung von OpAmps fällt das nicht weiter auf. Man kann sogar noch einen Schritt weiter gehen und den Positionsregler direkt auf den Strom wirken lassen, wenn man einen DC-Motor verwendet. Strom -> Drehmoment -> Beschleunigung -> Drehzahl -> Weg, daher kann man alles "in einem Aufwasch" regeln. Allerdings wird die Sache dadurch nicht übersichtlicher. Ausserdem braucht man oft Zwischengrössen, z.B. die Geschwindigkeit als vorgegebene Vorschubgeschwindigkeit, damit das Werkzeug optimal arbeitet. Aber, wie gesagt, ist eh alles bloss Software. Gruss Reinhard
Hallo Vielen Dank für die Inputs. Zum obigen Post: Ich muss ja eine stabile Geschwindigkeit haben, somit benötige ich mal sicher SOLL Geschw. und IST Geschw., die über einen PI(D) Regler geregelt wird, damit der Motor die Geschwindigkeit auch hält bei Laständerung. Damit ich jetzt aber punktgenau anfahren kann, benötige ich die SOLL und IST Position vom Weggeber und muss diese auch PID regeln. Der Ausgang des Positionsreglers kann ich jetzt ja als Sollgeschwindigkeit beim Geschwindigkeitsregler einspeisen. Wenn ich das nicht mache, und den Ausgang vom Positionsregler direkt auch den Motor gebe, läuft mir die Geschwindigkeit ja oben weg. Ich könnte den Ausgang jetzt begrenzen aber dann ist die Geschwindigkeit bei Laständerung unterschiedlich. Verstehe ich das jetzt wieder falsch? Ich sehe nicht, wie ich die Geschwindigkeit stabil halten kann nur mit einem PID Regler der die Position anfährt. Bitte um HILFE. Vielen Dank!
Dominik Eugster schrieb: > Ich sehe nicht, wie ich die Geschwindigkeit stabil halten kann nur mit > einem PID Regler der die Position anfährt. Ich auch nicht. Ich gebe aber zu bedenken, dass bis jetzt hier ja noch niemand wusste, dass die stabile Einhaltung einer Geschwindigkeit ein Muss für dich ist. Oftmals ist das ja nicht der Fall, dass diese Forderung besteht. Der 'Schlitten' (oder was auch immer) fährt so schnell er kann eine Position an.
Ja wenn ich aber die Geschwindigkeit halten muss und die Position genau anfahren muss, kommt doch nur dieses Blockschaltbild zum Einsatz und nicht 1 einzelner Regler, oder? http://de.wikipedia.org/wiki/Lageregelung
Hallo Nochmals einen Nachtrag bezüglich PID Positionsregelung: Hat jemand eine Idee wie ich die Differenz zwischen Soll und Ist der aktuellen EncoderPosition begrenzen soll? Ich meine, wenn ich Soll = 100'000 und Ist = 0 habe wird mein PID ERROR so gross, dass das nicht mehr gut regelbar ist. Aber ich könnte zum Beispiel den Positions PID erst einschalten, wenn ich eine gewisse Position vor der Zielposition bin. Aber wie soll das aussehen, wenn die Geschwindigkeit und Rampe unterschiedlich gross ist? Soll ich entsprechend der Bremsrampe und der aktuellen Geschwindigkeit zurückrechnen, wo ich anfangen soll zu Bremsen, damit ich sicher vor dem Target Punkt zum Stehen komme? Danach könnte ich kurz vor der Target Position den Positions PID aktivieren undc damit den restlichen Weg bis zum Zielpunkt fahren. Vielen Danke und Gruss
Dominik, was Du vorhast, heisst im Fachjargon "Kaskadenregelung"; wenn Du mit dem Suchbegriff im Internet guckst, findest Du jede Menge Anregungen. Ciao, Harald.
Hallo Ok, vielen Dank. Aber wie komme ich auf die Position, an welcher ich die Bremsrampe einleiten soll? Ich habe die aktuelle Position in Counts, die aktuelle Geschwindigkeit in U/min, die Bremsrampe in Anzahl U/min /s und die Target Position. Wie komme ich jetzt auf den Punkt, an welchem ich die Bremsrampe einleiten muss? (mal ohne PID Positionsregler), dieen werde ich danach zuschakten. Wenn dieser Punkt stimmt, und ich dann die Bremsrampe einleite, müsste die angefahrene Position schon recht genau stimmen. Danke
Ich habe jetzt den Punkt flgendermassen berechnet: TestPunkt = ((g_ulMeasuredSpeed (U/min)*g_ulMeasuredSpeed)*(Encoder Counts / U /60 (wegen min->s))) / UI_PARAM_DECEL (U/min / s); Punkt wo Bremsung eingeleitet werden muss = Target-Position - TestPunkt Funktioniert nicht schlecht, aber stimmt das auch?
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.