- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 17

Thema: Probleme mit PID-Regelung (Drehzahl)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.03.2010
    Beiträge
    66

    Probleme mit PID-Regelung (Drehzahl)

    Hallo,

    ich benötige noch mal Hilfe.
    Ich versuche gerade einen bürstenlosen Außenläufer mit Steller mittels einem Arduino zu regeln.
    Ziel ist es zunächst, das eine Drehzahl gehalten wird.

    Die Hardware ist ein Robbe Roxxy 2824-34. Steller ist ein BL-control 918.

    Die Drehzahl wird mit einem Hallsensor gemessen.
    Zum Regeln verwende ich die Lib "PID_v1".

    Die Erfassung der Drehzahl erfolgt entweder alle 2 Sekunden oder alle 2 Ticks vom Hallsensor.

    Die Neukalkulierung und setzen eines neuen Vorgabewertes erfolgt etwa zwei mal pro Sekunde.

    Ich komme mit der Einstellerei nicht weiter.
    Die Werte für I und D habe ich erst mal auf 0 gelassen.

    Anbei vier Messwerte:

    Werte von P,I und D
    Solldrehzal->von der Regelung erreichte Drehzahl


    Kp=0.01, Ki=0.00, Kd=0.00;
    2200->2100
    6000->3280
    8000->4090


    Kp=0.02, Ki=0.00, Kd=0.00;
    2200->2100
    6000->3840
    8000->4950


    Mit schwingen im anlauf, danach ruhig
    Kp=0.03, Ki=0.00, Kd=0.00;
    2200->2110
    6000->4340
    8000->5590


    Mit ständigen schwingen
    Kp=0.04, Ki=0.00, Kd=0.00;
    2200->2125
    6000->4600 (dann schwingen)
    8000-> Werte zwischen 3600-7800 (erhebliches schwingen)


    Warum bekomme ich es nicht hin das wenigstens die soll-Drehzahl erreicht wird?


    Gruß, Andreas

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo Andreas,
    Zitat Zitat von MechMac Beitrag anzeigen
    Warum bekomme ich es nicht hin das wenigstens die soll-Drehzahl erreicht wird?
    Das ist das Grundlegende Problem des P-Reglers!
    Die Stellgrösse des einfachen P-Reglers ist:
    = Kp * (soll - Ist)
    Deshalb hängt der P-Regler immer hinter dem Sollwert hinterher. Wird (Soll - Ist) gleich 0, dann wird auch die Stellgrösse 0.
    Eine verbesserte Variante benutzt:
    = (Kp * (Soll - Ist)) + (Kp2 * Soll)

    Das Schwingen hängt von den Zeitkonstanten der Regelstrecke ab. Unbekannt ist noch wie sich die BL-control 918 zeitlich verhält.
    Zudem spielt die Abtastrate des Istwerts auch noch mit rein.

    Jetzt hast du das Problem, dass aus (Soll - Ist) die neue Stellgrösse berechnet wird. Bis zur nächsten Messung ist dann der Motor viel zu schnell geworden, also wird die Stellgrösse wieder verkleinert.
    Möglicherweise musst du noch die Abtastrate erhöhen, der Motor reagiert recht schnell.

    Praktisch muss du jetzt den D-Anteil erhöhen, bis die Geschichte nicht mehr schwingt. Dann kannst du den P-Anteil weiter erhöhen.
    Dieses Spiel machst du, bis der Istwert eine minimale Abweichung hat und alles Stabil bleibt.

    Dann kannst du mit dem I-Anteil die restliche Abweichung noch verkleinern.


    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  3. #3
    HaWe
    Gast
    ja, das Tunen und Fine-Tunen ist ein echter PITA.
    Ich hatte seinerzeit refresh-Intervalle von ca. 10ms für meine PID_v1-Regler. PID_v1 hat übrigens auch ein autotuning-Modul, das habe ich aber zugegebenermaßen selber nie verstanden.
    Der Weg, den Peter-too aufgezeigt hat, ist aber schon richtig:
    erst I und D auf Null und dann P optimal tunen,
    dann I schrittweise erhöhen, bis das System anfängt sich einzuschwingen,
    dann D schrittweise erhöhen, ohne dass es anfängt zu zittern oder zu schütteln, ggf. nochmal I und/oder P nachjustieren.

    Es gibt fürs PID tuning mehrere Schemata im Netz (öfters erwähnt: Ziegler-Nichols), aber keines ist so richtig optimal für alle erdenklichen Anwendungszwecke.
    Geändert von HaWe (26.08.2017 um 09:41 Uhr)

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo,
    Zitat Zitat von HaWe Beitrag anzeigen
    Es gibt fürs PID tuning mehrere Schemata im Netz (öfters erwähnt: Ziegler-Nichols), aber keines ist so richtig optimal für alle erdenklichen Anwendungszwecke.
    Man kann die Sprungantwort der Regelstrecke messen und dann eine Menge rechnen.

    Aber auch dann muss man von Hand nachtrimmen, da alle Konstanten variabel sind.
    Ich habe es in 40 Berufsjahren nie erlebt, dass berechnete Parameter wirklich gepasst haben, egal wer nach welcher Theorie gerechnet hat.
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    21.11.2010
    Ort
    Germany
    Beiträge
    17
    Die Werte für I und D habe ich erst mal auf 0 gelassen.
    Das wird dann aber schwingen. Der D-Anteil sollte nun erhöht werden bis es nicht mehr schwingt. Der I-Anteil ist für die Minimierung der Regelabweichung notwendig.
    Ohne I-Anteil wird die Solldrehzahl niemals erreicht & Ohne D-Anteil wirds Schwingen.

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    08.03.2010
    Beiträge
    66
    Vielen Dank für die Infos!
    Ich werde heute Abend dazu kommen das mal auszuprobieren.

    Den Arduino zum Regeln, also der mit dem Hallsensor werde ich im folgetext ArduinoRH nennen.

    Das Problem ist, das der Motor an einem Servocontroller hängt. Dieser ist via UART an dem Hauptcontroller angeschlossen. Und der ArduinoRH dann via I2C an dem Hauptcontroller.
    Also ein laaaanger Weg.
    Ich freunde mich schonmal mit dem Gedanken an, den Motor direkt an den ArduinoRH anschließen. Aber ich befürchte, das es trotzdem Timing probleme gibt.

    Es macht doch keinen Sinn den PID-Algo alle 10ms aufzurufen, wenn es deutlich länger dauert eine Drehzahl zu ermitteln, oder?
    Die I2C Versorgung auf dem ArduinoRH benötige ich in jedem Fall.
    Nur wenn ich sende und empfange, kann ich in der Zeit keine Drehzahl messen.
    Aufschieben kann ich die Antwort auch nicht, da der Request vom Hauptcontroller sofort beantwortet werden muss.

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    27.08.2013
    Ort
    Region Basel
    Alter
    66
    Beiträge
    2.435
    Hallo MechMac,
    Zitat Zitat von MechMac Beitrag anzeigen
    Es macht doch keinen Sinn den PID-Algo alle 10ms aufzurufen, wenn es deutlich länger dauert eine Drehzahl zu ermitteln, oder?
    Richtig erkannt!
    Die kürzeste Zeit muss gleich der Abtastrate der Drehzahl sein. Alles was schneller ist bringt nichts, bzw. bringt den I-Anteil ins schleudern.

    Ein wichtiger Faktor sind dann aber auch die Zeit-Schwankungen bei der Abtastung, diese sollten möglichst klein sein.

    Sagen wir mal du hast alle 2 Sekunden eine neue Drehzahl und rufst aber alle 100 ms den Regler auf.
    Dann hat sich bei 19 Aufrufen am Ist-Wert nichts geändert. Der Regler stellt aber bei jedem Aufruf fest, dass sich nichts an der Differenz (Soll - Ist) geändert hat und erhöht jedes mal den Stellwert.....
    Das kann nichts werden!

    Oft macht es aber auch noch Sinn zuerst mehrere Abtastwerte zu erfassen um dann den Mittelwert zu bilden. Damit kann man einen Teil der Störungen verringern.

    Du solltest das Ganze so gestalten, dass du höchstens nach jeder Drehzahlmessung den Regler einmal aufrufst.
    Ein Problem dabei ist, dass die Abtastrate direkt als Zeit-Parameter in die Formel eingeht.
    Du hast dann eine Variable Konstante und das kann nicht stabil sein.

    Die Grundsätzliche Frage ist noch, wie schnell die Regelung sein muss?
    Also wie schnell muss eine bestimmte Drehzahl erreicht werden und wie schnell müssen Lastwechsel ausgeglichen werden?
    Hier stellt sich auch noch die Frage, wie gross und schnell die Lastwechsel überhaupt sind?
    Über die Anwendung wissen wir bis jetzt noch gar nichts, also was da am Motor hängt?

    Ich hatte viel mit Motor- und Heizreglern zu tun. Wenn du 4 m3 Wasser hast, macht es keinen Sinn da jede Sekunde zu messen, das System ist viel zu träge.

    Bei Motoren spielen die Schwungmasse und die Belastung eine grosse Rolle. Die Schwungmasse verändert vor allem den D-Anteil und die Belastung ändert die Zeitkonstante bei der Sprungantwort.
    Du hast dann eine weitere variable Konstante, weshalb die Berechnungen für einen PID-Regler eben nie stimmen....

    MfG Peter(TOO)
    Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?

  8. #8
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.653
    Hallo Andreas.
    .. Ich versuche gerade einen bürstenlosen Außenläufer .. zu regeln. Ziel ist es zunächst, das eine Drehzahl gehalten wird ..
    Als ich vor dieser Aufgabe stand, hatte ich mal im RNWissen nachgesehen - da gibts eine sehr gute Abhandlung über Regelungstechnik. Das muss man nicht (aber kann es) durcharbeiten. Besonders für Dich wichtig ist der Abschnitt über digitale Regler. Dort gibts dann im nachfolgenden Kapitel auch Ratschläge zur experimentellen, geschätzten oder regelrechten Bestimmung der Regelfaktoren.

    Meine erste Notiz, damit auch der Beginn meiner Reglersoftwarekonstruktion, dazu war ein Aufzeichnen (m)eines Regelkreises

    ......Bild hier  

    mit den zugehörigen Werten (siehe auch hier) - zu guten Teil stehen da meine Variablennamen.

    Folge: das entsprechende Wägelchen fährt dann mit zwei UNABHÄNGIG von einander angesteuerten, getrennten Motoren bei Vorgabe gleicher WErte schnurgeradeaus *ggg*.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. 10A Mikroschrittkarte - Probleme mit Strom-Regelung
    Von Kaiser-F im Forum Elektronik
    Antworten: 84
    Letzter Beitrag: 07.12.2010, 18:39
  2. Regelung mit PIC
    Von Shunth im Forum PIC Controller
    Antworten: 4
    Letzter Beitrag: 25.06.2010, 20:49
  3. Antworten: 4
    Letzter Beitrag: 04.11.2008, 17:39
  4. PWM-Regelung
    Von eis im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 20.05.2007, 11:03
  5. Antworten: 13
    Letzter Beitrag: 17.09.2004, 20:09

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test