📄 functionprototype.c
字号:
}
//注:!C_正倾 || A_水平区域
// --->> 停止 Q_负倾
if(!CHECK_STATUS(Control_1,C_T_TilitPOS) || CHECK_STATUS(Tilit_Switch,A_Table_ZERO))
{
if(!CHECK_STATUS(Local_Flag_1,V_Tilit_EnTilit))
{
CLR_STATUS(Output_1,Q_T_TilitPOS);
}
}
//注:!C_正倾 || C_负倾 || I_正90限位
// --->> 停止 Q_正倾
if(!CHECK_STATUS(Control_1,C_T_TilitPOS) || CHECK_STATUS(Control_1,C_T_TilitNEG) || CHECK_STATUS(Tilit_Switch,I_T_P90))
{
CLR_STATUS(Output_1,Q_T_TilitPOS);
}
//3--反转输出控制
//注:C_负倾 && !C_正倾 && !Q_正倾
// --->> 启动 Q_负倾
if(CHECK_STATUS(Control_1,C_T_TilitNEG) && !CHECK_STATUS(Control_1,C_T_TilitPOS) && !CHECK_STATUS(Output_1,Q_T_TilitPOS))
{
SET_STATUS(Output_1,Q_T_TilitNEG);
}
//注:!C_负倾 || A_水平区域
// --->> 停止 Q_负倾
if(!CHECK_STATUS(Control_1,C_T_TilitNEG) || CHECK_STATUS(Tilit_Switch,A_Table_ZERO))
{
if(!CHECK_STATUS(Local_Flag_1,V_Tilit_EnTilit))
{
CLR_STATUS(Output_1,Q_T_TilitNEG);
}
}
//5--
//注:C_负倾 && A_水平区域 && !Q_正倾 并且 V_倾斜允许标志
// --->> 启动 Q_负倾
// if(CHECK_STATUS(Control_1,C_T_TilitNEG) && CHECK_STATUS(Tilit_Switch,A_Table_ZERO) && !CHECK_STATUS(Output_1,Q_T_TilitPOS))
// {
// if(CHECK_STATUS(Local_Flag_1,V_Tilit_EnTilit))
// {
// SET_STATUS(Output_1,Q_T_TilitNEG);
// }
// }
//6--
//注:C_负倾 && A_负角度区域 && !Q_正倾
// --->> 启动 Q_负倾
// if(CHECK_STATUS(Control_1,C_T_TilitNEG) && CHECK_STATUS(Tilit_Switch,A_Table_NEG) && !CHECK_STATUS(Output_1,Q_T_TilitPOS))
// {
// SET_STATUS(Output_1,Q_T_TilitNEG);
// }
//注:!C_负倾 && I_负90度限位
// --->> 停止 Q_负倾
if(!CHECK_STATUS(Control_1,C_T_TilitNEG) || CHECK_STATUS(Tilit_Switch,I_T_N90) )
{
CLR_STATUS(Output_1,Q_T_TilitNEG);
}
//输出保护
//注:I_正90度限位
// --->> 停止 Q_正倾
if(CHECK_STATUS(Tilit_Switch,I_T_P90))
{
CLR_STATUS(Output_1,Q_T_TilitPOS);
}
//注:I_负90度限位
// --->> 停止 Q_负倾
if(CHECK_STATUS(Tilit_Switch,I_T_N90))
{
CLR_STATUS(Output_1,Q_T_TilitNEG);
}
//注:Q_正倾 && Q_负倾
// --->> 停止 Q_正倾 停止 Q_负倾
if(CHECK_STATUS(Output_1,Q_T_TilitPOS) && CHECK_STATUS(Output_1,Q_T_TilitNEG))
{
CLR_STATUS(Output_1,Q_T_TilitPOS);
CLR_STATUS(Output_1,Q_T_TilitNEG);
}
//---- 下面为床倾状态变化提供标志位
//19--
//注:Q_正倾 上升沿 || Q_负倾 上升沿
// --->> 开启 床体倾斜 断开延时 定时器
if(IS_POS_EDGE(Output_1,Q_T_TilitPOS) || IS_POS_EDGE(Output_1,Q_T_TilitNEG))
{
SOFT_TIMER_RUN(Tilit_Timer,TOF,10);
//向执行动作的通信程序发送 MovementRUN
}
//注:Q_正倾 下降沿 || Q_负倾 下降沿
// --->> 停止 床体倾斜 断开延时 定时器 (使其开始计时1S)
if(IS_NEG_EDGE(Output_1,Q_T_TilitPOS) || IS_NEG_EDGE(Output_1,Q_T_TilitNEG))
{
SOFT_TIMER_STOP(Tilit_Timer);
//向执行动作的通信程序发送 MovementSTOP
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : Tabletop_LateralStatus
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
******************************************************************************************************************/
void Tabletop_LateralStatus(void)
{
if(IS_NEG_EDGE(Lateral_Switch,I_La_Middle))
{
if(CHECK_STATUS(Soft_Timer[Lateral_Timer],Timer_Flag))
{
if(CHECK_STATUS(Local_Flag_1,V_Lateral_MoveDirection)) //------------------------------ 向外侧运动
{
SET_STATUS(Lateral_Switch,A_La_Outside);
CLR_STATUS(Lateral_Switch,A_La_Inside);
}
else
{
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);
}
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
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);
CLR_STATUS(Local_Flag_1,V_Lateral_MoveDirection);
}
}
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);
SET_STATUS(Local_Flag_1,V_Lateral_MoveDirection);
CLR_STATUS(Output_1,Q_La_MoveInside);
}
}
else
{
CLR_STATUS(Output_1,Q_La_MoveOutside);
CLR_STATUS(Output_1,Q_La_MoveInside);
}
//19--
//注:Q_向外 上升沿 || Q_向内 上升沿
// --->> 向执行动作的通信程序发送 MovementRUN
if(IS_POS_EDGE(Output_1,Q_La_MoveOutside) || IS_POS_EDGE(Output_1,Q_La_MoveInside))
{
SOFT_TIMER_RUN(Lateral_Timer,TOF,10);
//向执行动作的通信程序发送 MovementRUN
}
//注:Q_向外 下降沿 || Q_向内 下降沿
// --->> 向执行动作的通信程序发送 MovementSTOP
if(IS_NEG_EDGE(Output_1,Q_La_MoveOutside) || IS_NEG_EDGE(Output_1,Q_La_MoveInside))
{
SOFT_TIMER_STOP(Lateral_Timer);
//向执行动作的通信程序发送 MovementSTOP
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
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,V_TL_SC_LessThan6);
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);
}
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : TubeLongitud_Execute
FUNCTION VERSION :
CREATED ON :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -