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

Thema: RP6 Gleichlauf der Motoren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von SlyD
    Registriert seit
    27.11.2003
    Ort
    Paderborn
    Alter
    40
    Beiträge
    1.516
    Ah OK

    Ich würde jedoch sowieso empfehlen das etwas aufzusplitten also P und I getrennt vom Reset berechnen in eigenen Variablen dann wäre das auch kein Problem. Den Integrierer separat limitieren.

    So eine lange Rechnung hier in einer einzigen Zuweisung:

    delta_y = speedKp * (180/267.0) * ((sclE - sclE1) + speedKi * sclE * speedControllTimer/10000.0 +
    speedTv * (sclE - 2*sclE1 + sclE2)/(speedControllTimer/10000.0));


    ist nicht optimal da der Compiler aus sowas oft ineffizienten Code produziert.
    Bei 8 Bit Controllern immer alles schrittweise auseinanderbrechen und die Codegröße beim Übersetzen beachten.


    Insbesondere auch: 180/267.0
    ist böse weil große Teile der Rechnung ggf. mit Floatingpoint durchgeführt werden (auch da wo nicht notwendig).
    Alles was nicht float sein muss auf int umstellen!
    Divisionen sind auch böse, wenn möglich anders skalieren.

    Das aber nur nebenbei


    MfG,
    SlyD

  2. #2
    Ok über Codeeffizienz hab ich mir noch sehr wenig Gedanken gemacht. Hab eigentlich auch keine Ahnung davon. Die Divisionen müssen so sein 180/267 wäre sonst 0, und die Kommazahl jetzt schon anschreiben mag ich nicht, weil ich den Code dann schwerer nachvollziehen kann. Aber gut Codeoptimierung ist jetzt ein anderes Thema, jedoch würde mich interessieren, welchen Sinn es hat den I-Regler getrennt zu limitieren bzw. warum überhaupt?

    Mit freundlichen Grüßen

    Schwammi

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    09.04.2008
    Beiträge
    384
    Zum code efficienz und 8-bit µ : wen moglich mit eine 8bit int rechnen, dan 16 bit int, dan 32 bit int und allerletze float. Die Rechenaufwand geht sehr schnell ind die Hohe !! Dividieren durch 2, 4, 8.. geht sehr schnell : ist eine reine Schieb operation von binaire Zaehlen. Alles andere kostet mehr Rechenzeit.
    Limitieren von I-regler ist standard bei jeden PI(D) Regelung : Wen die Regelung aus irgendeine Grund die "Error" nicht ausregelen kan, bleibt der I-regler bei jeden Durchlauf seine Wert erhohen, selbst wen das absolut kein Sinn mehr macht (Beispiel : PWM Wert schon 100 %). Wen das Regelen dan wieder Sinn macht, muss das I-Anteil erst wieder abgebaut werden, und das kan sehr lange daeuern... Dafur werd meistend das I-Anteil begrenzt (anti Wind up). Auch wen sie iher Setpoint anderen (Beispiel : RP6 : STOP !), macht ess Sinn das I-Anteil zu nullen.

Ähnliche Themen

  1. Gleichlauf bei DC Motoren???
    Von Teslafan im Forum Motoren
    Antworten: 14
    Letzter Beitrag: 28.03.2012, 11:19
  2. Motoren und RCX
    Von firestorm_ im Forum Motoren
    Antworten: 0
    Letzter Beitrag: 08.06.2008, 08:45
  3. Antworten: 2
    Letzter Beitrag: 16.04.2007, 05:22
  4. Ct-Bot Motoren
    Von Sven04 im Forum Motoren
    Antworten: 2
    Letzter Beitrag: 23.03.2006, 11:29
  5. DC Motoren und PWM
    Von cavegn im Forum Motoren
    Antworten: 5
    Letzter Beitrag: 02.08.2005, 20:35

Berechtigungen

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

Solar Speicher und Akkus Tests