diff --git a/diaoerqiege/BHBF_Robot_Lifting_Lug/.settings/language.settings.xml b/diaoerqiege/BHBF_Robot_Lifting_Lug/.settings/language.settings.xml index 15fa460..07f8dd5 100644 --- a/diaoerqiege/BHBF_Robot_Lifting_Lug/.settings/language.settings.xml +++ b/diaoerqiege/BHBF_Robot_Lifting_Lug/.settings/language.settings.xml @@ -5,7 +5,7 @@ - + @@ -16,7 +16,7 @@ - + diff --git a/diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/FSM.c b/diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/FSM.c index 4bb3e6a..4cfdfbe 100644 --- a/diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/FSM.c +++ b/diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/FSM.c @@ -340,10 +340,10 @@ int Knife_Detection(void) } extern int32_t KinfePosition; +extern int StrongSingleShotFlag; void Frontend_Control() { - static int SingleShotFlag = 0; int angle; angle = atan2(GV.MK32_Key.CH1_RY_V, GV.MK32_Key.CH0_RY_H) * 180 / M_PI; @@ -420,12 +420,7 @@ void Frontend_Control() // 前进 if((angle >= 45) && (angle <= 135)) { - if (SingleShotFlag == 0) - { - CurrentFrontEndState = MANUAL_STEP_UP_STATE; - KinfePosition -= GV.PV.step_len; - SingleShotFlag = 1; - } + CurrentFrontEndState = MANUAL_STEP_UP_STATE; return; } else if(P_MK32->CH3_LY_H > 100) @@ -440,12 +435,7 @@ void Frontend_Control() // 后退 else if((angle >= -135) && (angle < -45)) { - if (SingleShotFlag == 0) - { - CurrentFrontEndState = MANUAL_STEP_DOWN_STATE; - KinfePosition += GV.PV.step_len; - SingleShotFlag = 1; - } + CurrentFrontEndState = MANUAL_STEP_DOWN_STATE; return; } // 左转 @@ -456,7 +446,7 @@ void Frontend_Control() } else { CurrentFrontEndState = HALT_STATE; - SingleShotFlag = 0; + StrongSingleShotFlag = 0; } } diff --git a/diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/robot_state.c b/diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/robot_state.c index 288a13a..1979377 100644 --- a/diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/robot_state.c +++ b/diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/robot_state.c @@ -232,6 +232,7 @@ uint8_t Pin2 = -1; //上限位,为0表示限位触发 uint8_t Pin3 = -1; //下限位,为0表示限位触发 int32_t KinfePosition = 1000; // 初始化为一个不合理的大值,等于1000时显示为未标定 +int StrongSingleShotFlag = 0; void Manual_Up_State_Do(void) { @@ -334,9 +335,14 @@ void Manual_low_speed_Down_State_Do(void) void Manual_step_Up_State_Do(void) { - int32_t SliderSpeed_PPS = SliderSpeed_mmps_2_pps(leisai_low_speed); - GV.LS_FrontEnd_Motor.Target_Position = GV.LS_FrontEnd_Motor.Real_Position - (GV.PV.step_len * STEP_LEN_COUNT); - GV.LS_FrontEnd_Motor.Target_Velcity = SliderSpeed_PPS; + if (StrongSingleShotFlag == 0) + { + int32_t SliderSpeed_PPS = SliderSpeed_mmps_2_pps(leisai_low_speed); + GV.LS_FrontEnd_Motor.Target_Position = GV.LS_FrontEnd_Motor.Real_Position - (GV.PV.step_len * STEP_LEN_COUNT); + GV.LS_FrontEnd_Motor.Target_Velcity = SliderSpeed_PPS; + KinfePosition -= GV.PV.step_len; + StrongSingleShotFlag = 1; + } /*if((GV.ZHR29_200_measure_results.laser_sensor_1_measure_distance >= up_limit) || (GV.ZHR29_200_measure_results.laser_sensor_2_measure_distance >= up_limit) @@ -354,9 +360,14 @@ void Manual_step_Up_State_Do(void) void Manual_step_Down_State_Do(void) { - int32_t SliderSpeed_PPS = SliderSpeed_mmps_2_pps(leisai_low_speed); - GV.LS_FrontEnd_Motor.Target_Position = GV.LS_FrontEnd_Motor.Real_Position + (GV.PV.step_len * STEP_LEN_COUNT); - GV.LS_FrontEnd_Motor.Target_Velcity = SliderSpeed_PPS; + if (StrongSingleShotFlag == 0) + { + int32_t SliderSpeed_PPS = SliderSpeed_mmps_2_pps(leisai_low_speed); + GV.LS_FrontEnd_Motor.Target_Position = GV.LS_FrontEnd_Motor.Real_Position + (GV.PV.step_len * STEP_LEN_COUNT); + GV.LS_FrontEnd_Motor.Target_Velcity = SliderSpeed_PPS; + KinfePosition += GV.PV.step_len; + StrongSingleShotFlag = 1; + } /*if((GV.ZHR29_200_measure_results.laser_sensor_1_measure_distance <= down_limit) || (GV.ZHR29_200_measure_results.laser_sensor_2_measure_distance <= down_limit)