Browse Source

【编译通过】增加电机脉冲限位

master
Lizongdi 1 month ago
parent
commit
ecc2c6aa39
  1. 4
      diaoerqiege/BHBF_Robot_Lifting_Lug/.settings/language.settings.xml
  2. 32
      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="-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"> <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">
<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="-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"> <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">
<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>

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

@ -234,6 +234,8 @@ uint8_t Pin3 = -1; //下限位,为0表示限位触发
int32_t KinfePosition = 1000; // 初始化为一个不合理的大值,等于1000时显示为未标定 int32_t KinfePosition = 1000; // 初始化为一个不合理的大值,等于1000时显示为未标定
int StrongSingleShotFlag = 0; int StrongSingleShotFlag = 0;
#define SAFE_MOTOR_COUNT (67*20000) // 电机脉冲安全保护,防止光电限位失效后导致的意外情况
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);
@ -252,6 +254,11 @@ 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;
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)
{
GV.LS_FrontEnd_Motor.Target_Velcity = 0; // 电机脉冲数急停
}
} }
void Manual_Down_State_Do(void) void Manual_Down_State_Do(void)
@ -271,6 +278,11 @@ void Manual_Down_State_Do(void)
{ {
GV.LS_FrontEnd_Motor.Target_Velcity = 0; GV.LS_FrontEnd_Motor.Target_Velcity = 0;
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)
{
GV.LS_FrontEnd_Motor.Target_Velcity = 0; // 电机脉冲数急停
}
} }
// 定义前端升降电机速度,单位0.1mm/s // 定义前端升降电机速度,单位0.1mm/s
@ -294,6 +306,11 @@ 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;
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)
{
GV.LS_FrontEnd_Motor.Target_Velcity = 0; // 电机脉冲数急停
}
} }
void Manual_low_speed_Down_State_Do(void) void Manual_low_speed_Down_State_Do(void)
@ -313,6 +330,11 @@ void Manual_low_speed_Down_State_Do(void)
{ {
GV.LS_FrontEnd_Motor.Target_Velcity = 0; GV.LS_FrontEnd_Motor.Target_Velcity = 0;
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)
{
GV.LS_FrontEnd_Motor.Target_Velcity = 0; // 电机脉冲数急停
}
} }
#define STEP_LEN_COUNT 20000 // 位置环每20000个count对应1mm #define STEP_LEN_COUNT 20000 // 位置环每20000个count对应1mm
@ -339,6 +361,11 @@ 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;
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)
{
GV.LS_FrontEnd_Motor.Target_Velcity = 0; // 电机脉冲数急停
}
} }
void Manual_step_Down_State_Do(void) void Manual_step_Down_State_Do(void)
@ -362,6 +389,11 @@ void Manual_step_Down_State_Do(void)
{ {
GV.LS_FrontEnd_Motor.Target_Velcity = 0; GV.LS_FrontEnd_Motor.Target_Velcity = 0;
} }
if (GV.LS_FrontEnd_Motor.Real_Position - KinfePosition >= SAFE_MOTOR_COUNT)
{
GV.LS_FrontEnd_Motor.Target_Velcity = 0; // 电机脉冲数急停
}
} }
void FrontEnd_Halt_State_Do(void) void FrontEnd_Halt_State_Do(void)

Loading…
Cancel
Save