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)