⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 functionprototype.c

📁 UCOSii for c8051f020
💻 C
📖 第 1 页 / 共 5 页
字号:
    }
    
    //注:!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 + -