Forum: Mikrocontroller und Digitale Elektronik PI Strom-Regler eines B2 Stromrichters


von Mark (Gast)


Lesenswert?

Hallo Gemeinde,

ich habe einen PI Regler Algo:
1
float PI_mitL(float Id_neu, float Id_alt, float Imax, float u_test, int PIdurchlauf)
2
{
3
  xd = (Imax - Id_neu);  
4
  if (PIdurchlauf == 0)   //Um beim ersten Durchlauf P-Anteil nicht zu vernachlässigen
5
  {
6
    xd_1 = 0;
7
    PIdurchlauf = 1;
8
9
    //new_u_ist = 0.2; schreibe ich das, wird auf diesen Wert begrenzt, warum?
10
        } 
11
else
12
{  
13
  xd_1 = (Imax - Id_alt);
14
  }
15
16
TermAu = (xd - xd_1);
17
TermBu = k_Ri_lin * TermAu;  //P-Anteil
18
TermCu = T_AB_lin/T_Ri_lin;
19
TermDu = k_Ri_lin * TermCu;  
20
TermEu = TermCu * xd_1;  //I-Anteil
21
TermFu = TermBu + TermEu; 
22
  //u_delta = TermF;
23
24
  new_u_ist = new_u_ist + (TermFu);
25
  
26
  //new_u_ist = (new_u_ist + k_Ri_lin * (xd - xd_1) + k_Ri_lin * T_AB_lin / T_Ri_lin * xd_1) ;
27
  
28
  if (new_u_ist < 0) new_u_ist=0;    //Begrenzung Stellgröße
29
  if (new_u_ist > 1) new_u_ist=1;
30
  
31
  u =new_u_ist;
32
  return u;    //Übergabe Stellgröße

Ich habe nun 2 Versionen, um einen Zündwinkel aus dem bereitgestellten u 
zu berechnen.

1.
Ich sage Zündwinkel = Zündwinkel - u;

2.
Ich übergebe u einer Funktion, die daraus und aus Leitdauer und Strom 
einen Wert berechnet.

Dies funktioniert auch soweit. Nur ist das System so weit aus träger als 
Version1. Was eigentlich andersherum sein sollte. Weiss jemand einen Rat 
wieso das so sein könnte?

Dazu sei vielleicht gesagt:
Bei Version 1 schnelles annähren auf Endwert.
Bei Version 2 eben langes Einschwingen.

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.