麻烦帮忙看下51做的PID调节,为什么反馈回来的有问题

2019-07-15 23:03发布

#include <REG51.H>#include <intrins.h>int uk=50;int ck=0;int r=300;int ek=0;int ek1=0;int ek2=0;int uk1=0;int kp=1;//0.125int ki=2;//0.25int kd=3;//0.375int duk=0; int contr_PID(void){         int uk_tmp=0;         ek=r-ck;if (0<=uk<=100){                                    duk=kp*(ek-ek1)>>3+ki*ek>>3+ kd*(ek-2*ek1+ek2)>>3;          uk_tmp=uk1+duk;         ek2=ek1;         uk1=uk_tmp;         ek1=ek;                                     if(0<=uk_tmp<=100)                                                        {                                                        uk=uk_tmp;                                                                                    }                                                                                             }         else{                   if(uk>100){uk=100;}                   if(uk<0){uk=0;}                   }                                                        return(uk); } 这里的反馈uk应该在0到100之间为什么会乱跳或者减除负值归零,如何调整麻烦指导下,谢谢了。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。