|
|
@@ -748,7 +748,7 @@ u16 mc_get_running_status2(void) {
|
|
|
static float _force_angle = 0.0f;
|
|
|
static int _force_wait = 2000;
|
|
|
/* 开环,强制给定电角度和DQ的电压 */
|
|
|
-void mc_force_run_open(s16 vd, s16 vq) {
|
|
|
+void mc_force_run_open(s16 vd, s16 vq, bool align) {
|
|
|
if (motor.b_start || motor.b_force_run) {
|
|
|
if (vd == 0 && vq == 0) {
|
|
|
PMSM_FOC_SetOpenVdq(0, 0);
|
|
|
@@ -782,8 +782,12 @@ void mc_force_run_open(s16 vd, s16 vq) {
|
|
|
pwm_enable_channel();
|
|
|
phase_current_calibrate_wait();
|
|
|
PMSM_FOC_Set_MotAngle(0);
|
|
|
- PMSM_FOC_SetOpenVdq((float)vd * 1.0f, 0);
|
|
|
- _force_wait = 2000;
|
|
|
+ PMSM_FOC_SetOpenVdq((float)vd, 0);
|
|
|
+ if (align) {
|
|
|
+ _force_wait = 2000 + 1;
|
|
|
+ }else {
|
|
|
+ _force_wait = 2000;
|
|
|
+ }
|
|
|
motor.b_force_run = true;
|
|
|
}
|
|
|
|
|
|
@@ -1346,7 +1350,7 @@ static void mc_process_epm_move(void) {
|
|
|
|
|
|
static bool mc_process_force_running(void) {
|
|
|
if (motor.b_calibrate || (motor.mode == CTRL_MODE_OPEN)) {
|
|
|
- if (motor.b_force_run) {
|
|
|
+ if (motor.b_force_run && _force_wait <= 2000) {
|
|
|
if (_force_wait > 0) {
|
|
|
--_force_wait;
|
|
|
}else {
|