Kod regulatora PI w C - zastosowanie plik dll w PSIM/PLECS w bloku C/procesor nie ma konicznosci uzywania typu static
/*definicja zmiennych, nie musza byc wszystkie static*/ const double kp_ir=0.50, ki_ir=15.20, Ts=0.00025;/*fs=4kHz*/ static double e_ir_d=0.0, du_ir_d=0.0, e_ir_d_p=0.0, in_sat_ir_d=0.0, out_sat_ir_d=0.0; static double u_ir_d=0.0, u_ir_d_p=0.0; /*obliczenie uchybu*/ e_ir_d = ir_d_z-ir_d; /*dyskretny regulator PI*/ du_ir_d =e_ir_d*(kp_ir+Ts*ki_ir) - e_ir_d_p*kp_ir; e_ir_d_p = e_ir_d; in_sat_ir_d = du_ir_d + u_ir_d_p; /*nasycenie wyjscia regulatora w tym przypadku wyjscie ma wymiar napiecia - nalezy odpowiednio ustalic warosc dostosowujac ja do obiektu podlegajacedo sterowaniu*/ if(in_sat_ir_d>2000.0) out_sat_ir_d=2000.0; else if(in_sat_ir_d<-2000.0) out_sat_ir_d=-2000.0; else out_sat_ir_d= in_sat_ir_d; /*przepisanie wartosci zmiennych*/ u_ir_d = out_sat_ir_d; u_ir_d_p = u_ir_d; /*ustawienie wyjscia regulatora, w tym przypadku nie jest konieczne bo mamy tylko dodatkową zmienna, ale by było wiadomo co jest wyjsciem*/ outR_ir_d=u_ir_d; |