This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

F28335-Hvpm_sensorless中的ramp control(rc)、ramp generator(rg)的调试

Other Parts Discussed in Thread: CONTROLSUITE

我最近在学习F28335-Hvpm_sensorless中的例程,其中在level1中的有两个模块ramp control 和ramp generator,他们的作用是什么,在调试过程中改动参数后,该怎样得到他们的输出波形。

  • 在controlsuite的根目录以下位置有user guide。

    C:\TI\controlSUITE\libs\app_libs\motor_control\math_blocks\v4.2\~Docs

    其中第RG模块在第94页,RC模块在98页。

    安装Level1的框图,Level1是开环模式下,仅仅通过一个给定的SpreedRef来产生一个PWM占空比,改变SpeedRef的就可以改变转速。

    从框图的逻辑看SpeedRef首先是赋值给了RC模块的TargetValue,而RC模块的源码(如下),目的就是把SetppointValue在每次中断运行marco的时候,到固定判断次数后加上0.0000305,这样累积累积,直到他等于SpeedRef,然后再减去0.0000305,从而产生阶梯波,作为RG模块的输入RG模块,

    #define RC_MACRO(v) \
    v.Tmp = v.TargetValue - v.SetpointValue; \
    /* 0.0000305 is resolution of Q15 */ \
    if (_IQabs(v.Tmp) >= _IQ(0.0000305)) \
    { \
    v.RampDelayCount++ ; \
    if (v.RampDelayCount >= v.RampDelayMax) \
    { \
    if (v.TargetValue >= v.SetpointValue) \
    v.SetpointValue += _IQ(0.0000305); \
    else \
    v.SetpointValue -= _IQ(0.0000305); \
    \
    v.SetpointValue=_IQsat(v.SetpointValue,v.RampHighLimit,v.RampLowLimit); \
    v.RampDelayCount = 0; \
    \
    } \
    } \
    else v.EqualFlag = 0x7FFFFFFF;

    对于RG模块:源码如下:

    v.Angle += _IQmpy(v.StepAngleMax,v.Freq); \
    \
    /* Saturate the angle rate within (-1,1) */ \
    if (v.Angle>_IQ(1.0)) \
    v.Angle -= _IQ(1.0); \
    else if (v.Angle<_IQ(-1.0)) \
    v.Angle += _IQ(1.0); \
    v.Out=v.Angle;

    这个模块的作用是把刚刚产生的阶梯方波变成反park的输入,反park的输入应该是一个正弦信号,所以需要将ref与角度相乘,产生一个sin值。

    然后输入到反park模块。

  • 应该是反park的输出是正弦信号对吗?我们为了得到正弦信号,用这个模块产生的阶梯方波是作为静止坐标系和旋转坐标系之间的角度值来参与运算的吗