#define USER_PWM_FREQ_kHz (20.0)
#define USER_NUM_PWM_TICKS_PER_ISR_TICK (1)
#define USER_NUM_ISR_TICKS_PER_CTRL_TICK (1)
#define USER_NUM_CTRL_TICKS_PER_CURRENT_TICK (1)
#define USER_NUM_CTRL_TICKS_PER_EST_TICK (2)
通过修改USER_NUM_CTRL_TICKS_PER_EST_TICK 为2,对观测器设置2分频后, EST_run(obj->estHandle,CTRL_getIab_in_addr(handle),CTRL_getVab_in_addr(handle),
pAdcData->dcBus,TRAJ_getIntValue(obj->trajHandle_spd));函数由于并没有TICKS判断代码,因此该函数从逻辑上看仍然是每个CTRL_TICK执行一次。
另外,观测器2分频后,angleComp_pu = CTRL_angleDelayComp(handle, angle_pu);函数没有分频,仍然是每个CTRL_TICK执行一次,但angleCompFactor的计算结果由1.5变为了2.5。_iq angleCompFactor = _IQ(1.0 + (float_t)USER_NUM_PWM_TICKS_PER_ISR_TICK * (float_t)USER_NUM_ISR_TICKS_PER_CTRL_TICK * ((float_t)USER_NUM_CTRL_TICKS_PER_EST_TICK – 0.5));
请问:
1)EST_run()是通过函数内部逻辑实现分频的吗?如果是这样的话,2分频后,EST_run()连续2次返回的角度是一样的吗?
2)为什么观测器2分频后,CTRL_angleDelayComp()函数进行角度补偿时,angleCompFactor需要由1.5变为了2.5?
3)在PWM频率为20KHz的条件下,需要控制最高电流频率2000Hz电机,观测器2分频后只有10KHz,不能满足10倍于电机电流频率的要求,但电流控制仍是20KHz,可以满足10倍的要求,请问如果实际项目中采用这样的配置合理吗?
Annie Liu:
为更加有效地解决您的问题,我们建议您将问题发布在E2E英文技术论坛上https://e2e.ti.com/support/microcontrollers/c2000/f/171,将由资深的工程师为您提供帮助。我们的E2E英文社区有TI专家进行回复,并得到全球各地工程师的支持,分享他们的知识和经验。