TI中文支持网
TI专业的中文技术问题搜集分享网站

2812的PI程序

您好:

       我的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;

赞(0)
未经允许不得转载:TI中文支持网 » 2812的PI程序
分享到: 更多 (0)