Quantcast
Channel: Hercules™︎ 安全微控制器论坛 - 最近的话题
Viewing all articles
Browse latest Browse all 775

Motorware(v1.0.3.03)中rampgen.h文件里的RAMPGEN_run()函数求解

$
0
0
inline void RAMPGEN_run(RAMPGEN_Handle rampgenHandle,float32_t *pOutValue)
{
  RAMPGEN_Obj *rampgen = (RAMPGEN_Obj *)rampgenHandle;
  float32_t Output;
  //rampgen->Freq = Freq;
  //rampgen->Gain = Gain;
  //rampgen->Offset = Offset;

  rampgen->Angle += (rampgen->StepAngleMax * rampgen->Freq); //Compute the angle rate StepAngleMax = 0.005

  if (rampgen->Angle>(1.0) )   //Saturate the angle rate within (-1,1)
    {
      rampgen->Angle -= (1.0);
    }
  else if (rampgen->Angle< (-1.0))
    {
      rampgen->Angle += (1.0);
    }

  Output = (rampgen->Angle * rampgen->Gain) + rampgen->Offset; // Compute the ramp output

  if (Output > (1.0))         // Saturate the ramp output within (-1,1)
    {
      Output -= (1.0);
      rampgen->rampExecutionCount++;
    }
  else if (Output < (-1.0))
    {
      Output += (1.0);
      rampgen->rampExecutionCount++;
    }


  *pOutValue = Output;

  return;
  
}

我想请问

(1)这个StepAngleMax * Freq得出的为什么就是步进的角度了

(2)还有Freq为何是SpedRef这个值

(3)函数名Rampgen_run()中的Ramp斜坡体现在哪里

(4)Output = (rampgen->Angle * rampgen->Gain) + rampgen->Offset这个算式在完成什么作用呢


Viewing all articles
Browse latest Browse all 775

Trending Articles