- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 13

Thema: Verständnisprobleme mit Regler und Kaskadenregler

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    15.02.2004
    Beiträge
    17
    Also, der innere DC Regler funktioniert. Es gibt Arbeitspunkte für einen reinen P Regler wo der Fehler im Vorzeichen hin und herschwingt. Bei größeren Leistungen ist das Schwingen vom Nullpunkt weiter weg. Also habe ich noch einen I Anteil hinzugefügt. Das regelt schon mal lustig hin und her und ich kann mit Kp und Ki rumspielen.

    Ein Problem dabei hat sich schon rausgestellt. Die Stromaufnahme des WR folgt der Vorgabe in verschiedenen Fahrsituationen unterschiedlich schnell. D.h. die Regelstrecke hat keine konstanten Eigenschaften. Das ist aber wohl eher eine klassische Optimierungsaufgabe aus der Regelungstechnik.

    Hier ist mein Javascript für NodeRed, abgeschrieben hier aus dem Regler Wiki. Für C und Assembler Programmierer etwas gewöhnungsbedürftig. Soll und Istwert werden in globalen Variablen übergeben. Zum Zugriff braucht man dann die Methoden flow.get und flow.set. Das msg Objekt wird in einer Rückkopplungsschleife mit einer Zykluszeit von derzeit 1 sek wieder hinten eingespeist bzw. msg.out vorne als Stellgröße an den Wechselrichter ausgekoppelt.

    Code:
    //flow.sv = Setpoint Value, Sollwert ist gewuenschter SOC Batterie Ladezustand
    //flow.pv = Process Value, Ist wert ist der aktuelle SOC Batterie Ladezustand
    
    const Kp = 0.5;                                    // proportional parameter
    const Ki = 0.1;                                       // integraion parameter
    const Kd = 0;                                       // differential parameter
    
    let error = (flow.get("pv2") - flow.get("sv2"));    // difference between setpoint value and process value
    msg.errsum += error;                                // integral difference
    
    msg.out =   (Kp * error)+ (Ki * msg.errsum);
    
    // + Kd * (error - msg.errold); // PID Regulator
    
    msg.errold = error;                             // save Error for next cycle
    msg.out = Math.round(msg.out)*-1 ;              // negative Einspeisung, positive Akkulast
    
    if (msg.out < -33000) msg.out = -33000;         // top saturation
    if (msg.out >   -333) msg.out =   -333;         // bottom saturation
    
    return msg;
    Edit: Die Kommentare im Code sind natürlich noch falsch bzw. stammen von einer älteren Version wo ich ohne Kaskade probiert habe. Soll und Istwert sind nicht der SOC sondern die Batterie-Leistungen.
    Geändert von Janvi (Heute um 08:06 Uhr)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 13.05.2013, 12:47
  2. I2C Verständnisprobleme
    Von Ezalo im Forum Robby RP6
    Antworten: 24
    Letzter Beitrag: 01.05.2011, 17:06
  3. Verständnisprobleme -> Drehmomentrechner
    Von selan im Forum Motoren
    Antworten: 9
    Letzter Beitrag: 13.11.2006, 14:25
  4. Syntax - Verständnisprobleme
    Von R2D3212 im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 05.07.2006, 01:41
  5. Serielle Verständnisprobleme
    Von steffenvogel im Forum Software, Algorithmen und KI
    Antworten: 6
    Letzter Beitrag: 09.04.2006, 13:23

Berechtigungen

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

Labornetzteil AliExpress