您好:
我的PI程序是放在EVA的下溢中断里,可是误差的实时值与上一时刻的误差值相等,从而导致我的P没有作用,请问是什么问题。下面是我的程序代码。谢谢。
//PID算法//
ek=Uref-Uf;
Up=Kp*(ek-ek1);
Ui=Ki*ek;
Uk=Uk1+Ui+Up;
if(Uk1>=2500)Uk=2500;
else if(Uk1<1700)Uk=1700;
ek1=ek;
Uk1=Uk;
delta_Uk=Uk;
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好:
我的PI程序是放在EVA的下溢中断里,可是误差的实时值与上一时刻的误差值相等,从而导致我的P没有作用,请问是什么问题。下面是我的程序代码。谢谢。
//PID算法//
ek=Uref-Uf;
Up=Kp*(ek-ek1);
Ui=Ki*ek;
Uk=Uk1+Ui+Up;
if(Uk1>=2500)Uk=2500;
else if(Uk1<1700)Uk=1700;
ek1=ek;
Uk1=Uk;
delta_Uk=Uk;
您好,我的增量式PI程序,这个程序不知道能否实现自动调节,您能跟我说说电压闭环的增量式PI的工作原理吗?!Thanks.
下面是我的程序,期待您的回复,谢谢我的1083176055@qq.com。
unsigned int pwm, PWM_max=375,PWM_min=32;
float Vin,Vout,Vd=0,Vref=48,errv=0,errv_1=0;
////// PID运算 ///////
void pid_ctrl(void)
{ Vout=u1;//将采样值付给Vout,
errv=Vref-Vout;//电压误差计算
errv_1=errv; //将本次的值赋给下次用
// Vd+=(int)(0.007135*(errv-errv_1)+0.91475*errv);
Vd+=0.007135*(errv-errv_1)+0.91475*errv;//【Vd=Vd+0.921885*errv-0.007135errv_1】
if(Vd>=0.8)
pwm=PWM_max;
else
if(Vd<=0)
pwm=PWM_min;
else
pwm = (unsigned int)(Vd*469.0);
EPwm1Regs.CMPA.half.CMPA =pwm;
EPwm2Regs.CMPA.half.CMPA =pwm;
EPwm3Regs.CMPA.half.CMPA =pwm;