#include "global.h" #if TONG_YONG_MACHINE void HL_InitAction(void); void HL_Action(void); void HL_SetAlarmCode(unsigned alarm_code); void HL_StartStopAction(void); void HL_AutoRunStep(void); void HL_Motor(void); void HL_Step(void); unsigned char cDWflg=0,cZCXflg=0,cHLflg=0; unsigned char cBBflg = 0; short *offset_length_buff; void HL_SetAlarmCode(unsigned alarm_code) { SetAlarmCode(HL_ALARM_ADDR,alarm_code); HL_bAlarmStop = 1; } void HL_InitAction(void) { CalFreqTab_X_Free(14); XGearRatio = 1; } //手动动作 void HL_ManualAction(void) { if(!HL_bRunning) { //警告跳出 if(bClearTotal) { bClearTotal = 0; ClrcToTal(HL_TOTAL_ADDR); HL_bSetWorkData = 1; } if(HL_bAdd) { HL_bAdd = 0; HL_PARAM_DELAY_STOP += 10; } if(HL_bDec) { HL_bDec = 0; if(HL_PARAM_DELAY_STOP >= 10)HL_PARAM_DELAY_STOP -= 10; } if(HL_bHM) { HL_bHM = 0; HL_HM_VAVLE = ~HL_HM_VAVLE; if(HL_HM_VAVLE == 0)HL_YD_VAVLE = 0; } if(HL_bTFK) { HL_bTFK = 0; HL_TFK_VAVLE = ~HL_TFK_VAVLE; } if(HL_bBB) { HL_bBB = 0; HL_BB_VAVLE = ~HL_BB_VAVLE; if(HL_BB_VAVLE)cBBflg = 1; } if(cBBflg) { if(HL_BB_LIMIT_IN) { cBBflg = 0; } } if(HL_bYCX) { HL_bYCX = 0; HL_YCX_VAVLE = 1; HL_YCXDelay = dwTickCount + HL_PARAM_YCX_TIME; } if(HL_bDK_UP) { HL_bDK_UP = 0; HL_DK_UP_VAVLE = ~HL_DK_UP_VAVLE; } if(HL_bJD) { HL_bJD = 0; HL_JD_VAVLE = ~HL_JD_VAVLE; } if(HL_bCCX) { HL_bCCX = 0; HL_CCX_VAVLE = ~HL_CCX_VAVLE; } if(HL_bYD) { HL_bYD = 0; HL_YD_VAVLE = ~HL_YD_VAVLE; } if(HL_bSJ) { HL_bSJ = 0; HL_SJ_VAVLE = ~HL_SJ_VAVLE; } if(HL_bHMYD) { HL_bHMYD = 0; if(HL_HM_VAVLE) { HL_HM_VAVLE = 0; } else { HL_HM_VAVLE = 1; } } if(HL_bDKUP) { HL_bDKUP = 0; if(HL_DK_UP_VAVLE) { HL_DK_UP_VAVLE = 0; HL_YD_VAVLE = 0; } else { HL_DK_UP_VAVLE = 1; } } if(HL_bCD) { HL_bCD = 0; HL_CD_MOTOR = ~HL_CD_MOTOR; } if(HL_bMotor) { SetEn(X_AXIS,HL_MOTOR_EN); if(!X_DRV)AxisContinueMove(X_AXIS,10,HL_DIR_P); } else { if(X_DRV)AxisDecStop(X_AXIS); } } } //合链动作 void HL_Action(void) { HL_ManualAction(); HL_StartStopAction(); HL_Motor(); HL_Step(); HL_AutoRunStep(); } //启动停止故障停止动作 void HL_StartStopAction(void) { static unsigned long dwstop_cnt = 0; if((START_IN_UP || HL_bStart || HL_bSingStart || HL_bDW || HL_bZCX || HL_bHL) && !HL_bRunning && (HL_AutoStep ==0)) { if(GetTotal(HL_TOTAL_ADDR) >= SET_TOTAL)HL_SetAlarmCode(HL_TOTAL_ALARM); else { SetAlarmCode(HL_ALARM_ADDR,HL_NO_ALARM); HL_bRunning = 1; dwZipCnt = 0; if(HL_bSingStart) { HL_bSingStart = 0; SingOneFlg = 1; } if(HL_bDW) { cDWflg = 1; dwZipCnt = 1; } if(HL_bZCX)cZCXflg = 1; if(HL_bHL)cHLflg = 1; if(HL_bZCX)HL_AutoStep = 4; else if(HL_bHL)HL_AutoStep = 1; else HL_AutoStep = 1; } HL_bDW = 0; HL_bZCX = 0; HL_bHL = 0; HL_bSingStart = 0; HL_bStart = 0; } if(!HL_bMotor && !X_DRV && !HL_bRunning && (HL_MotorStep==0))SetEn(X_AXIS,HL_MOTOR_DISEN); if(HL_bStop) { HL_bStop = 0; if(HL_bRunning) SingOneFlg = 1; else { HL_HM_VAVLE = 0; HL_TFK_VAVLE = 0; HL_BB_VAVLE = 0; HL_DK_UP_VAVLE = 0; HL_JD_VAVLE = 0; HL_CCX_VAVLE = 0; HL_YD_VAVLE = 0; HL_SJ_VAVLE = 0; HL_CD_MOTOR = 0; HL_ALARM_OUT = 0; HL_bRunning = 0; HL_AutoStep = 0; HL_MotorStep = 0; SingOneFlg = 0; HL_bMotor = 0; cDWflg = 0; cZCXflg = 0; cHLflg = 0; HL_ManDKStep = 0; AxisEgmStop(X_AXIS); SetAlarmCode(HL_ALARM_ADDR,HL_NO_ALARM); } } if(STOP_IN_UP) { HL_bStop = 0; if(HL_bRunning) { HL_TFK_VAVLE = 0; HL_DK_UP_VAVLE = 0; HL_JD_VAVLE = 0; HL_CCX_VAVLE = 0; HL_YD_VAVLE = 0; HL_SJ_VAVLE = 0; HL_CD_MOTOR = 0; HL_ALARM_OUT = 0; HL_bRunning = 0; HL_AutoStep = 0; HL_MotorStep = 0; HL_HLStep = 0; HL_ManDKStep = 0; SingOneFlg = 0; HL_bMotor = 0; cDWflg = 0; cZCXflg = 0; cHLflg = 0; SetAlarmCode(HL_ALARM_ADDR,HL_NO_ALARM); AxisEgmStop(X_AXIS); } else { HL_TFK_VAVLE = 0; HL_BB_VAVLE = 0; HL_HM_VAVLE = 0; HL_DK_UP_VAVLE = 0; HL_JD_VAVLE = 0; HL_CCX_VAVLE = 0; HL_YD_VAVLE = 0; HL_SJ_VAVLE = 0; HL_CD_MOTOR = 0; HL_bRunning = 0; HL_AutoStep = 0; HL_MotorStep = 0; HL_HLStep = 0; SingOneFlg = 0; cDWflg = 0; cZCXflg = 0; cHLflg = 0; HL_bMotor = 0; SetAlarmCode(HL_ALARM_ADDR,HL_NO_ALARM); AxisEgmStop(X_AXIS); } } if(HL_bAlarmStop) { HL_ALARM_OUT = 1; HL_bAlarmStop = 0; AxisEgmStop(X_AXIS); HL_AutoStep = 0; HL_ManDKStep = 0; HL_MotorStep = 0; HL_HLStep = 0; HL_bRunning = 0; SingOneFlg = 0; cDWflg = 0; cZCXflg = 0; cHLflg = 0; } } void HL_Step(void) { static long hm_save_buff; switch(HL_HLStep) { case 1: if(HL_GUO_LIAN_IN_UP) { hm_save_buff = dwRealPos; HL_HLStep = 2; } break; case 2: if((dwRealPos + HL_PARAM_DELAY_HM_BACK) <= hm_save_buff) { HL_HM_VAVLE = 0; HL_HLDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_HLStep = 3; } else if(!X_DRV)HL_SetAlarmCode(HL_HM_BACK_ALARM); break; case 3: if(!HL_SM_LIMIT_IN && !HL_XM_LIMIT_IN) { HL_HLStep = 4; HL_HLDelay = dwTickCount + HL_PARAM_DELAY_BB_BACK; } else if(dwTickCount >= HL_HLDelay) { if(HL_SM_LIMIT_IN)HL_SetAlarmCode(HL_SM_LIMIT_ALARM); else HL_SetAlarmCode(HL_XM_LIMIT_ALARM); } break; case 4: if(dwTickCount >= HL_HLDelay) { HL_HLStep = 5; HL_BB_VAVLE = 0; HL_HLDelay = dwTickCount + HL_VAVLE_ALARM_TIME; } break; case 5: if(!HL_BB_LIMIT_IN) { HL_HLStep = 0; if(SingOneFlg) { SingOneFlg = 0; HL_AutoStep = 0; HL_bRunning = 0; HL_MotorStep = 0; } HL_HLDelay = dwTickCount; } else if(dwTickCount >= HL_HLDelay) { HL_SetAlarmCode(HL_BB_LIMIT_ALARM); } break; } } //电机动作 void HL_Motor(void) // { static long save_buff,hm_save_buff; DISPLAY_DATA0 = user_datas[100]; DISPLAY_DATA1 = HL_AutoStep; DISPLAY_DATA2 = HL_MotorStep; DISPLAY_DATA3 = HL_HLStep; dwRealPos = GetPos(X_AXIS); switch(HL_MotorStep) { case 0:break; case 1: if(GetEn(X_AXIS) == 0) { SetEn(X_AXIS,HL_MOTOR_EN); HL_MotorDelay = dwTickCount + 100; } HL_MotorStep = 2; break; case 2: if(dwTickCount >= HL_MotorDelay) { HL_MotorDelay = dwTickCount + HL_PARAM_MOTOR_ALARM_TIME; if(!HL_GUO_LIAN_IN) { MoveAction_Const_AccDec(X_AXIS,HL_DIR_P,HL_PARAM_LOW_SPEED,1,5,1); HL_MotorDelay = dwTickCount + HL_PARAM_DELAY_CHECK_TIME; HL_MotorStep = 4; } else { if(dwZipCnt == 0) MoveAction_Const_AccDec(X_AXIS,HL_DIR_P,HL_PARAM_HIGH_SPEED/3,1,5,1); else MoveAction_Const_AccDec(X_AXIS,HL_DIR_P,HL_PARAM_HIGH_SPEED,1,5,1); HL_MotorStep = 3; } if(HL_HM_VAVLE) { *offset_length_buff = 0; if(HL_HLStep == 0)HL_HLStep = 1; } else { *offset_length_buff = 0; } } break; case 3: if(HL_GUO_LIAN_IN_DW) { AxisChangeSpeed(X_AXIS,HL_PARAM_LOW_SPEED); HL_MotorDelay = dwTickCount + HL_PARAM_DELAY_CHECK_TIME; HL_MotorStep = 4; } else if(dwTickCount >= HL_MotorDelay) HL_SetAlarmCode(HL_GUOLIAN_ALARM); break; case 4: if(dwTickCount >= HL_MotorDelay) { HL_MotorStep = 5; HL_MotorDelay = dwTickCount + HL_VAVLE_ALARM_TIME; } break; case 5: if(HL_GUO_LIAN_IN_UP) { save_buff = dwRealPos; HL_MotorStep = 6; } else if(dwTickCount >= HL_MotorDelay) HL_SetAlarmCode(HL_GUOLIAN_ALARM); break; case 6: if((dwRealPos + HL_PARAM_DELAY_STOP) <= save_buff) { AxisEgmStop(X_AXIS); HL_MotorStep = 7; } break; case 7: if(!X_DRV && (HL_HLStep == 0)) { HL_MotorStep = 0; HL_MotorDelay = dwTickCount; } break; /* case 20: // if(!X_DRV) { HL_MotorStep = 21; HL_HM_VAVLE = 0; HL_MotorDelay = dwTickCount + HL_VAVLE_ALARM_TIME; } break; case 21: if(!HL_SM_LIMIT_IN && !HL_XM_LIMIT_IN) { HL_MotorStep = 22; HL_MotorDelay = dwTickCount + HL_PARAM_DELAY_BB_BACK; } else if(dwTickCount >= HL_MotorDelay) { if(HL_SM_LIMIT_IN)HL_SetAlarmCode(HL_SM_LIMIT_ALARM); else HL_SetAlarmCode(HL_XM_LIMIT_ALARM); } break; case 22: if(dwTickCount >= HL_MotorDelay) { if(cHLflg) HL_MotorStep = 0; else HL_MotorStep = 23; HL_BB_VAVLE = 0; if(SingOneFlg) { SingOneFlg = 0; HL_MotorStep = 0; HL_AutoStep = 0; HL_bRunning = 0; } HL_MotorDelay = dwTickCount + HL_VAVLE_ALARM_TIME; } break; case 23: if(!HL_BB_LIMIT_IN) { HL_MotorStep = 0; // if(!X_DRV)AxisMovePosAccDec(X_AXIS,HL_PARAM_LOW_SPEED,HL_PARAM_DELAY_STOP2,1,5,5); } else if(dwTickCount >= HL_MotorDelay) { HL_SetAlarmCode(HL_BB_LIMIT_ALARM); } break; case 24: if(!X_DRV) { HL_MotorStep = 0; HL_MotorDelay = dwTickCount; } break;*/ } } //自动运行动作 void HL_AutoRunStep(void) { if((dwTickCount >= HL_YCXDelay) && HL_YCX_VAVLE)HL_YCX_VAVLE = 0; if(HL_bRunning) { if(HL_AutoStep == 1) { HL_AutoStep = 2; } else if((HL_AutoStep == 2) && (dwTickCount >= HL_AutoDelay)) { if(HL_MotorStep == 0) { HL_AutoStep = 3; HL_MotorStep = 1; HL_SJ_VAVLE = 0; } } else if(HL_AutoStep == 3) { if(HL_MotorStep == 0) { if(cDWflg | cHLflg) { cDWflg = 0; cHLflg = 0; HL_AutoStep = 0; HL_bRunning = 0; } else { HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_TFK; HL_AutoStep = 4; } } } else if((HL_AutoStep == 4) && (dwTickCount >= HL_AutoDelay)) { HL_TFK_VAVLE = 1; HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_AutoStep = 5; } else if(HL_AutoStep == 5) { if(HL_TFK_LIMIT_IN) { HL_AutoStep = 6; HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_HM; } else if(dwTickCount >= HL_AutoDelay) { HL_SetAlarmCode(HL_TFK_LIMIT_ALARM); } } else if((HL_AutoStep == 6) && (dwTickCount >= HL_AutoDelay)) { HL_HM_VAVLE = 1; HL_DK_UP_VAVLE = 1; HL_SJ_VAVLE = 1; HL_YD_VAVLE = 1; HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_AutoStep = 7; } else if(HL_AutoStep == 7) { if(HL_SM_LIMIT_IN && HL_XM_LIMIT_IN) { HL_AutoStep = 8; HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_TFK_BACK; } else if(dwTickCount >= HL_AutoDelay) { if(!HL_SM_LIMIT_IN) HL_SetAlarmCode(HL_SM_LIMIT_ALARM); else HL_SetAlarmCode(HL_XM_LIMIT_ALARM); } } else if((HL_AutoStep == 8) && (dwTickCount >= HL_AutoDelay)) { HL_AutoStep = 9; HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_TFK_VAVLE = 0; } else if(HL_AutoStep == 9) { if(HL_TFK_ORIGIN_IN) { HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_BB; HL_AutoStep = 10; } else if(dwTickCount >= HL_AutoDelay) HL_SetAlarmCode(HL_TFK_ORIGIN_ALARM); } else if((HL_AutoStep == 10) && (dwTickCount >= HL_AutoDelay)) { HL_BB_VAVLE = 1; HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_AutoStep = 12; } else if(HL_AutoStep == 12) { if(HL_BB_LIMIT_IN) { HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_DK_UP; HL_AutoStep = 13; } else if(dwTickCount >= HL_AutoDelay) HL_SetAlarmCode(HL_BB_LIMIT_ALARM); } else if((HL_AutoStep == 13) && (dwTickCount >= HL_AutoDelay)) { HL_DK_UP_VAVLE = 1; HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_AutoStep = 14; } else if(HL_AutoStep == 14) { if(HL_DK_UP_LIMIT_IN) { HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_JD; HL_YCX_VAVLE = 1; HL_YCXDelay = dwTickCount + HL_PARAM_YCX_TIME; HL_AutoStep = 15; } else if(dwTickCount >= HL_AutoDelay) HL_SetAlarmCode(HL_DK_UP_LIMIT_ALARM); } else if((HL_AutoStep == 15) && (dwTickCount >= HL_AutoDelay)) { if(HL_PARAM_CCX_MODE) { if(!X_DRV)AxisMovePosAccDec(X_AXIS,HL_PARAM_CCX_SPEED,HL_PARAM_CCX_LENGTH,1,5,5); HL_AutoDelay = dwTickCount; HL_AutoStep = 16; } else { HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_CCX; HL_JD_VAVLE = 1; HL_AutoStep = 16; } } else if((HL_AutoStep == 16) && (dwTickCount >= HL_AutoDelay) && !HL_YCX_VAVLE) { if(HL_PARAM_CCX_MODE) { if(!X_DRV) { HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_CheckDelay = dwTickCount + HL_PARAM_DELAY_CHECK_CCX; HL_AutoStep = 17; } } else { HL_CCX_VAVLE = 1; HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_CheckDelay = dwTickCount + HL_PARAM_DELAY_CHECK_CCX; HL_AutoStep = 17; } } else if((HL_AutoStep == 17) && (dwTickCount >= HL_CheckDelay)) { if(HL_CCX_LIMIT_IN) { if(HL_PARAM_CCX_MODE) { HL_DK_UP_VAVLE = 0; HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_AutoStep = 18; } else { HL_DK_UP_VAVLE = 0; HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_JD_BACK; HL_AutoStep = 50; } } else if(dwTickCount >= HL_AutoDelay) HL_SetAlarmCode(HL_CCX_LIMIT_ALARM); } else if((HL_AutoStep == 50) && (dwTickCount >= HL_AutoDelay)) { HL_JD_VAVLE = 0; HL_AutoDelay = dwTickCount + 0; HL_AutoStep = 51; } else if((HL_AutoStep == 51) && (dwTickCount >= HL_AutoDelay)) { if(!X_DRV)AxisMovePosAccDec(X_AXIS,HL_PARAM_LOW_SPEED,HL_PARAM_CCX_LENGTH,1,5,5); HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_AutoStep = 18; } else if(HL_AutoStep == 18) { if(!HL_DK_UP_LIMIT_IN && !X_DRV) { HL_CCX_VAVLE = 0; HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_BACK_DK_UP; HL_AutoStep = 19; } else if(dwTickCount >= HL_AutoDelay) { HL_SetAlarmCode(HL_DK_UP_LIMIT_ALARM); } } else if(HL_AutoStep == 19) { if(!HL_PARAM_CCX_TIMES)HL_YD_VAVLE = 0; HL_AutoDelay = dwTickCount + HL_VAVLE_ALARM_TIME; HL_AutoStep = 20; } else if(HL_AutoStep == 20) { if(HL_PARAM_CCX_MODE) { HL_AutoDelay = dwTickCount; HL_AutoStep = 25; } else { if(!HL_PARAM_CCX_TIMES) { HL_AutoDelay = dwTickCount; HL_AutoStep = 25; } else { HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_JD; HL_AutoStep = 21; } } } else if((HL_AutoStep == 21) && (dwTickCount >= HL_AutoDelay)) { HL_JD_VAVLE = 1; HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_CCX; HL_AutoStep = 22; } else if((HL_AutoStep == 22) && (dwTickCount >= HL_AutoDelay)) { HL_CCX_VAVLE = 1; HL_AutoStep = 23; } else if((HL_AutoStep == 23) && (dwTickCount >= HL_AutoDelay)) { HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_JD_BACK; HL_AutoStep = 24; } else if((HL_AutoStep == 24) && (dwTickCount >= HL_AutoDelay)) { HL_JD_VAVLE = 0; HL_AutoDelay = dwTickCount + HL_PARAM_DELAY_CCX; HL_AutoStep = 25; } else if((HL_AutoStep == 25) && (dwTickCount >= HL_AutoDelay)) { HL_CCX_VAVLE = 0; HL_YD_VAVLE = 0; if(cZCXflg) { cZCXflg = 0; HL_AutoStep = 0; HL_bRunning = 0; } else { HL_AutoStep = 26; } } else if(HL_AutoStep == 26) { AddToTal(HL_TOTAL_ADDR); dwZipCnt++; if(GetTotal(HL_TOTAL_ADDR) >= HL_PARAM_SET_TOTAL) { HL_SetAlarmCode(HL_TOTAL_ALARM); } else { HL_AutoStep = 2; HL_AutoDelay = HL_PARAM_CYCLE_DELAY + dwTickCount; CalProSP(HL_PROSPEED_ADDR); } } } } #endif