|
@@ -202,6 +202,16 @@ void spi_voResolver(const SPI_RESOLVER_COEF *coef, SPI_RESOLVER_OUT *out)
|
|
|
{
|
|
|
swThetaErrPu = (SWORD)(swThetaErrPu - cof_sl360DegreePu);
|
|
|
}
|
|
|
+
|
|
|
+ //limit max value,max(RPM)=6000(max(swSpdFbkPu)=32767),max(thetaErrPu) = 32767<<10/DIFF_COEF_TBC = 2867
|
|
|
+ if(swThetaErrPu > 2867)
|
|
|
+ {
|
|
|
+ swThetaErrPu = 2867;
|
|
|
+ }
|
|
|
+ else if(swThetaErrPu < -2867)
|
|
|
+ {
|
|
|
+ swThetaErrPu = -2867;
|
|
|
+ }
|
|
|
swSpdTmpPu = (SWORD)(((SLONG)swThetaErrPu * DIFF_COEF_TBC) >> 10); // Q15
|
|
|
|
|
|
/* Judge the correctness of spi position*/
|