Browse Source

【调通打标】解决步进时单步标志位失效问题。

master
Lizongdi 1 month ago
parent
commit
f38b9ec106
  1. 4
      diaoerqiege/BHBF_Robot_Lifting_Lug/.settings/language.settings.xml
  2. 18
      diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/FSM.c
  3. 23
      diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/robot_state.c

4
diaoerqiege/BHBF_Robot_Lifting_Lug/.settings/language.settings.xml

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-63235014752314356" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1256539702914033922" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-63235014752314356" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" console="false" env-hash="-1256539702914033922" id="com.st.stm32cube.ide.mcu.toolchain.armnone.setup.CrossBuiltinSpecsDetector" keep-relative-paths="false" name="MCU ARM GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

18
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;
}
}

23
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)

Loading…
Cancel
Save