Ufe-pdi regler notizen

Aus SpaceOnEarth
Version vom 4. April 2022, 15:35 Uhr von Axel (Diskussion | Beiträge) (1 Version importiert)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
I_UfE_Pdi_regler_notizen
PDI-Regler

Beispielprogramm

double e = 0;//aktuelle Regelabweichung
double ealt = 0;//vorherige Regelabweichung
double esum = 0;//Summe Regelabweichung
double w = 0;//Sollwert
double x = 0;//Istwert
double y = 0;//Stellgroesse
double YMIN=0;//Maximale Stellgroesse
double YMAX=100;//Maximale Stellgroesse
double Ta = .02;//Abtastzeit 20ms (Zeitkonstante)
double LFak = 2;//LFAK=Kp Anteil des Linearen Regelgliedes (Verstaerkung) 
double IFak = 1; //IFak=I*Ta Anteil des Integralen Regelgliedes
double DFak = 0; //DFak=D/Ta Anteil des Differenziellen Regelgliedes
double AS = 1;//Ansprechschwelle des Reglers
double LP;//eingestellte pumpleistung
double LP_MIN;//Minimal zulaessige pumpleistung
double LP_MAX;//Maximal zulaessige pumpleistung
pdi_regler(){
   e=t_soll-t_ist;//aktuelle Regelabweichung bestimmen
   if ((e>= AS)||(e<=(-AS))){//soll was getan werden?
      if ((y<YMAX)&&(y>YMIN)){  //bei uebersteuertem stellglied Integration einfrieren
         esum=esum+e;          //Summe der Regelabweichung aktualisieren	
      }
      y=LFak*e+IFak*esum+DFak*(e-ealt); //Reglergleichung 
      ealt=e;//Regelabweichung fuer naechste Abtastung merken
   }
   if(y>YMAX){ //Stellgroesse 0..1023 begrenzen
      y=YMAX;
   } else if(y<YMIN){
      y=YMIN;
   }
   pumpleistung=Min(LP_MIN,Max(LP_MAX,pumpleistung+y));
}
main(){
  while(1){
     warten();
     messwerte_holen();
     if(status==STATUS_REGELBETRIEB){
        if(LP<LP_ZuKlein){
           LP_zuklein_cn++;
           if(LP_zuklein_cn>EINSCHLAFZEIT){status=STATUS_ANHALTEN;}
        } else {
           LP_zuklein_cn=0;
        }
        pdi_regler();
     } else if(status==STATUS_ANHALTEN){
        LP=0;
        //evt waschen
     } else if(status==...){
        ...
     } 
  }
}
Wärmetauscherregler
Vortriebspumpe

Parameter 0@@ Messgrößen 1@@ Ermittelte Größen: 2@@ VortriebspumpenReglerInitialisierung: 3@@ VortriebspumpenReglerschritt: 4@@

Hauptzyklus (Status)

5@@\n\n