|
|
|
@ -105,20 +105,18 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
if (Get_BIT(SystemErrorCode, u7_sbus) == 1) |
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
CurrentMoveState = Move_HALT; |
|
|
|
if(!(P_U7->R1 == -1000 && P_U7->L1 == -1000 |
|
|
|
&& P_U7->R2 == -1000 && P_U7->L2 == -1000 |
|
|
|
if(!(P_U7->M2 == -1000 && P_U7->M1 == -1000 |
|
|
|
&& P_U7->M6 == -1000 && P_U7->M5 == -1000 |
|
|
|
&& P_U7->RU_Three == 0) |
|
|
|
&& (P_U7->CH1_LYB_H >= -300 && P_U7->CH1_LYB_H <= 300) |
|
|
|
&& (P_U7->CH0_LYB_V >= -300 && P_U7->CH0_LYB_V <= 300)) |
|
|
|
{ |
|
|
|
if(P_U7->RU_Three != 0 |
|
|
|
&& P_U7->R1 == -1000 && P_U7->L1 == -1000 |
|
|
|
&& P_U7->R2 == -1000 && P_U7->L2 == -1000) //自动作业与换道互斥
|
|
|
|
&& P_U7->M2 == -1000 && P_U7->M1 == -1000 |
|
|
|
&& P_U7->M6 == -1000 && P_U7->M5 == -1000) //自动作业与换道互斥
|
|
|
|
{ |
|
|
|
if(P_U7->RU_Three == 1000) |
|
|
|
{ |
|
|
|
@ -127,13 +125,6 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
{ |
|
|
|
GV.AuTo_Flag=1; |
|
|
|
} |
|
|
|
// if(Spray_Flag == 0
|
|
|
|
// && GV.LeftFrontMotor.Velcity >= GV.Robot_AutoSpeed - 100
|
|
|
|
// && GV.RightFrontMotor.Velcity <= -GV.Robot_AutoSpeed + 100)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Spray,0);
|
|
|
|
// Spray_Flag = 1;
|
|
|
|
// }
|
|
|
|
|
|
|
|
} |
|
|
|
else if(P_U7->RU_Three == -1000) |
|
|
|
@ -143,45 +134,38 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
{ |
|
|
|
GV.AuTo_Flag=3; |
|
|
|
} |
|
|
|
// if(Spray_Flag == 0
|
|
|
|
// && GV.RightFrontMotor.Velcity >= GV.Robot_AutoSpeed - 100
|
|
|
|
// && GV.LeftFrontMotor.Velcity <= -GV.Robot_AutoSpeed + 100)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Spray,0);
|
|
|
|
// Spray_Flag = 1;
|
|
|
|
// }
|
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
CurrentMoveState = Move_HALT;//停车
|
|
|
|
} |
|
|
|
} |
|
|
|
else if(!(P_U7->R1 == -1000 && P_U7->L1 == -1000 |
|
|
|
&& P_U7->R2 == -1000 && P_U7->L2 == -1000) |
|
|
|
else if(!(P_U7->M2 == -1000 && P_U7->M1 == -1000 |
|
|
|
&& P_U7->M6 == -1000 && P_U7->M5 == -1000) |
|
|
|
&& P_U7->RU_Three == 0) |
|
|
|
{ |
|
|
|
if(GV.Chg_Flag == 1 && (P_U7->L1 == 1000 || P_U7->R1 == 1000 |
|
|
|
|| P_U7->L2 == 1000 || P_U7->R2 == 1000)) |
|
|
|
if(GV.Chg_Flag == 1 && (P_U7->M1 == 1000 || P_U7->M2 == 1000 |
|
|
|
|| P_U7->M5 == 1000 || P_U7->M6 == 1000)) |
|
|
|
{ |
|
|
|
CurrentMoveState = Move_ChgFinish; |
|
|
|
} |
|
|
|
else if(P_U7->L1 == 1000 |
|
|
|
&& P_U7->R1 == -1000 && P_U7->R2 == -1000 && P_U7->L2 == -1000) |
|
|
|
else if(P_U7->M1 == 1000 |
|
|
|
&& P_U7->M2 == -1000 && P_U7->M6 == -1000 && P_U7->M5 == -1000) |
|
|
|
{ |
|
|
|
CurrentMoveState = Move_ChgUp; |
|
|
|
} |
|
|
|
else if(P_U7->R1 == 1000 |
|
|
|
&& P_U7->L1 == -1000 && P_U7->R2 == -1000 && P_U7->L2 == -1000) |
|
|
|
else if(P_U7->M2 == 1000 |
|
|
|
&& P_U7->M1 == -1000 && P_U7->M6 == -1000 && P_U7->M5 == -1000) |
|
|
|
{ |
|
|
|
CurrentMoveState = Move_ChgDown; |
|
|
|
} |
|
|
|
else if(P_U7->L2 == 1000 |
|
|
|
&& P_U7->L1 == -1000 && P_U7->R1 == -1000 && P_U7->R2 == -1000) |
|
|
|
else if(P_U7->M5 == 1000 |
|
|
|
&& P_U7->M1 == -1000 && P_U7->M2 == -1000 && P_U7->M6 == -1000) |
|
|
|
{ |
|
|
|
CurrentMoveState = Move_ChgLeft; |
|
|
|
} |
|
|
|
else if(P_U7->R2 == 1000 |
|
|
|
&& P_U7->L1 == -1000 && P_U7->R1 == -1000 && P_U7->L2 == -1000) |
|
|
|
else if(P_U7->M6 == 1000 |
|
|
|
&& P_U7->M1 == -1000 && P_U7->M2 == -1000 && P_U7->M5 == -1000) |
|
|
|
{ |
|
|
|
CurrentMoveState = Move_ChgRight; |
|
|
|
} |
|
|
|
@ -197,8 +181,8 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
} |
|
|
|
else if( !((P_U7->CH1_LYB_H >= -300 && P_U7->CH1_LYB_H <= 300) |
|
|
|
&&(P_U7->CH0_LYB_V >= -300 && P_U7->CH0_LYB_V <= 300)) |
|
|
|
&& P_U7->R1 == -1000 && P_U7->L1 == -1000 |
|
|
|
&& P_U7->R2 == -1000 && P_U7->L2 == -1000 |
|
|
|
&& P_U7->M2 == -1000 && P_U7->M1 == -1000 |
|
|
|
&& P_U7->M6 == -1000 && P_U7->M5 == -1000 |
|
|
|
&& P_U7->RU_Three == 0) |
|
|
|
{ |
|
|
|
if (P_U7->CH1_LYB_H >= -300 && P_U7->CH1_LYB_H <= 300)//前进周围300范围内才继续检测前进是否按下
|
|
|
|
@ -213,25 +197,7 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
// if(CurrentMoveState == Move_AutoForward
|
|
|
|
// || CurrentMoveState == Move_AutoBackward)
|
|
|
|
// {
|
|
|
|
// if(Spray_Flag < 8)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Spray,1);
|
|
|
|
// Spray_Flag++;
|
|
|
|
// }
|
|
|
|
// else if(Spray_Flag >= 8)
|
|
|
|
// {
|
|
|
|
// Spray_Flag = 0;
|
|
|
|
// CurrentMoveState = Move_HALT;//停车
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
CurrentMoveState = Move_HALT;//停车
|
|
|
|
// }
|
|
|
|
|
|
|
|
CurrentMoveState = Move_HALT;//停车
|
|
|
|
} |
|
|
|
} |
|
|
|
else if (P_U7->CH0_LYB_V >= -300 && P_U7->CH0_LYB_V <= 300) |
|
|
|
@ -262,42 +228,6 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
|
|
|
|
/****************************************/ |
|
|
|
|
|
|
|
//LU_Single 控制打磨电机:旧
|
|
|
|
// if(P_U7->LU_Single==1000 && Polish_Flag == 0)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Polish,0);
|
|
|
|
// if(Polish_Count == 100)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Polish,1);
|
|
|
|
// Polish_Flag = 1;
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// Polish_Count++;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// else if(P_U7->LU_Single==-1000 && Polish_Flag == 1)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Polish,0);
|
|
|
|
// if(Polish_Count == 100)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Polish,1);
|
|
|
|
// Polish_Flag = 0;
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// Polish_Count++;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// Polish_Count=0;
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 版本二:LU_Single 控制打磨电机和吸尘器(非自锁版本)
|
|
|
|
if (P_U7->LU_Single == 1000 && Polish_lock == 0 && process_state == 0) |
|
|
|
{ |
|
|
|
@ -362,92 +292,6 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// /* 版本三:LU_Single状态机Switch版本(尚未验证) */
|
|
|
|
// // 1. 按键触发逻辑(仅在空闲状态响应)
|
|
|
|
// if (P_U7->LU_Single == 1000 && Polish_lock == 0 && process_state == 0)
|
|
|
|
// {
|
|
|
|
// Polish_lock = 1; // 锁定触发,防止重复触发
|
|
|
|
//
|
|
|
|
// if (Polish_Flag == 0)
|
|
|
|
// {
|
|
|
|
// process_state =21; // 切换到开启流程
|
|
|
|
// Vacuum_Delay_Count = 0; // 重置吸尘器延迟计数
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// process_state = 2; // 切换到关闭流程
|
|
|
|
// Polish_Count = 100; // 初始化关闭计数
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// // 按键松开时解除锁定
|
|
|
|
// else if (P_U7->LU_Single == -1000)
|
|
|
|
// {
|
|
|
|
// Polish_lock = 0;
|
|
|
|
// }
|
|
|
|
//
|
|
|
|
// // 2. 状态机主体(使用switch-case实现)
|
|
|
|
// switch (process_state)
|
|
|
|
// {
|
|
|
|
// case 0:
|
|
|
|
// // 空闲状态:无需执行操作,等待触发
|
|
|
|
// break;
|
|
|
|
//
|
|
|
|
// case 1:
|
|
|
|
// // 开启流程:先开吸尘器,延迟后开打磨
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Vacuum, 0); // 开启吸尘器
|
|
|
|
//
|
|
|
|
// if (Vacuum_Delay_Count < 200)
|
|
|
|
// {
|
|
|
|
// Vacuum_Delay_Count++; // 吸尘器延迟计时
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// // 延迟结束,处理打磨开启
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Polish, 0);
|
|
|
|
//
|
|
|
|
// if (Polish_Count >= 100)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Polish, 1);
|
|
|
|
// Polish_Flag = 1; // 更新状态标志
|
|
|
|
// process_state = 0; // 回到空闲状态
|
|
|
|
// Polish_Count = 0; // 重置计数
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// Polish_Count++;
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
// break;
|
|
|
|
//
|
|
|
|
// case 2:
|
|
|
|
// // 关闭流程:先处理打磨关闭,再关吸尘器
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Polish, 0);
|
|
|
|
//
|
|
|
|
// if (Polish_Count <= 0)
|
|
|
|
// {
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Polish, 1);
|
|
|
|
// Polish_Flag = 0; // 更新状态标志
|
|
|
|
// GF_BSP_GPIO_SetIO(Out_Vacuum, 1); // 关闭吸尘器
|
|
|
|
// process_state = 0; // 回到空闲状态
|
|
|
|
// }
|
|
|
|
// else
|
|
|
|
// {
|
|
|
|
// Polish_Count--;
|
|
|
|
// }
|
|
|
|
// break;
|
|
|
|
//
|
|
|
|
// default:
|
|
|
|
// // 异常状态处理:回到初始状态
|
|
|
|
// process_state = 0;
|
|
|
|
// Polish_Count = 0;
|
|
|
|
// Vacuum_Delay_Count = 0;
|
|
|
|
// break;
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//LU_Three控制打磨推杆升降
|
|
|
|
if(P_U7->LU_Three==1000) |
|
|
|
{ |
|
|
|
@ -591,30 +435,6 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// if(P_U7->LU_pulley>=900 && JJ_Flag==0)
|
|
|
|
// {
|
|
|
|
// JJ_Flag=1;
|
|
|
|
// GV.PV.Robot_AutoSpeedBase = GV.PV.Robot_AutoSpeedBase + 1;
|
|
|
|
// }
|
|
|
|
// else if(P_U7->LU_pulley<= -900 && JJ_Flag==0)
|
|
|
|
// {
|
|
|
|
// JJ_Flag=1;
|
|
|
|
// GV.PV.Robot_AutoSpeedBase = GV.PV.Robot_AutoSpeedBase - 1;
|
|
|
|
// }
|
|
|
|
// else if(P_U7->LU_pulley<=100 && P_U7->LU_pulley>=-100 && JJ_Flag==1)
|
|
|
|
// {
|
|
|
|
// JJ_Flag=0;
|
|
|
|
// }
|
|
|
|
// if(GV.PV.Robot_AutoSpeedBase<=0)
|
|
|
|
// {
|
|
|
|
// GV.PV.Robot_AutoSpeedBase = 0;
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
|
|
//Robot Speed 指向的是GV.movespeed
|
|
|
|
GV.Robot_ManualSpeed = abs((GV.PV.Robot_ManualSpeedBase* 186.9 * (P_U7->CH0_LYB_V))/ 1000);//RobotSpeed指向GV的移动车体速度 这是整体车速 不是单个轮的
|
|
|
|
CV.TurnLeftRightSpeed = abs((2 * 186.9 * (P_U7->CH1_LYB_H))/ 1000);//RobotSpeed指向GV的移动车体速度 这是整体车速 不是单个轮的
|
|
|
|
@ -633,6 +453,7 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
IV.Robot_Current_Right = GV.RightFrontMotor.Current; |
|
|
|
|
|
|
|
IV.Robot_Error = 0; |
|
|
|
|
|
|
|
if(GV.LeftFrontMotor.ERROR_Flag != 0) |
|
|
|
{ |
|
|
|
IV.Robot_Error = 100+GV.LeftFrontMotor.ERROR_Flag; |
|
|
|
@ -646,7 +467,8 @@ void GF_Dispatch()//2ms调用一次 给车体速度等赋值 |
|
|
|
IV.Robot_Error = 10000 + GV.LeftFrontMotor.ERROR_Flag * 100 + GV.RightFrontMotor.ERROR_Flag; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
IV.Robot_Error_Left = GV.LeftFrontMotor.ERROR_Flag; |
|
|
|
IV.Robot_Error_Right = GV.RightFrontMotor.ERROR_Flag; |
|
|
|
IV.Robot_CurrentState = CurrentMoveState; |
|
|
|
|
|
|
|
// GV.Robot_ChgLength = CV.PV.Robot_ChgLength - 10;
|
|
|
|
|