关于PARK变换,求出id,iq,我下载的代码如下:(无法发送图片,只能复制)
////===求Idq,前俩实参最大正负65535(可同时最大),否则计算溢出 ========
// *_I_alpha, 输入 I_alpha 返回 Id
// *_I_beta, 输入 I_beta 返回 Iq
// _q_Angle q 轴角度,[0 ~ 65536)表示[0~360)度
void Static_to_Dynamic(int32_t *_I_alpha, int32_t *_I_beta, int32_t _q_Angle)
{
int32_t C11, C21 ;
int32_t Ia = *_I_alpha, Ib = *_I_beta ;
C11 = _q_Angle ;
C21 = Get_cos(&C11) ;
// 65535*0x8000+16384= 0x7FFFC000
*_I_alpha = ((Ia*C11+16384)>>15)+((-Ib*C21+16384)>>15); // 65536 * 0x8000 = 0x80000000 溢出
*_I_beta = ((Ia*C21+16384)>>15)+ ((Ib*C11+16384)>>15); //-65536 *(-0x8000) = 0x80000000 溢出
} //-65535 *(-0x8000) = 0x7FFF8000
上面的的两个等式*_I_alpha和 *_I_beta =,和公式不一致,楼主能给讲讲吗?谢谢@ |