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中的例程,其中在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模块。