欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

外置式PID程序模板

作者:藍(lán)夢(mèng)荒   來(lái)源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2013年12月08日   【字體:

 

外置式PID模板

#define MuBiaoCS 0  //目標(biāo)常數(shù)
#define CHang_aCS  0  //比例常數(shù)
#define CHang_bCS  0  //積分常數(shù)
#define CHang_cCS  0  //微分常數(shù)
/*******************************************************************************************/
struct P_I_D  {
    int MuBiao; //設(shè)定目標(biāo) Desired Value
    double CHang_a; //比例常數(shù) Proportional Const
    double CHang_b; //積分常數(shù) Integral Const
    double CHang_c; //微分常數(shù) Derivative Const
    int Error1; //Error[-1]
    int Error2; //Error[-2]
   }Pidn;
struct P_I_D *PID=&Pidn;
/********************************************************************************************/
void Pidinit(void)    //pid初始化
{
 PID->MuBiao=MuBiaoCS;
 PID->CHang_a=CHang_aCS;
 PID->CHang_b=CHang_bCS;
 PID->CHang_c=CHang_cCS;
 PID->Error1=0;
 PID->Error2=0;
}

int PID_WZ(int SRuu)       //位置式PID
{
 int Error0,SCuu;
 Error0 = PID->MuBiao - SRuu;
 PID->Error1+=Error0;
 SCuu = PID->CHang_a*Error0    //比例項(xiàng)
   + PID->CHang_b*PID->Error1  //積分項(xiàng)
   + PID->CHang_c*(Error0-PID->Error2);//微分項(xiàng)
 PID->Error2=Error0;
 return     SCuu;
}
void main(void)
{
 Pidinit();
}

增量式PID模板

#define MuBiaoCS 0  //目標(biāo)常數(shù)
#define CHang_aCS  0  //比例常數(shù)
#define CHang_bCS  0  //積分常數(shù)
#define CHang_cCS  0  //微分常數(shù)
/*******************************************************************************************/
struct P_I_D  {
    int MuBiao; //設(shè)定目標(biāo) Desired Value
    double CHang_a; //比例常數(shù) Proportional Const
    double CHang_b; //積分常數(shù) Integral Const
    double CHang_c; //微分常數(shù) Derivative Const
    int Error1; //Error[-1]
    int Error2; //Error[-2]
   }Pidn;
struct P_I_D *PID=&Pidn;
/********************************************************************************************/
void Pidinit(void)    //pid初始化
{
 PID->MuBiao=MuBiaoCS;
 PID->CHang_a=CHang_aCS;
 PID->CHang_b=CHang_bCS;
 PID->CHang_c=CHang_cCS;
 PID->Error1=0;
 PID->Error2=0;
}

int PID_WC(int SRuu)         //增量式PID
{
 int Error0,SCuu;
 Error0 = PID->MuBiao - SRuu;    //偏差
 SCuu = PID->CHang_a*Error0    //Error項(xiàng)
   - PID->CHang_b*PID->Error1  //Error1項(xiàng)
   + PID->CHang_c*PID->Error2;     //Error2項(xiàng)
 PID->Error2=PID->Error1;     //將上次偏差存PID->Error2
 PID->Error1=Error0;       //將這次偏差存PID->Error1
 return SCuu;
}

void main(void)
{
 Pidinit();
}
 

關(guān)閉窗口

相關(guān)文章