Frage zur Beschleunigungsregelung

Hallo

Ich habe eine Beschleunigungsregelung mit einem Brushless-Motor aufgebaut. Dazu habe ich einen PI-Regler benutzt. Mit einer Sample-Rate von 50 Hz bekomme ich Drehzahlwerte des Motors. Daraus kann ich mir die aktuelle Beschleunigung ausrechnen.

AccIST =3D RPM - LastRPM

Damit berechne ich dann die Regelabweichung e0 die dann in den Regler geht.

e0 =3D AccSOLL - AccIST

Die Regelgleichung hat eine spezielle Form. Damit ist sie f=FCr Integerarithmetik besser geeignet. Der Ausgang u des Reglers berechnet sich aus:

u =3D u1 + Q0*e0 + Q1*e1 + Q2*e2

e2=3De1 e1=3De0 u1=3Du

(Q0,Q1,Q2 entstehen aus den Faktoren Kp, Ki und Kd)

Die Regelung an sich funktioniert eigentlich recht gut. (siehe

formatting link
Die erste Beschleunigungsphase mit pos. Beschleunigung und auch die mit neg. Beschleunigung sollten einen Wert von 31.25 rpm/s haben. Die zweite pos. Beschleunigung sollte 62.5 rpm/s gro=DF sein. Aber egal wie gro=DF ich Q0, Q1 und Q2 (Kp, Ki und Kd) w=E4hle die Ist-Beschleunigung ist immer kleiner als die Soll-Beschleunigung. In der Kurve waren die Beschleunigungen +/- 28.6 rpm/s und 57.1 rpm/s gro=DF. Mit gr=F6=DFer werdenden Faktoren kommt die Ist-Beschleunigung immer n=E4her an die Soll-Beschleunigung ran, aber bevor diese erreicht wird werden die Faktoren so gro=DF, da=DF zuerst das Rauschen zunimmt und dann das Ganze schwingt.

Warum ist das so? Ist ein PID-Regler f=FCr diese Regelaufgabe ungeeignet? Ich habe f=FCr das Ganze auch eine Simulation auf einem PC geschrieben. Die Ergebnisse sind die selben.

Gru=DF Markus

Reply to
midiwidi
Loading thread data ...

Hallo Markus,

Tim Wescott aus der sci.electronics.design Newsgroup hat dazu einige sehr lehrreiche Artikel geschrieben:

formatting link

--
Gruesse, Joerg

http://www.analogconsultants.com
Reply to
Joerg

midiwidi a écrit :

Hallo. Ich sehe nicht wieso der Algorithmus eine PID Funktion darstellt. Ich vermisse die Zeitabhaengigkeit die I und D betrifft. Das Integralglied muesste eigentlich die Summe des Regelfehlers beinhalten und das D-Glied die Geschwindigkeit der Veraenderung des Regelfehlers. Mir scheint, dass Sie eigentlich nur eine "gedaempfte" Proportinalfunktion benutzen. Wenn ich mich irren sollte, bitte ich um Aufklaerung. Peter

Reply to
pom

Hallo Markus,

midiwidi schrieb:

Diese Gleichungen könnte man umformulieren zu

u = u + Q0*e0 + Q1*e0 + Q2*e0

oder

Q0 + Q1 + Q2 = 0

Wo steckt da der PID-Algorithmus?

Gruß, Volker.

Reply to
Volker Staben

Hallo Markus,

midiwidi schrieb:

Diese Gleichungen könnte man umformulieren zu

u = u + Q0*e0 + Q1*e0 + Q2*e0

oder

Q0 + Q1 + Q2 = 0

Wo steckt da der PID-Algorithmus?

Gruß, Volker.

Reply to
Volker Staben

Hallo Markus,

midiwidi schrieb:

Diese Gleichungen könnte man umformulieren zu

u = u + Q0*e0 + Q1*e0 + Q2*e0

oder

Q0 + Q1 + Q2 = 0

Wo steckt da der PID-Algorithmus?

Gruß, Volker.

Reply to
Volker Staben

Das kann man nicht tun, da zur Berechnungszeit der Regelgleichung z.B. e und e1 nicht gleich sind. Das ganze steht in einer Schleife die alle 20ms durchlaufen wird. Deswegen ist e0 die aktuelle Regelabweichung, e1 die Regelabweichung aus dem vorherigen Regelschritt und e2 die Regelabweichung von vor 2 Regelschritten. Genauso ist u der aktuelle Reglerausgang und u1 der Reglerausgang vom vorherigen Regelschritt. Ich habe die Gleichung nicht selber hergeleitet. Sie entsteht, glaube ich, durch eine Vereinfachung f=FCr zeitdiskrete Systeme. Ich hab mit ihr auch ein Regelungssystem auf dem PC simuliert und die Ergebnisse mit denen der herk=F6mmlichen Regelgleichung verglichen. Sie liefern identische Ergebnisse.

Gru=DF Markus

Reply to
midiwidi

Hallo Markus,

midiwidi schrieb:

Das gleich dazuzusagen, hätte zum Verständnis Deines Problems beigetragen...

Zunächst solltest Du die Struktur eines PID-Reglers verinnerlichen. So wie Du es formuliert hast, ist es (vorsichtig formuliert) unübersichtlich.

An Gleichungen _glauben_ ist übrigens IMHO keine gute Basis; besser ist, man hat sie _verstanden_.

Gruß, Volker.

Reply to
Volker Staben

Hallo Markus,

midiwidi schrieb:

Mal sehen...

Konvention: Kleinbuchstaben sind Funktionen der Zeit in der time domain, Großbuchstaben sind deren Laplace- Transformierte in der frequency domain

Größen: Regelabweichung: e(t) bzw. E(s) Stellgröße: y(t) bzw. Y(s)

Parameter: Proportionalbeiwert: Kp Nachstellzeit: Tn Differenzierzeit: Td Schrittweite der zeitdiskreten Näherung: h

idealer PID-Regler mit Übertragungsfunktion G(s), ggf. müsste zusätzlich noch ein parasitärer Pol beim D-Anteil berücksichtigt werden:

1 G(s) = Kp * (1 + ---- + Td*s) Tn*s

mit Y(s) = G * E(s)

Übergang in die time domain, einmaliges Ableiten nach der Zeit:

. dy Kp de d^2e y = -- = --*e + Kp*-- + Kp*Td*---- dt Tn dt dt2

Zeitdiskretisierung, Ersetzen der zeitlichen Ableitungen durch Differenzquotienten

de e_n - e_n-1

-- = ----------- dt h

d^2e e_n - 2*e_n-1 + e_n-2

---- = --------------------- dt2 h^2

liefert

. Kp e_n - e_n-1 e_n - 2*e_n-1 + e_n-2 y_n = --*e_n + Kp*----------- + Kp*Td*--------------------- Tn h h^2

Rekursionsgleichung für zeitdiskrete Näherung der Integration mittels numerischer Integration nach Euler vorwärts

. y_n+1 = y_n + h*y_n

ergibt

y_n+1 = y_n +

h*Kp + ----*e_n + Tn

  • Kp*(e_n-1 - e_n) +

Kp*Td + -----*(e_n 2*e_n-1 + e_n-2) h

Zusammenfassen nach gleichen Indizes, Abkürzungen Q0, Q1, Q2 für Koeffizienten der Zeitschritte n, n-1, n-2:

y_n+1 = y_n + Q0*e_n + Q1*e_n-1 + Q2*e_n-2

mit

h Td Q0 = Kp*(-- + -- + 1) Tn h

2*Td Q1 = Kp*(1 - ----) h

Kp*Td Q2 = ----- h

Das wäre also genau Dein Ansatz.

Vorsicht mit Euler vorwärts - das Verfahren hat eine recht große Fehlerordnung und kann bei zu großen Schrittweiten h - verglichen mit den Zeiten Td, Tn - numerisch instabil werden. Bei höheren Anforderungen an das numerische Integrationsverfahren müsste ggf. ein anderer Algorithmus, z.B. Runge-Kutta 4. ordnung, zum Einsatz kommen.

Wie hast Du Deinen Regler dimensioniert?

Du sprachst von Integer-Zahlendarstellung - welche Wortlänge? Wie groß sind denn die einzelnen Beiträge zu Q0, Q1, Q2?

Gruß, Volker.

Reply to
Volker Staben

Vielen Dank f=FCr die Herleitung Volker.

Ich bin zwar Elektrotechnikingenieur, aber habe leider nie Regelungstechnik an der Hochschule geh=F6rt. Ich hab mich heute mal hingesetzt und eine Beschreibung des Regelungssystems erstellt. Dort werden deine Fragen nach Dimensionierung, Wortbreiten und Belegung der Q's beantwortet. Au=DFerdem sind auch noch zwei Diagramme drin, die den Fehler verdeutlichen. Die PDF-Datei liegt unter

formatting link

Viele Gr=FC=DFe Markus

Reply to
midiwidi

Achja, was eventuell auch noch zu erw=E4hnen w=E4re:

Auf dem Motor sitzt eine Schwungmasse die die Regelstrecke "langsamer" macht. Ich habe mal die Sprungantwort bestimmt. Bei einem Sprung vom PWM-Wert 0 (Stillstand) auf den Maximalwert +2047 ergibt sich f=FCr das Drehzahlverhalten folgende Gleichung:

y =3D 9485 rpm * ( 1-exp( -t/8,0s ) )

Bei einem PWM-Sprung von -2048 (negativer Maximal-PWM-Wert) auf +2047 (positiver Maximal-PWM-Wert) erh=E4lt man:

y =3D 19208 rpm * ( 1-exp( -t/8,32s ) ) - 9658 rpm

Reply to
midiwidi

Hallo Markus,

midiwidi schrieb:

Danke! Das dauert sicher eine Weile, bis ich mich da durchgekämpft habe

- ich schaue es mir an.

Gruß, Volker.

Reply to
Volker Staben

Hallo Markus,

midiwidi schrieb:

Das ist klar. Das Massenträgheitsmoment geht in die Eigenschaften der Regelstrecke ein. Meist kann man Antriebe ganz gut grob durch ein PT2-System annähern, wobei die kleinere Zeitkonstante die des elektrischen Parts (Ankerkreis) ist und die längere Zeitkonstante durch die mechanischen Eigenschaften (rotierende Massen) bestimmt wird.

Gruß, Volker.

Reply to
Volker Staben

Hallo Markus,

midiwidi schrieb:

Meine Idee zur Analyse - schauen wir uns die Regelung mal ganz grob in zeitkontinuierlicher Näherung an:

Annahme: PI-Regler - wie Du selber sagst, bringt ein zusätzlicher D-Anteil wenig. Übertragungsfunktion des Reglers ist Gr mit Nachstellzeit Tn und Verstärkung Kp:

(Tn*s+1) Gr = Kp * ------- Tn*s

Motor beschrieben durch PT2-System mit Zeitkonstanten T1, T2, Übertragungsfunktion Gm. Verstärkungen sind egal; erstmal geht es um die Struktur:

1 Gm = ----------------- (T1*s+1)*(T2*s+1)

Differenzierglied zur Berechnung der Beschleunigung, Differenzierzeit Td, Übertragungsfunktion Gd:

Gd = Td*s

Kreisübertragungsfunktion G0:

G0 = Gr*Gm*Gd

Führungsübertragungsfunktion Gw, "actual acceleration" ist Regelgröße, dadurch wird der Kreis zum Einheitsregelkreis:

G0 Gw = ------ (1+G0)

(Tn*s+1) * Td*s G0 = Kp * ------------------------ Tn*s * (T1*s+1)*(T2*s+1)

Dimensionierung des PI-Reglers durch Abstimmung der Nachstellzeit auf die größere der Streckenzeitkonstanten (hier vielleicht nicht sinnvoll, da genau die Zeitkonstante vom Rotationsträgheitsmoment der Last abhängt, zeigt aber ganz gut, wie sich der Kreis grundsätzlich verhält):

Tn = T1

Td*s 1 G0 = Kp * --------------- = K * -------- Tn*s * (T2*s+1) (T2*s+1)

mit

Td K = Kp * -- Tn

K Gw = -------- T2*s+1+K

K 1 Gw = --- * ----- (1) K+1 T*s+1

mit

T2 T = --- 1+K

Der Vorfaktor K/(K+1) in Gleichung (1) zeigt uns, dass die Regelung nicht stationär genau ist. Zusätzlich hängt K von Tn ab - das erklärt Deine Beobachtung, warum die Dimensionierung des I-Anteils die stationäre Regelabweichung beeinflusst.

Grund: der I-Anteil des Reglers, der eigentlich für die stationäre Genauigkeit zuständig ist, wird durch Deine Differentiation in der Rückführung zur "actual acceleration" wieder zunichte gemacht.

Kannst Du das nachvollziehen? Wenn das so stimmt, dann bleibt Dir wohl keine Wahl, als einen anderen Regler zu verwenden.

Gruß, Volker.

Reply to
Volker Staben

Hallo Volker,

erstmal vielen Dank f=FCr deine Bem=FChungen !!! Ich finde es immer wieder bewundernswert, dass es Menschen gibt die ihre Zeit opfern (ist bei deinen Ausf=FChrungen sicher nicht wenig), um anderen bei der L=F6sung ihrer Probleme zu helfen. Ich habe deine Ausf=FChrung gelesen, aber noch nicht alles verstanden. Ich hab zwar schon etwas =FCber die Laplace-Transformation und die Laplace-Ebene geh=F6rt (nehme doch mal an die Gleichungen von dir beschreiben den Regler in dieser), aber wie gesagt habe ich kein Regelungstechnik geh=F6rt. Deswegen werde ich noch ein bisschen brauchen, um dein Posting durchzuarbeiten. Es klingt allerdings logisch, dass der I-Anteil durch die Differentiation (Geschwindigkeit -> Beschleunigung) "neutralisiert" wird. K=F6nnte man das irgendwie umgehen? Du sprichst von anderen Reglern. Was f=FCr Regler k=E4men denn da in Frage?

Viele Gr=FC=DFe, Markus

Reply to
midiwidi

Hallo Markus,

midiwidi schrieb:

Gern geschehen, dauerte letztlich nur 10 Minuten.

Richtig, Grundlage ist eine Betrachtung mit Laplace-Transformierten in der frequency domain. Schau es Dir in Ruhe an in einem Fachbuch Deiner Wahl.

Da müsste man mal genauer hinschauen. Grundsätzlich käme in Frage, einen doppelt integrierenden Regler zu verwenden. Der würde allerdings wohl zu einem recht langsamen Führungsverhalten führen, also wird man den wohl auf jeden Fall mit D-Anteil als PI2D-Regler ausführen müssen. Oder gleich einen "ordentlich" dimensionierten Polynomregler einsetzen.

Vielleicht würde sich auch lohnen, über das Konzept grundsätzlich noch einmal nachzudenken: vielleicht ist es möglich, auf die Differenzierung zur "actual acceleration" zu verzichten?

Gruß, Volker.

P.S.: "midiwidi" ist kein so ganz netter Absender...

Reply to
Volker Staben

So,

ich habe mich die letzten paar Tage sehr intensiv mit der Mathematik zur Regelungstechnik besch=E4ftigt. Ich habe auch die station=E4re Genauigkeit =FCberpr=FCft, in dem ich die Regelabweichung nach einem Sprung des Sollwertes zur Zeit t -> 8 berechnet habe. Ich komme auf ein =E4hnliches Ergebnis wie du, eine bleibende Regelabweichung. Sie hat nach meiner Berechnung den Wert 1/(1+Ki*Kmotor). Ich hatte auch die Idee, ein Integrierglied zwischen Regler und Strecke zu setzen. Ich hab das gleich mal an meinem Matlabmodell ausprobiert. Es hat geklappt, der Sollwert wird jetzt sehr genau erreicht. Auch haben Kp und Ki im Gegensatz zu vorher jetzt den Einflu=DF, den ich erwarte. Ich denke mal, da=DF die Verlangsamung der Regelung durch den zus=E4tzlichen Integrator nicht so schlimm ist, da der Motor auf Grund seiner Schwungmasse auch einigerma=DFen tr=E4ge ist und die Abtastrate 50 Hz betr=E4gt. Ich denke, dass es nicht m=F6glich ist, die Differentiation (Berechnung von Actual Acceleration) zu umgehen. Da ich ja die Beschleunigung regeln will, brauche ich Beschleunigungsme=DFwerte. Da ich aber vom Motor selbst nur Drehzahlme=DFwerte bekomme (=FCber die Hallsignale), mu=DF ich die in Beschleunigung umrechnen. Ich werde das ganze jetzt mal in mein reelles System einbauen und testen.

Das System besitzt noch eine zus=E4tliche Funktion, die ich bis jetzt noch nicht erw=E4hnt habe. Es gibt nicht nur eine Beschleunigungsregelung, sondern auch eine Drehzahlregelung. Es wird eine Beschleunigung und eine Enddrehzahl vorgegeben. Zuerst f=E4hrt der Motor mit der vorgegebenen konst. Beschleunigung. =DCberschreitet er die Enddrehzahl wird von der Beschleunigungsregelung auf eine Drehzahlregelung umgeschaltet und die Drehzahl auf den Sollwert ausgeregelt (Blockschaltbild unter

formatting link
Dabei ist dann allerdings der zus=E4tzlich eingef=FChrte Integrator zu viel und wird "=FCberbr=FCckt". Was mache ich aber w=E4hrend der Drehzahlregelung mit der Integratorsumme? Weiterhin aufsummieren, Wert speichern und bis zur n=E4chsten Beschleunigungsregelung halten, auf Null setzen? Ich poste morgen mal ein Bild, wie sich das System in diesen drei Varianten verh=E4lt.

Gru=DF Markus

Reply to
midiwidi

Hallo Markus,

midiwidi schrieb:

Was spricht denn dagegen, das System ausschließlich mit einer Drehzahlregelung zu betreiben und im Hochfahrvorgang die Zeitfunktion der Führungsgröße so zu definieren, dass eine bestimmte Beschleunigung erreicht wird? So könntest Du auf die Strukturumschaltung verzichten und hättest die Probleme mit der Differentiation und dem zusätzlichen I-Anteil im Regler nicht. Schneller wäre die Regelung sicherlich auch...

Gruß, Volker.

Reply to
Volker Staben

Hallo Volker,

das war ein sehr guter Vorschlag ! Ich habe das zuerst an meinem Modell ausprobiert und dann in meine Hardware implementiert. Die Beschleunigungen werden jetzt gut erreicht und auch das Umschalten auf konstanten Drehzahlen klappt. Leider verhalten sich aber Modell und der reale Motor im Nulldurchgang unterschiedlich. Die reale Hardware

formatting link
zeigt ein gr=F6=DFeres Schwingen und mehr Spr=FCnge als das Modell
formatting link
Ich werde morgen testen, ob vielleicht noch ein Fehler im Drehzahlme=DFmodul der Hardware vorliegt. Das es um den Nulldurchgang zu Schwingern kommt ist normal, denn die Drehzahl wird dort immer seltener aktualisiert. D.h. es dauert immer l=E4nger bis ein neuer Drehzahlwert vorliegt, da die Drehzahl ja mittels der Zeit zwischen den Flanken der Hallsignale bestimmt wird. Ich habe leider nur die Hallsignale zur Bestimmung der Drehzahl zur Verf=FCgung. Vielleicht kann man da ja noch irgendwas tricksen, aber ich habe noch keine Idee.

Gru=DF, Markus

Reply to
midiwidi

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.