void PI() /* PI调节算法 */
{
{
ek=P-((float)adc1.Ch1Out/100);
if((ek<0.001)&&(ek>-0.001))
/* 偏差小于0.1则调整值为0 */
{
adjust=0;
}
else
{
uk=Kp*(ek-ek1)+Ki*ek;/* 否则计算控制增量 */
ek1=ek;
uk1=(signed int)uk;
if(uk>0)
{
if(uk-uk1>=0.5)
{
uk1=uk1+1;
}
}
if(uk<0)
{
if(uk1-uk>=0.5)
{
uk1=uk1-1;
}
}
adjust=uk1;
XPWM=XPWM+adjust;
}
// return;
}
//asm(" NOP "); /* 请将光标移到此处设置断点,并用debug->Animate监测数据 */
}
我这个PI调节的参数Kp为400 Ki为100。。有这么大不??我都不敢相信自己,,但是效果很好,,,,什么原因,,可以接受不
一周热门 更多>