08开源这个PARK变换是不是搞错了。
/*******************************************************************************
函数名称: stru_CurrVoctor Park(stru_CurrVoctor Curr_Input, s16 Theta, stru_FOC_CurrLoopDef *this)
功能描述: Park变换
输入参数: 无
返 回 值: 无
多任务访问: 该函数涉及全局表项操作,不可重入
其它说明:
修改日期 版本号 修改人 修改内容
-----------------------------------------------------------------------------
2022/06/15 V1.0 LiuH 创建
*******************************************************************************/
stru_CurrVoctor Park(stru_CurrVoctor Curr_Input, s16 Theta, stru_FOC_CurrLoopDef *this)
{
stru_CurrVoctor Curr_Output = { 0, 0 };
s16 qId_1, qId_2;
s16 qIq_1, qIq_2;
this->struTrigSinCos = Trig_Functions(Theta);
qIq_1 = (s32) Curr_Input.qI_Value1 * this->struTrigSinCos.hCos >> 15;
qIq_2 = (s32) Curr_Input.qI_Value2 * this->struTrigSinCos.hSin >> 15;
//Iq component in Q1.15 Format iq=-iacos@+ibsin@
Curr_Output.qI_Value1 = ((qIq_2) - (qIq_1)); //不是反过吗?Curr_Output.qI_Component1 = ((qIq_1)-(qIq_2)); //Iq=Ialpha*cosθ- Ibeta*sinθ
qId_1 = (s32) Curr_Input.qI_Value1 * this->struTrigSinCos.hSin >> 15;
qId_2 = (s32) Curr_Input.qI_Value2 * this->struTrigSinCos.hCos >> 15;
//Id component in Q1.15 Format id=iasin@+ibcos@
Curr_Output.qI_Value2 = ((qId_1) + (qId_2));
return (Curr_Output);
}
|