#include "global.h" #if FU_XIAO_WEI_MACHINE == 1 void Bi_QueDuan_AlarmProtect(void); void Bi_QueDuan_ManualAction(void); void Bi_QueDuan_AutoAction(void); void Bi_QueDuan_StepCheckStart(void); void Bi_QueDuan_XiaQue(void); void Bi_QueDuan_SecondXiaQue(void); void Bi_QueDuan_Motor(void); void Bi_QueDuan_YuanDianAction(void); void Bi_QueDuan_ExtiActionX31(void); void Bi_QueDuan_BingLian(void); void Bi_QueDuan_TuiLianAction(void); void Bi_StopCode(void); void Bi_Motor_SZ(unsigned char En); void Bi_QueDuan_CheckLength(void); void Bi_QueDuan_YMotor(void); void Bi_QueDuan_ZMotor(void); //夹子松带返回长链电机处 void Bi_QueDuan_ReBack(void); short *Bi_QD_length_buffer; void Bi_QueDuan_ExtiActionX31(void) { // cCheckLianFlg = 1; } void Bi_QD_SetAlarmCode(unsigned alarm_code) { SetAlarmCode(Bi_QD_ALARM_ADDR,alarm_code); bAlarmStop = 1; } void Bi_StopCode(void) { #if 1 switch(Bi_QD_StopStep) { case 1: Bi_QD_StopStep=2; if(X_DRV) { AxisChangeSpeedDirect(X_AXIS,GetCurSpeed(X_AXIS) * 2/3); AxisDecStop(X_AXIS); } if(Y_DRV) { AxisChangeSpeedDirect(Y_AXIS,GetCurSpeed(Y_AXIS) * 2/3); AxisDecStop(Y_AXIS); } break; case 2: if((!X_DRV || (dwXRealPos < 10))) { AxisEgmStop(X_AXIS); } if(!Y_DRV || (GetCurSpeed(Y_AXIS) < 3000)) { AxisEgmStop(Y_AXIS); } if(!X_DRV && !Y_DRV) { Bi_QD_StopCodeDelay=dwTickCount+350; Bi_QD_StopStep = 3; } break; case 3: if(dwTickCount >= Bi_QD_StopCodeDelay) { if(!Bi_QD_cSTOPONE) { Bi_QD_StopStep=0; } else { Bi_QD_SetAlarmCode(Bi_QD_PARAM_ANQUANMEN_ALARM); Bi_QD_StopStep=0; Bi_QD_cSTOPONE=0; } AxisEgmStop(X_AXIS); AxisEgmStop(Y_AXIS); SetEn(X_AXIS, MOTOR_DISEN); //电机松轴 SetEn(Y_AXIS, MOTOR_DISEN); //电机松轴 } break; } #endif } //电机松轴 //void Bi_Motor_SZ(unsigned char En) //{ //} void Bi_QueDuan_InitAction(void) { #if 1 float Bi_QD_length_buff,pulse_buff; //X轴 Bi_QD_length_buff = Bi_QD_PARAM_CYCLE_LENGTH; pulse_buff = Bi_QD_PARAM_CYCLE_PULSE; XGearRatio = pulse_buff/Bi_QD_length_buff; //Y轴长链压轮 Bi_QD_length_buff = Bi_QD_PARAM_YMOTOR_CYCLE_LENGTH; pulse_buff = 2000; YGearRatio = pulse_buff/Bi_QD_length_buff; //Z轴丝杆 Bi_QD_length_buff = Bi_QD_PARAM_ECMOTOR_CYCLE_LENGTH; pulse_buff = 2000; ZGearRatio = pulse_buff/Bi_QD_length_buff; SetEnReverse(X_AXIS, 0); SetEnReverse(Y_AXIS, 0); SetEnReverse(Z_AXIS, 0); SetDirReverse(X_AXIS, 0); SetDirReverse(Y_AXIS, 1); SetDirReverse(Z_AXIS, 1); SetPos(X_AXIS, 0); //启动位置设为0点 SetPos(Y_AXIS, 0); //启动位置设为0点 SetPos(Z_AXIS, 0); //启动位置设为0点 SetEn(X_AXIS, MOTOR_DISEN); SetEn(Y_AXIS, MOTOR_DISEN); SetEn(Z_AXIS, MOTOR_EN); Bi_QD_TMSZ_OUT = 1; Bi_QD_ORIGIN_Over = 0; Bi_QD_ZMotorStep = 1; //回零点 SetAlarmCode(Bi_QD_ALARM_ADDR,0); #endif } void Bi_QueDuan_Action(void) { #if 1 // InputPinConfig(); Bi_QueDuan_AlarmProtect(); Bi_QueDuan_Motor(); Bi_QueDuan_YMotor(); Bi_QueDuan_ZMotor(); Bi_StopCode(); Bi_QueDuan_XiaQue(); Bi_QueDuan_ManualAction(); Bi_QueDuan_TuiLianAction(); Bi_QueDuan_BingLian(); Bi_QueDuan_SecondXiaQue(); Bi_QueDuan_AutoAction(); Bi_QueDuan_CheckLength(); Bi_QueDuan_ReBack(); Bi_QueDuan_StepCheckStart(); // 调用脚踏开关检测程序 //温度控制 Bi_QD_KAI_WD_OUT = Bi_QD_CLTD_KAI_WD_IN && (!Bi_QD_PARAM_ECQ_DJ_SELECT || (!Bi_QD_PARAM_YCQ_DJ_SELECT && Bi_QD_PARAM_ECQ_MODE)); Bi_QD_BI_WD_OUT = Bi_QD_CLTD_BI_WD_IN && (Bi_QD_PARAM_ECQ_DJ_SELECT || (Bi_QD_PARAM_YCQ_DJ_SELECT && Bi_QD_PARAM_ECQ_MODE)); //运行 // OutputPinConfig(); #endif } //手动动作 void Bi_QueDuan_ManualAction(void) { #if 1 if(Bi_QD_PARAM_TABLE_MODE) { Bi_QD_TABLE_VAVLE=0; } if(Bi_QD_PARAM_ECQ_MODE) { } if(Bi_QD_LDHXW_IN) { AxisEgmStop(X_AXIS); Bi_QD_SetAlarmCode(Bi_QD_LDHXW_ALARM); } if(bRunning == 0) { if(user_datas[Bi_QD_ALARM_ADDR] != 0) Bi_QD_ALR_STATE = 1; else Bi_QD_ALR_STATE = 0; Bi_QD_RUN_STATE = 0; //运行灯关 Bi_QD_cGoLimitEn = 0; if(Bi_QD_bClearTotal) //切断计数清零 { Bi_QD_bClearTotal = 0; ClrcToTal(Bi_QD_TOTAL_ADDR); } if(Bi_QD_bClearNowTotal) { Bi_QD_bClearNowTotal = 0; Bi_QD_PARAM_NOW_CNT = 0; } if(Bi_QD_bXiaQie) { Bi_QD_bXiaQie = 0; if((Bi_QD_XiaQieStep == 0) && !Bi_QD_TL_VAVLE) { Bi_QD_YD_VAVLE=1; Bi_QD_XiaQieStep = 1; } } if(Bi_QD_bQianDianDW) { Bi_QD_bQianDianDW = 0; if(Bi_QD_MotorStep == 0) { Bi_QD_MotorStep = 61; Bi_QD_cZipCnt = 0; SetEn(X_AXIS, MOTOR_EN); //电机锁轴 Bi_QD_MotorDelay = dwTickCount + 150; } } if(Bi_QD_bTL) { Bi_QD_bTL = 0; if(Bi_QD_TL_VAVLE) { Bi_QD_TL_VAVLE = 0; } else if(!Bi_QD_GZ_VAVLE && !Bi_QD_SM_VAVLE) { Bi_QD_TL_VAVLE = ~Bi_QD_TL_VAVLE; } } if(Bi_QD_XiaQieStep == 0) { if(Bi_QD_PARAM_ECTMACHINE_MODE) { if(Bi_QD_ZMotorStep == 0) { if(Bi_QD_bFIRST_POS) { Bi_QD_bFIRST_POS = 0; Bi_QD_ZMotorStep = 10; } else if(Bi_QD_bSECOND_POS) { Bi_QD_bSECOND_POS = 0; Bi_QD_ZMotorStep = 20; } if(Bi_QD_QD_GO) //切刀进 { AxisContinueMoveAcc(Z_AXIS,5000,Bi_QD_DIR_P,2000,2000,25,15); } if(Bi_QD_QD_BACK && !Bi_QD_ECTD_ORIGIN_IN) //切刀退 { AxisContinueMoveAcc(Z_AXIS,5000,Bi_QD_DIR_N,2000,2000,25,15); } } if(Bi_QD_QD_BACK && Bi_QD_ECTD_ORIGIN_IN) //切刀退 { AxisEgmStop(Z_AXIS); Bi_QD_QD_BACK = 0; } } else { Bi_QD_bFIRST_POS = 0; Bi_QD_bSECOND_POS = 0; } } //电机停止 if((Bi_QD_ZMotorStep == 0) && !Bi_QD_QD_GO && !Bi_QD_QD_BACK) { AxisEgmStop(Z_AXIS); } if(Bi_QD_bYD) { Bi_QD_bYD = 0; Bi_QD_YD_VAVLE = ~Bi_QD_YD_VAVLE; } if(Bi_QD_bGZ) { Bi_QD_bGZ = 0; Bi_QD_GZ_VAVLE = ~Bi_QD_GZ_VAVLE; } if(Bi_QD_bJD) { Bi_QD_bJD = 0; Bi_QD_JD_VAVLE = ~Bi_QD_JD_VAVLE; } if(Bi_QD_bXM) { Bi_QD_bXM = 0; if(Bi_QD_XM_VAVLE) { Bi_QD_XM_VAVLE = 0; } else { Bi_QD_XM_VAVLE = 1; } } if(Bi_QD_bKKD) //开口刀 { Bi_QD_bKKD = 0; if(!Bi_QD_SM_VAVLE && !Bi_QD_SHANG_MU_LIMIT_IN) Bi_QD_KAI_XM_VAVLE =~Bi_QD_KAI_XM_VAVLE; } if(Bi_QD_bHBD) //花边刀 { Bi_QD_bHBD = 0; if(!Bi_QD_SM_VAVLE && !Bi_QD_SHANG_MU_LIMIT_IN) Bi_QD_BI_XM_VAVLE = ~Bi_QD_BI_XM_VAVLE; } if(Bi_QD_bECT) { Bi_QD_bECT = 0; Bi_QD_ECT_VAVLE = ~Bi_QD_ECT_VAVLE; } if(Bi_QD_bDL) { Bi_QD_bDL = 0; // Bi_QD_DL_VAVLE = ~Bi_QD_DL_VAVLE; } if(Bi_QD_bCHUIQI) { Bi_QD_bCHUIQI = 0; Bi_QD_ECQ_CUIQI_VAVLE = 1; Bi_QD_CHUIQIDelay = dwTickCount+Bi_QD_PARAM_CHUIQI_TIME; } if(Bi_QD_bJL) { Bi_QD_bJL = 0; // Bi_QD_JIALIAN_VAVLE = ~Bi_QD_JIALIAN_VAVLE; } if(Bi_QD_bSM) { Bi_QD_bSM = 0; if(Bi_QD_SM_VAVLE) { Bi_QD_CS_OUT = 0; Bi_QD_SM_VAVLE = 0; } else if(!Bi_QD_TL_VAVLE) Bi_QD_SM_VAVLE = 1; } //推方块 if(Bi_QD_bTFK) { Bi_QD_bTFK = 0; if(Bi_QD_TFK_VAVLE) { Bi_QD_YD_VAVLE=0; Bi_QD_TFK_VAVLE=0; } else { Bi_QD_YD_VAVLE=1; Bi_QD_TFK_VAVLE=1; } } if(Bi_QD_bSD) { Bi_QD_bSD = 0; Bi_QD_SD_VAVLE = ~Bi_QD_SD_VAVLE; } if(Bi_QD_bZY) { Bi_QD_bZY = 0; if(Bi_QD_SM_VAVLE && !Bi_QD_CS_OUT) Bi_QD_CS_OUT =1; else if(Bi_QD_CS_OUT) Bi_QD_CS_OUT=0; } if(Bi_QD_bDGLG) { Bi_QD_bDGLG = 0; Bi_QD_DGLG_VAVLE = ~Bi_QD_DGLG_VAVLE; } //台面电机 if(Bi_QD_bTB) { Bi_QD_bTB = 0; Bi_QD_TABLE_VAVLE = ~Bi_QD_TABLE_VAVLE; Bi_QD_TMFZ_OUT = 0; Bi_QD_TMSZ_OUT = ~Bi_QD_TABLE_VAVLE; } //台面电机反转 if(Bi_QD_bTBFZ) { Bi_QD_bTB = 0; Bi_QD_TABLE_VAVLE = 0; Bi_QD_TMFZ_OUT = ~Bi_QD_TMFZ_OUT; Bi_QD_TMSZ_OUT = ~Bi_QD_TMFZ_OUT; } if(Bi_QD_bTestCS) { Bi_QD_bTestCS = 0; Bi_QD_CS_OUT = 1; Bi_QD_CSDelay = dwTickCount + Bi_QD_PARAM_CS_TIME; } if(Bi_QD_bBL)//合链 { Bi_QD_bBL = 0; Bi_QD_BL_VAVLE = ~Bi_QD_BL_VAVLE; } if(Bi_QD_bHL) //护链,双开用 { Bi_QD_bHL = 0; // Bi_QD_HL_VAVLE = ~Bi_QD_HL_VAVLE; } if(Bi_QD_bYX) { Bi_QD_bYX = 0; // Bi_QD_YX_VAVLE = ~Bi_QD_YX_VAVLE; } if(Bi_QD_bCLTD_JT) //长链拉带进退电磁阀Y20 { Bi_QD_bCLTD_JT= 0; if(Bi_QD_CLTD_JT_VAVLE) Bi_QD_CLTD_JT_VAVLE = 0; else if(!Bi_QD_QIAN_LIMIT_IN) Bi_QD_CLTD_JT_VAVLE = 1; } if(Bi_QD_bCLTD_YL) //长链拉带压轮电磁阀Y21 { Bi_QD_bCLTD_YL= 0; Bi_QD_CLTD_YL_VAVLE = ~Bi_QD_CLTD_YL_VAVLE; } //电机控制 if(Bi_QD_bGoMotor) { if(!Bi_QD_QIAN_LIMIT_IN) { SetEn(X_AXIS, MOTOR_EN);//电机锁轴 if(Bi_QD_PARAM_ECTMACHINE_MODE) { if(!Bi_QD_PARAM_ECTGY_MODE) { if(!Bi_QD_ZJL_ORIGIN_IN)SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_ZJLYW_ALARM); // Bi_QD_SetAlarmCode(Bi_QD_ZJLYW_ALARM); else if(!Bi_QD_YJL_ORIGIN_IN)SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_YJLYW_ALARM); // Bi_QD_SetAlarmCode(Bi_QD_YJLYW_ALARM); else if(!X_DRV) { // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_PARAM_GO_LOW_SPEED,10,12); } } else if(!X_DRV) { // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_PARAM_GO_LOW_SPEED,10,12); } } else if(!X_DRV) { // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_PARAM_GO_LOW_SPEED,10,12); } } else if(!X_DRV) { SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_QIAN_LIMIT_HAND_ALARM); } } if(Bi_QD_bBackMotor && !Bi_QD_LDHXW_IN) //后退限位已经取消 { SetEn(X_AXIS, MOTOR_EN); //电机锁轴 if(!X_DRV) // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_P,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_PARAM_GO_LOW_SPEED,10,12); } if(!Bi_QD_bGoMotor && !Bi_QD_bBackMotor && (Bi_QD_MotorStep == 0) && (Bi_QD_StopStep == 0)) { if(X_DRV)AxisEgmStop(X_AXIS); } if(Bi_QD_QIAN_LIMIT_IN && (Bi_QD_MotorStep == 0) && !Bi_QD_bBackMotor &&(Bi_QD_AutoStep == 0)) { if(X_DRV) { Bi_QD_bGoMotor = 0; AxisEgmStop(X_AXIS); } } if(Bi_QD_bCLTD_P) { SetEn(Y_AXIS, MOTOR_EN); //电机锁轴 if(!Y_DRV) AxisContinueMoveAcc(Y_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_P,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_PARAM_GO_LOW_SPEED,10,12); } if(Bi_QD_bCLTD_N) { SetEn(Y_AXIS, MOTOR_EN); //电机锁轴 if(!Y_DRV) AxisContinueMoveAcc(Y_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_PARAM_GO_LOW_SPEED,10,12); } if((Bi_QD_YMotorStep == 0) && !Bi_QD_bCLTD_P && !Bi_QD_bCLTD_N && (Bi_QD_StopStep == 0)) { if(Y_DRV)AxisEgmStop(Y_AXIS); } } #endif } void Bi_QueDuan_AlarmProtect(void) { #if 1 dwXRealPos = GetPos(X_AXIS); dwYRealPos = GetPos(Y_AXIS); dwZRealPos = GetPos(Z_AXIS); if(!bRunning) { ; } else { if(Bi_QD_PARAM_RUN_LENGTH < 5000) Bi_QD_PARAM_RUN_LENGTH= 5000; if((dwXRealPos > Bi_QD_PARAM_RUN_LENGTH) && (Bi_QD_cGoLimitEn != 0)) //第一条手动时不保护 { Bi_QD_JD_VAVLE = 0; Bi_QD_StopStep=1; Bi_QD_SetAlarmCode(Bi_QD_BACK_ALARM); } } #endif } void Bi_QueDuan_AutoAction(void) { #if 1 if(Bi_QD_cTABLETIME) { if(Bi_QD_cTABLETOTAL) { Bi_QD_cTABLETOTAL=0; if(Bi_QD_PARAM_LIAN_SELECT == 0) Bi_QD_TABLE_VAVLE = 1; Bi_QD_TableDelay=dwTickCount + 2000; } if(dwTickCount >= Bi_QD_TableDelay) { Bi_QD_TABLE_VAVLE = 0; Bi_QD_cTABLETIME = 0; } } if(bRunning) {//台面电机定时关掉 if(!Bi_QD_cTABLETIME) { if(dwTickCount >= Bi_QD_TBDelay) Bi_QD_TABLE_VAVLE = 0; } switch(Bi_QD_AutoStep) { case 1: if((dwTickCount >= Bi_QD_AutoDelay) && ((Bi_QD_PARAM_ECTMACHINE_MODE == 0) || (Bi_QD_ORIGIN_Over && (Bi_QD_ZMotorStep == 0))) && (Bi_QD_XiaQieStep == 0)) { if(Bi_QD_XiaQieStep==0) Bi_QD_AutoStep = 2; if(Bi_QD_MotorStep == 0 ) { // if(Bi_QD_cZipCnt == 0) // { Bi_QD_MotorStep = 61; //前点定位 // } // else // Bi_QD_MotorStep = 81; //前点定位 Bi_QD_MotorDelay = dwTickCount; } Bi_QD_cGoLimitEn = 0; } break; case 2: if((Bi_QD_MotorStep == 0) && (!Bi_bTiaoShiMode || (Bi_QD_START_IN_UP))) { if(Bi_QD_PARAM_LIAN_SELECT == 0) { Bi_QD_MotorStep = 30; //后拉拖带定位 Bi_QD_YMotorStep = 0; } else Bi_QD_YMotorStep = 30; //长链 Bi_QD_AutoStep = 3; Bi_QD_cGoLimitEn = 1; } break; case 3: //后面两步为延时反转步 if(((Bi_QD_MotorStep == 0) && (Bi_QD_YMotorStep == 0)) && (!Bi_bTiaoShiMode || (Bi_QD_START_IN_UP))) { if(Bi_QD_SAFE_IN) { bStop = 1; } else { Bi_QD_XiaQueOver = 0; if(Bi_QD_XiaQieStep == 0) Bi_QD_XiaQieStep = 1; Bi_QD_AutoStep = 4; Bi_QD_MotorStep = 390; //反转 } } break; case 4: // 闭口 if(((Bi_QD_XiaQieStep == 0) || Bi_QD_XiaQueOver)) { Bi_QD_XiaQueOver = 0; //拉直要区分长链的短链(0短链,1 长链) if((Bi_QD_PARAM_LIAN_SELECT == 0) && (Bi_QD_PARAM_ECQ_MODE == 0)) { if(Bi_QD_MotorStep == 0) { Bi_QD_MotorStep = 40; //切完后退 } } Bi_QD_AutoStep = 5; } break; case 5: if((Bi_QD_MotorStep == 0)) //不管那种模式,说明松夹已经完成 { if(Bi_QD_NQDJGNUNMBER==0) Bi_QD_AutoStep = 6; else if(Bi_QD_NQDJGNUNMBER==1) Bi_QD_SetAlarmCode(Bi_QD_LENGTH_LONG_ALARM); else if(Bi_QD_NQDJGNUNMBER==2) Bi_QD_SetAlarmCode(Bi_QD_LENGTH_SHORT_ALARM); } break; case 6: if(((Bi_QD_MotorStep == 0)) && (!Bi_bTiaoShiMode || (Bi_QD_START_IN_UP))) { Bi_QD_cZipCnt++; Bi_QD_PARAM_NOW_CNT++; Bi_QD_cTableCnt++; AddToTal(Bi_QD_TOTAL_ADDR); AddToTal(Bi_QD_WORKTOTAL_ADDR); CalProSP(Bi_QD_PROSPEED_ADDR); if(Bi_QD_cTableCnt >= Bi_QD_PARAM_TABLE_NUM) { Bi_QD_cTableCnt = 0; if(Bi_QD_PARAM_LIAN_SELECT == 0) Bi_QD_TABLE_VAVLE = 1; Bi_QD_TBDelay = dwTickCount + Bi_QD_PARAM_TB_TIME; } if(/*(GetTotal(Bi_QD_TOTAL_ADDR) >= Bi_QD_PARAM_SET_TOTAL) ||*/ SingOneFlg) { /* if((Bi_QD_PARAM_SET_TOTAL == 0) && !SingOneFlg) { Bi_QD_AutoDelay = dwTickCount + Bi_QD_PARAM_CYCLE_DELAY; Bi_QD_AutoStep = 1; } else */ { bRunning = 0; Bi_QD_AutoStep = 0; SingOneFlg = 0; } // if(GetTotal(Bi_QD_TOTAL_ADDR) >= Bi_QD_PARAM_SET_TOTAL) Bi_QD_SetAlarmCode(Bi_QD_TOTAL_ALARM); } else { Bi_QD_AutoStep = 1; if((Bi_QD_PARAM_NOW_CNT >= Bi_QD_PARAM_ZHA_SHU) && (Bi_QD_PARAM_ZHA_SHU > 0)) { Bi_QD_AutoDelay = dwTickCount + Bi_QD_PARAM_ZS_STOP_TIME; Bi_QD_PARAM_NOW_CNT = 0; Bi_QD_cTABLETIME = 1; Bi_QD_cTABLETOTAL= 1; if(Bi_QD_PARAM_ZS_STOP_TIME == 0) { bRunning = 0; Bi_QD_AutoStep = 0; SingOneFlg = 0; Bi_QD_cTABLETIME = 1; Bi_QD_cTABLETOTAL= 1; Bi_QD_SetAlarmCode(Bi_QD_TOTAL_ALARM); } } else { if(!X_DRV) //电机没有停止 Bi_QD_AutoDelay = dwTickCount + Bi_QD_PARAM_CYCLE_DELAY; else Bi_QD_AutoDelay = dwTickCount; } } } break; } } #endif } void Bi_QueDuan_StepCheckStart(void) { #if 1 // 启动 if((Bi_QD_START_IN_UP) || bStart || Bi_QD_bSingle) { bStart = 0; if(!bRunning && (Bi_QD_AutoStep == 0) && Bi_QD_ORIGIN_Over&& (Bi_QD_XiaQieStep == 0)) { if((Bi_QD_XIA_MU_LIMIT_IN) && !Bi_QD_PARAM_XM_ENABLE)Bi_QD_SetAlarmCode(Bi_QD_XM_DAOWEI); else if(Bi_QD_SM_VAVLE)Bi_QD_SetAlarmCode(Bi_QD_SM_ALARM); else { Bi_QD_RUN_STATE = 1; //运行灯开 Bi_QD_TMSZ_OUT = 0; //台面电机锁轴 Bi_QD_ALR_STATE = 0; //警告灯 bRunning = 1; Bi_QD_AutoStep = 1; if(Bi_QD_bSingle) SingOneFlg= 1; Bi_QD_cZipCnt = 0; Bi_QD_cTuiFangKuaiCnt = 0; Bi_QD_cTABLETIME = 0; Bi_QD_cTABLETOTAL= 0; Bi_QD_NQDJGNUNMBER = 0; Bi_QD_CLTD_JT_VAVLE = 0; Bi_QD_CLTD_YL_VAVLE = 0; Bi_QD_ECT_VAVLE=1; Bi_QD_BL_VAVLE = 0; //并链关 Bi_QD_DGLG_VAVLE = 0; //顶过链杆关 SetAlarmCode(Bi_QD_ALARM_ADDR,0); SetEn(X_AXIS, MOTOR_EN); //电机锁轴 SetEn(Y_AXIS, MOTOR_EN); //电机锁轴 Bi_QD_AutoDelay = dwTickCount + 400; if((Bi_QD_PARAM_ECTMACHINE_MODE)) { if(!Bi_QD_PARAM_ECQ_MODE ) Bi_QD_ZMotorStep = 10; else //切二次 Bi_QD_ZMotorStep = 20; //移动到第二次切位置 } Bi_QD_TuiLianStep = 1; Bi_QD_YD_VAVLE = 1; /* if(Bi_QD_PARAM_ECTMACHINE_MODE) { if(Bi_QD_ECTD_ORIGIN_IN) Bi_QD_SetAlarmCode(Bi_QD_ECTDYW_ALARM); if(!Bi_QD_PARAM_ECTGY_MODE) { if(!Bi_QD_HL_ORIGIN)Bi_QD_SetAlarmCode(Bi_QD_DLYW_ALARM); else if(!Bi_QD_ZJL_ORIGIN_IN) Bi_QD_SetAlarmCode(Bi_QD_ZJLYW_ALARM); else if(!Bi_QD_YJL_ORIGIN_IN) Bi_QD_SetAlarmCode(Bi_QD_YJLYW_ALARM); } } */ } } Bi_QD_bSingle = 0; } //停止 if(Bi_QD_STOP_IN_UP || bStop) { bStop = 0; if(bRunning) { Bi_QD_AutoDelay = dwTickCount; Bi_QD_MotorDelay = dwTickCount; Bi_QD_YMotorDelay = dwTickCount; Bi_QD_XiaQieDelay = dwTickCount; Bi_QD_KaDaiDelay = dwTickCount; Bi_QD_CSDelay = dwTickCount; Bi_QD_TBDelay = dwTickCount; Bi_QD_TFKDelay = dwTickCount; Bi_QD_TLDelay = dwTickCount; dwTickCount = Bi_QD_TBDelay; Bi_QD_NQDJGNUNMBER = 0; Bi_QD_SecondXiaQueStep=0; Bi_QD_cTABLETIME = 0; Bi_QD_cTABLETOTAL= 0; SingOneFlg = 0; Bi_QD_JD_VAVLE = 0; Bi_QD_SM_VAVLE = 0; Bi_QD_XM_VAVLE = 0; Bi_QD_YD_VAVLE = 0; Bi_QD_TFK_VAVLE= 0; Bi_QD_TL_VAVLE = 0; // Bi_QD_HL_VAVLE = 0; Bi_QD_CS_OUT = 0; Bi_QD_XiaQieStep = 0; Bi_QD_MotorStep = 0; Bi_QD_YMotorStep = 0; Bi_QD_TuiLianStep = 0; Bi_QD_GZ_VAVLE = 0; Bi_QD_TABLE_VAVLE = 0; Bi_QD_TMFZ_OUT = 0; Bi_QD_TMSZ_OUT = 1; Bi_QD_DGLG_VAVLE = 0; //顶过链杆关 if((Bi_QD_StopStep == 0) && (X_DRV || Y_DRV)) Bi_QD_StopStep = 1; //AxisDecStop(X_AXIS); Bi_QD_BinLianStep = 0; Bi_QD_BL_VAVLE = 0; user_datas[121] = 0; user_datas[122] = 0; // Bi_QD_CLTD_JT_VAVLE = 0; Bi_QD_CLTD_YL_VAVLE = 0; Bi_QD_KAI_XM_VAVLE = 0; //开口下刀电磁阀 Bi_QD_BI_XM_VAVLE = 0; //闭口下刀电磁阀 SetAlarmCode(Bi_QD_ALARM_ADDR,0); // AxisEgmStop(Z_AXIS); } else { Bi_QD_AutoDelay = dwTickCount; Bi_QD_MotorDelay = dwTickCount; Bi_QD_XiaQieDelay = dwTickCount; Bi_QD_KaDaiDelay = dwTickCount; Bi_QD_CSDelay = dwTickCount; Bi_QD_TBDelay = dwTickCount; Bi_QD_TFKDelay = dwTickCount; Bi_QD_TLDelay = dwTickCount; dwTickCount = Bi_QD_TBDelay; Bi_QD_NQDJGNUNMBER = 0; SingOneFlg = 0; Bi_QD_JD_VAVLE = 0; Bi_QD_SM_VAVLE = 0; Bi_QD_XM_VAVLE = 0; Bi_QD_XM_VAVLE = 0; Bi_QD_YD_VAVLE = 0; Bi_QD_TFK_VAVLE= 0; if(!Bi_QD_PARAM_ECQ_MODE) Bi_QD_ECT_VAVLE=1; else Bi_QD_ECT_VAVLE=0; // Bi_QD_YX_VAVLE = 0; // Bi_QD_HL_VAVLE = 0; Bi_QD_TL_VAVLE = 0; Bi_QD_DGLG_VAVLE = 0; //顶过链杆关 Bi_QD_GZ_VAVLE = 0; Bi_QD_SD_VAVLE=0; Bi_QD_CS_OUT = 0; Bi_QD_XiaQieStep = 0; Bi_QD_MotorStep = 0; Bi_QD_TuiLianStep = 0; Bi_QD_TABLE_VAVLE = 0; Bi_QD_cTABLETIME = 0; Bi_QD_TMFZ_OUT = 0; Bi_QD_TMSZ_OUT = 1; Bi_QD_cTABLETOTAL= 0; if((Bi_QD_StopStep == 0)) { Bi_QD_cSTOPONE = 0; AxisEgmStop(X_AXIS); SetEn(X_AXIS, MOTOR_DISEN); //电机松轴 AxisEgmStop(Y_AXIS); SetEn(Y_AXIS, MOTOR_DISEN); //电机松轴 } Bi_QD_SecondXiaQueStep=0; Bi_QD_BinLianStep = 0; Bi_QD_BL_VAVLE = 0; Bi_QD_CLTD_JT_VAVLE = 0; Bi_QD_CLTD_YL_VAVLE = 0; SetAlarmCode(Bi_QD_ALARM_ADDR,0); // AxisEgmStop(Z_AXIS); Bi_QD_KAI_XM_VAVLE = 0; //开口下刀电磁阀 Bi_QD_BI_XM_VAVLE = 0; //闭口下刀电磁阀 if(Bi_QD_PARAM_ECTMACHINE_MODE) //二次切选择的话先移动到第一刀 { // if(Bi_QD_PARAM_ECQ_MODE ) Bi_QD_ZMotorStep = 10; // else // Bi_QD_ZMotorStep = 20; } } bRunning = 0; Bi_QD_XiaQieStep = 0; Bi_QD_AutoStep = 0; Bi_QD_MotorStep = 0; Bi_QD_TuiLianStep = 0; // Bi_QD_ZMotorStep = 0; } if(bAlarmStop) { bAlarmStop = 0; Bi_QD_XiaQieStep = 0; Bi_QD_AutoStep = 0; Bi_QD_MotorStep = 0; Bi_QD_StopStep=0; Bi_QD_TuiLianStep = 0; Bi_QD_NQDJGNUNMBER = 0; Bi_QD_XiaQieStep = 0; Bi_QD_MotorStep = 0; Bi_QD_SecondXiaQueStep=0; Bi_QD_AutoDelay = dwTickCount; Bi_QD_MotorDelay = dwTickCount; Bi_QD_XiaQieDelay = dwTickCount; Bi_QD_KaDaiDelay = dwTickCount; Bi_QD_CSDelay = dwTickCount; Bi_QD_TBDelay = dwTickCount; Bi_QD_TFKDelay = dwTickCount; Bi_QD_TLDelay = dwTickCount; SingOneFlg = 0; bRunning = 0; Bi_QD_StopStep=1; // AxisEgmStop(X_AXIS); // AxisEgmStop(X_AXIS); dwTickCount = Bi_QD_TBDelay; Bi_QD_TABLE_VAVLE = 0; Bi_QD_JD_VAVLE=0; Bi_QD_GZ_VAVLE=0; } #endif } //记忆长度模式误差检测 void Bi_QueDuan_CheckLength(void) { #if 1 static long start_dist; switch(Bi_QD_CheckLengthStep) { case 0:break; case 1: start_dist = dwXRealPos; Bi_QD_dwWorkLength = 0; Bi_QD_CheckLengthStep = 2; break; case 2: if(Bi_QD_GUO_LIAN_IN_DW) { Bi_QD_dwWorkLength = dwXRealPos - start_dist; } break; } #endif } void Bi_QueDuan_BingLian(void) { #if 1 static long bl_pos_buff; switch(Bi_QD_BinLianStep) { case 0:break; case 1: bl_pos_buff = dwXRealPos; Bi_QD_BinLianStep = 2; break; case 2: if((dwXRealPos - bl_pos_buff) >= Bi_QD_PARAM_DELAY_HL_LENGTH) { Bi_QD_BL_VAVLE = 1; Bi_QD_BinLianStep = 3; } break; case 3://有过链检测 if(Bi_QD_GUO_LIAN_IN_DW || ((dwXRealPos - bl_pos_buff) >= (Bi_QD_PARAM_ZIPPER_LENGTH - Bi_QD_PARAM_HL_DELAY_BACK))) { Bi_QD_BL_VAVLE = 0; Bi_QD_BinLianStep = 0; } break; case 10: bl_pos_buff = dwXRealPos; Bi_QD_BinLianStep = 11; break; case 11: if((dwXRealPos - bl_pos_buff) >= Bi_QD_PARAM_DELAY_HL_LENGTH) { Bi_QD_BL_VAVLE = 1; Bi_QD_BinLianStep = 12; } break; case 12://有过链检测 if(Bi_QD_GUO_LIAN_IN_DW) { Bi_QD_BL_VAVLE = 0; Bi_QD_BinLianStep = 0; } break; //这是长链模式的合链 case 20: bl_pos_buff = dwXRealPos; Bi_QD_BinLianStep = 21; break; case 21: if((dwXRealPos - bl_pos_buff) >= Bi_QD_PARAM_DELAY_HL_LENGTH) { Bi_QD_BL_VAVLE = 1; Bi_QD_BinLianStep = 22; } break; case 22://有过链检测 if((Bi_QD_GUO_LIAN_IN_DW && ((dwYRealPos + Bi_QD_PARAM_CL_JZ_TD_LENGTH) >= (Bi_QD_PARAM_ZIPPER_LENGTH - 1200))) || ((dwYRealPos + Bi_QD_PARAM_CL_JZ_TD_LENGTH + 300) >= (Bi_QD_PARAM_ZIPPER_LENGTH - Bi_QD_PARAM_HL_DELAY_BACK))) { Bi_QD_BL_VAVLE = 0; Bi_QD_BinLianStep = 0; } break; default: break; } #endif } //电机动作 //作闭口专用程序,也有四种模式 //不带过链感应长度输入电机长度 闭口有勾针到位 ,夹子电机 void Bi_QueDuan_Motor(void) { #if 1 static long Bi_QD_jz_buff; unsigned short ch,kk; user_datas[121] = dwXRealPos; user_datas[122] = dwYRealPos; user_datas[123] = dwZRealPos; user_datas[124] = Bi_QD_ZMotorStep; user_datas[125] = Bi_QD_TuiLianStep;//Bi_QD_ReBack_Step;//Bi_QD_YMotorStep; user_datas[126] = Bi_QD_XiaQieStep; user_datas[127] = Bi_QD_AutoStep;//Bi_QD_gou_zhen_buff; user_datas[128] = Bi_QD_SecondXiaQueStep;//; switch(Bi_QD_MotorStep) { case 30: switch(Bi_QD_PARAM_BACK_MODE) //开口分四种模式 { case 0: //单数控模式 Bi_QD_MotorStep = 310; //每种模式留20步 Bi_QD_DGLG_VAVLE = 1; //顶过链杆关 break; case 1://单感应模式 Bi_QD_MotorStep = 330; //每种模式留20步 break; case 2: //先感应后数控模式+检测 Bi_QD_MotorStep = 350; //每种模式留20步 break; default: //数控模式+过链检测长度 Bi_QD_MotorStep = 370; //每种模式留20步 break; } SetPos(X_AXIS, 0); //开始拖带处为0点 Bi_QD_MotorDelay = dwTickCount + 0; Bi_QD_YD_VAVLE = 0; //已经定位原点后好,定位到第一刀 if((Bi_QD_PARAM_ECTMACHINE_MODE) && Bi_QD_ORIGIN_Over) { Bi_QD_ZMotorStep = 10; //移动到第一次切位置 } break; //310步到315步为数控模式 case 310: Bi_QD_MotorStep = 311; if(Bi_QD_PARAM_BL_ENABLE) Bi_QD_BinLianStep = 1; //并链起动 break; case 311: if(dwTickCount >= Bi_QD_MotorDelay) { Bi_QD_length_buffer = (short *)(&Bi_QD_PARAM_OFFSET_LENGTH); if(Bi_QD_PARAM_ECQ_MODE) Bi_QD_ECT_VAVLE=0; //自动匹配减速时间 Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ Bi_QD_PARAM_BACK_SPEED/500; //两段速度移动距离 AxisMovePosAccDecNotStop(X_AXIS,Bi_QD_PARAM_BACK_SPEED,Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer), Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_BACK_LOW_SPEED,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL,Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH); Bi_QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; Bi_QD_MotorStep = 312; } break; case 312: //电机走动后再退送链,减少起动拉链的阻力 if(dwXRealPos >= 50) { Bi_QD_TL_VAVLE = 0; Bi_QD_SD_VAVLE = 0; } //提前压带 if(dwXRealPos >((Bi_QD_PARAM_ZIPPER_LENGTH+ (*Bi_QD_length_buffer))-Bi_QD_PARAM_YDCNC_LENGTH)) { Bi_QD_YD_VAVLE=1; } if(dwXRealPos >= (Bi_QD_PARAM_ZIPPER_LENGTH+(*Bi_QD_length_buffer) - Bi_QD_PARAM_SY_LENGTH)) { if(Bi_QD_LTGY_IN_UP) Bi_QD_SetAlarmCode(Bi_QD_LTWZYC_ALARM); } //勾针提前输出 if(!Bi_QD_GZ_VAVLE && ((dwXRealPos + Bi_QD_PARAM_GOUZHEN_LENGTH) >= (Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer)))) { Bi_QD_GZ_VAVLE = 1; if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } if((dwXRealPos) >= (Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer) - Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH)) //- (*Bi_QD_length_buffer) - (Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(Bi_QD_PARAM_BACK_SPEED,Bi_QD_PARAM_BACK_LOW_SPEED,Bi_QD_PARAM_DCC))))) { Bi_QD_MotorDelay = dwTickCount + 1500; //钩针未到位延时警告 Bi_QD_MotorStep = 313; } break; case 313: //数控提前压带 if((dwXRealPos + Bi_QD_PARAM_YDCNC_LENGTH) >= ((Bi_QD_PARAM_ZIPPER_LENGTH+ (*Bi_QD_length_buffer)))) { Bi_QD_YD_VAVLE=1; } if((dwXRealPos + Bi_QD_PARAM_SY_LENGTH) >= (Bi_QD_PARAM_ZIPPER_LENGTH+(*Bi_QD_length_buffer))) { if(Bi_QD_LTGY_IN_UP) Bi_QD_SetAlarmCode(Bi_QD_LTWZYC_ALARM); } //勾针提前输出 if(!Bi_QD_GZ_VAVLE && ((dwXRealPos + Bi_QD_PARAM_GOUZHEN_LENGTH) >= (Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer)))) { Bi_QD_GZ_VAVLE = 1; if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } if(Bi_QD_GOUZHEN_IN) { AxisEgmStop(X_AXIS); Bi_QD_MotorDelay = dwTickCount + 0; Bi_QD_YD_VAVLE = 1; Bi_QD_SD_VAVLE = 1; Bi_QD_MotorStep = 314; Bi_QD_BL_VAVLE = 0; //停止时并链一定要打开 if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } else if((dwXRealPos >= (Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer) + Bi_QD_PARAM_ERROR_LENGTH)) && Bi_QD_PARAM_ERROR_LENGTH) { AxisEgmStop(X_AXIS); if(dwTickCount >= Bi_QD_MotorDelay) Bi_QD_SetAlarmCode(Bi_QD_GZ_ALARM); } break; case 314: if((dwTickCount >= Bi_QD_MotorDelay)) { Bi_QD_MotorDelay = dwTickCount + VAVLE_ALARM_TIME; Bi_QD_YD_VAVLE = 1;//压带 Bi_QD_SD_VAVLE=1; Bi_QD_MotorStep = 315; } break; case 315: if(Bi_QD_cZipCnt == 0) //第一条把误差到正负9MM { ch = Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer)-90; kk = Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer)+90; } else { if(Bi_QD_PARAM_BACK_MODE == 2) //先感应后数控模式+检测 { ch = Bi_QD_gou_zhen_buff - Bi_QD_PARAM_SKCDWC_LENGTH; kk = Bi_QD_gou_zhen_buff + Bi_QD_PARAM_SKCDWC_LENGTH; } else//纯数控模式 { ch = Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer)-Bi_QD_PARAM_SKCDWC_LENGTH; kk = Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer)+Bi_QD_PARAM_SKCDWC_LENGTH; } } if(Bi_QD_PARAM_BACK_MODE == 2) //先感应后数控模式+检测 只能检测过链的位置 { if(((Bi_QD_dwWorkLength) < (ch))) //拉链变短 { SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_LENGTH_SHORT_ALARM); if(dwTickCount >= Bi_QD_MotorDelay) bAlarmStop = 1; } else if((Bi_QD_dwWorkLength > kk))//拉链变长//(Bi_QD_PARAM_ERROR_LENGTH - 200 + (*Bi_QD_length_buffer)+50))) { SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_LENGTH_LONG_ALARM); if(dwTickCount >= Bi_QD_MotorDelay) bAlarmStop = 1; } else { Bi_QD_MotorStep = 0;// //延时反转步 } } else { if(((dwXRealPos) < (ch))) //拉链变短 { SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_LENGTH_SHORT_ALARM); if(dwTickCount >= Bi_QD_MotorDelay) bAlarmStop = 1; } else if((dwXRealPos > kk))//拉链变长//(Bi_QD_PARAM_ERROR_LENGTH - 200 + (*Bi_QD_length_buffer)+50))) { SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_LENGTH_LONG_ALARM); if(dwTickCount >= Bi_QD_MotorDelay) bAlarmStop = 1; } else { Bi_QD_MotorStep = 0; //延时反转步 } } break; //330步到349步单感应模式 case 330: Bi_QD_MotorStep = 331; break; case 331: if(dwTickCount >= Bi_QD_MotorDelay) { Bi_QD_length_buffer =(short *)( &Bi_QD_PARAM_OFFSET_LENGTH); if(Bi_QD_PARAM_ECQ_MODE) Bi_QD_ECT_VAVLE=0; Bi_QD_MotorStep = 332; if(Bi_QD_cZipCnt < 2) { if(Bi_QD_PARAM_BL_ENABLE) Bi_QD_BinLianStep = 10; //并链起动 //第一条都是过链感应,后拉速度减半//原来Bi_QD_PARAM_CHECK_BACK_HSPEED/2 // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_FIRST_BACK_SPEED,Bi_QD_DIR_P,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_LSPEED,15,20); // 轴 第一段速度 第一段长度 第二段速度 第二段长度 方向 // AxisMoveTwoPos(X_AXIS,Bi_QD_PARAM_BACK_SPEED,Bi_QD_PARAM_ZIPPER_LENGTH + (*Bi_QD_length_buffer)-Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH,Bi_QD_PARAM_BACK_LOW_SPEED,Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH,Bi_QD_DIR_P); } else { Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ Bi_QD_PARAM_CHECK_BACK_HSPEED/500; if(Bi_QD_PARAM_BL_ENABLE) Bi_QD_BinLianStep = 1; //并链起动 //因为每条都是过链感应,所以直接运行检测模式后拉速度 // X轴 运行速度 启动速度 加速度 减速度 // AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_BACK_SPEED,Bi_QD_DIR_P,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_LSPEED,Bi_QD_PARAM_ACC,80); AxisMovePosAccDecNotStop(X_AXIS,Bi_QD_PARAM_CHECK_BACK_HSPEED,Bi_QD_PARAM_ZIPPER_LENGTH , Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_LSPEED*9/5,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL,Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH + 500); } } break; case 332: //电机走动后再退送链,减少起动拉链的阻力 if(dwXRealPos >= 50) { Bi_QD_TL_VAVLE = 0; Bi_QD_MotorStep = 333; //到检测定位 } break; case 333: if(Bi_QD_cZipCnt > 1) //第三条开始数控降速 { if(dwXRealPos >= Bi_QD_PARAM_ZIPPER_LENGTH+(*Bi_QD_length_buffer)-Bi_QD_PARAM_SY_LENGTH) { if(Bi_QD_LTGY_IN_UP) Bi_QD_SetAlarmCode(Bi_QD_LTWZYC_ALARM); } if(Bi_QD_GUO_LIAN_IN) //重新到空位上 { Bi_QD_MotorStep = 334; //到检测定位 if(!Bi_QD_PARAM_LTJC_MODE) //有拉头模式 Bi_QD_MotorDelay = dwTickCount + Bi_QD_PARAM_FD_TIME;//Bi_QD_PARAM_DELAY_XM; 防抖时间 else//无拉头模式 Bi_QD_MotorDelay = dwTickCount + 3;//Bi_QD_PARAM_DELAY_XM; } } else //第一条工作 { Bi_QD_GZ_VAVLE = 0; if(Bi_QD_GUO_LIAN_IN_UP) { //第一条,速度比较慢防抖动时间可以不要 Bi_QD_MotorDelay = dwTickCount + 2;//Bi_QD_PARAM_DELAY_XM; Bi_QD_MotorStep = 334; } } break; case 334: //此步为前两条运行 if(Bi_QD_cZipCnt>1) { if(dwXRealPos >= Bi_QD_PARAM_ZIPPER_LENGTH+(*Bi_QD_length_buffer)-Bi_QD_PARAM_SY_LENGTH) { if(Bi_QD_LTGY_IN_UP) Bi_QD_SetAlarmCode(Bi_QD_LTWZYC_ALARM); } } if(Bi_QD_GUO_LIAN_IN_DW) { Bi_QD_gou_zhen_buff = dwXRealPos; } if(dwTickCount >= Bi_QD_MotorDelay) { if(Bi_QD_GUO_LIAN_IN) //还在空位上 { if(Bi_QD_cZipCnt < 2) //前面两条速度不高,可以立即降速 { AxisChangeSpeedDirect(X_AXIS,Bi_QD_PARAM_CHECK_BACK_LSPEED * 6/5); } else//变速 { if(!Bi_QD_PARAM_LTJC_MODE) //有拉头模式 { Bi_QD_DCC_TIME_BL = 10+GetCurSpeed(X_AXIS)/500; AxisContinueMoveChangeSpeed(X_AXIS,Bi_QD_PARAM_CHECK_BACK_LSPEED * 6/5,Bi_QD_PARAM_CHECK_BACK_LSPEED * 6/5,25,Bi_QD_DCC_TIME_BL); } else { AxisChangeSpeedDirect(X_AXIS,Bi_QD_PARAM_CHECK_BACK_LSPEED * 6/5); } } Bi_QD_MotorStep = 335; } } else { if(!Bi_QD_GUO_LIAN_IN) { Bi_QD_MotorStep = 333; } } break; case 335: if(Bi_QD_GUO_LIAN_IN_DW) //下降沿,定位长度 { Bi_QD_gou_zhen_buff = dwXRealPos; Bi_QD_MotorStep = 336; Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ GetCurSpeed(X_AXIS)/500; AxisMovePosAccDecNotStop(X_AXIS,GetCurSpeed(X_AXIS),350 + Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH, GetCurSpeed(X_AXIS),Bi_QD_PARAM_BACK_LOW_SPEED,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL,Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH); } if(Bi_QD_cZipCnt > 1) //第三条开始要长度误差 { if(dwXRealPos >= (Bi_QD_length_buff + Bi_QD_PARAM_ERROR_LENGTH)) { Bi_QD_SetAlarmCode(Bi_QD_LENGTH_LONG_ALARM); } if(dwXRealPos >= Bi_QD_PARAM_ZIPPER_LENGTH+(*Bi_QD_length_buffer)-Bi_QD_PARAM_SY_LENGTH) { if(Bi_QD_LTGY_IN_UP) Bi_QD_SetAlarmCode(Bi_QD_LTWZYC_ALARM); } } break; case 336: if(Bi_QD_cZipCnt>1) { if(dwXRealPos >= Bi_QD_PARAM_ZIPPER_LENGTH+(*Bi_QD_length_buffer)-Bi_QD_PARAM_SY_LENGTH) { if(Bi_QD_LTGY_IN_UP) Bi_QD_SetAlarmCode(Bi_QD_LTWZYC_ALARM); } } if(Bi_QD_GUO_LIAN_IN_DW) { Bi_QD_gou_zhen_buff = dwXRealPos; } //在空们都把延时清零 if(Bi_QD_GUO_LIAN_IN) { //在定位过程中又到空位,重新检测定位 Bi_QD_gou_zhen_buff = dwXRealPos; Bi_QD_GZ_VAVLE = 0; if(!Bi_QD_PARAM_XM_ENABLE) Bi_QD_XM_VAVLE=0; Bi_QD_KAI_XM_VAVLE = 0; Bi_QD_BI_XM_VAVLE = 0; AxisContinueMoveChangeSpeed(X_AXIS,(Bi_QD_PARAM_CHECK_BACK_LSPEED* 6/5),1000,15,15); Bi_QD_MotorStep = 335; break; } if((dwXRealPos >= (Bi_QD_gou_zhen_buff +Bi_QD_PARAM_GZ_DELAY)) && !Bi_QD_GUO_LIAN_IN) { Bi_QD_GZ_VAVLE = 1; if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } //定位停止 if(Bi_QD_GOUZHEN_IN) { AxisEgmStop(X_AXIS); Bi_QD_MotorDelay = dwTickCount + VAVLE_ALARM_TIME; Bi_QD_MotorStep = 337; Bi_QD_GZ_VAVLE = 1; Bi_QD_SD_VAVLE=1; Bi_QD_YD_VAVLE = 1; Bi_QD_BL_VAVLE = 0; //停止时并链一定要打开 if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } else { if(Bi_QD_cZipCnt > 1) //2 条后才有长度误差 { if(dwXRealPos >= (Bi_QD_PARAM_ZIPPER_LENGTH + Bi_QD_PARAM_ERROR_LENGTH)) { AxisEgmStop(X_AXIS); if(dwTickCount >= Bi_QD_MotorDelay) Bi_QD_SetAlarmCode(Bi_QD_GZ_ALARM); } } } break; case 337: if(Bi_QD_cZipCnt > 1) //长度检测 { ch = Bi_QD_PARAM_ZIPPER_LENGTH; user_datas[127] = ch; if(((dwXRealPos + Bi_QD_PARAM_ERROR_LENGTH) < (ch)) && Bi_QD_PARAM_ERROR_LENGTH) { Bi_QD_NQDJGNUNMBER =1; if(dwTickCount >= Bi_QD_MotorDelay) bAlarmStop = 1; } else if((dwXRealPos > (ch + Bi_QD_PARAM_ERROR_LENGTH)) && Bi_QD_PARAM_ERROR_LENGTH)//(Bi_QD_PARAM_ERROR_LENGTH - 200 + (*Bi_QD_length_buffer)+50))) { Bi_QD_NQDJGNUNMBER = 2; if(dwTickCount >= Bi_QD_MotorDelay) bAlarmStop = 1; } else { Bi_QD_MotorStep = 338; } } else { if(Bi_QD_cZipCnt == 1) { Bi_QD_length_buff = dwXRealPos; SetData32bits(Bi_QD_PARAM_ZIPPER_LENGTH_ADDR,Bi_QD_length_buff); //测量记录长度 } Bi_QD_MotorStep = 338; } break; case 338: Bi_QD_MotorStep = 0; break; //350步到369步先感应后数控 case 350: Bi_QD_MotorStep = 351; break; case 351: if(dwTickCount >= Bi_QD_MotorDelay) { if(Bi_QD_PARAM_ECQ_MODE) Bi_QD_ECT_VAVLE=0; Bi_QD_MotorStep = 352; Bi_QD_CheckLengthStep = 0; //第一,二条都是过链感应,测量长度 if(Bi_QD_cZipCnt < 2) { if(Bi_QD_PARAM_BL_ENABLE) //因为长度未知,只能通过过链退合链 Bi_QD_BinLianStep = 10; //并链起动 Bi_QD_DGLG_VAVLE = 0; //顶过链杆关 // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_FIRST_BACK_SPEED,Bi_QD_DIR_P,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_LSPEED,15,20); } else //先感应后数控+检测 { if(Bi_QD_PARAM_BL_ENABLE) Bi_QD_BinLianStep = 1; //并链起动 // Bi_QD_DGLG_VAVLE = 1; //顶过链杆关 Bi_QD_CheckLengthStep = 1; //长度检测,第3条才有对比 //走数控方式,因第二条中已经测量出来拉链长度,可以直接按长度数控方式走 Bi_QD_MotorStep = 311; } } break; case 352: //电机走动后再退送链,减少起动拉链的阻力 //电机走动后再退送链,减少起动拉链的阻力 if(dwXRealPos >= 50) { Bi_QD_TL_VAVLE = 0; Bi_QD_SD_VAVLE = 0; Bi_QD_MotorStep = 353; //到检测定位 } break; case 353: if(Bi_QD_GUO_LIAN_IN_DW) //重新到链上 { AxisChangeSpeedDirect(X_AXIS,Bi_QD_PARAM_BACK_LOW_SPEED); Bi_QD_gou_zhen_buff = dwXRealPos; Bi_QD_MotorStep = 355; //到检测定位 } //前两条都按最低速度工作 if(Bi_QD_GUO_LIAN_IN_UP) //空位上 { Bi_QD_MotorDelay = dwTickCount + 3;//Bi_QD_PARAM_DELAY_XM; Bi_QD_MotorStep = 354; } break; case 354: if(Bi_QD_GUO_LIAN_IN_DW) { Bi_QD_gou_zhen_buff = dwXRealPos; } if(dwTickCount >= Bi_QD_MotorDelay) { if(Bi_QD_GUO_LIAN_IN) { AxisChangeSpeedDirect(X_AXIS,Bi_QD_PARAM_CHECK_BACK_LSPEED * 6/5); Bi_QD_MotorStep = 355; } } else { if(!Bi_QD_GUO_LIAN_IN) { Bi_QD_MotorStep = 353; } } break; case 355: if(Bi_QD_GUO_LIAN_IN_DW) //下降沿,定位长度 { Bi_QD_gou_zhen_buff = dwXRealPos; Bi_QD_MotorStep = 356; } break; case 356: if(Bi_QD_GUO_LIAN_IN_DW) //下降沿,定位长度 { Bi_QD_gou_zhen_buff = dwXRealPos; } //在空们都把延时清零 if(Bi_QD_GUO_LIAN_IN) { //在定位过程中又到空位,重新检测定位 Bi_QD_gou_zhen_buff = dwXRealPos; Bi_QD_GZ_VAVLE = 0; if(!Bi_QD_PARAM_XM_ENABLE) Bi_QD_XM_VAVLE=0; Bi_QD_KAI_XM_VAVLE = 0; Bi_QD_BI_XM_VAVLE = 0; AxisContinueMoveChangeSpeed(X_AXIS,(Bi_QD_PARAM_CHECK_BACK_LSPEED* 6/5),1000,15,15); Bi_QD_MotorStep = 355; break; } if((dwXRealPos >= (Bi_QD_gou_zhen_buff +Bi_QD_PARAM_GZ_DELAY)) && !Bi_QD_GUO_LIAN_IN) { Bi_QD_GZ_VAVLE = 1; if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } //定位停止 if(Bi_QD_GOUZHEN_IN) { AxisEgmStop(X_AXIS); Bi_QD_MotorDelay = dwTickCount + VAVLE_ALARM_TIME; Bi_QD_MotorStep = 357; Bi_QD_GZ_VAVLE = 1; Bi_QD_SD_VAVLE=1; if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } break; case 357: if(Bi_QD_cZipCnt == 1) { Bi_QD_length_buff = dwXRealPos; SetData32bits(Bi_QD_PARAM_ZIPPER_LENGTH_ADDR,Bi_QD_length_buff); //测量记录长度 } Bi_QD_MotorStep = 358; break; case 358: Bi_QD_MotorStep = 0; //延时反转步 break; //370步到389步为先感应后数控 无检测 case 370: Bi_QD_MotorStep = 371; break; case 371: if(dwTickCount >= Bi_QD_MotorDelay) { if(Bi_QD_PARAM_ECQ_MODE) Bi_QD_ECT_VAVLE=0; Bi_QD_MotorStep = 372; //第一,二条都是过链感应,测量长度 if(Bi_QD_cZipCnt < 2) { if(Bi_QD_PARAM_BL_ENABLE) //因为长度未知,只能通过过链退合链 Bi_QD_BinLianStep = 10; //并链起动 Bi_QD_DGLG_VAVLE = 0; //顶过链杆关 // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_FIRST_BACK_SPEED,Bi_QD_DIR_P,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_BACK_LOW_SPEED,15,12); } else { if(Bi_QD_PARAM_BL_ENABLE) Bi_QD_BinLianStep = 1; //并链起动 Bi_QD_DGLG_VAVLE = 1; //顶过链杆关 // Bi_QD_CheckLengthStep = 1; //长度检测,第3条才有对比 //走数控方式,因第二条中已经测量出来拉链长度,可以直接按长度数控方式走 Bi_QD_MotorStep = 311; } } break; case 372: //电机走动后再退送链,减少起动拉链的阻力 //电机走动后再退送链,减少起动拉链的阻力 if(dwXRealPos >= 50) { Bi_QD_TL_VAVLE = 0; Bi_QD_TFK_VAVLE = 0; Bi_QD_SD_VAVLE = 0; Bi_QD_MotorStep = 373; //到检测定位 } break; case 373: if(Bi_QD_GUO_LIAN_IN_DW) //重新到链上 { AxisChangeSpeedDirect(X_AXIS,Bi_QD_PARAM_BACK_LOW_SPEED); Bi_QD_gou_zhen_buff = dwXRealPos; Bi_QD_MotorStep = 376; //到检测定位 } //前两条都按最低速度工作 if(Bi_QD_GUO_LIAN_IN_UP) //空位上 { // if(!Bi_QD_PARAM_LTJC_MODE) // Bi_QD_MotorDelay = dwTickCount + Bi_QD_PARAM_FD_TIME;//Bi_QD_PARAM_DELAY_XM; // else Bi_QD_MotorDelay = dwTickCount + 3;//Bi_QD_PARAM_DELAY_XM; Bi_QD_MotorStep = 374; } break; case 374: if(Bi_QD_GUO_LIAN_IN_DW) { Bi_QD_gou_zhen_buff = dwXRealPos; } if(dwTickCount >= Bi_QD_MotorDelay) { if(Bi_QD_GUO_LIAN_IN) { AxisChangeSpeedDirect(X_AXIS,Bi_QD_PARAM_CHECK_BACK_LSPEED * 6/5); Bi_QD_MotorStep = 375; } } else { if(!Bi_QD_GUO_LIAN_IN) { Bi_QD_MotorStep = 373; } } break; case 375: if(Bi_QD_GUO_LIAN_IN_DW) //下降沿,定位长度 { Bi_QD_gou_zhen_buff = dwXRealPos; Bi_QD_MotorStep = 376; } break; case 376: if(Bi_QD_GUO_LIAN_IN_DW) //下降沿,定位长度 { Bi_QD_gou_zhen_buff = dwXRealPos; } //在空们都把延时清零 if(Bi_QD_GUO_LIAN_IN) { //在定位过程中又到空位,重新检测定位 Bi_QD_gou_zhen_buff = dwXRealPos; Bi_QD_GZ_VAVLE = 0; if(!Bi_QD_PARAM_XM_ENABLE) Bi_QD_XM_VAVLE=0; Bi_QD_KAI_XM_VAVLE = 0; Bi_QD_BI_XM_VAVLE = 0; AxisContinueMoveChangeSpeed(X_AXIS,(Bi_QD_PARAM_CHECK_BACK_LSPEED* 6/5),1000,15,15); Bi_QD_MotorStep = 375; break; } if((dwXRealPos >= (Bi_QD_gou_zhen_buff +Bi_QD_PARAM_GZ_DELAY)) && !Bi_QD_GUO_LIAN_IN) { Bi_QD_GZ_VAVLE = 1; if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } //定位停止 //定位停止 if(Bi_QD_GOUZHEN_IN) { AxisEgmStop(X_AXIS); Bi_QD_MotorDelay = dwTickCount + VAVLE_ALARM_TIME; Bi_QD_MotorStep = 377; Bi_QD_GZ_VAVLE = 1; Bi_QD_SD_VAVLE=1; if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } break; case 377: if(Bi_QD_cZipCnt == 1) { Bi_QD_length_buff = dwXRealPos; SetData32bits(Bi_QD_PARAM_ZIPPER_LENGTH_ADDR,Bi_QD_length_buff); //测量记录长度 } Bi_QD_MotorStep = 378; break; case 378: Bi_QD_MotorStep = 0; //延时反转步 break; //此两步为到位后反转步 case 390: Bi_QD_MotorDelay = dwTickCount + 37; Bi_QD_MotorStep = 391; break; case 391: if(dwTickCount >= Bi_QD_MotorDelay) { AxisMovePosAccDec(X_AXIS,2200,-Bi_QD_PARAM_FZ_LENGTH,2200,2200,5,5,00); Bi_QD_MotorStep = 0; } break; case 40: //切完延时后拉带松夹子 if(Bi_QD_PARAM_SJZ_LENGTH == 0) { Bi_QD_MotorDelay = dwTickCount + Bi_QD_PARAM_TDYS_DELAY; Bi_QD_MotorStep = 43; Bi_QD_JD_VAVLE = 0; } else { Bi_QD_jz_buff = dwXRealPos; Bi_QD_MotorStep = 41; } break; case 41: if((Bi_QD_YMotorStep == 0) && (Bi_QD_ReBack_Step == 0)) //在夹子转换时不能退 Bi_QD_GZ_VAVLE=0; AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_CUT_BACK_SPEED,Bi_QD_PARAM_SJZ_LENGTH + Bi_QD_PARAM_BACK_LENGTH,2000,2000,25,25,40); Bi_QD_MotorStep = 42; break; case 42: if(Bi_QD_PARAM_SJZ_LENGTH <= (dwXRealPos - Bi_QD_jz_buff)) Bi_QD_JD_VAVLE = 0; if(!X_DRV) { Bi_QD_MotorStep = 0; } break; case 43: if(dwTickCount >= Bi_QD_MotorDelay) { if((Bi_QD_YMotorStep == 0) && (Bi_QD_ReBack_Step == 0)) //在夹子转换时不能退 Bi_QD_GZ_VAVLE=0; //延时退勾针有助于切断带丝情况 AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_CUT_BACK_SPEED,Bi_QD_PARAM_BACK_LENGTH,2500,2000,15,15,30); Bi_QD_MotorStep = 44; } break; case 44: // 切断完成后拉电机动作 if(!X_DRV) { Bi_QD_MotorStep = 0; Bi_QD_MotorDelay = dwTickCount; } break; case 61: // 前点定位数控模式 Bi_QD_BL_VAVLE = 0;//并链也要打开 if(dwTickCount >= Bi_QD_MotorDelay) { if(!Bi_QD_TL_VAVLE && Bi_QD_cZipCnt && (Bi_QD_TuiLianStep == 0) && (Bi_QD_XiaQieStep == 0)) //没送链情况下主动送链 { if(!Bi_QD_SHANG_MU_LIMIT_IN) { Bi_QD_TuiLianStep = 1; Bi_QD_MotorStep = 62; } } else Bi_QD_MotorStep = 62; if(Bi_QD_PARAM_LIAN_SELECT) { Bi_QD_CLTD_JT_VAVLE = 0; Bi_QD_CLTD_YL_VAVLE = 0; } Bi_QD_JD_VAVLE = 0; } break; case 62: if((dwTickCount >= Bi_QD_MotorDelay) &&((Bi_QD_PARAM_LIAN_SELECT == 0) || Bi_QD_CLTD_ORIGIN_IN) ) { if(Bi_QD_QIAN_LIMIT_IN) { //前点亮的情况下先后退离开信号后再前进定位 ,10公分 AxisMovePosAccDec(X_AXIS,3000,1000,2000,2000,10,10,30); Bi_QD_MotorDelay = dwTickCount + 300; } Bi_QD_MotorStep = 63; } break; case 63: //说明夹子已经离开原点 if(dwTickCount >= Bi_QD_MotorDelay) { if(!Bi_QD_QIAN_LIMIT_IN)// && !Bi_QD_SHANG_MU_LIMIT_IN) { Bi_QD_YD_VAVLE = 1; //在自动情况下安全门 if(Bi_QD_ANQUANMEN_LIMIT_IN && bRunning) { if(dwTickCount >= Bi_QD_ANQUANMEN_Time) { Bi_QD_StopStep=1; Bi_QD_cSTOPONE=1; } } else { Bi_QD_ANQUANMEN_Time = dwTickCount + 100; } if(Bi_QD_cZipCnt > 0) { if(dwXRealPos > (Bi_QD_PARAM_GO_LOW_SPEED_LENGTH)) { //自动匹配减速时间 Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC + Bi_QD_PARAM_GO_HIGH_SPEED/500; AxisMovePosAccDecNotStop(X_AXIS,Bi_QD_PARAM_GO_HIGH_SPEED,-dwXRealPos, Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL, Bi_QD_PARAM_GO_LOW_SPEED_LENGTH + Bi_QD_PARAM_GO_DW_LENGTH); } else { // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED/3,Bi_QD_PARAM_GO_LOW_SPEED,15,15); // MoveAction_Const_AccDec(X_AXIS, Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED_LENGTH,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_ACC,Bi_QD_PARAM_DCC); } } else { // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED/3,Bi_QD_PARAM_GO_LOW_SPEED,15,15); // MoveAction_Const_AccDec(X_AXIS, Bi_QD_DIR_N,Bi_QD_PARAM_FIRST_GO_HIGHSPEED,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_ACC,Bi_QD_PARAM_DCC);// } Bi_QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; Bi_QD_MotorStep = 64; Bi_QD_ReBack_Step = 0; } else //后走10公分都没有离开前信号的话,说明信号有故障 { Bi_QD_SetAlarmCode(Bi_QD_QIAN_LIMIT_ALARM); } } break; case 64: //在自动情况下安全门 if(Bi_QD_ANQUANMEN_LIMIT_IN && bRunning) { if(dwTickCount >= Bi_QD_ANQUANMEN_Time) { Bi_QD_StopStep=1; Bi_QD_cSTOPONE=1; } } else { Bi_QD_ANQUANMEN_Time = dwTickCount + 100; } if(Bi_QD_cZipCnt > 0) { if(Bi_QD_QIAN_LIMIT_IN) //前点限位 { if(Bi_QD_PARAM_GO_DW_LENGTH) { SetPos(X_AXIS, Bi_QD_PARAM_GO_DW_LENGTH); AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,-Bi_QD_PARAM_GO_DW_LENGTH,1200,1000,5,5,00); } else AxisEgmStop(X_AXIS); Bi_QD_MotorStep = 66; } if(dwXRealPos < -800) //小于8公分前感应异常 Bi_QD_SetAlarmCode(Bi_QD_QIAN_LIMIT_ALARM); } else { if(Bi_QD_QIAN_LIMIT_IN) //前点限位 { if(Bi_QD_PARAM_GO_DW_LENGTH) { SetPos(X_AXIS, Bi_QD_PARAM_GO_DW_LENGTH); AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,-Bi_QD_PARAM_GO_DW_LENGTH,1200,1000,5,5,00); //前点定位 } else AxisEgmStop(X_AXIS); Bi_QD_MotorStep = 66; } //第一次不知道当前位置,只能按轨道长度限位 if(dwXRealPos < -(Bi_QD_PARAM_RUN_LENGTH+800)) Bi_QD_SetAlarmCode(Bi_QD_QIAN_LIMIT_ALARM); } break; case 66: if(!X_DRV || (dwXRealPos <= 0)) { SetPos(X_AXIS, 0); AxisEgmStop(X_AXIS); Bi_QD_MotorDelay = dwTickCount + 5; Bi_QD_MotorStep = 67; } break; case 67: //等推链完成后, if((dwTickCount >= Bi_QD_MotorDelay) && (Bi_QD_TuiLianStep == 0)) { if(bRunning) { if(!Bi_bTiaoShiMode || (Bi_QD_START_IN_UP)) { Bi_QD_JD_VAVLE = 1; //夹带 if(Bi_QD_PARAM_JZGY_MODE) { if(Bi_QD_JDQXW_IN) Bi_QD_MotorDelay = dwTickCount + Bi_QD_PARAM_DELAY_BACK; Bi_QD_MotorStep = 68; } else { Bi_QD_MotorDelay = dwTickCount + Bi_QD_PARAM_DELAY_BACK; Bi_QD_MotorStep = 68; } } } else Bi_QD_MotorStep = 68; } break; case 68: if(dwTickCount >= Bi_QD_MotorDelay) { Bi_QD_YD_VAVLE = 0; Bi_QD_MotorStep = 0; Bi_QD_MotorDelay = dwTickCount; } break; //二次切的返回 case 81: // 前点定位数控模式 Bi_QD_BL_VAVLE = 0;//并链也要打开 if(dwTickCount >= Bi_QD_MotorDelay) { Bi_QD_MotorStep = 82; if(Bi_QD_PARAM_LIAN_SELECT) { Bi_QD_CLTD_JT_VAVLE = 0; Bi_QD_CLTD_YL_VAVLE = 0; } Bi_QD_JD_VAVLE = 0; } break; case 82: if((dwTickCount >= Bi_QD_MotorDelay) &&((Bi_QD_PARAM_LIAN_SELECT == 0) || Bi_QD_CLTD_ORIGIN_IN)) { Bi_QD_MotorStep = 83; } break; case 83: //说明夹子已经离开原点 if(dwTickCount >= Bi_QD_MotorDelay) { if(!Bi_QD_QIAN_LIMIT_IN)// && !Bi_QD_SHANG_MU_LIMIT_IN) { Bi_QD_YD_VAVLE = 1; //在自动情况下安全门 if(Bi_QD_ANQUANMEN_LIMIT_IN && bRunning) { if(dwTickCount >= Bi_QD_ANQUANMEN_Time) { Bi_QD_StopStep=1; Bi_QD_cSTOPONE=1; } } else { Bi_QD_ANQUANMEN_Time = dwTickCount + 100; } if(Bi_QD_cZipCnt > 0) { if(dwXRealPos > (Bi_QD_PARAM_GO_LOW_SPEED_LENGTH)) { //自动匹配减速时间 Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC + Bi_QD_PARAM_GO_HIGH_SPEED/500; AxisMovePosAccDecNotStop(X_AXIS,Bi_QD_PARAM_GO_HIGH_SPEED,-dwXRealPos, Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL, Bi_QD_PARAM_GO_LOW_SPEED_LENGTH + Bi_QD_PARAM_GO_DW_LENGTH); } else { // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED/3,Bi_QD_PARAM_GO_LOW_SPEED,15,15); // MoveAction_Const_AccDec(X_AXIS, Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED_LENGTH,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_ACC,Bi_QD_PARAM_DCC); } } else { // X轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,Bi_QD_DIR_N,Bi_QD_PARAM_GO_LOW_SPEED/3,Bi_QD_PARAM_GO_LOW_SPEED,15,15); // MoveAction_Const_AccDec(X_AXIS, Bi_QD_DIR_N,Bi_QD_PARAM_FIRST_GO_HIGHSPEED,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_ACC,Bi_QD_PARAM_DCC);// } Bi_QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; Bi_QD_MotorStep = 64; Bi_QD_ReBack_Step = 0; } else //后走10公分都没有离开前信号的话,说明信号有故障 { Bi_QD_SetAlarmCode(Bi_QD_QIAN_LIMIT_ALARM); } } break; case 84: //在自动情况下安全门 if(Bi_QD_ANQUANMEN_LIMIT_IN && bRunning) { if(dwTickCount >= Bi_QD_ANQUANMEN_Time) { Bi_QD_StopStep=1; Bi_QD_cSTOPONE=1; } } else { Bi_QD_ANQUANMEN_Time = dwTickCount + 100; } if(Bi_QD_cZipCnt > 0) { if(Bi_QD_QIAN_LIMIT_IN) //前点限位 { if(Bi_QD_PARAM_GO_DW_LENGTH) { SetPos(X_AXIS, Bi_QD_PARAM_GO_DW_LENGTH); AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,-Bi_QD_PARAM_GO_DW_LENGTH,1200,1000,5,5,00); } else AxisEgmStop(X_AXIS); Bi_QD_MotorStep = 66; } if(dwXRealPos < -800) //小于8公分前感应异常 Bi_QD_SetAlarmCode(Bi_QD_QIAN_LIMIT_ALARM); } else { if(Bi_QD_QIAN_LIMIT_IN) //前点限位 { if(Bi_QD_PARAM_GO_DW_LENGTH) { SetPos(X_AXIS, Bi_QD_PARAM_GO_DW_LENGTH); AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_GO_LOW_SPEED,-Bi_QD_PARAM_GO_DW_LENGTH,1200,1000,5,5,00); //前点定位 } else AxisEgmStop(X_AXIS); Bi_QD_MotorStep = 66; } //第一次不知道当前位置,只能按轨道长度限位 if(dwXRealPos < -(Bi_QD_PARAM_RUN_LENGTH+800)) Bi_QD_SetAlarmCode(Bi_QD_QIAN_LIMIT_ALARM); } break; case 86: if(!X_DRV || (dwXRealPos <= 0)) { SetPos(X_AXIS, 0); AxisEgmStop(X_AXIS); Bi_QD_MotorDelay = dwTickCount + 5; Bi_QD_MotorStep = 67; } break; case 87: //等推链完成后, if((dwTickCount >= Bi_QD_MotorDelay) && (Bi_QD_TuiLianStep == 0)) { if(bRunning) { Bi_QD_JD_VAVLE = 1; //夹带 if(Bi_QD_PARAM_JZGY_MODE) { if(Bi_QD_JDQXW_IN) Bi_QD_MotorDelay = dwTickCount + Bi_QD_PARAM_DELAY_BACK; Bi_QD_MotorStep = 68; } else { Bi_QD_MotorDelay = dwTickCount + Bi_QD_PARAM_DELAY_BACK; Bi_QD_MotorStep = 68; } } else Bi_QD_MotorStep = 68; } break; case 88: if(dwTickCount >= Bi_QD_MotorDelay) { Bi_QD_YD_VAVLE = 0; Bi_QD_MotorStep = 0; Bi_QD_MotorDelay = dwTickCount; } break; } #endif } //夹子松带返回长链电机处,只有拉链长度大于一定长度才启用 ,也为切断后拉出拉链用 //辅助Y轴电机动作用 void Bi_QueDuan_ReBack(void) { #if 1 switch(Bi_QD_ReBack_Step) { case 1: if(Bi_QD_PARAM_LIAN_SELECT) { if(dwYRealPos >= 2500) //到20公分位置启动松带 { Bi_QD_ReBack_Step = 2; Bi_QD_MotorStep = 40; //夹子松开 } } else //短链有二次切情况下才先回到原位 { if(dwXRealPos >= 1000) //到20公分位置启动松带 { Bi_QD_ReBack_Step = 2; Bi_QD_MotorStep = 40; //夹子松开 } } break; case 2: if(Bi_QD_MotorStep == 0) { Bi_QD_ReBack_Step = 3; Bi_QD_ReBackDelay = dwTickCount + 40; } break; case 3: if(dwTickCount >= Bi_QD_ReBackDelay) { Bi_QD_ReBack_Step = 4; //自动匹配减速时间 Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ Bi_QD_PARAM_GO_HIGH_SPEED/500 + 10; if(Bi_QD_PARAM_LIAN_SELECT) { //因为是长链模式,夹子走回到压轮前位置 AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_GO_HIGH_SPEED,-(dwXRealPos-Bi_QD_PARAM_JZ_STOP_POS), Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_GO_LOW_SPEED/3,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL, 100); } else { //因为是短链模式,有二次切夹子走回到前点6公分位置 AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_GO_HIGH_SPEED,-(dwXRealPos-600), Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_GO_LOW_SPEED/3,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL, 100); } } break; case 4: if(!X_DRV) { Bi_QD_ReBack_Step = 0; } break; //切断后长链电机拉带出去 case 10: //长链切断后由长链电机 AxisMovePosAccDec(Y_AXIS,Bi_QD_PARAM_BACK_SPEED*2/3,2000, Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_GO_LOW_SPEED/3,30,30, 260); Bi_QD_YPOS_buff = dwYRealPos; Bi_QD_ReBack_Step = 11; break; case 11: if(dwYRealPos >= (Bi_QD_YPOS_buff + 1000)) { Bi_QD_ReBack_Step = 12; Bi_QD_CLTD_YL_VAVLE = 0; if(Bi_QD_JD_VAVLE && (Bi_QD_MotorStep == 0)) //夹子没有张开的话,说明拉链比较短 Bi_QD_MotorStep = 40; //夹子松开 } break; case 12: if((!Y_DRV || Bi_QD_CLTD_YL_ORIGIN_IN)) { Bi_QD_CLTD_JT_VAVLE = 0; //长链电机进退电磁 Bi_QD_ReBack_Step = 2; } break; } #endif } // //Y电机动作 //长链轮子电机 //不带过链感应长度输入电机长度 闭口有勾针到位 ,夹子电机 void Bi_QueDuan_YMotor(void) { #if 1 unsigned short ch,kk; switch(Bi_QD_YMotorStep) { case 30: // switch(Bi_QD_PARAM_BACK_MODE) //开口分四种模式 // { // case 0: //单数控模式 Bi_QD_YMotorStep = 310; //每种模式留20步 SetPos(X_AXIS, 0); //开始拖带处为0点 SetPos(Y_AXIS, 0); //开始拖带处为0点 Bi_QD_YMotorDelay = dwTickCount + 0; Bi_QD_YD_VAVLE = 0; break; //310步到315步为数控模式 case 310: Bi_QD_YMotorStep = 311; if(Bi_QD_PARAM_BL_ENABLE) Bi_QD_BinLianStep = 20; //并链起动 break; case 311: if(dwTickCount >= Bi_QD_YMotorDelay) { Bi_QD_length_buffer = (short*)(&Bi_QD_PARAM_OFFSET_LENGTH); if(Bi_QD_PARAM_ECQ_MODE) Bi_QD_ECT_VAVLE=0; //自动匹配减速时间 Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ Bi_QD_PARAM_BACK_SPEED/500; //因为是长链模式,夹走到转换位置 AxisMovePosAccDec(X_AXIS,Bi_QD_PARAM_BACK_SPEED,Bi_QD_PARAM_CL_JZ_TD_LENGTH, Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_BACK_LOW_SPEED,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL,Bi_QD_PARAM_BACK_LOW_SPEED_LENGTH); Bi_QD_YMotorDelay = dwTickCount + MOTOR_ALARM_TIME; if(!Bi_QD_CLTD_JT_VAVLE) Bi_QD_CLTD_YL_VAVLE = 0; Bi_QD_YMotorStep = 312; } break; case 312: //电机走动后再退送链,减少起动拉链的阻力 if(dwXRealPos >= 50) { Bi_QD_TL_VAVLE = 0; Bi_QD_SD_VAVLE = 0; } //电机到达夹子和压轮错开点 if(dwXRealPos >= Bi_QD_PARAM_JZ_STOP_POS) { Bi_QD_CLTD_JT_VAVLE = 1; } //剩下三公分开始压轮 if(((dwXRealPos + 300) >= Bi_QD_PARAM_CL_JZ_TD_LENGTH) && Bi_QD_CLTD_JT_VAVLE && Bi_QD_CLTD_LIMIT_IN && !Bi_QD_CLTD_YL_VAVLE) { Bi_QD_CLTD_YL_VAVLE = 1; //压轮 Bi_QD_YMotorDelay = dwTickCount + Bi_QD_PARAM_YL_TIME; } // if(!Bi_QD_CLTD_YL_VAVLE || Bi_QD_CLTD_YL_ORIGIN_IN) Bi_QD_YMotorDelay = dwTickCount + Bi_QD_PARAM_YL_TIME; //夹子电机已停止,压轮电机进到位,压轮时间到 if((!X_DRV && Bi_QD_CLTD_LIMIT_IN && !Bi_QD_CLTD_ORIGIN_IN && !Bi_QD_CLTD_YL_ORIGIN_IN && (dwTickCount >= Bi_QD_YMotorDelay) && Bi_QD_CLTD_YL_VAVLE) && (!Bi_bTiaoShiMode || (Bi_QD_START_IN_UP))) { //要 if(Bi_QD_PARAM_ZIPPER_LENGTH >= (Bi_QD_PARAM_CL_JZ_TD_LENGTH+ 3000)) { Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ Bi_QD_PARAM_CHECK_BACK_CL_HSPEED/500; //因为是长链模式,夹走到转换位置// AxisMovePosAccDecNotStop(Y_AXIS,Bi_QD_PARAM_CHECK_BACK_CL_HSPEED,(Bi_QD_PARAM_ZIPPER_LENGTH - Bi_QD_PARAM_CL_JZ_TD_LENGTH - 3000), Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_CL_SPEED,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL,60); } else if(Bi_QD_PARAM_ZIPPER_LENGTH > Bi_QD_PARAM_CL_JZ_TD_LENGTH) { Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ Bi_QD_PARAM_CHECK_BACK_CL_SPEED/500; //因为是长链模式,夹走到转换位置// AxisMovePosAccDecNotStop(Y_AXIS,Bi_QD_PARAM_CHECK_BACK_CL_SPEED,Bi_QD_PARAM_ZIPPER_LENGTH - Bi_QD_PARAM_CL_JZ_TD_LENGTH, Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_CL_SPEED,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL,60); } else { if(Bi_QD_PARAM_LTJC_MODE == 0) //有拉头 { AxisContinueMoveAcc(Y_AXIS,Bi_QD_PARAM_CHECK_BACK_CL_SPEED*8/5,Bi_QD_DIR_P,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_LSPEED,35,30); } else //没有拉头 { //因为是长链模式,夹走到转换位置// AxisContinueMoveAcc(Y_AXIS,Bi_QD_PARAM_CHECK_BACK_CL_SPEED,Bi_QD_DIR_P,Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_LSPEED,25,30); } } Bi_QD_YMotorStep = 313; //拉链长度大于此长度后才提前自动返回 if(Bi_QD_PARAM_ZIPPER_LENGTH > Bi_QD_PARAM_AUTO_REBACK_LENGTH) Bi_QD_ReBack_Step = 1; } break; case 313: if(Bi_QD_PARAM_ZIPPER_LENGTH < (Bi_QD_PARAM_CL_JZ_TD_LENGTH)) { //有拉头,没有拉头情况下拉带速度本来就比较慢 if(Bi_QD_GUO_LIAN_IN_UP && (Bi_QD_PARAM_LTJC_MODE == 0)) { AxisContinueMoveChangeSpeed(Y_AXIS,(Bi_QD_PARAM_CHECK_BACK_CL_SPEED),1000,15,15); } if(Bi_QD_GUO_LIAN_IN_DW) { Bi_QD_gou_zhen_buff = dwYRealPos; Bi_QD_YMotorStep = 314; Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ GetCurSpeed(X_AXIS)/500; AxisMovePosAccDecNotStop(Y_AXIS,GetCurSpeed(Y_AXIS),Bi_QD_PARAM_MOTOR_DINWEI_LENGTH, GetCurSpeed(Y_AXIS),Bi_QD_PARAM_BACK_LOW_SPEED/3,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL,80); } } else { if(Bi_QD_GUO_LIAN_IN_DW && ((dwYRealPos + Bi_QD_PARAM_CL_JZ_TD_LENGTH + 1500) >= Bi_QD_PARAM_ZIPPER_LENGTH )) { Bi_QD_gou_zhen_buff = dwYRealPos; Bi_QD_YMotorStep = 314; Bi_QD_DCC_TIME_BL = Bi_QD_PARAM_DCC+ GetCurSpeed(X_AXIS)/500; AxisMovePosAccDecNotStop(Y_AXIS,GetCurSpeed(Y_AXIS),Bi_QD_PARAM_MOTOR_DINWEI_LENGTH, GetCurSpeed(Y_AXIS),Bi_QD_PARAM_BACK_LOW_SPEED/3,Bi_QD_PARAM_ACC,Bi_QD_DCC_TIME_BL,80); } } break; case 314: // if(!Bi_QD_GZ_VAVLE && ((dwYRealPos) >= (Bi_QD_gou_zhen_buff + Bi_QD_PARAM_GZ_DELAY))) { Bi_QD_GZ_VAVLE = 1; } //实为滤波用,定位到之前又到空位的话重新检测 if(Bi_QD_GUO_LIAN_IN_UP) { Bi_QD_YMotorStep = 313; // Bi_QD_GZ_VAVLE = 0; if(Y_DRV) AxisContinueMoveChangeSpeed(Y_AXIS,Bi_QD_PARAM_CHECK_BACK_CL_SPEED,1000,25,15); else AxisMovePosAccDecNotStop(Y_AXIS,Bi_QD_PARAM_CHECK_BACK_CL_SPEED,3000, Bi_QD_PARAM_START_SPEED,Bi_QD_PARAM_CHECK_BACK_CL_SPEED,Bi_QD_PARAM_ACC,30,60); } //定位停止 else if(Bi_QD_GOUZHEN_IN) { AxisEgmStop(Y_AXIS); Bi_QD_YMotorStep = 0; //长链没法长度 Bi_QD_GZ_VAVLE = 1; Bi_QD_SD_VAVLE=1; if(Bi_QD_cZipCnt < 2) { Bi_QD_length_buff = dwYRealPos + Bi_QD_PARAM_CL_JZ_TD_LENGTH; SetData32bits(Bi_QD_PARAM_ZIPPER_LENGTH_ADDR,Bi_QD_length_buff); //测量记录长度 } if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_ECQ_MODE) //二次切功能 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //一次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //切刀选择闭口刀 { Bi_QD_BI_XM_VAVLE = 1; } } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; } } break; case 315: if(dwTickCount >= Bi_QD_YMotorDelay) { Bi_QD_YMotorStep = 317; } //实为滤波用,定位到之前又到空位的话重新检测 if(Bi_QD_GUO_LIAN_IN_UP) { Bi_QD_YMotorStep = 314; Bi_QD_GZ_VAVLE = 0; AxisContinueMoveChangeSpeed(X_AXIS,Bi_QD_PARAM_CHECK_BACK_CL_SPEED,GetCurSpeed(X_AXIS),25,15); } else if(!Y_DRV) //定位完成 { Bi_QD_YMotorStep = 316; } break; case 316: if(Bi_QD_PARAM_BACK_MODE == 2) //纯数控模式 { ch = Bi_QD_gou_zhen_buff + Bi_QD_PARAM_CL_JZ_TD_LENGTH - Bi_QD_PARAM_SKCDWC_LENGTH; kk = Bi_QD_gou_zhen_buff + Bi_QD_PARAM_CL_JZ_TD_LENGTH+ Bi_QD_PARAM_SKCDWC_LENGTH; } if(Bi_QD_PARAM_BACK_MODE == 2) //先感应后数控模式+检测 只能检测过链的位置 { if(((Bi_QD_dwWorkLength) < (ch))) //拉链变短 { SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_LENGTH_SHORT_ALARM); if(dwTickCount >= Bi_QD_YMotorDelay) bAlarmStop = 1; } else if((Bi_QD_dwWorkLength > kk))//拉链变长//(Bi_QD_PARAM_ERROR_LENGTH - 200 + (*Bi_QD_length_buffer)+50))) { SetAlarmCode(Bi_QD_ALARM_ADDR,Bi_QD_LENGTH_LONG_ALARM); if(dwTickCount >= Bi_QD_YMotorDelay) bAlarmStop = 1; } else { Bi_QD_YMotorStep = 0;//390; //延时反转步 } } break; } #endif } //Z电机动作 //切刀位置电机 //主要是回零,定位刀的位置 //1步开始为回零点 void Bi_QueDuan_ZMotor(void) { #if 1 if(Bi_QD_PARAM_ECTMACHINE_MODE) { switch(Bi_QD_ZMotorStep) { case 1: Bi_QD_ZMotorStep = 4; if(Bi_QD_ECTD_ORIGIN_IN) { AxisContinueMoveAcc(Z_AXIS,6000,Bi_QD_DIR_P,2000,2000,25,15); Bi_QD_ZMotorStep = 2; } else { AxisContinueMoveAcc(Z_AXIS,10000,Bi_QD_DIR_N,2000,2000,25,15); } break; case 2: if(!Bi_QD_ECTD_ORIGIN_IN) { AxisMovePosAccDec(Z_AXIS,3000,30,2000,2000,10,10,30); Bi_QD_ZMotorStep = 3; } else if(dwZRealPos >= 400) // 大于4CM 后都没离开说明信号异常 警告 { Bi_QD_SetAlarmCode(Bi_QD_Z_ORIGIN_IN_ALARM); Bi_QD_ZMotorStep = 0; } break; case 3: if(!Z_DRV) { Bi_QD_ZMotorStep = 7; AxisEgmStop(Z_AXIS); Bi_QD_ZMotorDelay = dwTickCount + 5; } break; case 4: if(Bi_QD_ECTD_ORIGIN_IN) { AxisEgmStop(Z_AXIS); Bi_QD_ZMotorStep = 5; SetPos(Z_AXIS, 0); //开始拖带处为0点 Bi_QD_ZMotorDelay = dwTickCount + 5; } else if(dwZRealPos <= -1300) // 大于4CM 后都没离开说明信号异常 警告 { Bi_QD_SetAlarmCode(Bi_QD_Z_ORIGIN_IN_ALARM); Bi_QD_ZMotorStep = 0; } break; case 5: if(dwTickCount >= Bi_QD_ZMotorDelay) { if(1) { AxisContinueMoveAcc(Z_AXIS,4000,Bi_QD_DIR_P,2000,2000,25,25); Bi_QD_ZMotorStep = 2; } } break; case 7: if(dwTickCount >= Bi_QD_ZMotorDelay) { if(1) { AxisContinueMoveAcc(Z_AXIS,2000,Bi_QD_DIR_N,2000,2000,25,15); Bi_QD_ZMotorStep = 8; } } break; case 8: if(Bi_QD_ECTD_ORIGIN_IN) { Bi_QD_ORIGIN_Over = 1; AxisEgmStop(Z_AXIS); Bi_QD_ZMotorStep = 9; SetPos(Z_AXIS, 0); //开始拖带处为0点 Bi_QD_ZMotorDelay = dwTickCount + 0; } else if(dwZRealPos <= -300) // 大于4CM 后都没离开说明信号异常 警告 { Bi_QD_SetAlarmCode(Bi_QD_Z_ORIGIN_IN_ALARM); Bi_QD_ZMotorStep = 0; AxisEgmStop(Z_AXIS); } break; case 9: if(dwTickCount >= Bi_QD_ZMotorDelay) { // if(Bi_QD_PARAM_ECQ_MODE) //二次切选择的话先移动到第一刀 Bi_QD_ZMotorStep = 10; // else // Bi_QD_ZMotorStep = 20; } break; //到达一次切位置 case 10: Bi_QD_ZMotorDelay = dwTickCount + 20; Bi_QD_ZMotorStep = 11; break; case 11: if(dwTickCount >= Bi_QD_ZMotorDelay) { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { //二次切机型而选择单次切情况下 if(!Bi_QD_PARAM_ECQ_MODE && Bi_QD_PARAM_ECTMACHINE_MODE) { if(Bi_QD_PARAM_DAOKOU_LENGTH < 100) Bi_QD_PARAM_DAOKOU_LENGTH = 100; //预留的位置不能超出一字刀位置 if((Bi_QD_PARAM_YZD_POS + Bi_QD_PARAM_BI_POS) >= Bi_QD_PARAM_DAOKOU_LENGTH) { AxisMovePosAccDec(Z_AXIS,Bi_QD_PARAM_ECQ_MOTOR_SPEED,(Bi_QD_PARAM_YZD_POS + Bi_QD_PARAM_BI_POS - Bi_QD_PARAM_DAOKOU_LENGTH) - dwZRealPos,2000,2000,30,30,10); Bi_QD_ZMotorStep = 12; } else //超出位置警告 { Bi_QD_ZMotorStep = 0; Bi_QD_SetAlarmCode(Bi_QD_Z_POS_OVER_ALARM); } } else { if(Bi_QD_PARAM_LLDK_LENGTH < 100) Bi_QD_PARAM_LLDK_LENGTH = 100; //预留的位置不能超出一字刀位置 if((Bi_QD_PARAM_YZD_POS + Bi_QD_PARAM_FIRST_POS) >= Bi_QD_PARAM_LLDK_LENGTH) { AxisMovePosAccDec(Z_AXIS,Bi_QD_PARAM_ECQ_MOTOR_SPEED,(Bi_QD_PARAM_YZD_POS + Bi_QD_PARAM_FIRST_POS - Bi_QD_PARAM_LLDK_LENGTH) - dwZRealPos,2000,2000,30,30,10); Bi_QD_ZMotorStep = 12; } else //超出位置警告 { Bi_QD_ZMotorStep = 0; Bi_QD_SetAlarmCode(Bi_QD_Z_POS_OVER_ALARM); } } } else { //二次切机型而选择单次切情况下 if(!Bi_QD_PARAM_ECQ_MODE && Bi_QD_PARAM_ECTMACHINE_MODE) { if(Bi_QD_PARAM_DAOKOU_LENGTH < 100) Bi_QD_PARAM_DAOKOU_LENGTH = 100; //预留的位置不能超出一字刀位置 if((Bi_QD_PARAM_HBD_POS + Bi_QD_PARAM_BI_POS) >= Bi_QD_PARAM_DAOKOU_LENGTH) { AxisMovePosAccDec(Z_AXIS,Bi_QD_PARAM_ECQ_MOTOR_SPEED,(Bi_QD_PARAM_HBD_POS + Bi_QD_PARAM_BI_POS - Bi_QD_PARAM_DAOKOU_LENGTH) - dwZRealPos,2000,2000,30,30,10); Bi_QD_ZMotorStep = 12; } else //超出位置警告 { Bi_QD_ZMotorStep = 0; Bi_QD_SetAlarmCode(Bi_QD_Z_POS_OVER_ALARM); } } else { if(Bi_QD_PARAM_LLDK_LENGTH < 100) Bi_QD_PARAM_LLDK_LENGTH = 100; //预留的位置不能超出位置 if((Bi_QD_PARAM_HBD_POS + Bi_QD_PARAM_FIRST_POS) >= Bi_QD_PARAM_LLDK_LENGTH) { AxisMovePosAccDec(Z_AXIS,Bi_QD_PARAM_ECQ_MOTOR_SPEED,((Bi_QD_PARAM_HBD_POS + Bi_QD_PARAM_FIRST_POS) - Bi_QD_PARAM_LLDK_LENGTH) - dwZRealPos,2000,2000,30,35,10); Bi_QD_ZMotorStep = 12; } else //超出位置警告 { Bi_QD_ZMotorStep = 0; Bi_QD_SetAlarmCode(Bi_QD_Z_POS_OVER_ALARM); } } } } break; case 12: if(!Z_DRV) { Bi_QD_ZMotorStep = 0; Bi_QD_CUR_QDSelect = 0; } break; //到达二次切位置 case 20: Bi_QD_ZMotorDelay = dwTickCount + 20; Bi_QD_ZMotorStep = 21; break; case 21: if(dwTickCount >= Bi_QD_ZMotorDelay) { if(Bi_QD_PARAM_LLDK_LENGTH < 100) Bi_QD_PARAM_LLDK_LENGTH = 100; //二次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 AxisMovePosAccDec(Z_AXIS,Bi_QD_PARAM_ECQ_MOTOR_SPEED,(Bi_QD_PARAM_YZD_POS) - Bi_QD_PARAM_SECOND_POS- dwZRealPos,2000,2000,30,35,10); else AxisMovePosAccDec(Z_AXIS,Bi_QD_PARAM_ECQ_MOTOR_SPEED,(Bi_QD_PARAM_HBD_POS) - Bi_QD_PARAM_SECOND_POS - dwZRealPos,2000,2000,30,35,10); Bi_QD_ZMotorStep = 22; Bi_QD_CUR_QDSelect = 1; } break; case 22: if(!Z_DRV) { Bi_QD_ZMotorStep = 0; } break; } } else { Bi_QD_ZMotorStep = 0; Bi_QD_ORIGIN_Over = 1; } #endif } void Bi_QueDuan_TuiLianAction(void) { #if 1 if((Bi_QD_PARAM_XM_ENABLE == 0))// && (Bi_QD_PARAM_ECTMACHINE_MODE == 0)) { Bi_QD_TuiLianStep = 0; } else { switch(Bi_QD_TuiLianStep) { case 1: Bi_QD_TuiLianStep = 2; break; case 2: Bi_QD_TLDelay = dwTickCount + Bi_QD_PARAM_YD_DELAY; Bi_QD_TuiLianStep = 3; //说明已送出去 if(Bi_QD_TL_VAVLE) { Bi_QD_TuiLianStep = 0; } break; case 3: if(dwTickCount >= Bi_QD_TLDelay) { if(!Bi_QD_SM_VAVLE && !Bi_QD_SHANG_MU_LIMIT_IN ) { Bi_QD_TL_VAVLE = 1; // Bi_QD_TFK_VAVLE = 1; //if(!bRunning)Bi_QD_TFK_VAVLE = 1; Bi_QD_TLDelay = dwTickCount + Bi_QD_PARAM_TL_DELAY; Bi_QD_TuiLianStep = 4; } } break; case 4: if(dwTickCount >= Bi_QD_TLDelay) { Bi_QD_TuiLianStep = 0; } break; case 10: Bi_QD_TuiLianStep = 11; break; case 11: if(!Y_DRV) { Bi_QD_TuiLianStep = 0; } break; } } #endif } #if 1 //闭口专用 void Bi_QueDuan_XiaQue(void) { switch(Bi_QD_XiaQieStep) { case 0: break; case 1: if(!bRunning) { if(Bi_QD_CUR_QDSelect) { Bi_QD_XiaQieStep = 3; Bi_QD_YD_VAVLE = 1; } else { Bi_QD_GZ_VAVLE = 1; //勾针 Bi_QD_XiaQieStep = 2; } Bi_QD_XiaQieDelay = dwTickCount + 30; } else { Bi_QD_YD_VAVLE = 1; Bi_QD_XiaQieDelay = dwTickCount + Bi_QD_PARAM_CUT_DELAY; Bi_QD_XiaQieStep = 2; } break; case 2: if((dwTickCount >= Bi_QD_XiaQieDelay ) && Bi_QD_GOUZHEN_IN) { Bi_QD_YD_VAVLE = 1; Bi_QD_XiaQieStep = 3; Bi_QD_XiaQieDelay = dwTickCount; Bi_QD_XiaMoOut = 0; } break; case 3: if(dwTickCount >= Bi_QD_XiaQieDelay) { if(!Bi_bTiaoShiMode || (Bi_QD_START_IN_UP)) { if(Bi_QD_PARAM_ECTMACHINE_MODE != 0) //二次切机器 { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 { if(!Bi_QD_XiaMoOut) //主要是做下模输出到位超时 { Bi_QD_XiaMoOut = 1; Bi_QD_KAI_XM_VAVLE = 0; Bi_QD_BI_XM_VAVLE = 0; if(!Bi_QD_CUR_QDSelect)//在一次切位置 { //一次切刀选择 if(Bi_QD_PARAM_YCQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else //二次切刀 { Bi_QD_BI_XM_VAVLE = 1; } } else { //二次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else { Bi_QD_BI_XM_VAVLE = 1; } } Bi_QD_XM_DW_ErrorTime = dwTickCount + VAVLE_ALARM_TIME; } } if(Bi_QD_XIA_MU_LIMIT_IN || Bi_QD_KK_XM_LIMIT_IN || Bi_QD_PARAM_XM_ENABLE) { Bi_QD_SM_VAVLE = 1; Bi_QD_XiaQieStep = 4; Bi_QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; //开口只有长链才需要反转一点 if(Bi_QD_PARAM_LIAN_SELECT) AxisMovePosAccDec(Y_AXIS,2200,-Bi_QD_PARAM_FZ_LENGTH,2200,2200,5,5,00); } else if(dwTickCount >= Bi_QD_XM_DW_ErrorTime) { Bi_QD_SetAlarmCode(Bi_QD_XM_DAOWEI); } } else { if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=1; Bi_QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; Bi_QD_XiaQieStep = 4; //开口只有长链才需要反转一点 if(Bi_QD_PARAM_LIAN_SELECT) AxisMovePosAccDec(Y_AXIS,2200,-Bi_QD_PARAM_FZ_LENGTH,2200,2200,5,5,00); } } } break; case 4: if(Bi_QD_SHANG_MU_LIMIT_IN && (Bi_QD_XIA_MU_LIMIT_IN || Bi_QD_KK_XM_LIMIT_IN || Bi_QD_PARAM_XM_ENABLE)) { if(!Bi_QD_PARAM_CS_MODE) //气切 { Bi_QD_XiaQieDelay = dwTickCount + Bi_QD_PARAM_DELAYBACK_SM; // Bi_QD_XiaQieStep = 5; } else { Bi_QD_XiaQieDelay = dwTickCount + Bi_QD_PARAM_DELAY_CS; // Bi_QD_XiaQieStep = 10; } // } else if(dwTickCount >= Bi_QD_XiaQieDelay) { if(!Bi_QD_SHANG_MU_LIMIT_IN) Bi_QD_SetAlarmCode(Bi_QD_SM_DAOWEI); else Bi_QD_SetAlarmCode(Bi_QD_XM_DAOWEI); } break; case 5: if(dwTickCount >= Bi_QD_XiaQieDelay) { Bi_QD_GZ_VAVLE = 0; Bi_QD_SM_VAVLE = 0; Bi_QD_XM_VAVLE = 0; // 在二次切位置 if((Bi_QD_PARAM_ECQ_MODE) && (Bi_QD_PARAM_ECTMACHINE_MODE != 0) && !Bi_QD_CUR_QDSelect) { Bi_QD_XiaQieStep = 20; Bi_QD_XiaQieDelay = dwTickCount + Bi_QD_PARAM_YSECT_DELAY; if(bRunning) Bi_QD_ReBack_Step = 1; } else { Bi_QD_XiaQieStep = 6; Bi_QD_KAI_XM_VAVLE = 0; Bi_QD_BI_XM_VAVLE = 0; Bi_QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; // Bi_QD_XiaQueOver = 1; } } break; case 6: if(!Bi_QD_SHANG_MU_LIMIT_IN && ((!Bi_QD_XIA_MU_LIMIT_IN && !Bi_QD_KK_XM_LIMIT_IN))) //下模不动就不用判断 { if(!Bi_QD_PARAM_LDHTGZ_MODE || !bRunning) Bi_QD_GZ_VAVLE = 0; if(Bi_QD_TuiLianStep == 0) Bi_QD_TuiLianStep = 1; if(!bRunning) Bi_QD_JD_VAVLE = 0; Bi_QD_XiaQieStep = 0; } else if(dwTickCount >= Bi_QD_XiaQieDelay) { Bi_QD_SetAlarmCode(Bi_QD_SM_YUANWEI); } break; //10~11步为超声 case 10: if(dwTickCount >= Bi_QD_XiaQieDelay) { Bi_QD_CS_OUT = 1; Bi_QD_XiaQieDelay = dwTickCount + Bi_QD_PARAM_CS_TIME; // Bi_QD_XiaQieStep = 11; } break; case 11: if(dwTickCount >= Bi_QD_XiaQieDelay) { Bi_QD_CS_OUT = 0; Bi_QD_XiaQieDelay = dwTickCount + Bi_QD_PARAM_CS_COLD_TIME; // Bi_QD_XiaQieStep = 5; } break; //二次切动作 case 20: if((!Bi_QD_SHANG_MU_LIMIT_IN) && (!Bi_bTiaoShiMode || (Bi_QD_START_IN_UP))) { Bi_QD_XiaQueOver = 1; //二次切延时送带 Bi_QD_XiaQieDelay = dwTickCount + Bi_QD_PARAM_YSECT_DELAY; Bi_QD_XiaQieStep = 21; Bi_QD_KAI_XM_VAVLE = 0; //开口下刀电磁阀 Bi_QD_BI_XM_VAVLE = 0; //闭口下刀电磁阀 if(!Bi_QD_PARAM_XM_ENABLE) { //二次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else { Bi_QD_BI_XM_VAVLE = 1; } } } break; case 21: if(dwTickCount >= Bi_QD_XiaQieDelay) { Bi_QD_ZMotorStep = 20; //电机移动到二次切位置 Bi_QD_XiaQieStep = 22; Bi_QD_XiaQieDelay = dwTickCount + Bi_QD_PARAM_ECTL_TIME; } break; case 22: if(((Bi_QD_ZMotorStep == 0) && (!Z_DRV) && (!Bi_bTiaoShiMode || (Bi_QD_START_IN_UP)))) { Bi_QD_SecondXiaQueStep = 1; Bi_QD_XiaQieStep = 23; Bi_QD_ErrorDelay = dwTickCount + VAVLE_ALARM_TIME; } break; case 23: if(Bi_QD_SecondXiaQueStep == 0) { Bi_QD_SM_VAVLE = 0; if(Bi_QD_PARAM_XM_ENABLE == 0) //配置下模动 Bi_QD_XM_VAVLE=0; if(Bi_QD_TuiLianStep == 0) Bi_QD_TuiLianStep = 1; Bi_QD_XiaQieDelay = dwTickCount + 2; Bi_QD_XiaQieStep = 24; Bi_QD_CuiQiStep = 1; } break; case 24: if((X_DRV && (dwXRealPos >= 1500)) || Bi_QD_SHANG_MU_ORIGIN) { // if(Bi_QD_TuiLianStep == 0) // Bi_QD_TuiLianStep = 1; Bi_QD_XiaQieDelay = dwTickCount + 2; Bi_QD_XiaQieStep = 0; } break; } switch(Bi_QD_CuiQiStep) { case 1: if((Bi_QD_XIA_MU_LIMIT_IN && Bi_QD_KK_XM_LIMIT_IN) || Bi_QD_PARAM_XM_ENABLE) { Bi_QD_CHUIQIDelay = dwTickCount + 0; Bi_QD_CuiQiStep = 2; Bi_QD_KAI_XM_VAVLE = 0; //开口下刀电磁阀 Bi_QD_BI_XM_VAVLE = 0; //闭口下刀电磁阀 } break; case 2: if((!Bi_QD_XIA_MU_LIMIT_IN && !Bi_QD_KK_XM_LIMIT_IN) || Bi_QD_PARAM_XM_ENABLE) { Bi_QD_CHUIQIDelay = dwTickCount + 0; Bi_QD_CuiQiStep = 3; } break; case 3: if(dwTickCount >= Bi_QD_CHUIQIDelay) { Bi_QD_CuiQiStep = 0; Bi_QD_ECQ_CUIQI_VAVLE = 1; Bi_QD_CHUIQIDelay= dwTickCount+Bi_QD_PARAM_CHUIQI_TIME; } break; } if(Bi_QD_ECQ_CUIQI_VAVLE && (dwTickCount >= Bi_QD_CHUIQIDelay)) { Bi_QD_ECQ_CUIQI_VAVLE= 0; } } #endif //第二刀下切步骤 void Bi_QueDuan_SecondXiaQue(void) { #if 1 if(Bi_QD_PARAM_ECQ_MODE) { switch(Bi_QD_SecondXiaQueStep) { case 0: break; case 1://上下模同时输出 if((dwTickCount >= Bi_QD_SecondXQDelay) && !Bi_QD_TL_VAVLE && (Bi_QD_XIA_MU_LIMIT_IN || Bi_QD_KK_XM_LIMIT_IN || Bi_QD_PARAM_XM_ENABLE)) { Bi_QD_SM_VAVLE = 1; Bi_QD_KAI_XM_VAVLE = 0; Bi_QD_BI_XM_VAVLE = 0; if(Bi_QD_PARAM_XM_ENABLE == 0) { //二次切刀选择 if(Bi_QD_PARAM_ECQ_DJ_SELECT == 0) //切刀选择开口切 { Bi_QD_KAI_XM_VAVLE = 1; } else { Bi_QD_BI_XM_VAVLE = 1; } } Bi_QD_SecondXQDelay = dwTickCount + VAVLE_ALARM_TIME; Bi_QD_SecondXiaQueStep = 2; } else if(dwTickCount >= Bi_QD_ErrorDelay) { Bi_QD_SetAlarmCode(Bi_QD_GZ_ALARM); } break; case 2://上下模到位,调试模下的话,等按下一步按键 下模不动 if(Bi_QD_SHANG_MU_LIMIT_IN && (Bi_QD_PARAM_XM_ENABLE|| Bi_QD_XIA_MU_LIMIT_IN || Bi_QD_KK_XM_LIMIT_IN)) { if(!Bi_QD_PARAM_CS_MODE) //无超声配置 { Bi_QD_SecondXQDelay = dwTickCount + Bi_QD_PARAM_DELAYBACK_SM; Bi_QD_SecondXiaQueStep = 4; } else { Bi_QD_SecondXQDelay = dwTickCount + Bi_QD_PARAM_DELAY_CS; // Bi_QD_SecondXiaQueStep = 3; } } else if(dwTickCount >= Bi_QD_SecondXQDelay) { if(!Bi_QD_SHANG_MU_LIMIT_IN)Bi_QD_SetAlarmCode(Bi_QD_SM_DAOWEI); else Bi_QD_SetAlarmCode(Bi_QD_XM_DAOWEI); } break; case 3: if(dwTickCount >= Bi_QD_SecondXQDelay) { Bi_QD_CS_OUT = 1; Bi_QD_SecondXQDelay = dwTickCount + Bi_QD_PARAM_CS_TIME; // Bi_QD_SecondXiaQueStep = 4; } break; case 4: if(dwTickCount >= Bi_QD_SecondXQDelay) { Bi_QD_CS_OUT = 0; Bi_QD_SM_VAVLE = 0; Bi_QD_CuiQiStep = 1; Bi_QD_SecondXiaQueStep = 5; } break; case 5: // if(Bi_QD_PARAM_XM_ENABLE == 0) // Bi_QD_BI_XM_VAVLE = 0; //闭口下刀电磁阀 if(!Bi_QD_SHANG_MU_LIMIT_IN) { Bi_QD_SecondXiaQueStep = 0; } break; } } #endif } #endif