您好:
我的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;
Jay:
你好。
增量式的PI算法中,Up=0,并不代表P没有作用啊。最后的输出是要加上前一次的Up的,当前的Up=0只是代表P作用的输出不变而已,P还是在起作用的。
您好:
我的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;
xiaoli zhang:
回复 Jay:
你好,那也就是说我这个是没有问题的…..然后有一句题外话:你们是不是都是TI的工程师…..
您好:
我的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;
Jay:
回复 xiaoli zhang:
你好。在这里回答问题应该都是我们公司的工程师。
欢迎来社区提问。
您好:
我的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;
xiaoli zhang:
回复 Jay:
恩….谢谢。最近用CCS调程序的时候发现两个个问题:
1.在watch window 中观察一个变量的数值,refresh一次程序似乎就会重新运行,请问这个refresh是如何影响程序的运行的;
2.CCS3.3我有时会打不开,右下角的标志会变灰,然后电脑重启又可以打开了,然后就是打开的速度没有以前快了,这个会是哪里的问题。
谢谢!
您好:
我的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;
ming zhao1:
回复 Jay:
您好,我的增量式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;