📄 functionprototype.c.bak
字号:
if(!CHECK_STATUS(SID_Switch,I_SID_1))
{
SET_STATUS(Output_1,Q_SID_MoveDown);
CLR_STATUS(Output_1,Q_SID_MoveUp);
}
}
else if(IS_POS_EDGE(Local_Flag_1,V_SID_POSEDGE))
{
CLR_STATUS(Output_1,Q_SID_MoveDown);
CLR_STATUS(Output_1,Q_SID_MoveUp);
}
UPDATE_EDGE(Local_Flag_1,V_SID_POSEDGE);
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);
}
//注:Q_向上 下降沿 || Q_向下 下降沿
// --->> 停止 床体倾斜 断开延时 定时器 (使其开始计时1S)
if(IS_POS_EDGE(Output_1,Q_SID_MoveUp) || IS_POS_EDGE(Output_1,Q_SID_MoveDown))
{
//向执行动作的通信程序发送 MovementRUN
}
//注:Q_向上 下降沿 || Q_向下 下降沿
// --->> 停止 床体倾斜 断开延时 定时器 (使其开始计时1S)
if(IS_NEG_EDGE(Output_1,Q_SID_MoveUp) || IS_NEG_EDGE(Output_1,Q_SID_MoveDown))
{
//向执行动作的通信程序发送 MovementSTOP
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
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);
}
}
/****************************************************************************************************************
运动控制与PC通信处理程序
/****************************************************************************************************************
/****************************************************************************************************************
FUNCTON NAME : MovementPCcommunicateProcess
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
REMARK : FLG_ProcessStat 0 -- 不需要发送;1 -- 需要发送。
******************************************************************************************************************/
void MovementPCcommunicateProcessSUB(void)
{
switch(*(MemRXProcess + 2))
{
case 'F':
{
MovementPCFunction_F();
break;
}
case 'A':
{
MovementPCFunction_A();
break;
}
case 'L':
{
MovementPCFunction_L();
break;
}
case 'T':
{
MovementPCFunction_T();
break;
}
case 'S':
{
MovementPCFunction_S();
break;
}
default:
{
FLG_ProcessStat = 0;
break;
}
}
if( FLG_ProcessStat == 1)
{
OSQPost(TxMsg,MemRXProcess);
}
else
{
OSMemPut(CommunicateBUF,MemRXProcess);
}
}
//---------------------------------------------------------------------------------------------------------------
/****************************************************************************************************************
FUNCTON NAME : MovementPCFunction_F
FUNCTION VERSION :
CREATED ON :
FUNCTION DESCRIPTION :
INPUT PARAMETER :
RETURN VALUE :
MODIFY RECORD :
REMARK : FLG_ProcessStat 0 -- 不需要发送;1 -- 需要发送。
******************************************************************************************************************/
void MovementPCFunction_F(void)
{
switch(*(MemRXProcess + 4))
{
case '0':
{
*MemRXProcess = 0x06; //正确应答
*(MemRXProcess + 1) = 'R';
*(MemRXProcess + 2) = 'F';
*(MemRXProcess + 3) = '0';
*(MemRXProcess + 4) = '0';
*(MemRXProcess + 5) = ' ';
*(MemRXProcess + 6) = '1';
*(MemRXProcess + 7) = '0';
*(MemRXProcess + 8) = '0';
FLG_ProcessStat = 1;
break;
}
case '1':
{
*MemRXProcess = 0x06; //正确应答
*(MemRXProcess + 1) = 'R';
//*(MemRXProcess + 2) = 'F';
//*(MemRXProcess + 3) = '0';
//*(MemRXProcess + 4) = '1';
*(MemRXProcess + 5) = ' ';
*(MemRXProcess + 6) = ' ';
*(MemRXProcess + 7) = 'O';
*(MemRXProcess + 8) = 'K';
FLG_ProcessStat = 1;
break;
}
case '2':
{
if(*(MemRXProcess + 1) == 'W')
{
if(*(MemRXProcess + 5) == 'E' &&
*(MemRXProcess + 6) == 'N' &&
*(MemRXProcess + 7) == 'T' &&
*(MemRXProcess + 8) == 'R')
{
SpeedConfig_Flag = 1;
}
else
{
SpeedConfig_Flag = 0;
}
//需要填写写RAM或FRAM代码
*MemRXProcess = 0x06; //正确应答
*(MemRXProcess + 1) = 'R';
FLG_ProcessStat = 1;
break;
}
}
case '3':
{
if(*(MemRXProcess + 5) == 'W' &&
*(MemRXProcess + 6) == 'R' &&
*(MemRXProcess + 7) == 'A' &&
*(MemRXProcess + 8) == 'M')
{
//调用写RAM程序
}
if(*(MemRXProcess + 5) == 'W' &&
*(MemRXProcess + 6) == 'F' &&
*(MemRXProcess + 7) == 'L' &&
*(MemRXProcess + 8) == 'S')
{
//调用写FLASH程序
}
*MemRXProcess = 0x06; //正确应答
*(MemRXProcess + 1) = 'R';
FLG_ProcessStat = 1;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -