📄 movementcontrol_function.c.bak
字号:
if(IS_NEG_EDGE(Lateral_Switch,I_La_Middle))
{
if(CHECK_STATUS(Soft_Timer[Lateral_Timer],Timer_Flag))
{
if(CHECK_STATUS(Output_1,Q_La_MoveOutside))
{
SET_STATUS(Lateral_Switch,A_La_Outside);
CLR_STATUS(Lateral_Switch,A_La_Inside);
}
if(CHECK_STATUS(Output_1,Q_La_MoveInside))
{
SET_STATUS(Lateral_Switch,A_La_Inside);
CLR_STATUS(Lateral_Switch,A_La_Outside);
}
}
else
{
SET_STATUS(Lateral_Switch,A_La_Outside);
}
}
if(CHECK_STATUS(Lateral_Switch,I_La_Outside))
{
SET_STATUS(Lateral_Switch,A_La_Outside);
CLR_STATUS(Lateral_Switch,A_La_Inside);
}
if(CHECK_STATUS(Lateral_Switch,I_La_Inside))
{
SET_STATUS(Lateral_Switch,A_La_Inside);
CLR_STATUS(Lateral_Switch,A_La_Outside);
}
if(CHECK_STATUS(Lateral_Switch,A_La_Middle))
{
if(CHECK_STATUS(Output_1,Q_La_MoveInside) || CHECK_STATUS(Output_1,Q_La_MoveOutside))
{
CLR_STATUS(Lateral_Switch,A_La_Middle);
}
}
if(IS_POS_EDGE(Lateral_Switch,I_La_Middle))
{
if(CHECK_STATUS(Output_1,Q_La_MoveInside))
{
SET_STATUS(Lateral_Switch,A_La_Middle);
}
}
//边沿更新
UPDATE_EDGE(Output_1);
UPDATE_EDGE(Lateral_Switch);
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : Tabletop_LateralExecute
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void Tabletop_LateralExecute(void)
{
if(CHECK_STATUS(Control_1,C_La_MoveInside) && !CHECK_STATUS(Control_1,C_La_MoveOutside) && !CHECK_STATUS(Output_1,Q_La_MoveOutside))
{
if(!CHECK_STATUS(Lateral_Switch,I_La_Inside))
{
SET_STATUS(Output_1,Q_La_MoveInside);
CLR_STATUS(Output_1,Q_La_MoveOutside);
}
}
else if(CHECK_STATUS(Control_1,C_La_MoveOutside) && !CHECK_STATUS(Control_1,C_La_MoveInside) && !CHECK_STATUS(Output_1,Q_La_MoveInside))
{
if(!CHECK_STATUS(Lateral_Switch,I_La_Outside))
{
SET_STATUS(Output_1,Q_La_MoveOutside);
CLR_STATUS(Output_1,Q_La_MoveInside);
}
}
else
{
CLR_STATUS(Output_1,Q_La_MoveOutside);
CLR_STATUS(Output_1,Q_La_MoveInside);
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : TubeLongitud_Status
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
REMARK : 立柱脉冲-实际位移常数:0.1212655 。滑架脉冲-实际位移常数:0.0942478
******************************************************************************************************************/
void TubeLongitud_Status(void)
{
TL_Position = TL_Pulse * 0.1212655;
//SC_Position = SC_Pulse * 0.0942478;
TL_SC_Error = TL_Position - SC_Position;
if(abs(TL_SC_Error) < 6)
{
SET_STATUS(TubeLongitud_Switch ,V_TL_SC_LessThan6);
}
else if(CHECK_STATUS(TubeLongitud_Switch ,V_TL_SC_LessThan6))
{
CLR_STATUS(TubeLongitud_Switch ,V_TL_SC_LessThan6);
}
//44--立柱正40度标志(立柱在上;应禁止立柱向上运动)
if(CHECK_STATUS(SID_Switch ,I_SID_1) && (TL_SC_Error >= 923))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_P40);
}
else if(CHECK_STATUS(SID_Switch ,I_SID_2) && (TL_SC_Error >= 1007))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_P40);
}
else if(CHECK_STATUS(SID_Switch ,I_SID_3) && (TL_SC_Error >= 1091))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_P40);
}
else if(CHECK_STATUS(SID_Switch ,I_SID_4) && (TL_SC_Error >= 1175))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_P40);
}
else if(CHECK_STATUS(SID_Switch ,I_SID_5) && (TL_SC_Error >= 1259))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_P40);
}
else
{
CLR_STATUS(TubeLongitud_Switch ,V_TL_P40);
}
//45--立柱负40度标志(应禁止立柱向下运动)
if(CHECK_STATUS(SID_Switch ,I_SID_1) && (TL_SC_Error <= -923))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_N40);
}
else if(CHECK_STATUS(SID_Switch ,I_SID_2) && (TL_SC_Error <= -1007))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_N40);
}
else if(CHECK_STATUS(SID_Switch ,I_SID_3) && (TL_SC_Error <= -1091))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_N40);
}
else if(CHECK_STATUS(SID_Switch ,I_SID_4) && (TL_SC_Error <= -1175))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_N40);
}
else if(CHECK_STATUS(SID_Switch ,I_SID_5) && (TL_SC_Error <= -1259))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_N40);
}
else
{
CLR_STATUS(TubeLongitud_Switch ,V_TL_N40);
}
//立柱复位(复位状态滞回置位)
if(CHECK_STATUS(TubeLongitud_Switch ,V_TL_ZERO) && (abs(TL_SC_Error >= 6)))
{
if(CHECK_STATUS(Output_1 ,Q_TL_AngulationHead) && CHECK_STATUS(Output_1 ,Q_TL_AngulationFoot))
{
CLR_STATUS(TubeLongitud_Switch ,V_TL_ZERO);
}
}
if(IS_POS_EDGE(TubeLongitud_Switch,V_TL_SC_LessThan6))
{
SET_STATUS(TubeLongitud_Switch ,V_TL_ZERO);
}
UPDATE_EDGE(TubeLongitud_Switch);
if(IS_POS_EDGE(Control_1,C_TL_AngulationHead) || IS_POS_EDGE(Control_1,C_TL_AngulationFoot))
{
if(CHECK_STATUS(TubeLongitud_Switch ,V_TL_ZERO))
{
CLR_STATUS(TubeLongitud_Switch ,V_TL_ZERO);
}
}
UPDATE_EDGE(Control_1);
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : TubeLongitud_Execute
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void TubeLongitud_Execute(void)
{
if(CHECK_STATUS(Control_1,C_TL_AngulationHead) && !CHECK_STATUS(Control_1,C_TL_AngulationFoot))
{
if(!CHECK_STATUS(Output_1,Q_TL_AngulationFoot) && !CHECK_STATUS(TubeLongitud_Switch,I_TL_Head))
{
if(!CHECK_STATUS(TubeLongitud_Switch,V_TL_P40))
{
SET_STATUS(Output_1,Q_TL_AngulationHead);
}
}
}
else if(CHECK_STATUS(Control_1,C_TL_AngulationFoot) && !CHECK_STATUS(Control_1,C_TL_AngulationHead))
{
if(!CHECK_STATUS(Output_1,Q_TL_AngulationHead) && !CHECK_STATUS(TubeLongitud_Switch,I_TL_Foot))
{
if(!CHECK_STATUS(TubeLongitud_Switch,V_TL_N40))
{
SET_STATUS(Output_1,Q_TL_AngulationFoot);
}
}
}
else if(CHECK_STATUS(Output_1,Q_TL_AngulationHead) || CHECK_STATUS(Output_1,Q_TL_AngulationFoot))
{
CLR_STATUS(Output_1,Q_TL_AngulationHead);
CLR_STATUS(Output_1,Q_TL_AngulationFoot);
//更新位置旧值
Old_TL_SC_Error = TL_SC_Error ;
}
if(CHECK_STATUS(TubeLongitud_Switch ,V_TL_ZERO))
{
CLR_STATUS(Output_1,Q_TL_AngulationHead);
CLR_STATUS(Output_1,Q_TL_AngulationFoot);
Old_TL_SC_Error = TL_SC_Error ;
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : Longitud_Status
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void Longitud_Status(void)
{
if(CHECK_STATUS(Longitud_Switch,I_L_LevelHead))
{
SET_STATUS(Longitud_Switch,V_L_Head);
}
if(CHECK_STATUS(Tilit_Switch,A_Table_NEG) || CHECK_STATUS(Tilit_Switch,I_T_N90))
{
if(CHECK_STATUS(Longitud_Switch,I_L_NLevelHead))
{
SET_STATUS(Longitud_Switch,V_L_Head);
}
}
if(IS_POS_EDGE(Longitud_Switch,I_L_NLevelHead))
{
SET_STATUS(Longitud_Switch,A_L_NLevelHead);
}
if(CHECK_STATUS(Longitud_Switch,I_L_LevelFoot))
{
SET_STATUS(Longitud_Switch,V_L_Foot);
}
if(CHECK_STATUS(Tilit_Switch,A_Table_POS) || CHECK_STATUS(Tilit_Switch,I_T_P90))
{
if(CHECK_STATUS(Longitud_Switch,I_L_NLevelFoot))
{
SET_STATUS(Longitud_Switch,V_L_Foot);
}
}
if(IS_POS_EDGE(Longitud_Switch,I_L_NLevelFoot))
{
SET_STATUS(Longitud_Switch,A_L_NLevelFoot);
}
//63床面板纵向在保护区时, 需要床体旋转的保护(结果真假取决的条件相反;无滞回)
if(!CHECK_STATUS(Longitud_Switch,A_L_NLevelHead) && !CHECK_STATUS(Longitud_Switch,A_L_NLevelFoot))
{
if((CHECK_STATUS(Tilit_Switch,A_Table_POS) && CHECK_STATUS(Longitud_Switch,I_L_NLevelFoot)) ||
(CHECK_STATUS(Tilit_Switch,A_Table_NEG) && CHECK_STATUS(Longitud_Switch,I_L_NLevelHead)))
{
if(CHECK_STATUS(Control_1,C_T_TilitPOS) || CHECK_STATUS(Control_1,C_T_TilitNEG))
{
SET_STATUS(Protect_Flag_1,V_T_ProtectTL);
}
}
if(CHECK_STATUS(Tilit_Switch,A_Table_ZERO))
{
if((CHECK_STATUS(Longitud_Switch,A_L_NLevelFoot) && CHECK_STATUS(Control_1,C_T_TilitPOS)) ||
(CHECK_STATUS(Local_Flag_1,V_Tilit_EnENG) && CHECK_STATUS(Longitud_Switch,A_L_NLevelHead) && CHECK_STATUS(Control_1,C_T_TilitNEG)))
{
SET_STATUS(Protect_Flag_1,V_T_ProtectTL);
}
}
}
if(IS_POS_EDGE(Control_1,C_L_MoveHead) || IS_POS_EDGE(Control_1,C_L_MoveFoot) ||
IS_POS_EDGE(Protect_Flag_1,V_T_ProtectTL))
{
SOFT_TIMER_RUN(BX_Timer,TON,100);
}
if(IS_NEG_EDGE(Control_1,C_L_MoveHead) || IS_NEG_EDGE(Control_1,C_L_MoveFoot) ||
IS_NEG_EDGE(Protect_Flag_1,V_T_ProtectTL))
{
SOFT_TIMER_STOP(BX_Timer);
}
//床面板纵向中心位标志复位
if(CHECK_STATUS(Longitud_Switch,A_L_Middle))
{
if(CHECK_STATUS(Output_1,Q_L_MoveHead) || CHECK_STATUS(Output_1,Q_L_MoveFoot))
{
CLR_STATUS(Longitud_Switch,A_L_Middle);
}
}
if(IS_NEG_EDGE(Longitud_Switch,I_L_Middle) || CHECK_STATUS(Output_1,Q_L_MoveHead))
{
SET_STATUS(Longitud_Switch,A_L_Middle);
}
UPDATE_EDGE(Longitud_Switch);
UPDATE_EDGE(Control_1);
}
//---------------------------------------------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -