📄 movementcontrol_function.c.bak
字号:
/****************************************************************************************************************
FUNCTON NAME : Longitud_Execute
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void Longitud_Execute(void)
{
//1--床面板纵向向头端运动
if(CHECK_STATUS(Control_1,C_L_MoveHead) && CHECK_STATUS(Soft_Timer[BX_Timer],Timer_Flag))
{
if(!CHECK_STATUS(Output_1,Q_L_MoveFoot))
{
SET_STATUS(Output_1,Q_L_MoveHead);
}
}
if(CHECK_STATUS(Longitud_Switch,V_L_Head) || !CHECK_STATUS(Control_1,C_L_MoveHead))
{
CLR_STATUS(Output_1,Q_L_MoveHead);
}
//2--床面板纵向向足端运动
if(CHECK_STATUS(Control_1,C_L_MoveFoot) && CHECK_STATUS(Soft_Timer[BX_Timer],Timer_Flag))
{
if(!CHECK_STATUS(Output_1,Q_L_MoveHead))
{
SET_STATUS(Output_1,Q_L_MoveFoot);
}
}
if(CHECK_STATUS(Longitud_Switch,V_L_Foot) || !CHECK_STATUS(Control_1,C_L_MoveFoot))
{
CLR_STATUS(Output_1,Q_L_MoveFoot);
}
if(CHECK_STATUS(Control_1,C_L_MoveHead) && CHECK_STATUS(Control_1,C_L_MoveFoot))
{
CLR_STATUS(Output_1,Q_L_MoveHead);
CLR_STATUS(Output_1,Q_L_MoveFoot);
}
//保护程序
if(CHECK_STATUS(Protect_Flag_1,V_T_ProtectTL))
{
if(CHECK_STATUS(Longitud_Switch,I_L_NLevelHead) && CHECK_STATUS(Soft_Timer[BX_Timer],Timer_Flag))
{
SET_STATUS(Output_1,Q_L_MoveFoot);
}
if(CHECK_STATUS(Longitud_Switch,I_L_NLevelFoot) && CHECK_STATUS(Soft_Timer[BX_Timer],Timer_Flag))
{
SET_STATUS(Output_1,Q_L_MoveHead);
}
}
if(IS_NEG_EDGE(Protect_Flag_1,V_T_ProtectTL))
{
CLR_STATUS(Output_1,Q_L_MoveHead);
CLR_STATUS(Output_1,Q_L_MoveFoot);
}
UPDATE_EDGE(Protect_Flag_1);
//当已经到达限位位置 继续运动或脱离限位时,清标志
if(CHECK_STATUS(Longitud_Switch,A_L_NLevelHead) && CHECK_STATUS(Output_1,Q_L_MoveHead))
{
CLR_STATUS(Longitud_Switch,A_L_NLevelHead);
}
if(!CHECK_STATUS(Longitud_Switch,I_L_NLevelHead) && CHECK_STATUS(Output_1,Q_L_MoveFoot))
{
CLR_STATUS(Longitud_Switch,A_L_NLevelHead);
}
if(CHECK_STATUS(Longitud_Switch,A_L_NLevelFoot) && CHECK_STATUS(Output_1,Q_L_MoveFoot))
{
CLR_STATUS(Longitud_Switch,A_L_NLevelFoot);
}
if(!CHECK_STATUS(Longitud_Switch,I_L_NLevelFoot) && CHECK_STATUS(Output_1,Q_L_MoveHead))
{
CLR_STATUS(Longitud_Switch,A_L_NLevelFoot);
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : ImageLinkage_Status
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void ImageLinkage_Status(void)
{
TL_Position = TL_Pulse * 0.1212655;
SC_Position = SC_Pulse * 0.0942478;
TL_SC_Error = TL_Position - SC_Position;
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : ImageLinkage_Execute
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void ImageLinkage_Execute(void)
{
if(CHECK_STATUS(Control_1 ,C_IL_MoveHead) && !CHECK_STATUS(Control_1 ,C_IL_MoveFoot))
{
if(!CHECK_STATUS(Output_1 ,Q_TL_AngulationFoot) && !CHECK_STATUS(Control_1 ,Q_SC_MoveFoot))
{
SET_STATUS(Output_1 ,Q_TL_AngulationHead);
SET_STATUS(Output_1 ,Q_SC_MoveHead);
}
}
else if(CHECK_STATUS(Control_1 ,C_IL_MoveFoot) && !CHECK_STATUS(Control_1 ,C_IL_MoveHead))
{
if(!CHECK_STATUS(Output_1 ,Q_TL_AngulationHead) && !CHECK_STATUS(Control_1 ,Q_SC_MoveHead))
{
SET_STATUS(Output_1 ,Q_TL_AngulationFoot);
SET_STATUS(Output_1 ,Q_SC_MoveFoot);
}
}
if(CHECK_STATUS(Control_1 ,C_IL_MoveFoot) || CHECK_STATUS(TubeLongitud_Switch,I_TL_Head) || CHECK_STATUS(Scanning_Switch,I_SC_LevelHead))
{
CLR_STATUS(Output_1 ,Q_TL_AngulationHead);
CLR_STATUS(Output_1 ,Q_SC_MoveHead);
}
if(CHECK_STATUS(Control_1 ,C_IL_MoveHead) || CHECK_STATUS(TubeLongitud_Switch,I_TL_Foot) || CHECK_STATUS(Scanning_Switch,I_SC_LevelFoot))
{
CLR_STATUS(Output_1 ,Q_TL_AngulationFoot);
CLR_STATUS(Output_1 ,Q_SC_MoveFoot);
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : SID_Execute
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void SID_Execute(void)
{
if(IS_POS_EDGE(Control_1,C_SID_MoveUp) || IS_POS_EDGE(Control_1,C_SID_MoveDown))
{
SOFT_TIMER_RUN(SID_Timer,TOF,1500);
}
if(IS_NEG_EDGE(Control_1,C_SID_MoveUp) || IS_NEG_EDGE(Control_1,C_SID_MoveDown))
{
SOFT_TIMER_STOP(SID_Timer);
CLR_STATUS(Output_1,Q_SID_MoveDown);
CLR_STATUS(Output_1,Q_SID_MoveUp);
}
if(CHECK_STATUS(Control_1,C_SID_MoveUp) && !CHECK_STATUS(Control_1,C_SID_MoveDown) && !CHECK_STATUS(Output_1,Q_SID_MoveDown))
{
if(!CHECK_STATUS(SID_Switch,I_SID_5))
{
SET_STATUS(Output_1,Q_SID_MoveUp);
CLR_STATUS(Output_1,Q_SID_MoveDown);
}
}
else if(CHECK_STATUS(Control_1,C_SID_MoveDown) && !CHECK_STATUS(Control_1,C_SID_MoveUp) && !CHECK_STATUS(Output_1,Q_SID_MoveUp))
{
if(!CHECK_STATUS(SID_Switch,I_SID_1))
{
SET_STATUS(Output_1,Q_SID_MoveDown);
CLR_STATUS(Output_1,Q_SID_MoveUp);
}
}
else if(CHECK_STATUS(SID_Switch,I_SID_1) || CHECK_STATUS(SID_Switch,I_SID_2) || CHECK_STATUS(SID_Switch,I_SID_3)
|| CHECK_STATUS(SID_Switch,I_SID_4) || CHECK_STATUS(SID_Switch,I_SID_5))
{
CLR_STATUS(Output_1,Q_SID_MoveDown);
CLR_STATUS(Output_1,Q_SID_MoveUp);
}
if(
CHECK_STATUS(SID_Switch,I_SID_2) && (abs(TL_SC_Distance > 923)) ||
CHECK_STATUS(SID_Switch,I_SID_3) && (abs(TL_SC_Distance > 1007)) ||
CHECK_STATUS(SID_Switch,I_SID_4) && (abs(TL_SC_Distance > 1091)) ||
CHECK_STATUS(SID_Switch,I_SID_5) && (abs(TL_SC_Distance > 1175))
)
{
CLR_STATUS(Output_1,Q_SID_MoveDown);
}
if(CHECK_STATUS(SID_Switch,I_SID_5))
{
CLR_STATUS(Output_1,Q_SID_MoveUp);
}
if(CHECK_STATUS(SID_Switch,I_SID_1))
{
CLR_STATUS(Output_1,Q_SID_MoveDown);
}
//边沿更新
UPDATE_EDGE(Control_1);
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : ZeroPosition_Status
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void ZeroPosition_Status(void)
{
TubeLongitud_Status();
Tabletop_LateralStatus();
Longitud_Status();
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : ZeroPosition_Execute
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void ZeroPosition_Execute(void)
{
//影像复位_Execute
if(!CHECK_STATUS(TubeLongitud_Switch ,V_TL_ZERO))
{
if(CHECK_STATUS(Control_2,C_MoveAllToZero))
{
if(TL_SC_Error >= 0)
{
SET_STATUS(Output_1,Q_TL_AngulationFoot);
CLR_STATUS(Output_1,Q_TL_AngulationHead);
}
else
{
SET_STATUS(Output_1,Q_TL_AngulationHead);
CLR_STATUS(Output_1,Q_TL_AngulationFoot);
}
}
}
else if(CHECK_STATUS(TubeLongitud_Switch ,V_TL_ZERO))
{
CLR_STATUS(Output_1,Q_TL_AngulationHead);
CLR_STATUS(Output_1,Q_TL_AngulationFoot);
}
//床面板横向复位_Execute
if(!CHECK_STATUS(Lateral_Switch,A_La_Middle))
{
if(CHECK_STATUS(Control_2,C_MoveAllToZero))
{
if(CHECK_STATUS(Lateral_Switch,A_La_Outside))
{
SET_STATUS(Output_1,Q_La_MoveInside);
CLR_STATUS(Output_1,Q_La_MoveOutside);
}
if(CHECK_STATUS(Lateral_Switch,A_La_Inside))
{
SET_STATUS(Output_1,Q_La_MoveOutside);
CLR_STATUS(Output_1,Q_La_MoveInside);
}
}
}
else if(CHECK_STATUS(Lateral_Switch,A_La_Middle))
{
CLR_STATUS(Output_1,Q_La_MoveOutside);
CLR_STATUS(Output_1,Q_La_MoveInside);
}
//床面板纵向复位
if(!CHECK_STATUS(Longitud_Switch,A_L_Middle))
{
if(CHECK_STATUS(Control_2,C_MoveAllToZero))
{
if(!CHECK_STATUS(Longitud_Switch,I_L_Middle) || CHECK_STATUS(Soft_Timer[BX_Timer],Timer_Flag))
{
SET_STATUS(Output_1,Q_L_MoveHead);
CLR_STATUS(Output_1,Q_L_MoveFoot);
}
else
{
if(CHECK_STATUS(Soft_Timer[BX_Timer],Timer_Flag))
{
SET_STATUS(Output_1,Q_L_MoveFoot);
}
}
}
}
else if(CHECK_STATUS(Longitud_Switch,A_L_Middle))
{
CLR_STATUS(Output_1,Q_L_MoveHead);
CLR_STATUS(Output_1,Q_L_MoveFoot);
}
//防止误复位标志有效
if(!CHECK_STATUS(Control_2,C_MoveAllToZero))
{
CLR_STATUS(Output_1,Q_TL_AngulationHead);
CLR_STATUS(Output_1,Q_TL_AngulationFoot);
CLR_STATUS(Output_1,Q_La_MoveOutside);
CLR_STATUS(Output_1,Q_La_MoveInside);
CLR_STATUS(Output_1,Q_L_MoveHead);
CLR_STATUS(Output_1,Q_L_MoveFoot);
}
}
//---------------------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -