本帖最后由 Angus 于 2024-9-15 16:46 编辑
为简化代码逻辑,无论电机是转是停,都会估算角度并做SVPWM 计算,只是停转时关了功率管,起转时不用估算的角度(因角度还不准确)
状态机变量Motor_Status 的不同值,标识电机停转、起转、同步,等等各个状态,控制代码的执行分支。
无论电机在转、还是停,函数M451_FOC_Rekon() 每个PWM 周期都在执行完成以下三件事:
1>,更新角度偏差Theta_e
2>,估算磁体角度Estimation_Q_Position, 并计算出角度增量做函数返回值
3>,初步判断估算是否收敛:角度偏差(PLL的输入)Theta_e 若连续多次较小,就认为角度已收敛,变量Position_Explicit 写成非0值;若角度偏差较大就 Motor_Status &= ~0x30 清零 bit4/5
起转时,何时切同步转动,除了估算角度收敛之外,一般还有其它条件,比如转速超过某个最小值,已转过一定角度等等。
|