搜索
bottom↓
回复: 1

在线等大家讨论一个PI问题

[复制链接]

出0入0汤圆

发表于 2010-11-18 13:22:08 | 显示全部楼层 |阅读模式
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-adc1.Ch1Out;
  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监测数据 */
}



        while(1)
        {

        PI();
        }


我主程序中只做PI 运算,,那这些
  ek=0;            /* 偏差e[k] */
   ek1=0;           /* 偏差e[k-1] */
   adjust=0;        /* 调节器输出调整量 */
   XPWM=0;          /* 占空比调节 */

那这几个变量的的初始化是
1.在PI子函数中,,每次PI运算都要初始化
2.放在整个大程序的最前面,,,只初始化一次,,哪个

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-11-18 13:33:30 | 显示全部楼层
应该设置成全局变量

或者局部静态变量
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 22:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表