Parcourir la source

处理前一次角度和当前角度跨2PI或者0

Signed-off-by: huhui <huhui@sharkgulf.com>
huhui il y a 3 ans
Parent
commit
0e02ee7971
1 fichiers modifiés avec 2 ajouts et 2 suppressions
  1. 2 2
      Applications/foc/core/smo_observer.c

+ 2 - 2
Applications/foc/core/smo_observer.c

@@ -81,11 +81,11 @@ static void smo_arctan(void) {
 	float prev_angle = smo.est_angle;
 	float prev_angle = smo.est_angle;
 	float comp_angle = 0.0f;
 	float comp_angle = 0.0f;
 	if (smo.dir_ccw) {
 	if (smo.dir_ccw) {
-		if (prev_angle > angle) {
+		if ((prev_angle > angle) && (prev_angle > M_PI && angle < M_PI)) {//wrapper
 			comp_angle = 2 * M_PI;
 			comp_angle = 2 * M_PI;
 		}
 		}
 	}else {
 	}else {
-		if (prev_angle < angle) {
+		if ((prev_angle < angle) && (prev_angle < M_PI && angle > M_PI)) {//wrapper
 			comp_angle = -2 * M_PI;
 			comp_angle = -2 * M_PI;
 		}
 		}
 	}
 	}