Forum: Digitale Signalverarbeitung / DSP / Machine Learning Motorregelung mit PID-Controller


von Ka S. (kasuh)


Lesenswert?

Ich möchte eine PID-Reglung realisieren und weiß nicht mit welcher 
Abtastrate ich das machen soll. Der Drehzahlsensor liefert pro 
Spindeldrehung genau einen Impuls, d.h. die Taktrate in denen ich 
Istwerte erhalte hängt von der Drehzahl ab. Der Drehzahlbereich liegt 
zwischen ca. 15 U/min und 1000 U/min. Der Taktrate für den Istwert liegt 
somit zwischen 4 Sekunden und 60ms. Der Sollwert ändert sich 
kontinuierlich und wird mit einer festen Rate alle 20-60ms 
(einstellbar)erfasst.

Ich befürchte, dass ein PID-Regler mit einer konstanten Taktrate nur für 
einen kleinen bestimmten Drehzahlbereich optimiert werden kann. Als 
laienhafte Ideen hätte ich folgendes anzubieten
a) Taktrate = Umdrehungszeit, also variabel oder
b) Konstante ausreichend hohe Taktrate und Extrapolation (Schätzung)
der aktuellen Drehzahl (akt. Drehzahl = zuletzt gemessene Drehzahl +
seitdem vergangene Zeit  Stellgröße  Beschleunigungsfaktor

Ich denke die Experten haben da eine ganz andere Lösung!?

von Peter D. (pdiener) Benutzerseite


Lesenswert?

60ms... Das is doch noch Gleichstrom für einen Mikrocontroller...
(Spaß beiseite...)

Für eine Drehzahlregelung reicht in aller Regel ein PI-Regler vollkommen 
aus.

Du musst auch nichts extrapolieren, sondern rechnest den Regler einfach 
z.B. alle 20ms. Der Istwert der Drehzahl bleibt immer solange konstant, 
bis wieder  die Positionsmarke vom Motor erkannt wird, dann aus der 
vergangenen Zeit eine neue Drehzahl errechnet, die die alte ersetzt.

Das ist auch kein Problem, nur ein D-Anteil hätte mit den Sprüngen ein 
Problem. Das funktioniert bestimmt schon gut genug so, da muss man nicht 
mit schwereren Methoden dran gehen. Das Verfahren ist schön einfach, da 
die Integrierer nur Addierer sind, die nicht mit der Samplingrate 
gewichtet werden müssen.

Was man vielleicht braucht, ist eine dynamische Verstellung der 
Regelparameter, da das System, wenn es langsam ist, nur selten Istwerte 
liefert und damit zum Überschwingen neigt. Also, wenn es langsam ist, 
den P-Anteil erheblich reduzieren. Der Einfachheit halber kann (und 
sollte) man den P-Anteil über den Istwert gewichten.

Grüße,

Peter

von Ka S. (kasuh)


Lesenswert?

Danke Peter für die schnelle Antwort.

Das mit der Gewichtung des P-Anteils mit dem Istwert hört sich gut an. 
Genau die Befürchtung hatte ich, wenn man in meinem Fall einen 
klassischen PI-Regler mit konstanten Parametern und konstanter Taktrate 
verwendet. Optimiert man für die hohen Drehzahlen, kommt es zu 
Überschwingungen in den niedrigen Drehzahlen. Umgekehrt wird der Regler 
in den hohen Drehzahlen zu träge.

Ich werde Deinen Vorschlag ausprobieren und hier über das Ergebnis 
berichten. Besten Dank!

von Ka S. (kasuh)


Lesenswert?

Habe lange mit der Gewichtung des P-Anteils experimentiert und 
festgestellt, dass dies mit einer einfachen linearen Gewichtung über den 
breiten Drehzahlbereich nicht hinhaut, zu dem das Verhalten des 
Motor/Getriebe-Systems durch das nachgeschaltete Getriebe verändert 
wird. Da das Finden
einer geschlossenen Formel für mich zu schwierig war, blieb für mich 
eine tabellarische Lösung, bei der Gewichtungswert aus der Tabelle als 
Funktion der Drehzahl und der Getriebestufe ausgelesen wird.

Allerdings ist es sehr mühevoll die optimalen Werte für diese Tabelle zu
finden. Mittelweile habe ich eine gänzlich andere Lösung gefunden, so 
dass
ich den PID-Regler nicht mehr brauche.

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
Noch kein Account? Hier anmelden.