添加单发限位函数,但并未启用

This commit is contained in:
2026-03-24 15:06:41 +08:00
parent cd653a5c1f
commit dbac677902

View File

@@ -26,12 +26,12 @@ KFP kfp_PITCH={0.02,0,0,0,0.01,0.543};//卡尔曼滤波器结构体
uint8_t Gimbal_FrictionWheelFlag;//云台小陀螺标志位,云台开摩擦轮标志位 uint8_t Gimbal_FrictionWheelFlag;//云台小陀螺标志位,云台开摩擦轮标志位
uint8_t Fire_Flag=0;//开火指示位,用于单发限位 bool Fire_Flag=0;//开火指示位,用于单发限位
PID_PositionInitTypedef Gimbal_YawAnglePositionPID,Gimbal_YawAngleSpeedPID;//Yaw轴GM6020电机PID PID_PositionInitTypedef Gimbal_YawAnglePositionPID,Gimbal_YawAngleSpeedPID;//Yaw轴GM6020电机PID
PID_PositionInitTypedef Gimbal_PitchAnglePositionPID,Gimbal_PitchAngleSpeedPID;//Pitch轴GM6020电机PID PID_PositionInitTypedef Gimbal_PitchAnglePositionPID,Gimbal_PitchAngleSpeedPID;//Pitch轴GM6020电机PID
PID_PositionInitTypedef Gimbal_L2_FrictionWheelPID,Gimbal_R2_FrictionWheelPID,Gimbal_L1_FrictionWheelPID,Gimbal_R1_FrictionWheelPID;//摩擦轮转速PID PID_PositionInitTypedef Gimbal_L2_FrictionWheelPID,Gimbal_R2_FrictionWheelPID,Gimbal_L1_FrictionWheelPID,Gimbal_R1_FrictionWheelPID;//摩擦轮转速PID
PID_PositionInitTypedef Gimbal_RammerSpinSpeedPID;//拨弹盘旋转PID PID_PositionInitTypedef Gimbal_RammerSpinPositionPID;//拨弹盘旋转PID
/* /*
*函数简介:云台初始化 *函数简介:云台初始化
@@ -97,10 +97,10 @@ void Gimbal_Init(void)
PID_PositionSetEkRange(&Gimbal_R2_FrictionWheelPID,-1,1); PID_PositionSetEkRange(&Gimbal_R2_FrictionWheelPID,-1,1);
PID_PositionSetOUTRange(&Gimbal_R2_FrictionWheelPID,-15000,15000); PID_PositionSetOUTRange(&Gimbal_R2_FrictionWheelPID,-15000,15000);
PID_PositionStructureInit(&Gimbal_RammerSpinSpeedPID,Gimbal_RammerSpeed);//拨弹盘 PID_PositionStructureInit(&Gimbal_RammerSpinPositionPID,Gimbal_RammerSpeed);//拨弹盘
PID_PositionSetParameter(&Gimbal_RammerSpinSpeedPID,50,1,0); PID_PositionSetParameter(&Gimbal_RammerSpinPositionPID,50,50,0);
PID_PositionSetEkRange(&Gimbal_RammerSpinSpeedPID,-1,1); PID_PositionSetEkRange(&Gimbal_RammerSpinPositionPID,-20,20);
PID_PositionSetOUTRange(&Gimbal_RammerSpinSpeedPID,-2000,2000); PID_PositionSetOUTRange(&Gimbal_RammerSpinPositionPID,-2000,2000);
@@ -123,7 +123,7 @@ void Gimbal_CleanPID(void)
PID_PositionClean(&Gimbal_R1_FrictionWheelPID); PID_PositionClean(&Gimbal_R1_FrictionWheelPID);
PID_PositionClean(&Gimbal_L2_FrictionWheelPID); PID_PositionClean(&Gimbal_L2_FrictionWheelPID);
PID_PositionClean(&Gimbal_R2_FrictionWheelPID); PID_PositionClean(&Gimbal_R2_FrictionWheelPID);
PID_PositionClean(&Gimbal_RammerSpinSpeedPID); PID_PositionClean(&Gimbal_RammerSpinPositionPID);
} }
@@ -249,19 +249,19 @@ void Gimbal_Rammer(void)
if(Gimbal_FrictionWheelFlag==1) if(Gimbal_FrictionWheelFlag==1)
{ {
if((Remote_RxData.Remote_ThumbWheel<1000 && RefereeSystem_Status==0) || PC_Fire==1) if((Remote_RxData.Remote_ThumbWheel<1000 && RefereeSystem_Status==0) || PC_Fire==1)
Gimbal_RammerSpinSpeedPID.Need_Value+=-Gimbal_RammerSpeed; Gimbal_RammerSpinPositionPID.Need_Value=-Gimbal_RammerSpeed;
else if((Remote_RxData.Remote_ThumbWheel>1050 && RefereeSystem_Status==0) || PC_Ejection==1) else if((Remote_RxData.Remote_ThumbWheel>1050 && RefereeSystem_Status==0) || PC_Ejection==1)
Gimbal_RammerSpinSpeedPID.Need_Value+=Gimbal_RammerSpeed; Gimbal_RammerSpinPositionPID.Need_Value=Gimbal_RammerSpeed;
else else
Gimbal_RammerSpinSpeedPID.Need_Value=0; Gimbal_RammerSpinPositionPID.Need_Value=0;
} }
else Gimbal_RammerSpinSpeedPID.Need_Value=0; else Gimbal_RammerSpinPositionPID.Need_Value=0;
PID_PositionCalc(&Gimbal_RammerSpinSpeedPID,M3508_MotorStatus[Gimbal_RammerSpinMotor-0x201].RotorSpeed); PID_PositionCalc(&Gimbal_RammerSpinPositionPID,M3508_MotorStatus[Gimbal_RammerSpinMotor-0x201].RotorSpeed);
M2006_CANSetHIDCurrent(0,Gimbal_PitchAngleSpeedPID.OUT,Gimbal_RammerSpinSpeedPID.OUT,0); //M2006_CANSetHIDCurrent(0,Gimbal_PitchAngleSpeedPID.OUT,Gimbal_RammerSpinPositionPID.OUT,0);
//PID_PositionCalc(&Gimbal_PitchAngleSpeedPID,GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Speed); //PID_PositionCalc(&Gimbal_PitchAngleSpeedPID,GM6020_MotorStatus[Gimbal_PitchMotor-0x205].Speed);
//M3508_CANSetLIDCurrent(0,0,Gimbal_RammerSpinSpeedPID.OUT,0); //M3508_CANSetLIDCurrent(0,0,Gimbal_RammerSpinPositionPID.OUT,0);
//M3508_CANSetHIDCurrent(0,0,Gimbal_RammerSpinSpeedPID.OUT,0); //M3508_CANSetHIDCurrent(0,0,Gimbal_RammerSpinPositionPID.OUT,0);
} }
/* /*
@@ -274,31 +274,27 @@ void Gimbal_Rammer_Single_fire(void)
{ {
if(Gimbal_FrictionWheelFlag==1) if(Gimbal_FrictionWheelFlag==1)
{ {
if(((Remote_RxData.Remote_ThumbWheel<1000 && RefereeSystem_Status==0) || PC_Fire==1) && Fire_Flag == 0) if(((Remote_RxData.Remote_ThumbWheel<1000 && RefereeSystem_Status==0) || PC_Fire==1) && Fire_Flag != 1;)
{ {
Gimbal_RammerSpinSpeedPID.Need_Value+=-Gimbal_RammerSpeed;//3,2,1 Fire!!! Gimbal_RammerSpinPositionPID.Need_Value=Gimbal_RammerSpinPositionPID.Need_Value-Gimbal_RammerSingleAmmo;//3,2,1 Fire!!!
Fire_Flag=1;//单次开火标志置1 Fire_Flag=1;//单次开火标志置1
} else if((Remote_RxData.Remote_ThumbWheel>1050 && RefereeSystem_Status==0) || PC_Ejection==1)
else if(((Remote_RxData.Remote_ThumbWheel>1050 && RefereeSystem_Status==0) || PC_Ejection==1) && Fire_Flag == 1)
{ {
Gimbal_RammerSpinSpeedPID.Need_Value+=Gimbal_RammerSpeed;//退弹 Gimbal_RammerSpinPositionPID.Need_Value=Gimbal_RammerSpinPositionPID.Need_Value+Gimbal_RammerSpeed;//退弹
Fire_Flag=0;//退弹就不用一发一发退了 Fire_Flag=0;//退弹就不用一发一发退了
} }
else if(((Remote_RxData.Remote_ThumbWheel>1000 && Remote_RxData.Remote_ThumbWheel<1050) ) && Fire_Flag == 1) else
{ Gimbal_RammerSpinPositionPID.Need_Value=0;//停止开火!
//Gimbal_RammerSpinSpeedPID.Need_Value=0;//停止开火!
Fire_Flag=0; Fire_Flag=0;
} }
} else Gimbal_RammerSpinPositionPID.Need_Value=0;//防止意外走火?
//else
//Gimbal_RammerSpinSpeedPID.Need_Value=0;//防止意外走火?
PID_PositionCalc(&Gimbal_RammerSpinSpeedPID,M3508_MotorStatus[Gimbal_RammerSpinMotor-0x201].RotorPosition); PID_PositionCalc(&Gimbal_RammerSpinPositionPID,M3508_MotorStatus[Gimbal_RammerSpinMotor-0x201].RotorSpeed);
//M2006_CANSetHIDCurrent(0,Gimbal_PitchAngleSpeedPID.OUT,Gimbal_RammerSpinSpeedPID.OUT,0); //M2006_CANSetHIDCurrent(0,Gimbal_PitchAngleSpeedPID.OUT,Gimbal_RammerSpinPositionPID.OUT,0);
//M3508_CANSetLIDCurrent(0,0,Gimbal_RammerSpinSpeedPID.OUT,0); //M3508_CANSetLIDCurrent(0,0,Gimbal_RammerSpinPositionPID.OUT,0);
//M3508_CANSetHIDCurrent(0,0,Gimbal_RammerSpinSpeedPID.OUT,0); //M3508_CANSetHIDCurrent(0,0,Gimbal_RammerSpinPositionPID.OUT,0);
} }