请问谁给提供一段关于PID的双闭环控制代码参考?

2019-07-26 14:45发布

小弟,新手,目前正在用TI的DSP2812,目前正在多有刷电机控制,求大侠给个转速,电流双闭环的PID算法代码作参考。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
東南博士
2019-07-26 20:34
以下内容在定时器中断里面实现:
------------------------------------------------------------
//**************X轴指向***********************************************************
        FR1=((float)RxBuf[1]-128)/10; //char类型转存为float以便除法运算
       
        Ax=Angle-FR1;      //角度控制量加载至角度
       
        if(YM>20)
        {
  ERRORX_Out+=Ax;//外环积分(油门小于某个值时不积分)
        }
        else
        {
                ERRORX_Out=0; //油门小于定值时清除积分值
        }
        if(ERRORX_Out>500){ERRORX_Out=500;}
        else if(ERRORX_Out<-500){ERRORX_Out=-500;}//积分限幅
       
        Out_PID_X=Ax*Out_XP+ERRORX_Out*Out_XI;//外环PI
       
        if(YM>20)
        {
  ERRORX_In+=(Angle_gy-Out_PID_X);  //内环积分(油门小于某个值时不积分)
        }       
  else
        {
                ERRORX_In=0; //油门小于定值时清除积分值
        }       
        if(ERRORX_In>500){ERRORX_In=500;}
  else if(ERRORX_In<-500){ERRORX_In=-500;}//积分限幅
       
        PID_x=(Angle_gy+Out_PID_X)*In_XP+ERRORX_In*In_XI+(Angle_gy-Last_Angle_gy)*In_XD;//内环PID
       
  if(PID_x>1000){PID_x=1000;}  //输出量限幅
        if(PID_x<-1000){PID_x=-1000;}
       
        speed0=0-PID_x,speed2=0+PID_x;

一周热门 更多>