打印

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

[复制链接]
2345|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lrlhk0502|  楼主 | 2015-8-8 09:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
東南博士| | 2015-8-13 16:26 | 只看该作者
这个倒是不难做。
你是在做飞控之类的吗?
串级PID相关的吗?

使用特权

评论回复
板凳
東南博士| | 2015-8-13 16:27 | 只看该作者
给你一段代码吧:
------------------------------------------------------
串级PID
------------------------------------------------------
//****************姿态处理和PID*********************************************
float Out_PID_X=0,Last_Angle_gx=0;//外环PI输出量  上一次陀螺仪数据
float Out_XP=60,Out_XI=0.01,ERRORX_Out=0;//外环P  外环I  外环误差积分
float In_XP=0.5,In_XI=0.01,In_XD=10,ERRORX_In=0;//内环P  内环I   内环D  内环误差积分

float Out_PID_Y=0,Last_Angle_gy=0;
float Out_YP=60,Out_YI=0.01,ERRORY_Out=0;
float In_YP=0.5,In_YI=0.01,In_YD=10,ERRORY_In=0;

使用特权

评论回复
地板
東南博士| | 2015-8-13 16:28 | 只看该作者
以下内容在定时器中断里面实现:
------------------------------------------------------------
//**************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;

使用特权

评论回复
评分
参与人数 1威望 +8 收起 理由
zhangmangui + 8 很给力!
5
zhangmangui| | 2015-8-13 22:20 | 只看该作者
有时间讲讲串级PID

使用特权

评论回复
6
firstblood| | 2015-8-15 13:25 | 只看该作者
双闭环控制?这个有点高大上了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

7

帖子

0

粉丝