Browse Source

【编译通过】增加第一次初始化时刀升到最高位置的逻辑。

master
Lizongdi 1 month ago
parent
commit
5627f9c2af
  1. 4
      diaoerqiege/BHBF_Robot_Lifting_Lug/.settings/language.settings.xml
  2. 29
      diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/FSM.c
  3. 5
      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 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.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" 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.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <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.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" 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.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

29
diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/FSM.c

@ -108,13 +108,25 @@ void Limit_Detection()
uint8_t Mode_Select_State = MANUAL_OPERATION; uint8_t Mode_Select_State = MANUAL_OPERATION;
uint8_t Mode_Init = 0;// 初始化时第一次升刀的流程
void Mode_Control() void Mode_Control()
{ {
Mode_Select_State = GV.PV.robot_operation_mode; if (0 == Mode_Init)
{
Mode_Select_State = -255;// 这里单纯是为了区分正常值,对无符号类型赋值为负会使其变为一个大值
}
else
{
Mode_Select_State = GV.PV.robot_operation_mode;
}
switch(Mode_Select_State) switch(Mode_Select_State)
{ {
case -255:
// 上电时刀具先回到最高位置
Automatic_Init();
break;
case MANUAL_OPERATION: case MANUAL_OPERATION:
// 机器人本体控制 // 机器人本体控制
Robot_Control(); Robot_Control();
@ -169,6 +181,13 @@ void IO_Control()
} }
void Automatic_Init()
{
CurrentMoveState = Move_HALT;
CurrentFrontEndState = Manual_UP_STATE;
StrongGrindingMachineCurrentState = STRONG_GRINDING_MACHINE_HALT_STATE;
}
#define RISE_KINFE_STATE -11 #define RISE_KINFE_STATE -11
#define FORWARD_STATE 11 #define FORWARD_STATE 11
#define BACKWARD_STATE 21 #define BACKWARD_STATE 21
@ -185,10 +204,10 @@ void Automatic_Laser_Scanning()
CurrentFrontEndState = HALT_STATE; CurrentFrontEndState = HALT_STATE;
knife_descent_height = 0; knife_descent_height = 0;
StrongGrindingMachineCurrentState = STRONG_GRINDING_MACHINE_HALT_STATE; //刀具不转动
if(GV.MK32_Key.CH7_SD == 1000) if(GV.MK32_Key.CH7_SD == 1000)
{ {
StrongGrindingMachineCurrentState = STRONG_GRINDING_MACHINE_HALT_STATE; //刀具不转动
int32_t a = GV.ZHR29_200_measure_results.laser_sensor_1_measure_distance; int32_t a = GV.ZHR29_200_measure_results.laser_sensor_1_measure_distance;
int32_t b = GV.ZHR29_200_measure_results.laser_sensor_2_measure_distance; int32_t b = GV.ZHR29_200_measure_results.laser_sensor_2_measure_distance;
int32_t c = GV.ZHR29_200_measure_results.laser_sensor_3_measure_distance; int32_t c = GV.ZHR29_200_measure_results.laser_sensor_3_measure_distance;
@ -245,7 +264,7 @@ void Automatic_Laser_Scanning()
ScanTimeCount = HAL_GetTick(); ScanTimeCount = HAL_GetTick();
ScanState = RISE_KINFE_STATE; ScanState = RISE_KINFE_STATE;
CurrentMoveState = Move_HALT; CurrentMoveState = Move_HALT;
CurrentFrontEndState = HALT_STATE; CurrentFrontEndState = HALT_STATE;
MaxLaserSensor = 10000;// 恢复非法值 MaxLaserSensor = 10000;// 恢复非法值
} }
else else
@ -253,7 +272,7 @@ void Automatic_Laser_Scanning()
ScanTimeCount = HAL_GetTick(); ScanTimeCount = HAL_GetTick();
ScanState = RISE_KINFE_STATE; ScanState = RISE_KINFE_STATE;
CurrentMoveState = Move_HALT; CurrentMoveState = Move_HALT;
CurrentFrontEndState = HALT_STATE; CurrentFrontEndState = HALT_STATE;
} }

5
diaoerqiege/BHBF_Robot_Lifting_Lug/Core/Src/robot_state.c

@ -236,6 +236,8 @@ int StrongSingleShotFlag = 0;
#define SAFE_MOTOR_COUNT (67*20000) // 电机脉冲安全保护,防止光电限位失效后导致的意外情况 #define SAFE_MOTOR_COUNT (67*20000) // 电机脉冲安全保护,防止光电限位失效后导致的意外情况
extern uint8_t Mode_Init;// 初始化时第一次升刀的流程
void Manual_Up_State_Do(void) void Manual_Up_State_Do(void)
{ {
int32_t SliderSpeed_PPS = SliderSpeed_mmps_2_pps(SliderSpeed); int32_t SliderSpeed_PPS = SliderSpeed_mmps_2_pps(SliderSpeed);
@ -253,6 +255,7 @@ void Manual_Up_State_Do(void)
{ {
GV.LS_FrontEnd_Motor.Target_Velcity = 0; GV.LS_FrontEnd_Motor.Target_Velcity = 0;
KinfePosition = GV.LS_FrontEnd_Motor.Real_Position; KinfePosition = GV.LS_FrontEnd_Motor.Real_Position;
Mode_Init = 1;// 表示自动初始化完成
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT) if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)
@ -305,6 +308,7 @@ void Manual_Low_Speed_Up_State_Do(void)
{ {
GV.LS_FrontEnd_Motor.Target_Velcity = 0; GV.LS_FrontEnd_Motor.Target_Velcity = 0;
KinfePosition = GV.LS_FrontEnd_Motor.Real_Position; KinfePosition = GV.LS_FrontEnd_Motor.Real_Position;
Mode_Init = 1;// 表示自动初始化完成
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT) if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)
@ -360,6 +364,7 @@ void Manual_step_Up_State_Do(void)
{ {
GV.LS_FrontEnd_Motor.Target_Velcity = 0; GV.LS_FrontEnd_Motor.Target_Velcity = 0;
KinfePosition = GV.LS_FrontEnd_Motor.Real_Position; KinfePosition = GV.LS_FrontEnd_Motor.Real_Position;
Mode_Init = 1;// 表示自动初始化完成
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT) if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)

Loading…
Cancel
Save