#include "global.h" #if TONG_YONG_MACHINE void JSDC_CheckStart(void); void JSDC_Motor(void); void JSDC_XiaChong(void); void JSDC_FenZhen(void); void JSDC_ChuiQi(void); void JSDC_ManualAction(void); void JSDC_AutoAction(void); unsigned char JSDC_CheckPos(void); unsigned char JSDC_cLFengTimer,JSDC_cRFengTimer; unsigned long JSDC_cZipperLength[2]; unsigned char JSDC_cCheckLengthOk=0; unsigned char JSDC_STOP_IN_FLAG,JSDC_STOP_IN_FLAG_OLD,JSDC_STOP_FILTER; unsigned char JSDC_SingOneFlag = 0,JSDC_FirstFlg = 0; unsigned char JSDC_cAlarmStopFlg = 0; long JSDC_dwEncPos = 0; long JSDC_SaveLength = 0; //故障报警 void JSDC_SetAlarmCode(unsigned alarm_code) { SetAlarmCode(JSDC_ALARM_ADDR,alarm_code); JSDC_bAlarmStop = 1; JSDC_cAlarmStopFlg = 1; } //高速输入X20外部色标信号中断 void JSDC_ExtiActionX20(void) { } void JSDC_InitAction(void) { float length_buff,pulse_buff; CalFreqTab_X_Free(25); length_buff = JSDC_PARAM_DAILUN_LENGTH; pulse_buff = JSDC_PARAM_CYCLE_PULSE; XGearRatio = pulse_buff/length_buff; length_buff = JSDC_BM_LENGTH; pulse_buff = 1000; BMGearRatio = pulse_buff/length_buff; JSDC_SZ_OUT = JSDC_SERVER_DISEN; JSDC_STOP_IN_FLAG = STOP_IN; JSDC_STOP_IN_FLAG_OLD = JSDC_STOP_IN_FLAG; JSDC_SaveLength = 0; } void JSDC_Action(void) { JSDC_CheckStart(); //启动 JSDC_FenZhen(); //左分针 JSDC_XiaChong(); //下冲 JSDC_ChuiQi(); JSDC_Motor(); //拖带控制 JSDC_ManualAction(); JSDC_AutoAction(); } void JSDC_ManualAction(void) { long i; //清总产量 if(JSDC_bClear) //清总产量 { JSDC_bClear = 0; ClrcToTal(JSDC_TOTAL_ADDR); JSDC_bSaveWorkData = 1; } //加10 if(JSDC_bAddLength) { JSDC_bAddLength = 0; i = JSDC_SET_ZIPPER_ALL_LENGTH; i += 10; SetData32bits(20,i); JSDC_SaveLength = 0; } //减10 if(JSDC_bDecLength) { JSDC_bDecLength = 0; i = JSDC_SET_ZIPPER_ALL_LENGTH; i -= 10; SetData32bits(20,i); JSDC_SaveLength = 0; } //工作方式选择(数控定寸和勾针定寸)  if(JSDC_bSetDCMode) { JSDC_bSetDCMode = 0; JSDC_SaveLength = 0; if(JSDC_DC_MODE != 0) { JSDC_GouZhen_VAVLE = 1; JSDC_cGouZhenTime = 300; } if(JSDC_DC_MODE == JSDC_DC_SF_MODE) { MV_Set_Command_Pos_CPU(X_AXIS,0); } } if(JSDC_bSetLengthCM) { JSDC_bSetLengthCM = 0; SetData32bits(18,CalInch(JSDC_SET_ZIPPER_LENGTH)); JSDC_PARAM_KONG_WEI_LENGTH_INCH = CalInch(JSDC_PARAM_KONG_WEI_LENGTH); SetData32bits(20, JSDC_SET_ZIPPER_LENGTH + JSDC_PARAM_KONG_WEI_LENGTH); SetData32bits(22,CalInch(JSDC_SET_ZIPPER_ALL_LENGTH)); JSDC_SaveLength = 0; JSDC_bClear = 1; } if(JSDC_bSetLengthINCH) { JSDC_bSetLengthINCH = 0; SetData32bits(15,CalLengthCM(JSDC_SET_ZIPPER_LENGTH_INCH)); JSDC_PARAM_KONG_WEI_LENGTH = CalInch(JSDC_PARAM_KONG_WEI_LENGTH_INCH); SetData32bits(20, JSDC_SET_ZIPPER_LENGTH + JSDC_PARAM_KONG_WEI_LENGTH); SetData32bits(22,CalInch(JSDC_SET_ZIPPER_ALL_LENGTH)); JSDC_SaveLength = 0; JSDC_bClear = 1; } if((JSDC_bRunning) == 0) ////手动 { if(JSDC_bXiaChong) { JSDC_bXiaChong = 0; JSDC_SaveLength = 0; if(JSDC_cXiaChongStep == 0)JSDC_cXiaChongStep = 1; } if(JSDC_bLeftFenZhen) { JSDC_bLeftFenZhen = 0; if(JSDC_cXiaChongStep == 0) JSDC_LeftFenZhen_VAVLE = ~JSDC_LeftFenZhen_VAVLE; } if(JSDC_bRightFenZhen) { JSDC_bRightFenZhen = 0; if(JSDC_cXiaChongStep == 0) JSDC_RightFenZhen_VAVLE = ~JSDC_RightFenZhen_VAVLE; } //点动下冲 if((JSDC_bDotXiaChong)) { JSDC_bDotXiaChong = 0; if(JSDC_cXiaChongStep == 0)JSDC_cXiaChongStep = 20; } if(JSDC_bGouZhen) { JSDC_bGouZhen = 0; JSDC_cGouZhenTime = dwTickCount + 300; JSDC_GouZhen_VAVLE = ~JSDC_GouZhen_VAVLE; } if(JSDC_DC_MODE != 0) //伺服定寸 { JSDC_GouZhen_VAVLE = 1; } else { if(dwTickCount >= JSDC_cGouZhenTime) JSDC_GouZhen_VAVLE = 0; } if(JSDC_bTestMotor) { if(!X_DRV && JSDC_CheckPos()) { MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P, 10,1,5,5); if(JSDC_cSDStep == 0)JSDC_cSDStep = 1; } } else { if(X_DRV) { AxisDecStop(X_AXIS); JSDC_cSDStep = 0; } } if(JSDC_bYD) { JSDC_bYD = 0; JSDC_YD_VAVLE = ~JSDC_YD_VAVLE; } if(JSDC_bChuiQi) { JSDC_bChuiQi = 0; JSDC_ChuiQi_VAVLE = 1; if(JSDC_cChuiQiStep == 0)JSDC_cChuiQiStep = 1; } } } void JSDC_AutoAction(void) { DISPLAY_DATA0 = JSDC_cAutoStep; // DISPLAY_DATA1 = JSDC_cZipperLength[0];//JSDC_cMotorStep; // DISPLAY_DATA2 = JSDC_cZipperLength[1]; // DISPLAY_DATA3 = JSDC_cRightFenZhenStep; DISPLAY_DATA4 = JSDC_cCheckLengthOk;//JSDC_cXiaChongStep; DISPLAY_DATA5 = dwRealPos; DISPLAY_DATA6 = JSDC_dwEncPos; if(JSDC_bRunning) { switch(JSDC_cAutoStep) { case 0: break; case 1: if(dwTickCount >= JSDC_cAutoDelay) { JSDC_cAutoStep = 2; } break; case 2: //左右分针要退到位,过链到位要离开 if(dwTickCount >= JSDC_cAutoDelay) { JSDC_cAutoStep = 3; switch(JSDC_DC_MODE) { case JSDC_DC_SF_MODE:JSDC_cMotorStep = 20; break; //伺服 case JSDC_DC_BMQ_MODE:JSDC_cMotorStep = 60; break; //编码器 default:JSDC_cMotorStep = 1; //启动拖带 ;//勾针 } } break; case 3: //拖带已经完成 if(JSDC_cMotorStep == 0) { { JSDC_cAutoStep = 4; } } break; case 4: JSDC_cAutoStep = 5; break; case 5: if(JSDC_cXiaChongStep == 0) { JSDC_cXiaChongStep = 1; //下冲电机启动 JSDC_cAutoStep = 6; } break; case 6: //下冲已完成 if((JSDC_cXiaChongStep == 0) || (JSDC_cXiaChongStep == 5)) { if(JSDC_DC_MODE == JSDC_DC_BMQ_MODE) { JSDC_SaveLength += JSDC_PARAM_DAOKOU_LENGTH; if(JSDC_SaveLength >= JSDC_PARAM_KONG_WEI_LENGTH) { dwZipCnt++; JSDC_SaveLength = 0; SetEncodePos(0); AddToTal(JSDC_TOTAL_ADDR); //计数增加和保存 CalProSP(JSDC_PROSPEED_ADDR); JSDC_cAutoStep = 7; } else { if((JSDC_PARAM_KONG_WEI_LENGTH - JSDC_SaveLength) >= JSDC_PARAM_DAOKOU_LENGTH) { JSDC_cAutoStep = 2; } else { JSDC_SaveLength = JSDC_PARAM_KONG_WEI_LENGTH - JSDC_PARAM_DAOKOU_LENGTH; JSDC_cAutoStep = 2; } } } else { dwZipCnt++; JSDC_SaveLength = 0; AddToTal(JSDC_TOTAL_ADDR); //计数增加和保存 CalProSP(JSDC_PROSPEED_ADDR); JSDC_cAutoStep = 7; } } break; case 7: if(!JSDC_GouZhen_IN) { if(GetTotal(JSDC_TOTAL_ADDR) >= JSDC_SET_TOTAL)JSDC_SetAlarmCode(JSDC_TOTAL_ALARM); JSDC_cAutoStep = 8; } break; case 8: JSDC_cAutoDelay = dwTickCount + JSDC_PARAM_MOTOR_DELAY; JSDC_cAutoStep = 1; if(JSDC_SingOneFlag) { dwZipCnt = 0; JSDC_SingOneFlag = 0; JSDC_cAutoStep = 0; JSDC_bRunning = 0; } break; } } } // 检测是否踏了脚踏开关 void JSDC_CheckStart(void) { // 停止键 不能在工作,手动,停止过程中 if((JSDC_bRunning == 0) && (START_IN_UP || JSDC_bStart || JSDC_bNext)) { if(GetTotal(JSDC_TOTAL_ADDR) >= JSDC_SET_TOTAL)JSDC_SetAlarmCode(JSDC_TOTAL_ALARM); else if((JSDC_PARAM_SEBIAO_DW_LENGTH > JSDC_SET_ZIPPER_LENGTH) && (JSDC_DC_MODE==2))JSDC_SetAlarmCode(JSDC_SEBIAO_ZIPPER_LENGTH_ALARM); else if(JSDC_KaDai_IN)JSDC_SetAlarmCode(JSDC_KA_DAI_ALARM); else { if(JSDC_bNext) { JSDC_SingOneFlag = 1; JSDC_bNext = 0; } JSDC_bRunning = 1; JSDC_cAutoStep = 1; if(JSDC_cSDStep == 0)JSDC_cSDStep = 1; JSDC_cGouZhenTime = 1; JSDC_cCheckLengthOk = 0; JSDC_cZipperLength[0] = 0; JSDC_cZipperLength[1] = 0; dwZipCnt = 0; JSDC_cAutoDelay = dwTickCount; JSDC_cMotorDelay = dwTickCount; JSDC_cXiaChongDelay = dwTickCount; } JSDC_bStart = 0; } //卡带感应 if(JSDC_KaDai_IN && (dwTickCount >= JSDC_cKaDaiDelay)) { JSDC_SetAlarmCode(JSDC_KA_DAI_ALARM); JSDC_cKaDaiDelay = dwTickCount + 2200; } else { if(GetAlarmCode(JSDC_ALARM_ADDR) == JSDC_KA_DAI_ALARM)SetAlarmCode(JSDC_ALARM_ADDR,0); } if(JSDC_KaDai_IN_UP) { if(JSDC_cChuiQiStep == 0)JSDC_cChuiQiStep = 1; } //停止 JSDC_STOP_IN_FLAG_OLD = JSDC_STOP_IN_FLAG; if(STOP_IN) { if(JSDC_STOP_FILTER < 50) { JSDC_STOP_FILTER++; } else JSDC_STOP_IN_FLAG = 1; } else if(JSDC_STOP_FILTER > 25) { JSDC_STOP_FILTER--; } else JSDC_STOP_IN_FLAG = 0; if(JSDC_bStop) { JSDC_bStop = 0; if(JSDC_bRunning)JSDC_SingOneFlag = 1; } if(((JSDC_STOP_IN_FLAG && !JSDC_STOP_IN_FLAG_OLD))) { JSDC_bStop = 0; if(JSDC_bRunning) { if(JSDC_cXiaChongStep==0) { if(JSDC_cChuiQiStep == 0)JSDC_cChuiQiStep = 1; // if(!JSDC_XiaChong_MOTOR)JSDC_XC_SongZhou = JSDC_SERVER_DISEN; } JSDC_bRunning = 0; JSDC_cAutoStep = 0; JSDC_cMotorStep = 0; JSDC_cSDStep = 0; JSDC_cSDStep = 0; AxisDecStop(X_AXIS); JSDC_cJiaoDaoStep = 0; JSDC_SingOneFlag = 0; } else { JSDC_bRunning = 0; JSDC_cAutoStep = 0; JSDC_cMotorStep = 0; JSDC_cXiaChongStep = 0; JSDC_cLeftFenZhenStep = 0; JSDC_cJiaoDaoStep = 0; JSDC_cSDStep = 0; JSDC_LeftFenZhen_VAVLE = 0; JSDC_SingOneFlag = 0; if((JSDC_cChuiQiStep == 0) &&(JSDC_cXiaChongStep==0))JSDC_cChuiQiStep = 1; AxisDecStop(X_AXIS); SetAlarmCode(JSDC_ALARM_ADDR,JSDC_NO_ALARM); } } if(JSDC_bAlarmStop) { JSDC_bAlarmStop = 0; JSDC_bRunning = 0; JSDC_cAutoStep = 0; JSDC_cMotorStep = 0; JSDC_cLeftFenZhenStep = 0; JSDC_LeftFenZhen_VAVLE = 0; JSDC_SingOneFlag = 0; JSDC_cSDStep = 0; AxisDecStop(X_AXIS); } } void JSDC_ChuiQi(void) { //吹气 if(JSDC_XiaChong_IN_UP) { if(JSDC_cChuiQiStep == 0)JSDC_cChuiQiStep = 1; } switch(JSDC_cChuiQiStep) { case 1: JSDC_cChuiQiStep = 2; if(JSDC_bRunning)JSDC_cChuiQiDelay = dwTickCount+JSDC_PARAM_DELAY_CHUIQI_TIME; break; case 2: if(dwTickCount >= JSDC_cChuiQiDelay) { JSDC_cChuiQiDelay = dwTickCount + JSDC_PARAM_CHUIQI_TIME; JSDC_ChuiQi_VAVLE = 1;// JSDC_cChuiQiStep = 3; } break; case 3: if(dwTickCount >= JSDC_cChuiQiDelay) { JSDC_ChuiQi_VAVLE = 0;// JSDC_cChuiQiStep = 0; } break; } } unsigned char JSDC_ComPareLength(void) { if((JSDC_cZipperLength[0] != 0) && (JSDC_cZipperLength[1] != 0)) { if(JSDC_cZipperLength[0] > JSDC_cZipperLength[1]) { if((JSDC_cZipperLength[0] - JSDC_cZipperLength[1]) > 200) { return 0; } else return 1; } else { if((JSDC_cZipperLength[1] - JSDC_cZipperLength[0]) > 200) { return 0; } else return 1; } } else return 0; } unsigned char JSDC_CheckPos(void) { unsigned long zipper_length; if(JSDC_DC_MODE == JSDC_DC_GZ_MODE) { if(JSDC_GouZhen_IN) return 0; else return 1; } else { zipper_length = JSDC_SET_ZIPPER_ALL_LENGTH-JSDC_PARAM_KONG_WEI_LENGTH+JSDC_PARAM_DAOKOU_LENGTH; if(JSDC_dwEncPos >= zipper_length)return 0; else return 1; } } void JSDC_Motor(void) { static long save_buff,zipper_length_buff; static unsigned long zipper_length; dwRealPos = GetPos(X_AXIS); JSDC_dwEncPos = GetEncodePos(); DISPLAY_DATA1 = dwRealPos - save_buff; DISPLAY_DATA2 = (zipper_length - JSDC_PARAM_LOWSPEED_LENGTH); if(JSDC_DC_MODE == JSDC_DC_GZ_MODE) SetData32bits(24,0); else SetData32bits(24,JSDC_dwEncPos); if(!JSDC_bRunning) { if(JSDC_CheckPos() == 0)AxisEgmStop(X_AXIS); } switch(JSDC_cMotorStep) { case 0: break; case 1: if(JSDC_SZ_OUT == JSDC_SERVER_DISEN) { JSDC_SZ_OUT = JSDC_SERVER_EN; JSDC_cMotorDelay = dwTickCount + 50; //先锁轴 } JSDC_cMotorStep = 2; break; case 2://勾针模式 if(dwTickCount >= JSDC_cMotorDelay) { save_buff = dwRealPos; if(JSDC_cCheckLengthOk) { MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_SET_SPEED,1,5,1); } else { if(JSDC_cCheckLengthOk == 0) { JSDC_cZipperLength[0] = JSDC_cZipperLength[1]; JSDC_cZipperLength[1] = dwRealPos - zipper_length_buff; zipper_length_buff = dwRealPos; if(JSDC_ComPareLength()) { JSDC_cCheckLengthOk = 1; } } if(JSDC_cCheckLengthOk)zipper_length = JSDC_cZipperLength[1]; MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_FIRST_SPEED,1,5,1); } JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME; JSDC_cGouZhenTime = dwTickCount + 300; JSDC_cMotorStep = 3; } break; case 3: if(((dwTickCount >= JSDC_cGouZhenTime)&&(JSDC_PARAM_GZ_RESET_MODE==0)) || (JSDC_cCheckLengthOk == 0))JSDC_GouZhen_VAVLE = 0; if(JSDC_cCheckLengthOk) { if(((dwRealPos - save_buff) >= (zipper_length - JSDC_PARAM_GZ_LENGTH))&&JSDC_PARAM_GZ_RESET_MODE)JSDC_GouZhen_VAVLE = 0; if((dwRealPos - save_buff) >= (zipper_length - JSDC_PARAM_LOWSPEED_LENGTH)) { AxisChangeSpeed(X_AXIS,JSDC_PARAM_LOW_SPEED); JSDC_cMotorStep = 4; } } else { if(JSDC_GouZhen_IN) { JSDC_GouZhen_VAVLE = 0; JSDC_cMotorStep = 5; AxisEgmStop(X_AXIS); } else { if(dwTickCount >= JSDC_cGouZhenTime)JSDC_GouZhen_VAVLE = 0; JSDC_cMotorStep = 4; } } if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM); break; case 4: if(((dwTickCount >= JSDC_cGouZhenTime)&&(JSDC_PARAM_GZ_RESET_MODE==0)) || (JSDC_cCheckLengthOk == 0))JSDC_GouZhen_VAVLE = 0; if(((dwRealPos - save_buff) >= (zipper_length - JSDC_PARAM_GZ_LENGTH))&&JSDC_PARAM_GZ_RESET_MODE &&JSDC_cCheckLengthOk)JSDC_GouZhen_VAVLE = 0; if(JSDC_GouZhen_IN) { JSDC_GouZhen_VAVLE = 0; JSDC_cMotorStep = 5; AxisEgmStop(X_AXIS); } if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM); break; case 5: if(((dwTickCount >= JSDC_cGouZhenTime)&&(JSDC_PARAM_GZ_RESET_MODE==0)) || (JSDC_cCheckLengthOk == 0))JSDC_GouZhen_VAVLE = 0; if(!X_DRV) { JSDC_cMotorStep = 0; JSDC_cMotorDelay = dwTickCount; } else if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM); break; case 20: if(JSDC_SZ_OUT == JSDC_SERVER_DISEN) { JSDC_SZ_OUT = JSDC_SERVER_EN; JSDC_cMotorDelay = dwTickCount + 50; //先锁轴 } JSDC_cMotorStep = 21; break; case 21: if(dwTickCount >= JSDC_cMotorDelay) //电机定寸模式 { if(JSDC_cAlarmStopFlg) { zipper_length = JSDC_SET_ZIPPER_ALL_LENGTH-JSDC_PARAM_KONG_WEI_LENGTH+JSDC_PARAM_DAOKOU_LENGTH; JSDC_cAlarmStopFlg = 0; } else { zipper_length = JSDC_SET_ZIPPER_ALL_LENGTH-JSDC_PARAM_KONG_WEI_LENGTH+JSDC_PARAM_DAOKOU_LENGTH; if((0 - dwRealPos) > zipper_length) zipper_length = JSDC_SET_ZIPPER_ALL_LENGTH-JSDC_PARAM_KONG_WEI_LENGTH+JSDC_PARAM_DAOKOU_LENGTH; else zipper_length = JSDC_SET_ZIPPER_ALL_LENGTH-JSDC_PARAM_KONG_WEI_LENGTH+JSDC_PARAM_DAOKOU_LENGTH - (0 - dwRealPos); } AxisMovePosAccDec(X_AXIS,JSDC_PARAM_SET_SPEED,zipper_length,1,5,1); JSDC_GouZhen_VAVLE = 1; //定位(活动勾针)电磁阀 JSDC_cMotorStep = 22; JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME; } break; case 22: if(!X_DRV) { MV_Set_Command_Pos_CPU(X_AXIS,0); JSDC_cMotorStep = 0; JSDC_cMotorDelay = dwTickCount; } else if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM); break; case 60: if(JSDC_SZ_OUT == JSDC_SERVER_DISEN) { JSDC_SZ_OUT = JSDC_SERVER_EN; JSDC_cMotorDelay = dwTickCount + 50; //先锁轴 } JSDC_cMotorStep = 61; break; case 61: if(dwTickCount >= JSDC_cMotorDelay) { save_buff = JSDC_dwEncPos; zipper_length = JSDC_SET_ZIPPER_ALL_LENGTH-JSDC_PARAM_KONG_WEI_LENGTH+JSDC_PARAM_DAOKOU_LENGTH + JSDC_SaveLength; MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_SET_SPEED,1,5,1); JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME; JSDC_cMotorStep = 62; } break; case 62: if((JSDC_dwEncPos) >= (zipper_length - JSDC_PARAM_LOWSPEED_LENGTH)) { AxisChangeSpeed(X_AXIS,JSDC_PARAM_LOW_SPEED); JSDC_cMotorStep = 63; } else if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM); break; case 63: if((JSDC_dwEncPos) >= zipper_length) { JSDC_cMotorStep = 64; AxisEgmStop(X_AXIS); } else if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM); break; case 64: if(!X_DRV) { JSDC_cMotorStep = 0; JSDC_cMotorDelay = dwTickCount; } else if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM); break; } } //下冲 void JSDC_XiaChong(void) { switch(JSDC_cXiaChongStep) { case 0: return; break; case 1: JSDC_cXiaChongStep = 2; break; case 2: JSDC_XC_ShaChe = JSDC_SC_DISEN; if(JSDC_bRunning)JSDC_cXiaChongDelay = dwTickCount + JSDC_PARAM_DELAY_XC; JSDC_cXiaChongStep = 3; break; case 3: if(dwTickCount >= JSDC_cXiaChongDelay) { JSDC_cLeftFenZhenStep = 1; JSDC_cXiaChongStep = 4; JSDC_XiaChong_MOTOR = 1; //下冲电机 if(!JSDC_bRunning)SetEncodePos(0); JSDC_cXiaChongDelay = dwTickCount + (unsigned long)JSDC_ERRORTIME; //下冲最长时间 if(JSDC_XiaChongMotorMode == 1) { AxisMoveTwoPos(Y_AXIS,JSDC_XiaChongSpeed,2000,JSDC_XiaChongLowSpeed,9999999,0); } } break; case 4: //碰到右大微动,延时停 if(JSDC_XiaChong_IN_UP) { JSDC_cXiaChongDelay = dwTickCount + JSDC_PARAM_XC_DELAY; JSDC_cXiaChongStep = 5; JSDC_LeftFenZhen_VAVLE = 0; //退左分针 JSDC_RightFenZhen_VAVLE = 0; //退左分针 if(JSDC_bRunning) { MXC_GouZhen_VAVLE = 1; MXC_cGouZhenTime = dwTickCount + 300; } } else if(dwTickCount >= JSDC_cXiaChongDelay) //自动停机 { JSDC_cXiaChongStep = 0; JSDC_XiaChong_MOTOR = 0;// //下冲电机 JSDC_SetAlarmCode(JSDC_XC_ALARM); } break; case 5: if(dwTickCount >= JSDC_cXiaChongDelay) { AxisEgmStop(Y_AXIS); JSDC_XiaChong_MOTOR = 0; //延时刹车 if(JSDC_PARAM_SC_MODE) { JSDC_cXiaChongStep = 0; } else { JSDC_cXiaChongStep = 6; } } break; case 6: { JSDC_cXiaChongStep = 7; JSDC_cXiaChongDelay = dwTickCount + JSDC_PARAM_SC_DELAY; } break; case 7: if((dwTickCount >= JSDC_cXiaChongDelay)) { JSDC_cXiaChongStep = 8; JSDC_cXiaChongDelay = dwTickCount+ 150; // JSDC_XC_SongZhou = JSDC_SERVER_DISEN; JSDC_XC_ShaChe = JSDC_SC_EN; } break; case 8: if((dwTickCount >= JSDC_cXiaChongDelay)) { JSDC_cXiaChongStep = 0; if(!JSDC_bRunning)MV_Set_Command_Pos_CPU(X_AXIS,0); // JSDC_XC_SongZhou = JSDC_SERVER_DISEN; JSDC_XC_ShaChe = JSDC_SC_DISEN; } break; case 20: // 点动普通下冲动作 // JSDC_XC_SongZhou = JSDC_SERVER_EN; JSDC_XC_ShaChe = JSDC_SC_DISEN; JSDC_cXiaChongDelay = dwTickCount + 50; JSDC_cXiaChongStep = 21; break; case 21: if((dwTickCount >= JSDC_cXiaChongDelay)) { JSDC_XiaChong_MOTOR = 1; JSDC_cXiaChongDelay = dwTickCount + 50; JSDC_cXiaChongStep = 22; } break; case 22: if((dwTickCount >= JSDC_cXiaChongDelay)) { JSDC_XiaChong_MOTOR = 0; // JSDC_XC_SongZhou = JSDC_SERVER_EN; if(JSDC_XiaChongMotorMode) JSDC_cXiaChongStep = 0; else { JSDC_XC_ShaChe = JSDC_SC_EN; JSDC_cXiaChongDelay = dwTickCount + 150; JSDC_cXiaChongStep = 23; } } break; case 23: if((dwTickCount >= JSDC_cXiaChongDelay)) { //JSDC_XC_SongZhou = JSDC_SERVER_DISEN; JSDC_XC_ShaChe = JSDC_SC_DISEN; JSDC_cXiaChongStep = 0; } break; case 40: // 点动电机下冲动作 //JSDC_XC_SongZhou = JSDC_SERVER_EN; JSDC_cXiaChongDelay = dwTickCount + 50; JSDC_cXiaChongStep = 41; break; case 41: if(!Y_DRV)AxisMovePos(Y_AXIS,20,10); JSDC_cXiaChongStep = 42; break; case 42: if(!Y_DRV) { JSDC_cXiaChongStep = 0; } break; } } //分针 void JSDC_FenZhen(void) { if(!JSDC_PARAM_FZ_SELECT)JSDC_cLeftFenZhenStep = 0; //左分针 switch(JSDC_cLeftFenZhenStep) { case 0: break; case 1: JSDC_cLeftFenZhenStep = 2; break; case 2: if(dwTickCount >= JSDC_cFenZhenLeftDelay) { JSDC_RightFenZhen_VAVLE = 1; JSDC_cFenZhenLeftDelay = JSDC_PARAM_YD_DELAY+dwTickCount; JSDC_cLeftFenZhenStep = 3; } break; case 3: if(dwTickCount >= JSDC_cFenZhenLeftDelay) { JSDC_YD_VAVLE = 1; JSDC_cFenZhenLeftDelay = JSDC_FenZhengErrorTime+dwTickCount; JSDC_cLeftFenZhenStep = 4; } break; case 4: if(JSDC_LeftFenZhen_IN) { JSDC_cLFengTimer = 0; JSDC_cFenZhenLeftDelay = JSDC_PARAM_L_FZ_DELAY+dwTickCount; JSDC_cLeftFenZhenStep = 5; } else if(dwTickCount >= JSDC_cFenZhenLeftDelay) { JSDC_cLFengTimer++; JSDC_YD_VAVLE = 0; JSDC_RightFenZhen_VAVLE = 0; if(JSDC_cLFengTimer >= 3) { JSDC_cLFengTimer = 0; JSDC_SetAlarmCode(JSDC_LFZ_LIMIT_ALARM); } else { JSDC_cLeftFenZhenStep = 1; JSDC_cFenZhenLeftDelay = 250+dwTickCount; } } break; case 5: if(dwTickCount >= JSDC_cFenZhenLeftDelay) { JSDC_cLeftFenZhenStep = 0; } break; } } #endif