各位大神,STO_PLL_CalcAvrgMecSpeed01Hz函数中以下代码的理论依据是什么?资料中哪儿可以找到?
/*Bemf Consistency Check algorithm*/ if ( pHandle->EnableDualCheck == true ) /*do algorithm if it's enabled*/
{
wAux = ( wAux < 0 ? ( -wAux ) : ( wAux ) ); /* wAux abs value */
if ( wAux < ( int32_t )( pHandle->MaxAppPosi
tiveMecSpeed01Hz ) )
{
/*Computation of Observed back-emf*/
wObsBemf = ( int32_t )( pHandle->hBemf_alfa_est );
wObsBemfSq = wObsBemf * wObsBemf;
wObsBemf = ( int32_t )( pHandle->hBemf_beta_est );
wObsBemfSq += wObsBemf * wObsBemf;
/*Computation of Estimated back-emf*/
wEstBemf = ( wAux * 32767 ) / ( int16_t )( pHandle->_Super.hMaxReliableMecSpeed01Hz );
wEstBemfSq = ( wEstBemf * ( int32_t )( pHandle->BemfConsistencyGain ) ) / 64;
wEstBemfSq *= wEstBemf;
/*Computation of threshold*/
wEstBemfSqLo = wEstBemfSq -
( wEstBemfSq / 64 ) * ( int32_t )( pHandle->BemfConsistencyCheck );
/*Check*/
if ( wObsBemfSq > wEstBemfSqLo )
{
bIs_Bemf_Consistent = true;
}
}
pHandle->IsBemfConsistent = bIs_Bemf_Consistent;
pHandle->Obs_Bemf_Level = wObsBemfSq;
pHandle->Est_Bemf_Level = wEstBemfSq;
}
else
{
bIs_Bemf_Consistent = true;
}