From f38b9ec1061f840ef11c92bcbee04a6790c62b7e Mon Sep 17 00:00:00 2001 From: Lizongdi <1210855344@qq.com> Date: Thu, 7 May 2026 14:21:21 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90=E8=B0=83=E9=80=9A=E6=89=93=E6=A0=87?= =?UTF-8?q?=E3=80=91=E8=A7=A3=E5=86=B3=E6=AD=A5=E8=BF=9B=E6=97=B6=E5=8D=95?= =?UTF-8?q?=E6=AD=A5=E6=A0=87=E5=BF=97=E4=BD=8D=E5=A4=B1=E6=95=88=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.settings/language.settings.xml | 4 ++-- .../BHBF_Robot_Lifting_Lug/Core/Src/FSM.c | 18 ++++----------- .../Core/Src/robot_state.c | 23 ++++++++++++++----- 3 files changed, 23 insertions(+), 22 deletions(-) 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)