这些参数的初始化 pi参数初始化的问题

2020-02-09 09:34发布

unsigned int XPWM=0;
signed int adjust=0;       /* 调节器输出调整量 */
  float      V_REF=3.3;           
  float      Kp=100;          /* PI调节的比例常数 */
  float      Ti=0.005;        /* PI调节的积分常数 */
  float      T=0.001;         /* 周期,Ki=KpT/Ti=40*0.001/0.005=8 */                     
  float      Ki=8;
  float      ek=0;            /* 偏差e[k] */
  float      ek1=0;           /* 偏差e[k-1] */
  float      uk=0;            /* u[k] */
  float      uk1=0;           /* 对u[k]四舍五入取整 */
unsigned int k;
整流    13:57:33
这些参数的初始化
1.这个部分是写在程序的开头,,只初始化一次
2.写在PI子函数的开头,,每次都初始化。。

选哪个
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
3条回答
pyy1980
2020-02-09 12:15
void PI()                /* PI调节算法 */
{
  float V_REF=3.3;           
        Kp=100;          /* PI调节的比例常数 */
        Ti=0.005;        /* PI调节的积分常数 */
        T=0.001;         /* 周期,Ki=KpT/Ti=40*0.001/0.005=8 */                     
        Ki=8;
        ek=0;            /* 偏差e[k] */
        ek1=0;           /* 偏差e[k-1] */
        uk=0;            /* u[k] */
        uk1=0;           /* 对u[k]四舍五入取整 */
        adjust=0;        /* 调节器输出调整量 */
        XPWM=0;          /* 占空比调节 */

{  
  ek=V_REF-AD_SIG0;
  if(ek<0.1)             /* 偏差小于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函数这样写


主程序这样写,,每次进PI都初始化了这些参数是对的还是错的

一周热门 更多>