#include "global.h" #if HAI_HUA_MACHINE void QueDuan_AlarmProtect(void); void QueDuan_ManualAction(void); void QueDuan_AutoAction(void); void QueDuan_StepCheckStart(void); void QueDuan_XiaQue(void); void QueDuan_Motor(void); void QueDuan_YuanDianAction(void); void QueDuan_TuiLianAction(void); void QueDuan_TuiFangKuai(void); void QueDuan_ExtiActionX31(void); void QueDuan_BingLian(void); static unsigned long cZipCnt = 0,cTuiFangKuaiCnt = 0; static long save_limit_pos,cRealPos; static long dwSaveLength; unsigned char cCheckLianFlg = 0; unsigned char cCheckLianFlgEN = 0; unsigned char cGoLimitEn = 0; unsigned char cCheckLengthEn = 0; short *offset_length_buff; unsigned short STOP_IN_FLAG,STOP_IN_FLAG_OLD,STOP_FILTER; long TestDisplay; void QueDuan_ExtiActionX31(void) { cCheckLianFlg = 1; } void QD_SetAlarmCode(unsigned alarm_code) { SetAlarmCode(QD_ALARM_ADDR,alarm_code); bAlarmStop = 1; } void QueDuan_InitAction(void) { float length_buff,pulse_buff; save_limit_pos = QD_SAVE_POS; length_buff = QD_PARAM_CYCLE_LENGTH; pulse_buff = QD_PARAM_CYCLE_PULSE; XGearRatio = pulse_buff/length_buff; axis_x->inputs.dir_reverse = 0; axis_y->speed_unit = 300; SetAccTime(Y_AXIS,10); SetDecTime(Y_AXIS,10); YGearRatio = XGearRatio; QD_SZ_OUT = 1; STOP_IN_FLAG = STOP_IN; STOP_IN_FLAG_OLD = STOP_IN_FLAG; } void QueDuan_Action(void) { QueDuan_AlarmProtect(); QueDuan_TuiFangKuai(); QueDuan_Motor(); QueDuan_XiaQue(); QueDuan_ManualAction(); QueDuan_YuanDianAction(); QueDuan_TuiLianAction(); QueDuan_BingLian(); QueDuan_AutoAction(); QueDuan_StepCheckStart(); // 调用脚踏开关检测程序 } //手动动作 void QueDuan_ManualAction(void) { if(bRunning == 0) { if(QD_bClearTotal) //切断计数清零 { QD_bClearTotal = 0; ClrcToTal(QD_TOTAL_ADDR); } if(QD_bClearNowTotal) { QD_bClearNowTotal = 0; QD_PARAM_NOW_CNT = 0; QD_PARAM_TB_CNT = 0; } if(QD_bXiaQie) { QD_bXiaQie = 0; if(QD_XiaQieStep == 0)QD_XiaQieStep = 1; } if(QD_bQianDianDW) { QD_bQianDianDW = 0; if(QD_MotorStep == 0) { QD_MotorStep = 61; cZipCnt = 0; } } if(QD_bTL) { QD_bTL = 0; QD_TL_VAVLE = ~QD_TL_VAVLE; } if(QD_bYD) { QD_bYD = 0; QD_YD_VAVLE = ~QD_YD_VAVLE; } if(QD_bGZ) { QD_bGZ = 0; QD_GZ_VAVLE = ~QD_GZ_VAVLE; } if(QD_bJD) { QD_bJD = 0; QD_JD_VAVEL = ~QD_JD_VAVEL; } if(QD_bXM) { QD_bXM = 0; QD_XM_VAVLE = ~QD_XM_VAVLE; } if(QD_bXiaMu) { QD_bXiaMu = 0; QD_XIA_MU_VAVLE = ~QD_XIA_MU_VAVLE; } if(QD_bSM) { QD_bSM = 0; QD_SM_VAVLE = ~QD_SM_VAVLE; } if(QD_bTFK) { QD_bTFK = 0; if(QD_TFK_VAVEL) { QD_TFK_VAVEL = 0; QD_TFK_VAVEL_BACK = 1; QD_DWelay = dwTickCount + 100; } else { QD_TFK_VAVEL = 1; QD_TFK_VAVEL_BACK = 0; QD_DWelay = dwTickCount + 100; } } if(QD_bTB) { QD_bTB = 0; QD_TABLE_VAVLE = ~QD_TABLE_VAVLE; } if(QD_bYBD) { QD_bYBD = 0; QD_YBD_VAVLE = ~QD_YBD_VAVLE; } if(QD_bTestCS) { QD_bTestCS = 0; QD_CS_OUT = 1; QD_CSDelay = dwTickCount + QD_PARAM_CS_TIME; } if(QD_bBL) { QD_bBL = 0; QD_BL_VAVLE = ~QD_BL_VAVLE; } if(QD_XiaQieStep == 0) { if(dwTickCount >= QD_CSDelay)QD_CS_OUT = 0; } if(QD_bYuanDianDW) { QD_bYuanDianDW = 0; cZipCnt = 0; if(QD_YuanDianStep == 0)QD_YuanDianStep = 1; } //电机控制 if(QD_bGoMotor && !QD_QIAN_LIMIT_IN) { QD_SZ_OUT = 0; QD_MOTOR_DIR = QD_DIR_N; if(!X_DRV)MoveAction_Const_AccDec(X_AXIS, QD_DIR_N, 10,1,10,10); } if(QD_bBackMotor && !QD_BACK_LIMIT_IN) { QD_SZ_OUT = 0; QD_MOTOR_DIR = QD_DIR_P; if(!X_DRV)MoveAction_Const_AccDec(X_AXIS, QD_DIR_P, 10,1,10,10); } if(!QD_bGoMotor && !QD_bBackMotor && (QD_MotorStep == 0)) { if(X_DRV)AxisDecStop(X_AXIS); } if(QD_QIAN_LIMIT_IN && (QD_MotorStep == 0) && !QD_bBackMotor &&(QD_AutoStep == 0)) { if(X_DRV)AxisEgmStop(X_AXIS); } } if((dwTickCount >= QD_DWelay) && QD_TFK_VAVEL_BACK)QD_TFK_VAVEL_BACK = 0; if(QD_TABLE_VAVLE) { if(!Y_DRV) { AxisContinueMove(Y_AXIS,QD_PARAM_TABLE_SPEED,QD_DIR_P); } } else { if(Y_DRV)AxisDecStop(Y_AXIS); } } void QueDuan_YuanDianAction(void) { switch(QD_YuanDianStep) { case 0:break; case 1: if(QD_MotorStep == 0)QD_MotorStep = 61; QD_YuanDianStep = 2; break; case 2: if(QD_MotorStep == 0) { QD_MotorStep = 30; QD_YuanDianStep = 3; QD_JD_VAVEL = 1; } break; case 3: if(QD_MotorStep == 0) { QD_MotorStep = 0; QD_YuanDianStep = 0; } break; } } void QueDuan_AlarmProtect(void) { cRealPos = GetPos(X_AXIS); if(QD_PARAM_BACK_ALARM_MODE) { //感应后限模式 if(!bRunning) { if(QD_BACK_LIMIT_IN_UP) { if((QD_MotorStep == 0) && X_DRV && QD_bBackMotor) //到后限不能再后退但可以点前进 { QD_bBackMotor = 0; AxisDecStop(X_AXIS); QD_JD_VAVEL = 0; QD_SetAlarmCode(QD_BACK_ALARM); } } } else { if(QD_BACK_LIMIT_IN_UP) { AxisDecStop(X_AXIS); QD_JD_VAVEL = 0; QD_SetAlarmCode(QD_BACK_ALARM); } } } else { if(QD_QIAN_LIMIT_IN_UP) //数控后限模式 { save_limit_pos = cRealPos; SetData32bits(200,save_limit_pos); } if(QD_PARAM_MAX_BACK_LENGTH < (cRealPos - save_limit_pos)) { if(!bRunning) { if((QD_MotorStep == 0) && X_DRV && QD_bBackMotor) //到后限不能再后退但可以点前进 { QD_bBackMotor = 0; AxisDecStop(X_AXIS); QD_JD_VAVEL = 0; QD_SetAlarmCode(QD_BACK_ALARM); } } else { AxisDecStop(X_AXIS); QD_JD_VAVEL = 0; QD_SetAlarmCode(QD_BACK_ALARM); } } } } void QueDuan_AutoAction(void) { if(bRunning) { if((dwTickCount >= QD_TBDelay) && (QD_PARAM_TB_TIME))QD_TABLE_VAVLE = 0; switch(QD_AutoStep) { case 1: if(dwTickCount >= QD_AutoDelay) { QD_AutoStep = 2; if(QD_MotorStep == 0) { QD_MotorStep = 61; //前点定位 } } break; case 2: if(QD_MotorStep == 0) { QD_MotorStep = 30; QD_AutoStep = 3; } break; case 3: if(QD_MotorStep == 0) { if(QD_XiaQieStep == 0) { QD_XiaQieStep = 1; QD_AutoStep = 4; } } break; case 4: if(QD_PARAM_MACHINE_CHOOSE == QD_QQ_TUIFANGKUAI) { if(((QD_XiaQieStep == 0) || (QD_XiaQieStep >= 4)) && !QD_SHANG_MU_LIMIT_IN) { if(QD_MotorStep == 0) { QD_MotorStep = 40; //切完后退 QD_MotorDelay = dwTickCount + QD_PARAM_CUT_BACK_DELAY; } QD_AutoStep = 5; } } else if(QD_PARAM_MACHINE_CHOOSE == QD_NO_GL_TUIFANGKUAI) { if((QD_XiaQieStep == 0) || ((QD_XiaQieStep <= 9) && (QD_XiaQieStep >= 8))) { if(QD_MotorStep == 0) { QD_MotorStep = 40; //切完后退 QD_MotorDelay = dwTickCount + QD_PARAM_CUT_BACK_DELAY; } QD_AutoStep = 5; } } else { if(((QD_XiaQieStep == 0) || ((QD_XiaQieStep <= 13) && (QD_XiaQieStep >= 11)))) { if(QD_MotorStep == 0) { QD_MotorStep = 40; //切完后退 } QD_AutoStep = 5; } } break; case 5: if(QD_MotorStep == 0) { cZipCnt++; QD_PARAM_NOW_CNT++; QD_PARAM_TB_CNT++; AddToTal(QD_TOTAL_ADDR); CalProSP(QD_PROSPEED_ADDR); QD_AutoStep = 1; QD_AutoDelay = dwTickCount + QD_PARAM_CYCLE_DELAY; if(QD_PARAM_TB_CNT >= QD_PARAM_TABLE_NUM) { QD_PARAM_TB_CNT = 0; QD_TABLE_VAVLE = 1; QD_TBDelay = dwTickCount + QD_PARAM_TB_TIME; } if(QD_PARAM_NOW_CNT >= QD_PARAM_ZHA_SHU) { QD_AutoDelay = dwTickCount + QD_PARAM_ZS_STOP_TIME; QD_PARAM_NOW_CNT = 0; } if((GetTotal(QD_TOTAL_ADDR) >= QD_PARAM_SET_TOTAL) || SingOneFlg) { QD_AutoStep = 6; } } break; case 6: if((QD_MotorStep == 0) && (QD_XiaQieStep == 0) && !QD_SM_VAVLE) { bRunning = 0; QD_AutoStep = 0; SingOneFlg = 0; if(GetTotal(QD_TOTAL_ADDR) >= QD_PARAM_SET_TOTAL) QD_SetAlarmCode(QD_TOTAL_ALARM); } break; } } } void QueDuan_StepCheckStart(void) { static unsigned long sz_delay; static unsigned char sz_flg; static unsigned char dec_flg; // 启动 if((START_IN_UP) || bStart || QD_bSingle) { bStart = 0; if(!bRunning && (QD_AutoStep == 0)) { if(!QD_SHANG_MU_ORIGIN_IN)QD_SetAlarmCode(QD_SM_YUANWEI); else if((QD_XM_LIMIT || !QD_XM_ORIGIN) && (USE_GUOLIAN_GANYING == 1))QD_SetAlarmCode(QD_XM_DAOWEI); else if(GetTotal(QD_TOTAL_ADDR) >= QD_PARAM_SET_TOTAL) QD_SetAlarmCode(QD_TOTAL_ALARM); else if(QD_SM_VAVLE)QD_SetAlarmCode(QD_SM_ALARM); else { SetAlarmCode(QD_ALARM_ADDR,QD_NO_ALARM); bRunning = 1; QD_AutoStep = 1; sz_flg = 0; if(QD_bSingle) SingOneFlg= 1; cZipCnt = 0; cTuiFangKuaiCnt = 0; MV_Set_Command_Pos_CPU(X_AXIS,0); } } QD_bSingle = 0; } if(STOP_IN) { if(STOP_FILTER < 500) { STOP_FILTER++; } else STOP_IN_FLAG = 1; } else if(STOP_FILTER > 25) { STOP_FILTER--; } else STOP_IN_FLAG = 0; //停止 if((STOP_IN_FLAG && !STOP_IN_FLAG_OLD) || bStop) { bStop = 0; user_datas[127] = 0; if(bRunning) { bRunning = 0; QD_XiaQieStep = 0; QD_AutoStep = 0; QD_MotorStep = 0; QD_TuiLianStep = 0; QD_TuiFangKuaiStep = 0; QD_YuanDianStep = 0; QD_AutoDelay = dwTickCount; QD_MotorDelay = dwTickCount; QD_XiaQieDelay = dwTickCount; QD_KaDaiDelay = dwTickCount; QD_CSDelay = dwTickCount; QD_TBDelay = dwTickCount; QD_TFKDelay = dwTickCount; QD_TLDelay = dwTickCount; QD_CheckDelay = dwTickCount; SingOneFlg = 0; QD_JD_VAVEL = 0; QD_SM_VAVLE = 0; QD_XM_VAVLE = 0; QD_YD_VAVLE = 0; QD_TFK_VAVEL= 0; QD_DWelay = dwTickCount + 100; QD_TFK_VAVEL_BACK = 1; QD_TL_VAVLE = 0; QD_CS_OUT = 0; QD_XiaQieStep = 0; QD_MotorStep = 0; QD_TuiLianStep = 0; QD_TuiFangKuaiStep = 0; //QD_SZ_OUT = 1; QD_GZ_VAVLE = 0; QD_TABLE_VAVLE = 0; QD_XHG_VAVLE = 0; dec_flg = 1; QD_YuanDianStep = 0; QD_BinLianStep = 0; QD_BL_VAVLE = 0; if(X_DRV)MoveChangSpeed(X_AXIS,1); SetAlarmCode(QD_ALARM_ADDR,QD_NO_ALARM); QD_CheckLengthStep = 0; } else { bRunning = 0; QD_XiaQieStep = 0; QD_AutoStep = 0; QD_MotorStep = 0; QD_TuiLianStep = 0; QD_TuiFangKuaiStep = 0; QD_YuanDianStep = 0; QD_AutoDelay = dwTickCount; QD_MotorDelay = dwTickCount; QD_XiaQieDelay = dwTickCount; QD_KaDaiDelay = dwTickCount; QD_CSDelay = dwTickCount; QD_TBDelay = dwTickCount; QD_TFKDelay = dwTickCount; QD_TLDelay = dwTickCount; QD_CheckDelay = dwTickCount; SingOneFlg = 0; QD_JD_VAVEL = 0; QD_SM_VAVLE = 0; QD_XM_VAVLE = 0; QD_YD_VAVLE = 0; QD_TFK_VAVEL= 0; QD_DWelay = dwTickCount + 100; QD_TFK_VAVEL_BACK = 1; QD_TL_VAVLE = 0; QD_CS_OUT = 0; QD_XiaQieStep = 0; QD_MotorStep = 0; QD_TuiLianStep = 0; QD_TuiFangKuaiStep = 0; if(X_DRV)MoveChangSpeed(X_AXIS,1); // QD_SZ_OUT = 1; sz_delay = dwTickCount + 2000; sz_flg = 1; QD_GZ_VAVLE = 0; QD_TABLE_VAVLE = 0; QD_XHG_VAVLE = 0; dec_flg = 1; QD_YuanDianStep = 0; QD_BinLianStep = 0; QD_BL_VAVLE = 0; user_datas[121] = 0; user_datas[122] = 0; SetAlarmCode(QD_ALARM_ADDR,QD_NO_ALARM); QD_CheckLengthStep = 0; QD_CheckLengthStep = 0; // MV_Set_Command_Pos_CPU(X_AXIS,0); // tXAxisStepper.cRealPosi = 0; } } if(dec_flg) { if(tXAxisStepper.cCurSpeed <= (QD_PARAM_GO_LOW_SPEED + 5)) { MV_Set_Dec_CPU(X_AXIS,5); AxisDecStop(X_AXIS); dec_flg = 0; } } if(sz_flg) { if((dwTickCount >= sz_delay) && !X_DRV && !bRunning) { if(STOP_IN) { sz_flg = 0; QD_SZ_OUT = 1; } } } if(bAlarmStop) { bAlarmStop = 0; QD_XiaQieStep = 0; QD_AutoStep = 0; QD_MotorStep = 0; QD_TuiLianStep = 0; QD_TuiFangKuaiStep = 0; QD_YuanDianStep = 0; QD_XiaQieStep = 0; QD_MotorStep = 0; QD_TuiLianStep = 0; QD_TuiFangKuaiStep = 0; QD_AutoDelay = dwTickCount; QD_MotorDelay = dwTickCount; QD_XiaQieDelay = dwTickCount; QD_KaDaiDelay = dwTickCount; QD_CSDelay = dwTickCount; QD_TBDelay = dwTickCount; QD_TFKDelay = dwTickCount; QD_TLDelay = dwTickCount; QD_CheckDelay = dwTickCount; SingOneFlg = 0; bRunning = 0; AxisDecStop(X_AXIS); QD_TABLE_VAVLE = 0; QD_CheckLengthStep = 0; } } void QueDuan_Motor_CS(void) { static long save_buff,length_buff,gou_zhen_buff,checkdelay_buff,guo_lian_buff,back_buff,gouzhen_buff,go_buff,go_length_buff,jz_buff,fz_buff; unsigned long pulse_buff; user_datas[124]= QD_MotorStep; user_datas[125]= go_length_buff; user_datas[123] = length_buff; user_datas[127] = cRealPos; switch(QD_MotorStep) { case 0: break; case 1: // 前点定位数控模式 if(QD_SZ_OUT) { QD_SZ_OUT = 0; QD_MotorDelay = dwTickCount + 50; } // if(QD_PARAM_TL_MODE)QD_JZ_DIR = QD_DIR_N; if((QD_TuiLianStep == 0) && !QD_TL_VAVLE && !QD_PARAM_TL_MODE)QD_TuiLianStep = 1; QD_MotorStep = 2; break; case 2: if(dwTickCount >= QD_MotorDelay) { if(QD_QIAN_LIMIT_IN) { // if(QD_PARAM_TL_MODE)QD_JZ_DIR = QD_DIR_P; MV_Set_Acc_CPU(X_AXIS, 10); AxisMovePos(X_AXIS,QD_PARAM_GO_HIGH_SPEED,QD_PARAM_ON_BACK_LENGTH); QD_MotorDelay = dwTickCount + 1000; } QD_MotorStep = 3; QD_JD_VAVEL = 0; } break; case 3: if(!X_DRV && !QD_QIAN_LIMIT_IN && (dwTickCount >= QD_MotorDelay)) { if(cZipCnt == 0) { // if(QD_PARAM_TL_MODE)QD_JZ_DIR = QD_DIR_N; AxisContinueMove(X_AXIS,QD_PARAM_FIRST_SPEED,QD_DIR_P); //第一条走低速 } else { // if(QD_PARAM_TL_MODE)QD_JZ_DIR = QD_DIR_N; AxisMoveTwoPos(X_AXIS,QD_PARAM_GO_HIGH_SPEED,(length_buff - QD_PARAM_Go_LOW_SPEED_LENGTH + QD_PARAM_BACK_LENGTH +QD_PARAM_SJZ_LENGTH),QD_PARAM_GO_LOW_SPEED,0xFFFFFF,QD_DIR_P);//第二条开始走两段速 } QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; QD_MotorStep = 4; } break; case 4: if(QD_QIAN_LIMIT_IN_UP) { AxisEgmStop(X_AXIS); QD_MotorStep = 5; } else if(dwTickCount >= QD_MotorDelay)QD_SetAlarmCode(QD_NO_ZIPPER_ALARM); else if(QD_JD_ORIGIN_IN)QD_SetAlarmCode(QD_JD_ORIGIN_ALARM); break; case 5: if(!X_DRV) { QD_MotorDelay = dwTickCount; QD_MotorStep = 6; } break; case 6: if((dwTickCount >= QD_MotorDelay) && (QD_TuiLianStep == 0)) { if(bRunning) { QD_JD_VAVEL = 1; } QD_MotorStep = 7; QD_MotorDelay = dwTickCount + 100; } break; case 7: if(dwTickCount >= QD_MotorDelay) { QD_YBD_VAVLE = 0; QD_TL_VAVLE = 0; QD_TFK_VAVEL = 0; QD_TFK_VAVEL_BACK = 1; QD_MotorStep = 0; } break; case 20:// 后退使用电机定长 QD_MotorDelay = dwTickCount + QD_PARAM_DELAY_BACK; QD_MotorStep = 21; break; case 21: if(dwTickCount >= QD_MotorDelay) { //if(QD_PARAM_TL_MODE)QD_JZ_DIR = QD_DIR_N; AxisMovePos(X_AXIS,QD_PARAM_BACK_SPEED,-QD_PARAM_ZIPPER_LENGTH); QD_MotorStep = 22; } break; case 22: if(!X_DRV) { QD_MotorDelay = dwTickCount + QD_PARAM_DELAY_FZ; QD_MotorStep = 23; } break; case 23: if(dwTickCount >= QD_MotorDelay) { // if(QD_PARAM_TL_MODE)QD_JZ_DIR = QD_DIR_P; AxisMovePos(X_AXIS,QD_PARAM_GO_LOW_SPEED,QD_PARAM_FZ_LENGTH); QD_MotorStep = 24; } break; case 24: if(!X_DRV) { QD_MotorStep = 0; QD_MotorDelay = dwTickCount; } break; case 30: QD_MotorStep = 31; if(QD_PARAM_BL_ENABLE)QD_BinLianStep = 1; break; case 31: if(dwTickCount >= QD_MotorDelay) { gou_zhen_buff = cRealPos; save_buff = cRealPos; save_limit_pos = cRealPos; QD_MOTOR_DIR = QD_DIR_P; offset_length_buff = &QD_PARAM_OFFSET_LENGTH; length_buff = QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff); AxisMovePos(X_AXIS,QD_PARAM_BACK_SPEED,(QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff))); MoveChangSpeedPos(X_AXIS, QD_PARAM_BACK_LOW_SPEED,(PosToPulse(X_AXIS,QD_PARAM_Back_LOW_SPEED_LENGTH) + MV_Cal_Dec_pulse(QD_PARAM_BACK_SPEED,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_DEC_PULSE))); QD_MotorStep = 35; } break; case 32: if(QD_PARAM_GOUZHEN_LENGTH != 0) { if((gou_zhen_buff - cRealPos + QD_PARAM_GOUZHEN_LENGTH) >= length_buff)QD_GZ_VAVLE = 1; } if(QD_GUO_LIAN_IN_UP) { MoveChangSpeed(X_AXIS,QD_PARAM_BACK_LOW_SPEED); fz_buff = cRealPos; QD_MotorStep = 33; } break; case 33: if(QD_GUO_LIAN_IN_UP)fz_buff = cRealPos; if(QD_PARAM_GOUZHEN_LENGTH != 0) { if((gou_zhen_buff - cRealPos + QD_PARAM_GOUZHEN_LENGTH) >= length_buff)QD_GZ_VAVLE = 1; } if((fz_buff - cRealPos) >= QD_PARAM_DELAY_CHECK) { if(QD_GUO_LIAN_IN_DW) { guo_lian_buff = cRealPos; QD_MotorStep = 34; } } break; case 34: if(QD_PARAM_GOUZHEN_LENGTH != 0) { if((gou_zhen_buff - cRealPos + QD_PARAM_GOUZHEN_LENGTH) >= (length_buff))QD_GZ_VAVLE = 1; } if((guo_lian_buff - cRealPos) >= QD_PARAM_MOTOR_DELAY_LENGTH) { AxisEgmStop(X_AXIS); QD_MotorStep = 35; } break; case 35: if((gou_zhen_buff - cRealPos + QD_PARAM_GOUZHEN_LENGTH) >= length_buff)QD_GZ_VAVLE = 1; if(!X_DRV) { /* if((back_buff - cRealPos + (*offset_length_buff)) >= (QD_PARAM_ZIPPER_LENGTH + QD_PARAM_ERROR_LENGTH)) { QD_SetAlarmCode(QD_LENGTH_LONG_ALARM); QD_TFK_VAVEL_BACK = 0; QD_TFK_VAVEL = 1; QD_DWelay = dwTickCount + 100; } else if((back_buff - cRealPos + (*offset_length_buff) + QD_PARAM_ERROR_LENGTH) >= (QD_PARAM_ZIPPER_LENGTH)) { QD_SetAlarmCode(QD_LENGTH_SHORT_ALARM); QD_TFK_VAVEL_BACK = 0; QD_TFK_VAVEL = 1; QD_DWelay = dwTickCount + 100; } else; */ QD_YD_VAVLE = 1; QD_BL_VAVLE = 0; QD_XM_VAVLE = 1; QD_GZ_VAVLE = 1; QD_MotorStep = 0; } break; case 40: QD_MotorDelay = dwTickCount + QD_PARAM_CUT_BACK_DELAY; QD_MotorStep = 41; break; case 41: if(dwTickCount >= QD_MotorDelay) { jz_buff = cRealPos; if(QD_PARAM_SJZ_LENGTH == 0) { QD_JD_VAVEL = 0; } QD_MotorDelay = dwTickCount + QD_PARAM_DELAY_SJ_TIME; QD_MotorStep = 45; } break; case 45: if((dwTickCount >= QD_MotorDelay) || (QD_JD_VAVEL == 1)) { AxisMovePos(X_AXIS,QD_PARAM_CUT_BACK_SPEED,-(QD_PARAM_SJZ_LENGTH+QD_PARAM_BACK_LENGTH)); QD_MotorStep = 43; } break; case 43: // 切断完成后拉电机动作 if(dwTickCount >= QD_MotorDelay) { if(((QD_PARAM_SJZ_LENGTH) <= (cRealPos - jz_buff))) { QD_JD_VAVEL = 0; QD_MotorStep = 44; } else if(!X_DRV) { QD_JD_VAVEL = 0; QD_MotorStep = 44; } } break; case 44: // 切断完成后拉电机动作 if(!X_DRV) { QD_MotorStep = 0; QD_MotorDelay = dwTickCount; } break; case 61: // 前点定位数控模式 if(QD_SZ_OUT) { QD_SZ_OUT = 0; QD_MotorDelay = dwTickCount + 50; } if(!QD_TL_VAVLE) { if(!QD_SHANG_MU_LIMIT_IN) { QD_TuiLianStep = 1; QD_MotorStep = 62; } } else QD_MotorStep = 62; break; case 62: if(dwTickCount >= QD_MotorDelay) { if(QD_QIAN_LIMIT_IN || QD_QIAN_DEC_IN) { QD_MOTOR_DIR = QD_DIR_P; AxisMovePos(X_AXIS,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_ON_BACK_LENGTH); QD_MotorDelay = dwTickCount + 1000; } QD_MotorStep = 63; QD_JD_VAVEL = 0; } break; case 63: if(!X_DRV && !QD_QIAN_LIMIT_IN && (dwTickCount >= QD_MotorDelay) && !QD_SHANG_MU_LIMIT_IN) { go_buff = cRealPos; QD_MOTOR_DIR = QD_DIR_N; if(cZipCnt > 0) MoveAction_Const_Stop_AccDec(X_AXIS, QD_DIR_N, QD_PARAM_GO_HIGH_SPEED,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); else MoveAction_Const_Stop_AccDec(X_AXIS, QD_DIR_N, QD_PARAM_FIRST_GO_HIGHSPEED,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; QD_MotorStep =64; } break; case 64: offset_length_buff = &QD_PARAM_OFFSET_LENGTH; length_buff = QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff) + QD_PARAM_BACK_LENGTH + QD_PARAM_SJZ_LENGTH - QD_PARAM_FZ_LENGTH - (QD_PARAM_Go_LOW_SPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(QD_PARAM_GO_HIGH_SPEED,QD_PARAM_GO_LOW_SPEED,QD_PARAM_DEC_PULSE))) ; if(((cRealPos - go_buff) > (length_buff)) || QD_QIAN_DEC_IN_UP) { MoveChangSpeed(X_AXIS,QD_PARAM_GO_LOW_SPEED); QD_MotorStep =65; } else if(dwTickCount >= QD_MotorDelay)QD_SetAlarmCode(QD_NO_ZIPPER_ALARM); break; case 65: if(QD_QIAN_LIMIT_IN_UP) { AxisEgmStop(X_AXIS); QD_MotorStep = 66; } else if(dwTickCount >= QD_MotorDelay)QD_SetAlarmCode(QD_NO_ZIPPER_ALARM); else if(QD_JD_ORIGIN_IN)QD_SetAlarmCode(QD_JD_ORIGIN_ALARM); break; case 66: if(!X_DRV) { QD_MotorDelay = dwTickCount + QD_PARAM_JD_DELAY; QD_MotorStep = 67; } break; case 67: if((dwTickCount >= QD_MotorDelay)) { if(bRunning) { MV_Set_Command_Pos_CPU(X_AXIS,0); QD_JD_VAVEL = 1; QD_MotorDelay = dwTickCount + VAVLE_ALARM_TIME; } QD_MotorStep = 68; } break; case 68: if(QD_JD_ORIGIN_IN) { QD_MotorDelay = dwTickCount; QD_YD_VAVLE = 0; if(QD_PARAM_DELAY_HL_LENGTH == 0)QD_BL_VAVLE = 1; QD_TL_VAVLE = 0; QD_TFK_VAVEL = 0; QD_TFK_VAVEL_BACK = 1; QD_DWelay = dwTickCount + 100; QD_MotorStep = 0; } else if(dwTickCount >= QD_MotorDelay) QD_SetAlarmCode(QD_JD_ORIGIN_ALARM); break; } } //推方块动作 void QueDuan_TuiFangKuai(void) { } void QueDuan_BingLian(void) { static long bl_pos_buff; switch(QD_BinLianStep) { case 0:break; case 1: bl_pos_buff = cRealPos; QD_BinLianStep = 2; break; case 2: if((cRealPos - bl_pos_buff) >= QD_PARAM_DELAY_HL_LENGTH) { QD_BL_VAVLE = 1; QD_BinLianStep = 3; } break; case 3: if(QD_SM_VAVLE)QD_BL_VAVLE = 0; break; default:; } } //不带过链感应长度输入电机长度 void QueDuan_Motor_NoGL(void) { static long save_buff,gou_zhen_buff,back_buff,go_buff,jz_buff; unsigned long pulse_buff; static long length_buff; user_datas[121]= GetPos(Y_AXIS); user_datas[122]= QD_MotorStep; // user_datas[123]= QD_PARAM_ERROR_LENGTH; user_datas[124]= cRealPos; // user_datas[125]= QD_PARAM_BACK_LOW_SPEED; // user_datas[126] = QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff) - QD_PARAM_GOUZHEN_LENGTH; if(USE_GUOLIAN_GANYING == 0) { switch(QD_MotorStep) { case 30: QD_MotorDelay = dwTickCount + QD_PARAM_DELAY_BACK; QD_MotorStep = 31; if(QD_PARAM_BL_ENABLE)QD_BinLianStep = 1; break; case 31: if(dwTickCount >= QD_MotorDelay) { back_buff = cRealPos; gou_zhen_buff = cRealPos; save_buff = cRealPos; MV_Set_Command_Pos_CPU(X_AXIS,0); QD_MOTOR_DIR = QD_DIR_P; offset_length_buff = &QD_PARAM_OFFSET_LENGTH; pulse_buff = PosToPulse(X_AXIS,QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff) - (QD_PARAM_Back_LOW_SPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(QD_PARAM_BACK_SPEED,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_DEC_PULSE)))); MoveAction_Const_Back_AccDec(X_AXIS,QD_DIR_P,QD_PARAM_BACK_SPEED,QD_PARAM_BACK_LOW_SPEED,pulse_buff,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE*1.5,QD_PARAM_DEC_PULSE); QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; QD_MotorStep = 32; } break; case 32: offset_length_buff = &QD_PARAM_OFFSET_LENGTH; if(QD_QIAN_DEC_IN_DW && !QD_XM_VAVLE)QD_XM_VAVLE = 1; if((cRealPos-gou_zhen_buff+QD_PARAM_TQ_BL_BACK) > (QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff)))QD_BL_VAVLE = 0; if(((cRealPos-gou_zhen_buff) > ((QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff)) - QD_PARAM_GOUZHEN_LENGTH))&& !QD_GZ_VAVLE) { save_buff = cRealPos; QD_GZ_VAVLE = 1; } if((cRealPos - back_buff) > ((QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff)) - (QD_PARAM_Back_LOW_SPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(QD_PARAM_BACK_SPEED,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_DEC_PULSE))))) { MoveChangSpeed(X_AXIS,QD_PARAM_BACK_LOW_SPEED); QD_MotorStep = 33; } else if((cRealPos - back_buff + (*offset_length_buff)) >= (QD_PARAM_ZIPPER_LENGTH + QD_PARAM_ERROR_LENGTH)) QD_SetAlarmCode(QD_LENGTH_LONG_ALARM); else if(dwTickCount >= QD_MotorDelay) { QD_SetAlarmCode(QD_GZ_ALARM); } break; case 33: if(QD_QIAN_DEC_IN_DW && !QD_XM_VAVLE)QD_XM_VAVLE = 1; if((cRealPos-gou_zhen_buff+QD_PARAM_TQ_BL_BACK) > (QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff)))QD_BL_VAVLE = 0; if(((cRealPos - gou_zhen_buff) > ((QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff)) - QD_PARAM_GOUZHEN_LENGTH)) && !QD_GZ_VAVLE) { user_datas[125] = cRealPos-gou_zhen_buff; user_datas[126] = cRealPos; QD_GZ_VAVLE = 1; } if(QD_GOUZHEN_IN) { QD_YD_VAVLE = 1; QD_MotorDelay = dwTickCount; QD_MotorStep = 34; } else if((cRealPos - back_buff + (*offset_length_buff)) >= (QD_PARAM_ZIPPER_LENGTH + QD_PARAM_ERROR_LENGTH)) QD_SetAlarmCode(QD_LENGTH_LONG_ALARM); else if(dwTickCount >= QD_MotorDelay) { QD_SetAlarmCode(QD_GZ_ALARM); } break; case 34: if(!X_DRV && (dwTickCount >= QD_MotorDelay)) { QD_MOTOR_DIR = QD_DIR_N; QD_BL_VAVLE = 0; if(((cRealPos - back_buff+ (*offset_length_buff)) >= (QD_PARAM_ZIPPER_LENGTH + QD_PARAM_ERROR_LENGTH)) || ((cRealPos - back_buff+ (*offset_length_buff)) <= (QD_PARAM_ZIPPER_LENGTH - QD_PARAM_ERROR_LENGTH))) QD_SetAlarmCode(QD_LENGTH_LONG_ALARM); else { AxisMovePosAccDec(X_AXIS,QD_PARAM_GO_HIGH_SPEED,-QD_PARAM_FZ_LENGTH,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); QD_MotorStep = 35; } } break; case 35: // if(!X_DRV) { QD_MotorStep = 36; } break; case 36: QD_MotorDelay = dwTickCount; QD_MotorStep = 0; break; case 40: if(dwTickCount >= QD_MotorDelay) { jz_buff = cRealPos; if(QD_PARAM_SJZ_LENGTH == 0) { QD_JD_VAVEL = 0; } QD_MotorDelay = dwTickCount + QD_PARAM_DELAY_SJ_TIME; QD_MotorStep = 41; } break; case 41: if((dwTickCount >= QD_MotorDelay) || (QD_JD_VAVEL == 1)) { QD_MOTOR_DIR = QD_DIR_P; AxisMovePos(X_AXIS,QD_PARAM_CUT_BACK_SPEED,-(QD_PARAM_SJZ_LENGTH+QD_PARAM_BACK_LENGTH)); QD_MotorStep = 42; } break; case 42: // 切断完成后拉电机动作 if(dwTickCount >= QD_MotorDelay) { if(((QD_PARAM_SJZ_LENGTH) <= (cRealPos - jz_buff))) { QD_JD_VAVEL = 0; if(bRunning)QD_SM_VAVLE = 0; QD_MotorStep = 43; } else if(!X_DRV) { QD_JD_VAVEL = 0; if(bRunning)QD_SM_VAVLE = 0; QD_MotorStep = 43; } } break; case 43: // 切断完成后拉电机动作 if(!X_DRV) { QD_MotorStep = 0; MV_Set_Command_Pos_CPU(X_AXIS,0); QD_MotorDelay = dwTickCount; } break; case 61: // 前点定位数控模式 if(QD_SZ_OUT) { QD_SZ_OUT = 0; QD_MotorDelay = dwTickCount + 50; } if(!QD_TL_VAVLE) { if(!QD_SHANG_MU_LIMIT_IN) { QD_TuiLianStep = 1; QD_MotorStep = 62; } } else QD_MotorStep = 62; break; case 62: if(dwTickCount >= QD_MotorDelay) { if(QD_QIAN_LIMIT_IN || QD_QIAN_DEC_IN) { QD_MOTOR_DIR = QD_DIR_P; AxisMovePos(X_AXIS,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_ON_BACK_LENGTH); QD_MotorDelay = dwTickCount + 1000; } QD_MotorStep = 63; QD_JD_VAVEL = 0; } break; case 63: if(!X_DRV && !QD_QIAN_LIMIT_IN && (dwTickCount >= QD_MotorDelay) && !QD_SHANG_MU_LIMIT_IN) { go_buff = cRealPos; QD_MOTOR_DIR = QD_DIR_N; if(cZipCnt > 0) MoveAction_Const_Stop_AccDec(X_AXIS, QD_DIR_N, QD_PARAM_GO_HIGH_SPEED,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); else MoveAction_Const_Stop_AccDec(X_AXIS, QD_DIR_N, QD_PARAM_FIRST_GO_HIGHSPEED,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; QD_MotorStep =64; } break; case 64: if(cZipCnt > 0) { offset_length_buff = &QD_PARAM_OFFSET_LENGTH; length_buff = QD_PARAM_ZIPPER_LENGTH + (*offset_length_buff) + QD_PARAM_BACK_LENGTH + QD_PARAM_SJZ_LENGTH - QD_PARAM_FZ_LENGTH - (QD_PARAM_Go_LOW_SPEED_LENGTH + QD_PARAM_ZIPPER_LENGTH/60 + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(QD_PARAM_GO_HIGH_SPEED,QD_PARAM_GO_LOW_SPEED,QD_PARAM_DEC_PULSE))) ; if(((cRealPos - go_buff) > (length_buff))) { MoveChangSpeed(X_AXIS,QD_PARAM_GO_LOW_SPEED); QD_MotorStep =65; } else if(dwTickCount >= QD_MotorDelay)QD_SetAlarmCode(QD_NO_ZIPPER_ALARM); } else { if(QD_QIAN_DEC_IN) { QD_MotorStep =65; MoveChangSpeed(X_AXIS,QD_PARAM_GO_LOW_SPEED); } } break; case 65: if(QD_QIAN_LIMIT_IN) { AxisEgmStop(X_AXIS); QD_MotorStep = 66; } else if(dwTickCount >= QD_MotorDelay)QD_SetAlarmCode(QD_NO_ZIPPER_ALARM); else if(QD_JD_ORIGIN_IN)QD_SetAlarmCode(QD_JD_ORIGIN_ALARM); break; case 66: if(!X_DRV) { QD_MotorDelay = dwTickCount + QD_PARAM_JD_DELAY; QD_MotorStep = 67; } break; case 67: if((dwTickCount >= QD_MotorDelay)) { if(bRunning) { MV_Set_Command_Pos_CPU(X_AXIS,0); QD_JD_VAVEL = 1; QD_MotorDelay = dwTickCount + VAVLE_ALARM_TIME; } QD_MotorStep = 68; } break; case 68: if(QD_JD_ORIGIN_IN) { QD_MotorDelay = dwTickCount; QD_YD_VAVLE = 0; QD_TL_VAVLE = 0; QD_MotorStep = 0; } else if(dwTickCount >= QD_MotorDelay) QD_SetAlarmCode(QD_JD_ORIGIN_ALARM); break; } } else { switch(QD_MotorStep) { case 30: QD_MotorDelay = dwTickCount + QD_PARAM_DELAY_BACK; QD_MotorStep = 31; if(QD_PARAM_BL_ENABLE)QD_BinLianStep = 1; break; case 31: if(dwTickCount >= QD_MotorDelay) { back_buff = cRealPos; gou_zhen_buff = cRealPos; save_buff = cRealPos; QD_MOTOR_DIR = QD_DIR_P; offset_length_buff = &QD_PARAM_OFFSET_LENGTH; if(cZipCnt < 2) { MoveAction_Const_AccDec(X_AXIS, QD_DIR_P, QD_PARAM_BACK_SPEED/2,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); } else { pulse_buff = PosToPulse(X_AXIS,length_buff - (QD_PARAM_Back_LOW_SPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(QD_PARAM_BACK_SPEED,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_DEC_PULSE)))); MoveAction_Const_Back_AccDec(X_AXIS,QD_DIR_P,QD_PARAM_BACK_SPEED,QD_PARAM_BACK_LOW_SPEED,pulse_buff,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); } QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; QD_MotorStep = 32; } break; case 32: if(cZipCnt < 2) { if(QD_GUO_LIAN_IN) { QD_CheckDelay = dwTickCount + QD_PARAM_GZ_DELAY; MoveChangSpeed(X_AXIS,QD_PARAM_BACK_LOW_SPEED); QD_MotorStep = 33; } } else { if((cRealPos-gou_zhen_buff+QD_PARAM_TQ_BL_BACK) > (length_buff + (*offset_length_buff)))QD_BL_VAVLE = 0; if(((cRealPos-gou_zhen_buff) > ((length_buff) - QD_PARAM_GOUZHEN_LENGTH))&& !QD_GZ_VAVLE) { save_buff = cRealPos; QD_GZ_VAVLE = 1; } if((cRealPos - back_buff) > ((length_buff) - (QD_PARAM_Back_LOW_SPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(QD_PARAM_BACK_SPEED,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_DEC_PULSE))))) { if(X_DRV) { MoveChangSpeed(X_AXIS,QD_PARAM_BACK_LOW_SPEED); } QD_MotorStep = 33; } else if((cRealPos - back_buff) >= (length_buff + QD_PARAM_ERROR_LENGTH)) QD_SetAlarmCode(QD_LENGTH_LONG_ALARM); else if(dwTickCount >= QD_MotorDelay) { QD_SetAlarmCode(QD_GZ_ALARM); } } break; case 33: if(cZipCnt < 2) { if(dwTickCount >= QD_CheckDelay)QD_GZ_VAVLE = 1; if(QD_GOUZHEN_IN && QD_GZ_UP_LIMIT) { QD_MotorStep = 34; QD_MotorDelay = dwTickCount; AxisEgmStop(X_AXIS); } else if(dwTickCount >= QD_MotorDelay) { QD_SetAlarmCode(QD_GZ_ALARM); } } else { if((cRealPos-gou_zhen_buff+QD_PARAM_TQ_BL_BACK) > (length_buff))QD_BL_VAVLE = 0; if(((cRealPos - gou_zhen_buff) > ((length_buff) - QD_PARAM_GOUZHEN_LENGTH)) && !QD_GZ_VAVLE) { QD_GZ_VAVLE = 1; } if(QD_GOUZHEN_IN) { QD_YD_VAVLE = 1; AxisEgmStop(X_AXIS); QD_MotorDelay = dwTickCount; QD_MotorStep = 34; } else if((cRealPos - back_buff) >= (length_buff + QD_PARAM_ERROR_LENGTH)) QD_SetAlarmCode(QD_LENGTH_LONG_ALARM); else if(dwTickCount >= QD_MotorDelay) { QD_SetAlarmCode(QD_GZ_ALARM); } } break; case 34: if(!X_DRV && (dwTickCount >= QD_MotorDelay)) { QD_MOTOR_DIR = QD_DIR_N; if(cZipCnt == 1)length_buff = cRealPos - back_buff; QD_BL_VAVLE = 0; /*if(((cRealPos - back_buff+ (*offset_length_buff)) >= (QD_PARAM_ZIPPER_LENGTH + QD_PARAM_ERROR_LENGTH)) || ((cRealPos - back_buff+ (*offset_length_buff)) <= (QD_PARAM_ZIPPER_LENGTH - QD_PARAM_ERROR_LENGTH))) QD_SetAlarmCode(QD_LENGTH_LONG_ALARM); else*/ { AxisMovePosAccDec(X_AXIS,QD_PARAM_GO_HIGH_SPEED,-QD_PARAM_FZ_LENGTH,QD_PARAM_GO_LOW_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); QD_MotorStep = 35; } } break; case 35: // if(!X_DRV) { QD_MotorStep = 36; QD_YD_VAVLE = 1; } break; case 36: QD_MotorDelay = dwTickCount; QD_MotorStep = 0; break; case 40: if(dwTickCount >= QD_MotorDelay) { jz_buff = cRealPos; if(QD_PARAM_SJZ_LENGTH == 0) { QD_JD_VAVEL = 0; } QD_MotorDelay = dwTickCount + QD_PARAM_DELAY_SJ_TIME; QD_MotorStep = 41; } break; case 41: if((dwTickCount >= QD_MotorDelay) || (QD_JD_VAVEL == 1)) { QD_MOTOR_DIR = QD_DIR_P; AxisMovePos(X_AXIS,QD_PARAM_CUT_BACK_SPEED,-(QD_PARAM_SJZ_LENGTH+QD_PARAM_BACK_LENGTH)); QD_MotorStep = 42; } break; case 42: // 切断完成后拉电机动作 if(dwTickCount >= QD_MotorDelay) { if(((QD_PARAM_SJZ_LENGTH) <= (cRealPos - jz_buff))) { QD_JD_VAVEL = 0; if(bRunning)QD_SM_VAVLE = 0; QD_MotorStep = 43; } else if(!X_DRV) { QD_JD_VAVEL = 0; if(bRunning)QD_SM_VAVLE = 0; QD_MotorStep = 43; } } break; case 43: // 切断完成后拉电机动作 if(!X_DRV) { QD_MotorStep = 0; MV_Set_Command_Pos_CPU(X_AXIS,0); QD_MotorDelay = dwTickCount; } break; case 61: // 前点定位数控模式 if(QD_SZ_OUT) { QD_SZ_OUT = 0; QD_MotorDelay = dwTickCount + 50; } QD_MotorStep = 62; break; case 62: if(dwTickCount >= QD_MotorDelay) { if(QD_QIAN_LIMIT_IN || QD_QIAN_DEC_IN) { QD_MOTOR_DIR = QD_DIR_P; AxisMovePos(X_AXIS,QD_PARAM_BACK_LOW_SPEED,QD_PARAM_ON_BACK_LENGTH); QD_MotorDelay = dwTickCount + 1000; } QD_MotorStep = 63; QD_JD_VAVEL = 0; } break; case 63: if(!X_DRV && !QD_QIAN_LIMIT_IN && (dwTickCount >= QD_MotorDelay) && !QD_SHANG_MU_LIMIT_IN) { go_buff = cRealPos; QD_MOTOR_DIR = QD_DIR_N; if(cZipCnt > 1) MoveAction_Const_Stop_AccDec(X_AXIS, QD_DIR_N, QD_PARAM_GO_HIGH_SPEED,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); else MoveAction_Const_Stop_AccDec(X_AXIS, QD_DIR_N, QD_PARAM_FIRST_GO_HIGHSPEED,QD_PARAM_START_SPEED,QD_PARAM_ACC_PULSE,QD_PARAM_DEC_PULSE); QD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME; QD_MotorStep =64; } break; case 64: if(cZipCnt > 1) { if(((cRealPos - go_buff) > ((QD_PARAM_SJZ_LENGTH+QD_PARAM_BACK_LENGTH)+length_buff-(QD_PARAM_Go_LOW_SPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(QD_PARAM_GO_HIGH_SPEED,QD_PARAM_GO_LOW_SPEED,QD_PARAM_DEC_PULSE))))) || QD_QIAN_DEC_IN_UP) { MoveChangSpeed(X_AXIS,QD_PARAM_GO_LOW_SPEED); QD_MotorStep =65; } else if(dwTickCount >= QD_MotorDelay)QD_SetAlarmCode(QD_NO_ZIPPER_ALARM); } else { if(QD_QIAN_DEC_IN) { MoveChangSpeed(X_AXIS,QD_PARAM_GO_LOW_SPEED); QD_MotorStep =65; } } break; case 65: if(QD_QIAN_LIMIT_IN_UP) { AxisEgmStop(X_AXIS); QD_MotorStep = 66; } else if(dwTickCount >= QD_MotorDelay)QD_SetAlarmCode(QD_NO_ZIPPER_ALARM); else if(QD_JD_ORIGIN_IN)QD_SetAlarmCode(QD_JD_ORIGIN_ALARM); break; case 66: if(!X_DRV) { QD_MotorDelay = dwTickCount + QD_PARAM_JD_DELAY; QD_MotorStep = 67; } break; case 67: if((dwTickCount >= QD_MotorDelay)) { if(bRunning) { MV_Set_Command_Pos_CPU(X_AXIS,0); QD_JD_VAVEL = 1; QD_MotorDelay = dwTickCount + VAVLE_ALARM_TIME; } QD_MotorStep = 68; } break; case 68: if(QD_JD_ORIGIN_IN) { QD_MotorDelay = dwTickCount; QD_YD_VAVLE = 0; QD_MotorStep = 0; } else if(dwTickCount >= QD_MotorDelay) QD_SetAlarmCode(QD_JD_ORIGIN_ALARM); break; } } } //电机动作 void QueDuan_Motor(void) // { switch(QD_PARAM_MACHINE_CHOOSE) { case QD_NO_CS_TUIFANGKUAI: QueDuan_Motor_CS();break; case QD_NO_GL_TUIFANGKUAI:QueDuan_Motor_NoGL();break; default:; } } //超声方式下切 void QueDuan_XiaQue_CS(void) { switch(QD_XiaQieStep) { case 0: break; case 1: if(bRunning) { QD_XiaQieStep = 5; QD_XiaQieDelay = dwTickCount + QD_PARAM_TFK_DELAY; } else QD_XiaQieStep = 4; break; case 2: // if(QD_PARAM_XM_ENABLE) QD_XM_VAVLE = 1; QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; QD_XiaQieStep = 3; break; case 3: if(QD_PARAM_XM_ENABLE) { if(QD_XIA_MU_LIMIT_IN) { QD_XiaQieDelay = dwTickCount + QD_PARAM_GZ_DELAY; QD_XiaQieStep = 4; } else if(dwTickCount >= QD_XiaQieDelay) { QD_SetAlarmCode(QD_XM_DAOWEI); } } else { QD_XiaQieDelay = dwTickCount + QD_PARAM_GZ_DELAY; QD_XiaQieStep = 4; } break; case 4: QD_GZ_VAVLE = 1; QD_XiaQieDelay = dwTickCount + QD_PARAM_TFK_DELAY; QD_XiaQieStep = 5; break; case 5: if(dwTickCount >= QD_XiaQieDelay) { QD_TFK_VAVEL = 1; QD_YD_VAVLE = 1; QD_TFK_VAVEL_BACK = 0; QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; QD_XiaQieStep = 6; } break; case 6: if(QD_PARAM_XM_ENABLE) { if(QD_XIA_MU_LIMIT_IN) { QD_XiaQieStep = 7; QD_XiaQieDelay = dwTickCount + 1000; QD_CheckDelay = dwTickCount + QD_PARAM_DELAY_CHECK_GZ; } else if(dwTickCount >= QD_XiaQieDelay) { QD_SetAlarmCode(QD_XM_DAOWEI); } } else { QD_XiaQieStep = 7; QD_CheckDelay = dwTickCount + QD_PARAM_DELAY_CHECK_GZ; QD_XiaQieDelay = dwTickCount + 1000; } break; case 7: if(QD_GOUZHEN_IN && (dwTickCount >= QD_CheckDelay)) { QD_YD_VAVLE = 1; QD_BL_VAVLE = 1; cTuiFangKuaiCnt = 0; QD_XiaQieDelay = dwTickCount + QD_PARAM_CUT_DELAY; QD_XiaQieStep = 8; } else if((dwTickCount >= QD_XiaQieDelay)) { if(cTuiFangKuaiCnt == 0) { QD_TFK_VAVEL = 0; QD_TFK_VAVEL_BACK = 1; QD_DWelay = dwTickCount + 100; cTuiFangKuaiCnt++; QD_XiaQieDelay = dwTickCount + 1000; QD_XiaQieStep = 100; } else QD_SetAlarmCode(QD_GZ_ALARM); } break; case 100: if((dwTickCount >= QD_XiaQieDelay)) { QD_XiaQieStep = 5; } break; case 8: if(dwTickCount >= QD_XiaQieDelay) { QD_XM_VAVLE = 1; QD_SM_VAVLE = 1; QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; QD_XiaQieStep = 9; } break; case 9: if(QD_SHANG_MU_LIMIT_IN && QD_XIA_MU_LIMIT_IN && ((QD_PARAM_TIAOSHI_MODE && QD_bTS) || (QD_PARAM_TIAOSHI_MODE == 0)) ) { QD_XiaQieDelay = dwTickCount + QD_PARAM_DELAY_CS; // QD_XiaQieStep = 10; QD_YD_VAVLE = 0; QD_TFK_VAVEL = 0; QD_TFK_VAVEL_BACK = 0; QD_DWelay = dwTickCount + 100; } else if(dwTickCount >= QD_XiaQieDelay)QD_SetAlarmCode(QD_SM_DAOWEI); break; case 10: if(dwTickCount >= QD_XiaQieDelay) { if(QD_PARAM_CS_ENABLE)QD_CS_OUT = 1; QD_XiaQieDelay = dwTickCount + QD_PARAM_CS_TIME; // QD_XiaQieStep = 11; } break; case 11: if(dwTickCount >= QD_XiaQieDelay) { QD_CS_OUT = 0; QD_GZ_VAVLE = 0; QD_XiaQieDelay = dwTickCount + QD_PARAM_CS_COLD_TIME; // QD_XiaQieStep = 12; } break; case 12: if(dwTickCount >= QD_XiaQieDelay) { QD_SM_VAVLE = 0; QD_XM_VAVLE = 0; QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; QD_XiaQieStep = 13; }// break; case 13: if(QD_SHANG_MU_ORIGIN_IN && !QD_XIA_MU_LIMIT_IN) { QD_XiaQieStep = 0; } else if(dwTickCount >= QD_XiaQieDelay) { QD_SetAlarmCode(QD_SM_YUANWEI); } break; } } void QueDuan_TuiLianNoGL(void) { switch(QD_TuiLianStep) { case 0: break; case 1: QD_TuiLianStep = 2; break; case 2: if(!QD_YD_VAVLE)QD_TLDelay = dwTickCount + QD_PARAM_YD_DELAY; QD_YD_VAVLE = 1; QD_TuiLianStep = 3; break; case 3: if(dwTickCount >= QD_TLDelay) { QD_TL_VAVLE = 1; QD_TFK_VAVEL = 1; QD_TFK_VAVEL_BACK = 0; QD_TLDelay = dwTickCount + QD_PARAM_TL_DELAY; QD_TuiLianStep = 4; } break; case 4: if(dwTickCount >= QD_TLDelay) { QD_TuiLianStep = 0; } break; } } void QueDuan_TuiLianAction(void) { if(!QD_PARAM_XM_MODE) { QueDuan_TuiLianNoGL(); } } void QueDuan_XiaQue_NO_GL(void) { if(USE_GUOLIAN_GANYING == 0) { switch(QD_XiaQieStep) { case 0: break; case 1: QD_YD_VAVLE = 1; if(!bRunning)QD_XM_VAVLE = 1; QD_XiaQieDelay = dwTickCount + QD_PARAM_CUT_DELAY; QD_XiaQieStep = 2; break; case 2: if(dwTickCount >= QD_XiaQieDelay) { QD_XiaQieStep = 3; } break; case 3: { { QD_SM_VAVLE = 1; QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; // QD_XiaQieStep = 4; } } break; case 4: if(QD_SHANG_MU_LIMIT_IN && QD_XIA_MU_LIMIT_IN) { QD_XiaQieStep = 5; QD_GZ_VAVLE = 0; QD_XiaQieDelay = dwTickCount + QD_PARAM_DELAYBACK_SM; // } else if(dwTickCount >= QD_XiaQieDelay) { if(!QD_SHANG_MU_LIMIT_IN) QD_SetAlarmCode(QD_SM_DAOWEI); else QD_SetAlarmCode(QD_XM_DAOWEI); } break; case 5: if(dwTickCount >= QD_XiaQieDelay) { { QD_XiaQieDelay = dwTickCount + QD_PARAM_DELAY_CS; // QD_XiaQieStep = 6; } } break; case 6: if(dwTickCount >= QD_XiaQieDelay) { if(QD_PARAM_CS_ENABLE)QD_CS_OUT = 1; QD_XiaQieDelay = dwTickCount + QD_PARAM_CS_TIME; // QD_XiaQieStep = 7; } break; case 7: if(dwTickCount >= QD_XiaQieDelay) { QD_CS_OUT = 0; QD_XiaQieDelay = dwTickCount + QD_PARAM_CS_COLD_TIME; // QD_XiaQieStep = 8; } break; case 8: if(dwTickCount >= QD_XiaQieDelay) { if(!bRunning) QD_SM_VAVLE = 0; QD_XM_VAVLE = 0; QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; // QD_XiaQieStep = 9; } break; case 9: if(((QD_SHANG_MU_ORIGIN_IN && !QD_SHANG_MU_LIMIT_IN && !bRunning) || bRunning) && !QD_XIA_MU_LIMIT_IN) { if(!bRunning)QD_JD_VAVEL = 0; QD_XiaQieStep = 0; QD_XiaQieDelay = dwTickCount; } else if(dwTickCount >= QD_XiaQieDelay) { QD_SetAlarmCode(QD_SM_YUANWEI); } break; } } else { switch(QD_XiaQieStep) { case 0: break; case 1: QD_XIA_MU_VAVLE = 1; QD_XiaQieDelay = dwTickCount + QD_PARAM_CUT_DELAY; QD_XiaQieStep = 2; break; case 2: if(dwTickCount >= QD_XiaQieDelay) { QD_XiaQieStep = 3; } break; case 3: { { QD_SM_VAVLE = 1; QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; // QD_XiaQieStep = 4; } } break; case 4: if(QD_SHANG_MU_LIMIT_IN && QD_XM_LIMIT) { QD_XiaQieStep = 5; QD_GZ_VAVLE = 0; QD_XiaQieDelay = dwTickCount + QD_PARAM_DELAYBACK_SM; // } else if(dwTickCount >= QD_XiaQieDelay) { if(!QD_SHANG_MU_LIMIT_IN) QD_SetAlarmCode(QD_SM_DAOWEI); else QD_SetAlarmCode(QD_XM_DAOWEI); } break; case 5: if(dwTickCount >= QD_XiaQieDelay) { { QD_XiaQieDelay = dwTickCount + QD_PARAM_DELAY_CS; // QD_XiaQieStep = 6; } } break; case 6: if(dwTickCount >= QD_XiaQieDelay) { if(QD_PARAM_CS_ENABLE)QD_CS_OUT = 1; QD_XiaQieDelay = dwTickCount + QD_PARAM_CS_TIME; // QD_XiaQieStep = 7; } break; case 7: if(dwTickCount >= QD_XiaQieDelay) { QD_CS_OUT = 0; QD_XiaQieDelay = dwTickCount + QD_PARAM_CS_COLD_TIME; // QD_XiaQieStep = 8; } break; case 8: if(dwTickCount >= QD_XiaQieDelay) { if(!bRunning) QD_SM_VAVLE = 0; QD_XIA_MU_VAVLE = 0; QD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; // QD_XiaQieStep = 9; } break; case 9: if(((QD_SHANG_MU_ORIGIN_IN && !QD_SHANG_MU_LIMIT_IN && !bRunning) || bRunning) && !QD_XM_LIMIT) { if(!bRunning)QD_JD_VAVEL = 0; QD_XiaQieStep = 0; QD_XiaQieDelay = dwTickCount; } else if(dwTickCount >= QD_XiaQieDelay) { QD_SetAlarmCode(QD_SM_YUANWEI); } break; } } } //切断动作 void QueDuan_XiaQue(void) { switch(QD_PARAM_MACHINE_CHOOSE) { case QD_NO_CS_TUIFANGKUAI:QueDuan_XiaQue_CS();break; case QD_NO_GL_TUIFANGKUAI:QueDuan_XiaQue_NO_GL();break; default:; } } #endif