pyy1980 发表于 2010-11-22 10:45:38

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

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 voidEPWM1_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;

}



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

pyy1980 发表于 2010-11-22 10:46:20

整个程序如上,,为什么给定和反馈的 差别很大??奇怪,,是不是程序有问题

pyy1980 发表于 2010-11-22 10:47:55

ek=1.5-(adc1.Ch1Out/100);

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

这种搞法正常不??

闭环

dongfangruxiao 发表于 2011-3-19 00:07:05

参考TI例程。
页: [1]
查看完整版本: 在线有个问题,,我浮点运算的PI程序,,电压是可以稳定但是总觉得不对一样