搜索
bottom↓
回复: 3

在线有个问题,,我浮点运算的PI程序,,电压是可以稳定但是总觉得不对一样

[复制链接]

出0入0汤圆

发表于 2010-11-22 10:45:38 | 显示全部楼层 |阅读模式
ek=1.5-(adc1.Ch1Out/100);

adc1.Ch1Out=288

这种搞法正常不??

闭环

哪个帮我做个PID程序,,,,

void PI()                /* PI调节算法 */
{


{  
  ek=1.5-(adc1.Ch1Out/100);
  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监测数据 */
}




void main(void)
{
   InitSysCtrl();
   
   DINT;

   InitPieCtrl();

   IER = 0x0000;
   IFR = 0x0000;

   InitPieVectTable();




   EALLOW;  // This is needed to write to EALLOW protected registers
   PieVectTable.EPWM1_INT = &EPWM1_Z_ISR;
   EDIS;    // This is needed to disable write to EALLOW protected registers



   IER |= M_INT1;
   IER |= M_INT3;

   PieCtrlRegs.PIECTRL.bit.ENPIE = 1;   // Enable the PIE block
   PieCtrlRegs.PIEIER9.bit.INTx1 =1;     // PIE Group 9, INT1
   PieCtrlRegs.PIEIER1.bit.INTx7 = 1;
   PieCtrlRegs.PIEIER5.bit.INTx1 = 1;
   PieCtrlRegs.PIEIER3.all = M_INT1;


   pwmgen.init(&pwmgen);
   EALLOW;
   SysCtrlRegs.PCLKCR0.bit.TBCLKSYNC = 1;
   EDIS;

    adc1.ChSelect = 0x3210;   // for DMC1500 and eZdsp2812/eZdsp2808 boards
        adc1.init(&adc1);


   EINT;   // Enable Global interrupt INTM
   ERTM;   // Enable Global realtime interrupt DBGM




        pwmgen.Close(&pwmgen);
        pwmgen.Open(&pwmgen);

        while(1)
        {

        PI();
        }
        
}         


interrupt void  EPWM1_Z_ISR(void)
{
        static int time_inc=0;
        pwmgen.MfuncC1 =XPWM;


        pwmgen.update(&pwmgen);





        time_inc++;
        if(time_inc&0x3)
        {
        goto exit;

        }
        else
        {
//        GpioDataRegs.GPACLEAR.bit.GPIO9=1;
        }

        adc1.read(&adc1);



exit:
        EPwm1Regs.ETCLR.bit.INT = 1;
        PieCtrlRegs.PIEACK.all = PIEACK_GROUP3;

}



这种程序有没有问题????帮我看下

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

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

出0入0汤圆

 楼主| 发表于 2010-11-22 10:46:20 | 显示全部楼层
整个程序如上,,为什么给定和反馈的 差别很大??奇怪,,是不是程序有问题

出0入0汤圆

 楼主| 发表于 2010-11-22 10:47:55 | 显示全部楼层
ek=1.5-(adc1.Ch1Out/100);

adc1.Ch1Out=288   这个是测量的结果

这种搞法正常不??

闭环

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-6-3 22:40

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

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