#include "global.h" #if CHANG_SHENG_GEI_LI_MACHINE == 1 /* unsigned short cTaiMiamMotor; unsigned long cSlowPusle; unsigned char bDecEn,QDCT_bXiaMo_En,cHemo_OK,cQTltOK,cHTltOk,cQHsltOK,cHHsltOK,DCCT_cSL_En; unsigned char QDCT_bStartOnceTime,bOnceProcess,QDCT_bBackLimitCheck_EN; unsigned short QDCT_cWorkCnt; unsigned char QDCT_cQTryCnt = 0; unsigned short QDCT_cZhaCnt = 0; unsigned char QDCT_bQZhuangLiaoOkFlg = 0,QDCT_bHZhuangLiaoOkFlg = 0; unsigned char QDCT_bQTuiLaTouOkFlg = 0,QDCT_bHTuiLaTouOkFlg = 0; unsigned char QDCT_bManFlg; unsigned char QDCT_bStopFlg = 0, cResetOrigin_Flag= 0,QDCT_bCheck_Go_In_Flag; unsigned char QDCT_bFirstQStartFlg = 0,QDCT_bFirstHStartFlg = 0; unsigned char cCountFlg = 0,QDCT_bTuiLianOKFlag = 0; short *qdct_length_buff; static long save_limit_pos; unsigned char cTuiLianStep,QDCT_bChuan_LianCheckOK = 0,QDCT_cChuan_Lian_ErrorNum,cSongLaTouEn = 0,QDCT_bCheckDinWeiFlag; */ void GL_QDCT_ManualAction(void); void GL_QDCT_JiaLianAction(void); void GL_QDCT_AutoStepAction(void); void GL_QDCT_QZhenDongAction(void); void GL_QDCT_HZhenDongAction(void); void GL_QDCT_TableAction(void); void GL_QDCT_Motor(void); void GL_QDCT_CheckStart(void); void GL_QDCT_QTuiLT_Step(void); void GL_QDCT_HTuiLT_Step(void); void GL_QDCT_XiaQieAction(void); void GL_QDCT_AlarmProtect(void); void GL_QDCT_QZLT_Step(void); void GL_QDCT_HZLT_Step(void); void GL_QDCT_TuiLian(void); void GL_QDCT_TuiLianAction(void); void GL_QDCT_HeMo_Step(void);//装拉头完成合模动作 void GL_QDCT_TestMotor(void); void GL_QDCT_ExtiActionX31(void) { } void GL_QDCT_SeBiaoAction(void) { if(QDCT_SEBIAO_IN_DW) { if(QDCT_bSeBiaoEn && !QDCT_bSeBiaoOk) { QDCT_bSeBiaoEn = 0; QDCT_bSeBiaoOk = 1; AxisMovePosAccDec(X_AXIS,QDCT_SEBIAO_BACK_DW_SPEED,QDCT_SEBIAO_LENGTH, QDCT_SEBIAO_BACK_DW_SPEED,QDCT_SEBIAO_BACK_DW_SPEED,5,10,10); //直接定位长度 // SetRemainLength(X_AXIS,QDCT_SEBIAO_LENGTH,QDCT_SEBIAO_BACK_DW_SPEED); // tXAxisStepper.State = 5; } } } //故障报警 void GL_QDCT_SetAlarmCode(unsigned alarm_code) { SetAlarmCode(QDCT_ALARM_ADDR,alarm_code); QDCT_bAlarmStop = 1; } //初始化动作 void GL_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; buff_pulse = QDCT_PARAM_YLCYCLE_PULSE; buff_dist = QDCT_PARAM_YLCYCLE_LENGTH; YGearRatio = buff_pulse/buff_dist; SetEnReverse(X_AXIS, 0); SetEnReverse(Y_AXIS, 1); SetEnReverse(Z_AXIS, 1); SetDirReverse(X_AXIS, 1); SetDirReverse(Y_AXIS, 0); SetDirReverse(Z_AXIS, 0); SetEn(X_AXIS, QDCT_MOTOR_DISEN); SetEn(Y_AXIS, QDCT_MOTOR_DISEN); SetEn(Z_AXIS, QDCT_MOTOR_DISEN); QDCT_QZDPStep= 1; QDCT_HZDPStep= 1; QDCT_TLPStep = 1; QDCT_cWorkCnt = 0; QDCT_cZhaCnt = 0; dwZipCnt = 0; QDCT_bBackLimitCheck_EN = 1; if(QDCT_PARAM_MAX_BACK_LENGTH < 13000) QDCT_PARAM_MAX_BACK_LENGTH = 25000; SetAlarmCode(QDCT_ALARM_ADDR,QDCT_NO_ALARM); } void GL_QDCT_Action(void) { dwXRealPos = GetPos(X_AXIS); dwYRealPos = GetPos(Y_AXIS); dwZRealPos = GetPos(Z_AXIS); user_datas[121] = dwXRealPos;// GetPos(Y_AXIS);//QDCT_HZhuangLiaoStep;//QDCT_AutoStep; user_datas[122] = GetPos(X_AXIS); user_datas[123] = QDCT_MotorStep; user_datas[124] = QDCT_AutoStep ; user_datas[125] = QDCT_XiaQieStep;//QDCT_bChuan_LianCheckOK; user_datas[126] = QDCT_HZhuangLiaoStep;//QDCT_QZhuangLiaoStep; user_datas[127] = QDCT_HZhuangLiaoStep; // user_datas[128] = QDCT_HTLTStep;//tXAxisStepper.cPmovPulse; // SetEn(X_AXIS, QDCT_MOTOR_DISEN); GL_QDCT_SeBiaoAction(); GL_QDCT_TuiLian(); GL_QDCT_AlarmProtect(); GL_QDCT_QZhenDongAction(); GL_QDCT_HZhenDongAction(); GL_QDCT_CheckStart(); GL_QDCT_QZLT_Step(); GL_QDCT_HZLT_Step(); GL_QDCT_TableAction(); GL_QDCT_QTuiLT_Step(); GL_QDCT_HTuiLT_Step(); GL_QDCT_JiaLianAction(); GL_QDCT_XiaQieAction(); GL_QDCT_Motor(); GL_QDCT_ManualAction(); GL_QDCT_AutoStepAction(); GL_QDCT_HeMo_Step(); GL_QDCT_TestMotor(); } void GL_QDCT_TestMotor(void) { if(dwTickCount >= cTesttime) { cTesttime = dwTickCount + 250; QDCT_Test_OUT = !QDCT_Test_OUT; } #if 1 switch(QDCT_TestMotorStep) { //1到10步为回到原点 case 1: SetEn(X_AXIS, QDCT_MOTOR_EN); //锁轴 QDCT_TestMotorDelay = dwTickCount + 150; QDCT_TestMotorStep = 2; break; case 2: if(dwTickCount >= QDCT_TestMotorDelay)//锁轴时间到 { AxisContinueMoveAcc(X_AXIS,QDCT_PARAM_GO_LOWSPEED, QDCT_DIR_N,1600,800,15,15); QDCT_TestMotorStep= 3; } break; case 3: //回到原点 if(QDCT_GO_LIMIT_IN) //最前点感应 { QDCT_TestMotorDelay = dwTickCount + 50; QDCT_TestMotorStep= 4; SetPos(X_AXIS, QDCT_PARAM_JJDINGWEI_LENGTH); dwXRealPos = QDCT_PARAM_JJDINGWEI_LENGTH; AxisMovePosAccDec(X_AXIS,QDCT_PARAM_GO_LOWSPEED,-QDCT_PARAM_JJDINGWEI_LENGTH,QDCT_PARAM_GO_LOWSPEED,600,10,QDCT_PARAM_DEC_PULSE,0); } break; case 4: if(!X_DRV) { SetPos(X_AXIS, 0); QDCT_TestMotorDelay = dwTickCount + QDCT_PARAM_FZ_DELAY; QDCT_TestMotorStep= 5; } break; case 5: if(dwTickCount >= QDCT_TestMotorDelay) { if(1)//QDCT_bTest) { QDCT_TestMotorStep= 6; AxisMovePosAccDec(X_AXIS,QDCT_PARAM_JJBACK_SPEED,QDCT_PARAM_SET_ZIPPER_LENGTH,1600,800,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE,50); cTesttime = dwTickCount; } } break; case 6: if(!X_DRV) { user_datas[128] = dwTickCount - cTesttime; QDCT_TestMotorDelay = dwTickCount + QDCT_PARAM_FZ_DELAY; QDCT_TestMotorStep= 7; } break; case 7: if(dwTickCount >= QDCT_TestMotorDelay) { if(1)//QDCT_bTest) { QDCT_TestMotorStep= 3; AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_JJGO_SPEED,-(QDCT_PARAM_SET_ZIPPER_LENGTH - QDCT_PARAM_JJDINGWEI_LENGTH-100),1600,800, QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE,80); cTesttime = dwTickCount; } } break; } #endif } // void GL_QDCT_TuiLian(void) { #if 1 if(QDCT_bTuiLianOKFlag && (QDCT_YD_OUT && QDCT_SL_OUT)) { QDCT_TuiLianStep = 0; return; } switch(QDCT_TuiLianStep) { case 0: break; case 1: QDCT_TuiLianStep = 2; QDCT_YD_OUT = 1; break; case 2: QDCT_TLDelay = dwTickCount+QDCT_PARAM_DELAY_SL; QDCT_TuiLianStep = 3; break; case 3: if(dwTickCount >= QDCT_TLDelay) { QDCT_SL_OUT = 1; QDCT_TLDelay = dwTickCount; QDCT_TuiLianStep = 4; QDCT_bTuiLianOKFlag = 1; } break; case 4: if(dwTickCount >= QDCT_TLDelay) { QDCT_TuiLianStep = 0; } break; } #endif } //前振动 void GL_QDCT_QZhenDongAction(void) { #if 1 switch(QDCT_QZDPStep) { case 1: if((dwTickCount >= QDCT_QZhenDongDelay)) { if(!QDCT_PARAM_QLT_ON && bRunning) { QDCT_QZDP_OUT = 0; QDCT_QZDPStep = 0; } else { if(!QDCT_QZDP_IN) { QDCT_QZhenDongDelay = dwTickCount + QDCT_PARAM_ZD_DELAY_WORK; QDCT_QZDPStep = 2; } else { QDCT_QZDP_OUT = 0; } } } break; case 2: if((dwTickCount >= QDCT_QZhenDongDelay)) { QDCT_QZDP_OUT = 1; if(QDCT_QZDP_IN) { QDCT_QZDPStep = 3; QDCT_QZhenDongDelay = dwTickCount + QDCT_PARAM_ZD_WORK_TIME; } } break; case 3: if((QDCT_QZDPStep == 3) && (dwTickCount >= QDCT_QZhenDongDelay)) { if(QDCT_QZDP_IN) { QDCT_QZDPStep = 1; QDCT_QZDP_OUT = 0; } else { QDCT_QZDPStep = 2; } } break; } //因打拉片和挡拉片共用,用时间来做动作 if(QDCT_PARAM_TLP_TIME) { if(QDCT_QZDP_OUT && QDCT_PARAM_TLP_ENABLE) { if((dwTickCount >= QDCT_QDLPDelay)) { QDCT_QDLPDelay = dwTickCount + QDCT_PARAM_TLP_TIME; QDCT_QDLP_OUT = ~QDCT_QDLP_OUT; } } else { QDCT_QDLP_OUT = 0; } } #endif } //后振动盘 void GL_QDCT_HZhenDongAction(void) { #if 1 switch(QDCT_HZDPStep) { case 1: if((dwTickCount >= QDCT_HZhenDongDelay)) { //后拉头使能 if(!QDCT_PARAM_HLT_ON && bRunning) { QDCT_HZDP_OUT = 0; QDCT_HZDPStep = 0; } else { if(!QDCT_HZDP_IN) { QDCT_HZhenDongDelay = dwTickCount + QDCT_PARAM_ZD_DELAY_WORK; QDCT_HZDPStep = 2; } else { QDCT_HZDP_OUT = 0; } } } break; case 2: if((dwTickCount >= QDCT_HZhenDongDelay)) { QDCT_HZDP_OUT = 1; if(QDCT_HZDP_IN) { QDCT_HZDPStep = 3; QDCT_HZhenDongDelay = dwTickCount + QDCT_PARAM_ZD_WORK_TIME; } } break; case 3: if((dwTickCount >= QDCT_HZhenDongDelay)) { if(QDCT_HZDP_IN) { QDCT_HZDPStep = 1; QDCT_HZDP_OUT = 0; } else { QDCT_HZDPStep = 2; } } break; } //因打拉片和挡拉片共用,用时间来做动作 if(QDCT_PARAM_TLP_TIME) { if(QDCT_HZDP_OUT && QDCT_PARAM_TLP_ENABLE) { if((dwTickCount >= QDCT_HDLPDelay)) { QDCT_HDLPDelay = dwTickCount + QDCT_PARAM_TLP_TIME; QDCT_HDLP_OUT = ~QDCT_HDLP_OUT; } } else { QDCT_HDLP_OUT = 0; } } #endif } void GL_QDCT_AlarmProtect(void) { static unsigned short ka_dai_cnt; #if 1 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; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 1; } } } else { if(QDCT_BACK_LIMIT_IN) { if((dwTickCount >= QDCT_MotorBackLimitDelay) && QDCT_bBackLimitCheck_EN && X_DRV) { AxisEgmStop(X_AXIS); QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); } } else { QDCT_MotorBackLimitDelay = dwTickCount + 30; } } } else //软件限位 { } if(QDCT_KA_DAI_IN) { if((dwTickCount >= QDCT_KaDaiTime) && bRunning) { GL_QDCT_SetAlarmCode(QDCT_KD_ALARM); } } else { QDCT_KaDaiTime = dwTickCount + 70; } #endif } void GL_QDCT_JiaLianAction(void) { #if 1 switch(QDCT_JiaLianStep) { case 1: QDCT_JD_Delay = dwTickCount + QDCT_PARAM_JD_DELAY; QDCT_JiaLianStep = 2; break; case 2: if(dwTickCount >= QDCT_JD_Delay) { QDCT_JD_OUT = 1; QDCT_JD_Delay = dwTickCount + QDCT_PARAM_DELAY_KL; QDCT_JiaLianStep = 3; } break; case 3: if((dwTickCount >= QDCT_JD_Delay)) { if(!QDCT_PARAM_QLT_ON && !QDCT_PARAM_HLT_ON) { QDCT_JD_Delay = dwTickCount; QDCT_YD_OUT = 0; QDCT_JiaLianStep = 4; } else { //单拉头时开链 if(QDCT_LATOU) QDCT_KL_OUT = 1; else //夹带输出后吹气 { QDCT_CQ_OUT = 1; QDCT_CQDelay = dwTickCount + QDCT_PARAM_CQ_TIME; } // QDCT_YD_OUT = 0; QDCT_JD_Delay = dwTickCount + QDCT_PARAM_KL_TIME; } QDCT_JiaLianStep = 4; } break; case 4: if(dwTickCount >= QDCT_JD_Delay) { QDCT_KL_OUT = 0; QDCT_JiaLianStep = 0; } break; } #endif } unsigned char GL_QDCT_CheckLength(void) { //单拉头 无限长度 if(QDCT_LATOU && QDCT_LONG_LENGTH_USE) { if(QDCT_PARAM_SET_ZIPPER_LENGTH > QDCT_PARAM_TRANS_LENGTH) return 1; else return 0; } else return 0; } //自动动作 void GL_QDCT_AutoStepAction(void) { // static unsigned char jz_over; #if 1 if(bRunning) { switch(QDCT_AutoStep) { case 1: QDCT_bJZ_over = 0; QDCT_cQTryCnt = 0; QDCT_cChuan_Lian_ErrorNum = 0; QDCT_AutoStep = 2; if(QDCT_QZDPStep == 0) QDCT_QZDPStep = 1; if(QDCT_HZDPStep == 0) QDCT_HZDPStep = 1; QDCT_AutoDelay = dwTickCount + 5; if(!QDCT_bQZhuangLiaoOkFlg) QDCT_QZhuangLiaoStep = 1;//前装料 if(!QDCT_bHZhuangLiaoOkFlg) QDCT_HZhuangLiaoStep = 1;//后装料 DCCT_cSL_En = 2; //第一条可不受限制横送料 break; case 2: if((QDCT_MotorStep == 0)) { DCCT_cSL_En = 2; //第一条可不受限制横送料 if(dwTickCount >= QDCT_AutoDelay) QDCT_AutoStep = 3; } break; case 3: if(QDCT_MotorStep == 0) { QDCT_MotorStep = 61; //前进定位好后自动夹链和开链 QDCT_AutoStep = 4; QDCT_bBackLimitCheck_EN = 0; } break; case 4: //考虑第一条电机在前点要退出来,第二条后也不可能在前点,不能合模 if(!QDCT_GO_LIMIT_IN || QDCT_JD_OUT) QDCT_AutoStep = 5; break; case 5: QDCT_AutoStep = 9; break; case 6: QDCT_AutoStep = 7; break; case 7: QDCT_AutoStep = 8; break; case 9: if(QDCT_GO_LIMIT_IN || (dwZipCnt)) //第一条要到前限位才能合模 { if(QDCT_bCheckDinWeiFlag == 0) QDCT_HeMoStep = 1; QDCT_cQTryCnt = 0; QDCT_AutoStep = 10; } break; case 10: if((QDCT_MotorStep == 0) && (QDCT_HeMoStep == 0)) //前定位完成,QDCT_GO_LIMIT_IN也肯定有信号 { QDCT_bXiaMo_En = 0; QDCT_AutoStep = 11; QDCT_bCheck_Go_In_Flag = 1; } break; case 11: // if(QDCT_START_IN_UP) if((QDCT_MotorStep == 0)) // { QDCT_bBackLimitCheck_EN = 1; if(QDCT_SEBIAO_MODE) //色标模式 QDCT_MotorStep = 1; else QDCT_MotorStep = 30;//穿入启动 DCCT_cSL_En = 0; //不受限制横送料 QDCT_bChuan_LianCheckOK = 0; QDCT_AutoStep = 12; } break; case 12: if(((QDCT_MotorStep == 0) || (QDCT_MotorStep == 40)) && !X_DRV) { QDCT_AutoStep = 13; } break; case 13: if(GL_QDCT_CheckLength()) //判断长度转换压轮电机拖带 { QDCT_AutoStep = 50; } else QDCT_AutoStep = 14; break; case 14: if(QDCT_bStartOnceTime) { QDCT_bStartOnceTime = 0; QDCT_AutoStep = 0; bRunning = 0; } else { if((QDCT_XiaQieStep == 0)) { QDCT_XiaQieStep = 1; DCCT_cSL_En = 0; //下切时只横送不能锁紧拉头 QDCT_AutoStep = 15; } } break; case 15://拖带完成 if(!X_DRV && !Y_DRV) { if(((QDCT_XiaQieStep == 0) || (QDCT_XiaQieStep == 7)) && !QDCT_SQ_LIMIT_IN && (!QDCT_XQ_LIMIT_IN || QDCT_PARAM_XM_MODE)) { if(QDCT_MotorStep == 0) { //切断完成拉出链方式 if(QDCT_bJZ_over)//无限长方式由压轮带出拉链 { QDCT_bJZ_over = 0; QDCT_MotorStep = 160; QDCT_MotorDelay = dwTickCount + QDCT_PARAM_YL_SL_DELAY; } else QDCT_MotorStep = 80; QDCT_AutoStep = 16; } } } break; case 16: if((QDCT_MotorStep == 0)) { QDCT_bXiaMo_En= 1; DCCT_cSL_En = 2; //横送料打开 if((QDCT_CHUAN_LIAN_CHECK_SELECT == 0) || QDCT_bChuan_LianCheckOK) { CalProSP(QDCT_SPEED_ADDR); //计算生产速度 if(QDCT_bCheckDinWeiFlag == 0) { AddToTal(QDCT_TOTAL_ADDR); //生产总量加1并保存 AddToTal(QDCT_NOWTOTAL_ADDR); //生产总量加1并保存 QDCT_cWorkCnt++; QDCT_cZhaCnt++; QDCT_PARAM_TB_CNT1++; QDCT_PARAM_TB_CNT2++; QDCT_cChuan_Lian_ErrorNum = 0; if(GetAlarmCode(QDCT_ALARM_ADDR) == QDCT_CLOK_ALARM) SetAlarmCode(QDCT_ALARM_ADDR,QDCT_NO_ALARM); } QDCT_bCheckDinWeiFlag = 0; if(dwZipCnt < 3) dwZipCnt++;; } else { QDCT_cChuan_Lian_ErrorNum++; if(QDCT_cChuan_Lian_ErrorNum >= 1) { SetAlarmCode(QDCT_ALARM_ADDR,QDCT_CLOK_ALARM); if(QDCT_cChuan_Lian_ErrorNum >= 2) QDCT_bSingOneFlg = 1; } } if(QDCT_PARAM_TB_CNT1 >= QDCT_PARAM_TABLE_NUM) { QDCT_TB_OUT = 1; QDCT_PARAM_TB_CNT1 = 0; //QDCT_PARAM_TB_CNT2 = 0; QDCT_TableDelay = dwTickCount + QDCT_PARAM_TABLE_TIME; } if((GetTotal(QDCT_TOTAL_ADDR) >= GetTotal(QDCT_SETTOTAL_ADDR)) && (GetTotal(QDCT_SETTOTAL_ADDR) != 0)) { SetAlarmCode(QDCT_ALARM_ADDR,QDCT_TOTAL_ALARM); QDCT_bSingOneFlg = 1; QDCT_AutoStep = 17; } else { QDCT_AutoStep = 17; } } break; case 17: if(GetTotal(QDCT_NOWTOTAL_ADDR) >= QDCT_ZHA_NO) //扎数到 { //扎数到了,台面输出 QDCT_TB_OUT = 1; QDCT_PARAM_TB_CNT1 = 0; QDCT_TableDelay = dwTickCount + QDCT_PARAM_TABLE_TIME2; ClrcToTal(QDCT_NOWTOTAL_ADDR); if(( QDCT_ZHA_STOP_TIME > 0)) //扎数不能为0 { if(QDCT_ZHA_NO > 0) { QDCT_AutoDelay = dwTickCount + QDCT_ZHA_STOP_TIME; dwZipCnt = 5; } } else QDCT_bSingOneFlg = 1; if(QDCT_bSingOneFlg) { QDCT_bSingOneFlg = 0; QDCT_AutoStep = 0; bRunning = 0; } else QDCT_AutoStep = 2; } else { QDCT_AutoDelay = dwTickCount + QDCT_PARAM_CYCLE_DELAY; //单条停止 if(QDCT_bSingOneFlg) { QDCT_bSingOneFlg = 0; QDCT_AutoStep = 0; bRunning = 0; } else QDCT_AutoStep = 2; } break; case 50: QDCT_YL_OUT = 1; QDCT_AutoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_AutoStep = 51; break; case 51: if(QDCT_YL_LIMIT_IN) { QDCT_AutoDelay = dwTickCount + QDCT_PARAM_YL_DELAY; QDCT_AutoStep = 52; } else if(dwTickCount >= QDCT_AutoDelay) GL_QDCT_SetAlarmCode(QDCT_YL_LIMIT_ALARM); break; case 52: if((dwTickCount >= QDCT_AutoDelay) && (QDCT_MotorStep == 0)) { QDCT_bJZ_over = 1; QDCT_MotorStep = 150; //走松夹子 if(!Y_DRV)//压轮电机动作 细分为1600 AxisMovePosAccDec(Y_AXIS,QDCT_PARAM_YL_SPEED,(QDCT_PARAM_SET_ZIPPER_LENGTH-QDCT_PARAM_TRANS_LENGTH+1000), QDCT_PARAM_START_SPEED,1000,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE,30); QDCT_AutoStep = 53; } break; case 53: if((dwTickCount >= QDCT_AutoDelay)) { if(!Y_DRV) { QDCT_YD_OUT = 1; QDCT_AutoStep = 54; QDCT_AutoDelay = dwTickCount + QDCT_PARAM_YL_FZ_DELAY; } } break; case 54: if((dwTickCount >= QDCT_AutoDelay)) { if(!Y_DRV) AxisMovePosAccDec(Y_AXIS,QDCT_PARAM_YL_SPEED,-QDCT_PARAM_FZ_LENGTH, 2000,1000,10,10,10); QDCT_AutoStep = 14; } break; //检测到拉链没有穿进去 case 70: if((dwTickCount >= QDCT_AutoDelay)) //张开夹子 { //检测到拉链没有穿入,进到第一个拉头处夹住出不计数 QDCT_MotorStep = 200; QDCT_AutoStep = 71; } break; case 71: if(QDCT_MotorStep == 0) { QDCT_XM_OUT = 0; //下模退 QDCT_QJLT_OUT = 0; //前后夹拉头退 QDCT_HJLT_OUT = 0; QDCT_AutoDelay = dwTickCount + 40; QDCT_AutoStep = 72; } break; case 72: if((dwTickCount >= QDCT_AutoDelay)) //延时下切 { if(QDCT_cChuan_Lian_ErrorNum == 0) QDCT_AutoStep = 14; else GL_QDCT_SetAlarmCode(QDCT_CLOK_ALARM); } break; } } #endif } //台面电机动作 void GL_QDCT_TableAction(void) { if(QDCT_TB_OUT && (dwTickCount >= QDCT_TableDelay)) QDCT_TB_OUT = 0; } void GL_QDCT_CheckStart(void) { static unsigned char long_stop_flg = 0,yd_back_flg,sl_flg; static unsigned long long_time_delay,yd_back_delay,sl_delay,sl_delayStart,dw_Stop_In_Delay; //运行指示灯 QDCT_STATE_RUN = bRunning; if(GetAlarmCode(QDCT_ALARM_ADDR) == 0) QDCT_STATE_ERROR = 0; else QDCT_STATE_ERROR = 1; //启动 自动启动 单一自动 if((QDCT_START_IN_UP || bStart || QDCT_bOnceStart || QDCT_bCheckDinWei)) { if((dwTickCount >= sl_delayStart) && !bRunning) { if(QDCT_bOnceStart) { QDCT_bOnceStart = 0; QDCT_bStartOnceTime = 1; } bStart = 0; if(!QDCT_NO_ZIPPER_CHECK_IN)GL_QDCT_SetAlarmCode(QDCT_START_NO_ZIPPER_ALARM); else if(QDCT_PARAM_SET_ZIPPER_LENGTH <500)GL_QDCT_SetAlarmCode(QDCT_ZIPPER_LENGTH_ALARM); else if((QDCT_QLTCZ_IN || QDCT_HLTCZ_IN) && !QDCT_XM_OUT)GL_QDCT_SetAlarmCode(QDCT_START_LTCZ_ALARM); else if(!QDCT_QHSL_ORIGIN_IN || !QDCT_HHSL_ORIGIN_IN)GL_QDCT_SetAlarmCode(QDCT_START_GL_ORIGIN_ALARM); else if(QDCT_HHSL_LIMIT_IN || QDCT_HHSL_LIMIT_IN)GL_QDCT_SetAlarmCode(QDCT_START_SL_LIMIT_ALARM); else if(!QDCT_XM_ORIGIN_IN)GL_QDCT_SetAlarmCode(QDCT_START_SM_ORIGIN_ALARM); else if(QDCT_XQ_LIMIT_IN && !QDCT_PARAM_XM_MODE)GL_QDCT_SetAlarmCode(QDCT_XQ_LIMIT_ALARM); else if(QDCT_SQ_LIMIT_IN)GL_QDCT_SetAlarmCode(QDCT_SQ_LIMIT_ALARM); else if(QDCT_YL_LIMIT_IN)GL_QDCT_SetAlarmCode(QDCT_YL_LIMIT_ALARM); else if(QDCT_KA_DAI_IN)GL_QDCT_SetAlarmCode(QDCT_KD_ALARM); else if(QDCT_GO_LIMIT_IN && (QDCT_YD_OUT && ((QDCT_SL_OUT && QDCT_PARAM_XM_MODE) || !QDCT_PARAM_XM_MODE) || (GetAlarmCode(QDCT_ALARM_ADDR) == QDCT_ZLT_ALARM))) { if(((GetAlarmCode(QDCT_ALARM_ADDR) == 0) || (GetAlarmCode(QDCT_ALARM_ADDR) == QDCT_ZLT_ALARM))) { QDCT_bCheckDinWeiFlag = QDCT_bCheckDinWei; bRunning = 1; yd_back_flg = 0; QDCT_AutoStep = 4; SetAlarmCode(QDCT_ALARM_ADDR,0); sl_flg = 0; QDCT_MotorStep = 66; QDCT_cWorkCnt = 0; QDCT_cQTryCnt = 0; QDCT_bQTuiLaTouOkFlg = 1; QDCT_bHTuiLaTouOkFlg = 1; if(QDCT_QJLT_OUT)// 前夹拉头关 { QDCT_bQZhuangLiaoOkFlg = 1; } else { QDCT_bQZhuangLiaoOkFlg = 0; QDCT_QZhuangLiaoStep = 1; } if(QDCT_HJLT_OUT) { QDCT_bHZhuangLiaoOkFlg = 1; } else { QDCT_bHZhuangLiaoOkFlg = 0; QDCT_HZhuangLiaoStep = 1; } QDCT_bHTuiLaTouOkFlg = 1; dwZipCnt = 0; QDCT_bFirstQStartFlg = 1; QDCT_bFirstHStartFlg = 1; QDCT_QZDPStep = 1; QDCT_HZDPStep = 1; QDCT_TLPStep = 1; QDCT_bSingOneFlg = 0; QDCT_bCheck_Go_In_Flag = 1; DCCT_cSL_En = 2; QDCT_bXiaMo_En = 1; SetPos(X_AXIS, 0); QDCT_bBackLimitCheck_EN = 1; } } else { if((GetAlarmCode(QDCT_ALARM_ADDR) == 0)) { QDCT_bCheckDinWeiFlag = QDCT_bCheckDinWei; QDCT_bBackLimitCheck_EN = 1; bRunning = 1; yd_back_flg = 0; QDCT_AutoStep = 1; QDCT_cWorkCnt = 0; QDCT_cQTryCnt = 0; QDCT_bQTuiLaTouOkFlg = 1; QDCT_bHTuiLaTouOkFlg = 1; dwZipCnt = 0; QDCT_bFirstQStartFlg = 1; QDCT_bFirstHStartFlg = 1; if(QDCT_QJLT_OUT)// 前夹拉头关 { QDCT_bQZhuangLiaoOkFlg = 1; } else { QDCT_bQZhuangLiaoOkFlg = 0; QDCT_QZhuangLiaoStep = 1; } if(QDCT_HJLT_OUT) { QDCT_bHZhuangLiaoOkFlg = 1; } else { QDCT_bHZhuangLiaoOkFlg = 0; QDCT_HZhuangLiaoStep = 1; } QDCT_QZDPStep = 1; QDCT_HZDPStep = 1; QDCT_TLPStep = 1; QDCT_bSingOneFlg = 0; QDCT_bCheck_Go_In_Flag = 1; DCCT_cSL_En = 2; QDCT_bXiaMo_En = 1; QDCT_bHHSL_BackTimeOK = 0; QDCT_bQHSL_BackTimeOK = 0; } } } QDCT_bCheckDinWei= 0; } if(QDCT_bStopFlg == 1) { if(!X_DRV) QDCT_bStopFlg = 0; } if(bStop) { QDCT_bSingOneFlg = 1; bStop = 0; } //停止 if(QDCT_STOP_IN_UP && (dwTickCount >= dw_Stop_In_Delay)) { // QDCT_bSingOneFlg = 0; if(bRunning) { dw_Stop_In_Delay = dwTickCount +50; SetDecTime(X_AXIS,12) ; SetDecTime(Y_AXIS,12) ; AxisDecStop(X_AXIS); AxisDecStop(Y_AXIS); bRunning = 0; QDCT_bOnceStart = 0; QDCT_bStartOnceTime = 0; bStop = 0; QDCT_AutoStep = 0; QDCT_QZhuangLiaoStep = 0; QDCT_HZhuangLiaoStep = 0; QDCT_HeMoStep = 0; QDCT_MotorStep = 0; QDCT_JiaLianStep = 0; if(!QDCT_PARAM_CS_ENABLE) QDCT_XiaQieStep = 0; QDCT_ZhenDongStep = 0; QDCT_QTLTStep = 0; QDCT_HTLTStep = 0; QDCT_bManFlg = 0; QDCT_bBackLimitCheck_EN = 1; } else { if(!X_DRV) SetEn(X_AXIS, QDCT_MOTOR_DISEN); SetDecTime(X_AXIS,12) ; SetDecTime(Y_AXIS,12) ; AxisDecStop(X_AXIS); AxisDecStop(Y_AXIS); bRunning = 0; QDCT_bOnceStart = 0; bStop = 0; QDCT_bStartOnceTime = 0; QDCT_AutoStep = 0; QDCT_QZhuangLiaoStep = 0; QDCT_HZhuangLiaoStep = 0; QDCT_MotorStep = 0; QDCT_JiaLianStep = 0; QDCT_XiaQieStep = 0; QDCT_ZhenDongStep = 0; QDCT_HeMoStep = 0; QDCT_QTLTStep = 0; QDCT_HTLTStep = 0; QDCT_SQ_OUT = 0; if(!QDCT_PARAM_XM_MODE)QDCT_XQ_OUT = 0; QDCT_XM_OUT = 0; QDCT_JD_OUT = 0; QDCT_QTLT_OUT = 0; QDCT_HTLT_OUT = 0; QDCT_QHSL_OUT = 0; QDCT_KL_OUT = 0; QDCT_YL_OUT = 0; QDCT_CS_OUT = 0; long_stop_flg = 1; long_time_delay = dwTickCount+1500; QDCT_HHSL_OUT= 0; SetAlarmCode(QDCT_ALARM_ADDR,QDCT_NO_ALARM); QDCT_bManFlg = 0; DCCT_cSL_En = 2; QDCT_bXiaMo_En = 1; QDCT_bBackLimitCheck_EN = 1; } //测试停止 QDCT_TestMotorStep = 0; } if(sl_flg) { if(dwTickCount >= sl_delay) { sl_flg = 0; QDCT_SL_OUT = 0; sl_delayStart = dwTickCount+500; } } if(long_stop_flg) { if(dwTickCount >= long_time_delay) { if(QDCT_STOP_IN) { QDCT_QJLT_OUT = 0; QDCT_HJLT_OUT = 0; QDCT_YD_OUT = 0; QDCT_SL_OUT = 0; } } else if(!QDCT_STOP_IN) { long_stop_flg = 0; } } if(QDCT_bAlarmStop) { bRunning = 0; QDCT_bOnceStart = 0; QDCT_bAlarmStop = 0; QDCT_bStartOnceTime = 0; AxisDecStop(X_AXIS); AxisDecStop(Y_AXIS); QDCT_AutoStep = 0; QDCT_QZhuangLiaoStep = 0; QDCT_HZhuangLiaoStep = 0; QDCT_MotorStep = 0; QDCT_JiaLianStep = 0; QDCT_ZhenDongStep = 0; if(!QDCT_QTLT_OUT) QDCT_QTLTStep = 0; if(!QDCT_HTLT_OUT) QDCT_HTLTStep = 0; QDCT_bManFlg = 0; if(GetAlarmCode(QDCT_ALARM_ADDR) != QDCT_ZLT_ALARM) { if(QDCT_SL_OUT) { QDCT_YD_OUT = 1; sl_flg = 1; sl_delay = dwTickCount+1000; } } } } unsigned long GL_GetLength(long dist0,long dist1) { if(dist0 < dist1) return (dist1-dist0); else return (dist0-dist1); } //电机控制动作 void GL_QDCT_Motor(void) // { /* 1~5步追色标 30步开始后拉 61 前进定位 80步开始为切断后后拉松夹子 200步,进去一定位置夹废料 */ // 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,xm_delay_back,back_delay; // long speed_buff; // long len_buff; // unsigned short acc,dec,start_speed; if(!QDCT_NO_ZIPPER_CHECK_IN && bRunning) { GL_QDCT_SetAlarmCode(QDCT_START_NO_ZIPPER_ALARM); } switch(QDCT_MotorStep) { case 1: QDCT_MotorDelay = dwTickCount + QDCT_PARAM_DELAY_BACK; QDCT_MotorStep = 2; QDCT_YD_OUT = 0; break; case 2: if(dwTickCount >= QDCT_MotorDelay) { if(QDCT_SEBIAO_MODE== 1) //空位检测方式 { QDCT_bSeBiaoOk = 0; QDCT_bSeBiaoEn = 1; if( QDCT_PARAM_Mold_Distance > 120) //夹子运动到模具位置时变为穿入速度 AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_START_SPEED*3,QDCT_PARAM_Mold_Distance-100, QDCT_PARAM_START_SPEED,QDCT_PARAM_PUTIN_LOW_SPEED,10,6,0); else AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_START_SPEED*3,QDCT_PARAM_Mold_Distance+10, QDCT_PARAM_START_SPEED,QDCT_PARAM_PUTIN_LOW_SPEED,10,6,0); //下模不动的话退送链 if(QDCT_PARAM_XM_MODE) QDCT_SL_OUT = 0;//送带退 QDCT_bChuan_LianCheckOK = 0; if(QDCT_bCheckDinWeiFlag) //不用穿拉头,只定位 { QDCT_MotorStep = 5; QDCT_MotorDelay = dwTickCount + 0; } else QDCT_MotorStep = 3; } } break; case 3: if(QDCT_SEBIAO_IN_UP) //空位变慢 { QDCT_MotorStep = 7; } if(dwXRealPos >= (QDCT_PARAM_PUTIN_LENGTH)) { if((QDCT_bCheckDinWeiFlag == 0)) { if(QDCT_PARAM_QLT_ON && !QDCT_GO_LIMIT_IN) QDCT_QJLT_OUT = 0; if(QDCT_PARAM_HLT_ON && !QDCT_GO_LIMIT_IN) QDCT_HJLT_OUT = 0; QDCT_XM_OUT = 0; } AxisEgmStop(X_AXIS); QDCT_MotorDelay = dwTickCount + QDCT_PARAM_BACK_DELAY; QDCT_MotorStep = 5; }//如果慢速长度到, else if(dwXRealPos >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH)) { //拉链长度大于(模具长度 + 穿入长度)说明穿入部分还有拉链加速 if(QDCT_LENTH_Check>= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH)) { if(QDCT_PARAM_PUTIN_LENGTH > (QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH)) { AxisMovePosAccDec(X_AXIS,QDCT_PARAM_JJBACK_SPEED,QDCT_PARAM_PUTIN_LENGTH - QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH, QDCT_PARAM_PUTIN_LOW_SPEED,QDCT_PARAM_PUTIN_LOW_SPEED,5,10,10); } else { AxisMovePosAccDec(X_AXIS,QDCT_PARAM_JJBACK_SPEED,QDCT_LENTH_Check - dwXRealPos, QDCT_PARAM_PUTIN_LOW_SPEED,QDCT_BACK_LOWSPEED,5,10,20); } } else { AxisMovePosAccDec(X_AXIS,QDCT_PARAM_JJBACK_SPEED,QDCT_LENTH_Check - dwXRealPos, QDCT_PARAM_PUTIN_LOW_SPEED,QDCT_BACK_LOWSPEED,5,10,20); } QDCT_MotorStep = 4; } break; case 4: if(QDCT_SEBIAO_IN_UP) //空位变慢 { QDCT_MotorStep = 7; } if((dwXRealPos >= (QDCT_PARAM_PUTIN_LENGTH)) || !X_DRV) { if((QDCT_bCheckDinWeiFlag == 0)) { if(QDCT_PARAM_QLT_ON && !QDCT_GO_LIMIT_IN) QDCT_QJLT_OUT = 0; if(QDCT_PARAM_HLT_ON && !QDCT_GO_LIMIT_IN) QDCT_HJLT_OUT = 0; QDCT_XM_OUT = 0; } AxisEgmStop(X_AXIS); QDCT_MotorDelay = dwTickCount + QDCT_PARAM_BACK_DELAY; QDCT_MotorStep = 5; }//如果慢速长度到, break; case 5: if(dwTickCount >= QDCT_MotorDelay) { QDCT_MotorStep = 6; AxisContinueMoveAcc(X_AXIS,QDCT_SEBIAO_HIGH_SPEED, QDCT_DIR_P,QDCT_PARAM_START_SPEED,QDCT_SEBIAO_LOW_SPEED,15,15); } break; case 6: if(QDCT_SEBIAO_IN_UP) //空位变慢 { // AxisContinueMoveAcc(X_AXIS,QDCT_SEBIAO_LOW_SPEED, QDCT_DIR_P,QDCT_SEBIAO_LOW_SPEED,QDCT_SEBIAO_LOW_SPEED,10,6); QDCT_MotorStep = 7; } break; case 7: if(QDCT_QJLT_OUT) { if(QDCT_bCheckDinWeiFlag == 0) { if(dwXRealPos >= (QDCT_PARAM_PUTIN_LENGTH)) { if(QDCT_PARAM_QLT_ON && !QDCT_GO_LIMIT_IN)QDCT_QJLT_OUT = 0; if(QDCT_PARAM_HLT_ON && !QDCT_GO_LIMIT_IN)QDCT_HJLT_OUT = 0; QDCT_XM_OUT = 0; QDCT_MotorDelay = dwTickCount + QDCT_PARAM_BACK_DELAY; } } } else if(!X_DRV) { AxisContinueMoveAcc(X_AXIS,QDCT_SEBIAO_LOW_SPEED, QDCT_DIR_P,QDCT_PARAM_START_SPEED,QDCT_SEBIAO_LOW_SPEED,8,10); } if(dwTickCount >= QDCT_MotorDelay) { QDCT_bSeBiaoOk = 0; QDCT_bSeBiaoEn = 1; QDCT_MotorStep = 8; } else if(!QDCT_SEBIAO_IN) QDCT_MotorStep = 6; break; case 8: if(QDCT_QJLT_OUT) { if(QDCT_bCheckDinWeiFlag == 0) { if(dwXRealPos >= (QDCT_PARAM_PUTIN_LENGTH)) { if(QDCT_PARAM_QLT_ON && !QDCT_GO_LIMIT_IN) QDCT_QJLT_OUT = 0; if(QDCT_PARAM_HLT_ON && !QDCT_GO_LIMIT_IN) QDCT_HJLT_OUT = 0; QDCT_XM_OUT = 0; AxisEgmStop(X_AXIS); QDCT_MotorDelay = dwTickCount + QDCT_PARAM_BACK_DELAY; } } } else if(!X_DRV && (dwXRealPos >= (QDCT_PARAM_PUTIN_LENGTH))) { AxisContinueMoveAcc(X_AXIS,QDCT_SEBIAO_LOW_SPEED, QDCT_DIR_P,QDCT_PARAM_START_SPEED,QDCT_SEBIAO_LOW_SPEED,8,10); } if(!X_DRV) { if(QDCT_SEBIAO_ERROR_LENGHT && ((dwXRealPos > (QDCT_PARAM_SET_ZIPPER_LENGTH + QDCT_SEBIAO_ERROR_LENGHT)) || (dwXRealPos < (QDCT_PARAM_SET_ZIPPER_LENGTH - QDCT_SEBIAO_ERROR_LENGHT)))) { GL_QDCT_SetAlarmCode(QDCT_SE_BIAO_ALARM); } else { QDCT_MotorStep = 0; } } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); } break; case 15: break; case 30: QDCT_MotorDelay = dwTickCount; if(GetEn(X_AXIS) == QDCT_MOTOR_DISEN) { SetEn(X_AXIS,QDCT_MOTOR_EN); QDCT_MotorDelay = dwTickCount + 150; } else QDCT_MotorDelay = dwTickCount + QDCT_PARAM_DELAY_BACK; QDCT_YD_OUT = 0; //压带 QDCT_MotorStep = 31; QDCT_bCheck_Go_In_Flag = 0; QDCT_bChuan_LianCheckOK = 0; break; #if 0 case 31: if(dwTickCount >= QDCT_MotorDelay) { QDCT_length_buff = &QDCT_PARAM_OFFSET_LENGTH; if((*QDCT_length_buff+QDCT_PARAM_SET_ZIPPER_LENGTH) < 0) *QDCT_length_buff = 0; if(QDCT_LATOU) //单拉头 { acc = QDCT_PARAM_ACC_PULSE; dec = QDCT_PARAM_DEC_PULSE; // if(QDCT_PARAM_PUTIN_LOW_SPEED < QDCT_PARAM_START_SPEED) // start_speed = QDCT_PARAM_PUTIN_LOW_SPEED; // else start_speed = QDCT_PARAM_START_SPEED; } else//双拉头 { acc = QDCT_PARAM_ACC_PULSE; //加速度 // dec = QDCT_PARAM_DEC_PULSE*2; dec = QDCT_PARAM_DEC_PULSE; //减速度 // if(QDCT_PARAM_PUTIN_LOW_SPEED < QDCT_PARAM_START_SPEED) // start_speed = QDCT_PARAM_PUTIN_LOW_SPEED; // else start_speed = QDCT_PARAM_START_SPEED; } if( QDCT_PARAM_Mold_Distance > 120) //夹子运动到模具位置时变为穿入速度 AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_START_SPEED*3,QDCT_PARAM_Mold_Distance-100,QDCT_PARAM_START_SPEED,QDCT_PARAM_PUTIN_LOW_SPEED,10,15,10); else AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_START_SPEED*3,QDCT_PARAM_Mold_Distance+10,start_speed,QDCT_PARAM_PUTIN_LOW_SPEED,2,5); if(QDCT_LATOU == 0) //双头跳转 QDCT_MotorStep = 33; else //单头跳转 QDCT_MotorStep = 333; QDCT_bChuan_LianCheckOK = 0; } break; case 33: //这一步关夹拉头 //下模提前输出 if(!QDCT_GO_LIMIT_IN && !QDCT_PARAM_XM_MODE && !QDCT_PARAM_CS_ENABLE && (dwXRealPos >= QDCT_PARAM_Mold_Distance)) QDCT_XQ_OUT = 1; //如果当前长度到达拉链长,最优先停 if(dwXRealPos >= (QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)) { AxisEgmStop(X_AXIS); QDCT_MotorStep = 34; if(QDCT_PARAM_XM_MODE) QDCT_SL_OUT = 0;//送带退 } if(QDCT_CHUAN_LIAN_OK) QDCT_bChuan_LianCheckOK = 1; //如果穿入长度到也停止,开模 if((dwXRealPos) >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH )) { QDCT_MotorDelay = dwTickCount + QDCT_PARAM_BACK_DELAY; if(QDCT_PARAM_BACK_DELAY) { AxisEgmStop(X_AXIS); QDCT_MotorStep = 35; QDCT_MotorDelay = dwTickCount + 15; } else QDCT_MotorStep = 34; if(QDCT_PARAM_XM_MODE) QDCT_SL_OUT = 0;//送带退 if(QDCT_PARAM_QLT_ON )//&& !QDCT_GO_LIMIT_IN) { QDCT_QJLT_OUT = 0; } if(QDCT_PARAM_HLT_ON && (QDCT_bChuan_LianCheckOK || (QDCT_CHUAN_LIAN_CHECK_SELECT == 0)))//&& !QDCT_GO_LIMIT_IN) { QDCT_HJLT_OUT = 0; } } //如果慢速长度到, if(dwXRealPos >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH)) { if(QDCT_PARAM_XM_MODE) QDCT_SL_OUT = 0;//送带退 //拉链长度大于(模具长度 + 穿入长度)说明穿入部分还有拉链加速 if((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)> (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH)) { AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_JJBACK_SPEED,QDCT_PARAM_PUTIN_LENGTH - QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH, tXAxisStepper.cCurSpeed,QDCT_PARAM_PUTIN_LOW_SPEED,5,5); tXAxisStepper.cCalDecPulse += 30; QDCT_MotorStep = 34; } else { AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_JJBACK_SPEED,(QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)- dwXRealPos, tXAxisStepper.cCurSpeed,QDCT_BACK_LOWSPEED,5,5); tXAxisStepper.cCalDecPulse += 30; QDCT_MotorStep = 34; } } //行程超限 if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 4; } break; case 34: if(QDCT_CHUAN_LIAN_OK) QDCT_bChuan_LianCheckOK = 1; //到达拉链长度要停止 if(dwXRealPos >= (QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)) { AxisEgmStop(X_AXIS); QDCT_MotorStep = 35; QDCT_MotorDelay = dwTickCount + 10; if(QDCT_PARAM_HLT_ON && (QDCT_bChuan_LianCheckOK || (QDCT_CHUAN_LIAN_CHECK_SELECT == 0)))//&& !QDCT_GO_LIMIT_IN) { QDCT_HJLT_OUT = 0; } } //如果穿入长度到也停止,开模 if((dwXRealPos + 8) >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH )) { AxisEgmStop(X_AXIS); QDCT_MotorDelay = dwTickCount + 10; QDCT_MotorStep = 35; if(QDCT_PARAM_HLT_ON && (QDCT_bChuan_LianCheckOK || (QDCT_CHUAN_LIAN_CHECK_SELECT == 0)))//&& !QDCT_GO_LIMIT_IN) { QDCT_HJLT_OUT = 0; } QDCT_MotorDelay = dwTickCount + 10;//QDCT_PARAM_BACK_DELAY; } else if((dwXRealPos + 60) >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH )) { if(QDCT_PARAM_HLT_ON && (QDCT_bChuan_LianCheckOK || (QDCT_CHUAN_LIAN_CHECK_SELECT == 0)))//&& !QDCT_GO_LIMIT_IN) { QDCT_HJLT_OUT = 0; } } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 5; } break; case 35: if(dwTickCount >= QDCT_MotorDelay) { if(QDCT_PARAM_HLT_ON && (QDCT_bChuan_LianCheckOK || (QDCT_CHUAN_LIAN_CHECK_SELECT == 0)))//&& !QDCT_GO_LIMIT_IN) { QDCT_HJLT_OUT = 0; } QDCT_XM_OUT = 0; QDCT_MotorStep = 37; QDCT_MotorDelay = dwTickCount + QDCT_PARAM_BACK_DELAY; AxisContinueMoveAcc(X_AXIS,3,QDCT_DIR_N,3,5,5); // AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_JJBACK_SPEED,30, // QDCT_BACK_LOWSPEED,QDCT_BACK_LOWSPEED,3,3); } break; case 36: if(!X_DRV) { QDCT_MotorStep = 37; } break; case 37: if(dwXRealPos>= QDCT_PARAM_SET_ZIPPER_LENGTH) { AxisEgmStop(X_AXIS); } //两路顶针离开 if(!QDCT_XM_OUT && ((!QDCT_QLTCZ_IN || (!QDCT_PARAM_QLT_ON)) && (!QDCT_HLTCZ_IN || (!QDCT_PARAM_HLT_ON)) )) { if(QDCT_PARAM_QLT_ON )//&& !QDCT_GO_LIMIT_IN) { QDCT_QJLT_OUT = 0; } if(dwTickCount >= QDCT_MotorDelay) { if(X_DRV) //延时后退设时间为0时中间不停止 { if((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff) > (dwXRealPos+QDCT_PARAM_LOWSPEED_LENGTH)) AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_JJBACK_SPEED,(QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff-dwXRealPos-QDCT_PARAM_LOWSPEED_LENGTH),tXAxisStepper.cCurSpeed,QDCT_BACK_LOWSPEED,5,5); QDCT_MotorStep = 38; } else if(dwTickCount >= QDCT_MotorDelay) { if((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)> (dwXRealPos+QDCT_PARAM_LOWSPEED_LENGTH)) AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_JJBACK_SPEED,(QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff - dwXRealPos -QDCT_PARAM_LOWSPEED_LENGTH),QDCT_PARAM_PUTIN_LOW_SPEED,QDCT_BACK_LOWSPEED,8,8); else if(((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)<= (dwXRealPos+QDCT_PARAM_LOWSPEED_LENGTH)) && ((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)> (dwXRealPos))) AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_JJBACK_SPEED,(QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff- QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH), QDCT_PARAM_PUTIN_LOW_SPEED,QDCT_BACK_LOWSPEED,3,3); QDCT_MotorStep = 38; } } } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 6; } break; case 38: if(((dwXRealPos) >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH + 400)) && (QDCT_PARAM_SET_ZIPPER_LENGTH > (dwXRealPos + 4000))) { DCCT_cSL_En = 2; } if(!X_DRV || (dwXRealPos>= QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)) { AxisEgmStop(X_AXIS); QDCT_YD_OUT = 1; if(QDCT_PARAM_FZ_LENGTH != 0) //反转长度 { QDCT_JJ_DIR = QDCT_JJ_DIR_P; AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_START_SPEED,-QDCT_PARAM_FZ_LENGTH, QDCT_PARAM_START_SPEED,QDCT_PARAM_START_SPEED,3,3); } QDCT_MotorStep = 39; } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 6; } break; case 39: if(!X_DRV) { QDCT_YD_OUT = 1; QDCT_MotorStep = 40; if(bRunning) { if(!QDCT_NO_ZIPPER_CHECK_IN) GL_QDCT_SetAlarmCode(QDCT_START_NO_ZIPPER_ALARM); } } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 7; } break; case 40: QDCT_MotorStep = 0; break; //这是单头程序 case 333: //这一步关夹拉头 //下模提前输出 if(!QDCT_GO_LIMIT_IN && !QDCT_PARAM_XM_MODE && !QDCT_PARAM_CS_ENABLE && (dwXRealPos >= QDCT_PARAM_Mold_Distance)) QDCT_XQ_OUT = 1; //如果当前长度到达拉链长,最优先停 if(dwXRealPos >= (QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)) { AxisEgmStop(X_AXIS); QDCT_MotorStep = 335; //直接跳到拖带结束 if(QDCT_PARAM_XM_MODE) QDCT_SL_OUT = 0;//送带退 //下模和夹拉头打开 QDCT_QJLT_OUT = 0; //夹拉头 QDCT_XM_OUT = 0; //拉头下模 QDCT_MotorDelay = dwTickCount; if(QDCT_CHUAN_LIAN_OK) QDCT_bChuan_LianCheckOK = 1; break; } //如果穿入长度到也停止,开模 if((dwXRealPos) >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH )) { QDCT_MotorDelay = dwTickCount + QDCT_PARAM_BACK_DELAY; QDCT_MotorStep = 335; if(QDCT_PARAM_XM_MODE) QDCT_SL_OUT = 0;//送带退 QDCT_QJLT_OUT = 0; //夹拉头 QDCT_XM_OUT = 0; //拉头下模 if(QDCT_CHUAN_LIAN_OK) QDCT_bChuan_LianCheckOK = 1; } //如果慢速长度到, if(dwXRealPos >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH)) { if(QDCT_PARAM_XM_MODE) QDCT_SL_OUT = 0;//送带退 //拉链长度大于(模具长度 + 穿入长度)说明穿入部分还有拉链加速 if((QDCT_PARAM_SET_ZIPPER_LENGTH +*qdct_length_buff)> (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH)) { // AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_JJBACK_SPEED,QDCT_PARAM_PUTIN_LENGTH - QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH, // tXAxisStepper.cCurSpeed,QDCT_PARAM_PUTIN_LOW_SPEED,5,5); //到达穿入长度处时要回到穿入速度给开模时间 AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_JJBACK_SPEED,(QDCT_PARAM_PUTIN_LENGTH - QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH), tXAxisStepper.cCurSpeed,QDCT_PARAM_PUTIN_LOW_SPEED,5,5); tXAxisStepper.cCalDecPulse += 20; } else { AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_JJBACK_SPEED,QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff- dwXRealPos, tXAxisStepper.cCurSpeed,3,5,5);//QDCT_BACK_LOWSPEED,5,5); tXAxisStepper.cCalDecPulse += 20; } QDCT_MotorStep = 334; } //行程超限 if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 8; } break; case 334: //到达拉链长度要停止 if(dwXRealPos >= (QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)) { AxisEgmStop(X_AXIS); QDCT_MotorStep = 335; //直接跳到拖带结束 //下模和夹拉头打开 QDCT_QJLT_OUT = 0; //夹拉头 QDCT_XM_OUT = 0; //拉头下模 if(QDCT_CHUAN_LIAN_OK) QDCT_bChuan_LianCheckOK = 1; break; } //如果穿入长度到也停止,开模 if((dwXRealPos) >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH )) { QDCT_MotorStep = 335; //说明拉链还有长度 电机没有停止 //下模和夹拉头打开 QDCT_QJLT_OUT = 0; //夹拉头 QDCT_XM_OUT = 0; //拉头下模 if(QDCT_CHUAN_LIAN_OK) QDCT_bChuan_LianCheckOK = 1; QDCT_MotorDelay = dwTickCount + QDCT_PARAM_BACK_DELAY; } //提前2.5MM else if((dwXRealPos + 25) >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH )) { QDCT_QJLT_OUT = 0; //夹拉头 } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 9; } break; case 335: if(dwXRealPos>= (QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)) { AxisEgmStop(X_AXIS); } if(QDCT_CHUAN_LIAN_OK) QDCT_bChuan_LianCheckOK = 1; //两路顶针离开 if(!QDCT_XM_OUT && ((!QDCT_QLTCZ_IN || (!QDCT_PARAM_QLT_ON)) )) { if(dwTickCount >= QDCT_MotorDelay) { if(X_DRV) //延时后退设时间为0时中间不停止 { if((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff) > (dwXRealPos+QDCT_PARAM_LOWSPEED_LENGTH)) AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_JJBACK_SPEED,(QDCT_PARAM_SET_ZIPPER_LENGTH-dwXRealPos-QDCT_PARAM_LOWSPEED_LENGTH),tXAxisStepper.cCurSpeed,QDCT_BACK_LOWSPEED,5,5); QDCT_MotorStep = 338; } else if(dwTickCount >= QDCT_MotorDelay) { if((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)> (dwXRealPos+QDCT_PARAM_LOWSPEED_LENGTH)) AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_JJBACK_SPEED,((QDCT_PARAM_SET_ZIPPER_LENGTH+ *qdct_length_buff)- dwXRealPos -QDCT_PARAM_LOWSPEED_LENGTH),QDCT_PARAM_PUTIN_LOW_SPEED,QDCT_BACK_LOWSPEED,8,8); //拉链长度到了也不切 else if(((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)<= (dwXRealPos+QDCT_PARAM_LOWSPEED_LENGTH)) && ((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)> (dwXRealPos))) AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_JJBACK_SPEED,((QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff)- QDCT_PARAM_PUTIN_LOW_SPEED_LENGTH), QDCT_PARAM_PUTIN_LOW_SPEED,QDCT_BACK_LOWSPEED,3,3); QDCT_MotorStep = 338; } } } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 10; } break; case 338: if((dwXRealPos) >= (QDCT_PARAM_Mold_Distance + QDCT_PARAM_PUTIN_LENGTH + 100)) { DCCT_cSL_En = 2; } if(!X_DRV || (dwXRealPos>= (QDCT_PARAM_SET_ZIPPER_LENGTH + *qdct_length_buff))) { AxisEgmStop(X_AXIS); QDCT_YD_OUT = 1; if(QDCT_PARAM_FZ_LENGTH != 0) //反转长度 { QDCT_JJ_DIR = QDCT_JJ_DIR_P; AxisMovePosAccDec_LYQ(X_AXIS,QDCT_PARAM_START_SPEED,-QDCT_PARAM_FZ_LENGTH, QDCT_PARAM_START_SPEED,QDCT_PARAM_START_SPEED,3,3); } QDCT_MotorStep = 339; } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 11; } break; case 339: if(!X_DRV) { QDCT_YD_OUT = 1; QDCT_MotorStep = 40; // if(bRunning) { if(!QDCT_NO_ZIPPER_CHECK_IN) GL_QDCT_SetAlarmCode(QDCT_START_NO_ZIPPER_ALARM); } } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 12; } break; case 80: // if(dwTickCount >= QDCT_MotorDelay) { jz_buff = dwXRealPos; QDCT_JJ_DIR = QDCT_JJ_DIR_N; if(QDCT_PARAM_SJZ_LENGTH == 0) { QDCT_JD_OUT = 0; } QDCT_MotorDelay = dwTickCount + QDCT_PARAN_SJ_TIME; QDCT_MotorStep = 81; } break; case 81: if(QDCT_JD_OUT || (dwTickCount >= QDCT_MotorDelay)) { if((QDCT_CHUAN_LIAN_CHECK_SELECT == 0) || QDCT_bChuan_LianCheckOK) AxisMovePosAccDec(X_AXIS,QDCT_PARAM_CUTBACK_SPEED,-(QDCT_PARAM_SJZ_LENGTH + QDCT_PARAM_CUT_BACK_LENGTH),QDCT_PARAM_START_SPEED,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE,0); else AxisMovePosAccDec(X_AXIS,QDCT_PARAM_CUTBACK_SPEED,-(1000 + QDCT_PARAM_SJZ_LENGTH + QDCT_PARAM_CUT_BACK_LENGTH),QDCT_PARAM_START_SPEED,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE,0); QDCT_MotorStep = 82; } break; case 82: if(QDCT_LONG_LENGTH_USE)// 无限长切断完成后拉电机动作 { if((QDCT_CHUAN_LIAN_CHECK_SELECT == 0)|| QDCT_bChuan_LianCheckOK) { if(((QDCT_PARAM_SJZ_LENGTH) <= (jz_buff- dwXRealPos))) { QDCT_JD_OUT = 0; QDCT_MotorStep = 83; } else if(!X_DRV) { QDCT_JD_OUT = 0; QDCT_MotorStep = 83; } } else { //松夹子长度 if(((QDCT_PARAM_SJZ_LENGTH) <= (dwXRealPos - jz_buff))) { QDCT_JD_OUT = 0; QDCT_MotorStep = 83; } else if(!X_DRV) { QDCT_JD_OUT = 0; QDCT_MotorStep = 83; } } } else //普通长度 {//松夹子长度 if(((QDCT_PARAM_SJZ_LENGTH) <= (dwXRealPos - jz_buff))) { QDCT_JD_OUT = 0; QDCT_MotorStep = 83; } else if(!X_DRV) { QDCT_JD_OUT = 0; QDCT_MotorStep = 83; } } if(!QDCT_JD_OUT) { DCCT_cSL_En = 2; } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 13; } break; case 83: // 切断完成后拉电机动作 if(!X_DRV) { QDCT_MotorStep = 0; QDCT_MotorDelay = dwTickCount; } if(QDCT_PARAM_MAX_BACK_LENGTH < dwXRealPos) { QDCT_JD_OUT = 0; GL_QDCT_SetAlarmCode(QDCT_BACK_LIMIT_ALARM); user_datas[128] = 14; } break; case 61: // 前点定位数控模式 QDCT_MotorDelay = dwTickCount; if((QDCT_JD_OUT && (!QDCT_GO_LIMIT_IN)) || (QDCT_SZ_OUT == QDCT_MOTOR_DISEN)) { if(!QDCT_GO_LIMIT_IN) QDCT_JD_OUT = 0; if((QDCT_SZ_OUT == QDCT_MOTOR_DISEN)) QDCT_MotorDelay = dwTickCount + 40; QDCT_SZ_OUT = QDCT_MOTOR_EN; } //下模不动时要推链 if(QDCT_PARAM_XM_MODE && !QDCT_SL_OUT && !QDCT_JD_OUT) QDCT_TuiLianStep = 1; QDCT_SZ_OUT = QDCT_MOTOR_EN; QDCT_JJ_DIR = QDCT_JJ_DIR_P;//方向设定 QDCT_MotorStep = 62; break; case 62://电机锁轴时间到 if(dwTickCount >= QDCT_MotorDelay) { //已经夹住并且在前点的条件,认为布带已经夹好 if(QDCT_JD_OUT && QDCT_GO_LIMIT_IN) { QDCT_MotorStep = 67; } else{ //前点亮的情况下要先后退离开 if(QDCT_GO_LIMIT_IN ) { QDCT_JJ_DIR = QDCT_JJ_DIR_N; //后退离开长度 AxisContinueMoveAcc(X_AXIS,5, QDCT_DIR_N,5,10,10); QDCT_MotorDelay = dwTickCount + 500; QDCT_MotorStep = 620; } else { QDCT_MotorStep = 63; QDCT_MotorDelay = dwTickCount; } QDCT_JD_OUT = 0; } } break; case 620: if(QDCT_GO_LIMIT_IN) { SetPos(X_AXIS, 0); } else //后退离开长度 { AxisMovePosAccDec_LYQ(X_AXIS,12,500,6,6,3,3); // AxisMovePos(X_AXIS,6,-500); QDCT_MotorStep = 63; QDCT_MotorDelay = dwTickCount + 500; } break; case 63:// 后夹拉头 if(!X_DRV && !QDCT_GO_LIMIT_IN && (dwTickCount >= QDCT_MotorDelay)) { go_buff = dwXRealPos; QDCT_JJ_DIR = QDCT_JJ_DIR_P; //此判断实则没用 if(QDCT_LATOU) //1为单拉头 { acc = QDCT_PARAM_ACC_PULSE; start_speed = QDCT_PARAM_START_SPEED; dec = QDCT_PARAM_DEC_PULSE; } else //双拉头 { acc = QDCT_PARAM_ACC_PULSE; start_speed = QDCT_PARAM_START_SPEED; dec = QDCT_PARAM_DEC_PULSE; } // if(QDCT_START_IN_UP) { //不是第一次 if(dwZipCnt > 0) { speed_buff = QDCT_PARAM_JJGO_SPEED; //LYQ 改为直接当前位置返回长度 if(dwZipCnt == 5) //扎数到的启动 AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_JJGO_SPEED/2,-(dwXRealPos-QDCT_PARAM_GO_LOWSPEED_LENGTH),start_speed,QDCT_PARAM_GO_LOWSPEED,3,5); //acc,dec else AxisMovePosAccDecNotStop(X_AXIS,QDCT_PARAM_JJGO_SPEED,-(dwXRealPos-QDCT_PARAM_GO_LOWSPEED_LENGTH-QDCT_PARAM_JJDINGWEI_LENGTH),start_speed,QDCT_PARAM_GO_LOWSPEED,acc,dec); QDCT_MotorStep = 65; QDCT_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; } else { AxisContinueMoveAcc(X_AXIS,QDCT_PARAM_GO_LOWSPEED,QDCT_DIR_P,QDCT_PARAM_GO_LOWSPEED,acc,dec); QDCT_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; QDCT_MotorStep = 65; } } } break; case 65: //碰到前点限位停止 if(QDCT_GO_LIMIT_IN) { user_datas[128] = tXAxisStepper.cCurSpeed; SetPos(X_AXIS, QDCT_PARAM_JJDINGWEI_LENGTH); CancelPmoveState(X_AXIS); QDCT_MotorStep = 66; dwXRealPos = GetPos(X_AXIS); AxisChangeSpeed(X_AXIS,2); } else if(dwTickCount >= QDCT_MotorDelay) GL_QDCT_SetAlarmCode(QDCT_NO_ZIPPER_ALARM); break; case 66: if(dwXRealPos <= 0) //位置到零点后停止 { AxisEgmStop(X_AXIS); SetPos(X_AXIS, 0); QDCT_MotorStep = 67; } break; case 67: if(!X_DRV) //电机已经 { QDCT_MotorDelay = dwTickCount; QDCT_MotorStep = 68; } break; case 68: if(dwTickCount >= QDCT_MotorDelay) { if(QDCT_JiaLianStep == 0) { QDCT_JiaLianStep = 1; QDCT_MotorStep = 69; } } break; case 69: // if(QDCT_START_IN_UP) { if(QDCT_JiaLianStep == 0) { QDCT_MotorStep = 0; } } break; //切断后压轮送出链 case 160: if((dwTickCount >= QDCT_MotorDelay) && !Y_DRV) { QDCT_YL_DIR = QDCT_YL_DIR_N; if(!Y_DRV) AxisMovePos(Y_AXIS,QDCT_PARAM_YL_SL_SPEED,QDCT_PARAM_YL_SL_LENGTH); QDCT_MotorDelay = dwTickCount + QDCT_PARAM_YL_BACK_DELAY; QDCT_MotorStep = 161; }break; case 161: if(dwTickCount >= QDCT_MotorDelay)QDCT_YL_OUT = 0; if(!Y_DRV) { QDCT_YL_OUT = 0; QDCT_MotorDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_MotorStep = 162; } break; case 162: if(!QDCT_YL_LIMIT_IN) { QDCT_MotorDelay = dwTickCount; QDCT_MotorStep = 0; } else if(dwTickCount >= QDCT_MotorDelay) GL_QDCT_SetAlarmCode(QDCT_YL_LIMIT_ALARM); break; case 150: // if(dwTickCount >= QDCT_MotorDelay) { jz_buff = dwXRealPos; QDCT_JJ_DIR = QDCT_JJ_DIR_N; QDCT_JD_OUT = 0; QDCT_MotorDelay = dwTickCount + QDCT_PARAN_SJ_TIME+150; QDCT_MotorStep = 151; } break; case 151: if(QDCT_JD_OUT || (dwTickCount >= QDCT_MotorDelay)) { AxisMovePosAccDec(X_AXIS,QDCT_PARAM_CUTBACK_SPEED/2,-(QDCT_PARAM_SJZ_LENGTH + QDCT_PARAM_CUT_BACK_LENGTH),QDCT_PARAM_START_SPEED,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE); QDCT_MotorStep = 152; } break; case 152: if(!X_DRV) QDCT_MotorStep = 0; break; //以下为夹子进去夹废料 case 200: QDCT_JJ_DIR = QDCT_JJ_DIR_P; AxisMovePosAccDec(X_AXIS,QDCT_PARAM_GO_LOWSPEED,dwXRealPos-350,13,QDCT_PARAM_ACC_PULSE,QDCT_PARAM_DEC_PULSE); QDCT_MotorStep = 201; break; case 201: if(!X_DRV) { QDCT_JD_OUT = 1; QDCT_MotorStep = 202; QDCT_MotorDelay = dwTickCount + 50; } break; case 202: if(dwTickCount >= QDCT_MotorDelay) { QDCT_MotorStep = 0; } break; #endif } } //切断动作 void GL_QDCT_XiaQieAction(void) { #if 1 switch(QDCT_XiaQieStep) { case 1: if(bRunning) { if(!QDCT_NO_ZIPPER_CHECK_IN) { GL_QDCT_SetAlarmCode(QDCT_START_NO_ZIPPER_ALARM); } } if(QDCT_GO_LIMIT_IN) { GL_QDCT_SetAlarmCode(QDCT_GO_LIMIT_ALARM); QDCT_XiaQieStep = 0; } else { QDCT_XiaQieStep = 2; QDCT_XiaQieDelay = dwTickCount + QDCT_PARAM_CUT_DELAY; } break; case 2: if(dwTickCount >= QDCT_XiaQieDelay) { QDCT_XiaQieStep = 3; QDCT_YD_OUT = 1; QDCT_XiaQieDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; if(!QDCT_PARAM_XM_MODE && !QDCT_PARAM_CS_ENABLE) { QDCT_XQ_OUT = 1; } } break; case 3: if(QDCT_XQ_LIMIT_IN || QDCT_PARAM_XM_MODE || QDCT_PARAM_CS_ENABLE) { QDCT_XiaQieDelay = dwTickCount; QDCT_XiaQieStep = 4; } else if(dwTickCount >= QDCT_XiaQieDelay) { GL_QDCT_SetAlarmCode(QDCT_XQ_ALARM); QDCT_XiaQieStep = 0; } break; case 4: if(dwTickCount >= QDCT_XiaQieDelay) { if(!QDCT_SL_ORIGIN_IN && QDCT_PARAM_XM_MODE) GL_QDCT_SetAlarmCode(QDCT_SL_ORIGIN_ALARM); else { QDCT_SQ_OUT = 1; //上切刀输出 if(!QDCT_PARAM_XM_MODE) QDCT_XQ_OUT = 1; // 超声模式同时输出 QDCT_XiaQieDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; } QDCT_XiaQieStep = 5; } break; case 5: //上下切刀到位 if(QDCT_SQ_LIMIT_IN && QDCT_XQ_LIMIT_IN) { QDCT_bTuiLianOKFlag = 0; if(QDCT_PARAM_CS_ENABLE) { QDCT_XiaQieDelay = dwTickCount + QDCT_PARAM_CS_DELAY; QDCT_XiaQieStep = 50; //跳到超声处理 } else { QDCT_XiaQieDelay = dwTickCount + QDCT_PARAM_CUTBACK_DELAY; QDCT_XiaQieStep = 6; } } else if(dwTickCount >= QDCT_XiaQieDelay) { if(!QDCT_SQ_LIMIT_IN) { GL_QDCT_SetAlarmCode(QDCT_SQ_LIMIT_ALARM); QDCT_XiaQieStep = 0; } else { GL_QDCT_SetAlarmCode(QDCT_XQ_ALARM); QDCT_XiaQieStep = 0; } } break; case 6: if(dwTickCount >= QDCT_XiaQieDelay) { QDCT_SQ_OUT = 0; QDCT_XQ_OUT = 0; QDCT_XiaQieDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_XiaQieStep = 7; } break; case 7: if(!QDCT_SQ_LIMIT_IN && (!QDCT_XQ_LIMIT_IN || QDCT_PARAM_XM_MODE)) { //下模动 if(QDCT_PARAM_XM_MODE && !QDCT_SL_OUT && !bRunning) QDCT_TuiLianStep = 1; QDCT_XiaQieStep = 0; } else if(dwTickCount >= QDCT_XiaQieDelay) { QDCT_XiaQieStep = 0; if(QDCT_SQ_LIMIT_IN) GL_QDCT_SetAlarmCode(QDCT_SQ_ORIGIN_ALARM); else if(QDCT_XQ_LIMIT_IN)GL_QDCT_SetAlarmCode(QDCT_XQ_ALARM); } break; case 50: if(dwTickCount >= QDCT_XiaQieDelay) { if(QDCT_PARAM_CS_CONTROL) QDCT_CS_OUT = 1; QDCT_XiaQieDelay = dwTickCount + QDCT_PARAM_CS_TIME; QDCT_XiaQieStep = 51; } break; case 51: if((dwTickCount >= QDCT_XiaQieDelay)) { QDCT_CS_OUT = 0; QDCT_XiaQieDelay = dwTickCount + QDCT_PARAM_CS_COLD_TIME; QDCT_XiaQieStep = 6; } break; } #endif } //装拉头完成合模动作 void GL_QDCT_HeMo_Step(void) { #if 1 switch(QDCT_HeMoStep) { case 0: break; case 1: if(QDCT_bQZhuangLiaoOkFlg && QDCT_bHZhuangLiaoOkFlg && (QDCT_QZhuangLiaoStep == 0) && (QDCT_HZhuangLiaoStep == 0)) { // 前横送输出 前限位 前横送输出 前夹拉头 后横送输出 后夹拉头 if(!QDCT_QHSL_OUT && (QDCT_GO_LIMIT_IN || QDCT_bXiaMo_En)&& QDCT_QJLT_IN && !QDCT_HHSL_OUT && QDCT_HJLT_IN) { QDCT_XM_OUT = 1; //下模输出 QDCT_HeMoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_HeMoStep = 2; QDCT_QZhuangLiaoStep = 0; QDCT_HZhuangLiaoStep = 0; } } break; case 2: if(QDCT_XM_LIMIT_IN) //下模到位 { QDCT_HeMoStep = 3; QDCT_HeMoDelay = dwTickCount + 100; } else if(dwTickCount >= QDCT_HeMoDelay) { GL_QDCT_SetAlarmCode(QDCT_XM_LIMIT_ALARM); } break; case 3: //两个顶针信号或调试模式 if((QDCT_QLTCZ_IN || (!QDCT_PARAM_QLT_ON)) && (QDCT_HLTCZ_IN || (!QDCT_PARAM_HLT_ON)) ) { QDCT_cQTryCnt = 0; QDCT_bHemo_OK = 1; QDCT_HeMoStep = 0; } else if(dwTickCount >= QDCT_HeMoDelay) { if(bRunning) { QDCT_cQTryCnt++; QDCT_HeMoStep = 4; if(QDCT_cQTryCnt >= 4) { GL_QDCT_SetAlarmCode(QDCT_ZLT_ALARM); QDCT_bHemo_OK = 0; if(!QDCT_QLTCZ_IN && QDCT_PARAM_QLT_ON) { QDCT_bQZhuangLiaoOkFlg = 0; QDCT_QJLT_OUT = 0; } if(!QDCT_HLTCZ_IN && QDCT_PARAM_HLT_ON) { QDCT_bHZhuangLiaoOkFlg = 0; QDCT_HJLT_OUT = 0; } } else { if(!QDCT_QLTCZ_IN && QDCT_PARAM_QLT_ON) QDCT_bQZhuangLiaoOkFlg = 0; if(!QDCT_HLTCZ_IN && QDCT_PARAM_HLT_ON) QDCT_bHZhuangLiaoOkFlg = 0; } } } break; case 4: if(QDCT_GO_LIMIT_IN || (dwXRealPos > 1600) || ((dwXRealPos > 1200) && !X_DRV)) { QDCT_XM_OUT = 0; QDCT_HeMoDelay = dwTickCount + 600; if(QDCT_cQTryCnt >= 4) { QDCT_HeMoStep = 0; GL_QDCT_SetAlarmCode(QDCT_ZLT_ALARM); } else QDCT_HeMoStep = 5; } break; case 5: if(!QDCT_XM_LIMIT_IN) //下模下到位 { QDCT_HeMoDelay = dwTickCount + 250; QDCT_HeMoStep = 6; } else if(dwTickCount >= QDCT_HeMoDelay) { QDCT_HeMoStep = 0; GL_QDCT_SetAlarmCode(QDCT_XM_ORIGIN_ALARM); } break; case 6: if(dwTickCount >= QDCT_HeMoDelay) { QDCT_HeMoStep = 1; if((QDCT_bQZhuangLiaoOkFlg == 0)&& QDCT_PARAM_QLT_ON) { QDCT_QJLT_OUT = 0; QDCT_QZhuangLiaoStep = 1; } if((QDCT_bHZhuangLiaoOkFlg== 0 )&& QDCT_PARAM_HLT_ON) { QDCT_HJLT_OUT = 0; QDCT_HZhuangLiaoStep = 1; } } break; } if(bRunning && (QDCT_HeMoStep == 0) && (QDCT_XM_ORIGIN_IN_UP) && (QDCT_cQTryCnt < 3) && !QDCT_XM_OUT) { if((!QDCT_QJLT_OUT) && (QDCT_QZhuangLiaoStep == 0) && QDCT_PARAM_QLT_ON) { QDCT_bQZhuangLiaoOkFlg = 0; QDCT_QZhuangLiaoStep = 1; } if(!QDCT_HJLT_OUT &&(QDCT_HZhuangLiaoStep == 0) && QDCT_PARAM_HLT_ON) { QDCT_bHZhuangLiaoOkFlg = 0; QDCT_HZhuangLiaoStep = 1; } } #endif } //前装拉头动作(横送拉头) void GL_QDCT_QZLT_Step(void) { #if 1 switch(QDCT_QZhuangLiaoStep) { case 1: if(!QDCT_PARAM_QLT_ON) //不打开 { QDCT_bQZhuangLiaoOkFlg = 1; QDCT_QJLT_OUT = 1; } if(QDCT_bQZhuangLiaoOkFlg) { QDCT_QZhuangLiaoStep = 0; } else { if(QDCT_bFirstQStartFlg && QDCT_QJLT_IN && QDCT_QJLT_OUT) { QDCT_bQZhuangLiaoOkFlg = 1; QDCT_QZhuangLiaoStep = 0; QDCT_bFirstQStartFlg = 0; } else { QDCT_bFirstQStartFlg = 0; if(QDCT_QTLTStep == 0) { QDCT_QTLTStep = 1; //推拉头开始 当QTuiLaTouOkFlg = 1 时动作自动清零 } QDCT_QZhuangLiaoStep = 2; } } break; case 2: //推拉头完成 if(QDCT_QTLTStep == 0) { QDCT_QZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_QZhuangLiaoStep = 3; } break; case 3: //横送料原点 下模原点 if(!QDCT_XM_OUT && QDCT_XM_ORIGIN_IN ) // { if((DCCT_cSL_En >= 1) || (!bRunning)) { QDCT_QZhuangLiaoStep = 4; QDCT_QZhuangLiaoDelay = dwTickCount + 0;//QDCT_PARAM_HSL_DELAY; } } else if(dwTickCount >= QDCT_QZhuangLiaoDelay) { if(!QDCT_XM_ORIGIN_IN) GL_QDCT_SetAlarmCode(QDCT_XM_ORIGIN_ALARM); } break; case 4: //横送输出 if((dwTickCount >= QDCT_QZhuangLiaoDelay)) { QDCT_QHSL_OUT = 1; //前横送输出 QDCT_QJLT_OUT = 0; // 前夹拉头关 QDCT_QZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_QZhuangLiaoStep = 5; } break; case 5: //横送到位 if(QDCT_QHSL_LIMIT_IN) { QDCT_QZhuangLiaoDelay = dwTickCount + QDCT_PARAM_DELAY_JLT; QDCT_QZhuangLiaoStep = 6; } else if(dwTickCount >= QDCT_QZhuangLiaoDelay) { GL_QDCT_SetAlarmCode(QDCT_HSL_LIMIT_ALARM); } break; case 6://延时夹拉头 if((dwTickCount >= QDCT_QZhuangLiaoDelay)/* && ((DCCT_cSL_En >= 2) || (!bRunning))*/) { QDCT_QJLT_OUT = 1; QDCT_QZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_QZhuangLiaoStep = 7; } break; case 7://夹拉头到位 if(QDCT_QJLT_IN) { // QDCT_bQTuiLaTouOkFlg = 0; QDCT_QTLTStep = 1; //横送料退回时启动推拉头 QDCT_QZhuangLiaoDelay = dwTickCount + QDCT_PARAM_HSL_DELAY_BACK; QDCT_QZhuangLiaoStep = 8; } else if(dwTickCount >= QDCT_QZhuangLiaoDelay) { GL_QDCT_SetAlarmCode(QDCT_JLT_ALARM); } break; case 8: if(dwTickCount >= QDCT_QZhuangLiaoDelay) { QDCT_QHSL_OUT = 0; QDCT_bQZhuangLiaoOkFlg = 1; QDCT_QZhuangLiaoStep = 9; QDCT_QHSLBackTime = dwTickCount; } break; case 9: if(!QDCT_QHSL_LIMIT_IN) { QDCT_QZhuangLiaoStep = 10; if(!QDCT_bQHSL_BackTimeOK) QDCT_QZhuangLiaoDelay = dwTickCount + 550; else { if(QDCT_QHSL_CheckBackTime < 50) QDCT_QZhuangLiaoDelay = dwTickCount + 30; else if(QDCT_QHSL_CheckBackTime >= 150) QDCT_QZhuangLiaoDelay = dwTickCount + 70;//QDCT_QHSL_CheckBackTime/2; else QDCT_QZhuangLiaoDelay = dwTickCount + QDCT_QHSL_CheckBackTime/2; } } break; case 10: if(dwTickCount >= QDCT_QZhuangLiaoDelay) { QDCT_QZhuangLiaoStep = 0; if((!QDCT_bQHSL_BackTimeOK) && QDCT_QHSL_ORIGIN_IN) { QDCT_bQHSL_BackTimeOK= 1; QDCT_QHSL_CheckBackTime = dwTickCount-QDCT_QHSLBackTime; } } break; } #endif } //后装拉头动作 void GL_QDCT_HZLT_Step(void) { #if 1 switch(QDCT_HZhuangLiaoStep) { case 1: if(!QDCT_PARAM_HLT_ON) { QDCT_bHZhuangLiaoOkFlg = 1; QDCT_HJLT_OUT = 1; } if(QDCT_bHZhuangLiaoOkFlg) { QDCT_HZhuangLiaoStep = 0; } else { if(QDCT_bFirstHStartFlg && QDCT_HJLT_IN && QDCT_HJLT_OUT) { QDCT_bHZhuangLiaoOkFlg = 1; QDCT_bFirstHStartFlg = 0; QDCT_HZhuangLiaoStep = 0; } else { QDCT_bFirstHStartFlg = 0; if(QDCT_HTLTStep == 0) { QDCT_HTLTStep = 1; } QDCT_HZhuangLiaoStep = 2; } } break; case 2: if(QDCT_HTLTStep == 0)//后推拉头完成 { QDCT_HZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_HZhuangLiaoStep = 3; } break; case 3: if(!QDCT_XM_OUT && QDCT_XM_ORIGIN_IN ) // { if((DCCT_cSL_En >= 1) || (!bRunning)) { QDCT_HZhuangLiaoDelay = dwTickCount + 0;//QDCT_PARAM_HSL_DELAY; QDCT_HZhuangLiaoStep = 4; } } else if(dwTickCount >= QDCT_HZhuangLiaoDelay) { if(!QDCT_XM_ORIGIN_IN) GL_QDCT_SetAlarmCode(QDCT_XM_ORIGIN_ALARM); } break; case 4: if(dwTickCount >= QDCT_HZhuangLiaoDelay) { QDCT_HHSL_OUT = 1; //横送料输出 QDCT_HJLT_OUT = 0; QDCT_HZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_HZhuangLiaoStep = 5; } break; case 5: if(QDCT_HHSL_LIMIT_IN) //横送到位 { QDCT_HZhuangLiaoDelay = dwTickCount + QDCT_PARAM_DELAY_JLT; QDCT_HZhuangLiaoStep = 6; } else if(dwTickCount >= QDCT_HZhuangLiaoDelay) { GL_QDCT_SetAlarmCode(QDCT_HHSL_LIMIT_ALARM); } break; case 6: //延时夹拉头 if((dwTickCount >= QDCT_HZhuangLiaoDelay)/* && ((DCCT_cSL_En >= 2) || (!bRunning))*/) { QDCT_HJLT_OUT = 1; QDCT_HZhuangLiaoDelay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_HZhuangLiaoStep = 7; } break; case 7://夹拉头到位 if(QDCT_HJLT_IN) { QDCT_bHTuiLaTouOkFlg = 0; QDCT_HTLTStep = 1; //横送料退回时启动推拉头 QDCT_HZhuangLiaoDelay = dwTickCount + QDCT_PARAM_HSL_DELAY_BACK; QDCT_HZhuangLiaoStep = 8; } else if(dwTickCount >= QDCT_HZhuangLiaoDelay) { GL_QDCT_SetAlarmCode(QDCT_HJLT_ALARM); } break; case 8: //延时退横送料 if((dwTickCount >= QDCT_HZhuangLiaoDelay)) { QDCT_HHSL_OUT = 0; QDCT_bHZhuangLiaoOkFlg = 1; QDCT_HZhuangLiaoStep = 9; QDCT_HHSLBackTime = dwTickCount; } break; case 9: if(!QDCT_HHSL_LIMIT_IN) { QDCT_HZhuangLiaoStep = 10; if(!QDCT_bHHSL_BackTimeOK) QDCT_HZhuangLiaoDelay = dwTickCount + 550; else { if(QDCT_HHSL_CheckBackTime < 50) QDCT_HZhuangLiaoDelay = dwTickCount + 30; else if(QDCT_HHSL_CheckBackTime >= 150) QDCT_HZhuangLiaoDelay = dwTickCount + 70;//QDCT_QHSL_CheckBackTime/2; else QDCT_HZhuangLiaoDelay = dwTickCount + QDCT_HHSL_CheckBackTime/2; } } break; case 10: if((dwTickCount >= QDCT_HZhuangLiaoDelay) || QDCT_HHSL_ORIGIN_IN) { QDCT_HZhuangLiaoStep = 0; if((!QDCT_bHHSL_BackTimeOK) && QDCT_HHSL_ORIGIN_IN) { QDCT_bHHSL_BackTimeOK= 1; QDCT_HHSL_CheckBackTime = dwTickCount-QDCT_HHSLBackTime; } } break; } #endif } //前推拉头动作 void GL_QDCT_QTuiLT_Step(void) { // static unsigned long q_dlp_delay; #if 1 if(QDCT_QDLP_OUT && (dwTickCount >= QDCT_QDLPDelay)) QDCT_QDLP_OUT = 0; switch(QDCT_QTLTStep) { case 1: //前拉头使能 if(!QDCT_PARAM_QLT_ON) //前拉头关, { QDCT_bQTuiLaTouOkFlg = 1; } if(QDCT_bQTuiLaTouOkFlg) { QDCT_QTLTStep = 0; } else { QDCT_QTLT_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_QTLTStep = 2; } break; case 2: if(QDCT_QHSL_ORIGIN_IN && !QDCT_QHSL_LIMIT_IN) { QDCT_QTLT_OUT = 1; if(QDCT_cQTryCnt<= QDCT_PARAM_TRY_TIMES)//后推头输出 //只两次放开挡拉头 QDCT_QDLP_OUT = 1; QDCT_QDLPDelay = dwTickCount + QDCT_PARAM_DLP_TIME; QDCT_QTLT_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_QTLTStep = 3; } break; case 3: if(QDCT_QTLT_LIMIT_IN) { QDCT_QTLT_Delay = dwTickCount + QDCT_PARAM_SL_BACKDELAY; QDCT_QTLTStep = 4; } else if(dwTickCount >= QDCT_QTLT_Delay) GL_QDCT_SetAlarmCode(QDCT_SL_ALARM); break; case 4: if((dwTickCount >= QDCT_QTLT_Delay)) { QDCT_QTLT_OUT = 0; QDCT_QTLT_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_QTLTStep = 5; QDCT_bQTuiLaTouOkFlg = 1; } break; case 5: if(!QDCT_QTLT_LIMIT_IN) { QDCT_QTLTStep = 0; QDCT_QTLT_Delay = dwTickCount; } else if(dwTickCount >= QDCT_QTLT_Delay) GL_QDCT_SetAlarmCode(QDCT_SL_ALARM); break; } #endif } //后推拉头动作 void GL_QDCT_HTuiLT_Step(void) { // static unsigned long h_dlp_delay; #if 1 // static unsigned short dlp_flg = 0; if(QDCT_HDLP_OUT && (dwTickCount >= QDCT_HDLPDelay)) QDCT_HDLP_OUT = 0; switch(QDCT_HTLTStep) { case 1: if(!QDCT_PARAM_HLT_ON) //后拉头关, { QDCT_bHTuiLaTouOkFlg = 1; } if(QDCT_bHTuiLaTouOkFlg) { QDCT_HTLTStep = 0; } else { QDCT_HTLT_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_HTLTStep = 2; } break; case 2: if(QDCT_HHSL_ORIGIN_IN && !QDCT_HHSL_LIMIT_IN) { QDCT_HTLT_OUT = 1; //后推头输出 //只两次放开挡拉头 if(QDCT_cQTryCnt<= QDCT_PARAM_TRY_TIMES) //后挡拉头(打拉片) QDCT_HDLP_OUT = 1; QDCT_HDLPDelay = dwTickCount + QDCT_PARAM_DLP_TIME; QDCT_HTLT_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_HTLTStep = 3; } break; case 3: if(QDCT_HTLT_LIMIT_IN) { QDCT_HTLT_Delay = dwTickCount + QDCT_PARAM_SL_BACKDELAY; QDCT_HTLTStep = 4; } else if(dwTickCount >= QDCT_HTLT_Delay) GL_QDCT_SetAlarmCode(QDCT_SL_ALARM); break; case 4: if((dwTickCount >= QDCT_HTLT_Delay)) { QDCT_HTLT_OUT = 0; QDCT_HTLT_Delay = dwTickCount + QDCT_VAVLE_ERROR_TIME; QDCT_HTLTStep = 5; QDCT_bHTuiLaTouOkFlg = 1; } break; case 5: if(!QDCT_HTLT_LIMIT_IN) { QDCT_HTLTStep = 0; QDCT_HTLT_Delay = dwTickCount; } else if(dwTickCount >= QDCT_HTLT_Delay) GL_QDCT_SetAlarmCode(QDCT_SL_ALARM); break; } #endif } //手动动作 void GL_QDCT_ManualAction(void) { #if 1 if(bRunning == 0) { if(bClearTotal) //切断计数清零 { bClearTotal = 0; ClrcToTal(QDCT_TOTAL_ADDR); } if(QDCT_bClerNowTotal) { QDCT_bClerNowTotal = 0; QDCT_PARAM_TB_CNT1 = 0; QDCT_PARAM_TB_CNT2 = 0; ClrcToTal(QDCT_NOWTOTAL_ADDR); } //切断 if(QDCT_bQieDuan) { QDCT_bQieDuan = 0; if(QDCT_XiaQieStep == 0) { if(QDCT_PARAM_XM_MODE) //下模不动 { if(QDCT_SL_ORIGIN_IN ) QDCT_XiaQieStep = 1; } else { QDCT_XiaQieStep = 1; } } } //测试行程 if(QDCT_bReset_Origin) { QDCT_bReset_Origin = 0; QDCT_TestMotorStep = 1; } //前点定位 if(QDCT_bQianDianDW) { QDCT_bQianDianDW = 0; if((QDCT_MotorStep == 0) && !QDCT_SQ_LIMIT_IN && (!QDCT_XQ_LIMIT_IN || QDCT_PARAM_XM_MODE)) { QDCT_MotorStep = 61; dwZipCnt = 0; } else if(QDCT_SQ_LIMIT_IN) GL_QDCT_SetAlarmCode(QDCT_SQ_LIMIT_ALARM); } //下模 if(QDCT_bManXM) { QDCT_bManXM = 0; QDCT_XM_OUT = ~QDCT_XM_OUT; if(QDCT_QHSL_OUT || QDCT_HHSL_OUT)QDCT_XM_OUT = 0; } //上切刀 if(QDCT_bManSQ) { QDCT_bManSQ = 0; if(QDCT_SQ_OUT) QDCT_SQ_OUT = 0; // 送料原点 下模动 //下模不动 else if((QDCT_SL_ORIGIN_IN && (QDCT_PARAM_XM_MODE != 0))||(QDCT_PARAM_XM_MODE == 0)) { QDCT_SQ_OUT = 1; QDCT_bTuiLianOKFlag = 0; } } //下切刀 if(QDCT_bManXQ) { QDCT_bManXQ = 0; QDCT_XQ_OUT = ~QDCT_XQ_OUT; QDCT_bTuiLianOKFlag = 0; if(QDCT_GO_LIMIT_IN) QDCT_XQ_OUT = 0; } //夹带 if(QDCT_bManJD) { QDCT_bManJD = 0; QDCT_JD_OUT = ~QDCT_JD_OUT; } //前推拉头 if(QDCT_bManQTLT) { QDCT_bManQTLT = 0; if(QDCT_QHSL_ORIGIN_IN) { if(QDCT_QTLTStep == 0) { QDCT_QTLTStep = 1; QDCT_bQTuiLaTouOkFlg = 0; QDCT_cQTryCnt = 0; } else { QDCT_QTLT_OUT = 0; } } } //后推拉头 if(QDCT_bManHTLT) { QDCT_bManHTLT = 0; if(QDCT_HHSL_ORIGIN_IN) { if(QDCT_HTLTStep == 0) { QDCT_HTLTStep = 1; QDCT_bHTuiLaTouOkFlg = 0; QDCT_cQTryCnt = 0; } else //后推拉头 QDCT_HTLT_OUT = 0; } } //前横送料 if(QDCT_bManQHSL) { QDCT_bManQHSL = 0; QDCT_QHSL_OUT = ~QDCT_QHSL_OUT; if(QDCT_XM_OUT || QDCT_QTLT_LIMIT_IN)QDCT_QHSL_OUT = 0; } if(QDCT_bManHHSL) { QDCT_bManHHSL = 0; QDCT_HHSL_OUT = ~QDCT_HHSL_OUT; if(QDCT_XM_OUT || QDCT_HTLT_LIMIT_IN)QDCT_HHSL_OUT = 0; } //前振动盘 if(QDCT_bManQZD) { QDCT_bManQZD = 0; if(QDCT_QZDP_OUT) { QDCT_QZDP_OUT = 0; QDCT_QZDPStep = 0; } else { QDCT_QZDP_OUT = 1; QDCT_QZDPStep = 2; if(QDCT_TLPStep==0)QDCT_TLPStep = 1; } } //后振动盘 if(QDCT_bManHZD) { QDCT_bManHZD = 0; if(QDCT_HZDP_OUT) { QDCT_HZDP_OUT = 0; QDCT_HZDPStep = 0; } else { QDCT_HZDP_OUT = 1; QDCT_HZDPStep = 2; } } //前夹拉头 if(QDCT_bManQJLT) { QDCT_bManQJLT = 0; QDCT_QJLT_OUT = ~QDCT_QJLT_OUT; if(!QDCT_QJLT_OUT) QDCT_bQZhuangLiaoOkFlg = 0; } //后夹拉头 if(QDCT_bManHJLT) { QDCT_bManHJLT = 0; QDCT_HJLT_OUT = ~QDCT_HJLT_OUT; if(!QDCT_HJLT_OUT) QDCT_bHZhuangLiaoOkFlg = 0; } //台面电机 if(QDCT_bTable) { QDCT_bTable = 0; QDCT_TB_OUT = 1; QDCT_TableDelay = dwTickCount+QDCT_PARAM_TABLE_TIME; } //前装料 if(QDCT_bQZuangLT) { QDCT_bQZuangLT = 0; if(QDCT_QZhuangLiaoStep == 0) { QDCT_cQTryCnt = 0; QDCT_bQTuiLaTouOkFlg = 1; QDCT_QZhuangLiaoStep = 3; QDCT_bFirstQStartFlg = 0; } } //后装料 if(QDCT_bHZuangLT) { QDCT_bHZuangLT = 0; if(QDCT_HZhuangLiaoStep == 0) { QDCT_cQTryCnt = 0; QDCT_bHTuiLaTouOkFlg = 1; QDCT_HZhuangLiaoStep = 3; QDCT_bFirstHStartFlg = 0; } } //压带 if(QDCT_bManYD) { QDCT_bManYD = 0; QDCT_YD_OUT = ~QDCT_YD_OUT; } //吹气 if(QDCT_bManCQ) { QDCT_bManCQ = 0; QDCT_CQ_OUT = 1; //吹气 QDCT_CQDelay = dwTickCount + QDCT_PARAM_CQ_TIME; } //推拉片 if(QDCT_bManDLP) { QDCT_bManDLP = 0; QDCT_HDLP_OUT = ~QDCT_HDLP_OUT;//M0327 // Y27 后打拉片 QDCT_QDLP_OUT = QDCT_HDLP_OUT; } //穿拉头 if(QDCT_bChuanLT) { QDCT_bChuanLT = 0; if(!QDCT_BACK_LIMIT_IN) { if(QDCT_MotorStep == 0)QDCT_MotorStep = 30; } } //电机松轴 if(QDCT_bManSZ) { QDCT_bManSZ = 0; SetEn(X_AXIS, QDCT_MOTOR_DISEN); } //电机控制 前进 if(QDCT_bMotorGo && !QDCT_GO_LIMIT_IN && !QDCT_SQ_LIMIT_IN) { QDCT_JD_OUT = 1; SetEn(X_AXIS, QDCT_MOTOR_EN); QDCT_bBackLimitCheck_EN= 0; if(!X_DRV) AxisContinueMoveAcc(X_AXIS,QDCT_PARAM_GO_LOWSPEED, QDCT_DIR_N,QDCT_PARAM_GO_LOWSPEED,800,15,15); } else if(QDCT_bMotorGo && QDCT_SQ_LIMIT_IN) GL_QDCT_SetAlarmCode(QDCT_SQ_LIMIT_ALARM); if(QDCT_bMotorBack && !QDCT_BACK_LIMIT_IN) { SetEn(X_AXIS, QDCT_MOTOR_EN); QDCT_bBackLimitCheck_EN = 1; if(!X_DRV) AxisContinueMoveAcc(X_AXIS,QDCT_PARAM_GO_LOWSPEED, QDCT_DIR_P,QDCT_PARAM_GO_LOWSPEED,800,15,15); } if(!QDCT_bMotorGo && !QDCT_bMotorBack && (QDCT_MotorStep == 0) && (QDCT_bStopFlg == 0) && (QDCT_TestMotorStep == 0)) { if(X_DRV)AxisDecStop(X_AXIS); } if(QDCT_GO_LIMIT_IN && (QDCT_MotorStep == 0) && !QDCT_bMotorBack &&(QDCT_AutoStep == 0) && (QDCT_bStopFlg == 0) && (QDCT_bStopFlg == 0) && (QDCT_TestMotorStep == 0)) { if(X_DRV)AxisEgmStop(X_AXIS); } if(QDCT_bYLGO) { if(!Y_DRV)//AxisContinueMoveAcc(Y_AXIS,5, QDCT_YL_DIR_P,5,10,10); AxisContinueMoveAcc(Y_AXIS,QDCT_PARAM_GO_LOWSPEED, QDCT_DIR_P,QDCT_PARAM_GO_LOWSPEED,800,15,15); } if(QDCT_bYLBACK) { if(!Y_DRV)AxisContinueMoveAcc(Y_AXIS,QDCT_PARAM_GO_LOWSPEED, QDCT_DIR_N,QDCT_PARAM_GO_LOWSPEED,800,15,15); } if(!QDCT_bYLGO && !QDCT_bYLBACK && (QDCT_MotorStep == 0) && (QDCT_AutoStep == 0)) { if(Y_DRV)AxisEgmStop(Y_AXIS); } if(QDCT_bYL) { QDCT_bYL = 0; QDCT_YL_OUT = ~QDCT_YL_OUT; } if(QDCT_bManKL) { QDCT_bManKL = 0; QDCT_KL_OUT = ~QDCT_KL_OUT; // QDCT_JiaLianStep = 3; } if(QDCT_bManCS) { QDCT_bManCS = 0; QDCT_CS_Delay = dwTickCount + QDCT_PARAM_CS_TIME; QDCT_CS_OUT = 1; } if(QDCT_CS_OUT && (dwTickCount >= QDCT_CS_Delay)) { QDCT_CS_OUT = 0; } } if(QDCT_CQ_OUT && (dwTickCount >= QDCT_CQDelay)) QDCT_CQ_OUT = 0; #endif } #endif