2024年3月24日发(作者:)
rmp_cntl模块用于斜坡激励,让速度信号的变换以斜坡的方式增加或减少。
任意给定一个设定值Setpoint_Value,使其梯形的跟踪目标值Target_Value
宏模块根据input TargetValue的值与输出值SetpointValue做差运算并取绝对值,
如果值小于解析度,则让EqualFlag = 0x7FFFFFFF,标志输出已经逼近目标值; 只要差值
还大于解析度0.0000305(q15),就让RampDelayCount计数+1,每隔RampDelayMax
个计数,输出值SetpointValue向着目标值TargetValue靠近一个解析度。(同时保证
SetpointValue不超越上下限,若超越,则取边界值,这时候永远不能完成对目标值的逼
近,所以目标值首先一定不能超越上下界限)。
实例中,0.5的目标值,需要0.5/0.0000305 = 16393次逼近(即调用该宏
16393*RampDelayMax 次),SetpointValue才约等于目标值。
直接效果:每执行该宏RampDelayMax次,输出值向目标值逼近一个解析度。
BLDCPWM_MACRO(v) 宏的理解
#define BLDCPWM_MACRO(v) /*向上计数高有效,时钟为SY
Tmp = (int32)Max*(int32)eriod; /* Q15 = Q0xQ15
Period = (int16)(Tmp>>15); /* Q15 -> Q0 (Period)
if (ive==1)
GPR0_BLDC_PWM = 0x7FFF - nc;
/* PWM active high
/* 从0x7FFF的值为32768就
else if (ive==0)
GPR0_BLDC_PWM = nc;
/* PWM active low
Tmp = (int32)Period*(int32)GPR0_BLDC_PWM;
/* Q15 = Q0xQ15
首先对程序中出现的变量用途做出解释:PeriodMax 最大周期值(Q0格式),
MfuncPeriod周期值系数(其实可以不要,格式实质就是0~1),Tmp=最大周期值*系
数(Q15格式),Period(Q0格式),nc占空比(Q15格式),。
//为了提高精确性,占空比的输入采取Q15的格式,但给
的又需要Q0格式,Tmp =
(int32)Period*(int32)GPR0_BLDC_PWM; 其中 Period为周期值(已经变味Q0格式),
GPR0_BLDC_PWM为占空比(为Q15格式)eriod为变量,可以调节周期值得
大小,而本题中0x7FFF(Q15(1)),相当于周期值没变。


发布评论