#include "global.h" #if JUN_TENG_MACHINE unsigned short cTaiMiamMotor; unsigned long cSlowPusle; unsigned char bDecEn; unsigned char bStartOnceTime,bOnceProcess; unsigned short cWorkCnt; unsigned char TryCnt = 0; unsigned short cZhaCnt = 0; unsigned short cTbCnt = 0; unsigned char ZhuangLiaoOkFlg = 0; unsigned char SongLaTouOkFlg = 0; unsigned char ManFlg; unsigned char cStopFlg = 0; unsigned char cFirstStartFlg = 0; unsigned char cCountFlg = 0; static long save_limit_pos; void QDCT_ManualAction(void); void QDCT_JiaLianAction(void); void QDCT_AutoStepAction(void); void QDCT_ZhenDongAction(void); void QDCT_TableAction(void); void QDCT_GL_Step(void); void QDCT_Motor(void); void QDCT_CheckStart(void); void QDCT_SL_Step(void); void QDCT_XiaQieAction(void); void QDCT_AlarmProtect(void); void QDCT_ZLT_Step(void); void QDCT_ExtiActionX31(void) { if(cSeBiaoEn && !cSeBiaoOk) { user_datas[123]++; cSeBiaoEn = 0; cSeBiaoOk = 1; SetRemainLength(X_AXIS,QDCT_SEBIAO_LENGTH,QDCT_SEBIAO_BACK_DW_SPEED); } user_datas[123]++; } //故障报警 void QDCT_SetAlarmCode(unsigned alarm_code) { SetAlarmCode(QDCT_ALARM_ADDR,alarm_code); QDCT_bAlarmStop = 1; } //初始化动作 void QDCT_InitAction(void) { float buff_pulse,buff_dist; buff_pulse = QDCT_PARAM_CYCLE_PULSE; buff_dist = QDCT_PARAM_CYCLE_LENGTH; XGearRatio = buff_pulse/buff_dist; QDCT_ZDP_OUT= 1; } void QDCT_Action(void) { QDCT_AlarmProtect(); QDCT_CheckStart(); QDCT_ZLT_Step(); QDCT_TableAction(); QDCT_SL_Step(); QDCT_JiaLianAction(); QDCT_XiaQieAction(); QDCT_Motor(); QDCT_ManualAction(); QDCT_AutoStepAction(); } void QDCT_AlarmProtect(void) { static unsigned short ka_dai_cnt; dwRealPos = GetPos(X_AXIS); if(QDCT_PARAM_BACK_ALARM_MODE) { //感应后限模式 if(!bRunning) { if(QDCT_BACK_LIMIT_IN_UP) { if(X_DRV && (QDCT_bMotorBack) || (QDCT_MotorStep != 0)) //到后限不能再后退但可以点前进 { QDCT_bMotorBack = 0; AxisEgmStop(X_AXIS); QDCT_JD_OUT = 0; QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); } } } else { if(QDCT_BACK_LIMIT_IN_UP) { AxisEgmStop(X_AXIS); QDCT_JD_OUT = 0; QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); } } } else { if(QDCT_GO_LIMIT_IN_UP) //数控后限模式 { save_limit_pos = dwRealPos; SetData32bits(200,save_limit_pos); } if(QDCT_PARAM_MAX_BACK_LENGTH < (dwRealPos - save_limit_pos)) { if(!bRunning) { if((QDCT_MotorStep == 0) && X_DRV && QDCT_bMotorBack) //到后限不能再后退但可以点前进 { QDCT_bMotorBack = 0; AxisDecStop(X_AXIS); QDCT_JD_OUT = 0; QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); } } else { AxisDecStop(X_AXIS); QDCT_JD_OUT = 0; QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); } } } if(QDCT_KA_DAI_IN) { if(ka_dai_cnt < 110)ka_dai_cnt++; } else { ka_dai_cnt = 0; if(GetAlarmCode(QDCT_ALARM_ADDR) == QDCT_KD_ALARM)QDCT_SetAlarmCode(QDCT_NO_ALARM); } if(ka_dai_cnt > 100)QDCT_SetAlarmCode(QDCT_KD_ALARM); } void QDCT_JiaLianAction(void) { if(QDCT_JiaLianStep == 1) { QDCT_JD_Delay = dwTickCount + QDCT_PARAM_JD_DELAY; QDCT_JiaLianStep = 2; } else if((QDCT_JiaLianStep == 2) && (dwTickCount >= QDCT_JD_Delay)) { QDCT_JD_OUT = 1; QDCT_JD_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_JiaLianStep = 3; } else if(QDCT_JiaLianStep == 3) { if(QDCT_JZ_LEFT_IN && QDCT_JZ_RIGHT_IN) { QDCT_JD_Delay = dwTickCount + QDCT_PARAM_KL_DELAY; QDCT_JiaLianStep = 4; } else if(dwTickCount >= QDCT_JD_Delay) { if(!QDCT_JZ_LEFT_IN)QDCT_SetAlarmCode(QDCT_JD_LEFT_ALARM); else if(!QDCT_JZ_RIGHT_IN)QDCT_SetAlarmCode(QDCT_JD_RIGHT_ALARM); } } else if(QDCT_JiaLianStep == 4) { if(QDCT_PARAM_KL_TIME) { QDCT_JiaLianStep = 5; } else { QDCT_JiaLianStep = 7; } } else if((QDCT_JiaLianStep == 5) && (dwTickCount >= QDCT_JD_Delay)) { QDCT_KL_OUT = 1; QDCT_JiaLianStep = 6; QDCT_JD_Delay = dwTickCount + QDCT_PARAM_KL_TIME; } else if((QDCT_JiaLianStep == 6) && (dwTickCount >= QDCT_JD_Delay)) { QDCT_KL_OUT = 0; QDCT_JiaLianStep = 7; } else if((QDCT_JiaLianStep == 7)) { QDCT_JiaLianStep = 0; } } //自动动作 void QDCT_AutoStepAction(void) { if(bRunning) { if(QDCT_AutoStep == 1) { QDCT_AutoStep = 2; QDCT_ZhenDongStep = 1; if(QDCT_ZhuangLiaoStep == 0)QDCT_ZhuangLiaoStep = 1; } else if((QDCT_AutoStep == 2) && (dwTickCount >= QDCT_AutoDelay)) { QDCT_AutoStep = 3; } else if(QDCT_AutoStep == 3) { if(QDCT_MotorStep == 0) { QDCT_MotorStep = 61; QDCT_AutoStep = 4; } } else if(QDCT_AutoStep == 4) { QDCT_AutoStep = 5; } else if(QDCT_AutoStep == 5) { if(QDCT_ZhuangLiaoStep == 0)QDCT_ZhuangLiaoStep = 1; QDCT_AutoStep = 6; } else if(QDCT_AutoStep == 6) { QDCT_AutoStep = 7; } else if(QDCT_AutoStep == 7) { QDCT_AutoStep = 8; } else if(QDCT_AutoStep == 8) { QDCT_AutoStep = 9; } else if(QDCT_AutoStep == 9) { if(QDCT_MotorStep == 0) { QDCT_AutoStep = 10; } } else if(QDCT_AutoStep == 10) { QDCT_AutoStep = 11; } else if(QDCT_AutoStep == 11) { if((QDCT_MotorStep == 0) && (QDCT_ZhuangLiaoStep == 0)) // { if(QDCT_SEBIAO_MODE) QDCT_MotorStep = 1; else QDCT_MotorStep = 30; QDCT_AutoStep = 12; } } else if(QDCT_AutoStep == 12) { // if(QDCT_MotorStep == 0) { // ZhuangLiaoOkFlg = 0; // if(QDCT_ZhuangLiaoStep == 0)QDCT_ZhuangLiaoStep = 1; QDCT_AutoStep = 13; } } else if(QDCT_AutoStep == 13) { QDCT_AutoStep = 14; } else if(QDCT_AutoStep == 14) { if(bStartOnceTime) { bStartOnceTime = 0; QDCT_AutoStep = 0; bRunning = 0; } else { if((QDCT_XiaQieStep == 0) && !X_DRV && !QDCT_XM_LIMIT_IN) { QDCT_XiaQieStep = 1; QDCT_AutoStep = 15; } } } else if(QDCT_AutoStep == 15) { if(((QDCT_XiaQieStep == 0) || (QDCT_XiaQieStep == 7)) && !QDCT_SQ_LIMIT_IN) { if(QDCT_MotorStep == 0) { ZhuangLiaoOkFlg = 0; if(QDCT_ZhuangLiaoStep == 0)QDCT_ZhuangLiaoStep = 1; QDCT_MotorStep = 40; QDCT_AutoStep = 16; } } } else if((QDCT_AutoStep == 16) && (QDCT_MotorStep == 0)) { CalProSP(QDCT_SPEED_ADDR); //计算生产速度 AddToTal(QDCT_TOTAL_ADDR); //生产总量加1并保存 AddToTal(QDCT_NOWTOTAL_ADDR); //生产总量加1并保存 cWorkCnt++; cZhaCnt++; dwZipCnt++; cTbCnt++; if(cTbCnt >= QDCT_PARAM_TABLE_NUM) { QDCT_TB_OUT = 1; cTbCnt = 0; QDCT_TableDelay = dwTickCount + QDCT_PARAM_TABLE_TIME; } if(GetTotal(QDCT_TOTAL_ADDR) >= GetTotal(QDCT_SETTOTAL_ADDR)) { bStartOnceTime = 0; QDCT_SetAlarmCode(QDCT_TOTAL_ALARM); } else { QDCT_AutoStep = 17; } } else if(QDCT_AutoStep == 17) { if(GetTotal(QDCT_NOWTOTAL_ADDR) >= QDCT_ZHA_NO) { ClrcToTal(QDCT_NOWTOTAL_ADDR); QDCT_AutoDelay = dwTickCount + QDCT_ZHA_STOP_TIME; QDCT_AutoStep = 2; } else { QDCT_AutoDelay = dwTickCount + QDCT_PARAM_CYCLE_DELAY; QDCT_AutoStep = 2; } } } } //台面电机动作 void QDCT_TableAction(void) { if(QDCT_TB_OUT && (dwTickCount >= QDCT_TableDelay))QDCT_TB_OUT = 0; } void QDCT_CheckStart(void) { //启动 自动启动 单一自动 if(START_IN_UP || bStart || QDCT_bOnceStart) { if(QDCT_bOnceStart) { QDCT_bOnceStart = 0; bStartOnceTime = 1; dwZipCnt = 0; } bStart = 0; if(!QDCT_NO_ZIPPER_CHECK_IN)QDCT_SetAlarmCode(QDCT_START_NO_ZIPPER_ALARM); else if(QDCT_LTCZ_IN)QDCT_SetAlarmCode(QDCT_START_LTCZ_ALARM); else if(!QDCT_HSL_ORIGIN_IN)QDCT_SetAlarmCode(QDCT_START_GL_ORIGIN_ALARM); else if(QDCT_HSL_LIMIT_IN)QDCT_SetAlarmCode(QDCT_START_SL_LIMIT_ALARM); else if(!QDCT_XQ_ORIGIN_IN)QDCT_SetAlarmCode(QDCT_START_XQ_ORIGIN_ALARM); else if(!QDCT_XM_ORIGIN_IN)QDCT_SetAlarmCode(QDCT_START_SM_ORIGIN_ALARM); else if(QDCT_SQ_LIMIT_IN)QDCT_SetAlarmCode(QDCT_SQ_LIMIT_ALARM); else if(QDCT_GO_LIMIT_IN && QDCT_JZ_LEFT_IN && QDCT_JZ_RIGHT_IN && QDCT_HSL_ORIGIN_IN && !QDCT_SL_LIMIT_IN) { if(!bRunning && (QDCT_AutoStep == 0) && (GetAlarmCode(QDCT_ALARM_ADDR) == 0)) { bRunning = 1; QDCT_AutoStep = 4; cWorkCnt = 0; TryCnt = 0; SongLaTouOkFlg = 1; dwZipCnt = 0; cFirstStartFlg = 0; ZhuangLiaoOkFlg = 0; } } else { if(!bRunning && (QDCT_AutoStep == 0) && (GetAlarmCode(QDCT_ALARM_ADDR) == 0)) { bRunning = 1; QDCT_AutoStep = 1; cWorkCnt = 0; TryCnt = 0; SongLaTouOkFlg = 1; dwZipCnt = 0; cFirstStartFlg = 1; ZhuangLiaoOkFlg = 0; } } } if(cStopFlg == 1) { if(!X_DRV) cStopFlg = 0; } //停止 if(STOP_IN_UP || bStop) { if(bRunning) { AxisDecStop(X_AXIS); bRunning = 0; QDCT_bOnceStart = 0; bStartOnceTime = 0; bStop = 0; QDCT_AutoStep = 0; QDCT_ZhuangLiaoStep = 0; QDCT_MotorStep = 0; QDCT_JiaLianStep = 0; QDCT_XiaQieStep = 0; QDCT_ZhenDongStep = 0; QDCT_SongLiaoStep = 0; ManFlg = 0; } else { AxisDecStop(X_AXIS); bRunning = 0; QDCT_bOnceStart = 0; bStop = 0; bStartOnceTime = 0; QDCT_AutoStep = 0; QDCT_ZhuangLiaoStep = 0; QDCT_MotorStep = 0; QDCT_JiaLianStep = 0; QDCT_XiaQieStep = 0; QDCT_ZhenDongStep = 0; QDCT_SongLiaoStep = 0; QDCT_SQ_OUT = 0; QDCT_XQ_OUT = 0; QDCT_XM_OUT = 0; QDCT_JD_OUT = 0; QDCT_SL_OUT = 0; QDCT_HSL_OUT = 0; QDCT_KL_OUT = 0; // QDCT_ZDP_OUT= 0; QDCT_SLT_OUT= 0; QDCT_SZ_OUT = QDCT_MOTOR_DISEN; if(GetAlarmCode(QDCT_ALARM_ADDR) != 0)QDCT_SetAlarmCode(QDCT_NO_ALARM); ManFlg = 0; if(!X_DRV && (QDCT_GO_DEC_IN) && !bRunning && (QDCT_MotorStep == 0)) { QDCT_SZ_OUT = QDCT_MOTOR_EN; cStopFlg = 1; AxisMovePos(X_AXIS,QDCT_BACK_LOWSPEED,-QDCT_PARAM_ON_BACK_LENGTH); } } } if(QDCT_bAlarmStop) { bRunning = 0; QDCT_bOnceStart = 0; QDCT_bAlarmStop = 0; bStartOnceTime = 0; AxisDecStop(X_AXIS); QDCT_AutoStep = 0; QDCT_ZhuangLiaoStep = 0; QDCT_MotorStep = 0; QDCT_JiaLianStep = 0; QDCT_XiaQieStep = 0; QDCT_ZhenDongStep = 0; QDCT_SongLiaoStep = 0; ManFlg = 0; } } //电机控制动作 void QDCT_Motor(void) // { static long save_buff,length_buff,gou_zhen_buff,back_dec_buff,dandao_buff,back_buff,gouzhen_buff,go_buff,go_length_buff,jz_buff; switch(QDCT_MotorStep) { case 1: QDCT_MotorDelay = dwTickCount + QD_PARAM_DELAY_BACK; QDCT_MotorStep = 2; break; case 2: if(dwTickCount >= QDCT_MotorDelay) { back_buff = dwRealPos; // QDCT_DIR_OUT = QDCT_Y_DIR_N; if(dwZipCnt == 0) { cSeBiaoOk = 0; cSeBiaoEn = 1; MoveAction_Const_AccDec(X_AXIS, QDCT_DIR_N, QDCT_SEBIAO_LOW_SPEED,1,5,5); } else { cSeBiaoOk = 0; cSeBiaoEn = 0; MoveAction_Const_AccDec(X_AXIS, QDCT_DIR_N, QDCT_PARAM_PUTIN_SPEED,1,5,5); } QDCT_MotorStep = 3; } break; case 3: length_buff = dwRealPos - back_buff; if(length_buff >= (QDCT_PARAM_PUTIN_LENGTH))QDCT_JLT_OUT = 0; if(!QDCT_JLT_IN)QDCT_XM_OUT = 0; if(dwZipCnt != 0) { if((length_buff+QDCT_SEBIAO_LENGTH+QDCT_SEBIAO_BACK_LSPEED_LENGTH) >= QDCT_PARAM_SET_ZIPPER_LENGTH) MoveChangSpeed(X_AXIS,QDCT_SEBIAO_LOW_SPEED); else if(length_buff <= QDCT_PARAM_PUTIN_SPEED_LENGTH) MoveChangSpeed(X_AXIS,QDCT_PARAM_PUTIN_SPEED); else MoveChangSpeed(X_AXIS,QDCT_SEBIAO_HIGH_SPEED); if(cSeBiaoOk) { QDCT_MotorStep = 4; MoveChangSpeed(X_AXIS,QDCT_SEBIAO_BACK_DW_SPEED); } else if(!cSeBiaoEn) { // if((length_buff+QDCT_SEBIAO_TQ_CHECK_LENGTH+QDCT_SEBIAO_LENGTH) >= QDCT_PARAM_SET_ZIPPER_LENGTH) { cSeBiaoOk = 0; cSeBiaoEn = 1; } } } else { if(!X_DRV) { QDCT_JLT_OUT = 0; QDCT_MotorStep = 4; } } break; case 4: if((dwRealPos - back_buff) >= (QDCT_PARAM_PUTIN_LENGTH))QDCT_JLT_OUT = 0; if(!QDCT_JLT_IN)QDCT_XM_OUT = 0; if(!X_DRV && !QDCT_JLT_IN) { QDCT_XM_OUT = 0; QDCT_MotorStep = 5; } break; case 5: if(dwZipCnt == 0) QDCT_MotorStep = 0; else { if(((dwRealPos - back_dec_buff) > (QDCT_PARAM_SET_ZIPPER_LENGTH + QDCT_SEBIAO_ERROR_LENGHT)) || ((dwRealPos - back_dec_buff) < (QDCT_PARAM_SET_ZIPPER_LENGTH - QDCT_SEBIAO_ERROR_LENGHT))) { QDCT_SetAlarmCode(QDCT_SE_BIAO_ALARM); } else { QDCT_MotorStep = 0; } } break; case 30: if(QDCT_SZ_OUT == QDCT_MOTOR_DISEN) { QDCT_SZ_OUT = QDCT_MOTOR_EN; QDCT_MotorDelay = dwTickCount + 50; } if(bRunning) cCountFlg = 0; else cCountFlg = 1;// 手动状态直接关掉计数感应检测功能 QDCT_MotorDelay = dwTickCount + QDCT_PARAM_DELAY_BACK; QDCT_MotorStep = 31; break; case 31: if(dwTickCount >= QDCT_MotorDelay) { gou_zhen_buff = dwRealPos; save_buff = dwRealPos; QDCT_MotorDelay = dwTickCount + QDCT_PARAM_XM_START_TIME; if(QDCT_PARAM_CHANGE_LT) MoveAction_Pulse2_AccDec(X_AXIS,PosToPulse(X_AXIS,QDCT_PARAM_SET_ZIPPER_LENGTH),PosToPulse(X_AXIS,QDCT_PARAM_PUTIN_SPEED_LENGTH),PosToPulse(X_AXIS,QDCT_BACK_LOWSPEED_LENGTH),QDCT_PARAM_JJBACK_SPEED,QDCT_PARAM_PUTIN_SPEED,QDCT_PARAM_START_SPEED, QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE); else MoveAction_Pulse2_AccDec(X_AXIS,PosToPulse(X_AXIS,QDCT_PARAM_SET_ZIPPER_LENGTH),PosToPulse(X_AXIS,QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH),PosToPulse(X_AXIS,QDCT_PARAM_LOWSPEED_LENGTH),QDCT_PARAM_JJBACK_SPEED,QDCT_PARAM_PUTIN_LOW_SPEED,QDCT_PARAM_START_SPEED, QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE); QDCT_MotorStep = 32; } break; case 32: if(QDCT_COUNT_IN || (QDCT_PARAM_SET_ZIPPER_LENGTH <= QDCT_PARAM_CNT_ENABLE_LENGTH))cCountFlg = 1; if(QDCT_GO_DEC_IN_DW)QDCT_XQ_OUT = 1; if(dwTickCount >= QDCT_MotorDelay) { back_buff = dwRealPos; QDCT_MotorStep = 33; } break; case 33: if(QDCT_COUNT_IN || (QDCT_PARAM_SET_ZIPPER_LENGTH <= QDCT_PARAM_CNT_ENABLE_LENGTH))cCountFlg = 1; if(QDCT_GO_DEC_IN_DW)QDCT_XQ_OUT = 1; if((dwRealPos - back_buff) >= (QDCT_PARAM_PUTIN_LENGTH)) { QDCT_JLT_OUT = 0; QDCT_MotorDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_MotorStep = 34; } else if(!X_DRV) { QDCT_JLT_OUT = 0; QDCT_MotorDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_MotorStep = 34; } break; case 34: if(QDCT_COUNT_IN || (QDCT_PARAM_SET_ZIPPER_LENGTH <= QDCT_PARAM_CNT_ENABLE_LENGTH))cCountFlg = 1; if(!QDCT_JLT_IN) { QDCT_XM_OUT = 0; if(QDCT_SongLiaoStep == 0)QDCT_SongLiaoStep = 1; QDCT_MotorDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_MotorStep = 35; } else if(!X_DRV && !QDCT_JLT_IN) { QDCT_XM_OUT = 0; QDCT_MotorDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_MotorStep = 35; } else if(dwTickCount >= QDCT_MotorDelay)QDCT_SetAlarmCode(QDCT_JLT_ALARM); break; case 35: if(QDCT_COUNT_IN || (QDCT_PARAM_SET_ZIPPER_LENGTH <= QDCT_PARAM_CNT_ENABLE_LENGTH))cCountFlg = 1; if(!X_DRV && QDCT_XM_ORIGIN_IN && !QDCT_XM_LIMIT_IN) { if(QDCT_SongLiaoStep == 0)QDCT_SongLiaoStep = 1; QDCT_MotorStep = 36; } else if(dwTickCount >= QDCT_MotorDelay)QDCT_SetAlarmCode(QDCT_XM_ORIGIN_ALARM); break; case 36: if(QDCT_COUNT_IN || (QDCT_PARAM_SET_ZIPPER_LENGTH <= QDCT_PARAM_CNT_ENABLE_LENGTH))cCountFlg = 1; if(!X_DRV) { if(QDCT_SongLiaoStep == 0)QDCT_SongLiaoStep = 1; AxisMovePosAccDec(X_AXIS,QDCT_PARAM_GO_LOWSPEED,QDCT_PARAM_FZ_LENGTH,QDCT_PARAM_START_SPEED,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE); QDCT_MotorStep = 37; } break; case 37: if(QDCT_COUNT_IN || (QDCT_PARAM_SET_ZIPPER_LENGTH <= QDCT_PARAM_CNT_ENABLE_LENGTH))cCountFlg = 1; if(!X_DRV) { if(QDCT_SongLiaoStep == 0)QDCT_SongLiaoStep = 1; if(cCountFlg) QDCT_MotorStep = 0; else QDCT_SetAlarmCode(QDCT_COUNT_ALARM); if(bRunning) { if(!QDCT_NO_ZIPPER_CHECK_IN)QDCT_SetAlarmCode(QDCT_START_NO_ZIPPER_ALARM); } } break; case 40: // if(dwTickCount >= QDCT_MotorDelay) { jz_buff = dwRealPos; if(QDCT_PARAM_SJZ_LENGTH == 0) { QDCT_JD_OUT = 0; } QDCT_MotorDelay = dwTickCount + QDCT_PARAN_SJ_TIME; QDCT_MotorStep = 41; } break; case 41: if(QDCT_JD_OUT && (dwTickCount >= QDCT_MotorDelay)) { AxisMovePosAccDec(X_AXIS,QDCT_PARAM_CUTBACK_SPEED,-(QDCT_PARAM_SJZ_LENGTH + QDCT_PARAM_CUT_BACK_LENGTH),1,10,10); QDCT_MotorStep = 42; } break; case 42: // 切断完成后拉电机动作 if(((QDCT_PARAM_SJZ_LENGTH) <= (dwRealPos - jz_buff))) { QDCT_JD_OUT = 0; QDCT_MotorStep = 43; } else if(!X_DRV) { QDCT_JD_OUT = 0; QDCT_MotorStep = 43; } break; case 43: // 切断完成后拉电机动作 if(!X_DRV) { QDCT_MotorStep = 0; QDCT_MotorDelay = dwTickCount; } break; case 61: // 前点定位数控模式 if(QDCT_JD_OUT || (QDCT_SZ_OUT == QDCT_MOTOR_DISEN)) { QDCT_JD_OUT = 0; QDCT_SZ_OUT = QDCT_MOTOR_EN; QDCT_MotorDelay = dwTickCount + 50; } QDCT_MotorStep = 62; break; case 62: if(dwTickCount >= QDCT_MotorDelay) { if(QDCT_GO_LIMIT_IN || QDCT_GO_DEC_IN) { AxisMovePos(X_AXIS,QDCT_BACK_LOWSPEED,-QDCT_PARAM_ON_BACK_LENGTH); QDCT_MotorDelay = dwTickCount + 1000; } QDCT_MotorStep = 63; QDCT_JD_OUT = 0; } break; case 63: if(!X_DRV && !QDCT_GO_LIMIT_IN && (dwTickCount >= QDCT_MotorDelay)) { go_buff = dwRealPos; if(dwZipCnt > 0) { MoveAction_Const_Stop_AccDec(X_AXIS,QDCT_DIR_P,QDCT_PARAM_JJGO_SPEED,QDCT_PARAM_START_SPEED,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE); } else { MoveAction_Const_Stop_AccDec(X_AXIS,QDCT_DIR_P,QDCT_PARAM_FIRSTSPEED,QDCT_PARAM_START_SPEED,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE); } QDCT_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; QDCT_MotorStep = 64; } break; case 64: { if(((go_buff - dwRealPos) > ((QDCT_PARAM_SET_ZIPPER_LENGTH - QDCT_PARAM_OFFSET_LENGTH) - (QDCT_PARAM_GO_LOWSPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(QDCT_PARAM_JJGO_SPEED,QDCT_PARAM_GO_LOWSPEED,30))) + QDCT_PARAM_SJZ_LENGTH + QDCT_PARAM_CUT_BACK_LENGTH)) || QDCT_GO_DEC_IN_UP) { MoveChangSpeed(X_AXIS,QDCT_PARAM_GO_LOWSPEED); QDCT_MotorStep = 66; QDCT_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; } else if(dwTickCount >= QDCT_MotorDelay)QDCT_SetAlarmCode(QDCT_NO_ZIPPER_ALARM); } break; case 65: if(QDCT_GO_LIMIT_IN_UP) { AxisEgmStop(X_AXIS); QDCT_MotorStep = 66; } else if(dwTickCount >= QDCT_MotorDelay)QDCT_SetAlarmCode(QDCT_NO_ZIPPER_ALARM); break; case 66: if(!X_DRV) { QDCT_MotorDelay = dwTickCount; QDCT_MotorStep = 67; } break; case 67: if(dwTickCount >= QDCT_MotorDelay) { if(QDCT_JiaLianStep == 0) { QDCT_JiaLianStep = 1; QDCT_MotorStep = 68; } } break; case 68: if(QDCT_JiaLianStep == 0) { QDCT_MotorStep = 0; } break; case 100: if((dwTickCount >= QDCT_MotorDelay) && !X_DRV) { AxisMovePos(X_AXIS,QDCT_PARAM_JJBACK_SPEED,-(QDCT_PARAM_SET_ZIPPER_LENGTH)); QDCT_MotorStep = 101; QDCT_MotorDelay = dwTickCount + 1000; } break; case 101: if((dwTickCount >= QDCT_MotorDelay) && !X_DRV) { QDCT_MotorStep = 102; } break; case 102: AxisMovePos(X_AXIS,QDCT_PARAM_JJBACK_SPEED,(QDCT_PARAM_SET_ZIPPER_LENGTH)); QDCT_MotorStep = 100; QDCT_MotorDelay = dwTickCount + 1000; break; } } //切断动作 void QDCT_XiaQieAction(void) { user_datas[121] = QDCT_AutoStep; user_datas[122] = QDCT_ZhuangLiaoStep; user_datas[123] = QDCT_MotorStep; user_datas[124] = QDCT_JiaLianStep; user_datas[125] = QDCT_XiaQieStep; user_datas[126] = QDCT_SongLiaoStep; // user_datas[127] = QDCT_XiaQieStep; if(QDCT_XiaQieStep == 1) { if(QDCT_GO_LIMIT_IN || QDCT_GO_DEC_IN) { if(QDCT_GO_LIMIT_IN) QDCT_SetAlarmCode(QDCT_GO_LIMIT_ALARM); else QDCT_SetAlarmCode(QDCT_DEC_ALARM); } else { QDCT_XiaQieStep = 2; QDCT_XiaQieDelay = dwTickCount + QDCT_PARAM_CUT_DELAY; } } else if((QDCT_XiaQieStep == 2) && (dwTickCount >= QDCT_XiaQieDelay)) { QDCT_XiaQieStep = 3; QDCT_XiaQieDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_XQ_OUT = 1; } else if(QDCT_XiaQieStep == 3) { if(QDCT_XQ_LIMIT_IN) { QDCT_XiaQieDelay = dwTickCount; QDCT_XiaQieStep = 4; } else if(dwTickCount >= QDCT_XiaQieDelay) { QDCT_SetAlarmCode(QDCT_XQ_ALARM); } } else if((QDCT_XiaQieStep == 4) && (dwTickCount >= QDCT_XiaQieDelay)) { QDCT_SQ_OUT = 1; QDCT_XiaQieDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_XiaQieStep = 5; } else if(QDCT_XiaQieStep == 5) { if(QDCT_SQ_LIMIT_IN) { QDCT_XiaQieDelay = dwTickCount + QDCT_PARAM_CUTBACK_DELAY; QDCT_XiaQieStep = 6; } else if(dwTickCount >= QDCT_XiaQieDelay) { QDCT_SetAlarmCode(QDCT_SQ_LIMIT_ALARM); } } else if((QDCT_XiaQieStep == 6) && (dwTickCount >= QDCT_XiaQieDelay)) { QDCT_SQ_OUT = 0; QDCT_XQ_OUT = 0; QDCT_XiaQieDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_XiaQieStep = 7; } else if(QDCT_XiaQieStep == 7) { if(!QDCT_SQ_LIMIT_IN && QDCT_XQ_ORIGIN_IN) { QDCT_XiaQieStep = 0; } else if(dwTickCount >= QDCT_XiaQieDelay) { if(!QDCT_SQ_LIMIT_IN) QDCT_SetAlarmCode(QDCT_SQ_ORIGIN_ALARM); else if(!QDCT_XQ_ORIGIN_IN)QDCT_SetAlarmCode(QDCT_XQ_ORIGIN_ALARM); } } } //装拉头动作 void QDCT_ZLT_Step(void) { if(QDCT_ZhuangLiaoStep == 1) { if(ZhuangLiaoOkFlg) { QDCT_ZhuangLiaoStep = 0; } else { if(cFirstStartFlg && QDCT_JLT_IN) { QDCT_ZhuangLiaoStep = 8; } else { cFirstStartFlg = 0; if(QDCT_SongLiaoStep == 0) { QDCT_SongLiaoStep = 1; QDCT_ZhuangLiaoStep = 2; } } } } else if(QDCT_ZhuangLiaoStep == 2) { if(QDCT_SongLiaoStep == 0) { QDCT_ZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_ZhuangLiaoStep = 3; } } else if(QDCT_ZhuangLiaoStep == 3) { if(QDCT_HSL_ORIGIN_IN && QDCT_XM_ORIGIN_IN && (QDCT_XiaQieStep == 0)) { QDCT_HSL_OUT = 1; QDCT_ZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_ZhuangLiaoStep = 4; } else if(dwTickCount >= QDCT_ZhuangLiaoDelay) { if(!QDCT_HSL_ORIGIN_IN) QDCT_SetAlarmCode(QDCT_HSL_ORIGIN_ALARM); else QDCT_SetAlarmCode(QDCT_XM_ORIGIN_ALARM); } } else if(QDCT_ZhuangLiaoStep == 4) { if(QDCT_HSL_LIMIT_IN) { QDCT_ZhuangLiaoDelay = dwTickCount + QDCT_PARAM_DELAY_JLT; QDCT_ZhuangLiaoStep = 5; } else if(dwTickCount >= QDCT_ZhuangLiaoDelay) { QDCT_SetAlarmCode(QDCT_HSL_LIMIT_ALARM); } } else if((QDCT_ZhuangLiaoStep == 5) && (dwTickCount >= QDCT_ZhuangLiaoDelay)) { QDCT_JLT_OUT = 1; QDCT_ZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_ZhuangLiaoStep = 6; } else if(QDCT_ZhuangLiaoStep == 6) { if(QDCT_JLT_IN) { QDCT_ZhuangLiaoStep = 7; } else if(dwTickCount >= QDCT_ZhuangLiaoDelay) { QDCT_SetAlarmCode(QDCT_JLT_ALARM); } } else if(QDCT_ZhuangLiaoStep == 7) { QDCT_HSL_OUT = 0; QDCT_ZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_ZhuangLiaoStep = 8; } else if(QDCT_ZhuangLiaoStep == 8) { if(QDCT_HSL_ORIGIN_IN && !QDCT_HSL_OUT && QDCT_GO_LIMIT_IN && !QDCT_HSL_LIMIT_IN) { QDCT_XM_OUT = 1; if(cFirstStartFlg) cFirstStartFlg = 0; else SongLaTouOkFlg = 0; if(QDCT_SongLiaoStep == 0)QDCT_SongLiaoStep = 1; QDCT_ZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_ZhuangLiaoStep = 9; } else if(dwTickCount >= QDCT_ZhuangLiaoDelay) { if(QDCT_HSL_LIMIT_IN)QDCT_SetAlarmCode(QDCT_HSL_LIMIT_ALARM); else if(!QDCT_GO_LIMIT_IN)QDCT_SetAlarmCode(QDCT_GO_LIMIT_ALARM); else QDCT_SetAlarmCode(QDCT_HSL_ORIGIN_ALARM); } } else if(QDCT_ZhuangLiaoStep == 9) { if(QDCT_XM_LIMIT_IN) { QDCT_ZhuangLiaoStep = 10; QDCT_ZhuangLiaoDelay = dwTickCount + 1000; } else if(dwTickCount >= QDCT_ZhuangLiaoDelay) { QDCT_SetAlarmCode(QDCT_XM_LIMIT_ALARM); } } else if(QDCT_ZhuangLiaoStep == 10) { if(QDCT_LTCZ_IN) { if(QDCT_PARAM_LOCK_TIME) { QDCT_ZhuangLiaoDelay = dwTickCount + QDCT_PARAM_LOCK_TIME; QDCT_SLT_OUT = 1; QDCT_ZhuangLiaoStep = 20; } else { QDCT_ZhuangLiaoStep = 0; ZhuangLiaoOkFlg = 1; } TryCnt = 0; } else if(dwTickCount >= QDCT_ZhuangLiaoDelay) { if(bRunning) { TryCnt++; if(TryCnt > 4) { QDCT_SetAlarmCode(QDCT_ZLT_ALARM); QDCT_JLT_OUT = 0; QDCT_XM_OUT = 0; } else { QDCT_ZhuangLiaoStep = 11; } } else { QDCT_ZhuangLiaoStep = 0; QDCT_ZhuangLiaoDelay = dwTickCount; } } } else if(QDCT_ZhuangLiaoStep == 11) //装拉头失败重复装几次拉头 { QDCT_XM_OUT = 0; QDCT_JLT_OUT = 0; QDCT_ZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_ZhuangLiaoStep = 12; } else if(QDCT_ZhuangLiaoStep == 12) { if(QDCT_XM_ORIGIN_IN) { QDCT_ZhuangLiaoStep = 13; } else if(dwTickCount >= QDCT_ZhuangLiaoDelay) { QDCT_SetAlarmCode(QDCT_XM_ORIGIN_ALARM); } } else if(QDCT_ZhuangLiaoStep == 13) { QDCT_ZhuangLiaoStep = 1; } else if(QDCT_ZhuangLiaoStep == 20) { QDCT_ZhuangLiaoStep = 0; QDCT_ZhuangLiaoDelay = dwTickCount; ZhuangLiaoOkFlg = 1; } } void QDCT_SL_Step(void) { if(QDCT_SongLiaoStep == 1) { if(SongLaTouOkFlg) { QDCT_SongLiaoStep = 0; } else { QDCT_SL_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_SongLiaoStep = 2; } } else if(QDCT_SongLiaoStep == 2) { if(QDCT_HSL_ORIGIN_IN && !QDCT_HSL_LIMIT_IN) { QDCT_SL_OUT = 1; QDCT_SL_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_SongLiaoStep = 3; } else if(dwTickCount >= QDCT_SL_Delay) QDCT_SetAlarmCode(QDCT_SL_ALARM); } else if(QDCT_SongLiaoStep == 3) { if(QDCT_SL_LIMIT_IN) { QDCT_SL_Delay = dwTickCount + QDCT_PARAM_SL_BACKDELAY; QDCT_SongLiaoStep = 4; } else if(dwTickCount >= QDCT_SL_Delay) QDCT_SetAlarmCode(QDCT_SL_ALARM); } else if((QDCT_SongLiaoStep == 4) && (dwTickCount >= QDCT_SL_Delay)) { QDCT_SL_OUT = 0; QDCT_SL_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_SongLiaoStep = 5; } else if(QDCT_SongLiaoStep == 5) { if(!QDCT_SL_LIMIT_IN) { QDCT_SongLiaoStep = 0; QDCT_SL_Delay = dwTickCount; SongLaTouOkFlg = 1; } else if(dwTickCount >= QDCT_SL_Delay) QDCT_SetAlarmCode(QDCT_SL_ALARM); } } //手动动作 void QDCT_ManualAction(void) { if(bRunning == 0) { if(bClearTotal) //切断计数清零 { bClearTotal = 0; ClrcToTal(QDCT_TOTAL_ADDR); } if(QDCT_bClerNowTotal) { QDCT_bClerNowTotal = 0; cTbCnt = 0; ClrcToTal(QDCT_NOWTOTAL_ADDR); } if(QDCT_bQieDuan) { QDCT_bQieDuan = 0; if(QDCT_XiaQieStep == 0)QDCT_XiaQieStep = 1; } if(QDCT_bQianDianDW) { QDCT_bQianDianDW = 0; if((QDCT_MotorStep == 0) && !QDCT_SQ_LIMIT_IN && !QDCT_XQ_LIMIT_IN) { QDCT_MotorStep = 61; dwZipCnt = 0; } else if(QDCT_SQ_LIMIT_IN) QDCT_SetAlarmCode(QDCT_SQ_LIMIT_ALARM); } if(QDCT_bManXM) { QDCT_bManXM = 0; QDCT_XM_OUT = ~QDCT_XM_OUT; if(QDCT_HSL_OUT == 1)QDCT_XM_OUT = 0; } if(QDCT_bManSQ) { QDCT_bManSQ = 0; QDCT_SQ_OUT = ~QDCT_SQ_OUT; if(QDCT_GO_LIMIT_IN || QDCT_GO_DEC_IN) QDCT_SQ_OUT = 0; } if(QDCT_bManXQ) { QDCT_bManXQ = 0; QDCT_XQ_OUT = ~QDCT_XQ_OUT; if(QDCT_GO_LIMIT_IN || QDCT_GO_DEC_IN)QDCT_XQ_OUT = 0; } if(QDCT_bManJD) { QDCT_bManJD = 0; QDCT_JD_OUT = ~QDCT_JD_OUT; } if(QDCT_bManSL) { QDCT_bManSL = 0; QDCT_SL_OUT = ~QDCT_SL_OUT; if(!QDCT_HSL_ORIGIN_IN)QDCT_SL_OUT = 0; } if(QDCT_bManHSL) { QDCT_bManHSL = 0; QDCT_HSL_OUT = ~QDCT_HSL_OUT; if(QDCT_XM_OUT || QDCT_SL_LIMIT_IN)QDCT_HSL_OUT = 0; } if(QDCT_bManZD) { QDCT_bManZD = 0; QDCT_ZDP_OUT = ~QDCT_ZDP_OUT; } if(QDCT_bManKL) { QDCT_bManKL = 0; // if(QDCT_KL_OUT == 0) { QDCT_KL_OUT = ~QDCT_KL_OUT; // QDCT_KL_Delay = dwTickCount + QDCT_PARAM_KL_DELAY; } } if(QDCT_bManSLT) { QDCT_bManSLT = 0; QDCT_SLT_OUT = ~QDCT_SLT_OUT; } if(QDCT_bManJLT) { QDCT_bManJLT = 0; QDCT_JLT_OUT = ~QDCT_JLT_OUT; } if(QDCT_bZhuangLiao) { QDCT_bZhuangLiao = 0; if(QDCT_ZhuangLiaoStep == 0) { TryCnt = 0; SongLaTouOkFlg = 1; QDCT_ZhuangLiaoStep = 3; cFirstStartFlg = 0; } } if(QDCT_bSongLT) { QDCT_bSongLT = 0; if(QDCT_SongLiaoStep == 0) { QDCT_SongLiaoStep = 1; SongLaTouOkFlg = 0; } } if(QDCT_bChuanLT) { QDCT_bChuanLT = 0; if(!QDCT_BACK_LIMIT_IN) { if(QDCT_MotorStep == 0)QDCT_MotorStep = 30; } } if(QDCT_bManSZ) { QDCT_bManSZ = 0; QDCT_SZ_OUT = ~QDCT_SZ_OUT; } //电机控制 if(QDCT_bMotorGo && !QDCT_GO_LIMIT_IN && !QDCT_SQ_LIMIT_IN) { QDCT_JD_OUT = 0; QDCT_SZ_OUT = QDCT_MOTOR_EN; if(!X_DRV)MoveAction_Const_AccDec(X_AXIS, QDCT_DIR_P, 5,5,10,10); } else if(QDCT_bMotorGo && QDCT_SQ_LIMIT_IN) QDCT_SetAlarmCode(QDCT_SQ_LIMIT_ALARM); if(QDCT_bMotorBack && !QDCT_BACK_LIMIT_IN) { QDCT_JD_OUT = 0; QDCT_SZ_OUT = QDCT_MOTOR_EN; if(!X_DRV)MoveAction_Const_AccDec(X_AXIS, QDCT_DIR_N, 5,5,10,10); } if(!QDCT_bMotorGo && !QDCT_bMotorBack && (QDCT_MotorStep == 0) && (cStopFlg == 0)) { if(X_DRV)AxisDecStop(X_AXIS); } if(QDCT_GO_LIMIT_IN && (QDCT_MotorStep == 0) && !QDCT_bMotorBack &&(QDCT_AutoStep == 0) && (cStopFlg == 0)) { if(X_DRV)AxisEgmStop(X_AXIS); } } } #endif