#include "global.h" #if JIN_HONG_MACHINE == 1 unsigned long CTXMSS_DOWN_TIME=0,PRV_CTXMSS_DOWN_TIME=0; unsigned long FIRST_HEMO_TIME=0,PRV_FIRST_HEMO_TIME=0; unsigned long HSLiao_OUT_TIME1=0,PRV_HSLiao_OUT_TIME1=0,HSLiao_OUT_TIME2=0,PRV_HSLiao_OUT_TIME2=0; unsigned long TARR_OVER_DELAY=0; unsigned long HSLIAO_OUT_DELAY=0,FIRST_CT_BACK_DELAY=0; unsigned char RUNONCEFLAG=0,RUNONCEFLAG1=0; unsigned long ZLT_TOTAL_TIME=0,PRV_ZLT_TOTAL_TIME=0; unsigned long HSLIAO_CHECK_DELAY; unsigned char SF_ALARM_FLAG; //故障报警 void JH_CTHL_NL_SetAlarmCode(unsigned short alarm_code,unsigned short cStopFlag) { SetAlarmCode(JH_CTHL_NL_ALARM_ADDR,alarm_code); // bAlarmStop = 0; // if(cStopFlag) if(!cWULATOUCnt && !cCHULIANBAOJIN) { bAlarmStop = 1; } else { cWULATOUCnt=0; } } //运行状态 void CTHL_Running_state(void) { user_datas[210] = JH_CTHL_NL_ZhuangLiaoStep; user_datas[211] = JH_CTHL_NL_CL_MotorStep; user_datas[212] = JH_CTHL_NL_TD_MotorStep; user_datas[213] = JH_CTHL_NL_AutoStep; user_datas[214] = CTXMSS_DOWN_TIME; user_datas[215] = FIRST_HEMO_TIME; user_datas[216] = HSLiao_OUT_TIME1; user_datas[217] = HSLiao_OUT_TIME2; user_datas[218] = JH_CTHL_NL_LianLengthAutoCheck; user_datas[219] = JH_CTHL_NL_LianLengthAutoFirst; user_datas[220] = JH_CTHL_NL_LianLengthCheck; user_datas[221] = JH_CTHL_NL_LianLengthCheckReal; memcpy(&user_datas[222],&dwXRealPos,4); memcpy(&user_datas[224],&dwYRealPos,4); //memcpy(&user_datas[226],&CTHL_FKGY_Length,4);//方块感应位置 //memcpy(&user_datas[228],&CTHL_FKGY_STOP_Length,4);//方块停长度 //memcpy(&user_datas[230],&CTHL_CXCD,4);//穿插销长度。CTHL_GLGY_FKDW_Length //memcpy(&user_datas[232],&CTHL_GLGY_FKDW_Length,4); user_datas[234] = GetAlarm(X_AXIS);//;master1.send_count-master1.receive_count;//GetAlarm(X_AXIS); user_datas[235] = GetTarr(X_AXIS); user_datas[236] = servo_x.alarmcode; user_datas[237] = servo_x.IO_TO_COM; } void JH_CTHL_NL_AlarmProtect(void) { } //自动动作 void JH_CTHL_NL_AutoStepAction(void) { if(bRunning && user_datas[100] == 0) { JH_CTHL_NL_Run_DENG_VAVLE=0; JH_CTHL_NL_Stop_DENG_VAVLE=1; JH_CTHL_NL_ERROR_DENG_VAVLE=1; } else if(!bRunning && user_datas[100] == 0) { JH_CTHL_NL_Run_DENG_VAVLE=1; JH_CTHL_NL_Stop_DENG_VAVLE=0; JH_CTHL_NL_ERROR_DENG_VAVLE=1; } else if(user_datas[100] != 0) { JH_CTHL_NL_Run_DENG_VAVLE=1; JH_CTHL_NL_Stop_DENG_VAVLE=1; JH_CTHL_NL_ERROR_DENG_VAVLE=0; } if((GetAlarm(Y_AXIS)==1 || GetAlarm(X_AXIS)==1) && !JH_CTHL_NL_PARAM_BoardSelect &&!SF_ALARM_FLAG) { SF_ALARM_FLAG=1; JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SF_ALR_ALARM,0); } if(bRunning && !bAlarmStop) { switch(JH_CTHL_NL_AutoStep) { case 1: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_XKTD_VAVLE = 1; //Y01 斜口推带电磁阀(前码前后) JH_CTHL_NL_FKGD_VAVLE = 0; //方块固定关 JH_CTHL_NL_CXSX_VAVLE = 0; //插销顶出 JH_CTHL_NL_AutoStep = 2; if(GetServoComState(X_AXIS)) { set_servo_postotarr_limit(X_AXIS,SERVO_PARAM_TRARR_LIMITMAX,20000,20000,SERVO_TARR_CCW); Set_Ctrlmode_trans(X_AXIS,POS_MODE); } if(JH_CTHL_NL_HLJJ_VAVLE)bCL_EN_FLG = 1;//Y11 合链夹具电磁阀(夹子) if(JH_CTHL_NL_ZhuangLiaoStep == 0) { JH_CTHL_NL_ZhuangLiaoStep = 1; JH_CTHL_NL_TryCnt = 0; } } break; case 2: if((!JH_CTHL_NL_XKTD_Origin_IN && JH_CTHL_NL_XKTD_VAVLE)) //斜口推带原位离开 { JH_CTHL_NL_AutoStep = 3; JH_CTHL_NL_AutoDelay = dwTickCount + 180; } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 3://斜口定位 if(dwTickCount >= JH_CTHL_NL_AutoDelay) { if(GetServoComState(X_AXIS)) { if(get_tarr_set(X_AXIS)!=2)//配置失败停机 { SetEn(X_AXIS, MOTOR_DISEN);//设置扭矩做准备 JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SERVO_CONFIG_ALARM,bRunning);//伺服转矩配置失败 } } //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_AutoStep = 4; JH_CTHL_NL_XKDW_VAVLE = 1; //下方块钩针 JH_CTHL_NL_AutoDelay = dwTickCount + 80; } } break; case 4: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { if(!cBanAuTo) { if(JH_CTHL_NL_cZipCnt < 1)JH_CTHL_NL_AutoDelay = dwTickCount +350; else JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_FKJDFZ_DELAY; //斜口定位速度 AxisContinueMoveAcc(X_AXIS,JH_CTHL_NL_PARAM_XKDW_Speed,DIR_P,JH_CTHL_NL_PARAM_XKDW_Speed/2,1000,25,25);//拖带电机 JH_CTHL_NL_bDinweiOK = 0; cDJzzcd=0; JH_CTHL_NL_AutoStep = 5; JH_CTHL_NL_XSavePosBuff = dwXRealPos; } else { if(JH_CTHL_NL_cZipCnt < 1) JH_CTHL_NL_AutoDelay = dwTickCount +350; else JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_FKJDFZ_DELAY; JH_CTHL_NL_AutoStep = 5; JH_CTHL_NL_XSavePosBuff = dwXRealPos; } } } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 5: if(dwTickCount >= JH_CTHL_NL_AutoDelay)JH_CTHL_NL_FKJD_VAVLE = 1; //方块夹带气缸输出 if(dwXRealPos >= (JH_CTHL_NL_XSavePosBuff + JH_CTHL_NL_PARAM_QMDW_LENGTH))//延时输出前码定位 { JH_CTHL_NL_XKDW_VAVLE = 1; //Y00 斜口定位电磁阀(方块勾针) } if((dwXRealPos >= JH_CTHL_NL_PARAM_WLCDSHEZHI_LENTH) && JH_CTHL_NL_PARAM_WLCDSHEZHI_LENTH) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WLZDTJ_ALARM,bRunning); //无拉链自动停机 } if(dwXRealPos > JH_CTHL_NL_LianLengthAutoCheck+2000 && JH_CTHL_NL_LianLengthAutoCheck && JH_CTHL_NL_cZipCnt>0) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WLZDTJ_ALARM,bRunning); //无拉链自动停机 } if(JH_CTHL_NL_XKSC_Limit_IN) //方块上止到位 { JH_CTHL_NL_GDXM_VAVLE = 1; //固定斜码 JH_CTHL_NL_CXHDW_VAVLE = 0; //插销后定位(插销穿入)关闭 Set_Ctrlmode_trans(X_AXIS,TARR_MODE);//设置为扭矩模式。 if(!JH_CTHL_PARAM_DCGO_LENGTH) { AxisEgmStop(X_AXIS); } else { if(!cDJzzcd) { AxisMovePosAccDec(X_AXIS,1000,JH_CTHL_PARAM_DCGO_LENGTH,800,600,10,20,0); cDJzzcd=1; } } JH_CTHL_NL_bDinweiOK = 1; //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_FKJD_VAVLE = 0; //方块夹带气缸关 JH_CTHL_NL_AutoStep = 6; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; JH_CTHL_NL_bLTCHECK_Delay = dwTickCount +0; JH_CTHL_NL_XKTD_VAVLE = 0; //斜口推带气缸关闭 //电机穿入可以启动 bCL_OK_FLG = 1; //不用穿合链的话认为已经完成 if(bCL_EN_FLG) { bCL_OK_FLG = 0; JH_CTHL_NL_HLJJ_VAVLE = 1; //Y20 合链夹具电磁阀输出后,电机穿入 JH_CTHL_NL_CL_MotorStep = 1; JH_CTHL_NL_CL_MotorDelay = dwTickCount + JH_CTHL_NL_PARAM_HLJJ_CL_DELAY; } } } else if(dwXRealPos >= (JH_CTHL_NL_XSavePosBuff + 3000)) //750 { AxisEgmStop(X_AXIS); JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_FKCXDW_ALARM,bRunning); //方块插销定位异常警告 } break; case 6: if(JH_CTHL_NL_XKTD_Origin_IN) //斜口推带回到原位 { if((JH_CTHL_NL_PARAM_FD_EN == 0) && ((JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 1) || (JH_CTHL_NL_PARAM_QianMaSelect == 1))) //尼龙的顶斜口不能输出) JH_CTHL_NL_FengDai_VAVLE = 1; //分带输出 if(bZhuangLiaoOkFlg && (JH_CTHL_NL_ZhuangLiaoStep == 0)&&dwTickCount >= JH_CTHL_NL_bLTCHECK_Delay) { //单一标志//次数到停止 if(bSingOneFlg&&bSingOneCnt==0) { JH_CTHL_NL_AutoStep = 0; bRunning = 0; } else { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { if(!JH_CTHL_NL_LTou_Check) { if(!JH_CTHL_NL_CTXMSS_VAVLE)JH_CTHL_NL_HeMoStep = 1; //下模的上升和下降电磁阀要配合 JH_CTHL_NL_AutoStep = 7; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; JH_CTHL_NL_CXSX_VAVLE = 0; //插销上下 //单一标准有效,次数减去1 if(bSingOneFlg&&bSingOneCnt>0)bSingOneCnt--; } else { cWULATOUCnt=1; JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_ZLT_ALARM,bRunning); // 没有拉头 } } } } } else if(dwTickCount >= JH_CTHL_NL_AutoDelay && !JH_CTHL_NL_XKTD_VAVLE &&!cBanAuTo) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_XKTD_Origin_ALARM,bRunning); //斜口推带回到异常 } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 7: if(JH_CTHL_NL_CTM_Limit_IN && JH_CTHL_NL_XKTD_Origin_IN) { PRV_ZLT_TOTAL_TIME=dwTickCount-ZLT_TOTAL_TIME; JH_CTHL_NL_AutoStep = 8; if(GetServoComState(X_AXIS)) { Set_Ctrlmode_trans(X_AXIS,POS_MODE); set_servo_postotarr_limit(X_AXIS,SERVO_PARAM_TRARR_LIMITMIN,JH_CTHL_TRARR_FK_SPEED,JH_CTHL_TRARR_FK_SPEED,SERVO_TARR_CCW); } JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_DXK_DELAY; if((JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 1) || (JH_CTHL_NL_PARAM_QianMaSelect == 1)) //尼龙的顶斜口不能输出 JH_CTHL_NL_XKTD_VAVLE = 1; //斜口推带气缸输出 } else if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Limit_ALARM,bRunning); //穿头下模上升异常 } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 8: if(dwTickCount >= JH_CTHL_NL_AutoDelay) //延时顶斜口 { if((JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 0) && (JH_CTHL_NL_PARAM_QianMaSelect == 0)) JH_CTHL_NL_DXK_VAVLE = 1; //延时顶斜口 JH_CTHL_NL_AutoStep = 9; if(JH_CTHL_NL_cZipCnt==0) JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_DXK_XKDW_Off_DELAY+50; else JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_DXK_XKDW_Off_DELAY; } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 9: if((dwTickCount >= JH_CTHL_NL_AutoDelay)) //顶斜口延时退斜口上止定位 { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_XKDW_VAVLE = 0; //方块钩针 JH_CTHL_NL_AutoStep = 10; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_XK_CR_DELAY; } } break; case 10: if((dwTickCount >= JH_CTHL_NL_AutoDelay) && !X_DRV && (bCL_OK_FLG) ) { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { if(GetServoComState(X_AXIS)) { if(get_tarr_set(X_AXIS)!=2)//配置失败停机 { SetEn(X_AXIS, MOTOR_DISEN);//设置扭矩做准备 JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SERVO_CONFIG_ALARM,bRunning);//伺服转矩配置失败 } } if(!cBanAuTo) { JH_CTHL_NL_TD_MotorStep = 10; //启动拖带穿入 JH_CTHL_NL_AutoStep = 11; JH_CTHL_NL_bXCBackOK = 0; JH_CTHL_NL_AutoDelay = dwTickCount + 60; } else { JH_CTHL_NL_AutoStep = 801; JH_CTHL_NL_AutoDelay = dwTickCount + 1000; } } } break; case 801: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { bRunning=0; cBanAuTo=0; cCHULIANBAOJIN=1; JH_CTHL_NL_GDXM_VAVLE = 0; JH_CTHL_NL_XKTD_VAVLE = 0; JH_CTHL_NL_DXK_VAVLE=0; JH_CTHL_NL_AutoStep = 0; } break; case 11: if((JH_CTHL_NL_TD_MotorStep == 0) && bCL_OK_FLG) //穿入定位完成 { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_XKDW_VAVLE = 0; //方块钩针 JH_CTHL_NL_XKTD_VAVLE = 1; //斜口推带气缸输出 JH_CTHL_NL_CXSCDW_VAVLE = 1; //Y21 插销上止定位电磁阀 if((JH_CTHL_NL_CL_MotorStep == 0)) { if(cCXCONE)JH_CTHL_NL_FengDai_VAVLE=0; JH_CTHL_NL_CXQJD_VAVLE = 1; //Y轴启动插销 JH_CTHL_NL_CL_MotorStep = 20; //插销定位 } JH_CTHL_NL_AutoStep = 12; } } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 12: if(!JH_CTHL_NL_XKTD_Origin_IN)//) //插销前夹带回到原位 { JH_CTHL_NL_AutoStep = 14; JH_CTHL_NL_AutoDelay = dwTickCount + 50; } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 14: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { if(GetServoComState(X_AXIS)) { Set_Ctrlmode_trans(X_AXIS,POS_MODE); set_servo_postotarr_limit(X_AXIS,SERVO_PARAM_TRARR_LIMITMAX,20000,20000,SERVO_TARR_CCW); } JH_CTHL_NL_XKDW_VAVLE = 1; //方块勾针输出 JH_CTHL_NL_AutoStep = 401; JH_CTHL_NL_AutoDelay = dwTickCount+20 ; } } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 401: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_FKGD_VAVLE = 1; //方块固定 //AxisMovePosAccDec(X_AXIS,1200,-20,1200,1200,20,20,0); JH_CTHL_NL_AutoStep = 15; } } break; case 15: if(!JH_CTHL_NL_bXCBackOK && (JH_CTHL_NL_CL_MotorStep == 0) && (JH_CTHL_NL_SF_Origin_IN )) { JH_CTHL_NL_CXQJD_VAVLE = 1; JH_CTHL_NL_CL_MotorStep = 20; //插销定位 } if((JH_CTHL_NL_CL_MotorStep == 0) && JH_CTHL_NL_bXCBackOK) //插销定位完成 { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_BB_VAVLE=1; JH_CTHL_NL_AutoStep = 16; JH_CTHL_NL_CXDWZ_VAVLE = 1; //插销定位针(到位)电磁阀 JH_CTHL_NL_AutoDelay = dwTickCount + 35;//50; //延时插销下移 JH_CTHL_NL_CXHJD_VAVLE = 1; //Y14 插销后夹带输出 } } break; case 16: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_AutoStep = 17; JH_CTHL_NL_CXHJD_VAVLE = 1; //Y14 插销后夹带输出 if((JH_CTHL_NL_CXSC_Limit_IN) && (JH_CTHL_NL_PARAM_CXSX_En == 0))JH_CTHL_NL_CXSX_VAVLE = 1; //Y06 插销下移电磁阀 JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; //插销下移异常时间 } } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 17: JH_CTHL_NL_CXQJD_VAVLE = 0; //插销前夹带电磁阀 //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_CXSCDW_VAVLE = 0; //Y21 插销上止定位关 JH_CTHL_NL_AutoStep = 18; if(JH_CTHL_NL_LENTH>0 ) { if(!JH_CTHL_NL_bReStart) JH_CTHL_NL_LENCountBuff = JH_CTHL_NL_PARAM_TDFZ_LENTH; else JH_CTHL_NL_LENCountBuff = JH_CTHL_NL_PARAM_TDFZ_LENTH/3; } else { if(!JH_CTHL_NL_bReStart) JH_CTHL_NL_LENCountBuff = JH_CTHL_NL_PARAM_TDFZ_LENTH + 300; else JH_CTHL_NL_LENCountBuff = JH_CTHL_NL_PARAM_TDFZ_LENTH/3+ 300; } AxisMovePosAccDec(X_AXIS,3000,-JH_CTHL_NL_LENCountBuff,800,600,10,20,0); JH_CTHL_NL_bReStart = 0; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_CX_DELAY;//JH_CTHL_NL_PARAM_CXCR_DELAY; cXcxcrCnt = 0; } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 18: if(JH_CTHL_NL_CXSX_VAVLE) //Y06 插销下移电磁阀) { if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_CXSX_VAVLE = 0; //Y06 插销下移电磁阀 JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_CXCR_DELAY; } } else { if(dwTickCount >= JH_CTHL_NL_AutoDelay) { if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_AutoStep = 19; JH_CTHL_NL_CXHDW_VAVLE = 1; //插销后定位(插销穿入) if(cXcxcrCnt>=2)JH_CTHL_NL_AutoDelay = dwTickCount + 1000; //插销穿入到位异常时间 else JH_CTHL_NL_AutoDelay = dwTickCount + 500; //插销穿入到位异常时间 JH_CTHL_NL_CL_MotorStep = 50; //合链电机回原点 } } } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 19: if(JH_CTHL_NL_CX_Limit_IN || (!JH_CTHL_NL_CXDWZ_VAVLE && JH_CTHL_NL_bTiaoShiMode)) { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { bZhuangLiaoOkFlg = 0; JH_CTHL_NL_AutoStep = 20; JH_CTHL_NL_BB_VAVLE=0; cXcxcrCnt=0; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_First_CL_DELAY/2;//延时一次穿入 } JH_CTHL_NL_CXSX_VAVLE = 0; //Y06 插销下移电磁阀 JH_CTHL_NL_CXDWZ_VAVLE = 0; //插销定位针(到位)电磁阀 } else if((dwTickCount >= JH_CTHL_NL_AutoDelay) && JH_CTHL_NL_CXDWZ_VAVLE) { cXcxcrCnt++; if(cXcxcrCnt >= 3) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CX_Limit_ALARM ,bRunning);//插销穿入到位异常 } else { JH_CTHL_NL_CXHJD_VAVLE=0; if(cXcxcrCnt== 1) JH_CTHL_NL_AutoStep = 190; else JH_CTHL_NL_AutoStep = 195; JH_CTHL_NL_AutoDelay = dwTickCount + 80; } } break; //第二次 case 190: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_AutoStep = 191; JH_CTHL_NL_CXHDW_VAVLE = 0; //插销后定位(插销穿入) JH_CTHL_NL_AutoDelay = dwTickCount + 80; } break; case 191: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_AutoStep = 18; JH_CTHL_NL_CXHJD_VAVLE=1; JH_CTHL_NL_AutoDelay = dwTickCount + 80; } break; //第三次 case 195: JH_CTHL_NL_CXQJD_VAVLE = 1; //插销前夹带 JH_CTHL_NL_SongDai_VAVLE = 1; //松带 if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_AutoStep = 196; JH_CTHL_NL_CXHDW_VAVLE = 0; //插销后定位(插销穿入) JH_CTHL_NL_AutoDelay = dwTickCount + 500; // JH_CTHL_NL_FKGD_VAVLE = 0; AxisMovePosAccDec(Y_AXIS,1200,40,1200,500,6,6,20); AxisMovePosAccDec(X_AXIS,6000,-100,800,600,6,8,0); } break; case 196: if(!Y_DRV) { JH_CTHL_NL_CXQJD_VAVLE = 0; //插销前夹带 JH_CTHL_NL_SongDai_VAVLE = 0; //松带 } if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_FKGD_VAVLE = 1; JH_CTHL_NL_CXHJD_VAVLE=1; if(!Y_DRV) { JH_CTHL_NL_CXQJD_VAVLE = 0; //插销前夹带 JH_CTHL_NL_SongDai_VAVLE = 0; //松带 JH_CTHL_NL_AutoStep = 18; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_First_CL_DELAY/2;//延时一次穿入 } } break; case 701: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_CXHJD_VAVLE=0; JH_CTHL_NL_AutoDelay = dwTickCount +30; JH_CTHL_NL_AutoStep = 702; } } break; case 702: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { JH_CTHL_NL_CXHJD_VAVLE=1; JH_CTHL_NL_AutoDelay = dwTickCount +30; JH_CTHL_NL_AutoStep = 20; } } break; case 20: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_FKGD_VAVLE=0; JH_CTHL_NL_AutoStep = 21; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_First_CL_Timer/2; //一次穿入时间 } break; case 21: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_AutoStep = 22; JH_CTHL_NL_First_CT_VAVLE = 1; //一次穿入电磁阀输出 JH_CTHL_NL_CXHJD_VAVLE = 1; //Y14 插销后夹带打开 JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } break; case 22: if(!JH_CTHL_NL_First_CT_Origin_IN) //原点离开后才开始时间 { JH_CTHL_NL_AutoStep = 23; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_First_CL_Timer/2; //一次穿入时间 } else if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_YCCRYWYC_ALARM,bRunning); //一次穿入原位异常 } break; case 23: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { if(JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 0) { JH_CTHL_NL_LENCountBuff = JH_CTHL_NL_LENCountBuff * 1/5; AxisMovePosAccDec(X_AXIS,1800,JH_CTHL_NL_LENCountBuff,800,800,6,6,0); } JH_CTHL_NL_FKJD_VAVLE = 0; //方块夹带气缸输出 JH_CTHL_NL_AutoStep = 24; JH_CTHL_NL_MGuo_VAVLE = 0; //码勾退 JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_PARAM_MGOff_XiaMo_DELAY; } } break; case 24: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_AutoStep = 25; JH_CTHL_NL_HeMoStep = 10; //下模的上升和下降电磁阀要配合 ZLT_TOTAL_TIME=dwTickCount; JH_CTHL_NL_AutoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; JH_CTHL_NL_XKTD_VAVLE = 1; //斜口推带气缸输出 JH_CTHL_NL_FKGD_VAVLE = 0; //方块固定关 JH_CTHL_NL_CXHJD_VAVLE = 0; //Y14 插销后夹带打开 } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; break; case 25: if(!JH_CTHL_NL_CTM_Limit_IN) { JH_CTHL_NL_YaiDai_VAVLE=0; JH_CTHL_NL_AutoStep = 26; JH_CTHL_NL_AutoDelay = dwTickCount + 3; //一次穿入延时返回 } else if(dwTickCount >= JH_CTHL_NL_AutoDelay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Limit_ALARM,bRunning);//穿头下模下降异常 } break; case 26: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { if(GetServoComState(X_AXIS)) { if(get_tarr_set(X_AXIS)!=2)//配置失败停机 { SetEn(X_AXIS, MOTOR_DISEN);//设置扭矩做准备 JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SERVO_CONFIG_ALARM,bRunning);//伺服转矩配置失败 } } JH_CTHL_NL_AutoStep = 27; JH_CTHL_NL_AutoDelay = dwTickCount + 0; //退下出错警告 JH_CTHL_NL_AutoDelay1 = dwTickCount + 65; //JH_CTHL_NL_AutoStep1 = 1; } break; case 27: if(dwTickCount >= JH_CTHL_NL_AutoDelay) { //调试模式 if((!JH_CTHL_NL_bTiaoShiMode) || JH_CTHL_NL_START_IN_UP) { if(!cCXCONE) { JH_CTHL_NL_AutoStep = 4; bCL_EN_FLG = 1; // cXcxcrCnt=0; AddToTal(JH_CTHL_NL_TOTAL_ADDR); AddToTal(JH_CTHL_NL_WORK_TOTAL_ADDR); CalProSP(JH_CTHL_NL_SPEED_ADDR); if(JH_CTHL_NL_cZipCnt<3) JH_CTHL_NL_cZipCnt++; } else { bRunning=0; cCXCONE=0; JH_CTHL_NL_AutoStep = 0; } } } break; } JH_CTHL_NL_RunStepSave = JH_CTHL_NL_AutoStep; } //退下模后启动送拉头 switch(JH_CTHL_NL_AutoStep1) { case 1: if(cStopMode==1) { cStopMode=2; bStop=1; } if(JH_CTHL_NL_First_CT_VAVLE) { if(dwTickCount >= JH_CTHL_NL_AutoDelay1) { JH_CTHL_NL_First_CT_VAVLE = 0; //一次穿入电磁阀关 FIRST_HEMO_TIME=dwTickCount; JH_CTHL_NL_AutoDelay1 = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } } else { if(JH_CTHL_NL_CTM_Origin_IN && JH_CTHL_NL_First_CT_Origin_IN) { FIRST_HEMO_TIME=dwTickCount-FIRST_HEMO_TIME; JH_CTHL_NL_ZhuangLiaoStep = 1; JH_CTHL_NL_TryCnt = 0; JH_CTHL_NL_AutoStep1 = 0; JH_CTHL_NL_MGuo_VAVLE = 0; JH_CTHL_NL_JLTou_VAVLE = 0; if(!bRunning) //在调机状态下先判断有没有料 { JH_CTHL_NL_MGuo_VAVLE = 1; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 100; bZhuangLiaoOkFlg = 0; } } else if(dwTickCount >= JH_CTHL_NL_AutoDelay1) { //穿头模和一次穿入回位异常 if(!JH_CTHL_NL_CTM_Origin_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Origin_ALARM,bRunning); else if(!JH_CTHL_NL_First_CT_Origin_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_First_CT_Origin_ALARM,bRunning); } } break; } } void JH_CTHL_NL_CheckStart(void) { if(cWULATOUCnt) // 无拉头警告后按 { if(JH_CTHL_NL_START_IN_UP) { if(!bRunning) { if(JH_CTHL_NL_SafeDoor_IN) { bRunning=1; JH_CTHL_NL_TryCnt=0; cWULATOUCnt=0; JH_CTHL_NL_ZhuangLiaoStep = 1; JH_CTHL_NL_AutoStep=6; bTuiLaTouOkFlg = 1; bZhuangLiaoOkFlg= 0; JH_CTHL_NL_MGuo_VAVLE = 1; //判断是否已经有料 JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 150; } else { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SafeDoor_ALARM,0); // 安全门关上才能启动 } } } } //启动 自动启动 单一自动 if((JH_CTHL_NL_START_IN_UP || bStart || JH_CTHL_NL_bOnceStart) && !cWULATOUCnt) { //单一启动 if(JH_CTHL_NL_bOnceStart) { JH_CTHL_NL_bOnceStart=0; bSingOneFlg=1;//一次标志 bSingOneCnt=1;//走完一条 } else { bSingOneFlg=0; bSingOneCnt=0; } if(cCHULIANBAOJIN) //无链停机启动 { cCHULIANBAOJIN=0; bRunning=1; // dwXRealPos=0; JH_CTHL_NL_TD_MotorStep=9; if(GetAlarm(X_AXIS)==1 || GetAlarm(Y_AXIS)==1 ) { SetEn(X_AXIS, MOTOR_DISEN); SetClr(Y_AXIS, MOTOR_NOALARM); SetClr(X_AXIS, MOTOR_NOALARM); JH_CTHL_NL_bSFBBAOJIN_Delay= dwTickCount + 200; SetAlarmCode(JH_CTHL_NL_ALARM_ADDR,JH_CTHL_NL_SF_ALR_ALARM); } JH_CTHL_NL_AutoStep = 11; JH_CTHL_NL_cZipCnt=0; JH_CTHL_NL_TD_MotorDelay = dwTickCount + 200; JH_CTHL_NL_AutoDelay = dwTickCount + 150; if(GetAlarmCode(JH_CTHL_NL_ALARM_ADDR) != 0) SetAlarmCode(JH_CTHL_NL_ALARM_ADDR,0); } if(!bRunning) { if(JH_CTHL_NL_SafeDoor_IN) { JH_CTHL_NL_CXDW_Stop = 0; cStopMode=0; bRunning = 1; cCXCONE=0; cBanAuTo=0; cWULATOUCnt=0; cCHULIANBAOJIN=0; JH_CTHL_NL_CL_MotorStep = 40;//Y轴回零 bZhuangLiaoOkFlg= 0; if(JH_CTHL_NL_PARAM_SongDaiEn) JH_CTHL_NL_SongDai_Step=1; JH_CTHL_NL_MGuo_VAVLE = 1; //判断是否已经有料 JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 180; JH_CTHL_NL_LianLengthCheck = 0; JH_CTHL_NL_LianLengthAutoCheck = 0; JH_CTHL_NL_cZipCnt = 0; bTuiLaTouOkFlg = 1; bCL_EN_FLG = 0; cStopInCnt = 0; JH_CTHL_NL_bReStart = 0; PRV_CTXMSS_DOWN_TIME=0; //装料启动一次,保证下模已在原位(下面) if((JH_CTHL_NL_ZhuangLiaoStep == 0) && !JH_CTHL_NL_CTXMSS_VAVLE && JH_CTHL_NL_CTM_Origin_IN) { JH_CTHL_NL_ZhuangLiaoStep = 1; JH_CTHL_NL_TryCnt = 0; } //已经定位好,并且保持在原位 if(JH_CTHL_NL_bDinweiOK && JH_CTHL_NL_XKSC_Limit_IN && JH_CTHL_NL_XKDW_VAVLE && GetEn(X_AXIS) && (JH_CTHL_NL_RunStepSave != 19)) { SetPos(X_AXIS, 0); JH_CTHL_NL_GDXM_VAVLE = 1; JH_CTHL_NL_AutoStep = 5; JH_CTHL_NL_XSavePosBuff = 0; } //穿插销不到位停止 else if(((JH_CTHL_NL_RunStepSave == 19) || (JH_CTHL_NL_RunStepSave == 190) || (JH_CTHL_NL_RunStepSave == 191)) && JH_CTHL_NL_CXHJD_VAVLE && JH_CTHL_NL_CXHDW_VAVLE && JH_CTHL_NL_CTXMSS_VAVLE && JH_CTHL_NL_CXDWZ_VAVLE) { if(JH_CTHL_NL_CX_Limit_IN) { JH_CTHL_NL_AutoStep = 19; } else { JH_CTHL_NL_AutoStep = 16; JH_CTHL_NL_bReStart = 1; JH_CTHL_NL_AutoDelay = dwTickCount + 100; JH_CTHL_NL_CXHJD_VAVLE = 0; JH_CTHL_NL_CXHDW_VAVLE = 0; } } else { JH_CTHL_NL_AutoStep = 1; JH_CTHL_NL_AutoDelay = dwTickCount + 500; } JH_CTHL_NL_cZipCnt = 0; SetEn(X_AXIS, MOTOR_EN); SetEn(Y_AXIS, MOTOR_EN); if(GetEn(X_AXIS)== MOTOR_DISEN) { JH_CTHL_NL_AutoDelay = dwTickCount + 500; } SetAlarmCode(JH_CTHL_NL_ALARM_ADDR,0); SF_ALARM_FLAG=0; } else { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SafeDoor_ALARM,0); // 安全门关上才能启动 } } bStart = 0; } if(bStop) { bStop=0; bSingOneFlg=1; bSingOneCnt=0; } //停止 if(JH_CTHL_NL_STOP_IN_UP) { if(cStopMode < 2) cStopMode++; if(bRunning) { JH_CTHL_NL_CXDW_Stop = 0; cStopMode=0; cCXCONE=0; cBanAuTo=0; cXcxcrCnt=0; cWULATOUCnt=0; cCHULIANBAOJIN=0; Set_Ctrlmode_trans(X_AXIS,POS_MODE); if(JH_CTHL_NL_XKSC_Limit_IN) AxisEgmStop(X_AXIS); else AxisDecStop(X_AXIS); AxisEgmStop(Y_AXIS); JH_CTHL_NL_AutoStep = 0; if(GetAlarm(X_AXIS)==1 || GetAlarm(Y_AXIS)==1 ) { SetClr(Y_AXIS, MOTOR_NOALARM); SetClr(X_AXIS, MOTOR_NOALARM); JH_CTHL_NL_bSFBBAOJIN_Delay= dwTickCount + 200; } JH_CTHL_NL_CL_MotorStep =0; JH_CTHL_NL_SongDai_Step=0; JH_CTHL_NL_HL_VAVLE = 0; JH_CTHL_NL_HLJJ_VAVLE = 0; JH_CTHL_NL_bCLFirst_Step=0; JH_CTHL_NL_FengDai_VAVLE = 0; if(!JH_CTHL_NL_bDinweiOK) JH_CTHL_NL_XKDW_VAVLE =0; SetAlarmCode(JH_CTHL_NL_ALARM_ADDR,0); bRunning=0; } else if(!bRunning) { bRunning=0; cXcxcrCnt=0; cStopMode=0; cCXCONE=0; cBanAuTo=0; cWULATOUCnt=0; cCHULIANBAOJIN=0; Set_Ctrlmode_trans(X_AXIS,POS_MODE); AxisEgmStop(X_AXIS); AxisEgmStop(Y_AXIS); SetEn(X_AXIS, MOTOR_DISEN); SetEn(Y_AXIS, MOTOR_DISEN); cStopMode=0; JH_CTHL_NL_YaiDai_VAVLE=0; JH_CTHL_NL_bDinweiOK = 0; if(JH_CTHL_NL_PARAM_BoardSelect == 1) { if(JH_CTHL_NL_SF_ALR_IN || JH_CTHL_NL_Y_SF_ALR_IN) { JH_CTHL_NL_ALARMCLR_VAVLE=1; JH_CTHL_NL_bSFBBAOJIN_Delay= dwTickCount + 200; } } else { if(GetAlarm(X_AXIS)==1 || GetAlarm(Y_AXIS)==1 ) { SetClr(Y_AXIS, MOTOR_NOALARM); SetClr(X_AXIS, MOTOR_NOALARM); JH_CTHL_NL_bSFBBAOJIN_Delay= dwTickCount + 200; } } JH_CTHL_NL_TLiao_VAVLE=0; if(!JH_CTHL_NL_HSLiao_VAVLE || !JH_CTHL_NL_MGuo_VAVLE) JH_CTHL_NL_JLTou_VAVLE =0; JH_CTHL_NL_HSLiao_VAVLE =0; JH_CTHL_NL_XKTD_VAVLE =0; JH_CTHL_NL_XKDW_VAVLE =0; JH_CTHL_NL_DXK_VAVLE =0; JH_CTHL_NL_GDXM_VAVLE = 0; JH_CTHL_NL_CXSX_VAVLE =0; if(GetAlarm(X_AXIS)==1 || GetAlarm(Y_AXIS)==1 ) { SetClr(Y_AXIS, MOTOR_NOALARM); SetClr(X_AXIS, MOTOR_NOALARM); JH_CTHL_NL_bSFBBAOJIN_Delay= dwTickCount + 200; } JH_CTHL_NL_First_CT_VAVLE =0; JH_CTHL_NL_FKGD_VAVLE =0; JH_CTHL_NL_CXQJD_VAVLE =0; JH_CTHL_NL_CXDWZ_VAVLE =0; JH_CTHL_NL_CXHJD_VAVLE =0; JH_CTHL_NL_CXHDW_VAVLE =0; JH_CTHL_NL_FKJD_VAVLE =0; JH_CTHL_NL_HLJJ_VAVLE =0; JH_CTHL_NL_HL_VAVLE = 0; JH_CTHL_NL_BB_VAVLE=0; //JH_CTHL_NL_CXHT_VAVLE = 0; JH_CTHL_NL_CXSCDW_VAVLE =0; JH_CTHL_NL_SongDai_VAVLE=0; if((JH_CTHL_NL_CTXMSS_VAVLE) || (JH_CTHL_NL_CTM_Origin_IN && !JH_CTHL_NL_CTXMSS_VAVLE)) JH_CTHL_NL_MGuo_VAVLE =0; if(JH_CTHL_NL_CTXMSS_VAVLE || !JH_CTHL_NL_CTM_Origin_IN) { JH_CTHL_NL_HeMoStep = 10; } JH_CTHL_NL_FengDai_VAVLE = 0; JH_CTHL_NL_CTXMSS_VAVLE =0; JH_CTHL_NL_AutoStep = 0; JH_CTHL_NL_ZhuangLiaoStep=0; JH_CTHL_NL_TLiaoStep=0; JH_CTHL_NL_TD_MotorStep=0; JH_CTHL_NL_JiaLianStep =0; // JH_CTHL_NL_ZhenDongStep =0; JH_CTHL_NL_SongLiaoStep =0; JH_CTHL_NL_CL_MotorStep =0; JH_CTHL_NL_AutoStep1 =0; JH_CTHL_NL_bFKCXTDDW_Step=0; JH_CTHL_NL_bCXCR_Step=0; JH_CTHL_NL_bCLFirst_Step=0; JH_CTHL_NL_RunStepSave = 0; JH_CTHL_NL_SongDai_Step=0; SetAlarmCode(JH_CTHL_NL_ALARM_ADDR,0); SetPos(X_AXIS, 0); JH_CTHL_NL_TLiaoStep = 0; JH_CTHL_NL_AutoStep = 0; JH_CTHL_NL_CXDW_Stop = 0; } bStop=0; } if(bAlarmStop) { bRunning = 0; bAlarmStop=0; cStopMode=0; cXcxcrCnt=0; AxisDecStop(X_AXIS); AxisEgmStop(Y_AXIS); Set_Ctrlmode_trans(X_AXIS,POS_MODE); if(JH_CTHL_NL_CXSC_Limit_IN) { AxisEgmStop(X_AXIS); } JH_CTHL_NL_AutoStep = 0; JH_CTHL_NL_CL_MotorStep =0; JH_CTHL_NL_bCLFirst_Step=0; JH_CTHL_NL_SongLiaoStep =0; JH_CTHL_NL_ZhuangLiaoStep=0; JH_CTHL_NL_SongDai_Step=0; } } //拖带电机控制动作 X轴 void JH_CTHL_NL_TD_Motor(void) // { #if 1 if(X_DRV) { if(dwXRealPos >= JH_CTHL_NL_PARAM_FDOff_Pos) { JH_CTHL_NL_FengDai_VAVLE = 0; } } switch(JH_CTHL_NL_TD_MotorStep) { //1步开始,纯定位, 没有穿入 case 1: JH_CTHL_NL_TDMotorStepSave = JH_CTHL_NL_TD_MotorStep; if(dwTickCount >= JH_CTHL_NL_TD_MotorDelay) //给锁轴时间 { JH_CTHL_NL_bTest = 0; bCheckEN_FLG = 1; CheckInX02PosBuff= 0; JH_CTHL_NL_TD_MotorStep = 2; SetPos(X_AXIS, 0); //启动位置设为0点 if(JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 0) //尼龙 AxisContinueMoveAcc(X_AXIS,JH_CTHL_NL_PARAM_TD_RunSpeed*2/3,DIR_P,800,600,100,15); else AxisContinueMoveAcc(X_AXIS,JH_CTHL_NL_PARAM_TD_RunSpeed*2/3,DIR_P,800,600,100,15); } break; case 2://检测到过链 JH_CTHL_NL_TDMotorStepSave = JH_CTHL_NL_TD_MotorStep; if(dwXRealPos > JH_CTHL_NL_PARAM_TuiDXM_Lenght)//200) //穿入2CM后退 { JH_CTHL_NL_DXK_VAVLE = 0; //顶斜口气缸关 JH_CTHL_NL_GDXM_VAVLE = 0; if((JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 1) || (JH_CTHL_NL_PARAM_QianMaSelect == 1))//尼龙 JH_CTHL_NL_XKTD_VAVLE = 0; //斜口推带气缸输出 } if((dwXRealPos >= JH_CTHL_NL_PARAM_WLCDSHEZHI_LENTH) && JH_CTHL_NL_PARAM_WLCDSHEZHI_LENTH) { cCHULIANBAOJIN=1; AxisEgmStop(X_AXIS); JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WLZDTJ_ALARM,bRunning); //无拉链自动停机 } if((dwXRealPos > (JH_CTHL_NL_LianLengthAutoCheck+2000)) && JH_CTHL_NL_LianLengthAutoCheck && JH_CTHL_NL_cZipCnt>1) { cCHULIANBAOJIN=1; AxisEgmStop(X_AXIS); JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WLZDTJ_ALARM,bRunning); //无拉链自动停机 } if(JH_CTHL_NL_FK_Check) { // user_datas[122] = dwXRealPos; JH_CTHL_NL_DXK_VAVLE = 0; //顶斜口气缸关 if((JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 1) || (JH_CTHL_NL_PARAM_QianMaSelect == 1)) //尼龙 JH_CTHL_NL_XKTD_VAVLE = 0; //斜口推带气缸输出 JH_CTHL_NL_GDXM_VAVLE = 0; JH_CTHL_NL_XSavePosBuff = dwXRealPos; JH_CTHL_NL_TD_MotorStep = 3; JH_CTHL_NL_TD_MotorDelay = dwTickCount + 50; // user_datas[123] = dwXRealPos - JH_CTHL_NL_CheckInX02PosBuff; if((dwXRealPos >= CheckInX02PosBuff) && CheckInX02PosBuff) { AxisMovePosAccDec(X_AXIS,JH_CTHL_NL_FK_IN_SPEED*2/3,JH_CTHL_NL_PARAM_FKDW_Length-100 - (dwXRealPos- CheckInX02PosBuff), JH_CTHL_NL_PARAM_FKDW_Speed,JH_CTHL_NL_PARAM_FKDW_Speed,150,150,50); } else AxisMovePosAccDec(X_AXIS,JH_CTHL_NL_FK_IN_SPEED*2/3,JH_CTHL_NL_PARAM_FKDW_Length-100, JH_CTHL_NL_PARAM_FKDW_Speed,JH_CTHL_NL_PARAM_FKDW_Speed,150,150,50); } if(JH_CTHL_NL_CXSC_Limit_IN_DW) { JH_CTHL_NL_X_CXPosBuff = dwXRealPos; // if(JH_CTHL_NL_PARAM_CR_MODE==0) // JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_XCXXCYC_ALARM,bRunning); // 小插销行程异常 } break; case 3: JH_CTHL_NL_TDMotorStepSave = JH_CTHL_NL_TD_MotorStep; if((dwTickCount >= JH_CTHL_NL_TD_MotorDelay))JH_CTHL_NL_FKJD_VAVLE = 1; if(!JH_CTHL_NL_bTest && JH_CTHL_NL_CXSC_Limit_IN_UP) { JH_CTHL_NL_bTest = 1; JH_CTHL_NL_X_CXPosBuff = dwXRealPos; // user_datas[123] = JH_CTHL_NL_X_CXPosBuff; } if(!X_DRV) { AxisEgmStop(X_AXIS); JH_CTHL_NL_TD_MotorStep =4 ; JH_CTHL_NL_LianLengthAutoCheckOLD = JH_CTHL_NL_LianLengthAutoFirst; if(JH_CTHL_NL_cZipCnt==1) JH_CTHL_NL_LianLengthAutoCheck = dwXRealPos; JH_CTHL_NL_LianLengthAutoFirst = dwXRealPos; if(JH_CTHL_NL_CXSC_Limit_IN_UP) { JH_CTHL_NL_TD_MotorStep =0 ; } } break; case 4: JH_CTHL_NL_TDMotorStepSave = JH_CTHL_NL_TD_MotorStep; if(JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 0) { { JH_CTHL_NL_TD_MotorStep = 0; } } else { if(JH_CTHL_NL_CXSC_Limit_IN) //不能在链上 { // user_datas[121] += 5; JH_CTHL_NL_TD_MotorStep = 0; // JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_XCXXCYC_ALARM,bRunning); // 小插销行程异常 } else { JH_CTHL_NL_TD_MotorStep = 0; } } break; case 9: if(dwTickCount >= JH_CTHL_NL_TD_MotorDelay) { SetEn(X_AXIS, MOTOR_EN); JH_CTHL_NL_TD_MotorStep = 10; JH_CTHL_NL_TD_MotorDelay = dwTickCount + 500; } break; //穿拉头定位 case 10: JH_CTHL_NL_TDMotorStepSave = JH_CTHL_NL_TD_MotorStep; if(dwTickCount >= JH_CTHL_NL_TD_MotorDelay) { JH_CTHL_NL_TD_MotorStep = 11; SetPos(X_AXIS, 0); //启动位置设为0点 dwXRealPos = 0; AxisContinueMoveAcc(X_AXIS,JH_CTHL_NL_PARAM_CR_SPEED,DIR_P,800,1200,30,30); CheckInX02PosBuff= 0; bCheckEN_FLG = 1; JH_CTHL_NL_X_CXPosBuff = 0; JH_CTHL_NL_bTest = 0; JH_CTHL_NL_X_FKCheckPos = 0; } break; case 11: JH_CTHL_NL_TDMotorStepSave = JH_CTHL_NL_TD_MotorStep; if(dwXRealPos > JH_CTHL_NL_PARAM_CR_LENGTH) //穿入慢速长度 { if((JH_CTHL_NL_cZipCnt < 2) || (JH_CTHL_NL_LianLengthCheck < 350)) { AxisContinueMoveAcc(X_AXIS,JH_CTHL_NL_PARAM_TD_RunSpeed*2/3,DIR_P,3000,600,150,50); } else ////两段速度移动距离 { AxisMovePosAccDecNotStop(X_AXIS,JH_CTHL_NL_PARAM_TD_RunSpeed,JH_CTHL_NL_LianLengthCheck-dwXRealPos,1500,JH_CTHL_NL_FK_IN_SPEED,150,100,JH_CTHL_NL_PARAM_FKTD_ChangeSpeedPos); } JH_CTHL_NL_TD_MotorStep = 13; } if(dwXRealPos >= JH_CTHL_NL_PARAM_FDOff_Pos) { JH_CTHL_NL_FengDai_VAVLE = 0; } if((dwXRealPos >= JH_CTHL_NL_PARAM_WLCDSHEZHI_LENTH) && JH_CTHL_NL_PARAM_WLCDSHEZHI_LENTH) { cCHULIANBAOJIN=1; AxisEgmStop(X_AXIS); JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WLZDTJ_ALARM,bRunning); //无拉链自动停机 } if((dwXRealPos > (JH_CTHL_NL_LianLengthAutoCheck+2000)) && JH_CTHL_NL_LianLengthAutoCheck && JH_CTHL_NL_cZipCnt>1) { cCHULIANBAOJIN=1; AxisEgmStop(X_AXIS); JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WLZDTJ_ALARM,bRunning); //无拉链自动停机 } if(JH_CTHL_NL_cZipCnt>1) { if((JH_CTHL_NL_LianLengthCheck-JH_CTHL_PARAM_YaDai_LENGTH) < dwXRealPos) { JH_CTHL_NL_YaiDai_VAVLE=1; } } //方块还没有感应之前感应到插销的话,肯定错位 if(JH_CTHL_NL_CXSC_Limit_IN_DW) { JH_CTHL_NL_X_CXPosBuff = dwXRealPos; JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_XCXXCYC_ALARM,bRunning); // 小插销行程异常 } break; case 13://检测到过链 JH_CTHL_NL_TDMotorStepSave = JH_CTHL_NL_TD_MotorStep; if(JH_CTHL_NL_cZipCnt>1) { if((JH_CTHL_NL_LianLengthCheck-JH_CTHL_PARAM_YaDai_LENGTH) < dwXRealPos) { JH_CTHL_NL_YaiDai_VAVLE=1; } } if(dwXRealPos >= JH_CTHL_NL_PARAM_FDOff_Pos) { JH_CTHL_NL_FengDai_VAVLE = 0; } if(dwXRealPos > JH_CTHL_NL_PARAM_TuiDXM_Lenght)//400) { CheckInX02PosBuff= 0; JH_CTHL_NL_GDXM_VAVLE = 0; JH_CTHL_NL_DXK_VAVLE = 0; //顶斜口气缸关 if((JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 1) || (JH_CTHL_NL_PARAM_QianMaSelect == 1)) //尼龙 或直码 JH_CTHL_NL_XKTD_VAVLE = 0; //斜口推带气缸输出 } if((dwXRealPos >= JH_CTHL_NL_PARAM_WLCDSHEZHI_LENTH) && JH_CTHL_NL_PARAM_WLCDSHEZHI_LENTH) { cCHULIANBAOJIN=1; AxisEgmStop(X_AXIS); JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WLZDTJ_ALARM,bRunning); //无拉链自动停机 } if((dwXRealPos > (JH_CTHL_NL_LianLengthAutoCheck + 7000)) && JH_CTHL_NL_LianLengthAutoCheck && (JH_CTHL_NL_cZipCnt > 0)) { AxisEgmStop(X_AXIS); cCHULIANBAOJIN=1; JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WLZDTJ_ALARM,bRunning); //无拉链自动停机 } //过链检测 if(JH_CTHL_NL_FK_Check) { JH_CTHL_NL_YaiDai_VAVLE=1; JH_CTHL_NL_LianLengthCheckReal=dwXRealPos; if(JH_CTHL_NL_cZipCnt == 1)JH_CTHL_NL_LianLengthCheck = dwXRealPos; if((dwXRealPos <= JH_CTHL_NL_LianLengthCheck*0.85) && (JH_CTHL_NL_cZipCnt>1)) { cHeLian=0; JH_CTHL_NL_cZipCnt=0; } JH_CTHL_NL_X_FKCheckPos = dwXRealPos; RUNONCEFLAG=0; JH_CTHL_NL_TD_MotorStep = 14; if(JH_CTHL_NL_cZipCnt > 1) { if(GetServoComState(X_AXIS)) { AxisMovePosAccDec(X_AXIS,JH_CTHL_NL_FK_IN_SPEED,JH_CTHL_NL_PARAM_XCX_LENTH, 1000, JH_CTHL_LOCAL_LOW_SPEED,50,80,JH_CTHL_TRARR_RUN_LENGTH); } else { AxisMovePosAccDec(X_AXIS,JH_CTHL_NL_FK_IN_SPEED,JH_CTHL_NL_PARAM_XCX_LENTH, 1000, JH_CTHL_NL_PARAM_FKDW_Speed,50,150,50); } JH_CTHL_NL_TD_MotorDelay = dwTickCount + JH_CTHL_NL_PARAM_FKJD_DELAY+1; } else//前两条慢速 { AxisMovePosAccDec(X_AXIS, 8000, JH_CTHL_NL_PARAM_FKDW_Length, 1000,JH_CTHL_NL_PARAM_FKDW_Speed,50,150,50); JH_CTHL_NL_TD_MotorDelay = dwTickCount + 30; } } else if(JH_CTHL_NL_CXSC_Limit_IN_DW) { user_datas[121] = 4; JH_CTHL_NL_X_CXPosBuff = dwXRealPos; JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_XCXXCYC_ALARM,bRunning); // 小插销行程异常 } break; case 14: JH_CTHL_NL_TDMotorStepSave = JH_CTHL_NL_TD_MotorStep; if((dwTickCount >= JH_CTHL_NL_TD_MotorDelay) && bRunning)JH_CTHL_NL_FKJD_VAVLE = 1; if(JH_CTHL_NL_cZipCnt > 1&&GetServoComState(X_AXIS)) { if((dwXRealPos>=JH_CTHL_NL_X_FKCheckPos+JH_CTHL_NL_PARAM_XCX_LENTH-JH_CTHL_TRARR_RUN_LENGTH)&&RUNONCEFLAG==0) { RUNONCEFLAG=1; Set_Ctrlmode_trans(X_AXIS,TARR_MODE); TARR_OVER_DELAY=dwTickCount+10; } if(GetTarr(X_AXIS)&&dwTickCount>=TARR_OVER_DELAY&&RUNONCEFLAG||!X_DRV ) { AxisEgmStop(X_AXIS); JH_CTHL_NL_TD_MotorStep = 0; JH_CTHL_NL_LianLengthAutoCheckOLD = JH_CTHL_NL_LianLengthAutoFirst; if(JH_CTHL_NL_cZipCnt==1) JH_CTHL_NL_LianLengthAutoCheck = dwXRealPos; JH_CTHL_NL_LianLengthAutoFirst = dwXRealPos; if(JH_CTHL_NL_CXSC_Limit_IN_UP) { JH_CTHL_NL_TD_MotorStep = 0; JH_CTHL_NL_FKJD_VAVLE = 1; } } } else { if(!X_DRV ) { AxisEgmStop(X_AXIS); Set_Ctrlmode_trans(X_AXIS,TARR_MODE); JH_CTHL_NL_TD_MotorStep = 0; JH_CTHL_NL_LianLengthAutoCheckOLD = JH_CTHL_NL_LianLengthAutoFirst; if(JH_CTHL_NL_cZipCnt==1) JH_CTHL_NL_LianLengthAutoCheck = dwXRealPos; JH_CTHL_NL_LianLengthAutoFirst = dwXRealPos; if(JH_CTHL_NL_CXSC_Limit_IN_UP) { JH_CTHL_NL_TD_MotorStep = 0; JH_CTHL_NL_FKJD_VAVLE = 1; } } } break; } #endif } //穿入电机动作,Y轴 void JH_CTHL_NL_CL_Motor(void) // { #if 1 //1步开始, 穿链长度开始 //20步开始 插销定位开始 //40步,回原点为 switch(JH_CTHL_NL_CL_MotorStep) { //穿入长度位置 case 1: if(dwTickCount >= JH_CTHL_NL_CL_MotorDelay) { if(JH_CTHL_NL_SF_Origin_IN) { if(cHeLian==1) { JH_CTHL_NL_cZipCnt=0; cHeLian=0; cHeLianone=1; } // (公分节判断) if((JH_CTHL_NL_LianLengthAutoFirst < (JH_CTHL_NL_LianLengthAutoCheck*9/10)) && (JH_CTHL_NL_LianLengthAutoFirst < JH_CTHL_NL_PARAM_GFJ_Length) || cHeLianone) // { cHeLianone=0; JH_CTHL_NL_cZipCnt = 0; JH_CTHL_NL_Y_CL_Length=JH_CTHL_NL_LianLengthAutoFirst-JH_CTHL_NL_PARAM_CL_Length; if(JH_CTHL_NL_Y_CL_Length >= JH_CTHL_NL_PARAM_Y_MAX_LENTH) JH_CTHL_NL_Y_CL_Length = JH_CTHL_NL_PARAM_Y_MAX_LENTH-40; if(JH_CTHL_NL_Y_CL_Length <200) JH_CTHL_NL_Y_CL_Length=200; if(JH_CTHL_NL_cZipCnt>1) { //正常穿入 if(JH_CTHL_NL_PARAM_GFJ_WorkMode == 0) { AxisMovePosAccDec(Y_AXIS,JH_CTHL_NL_PARAM_CL_Speed,JH_CTHL_NL_Y_CL_Length,2000,2000,50,50,150); } //停止 else if(JH_CTHL_NL_PARAM_GFJ_WorkMode == 1) { JH_CTHL_NL_CL_MotorStep = 0; JH_CTHL_NL_HLJJ_VAVLE = 0; bCL_OK_FLG = 1; bSingOneFlg= 1; bSingOneCnt=0; break; } else if(JH_CTHL_NL_PARAM_GFJ_WorkMode == 2) { JH_CTHL_NL_CL_MotorStep = 0; JH_CTHL_NL_HLJJ_VAVLE = 0; bCL_OK_FLG = 1; break; } } else { AxisMovePosAccDec(Y_AXIS,JH_CTHL_NL_PARAM_CL_Speed,JH_CTHL_NL_Y_CL_Length,2000,2000,50,50,150); } } //穿入长度要根据检测长度减动一次穿入的3CM,反转的2CM else { // JH_CTHL_NL_Y_CL_Length=JH_CTHL_NL_LianLengthAutoCheck-JH_CTHL_NL_PARAM_CL_Length-200; if(JH_CTHL_NL_cZipCnt>1) JH_CTHL_NL_Y_CL_Length=JH_CTHL_NL_LianLengthAutoCheck-JH_CTHL_NL_PARAM_CL_Length-200; else JH_CTHL_NL_Y_CL_Length=JH_CTHL_NL_LianLengthAutoFirst-JH_CTHL_NL_PARAM_CL_Length; if(JH_CTHL_NL_Y_CL_Length >= JH_CTHL_NL_PARAM_Y_MAX_LENTH) JH_CTHL_NL_Y_CL_Length = JH_CTHL_NL_PARAM_Y_MAX_LENTH-40; if(JH_CTHL_NL_Y_CL_Length < 200)JH_CTHL_NL_Y_CL_Length=200; AxisMovePosAccDec(Y_AXIS,JH_CTHL_NL_PARAM_CL_Speed,JH_CTHL_NL_Y_CL_Length,2000,2000,50,50,100); } JH_CTHL_NL_CL_MotorStep = 2; } } break; case 2: if((dwYRealPos + 120) > JH_CTHL_NL_Y_CL_Length) JH_CTHL_NL_HLJJ_VAVLE = 0; if(!Y_DRV || dwYRealPos >= JH_CTHL_NL_Y_CL_Length) { AxisEgmStop(Y_AXIS); JH_CTHL_NL_HLJJ_VAVLE = 0; JH_CTHL_NL_CL_MotorStep = 3; bCL_OK_FLG = 1; JH_CTHL_NL_CL_MotorDelay = dwTickCount + 100; //延时数控回零点 } break; case 3: if(dwTickCount >= JH_CTHL_NL_CL_MotorDelay) { JH_CTHL_NL_CL_MotorStep = 50; } break; //夹带插销到穿入位置 case 20: //此处最好算好定位长度相减 JH_CTHL_NL_LENTH = JH_CTHL_NL_PARAM_CXDW_Length; if((JH_CTHL_NL_LENTH > 0) ) { JH_CTHL_NL_CL_MotorStep = 21; } else { JH_CTHL_NL_CL_MotorStep = 30; } if(cCXCONE) JH_CTHL_NL_CL_MotorDelay = dwTickCount + 300; else JH_CTHL_NL_CL_MotorDelay = dwTickCount + JH_CTHL_NL_PARAM_CXJZ_HT_DELAY; break; case 21: if(dwTickCount >= JH_CTHL_NL_CL_MotorDelay) { if(JH_CTHL_NL_SF_Origin_IN) { JH_CTHL_NL_Y_CL_PosBuff = dwYRealPos; AxisContinueMoveAcc(Y_AXIS,6000,DIR_P,800,1200,18,10); JH_CTHL_NL_CL_MotorStep = 22; if(!JH_CTHL_PARAM_XCLD_MAX_LENGTH) cXCLD_MAX_LENGTH=200; else cXCLD_MAX_LENGTH=JH_CTHL_PARAM_XCLD_MAX_LENGTH; } } break; case 22: if(JH_CTHL_NL_CXSC_Limit_IN)//X15插稍上止感应 { JH_CTHL_NL_Y_CL_PosBuff = dwYRealPos + JH_CTHL_NL_PARAM_CXDW_Length; JH_CTHL_NL_CL_MotorStep = 23; } else if(dwYRealPos >= JH_CTHL_NL_Y_CL_PosBuff + cXCLD_MAX_LENGTH) //插销定位异常位置 { JH_CTHL_NL_CXSCDW_VAVLE = 1; //Y21 插销上止定位电磁阀 AxisEgmStop(Y_AXIS); JH_CTHL_NL_YsaveCXDWPosBuff = 0; JH_CTHL_NL_CXHJD_VAVLE = 1; if(JH_CTHL_NL_CXDW_Stop) { JH_CTHL_NL_CL_MotorStep = 24; JH_CTHL_NL_CL_MotorDelay = dwTickCount + 30; } else//不告警? { JH_CTHL_NL_CL_MotorStep = 0; JH_CTHL_NL_bXCBackOK = 1; } } break; case 23: if((dwYRealPos + 80) > JH_CTHL_NL_Y_CL_PosBuff) { // JH_CTHL_NL_CXHJD_VAVLE = 1; } if((dwYRealPos > JH_CTHL_NL_Y_CL_PosBuff)) //插销定位已经结束 { JH_CTHL_NL_CXSCDW_VAVLE = 1; //Y21 插销上止定位电磁阀 AxisEgmStop(Y_AXIS); JH_CTHL_NL_YsaveCXDWPosBuff = 0; JH_CTHL_NL_CXHJD_VAVLE = 1; if(JH_CTHL_NL_CXDW_Stop) { JH_CTHL_NL_CL_MotorStep = 24; JH_CTHL_NL_CL_MotorDelay = dwTickCount + 30; } else { JH_CTHL_NL_CL_MotorStep = 0; JH_CTHL_NL_bXCBackOK = 1; } } break; case 24: if(dwTickCount >= JH_CTHL_NL_CL_MotorDelay) { //JH_CTHL_NL_CXHT_VAVLE = 0; JH_CTHL_NL_CL_MotorStep = 0; if(JH_CTHL_NL_CXDW_Stop && !bRunning) SetEn(Y_AXIS, MOTOR_DISEN); JH_CTHL_NL_CXDW_Stop = 0; } break; case 30: JH_CTHL_NL_YsaveCXDWPosBuff = 0; JH_CTHL_NL_CL_MotorStep = 0; JH_CTHL_NL_bXCBackOK = 1; JH_CTHL_NL_CXQJD_VAVLE = 0;//YYQ break; //回原点开始, case 40: if(JH_CTHL_NL_SF_Origin_IN && (GetEn(Y_AXIS) == MOTOR_DISEN)) { JH_CTHL_NL_CL_MotorStep = 41; SetDir(Y_AXIS, DIR_P); } else { SetDir(Y_AXIS, DIR_N); JH_CTHL_NL_CL_MotorStep = 46; } if(GetEn(Y_AXIS) == MOTOR_DISEN) { SetEn(Y_AXIS, MOTOR_EN); JH_CTHL_NL_CL_MotorDelay = dwTickCount + 260; //锁轴时间 } else //已经锁轴 JH_CTHL_NL_CL_MotorDelay = dwTickCount + 5; break; case 41: if(dwTickCount >= JH_CTHL_NL_CL_MotorDelay) { JH_CTHL_NL_CL_MotorStep = 42; AxisContinueMoveAcc(Y_AXIS,5000,DIR_P,1000,800,15,15); } break; case 42: if(!JH_CTHL_NL_SF_Origin_IN) { JH_CTHL_NL_CL_MotorStep = 43; JH_CTHL_NL_YSavePosBuff = dwYRealPos; } break; case 43: //离开原点5CM停止 if((dwYRealPos - JH_CTHL_NL_YSavePosBuff) >= 800) { AxisEgmStop(Y_AXIS); JH_CTHL_NL_CL_MotorStep = 46; //留空几步备用 JH_CTHL_NL_CL_MotorDelay = dwTickCount + 50; } break; case 46: if(dwTickCount >= JH_CTHL_NL_CL_MotorDelay) { JH_CTHL_NL_CL_MotorStep = 47; //检测回到原位 if(!JH_CTHL_NL_SF_Origin_IN) AxisContinueMoveAcc(Y_AXIS,2000,DIR_N,1000,800,15,10); } break; case 47: if(JH_CTHL_NL_SF_Origin_IN) { JH_CTHL_NL_CL_MotorStep = 0; AxisEgmStop(Y_AXIS); SetPos(Y_AXIS, 0); } break; //数控回原位 (条件为自动工作,SON一直没有松开) case 50: if(!Y_DRV) { if(dwYRealPos > 150) { //回零速度 JH_CTHL_NL_CL_MotorDelay=dwTickCount+5000; AxisMovePosAccDecNotStop(Y_AXIS,JH_CTHL_NL_PARAM_CL_Back_O_Speed,-dwYRealPos + 151,5000,2000,25,25,50); } else { JH_CTHL_NL_CL_MotorDelay=dwTickCount+10000; AxisContinueMoveAcc(Y_AXIS,1000,DIR_N,1000,1000,15,15); } JH_CTHL_NL_CL_MotorStep = 51; } break; case 51: if(JH_CTHL_NL_SF_Origin_IN) { JH_CTHL_NL_CL_MotorStep = 0; AxisEgmStop(Y_AXIS); SetPos(Y_AXIS, 0); } else if(dwTickCount>=JH_CTHL_NL_CL_MotorDelay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SF_Origin_IN,0); // 安全门关上才能启动 } break; } #endif } void JH_CTHL_NL_HeMo(void) { static unsigned char hemoflag1=0,hemoflag2=0,hemoflag3=0,hemoflag4=0; switch(JH_CTHL_NL_HeMoStep) { case 1: if(JH_CTHL_NL_HSLiao_Origin_IN) { JH_CTHL_NL_HeMoStep = 4; JH_CTHL_NL_CTXMSS_VAVLE = 1; JH_CTHL_NL_HeMo_Time = dwTickCount + 1800; } break; case 4: if(!JH_CTHL_NL_CTM_Origin_IN) JH_CTHL_NL_JLTou_VAVLE = 0; //接拉头 if(JH_CTHL_NL_CTM_Limit_IN) { JH_CTHL_NL_JLTou_VAVLE = 0; //接拉头 JH_CTHL_NL_HeMoStep = 0; } else if((dwTickCount >= JH_CTHL_NL_HeMo_Time)&& bRunning) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Limit_ALARM,bRunning); //穿头下模上升异常 } break; case 10: JH_CTHL_NL_HeMoStep = 11; JH_CTHL_NL_CTXMSS_VAVLE = 0; PRV_HSLiao_OUT_TIME1=dwTickCount; JH_CTHL_NL_HeMo_Time = dwTickCount + 2000; break; case 11: if(!JH_CTHL_NL_CTM_Limit_IN) { CTXMSS_DOWN_TIME=dwTickCount; JH_CTHL_NL_HeMoStep = 12; if(PRV_CTXMSS_DOWN_TIME) { FIRST_CT_BACK_DELAY = dwTickCount + PRV_CTXMSS_DOWN_TIME*2/5; HSLIAO_OUT_DELAY=dwTickCount+PRV_CTXMSS_DOWN_TIME*3/5; } hemoflag1=1; hemoflag2=1; hemoflag3=1; hemoflag4=1; } break; case 12: if(bRunning) { //测量时间 if(JH_CTHL_NL_CTM_Origin_IN&&hemoflag2) { hemoflag2=0; CTXMSS_DOWN_TIME=dwTickCount-CTXMSS_DOWN_TIME; PRV_CTXMSS_DOWN_TIME=CTXMSS_DOWN_TIME; } // if(PRV_CTXMSS_DOWN_TIME&&(JH_CTHL_NL_cZipCnt > 1))//测量时间后的动作 { if(dwTickCount >= FIRST_CT_BACK_DELAY&&hemoflag3) { hemoflag3=0; JH_CTHL_NL_First_CT_VAVLE=0; FIRST_HEMO_TIME=dwTickCount; } if(dwTickCount>=HSLIAO_OUT_DELAY&&hemoflag1) { hemoflag1=0; JH_CTHL_NL_ZhuangLiaoStep = 1; JH_CTHL_NL_TryCnt = 0; bZhuangLiaoOkFlg = 0; } if(JH_CTHL_NL_CTM_Origin_IN&&JH_CTHL_NL_First_CT_Origin_IN) { JH_CTHL_NL_HeMoStep = 0; //JH_CTHL_NL_ZhuangLiaoStep = 1; //JH_CTHL_NL_TryCnt = 0; //bZhuangLiaoOkFlg = 0; FIRST_HEMO_TIME=dwTickCount-FIRST_HEMO_TIME; } else if(dwTickCount >= JH_CTHL_NL_HeMo_Time) { if(!JH_CTHL_NL_CTM_Origin_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Origin_ALARM,bRunning); else if(!JH_CTHL_NL_First_CT_Origin_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_First_CT_Origin_ALARM,bRunning); } } else //测量时间前的动作 { if(JH_CTHL_NL_CTM_Origin_IN)//穿来头模原位 { JH_CTHL_NL_HeMoStep = 13; JH_CTHL_NL_First_CT_VAVLE=0; FIRST_HEMO_TIME=dwTickCount; JH_CTHL_NL_HeMo_Time = dwTickCount + 2000; } else if(dwTickCount >= JH_CTHL_NL_HeMo_Time) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Origin_ALARM,bRunning); } } } else { if(JH_CTHL_NL_CTM_Origin_IN)JH_CTHL_NL_HeMoStep = 0; } break; case 13: if(JH_CTHL_NL_First_CT_Origin_IN) { FIRST_HEMO_TIME=dwTickCount-FIRST_HEMO_TIME; JH_CTHL_NL_ZhuangLiaoStep = 1; JH_CTHL_NL_TryCnt = 0; bZhuangLiaoOkFlg = 0; JH_CTHL_NL_HeMoStep = 0; } else if(dwTickCount >= JH_CTHL_NL_HeMo_Time) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_First_CT_Origin_ALARM,bRunning); } break; } } //装拉头动作 void JH_CTHL_NL_ZLT_Step(void) { switch(JH_CTHL_NL_ZhuangLiaoStep) { case 1: if(bZhuangLiaoOkFlg) { JH_CTHL_NL_ZhuangLiaoStep = 0; } if(((JH_CTHL_NL_MGuo_VAVLE && JH_CTHL_NL_LTou_Check) || (!JH_CTHL_NL_MGuo_VAVLE)) && !JH_CTHL_NL_JLiao_Limit_IN )//说明没有拉头 { if(bRunning&&PRV_CTXMSS_DOWN_TIME&&JH_CTHL_NL_cZipCnt>1) { if(JH_CTHL_NL_TLiaoStep == 0) { JH_CTHL_NL_TLiaoStep = 1; JH_CTHL_NL_ZhuangLiaoStep = 40; } } else { //穿头模和一次穿入必须在原位,接料不能有输出 if(JH_CTHL_NL_CTM_Origin_IN && !JH_CTHL_NL_CTXMSS_VAVLE) { JH_CTHL_NL_First_CT_VAVLE = 0; JH_CTHL_NL_JLTou_VAVLE = 0; JH_CTHL_NL_MGuo_VAVLE = 0; if(JH_CTHL_NL_TLiaoStep == 0) { JH_CTHL_NL_TLiaoStep = 1; JH_CTHL_NL_ZhuangLiaoStep = 2; } } else if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay + 500) //警告横送拉必须保证穿头模和一次穿入在原位,接料不能有输出 { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Origin_ALARM,bRunning); } } } else if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay+150) //已经有拉头直接跳到结束 { JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 40; JH_CTHL_NL_ZhuangLiaoStep = 9; } break; case 40: if(JH_CTHL_NL_TLiaoStep == 0) //推料已经完成 { JH_CTHL_NL_HSLiao_VAVLE = 1; JH_CTHL_NL_ZhuangLiaoStep = 41; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } break; case 41: if(!JH_CTHL_NL_HSLiao_Origin_IN)//离开原点 { PRV_HSLiao_OUT_TIME2=dwTickCount; JH_CTHL_NL_ZhuangLiaoStep = 42; HSLIAO_CHECK_DELAY=dwTickCount+HSLIAO_CHECK_TIME+1;//横送过程检测 } break; case 42: if(dwTickCount>=HSLIAO_CHECK_DELAY)//兼容没有做缓冲的情况 { if(JH_CTHL_NL_CTM_Origin_IN && JH_CTHL_NL_First_CT_Origin_IN)//穿头模和第一次合链在原位 { JH_CTHL_NL_ZhuangLiaoStep = 3; HSLiao_OUT_TIME1=dwTickCount-PRV_HSLiao_OUT_TIME1; } else { JH_CTHL_NL_ZhuangLiaoStep = 43; JH_CTHL_NL_HSLiao_VAVLE = 0; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 20; } } break; case 43: if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) { if(JH_CTHL_NL_CTM_Origin_IN && JH_CTHL_NL_First_CT_Origin_IN)//穿头模和第一次合链在原位 { JH_CTHL_NL_ZhuangLiaoStep = 3; JH_CTHL_NL_HSLiao_VAVLE = 1; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } } break; case 2: if(JH_CTHL_NL_TLiaoStep == 0) //推料已经完成 { JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; JH_CTHL_NL_JLTou_VAVLE = 0; JH_CTHL_NL_MGuo_VAVLE = 0; if(!JH_CTHL_NL_JLiao_Limit_IN && JH_CTHL_NL_First_CT_Origin_IN) { JH_CTHL_NL_ZhuangLiaoStep = 3; JH_CTHL_NL_HSLiao_VAVLE = 1; } } break; case 3: //横送到位 if(JH_CTHL_NL_HSLiao_Limit_IN && !JH_CTHL_NL_HSLiao_Origin_IN) { HSLiao_OUT_TIME2=dwTickCount-PRV_HSLiao_OUT_TIME2; JH_CTHL_NL_ZhuangLiaoStep = 4; // JH_CTHL_NL_JLTou_VAVLE = 1; //接拉头输出,不需要时间 JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 2; } else if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_HSLiao_Limit_ALARM,bRunning); } break; case 4: if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) { JH_CTHL_NL_ZhuangLiaoStep = 5; JH_CTHL_NL_JLTou_VAVLE = 1; //接拉头输出,不需要时间 JH_CTHL_NL_CTXMSS_VAVLE = 0; //Y20 穿头下模上升电磁阀 JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } break; case 5: if(JH_CTHL_NL_JLiao_Limit_IN) { JH_CTHL_NL_ZhuangLiaoStep = 6; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_PARAM_MaGou_DELAY; } else if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) //接拉头(接料)到们信号异常 { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_JLiao_Limit_ALARM,bRunning); } break; case 6: if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) //延时码勾 { JH_CTHL_NL_MGuo_VAVLE = 1; //码勾输出 JH_CTHL_NL_ZhuangLiaoStep = 7; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_PARAM_HSLiaoOff_DELAY; bTuiLaTouOkFlg = 0; //认为拉头没法带出 } break; case 7: if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) { JH_CTHL_NL_HSLiao_VAVLE = 0; JH_CTHL_NL_ZhuangLiaoStep = 8; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } break; case 8: if(!JH_CTHL_NL_HSLiao_Limit_IN) // { JH_CTHL_NL_ZhuangLiaoStep = 9; JH_CTHL_NL_TLiaoStep = 1; //推拉头 JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_PARAM_CheckLT_DELAY; //也是给下模能上升的时间 } else if (JH_CTHL_NL_LTou_Check) //时间内信号这说明没有拉头 { //重送3次 JH_CTHL_NL_TryCnt++; JH_CTHL_NL_JLTou_VAVLE = 0; //接拉头关 JH_CTHL_NL_MGuo_VAVLE = 0; //码勾打开 if(JH_CTHL_NL_TryCnt >= 3) { JH_CTHL_NL_TryCnt = 0; bZhuangLiaoOkFlg = 0; JH_CTHL_NL_ZhuangLiaoStep = 0; JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_ZLT_ALARM,bRunning); cWULATOUCnt=1; } else { JH_CTHL_NL_ZhuangLiaoStep = 20; //重新送3次 JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } } else if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_HSLiao_Limit_ALARM,bRunning); if(bRunning) { JH_CTHL_NL_ZhuangLiaoStep = 0 ; } } break; case 9: if(JH_CTHL_NL_LTou_Check) //时间内信号这说明没有拉头 { JH_CTHL_NL_TryCnt++; JH_CTHL_NL_JLTou_VAVLE = 0; //接拉头关 JH_CTHL_NL_MGuo_VAVLE = 0; //码勾打开 if(JH_CTHL_NL_TryCnt >= 3) { JH_CTHL_NL_TryCnt=0; bZhuangLiaoOkFlg = 0; JH_CTHL_NL_ZhuangLiaoStep = 0; JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_ZLT_ALARM,bRunning); cWULATOUCnt=1; } else { JH_CTHL_NL_ZhuangLiaoStep = 20; //重新送3次 JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } } else if((dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) &&JH_CTHL_NL_HSLiao_Origin_IN) { bZhuangLiaoOkFlg = 1; JH_CTHL_NL_ZhuangLiaoStep = 0; } break; //装拉头不成攻重新送拉头 case 20: if(JH_CTHL_NL_HSLiao_Origin_IN) { JH_CTHL_NL_JLTou_VAVLE = 0; //接拉头关 JH_CTHL_NL_MGuo_VAVLE = 0; //码勾打开 JH_CTHL_NL_ZhuangLiaoStep = 1; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 10; } else if(dwTickCount >= JH_CTHL_NL_ZhuangLiaoDelay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_HSLiao_Origin_ALARM,bRunning); } break; } } void JH_CTHL_NL_TLiao_Step(void) { switch(JH_CTHL_NL_TLiaoStep) { case 1: if(bTuiLaTouOkFlg) { JH_CTHL_NL_TLiaoStep = 0; } else { JH_CTHL_NL_TLiao_Delay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; JH_CTHL_NL_TLiaoStep = 2; } break; case 2: //横送料在原位 if(JH_CTHL_NL_HSLiao_Origin_IN && !JH_CTHL_NL_HSLiao_Limit_IN && !JH_CTHL_NL_HSLiao_VAVLE) { JH_CTHL_NL_TLiao_Delay = dwTickCount + JH_CTHL_NL_PARAM_HSLYDTL_DELAY; JH_CTHL_NL_TLiaoStep = 21; } else if(dwTickCount >= JH_CTHL_NL_TLiao_Delay) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_HSLiao_Origin_ALARM,1); break; case 21: //横送料在原位 if((dwTickCount >= JH_CTHL_NL_TLiao_Delay) && JH_CTHL_NL_HSLiao_Origin_IN && !JH_CTHL_NL_HSLiao_Limit_IN && !JH_CTHL_NL_HSLiao_VAVLE) { JH_CTHL_NL_TLiao_VAVLE = 1; //推料(推拉头)输出 JH_CTHL_NL_TLiao_Delay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; JH_CTHL_NL_TLiaoStep = 3; } break; case 3: //推拉头到位 if(JH_CTHL_NL_TLiao_Limit_IN) { JH_CTHL_NL_TLiao_Delay = dwTickCount + JH_CTHL_NL_PARAM_TLiao_BACKDELAY; JH_CTHL_NL_TLiaoStep = 4; } else if(dwTickCount >= JH_CTHL_NL_TLiao_Delay) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_TLiao_Limit_ALARM,1); break; case 4: if(dwTickCount >= JH_CTHL_NL_TLiao_Delay) { JH_CTHL_NL_TLiao_VAVLE = 0; JH_CTHL_NL_TLiao_Delay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; JH_CTHL_NL_TLiaoStep = 5; } break; case 5: if(!JH_CTHL_NL_TLiao_Limit_IN) { JH_CTHL_NL_TLiaoStep = 0; JH_CTHL_NL_TLiao_Delay = dwTickCount; bTuiLaTouOkFlg = 1; } else if(dwTickCount >= JH_CTHL_NL_TLiao_Delay) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_TLiao_Limit_ALARM,0); break; } } //振动盘控制 void JH_CTHL_NL_ZhenDongAction(void) { #if 1 // if(bRunning) // { if(!JH_CTHL_NL_PARAM_ZDP_AUTO) { if(JH_CTHL_NL_ZhenDongPian_OUT == 1) { if(JH_CTHL_NL_ZDP_IN) { if(dwTickCount >= JH_CTHL_NL_ZDP_Delay) { JH_CTHL_NL_ZhenDongPian_OUT = 0; JH_CTHL_NL_ZDP_Delay = dwTickCount + JH_CTHL_NL_PARAM_ZDP_Stop_TIME;//JH_CTHL_NL_PARAM_ZDP_Stop_TIME + 50; } } else { JH_CTHL_NL_ZDP_Delay = dwTickCount + JH_CTHL_NL_PARAM_ZDP_Start_TIME;//JH_CTHL_NL_PARAM_ZDP_Start_TIME; } } else { if(!JH_CTHL_NL_ZDP_IN) { if(dwTickCount >= JH_CTHL_NL_ZDP_Delay) { JH_CTHL_NL_ZhenDongPian_OUT = 1; JH_CTHL_NL_ZDP_Delay = dwTickCount + JH_CTHL_NL_PARAM_ZDP_Start_TIME;//JH_CTHL_NL_PARAM_ZDP_Start_TIME } } else JH_CTHL_NL_ZDP_Delay = dwTickCount + JH_CTHL_NL_PARAM_ZDP_Stop_TIME;//JH_CTHL_NL_PARAM_ZDP_Stop_TIME+ 50; } } else if (JH_CTHL_NL_PARAM_ZDP_AUTO ==1 ) { JH_CTHL_NL_ZhenDongPian_OUT=0; JH_CTHL_NL_ZDP_Delay = dwTickCount + 0; } else if(JH_CTHL_NL_PARAM_ZDP_AUTO == 2) { JH_CTHL_NL_ZhenDongPian_OUT=1; JH_CTHL_NL_ZDP_Delay = dwTickCount + 0; } //JH_CTHL_NL_CuiQi_VAVLE = ~JH_CTHL_NL_ZhenDongPian_OUT; #endif } //送带控制 void JH_CTHL_NL_SongDaiAction(void) { switch(JH_CTHL_NL_SongDai_Step) { case 1: if(JH_CTHL_NL_SongDai_VAVLE) { if(JH_CTHL_NL_SongDai_Limit_IN) { if(dwTickCount >= JH_CTHL_NL_SongDai_Delay) { JH_CTHL_NL_SongDai_VAVLE = 0; JH_CTHL_NL_SongDai_Delay = dwTickCount + JH_CTHL_NL_PARAM_SongDaiTime;//JH_CTHL_NL_PARAM_ZDP_Stop_TIME + 50; } } else { JH_CTHL_NL_SongDai_Delay = dwTickCount;//JH_CTHL_NL_PARAM_ZDP_Start_TIME; if(dwTickCount>=JH_CTHL_NL_SongDai_Delay2) { JH_CTHL_NL_SongDai_VAVLE = 0; JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SongDai_ALARM,1); //告警 } } } else { if(!JH_CTHL_NL_SongDai_Limit_IN) { if(dwTickCount >= JH_CTHL_NL_SongDai_Delay) { JH_CTHL_NL_SongDai_VAVLE = 1; JH_CTHL_NL_SongDai_Delay = dwTickCount + JH_CTHL_NL_PARAM_SongDaiTime;//JH_CTHL_NL_PARAM_ZDP_Start_TIME JH_CTHL_NL_SongDai_Delay2 = dwTickCount +6000; } } else JH_CTHL_NL_SongDai_Delay = dwTickCount + JH_CTHL_NL_PARAM_SongDaiTime;//JH_CTHL_NL_PARAM_ZDP_Stop_TIME+ 50; } break; // case 1: // if(JH_CTHL_NL_SongDai_VAVLE == 1) // { // // JH_CTHL_NL_SongDai_Step=2; // JH_CTHL_NL_SongDai_Delay=dwTickCount + 3000;//JH_CTHL_NL_PARAM_SongDaiTime; // } // else // { // JH_CTHL_NL_SongDai_Step=2; // } // break; // case 2: // if(JH_CTHL_NL_SongDai_VAVLE == 1) // { // if(JH_CTHL_NL_SongDai_Limit_IN) // { // JH_CTHL_NL_SongDai_VAVLE = 0; // } // else if(dwTickCount >= JH_CTHL_NL_SongDai_Delay) // { // JH_CTHL_NL_SongDai_VAVLE = 0; // JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_SongDai_ALARM,1); //告警 // } // } // else // { // if(!JH_CTHL_NL_SongDai_Limit_IN && dwTickCount >= JH_CTHL_NL_SongDai_Delay) // { // JH_CTHL_NL_SongDai_VAVLE = 1; // JH_CTHL_NL_SongDai_Delay=dwTickCount + 3000;//JH_CTHL_NL_PARAM_SongDaiTime; // } // else // { // JH_CTHL_NL_SongDai_Delay=dwTickCount + 20; // } // } // break; default: break; } } void JH_CTHL_NL_bFKCXTDDWStep(void) { switch(JH_CTHL_NL_bFKCXTDDW_Step) { case 1: if(dwTickCount >= JH_CTHL_NL_bFKCXTDDW_Delay) { JH_CTHL_NL_XKTD_VAVLE = 1; //斜口推带气缸输出 JH_CTHL_NL_FKGD_VAVLE = 0; //方块固定关 JH_CTHL_NL_bFKCXTDDW_Step = 2; } break; case 2: if(!JH_CTHL_NL_XKTD_Origin_IN) //斜口推带原位离开 { JH_CTHL_NL_bFKCXTDDW_Step = 3; JH_CTHL_NL_bFKCXTDDW_Delay = dwTickCount + 20; } break; case 3://斜口定位 if(dwTickCount >= JH_CTHL_NL_bFKCXTDDW_Delay) { JH_CTHL_NL_XKDW_VAVLE = 1; JH_CTHL_NL_bFKCXTDDW_Step = 4; JH_CTHL_NL_bFKCXTDDW_Delay = dwTickCount + JH_CTHL_NL_PARAM_XKDW_TD_DELAY; } break; case 4: if(dwTickCount >= JH_CTHL_NL_bFKCXTDDW_Delay) { AxisContinueMoveAcc(X_AXIS,JH_CTHL_NL_PARAM_XKDW_Speed,DIR_P,JH_CTHL_NL_PARAM_XKDW_Speed/2,JH_CTHL_NL_PARAM_XKDW_Speed/2,10,10);//拖带电机 JH_CTHL_NL_bFKCXTDDW_Step = 5; JH_CTHL_NL_XSavePosBuff = dwXRealPos; SetPos(X_AXIS, 0); //启动位置设为0点 dwXRealPos = 0; } break; case 5: if(JH_CTHL_NL_XKSC_Limit_IN) //方块到位 { AxisEgmStop(X_AXIS); JH_CTHL_NL_bFKCXTDDW_Step = 6; JH_CTHL_NL_XKTD_VAVLE = 0; //斜口推带气缸关闭 JH_CTHL_NL_bFKCXTDDW_Delay = dwTickCount + 300; } else if(dwXRealPos >= (JH_CTHL_NL_XSavePosBuff + 800)) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_FKCXDW_ALARM,bRunning);//方块插销定位异常警告 } break; case 6: if(dwTickCount >= JH_CTHL_NL_bFKCXTDDW_Delay) { JH_CTHL_NL_GDXM_VAVLE=1; JH_CTHL_NL_bFKCXTDDW_Step = 0; } break; } } //插销穿入动作 void JH_CTHL_NL_bCXCRStep(void) { switch(JH_CTHL_NL_bCXCR_Step) { case 11: if(!JH_CTHL_NL_CXDW_Stop) JH_CTHL_NL_XKTD_VAVLE = 1; //斜口推带气缸输出 JH_CTHL_NL_FKGD_VAVLE = 0; //方块固定关 JH_CTHL_NL_bCXCR_Step = 12; if(JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 1) JH_CTHL_NL_CXSX_VAVLE = 1; //插销上下 break; case 12: if(!JH_CTHL_NL_XKTD_Origin_IN || JH_CTHL_NL_CXDW_Stop) //斜口推带原位离开 { JH_CTHL_NL_bCXCR_Step = 13; JH_CTHL_NL_bCXCR_Delay = dwTickCount + 65; } break; case 13: // if(JH_CTHL_NL_PARAM_CR_MODE == 1) // { if((JH_CTHL_NL_CL_MotorStep == 0) && (JH_CTHL_NL_SF_Origin_IN) && (dwTickCount >= JH_CTHL_NL_bCXCR_Delay)) //插销前夹带回到原位 { JH_CTHL_NL_bCXCR_Step = 14; if(!JH_CTHL_NL_CXDW_Stop) JH_CTHL_NL_FKGD_VAVLE = 1; //方块固定关 JH_CTHL_NL_CXQJD_VAVLE = 1; //插销前夹带 //JH_CTHL_NL_SongDai_VAVLE = 1; //松带 JH_CTHL_NL_bCXCR_Delay = dwTickCount + 0; } // }//气缸穿入 // else // { // JH_CTHL_NL_bCXCR_Step = 14; // if(!JH_CTHL_NL_CXDW_Stop) // JH_CTHL_NL_FKGD_VAVLE = 1; //方块固定关 // JH_CTHL_NL_CXQJD_VAVLE = 1; //插销前夹带 // //JH_CTHL_NL_SongDai_VAVLE = 1; //松带 // JH_CTHL_NL_bCXCR_Delay = dwTickCount + 0; // } break; case 14: if(dwTickCount >= JH_CTHL_NL_bCXCR_Delay) { JH_CTHL_NL_bCXCR_Step = 15; if(!JH_CTHL_NL_CXDW_Stop) JH_CTHL_NL_FKGD_VAVLE = 1; //方块固定 //Y轴启动插销 JH_CTHL_NL_CL_MotorStep = 20; //插销定位 JH_CTHL_NL_BB_VAVLE=1; } break; case 15: if(JH_CTHL_NL_CL_MotorStep == 0) //插销定位完成 { if(!JH_CTHL_NL_CXDW_Stop) { JH_CTHL_NL_bCXCR_Step = 16; JH_CTHL_NL_CXDWZ_VAVLE = 1; //插销定位针(到位)电磁阀 JH_CTHL_NL_bCXCR_Delay = dwTickCount + 10; //延时插销下移 } else { JH_CTHL_NL_bCXCR_Step = 0; } JH_CTHL_NL_CXDW_Stop = 0; } break; case 16: if(dwTickCount >= JH_CTHL_NL_bCXCR_Delay) { JH_CTHL_NL_bCXCR_Step = 17; JH_CTHL_NL_CXSX_VAVLE = 0; //插销上下 JH_CTHL_NL_bCXCR_Delay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; //插销下移异常时间 } break; case 17: // if(JH_CTHL_NL_CXJH_Limit_IN || JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT) { // if(JH_CTHL_NL_START_IN_UP) JH_CTHL_NL_bCXCR_Step = 18; if( cXcxcrCnt==0 && !X_DRV) //拖带电机反转 { // SetDir(X_AXIS, DIR_N); AxisMovePosAccDec(X_AXIS,10000,-JH_CTHL_NL_PARAM_TDFZ_LENTH,800,600,6,6,0); } JH_CTHL_NL_CXQJD_VAVLE = 0; //插销前夹带电磁阀 JH_CTHL_NL_CXSCDW_VAVLE = 0; //Y21 插销上止定位关 JH_CTHL_NL_CXHJD_VAVLE = 1; //Y14 插销后夹带输出 JH_CTHL_NL_bCXCR_Delay = dwTickCount + JH_CTHL_NL_PARAM_CXCR_DELAY; } // else if(dwTickCount >= JH_CTHL_NL_bCXCR_Delay) { // JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CXGL_Limit_ALARM,bRunning);//插销下移异常 } break; case 18: // if(START_IN_UP) { if(dwTickCount >= JH_CTHL_NL_bCXCR_Delay) { JH_CTHL_NL_bCXCR_Step = 19; JH_CTHL_NL_CXHDW_VAVLE = 1; //插销后定位(插销穿入) JH_CTHL_NL_bCXCR_Delay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME +1000; //插销穿入到位异常时间 //if(JH_CTHL_NL_PARAM_CR_MODE == 1) JH_CTHL_NL_CL_MotorStep = 50; //合链电机回原点 } } break; case 19: // if( cXcxcrCnt > 1) { // JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CX_Limit_ALARM,bRunning); //插销穿入到位异常 } if( JH_CTHL_NL_CX_Limit_IN ) { cXcxcrCnt=0; bZhuangLiaoOkFlg = 0; JH_CTHL_NL_bCXCR_Step = 0; JH_CTHL_NL_BB_VAVLE=0; // JH_CTHL_NL_CXDWZ_VAVLE = 0; //插销定位针(到位)电磁阀 } else if (dwTickCount >= JH_CTHL_NL_bCXCR_Delay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CX_Limit_ALARM,bRunning); //插销穿入到 JH_CTHL_NL_bCXCR_Step = 0; /* cXcxcrCnt++; JH_CTHL_NL_CXHJD_VAVLE=0; JH_CTHL_NL_CXHDW_VAVLE=0; JH_CTHL_NL_CXDWZ_VAVLE = 0; JH_CTHL_NL_CXSX_VAVLE=1; JH_CTHL_NL_bCXCR_Step = 11; */ } break; } } void JH_CTHL_NL_bCLFirstStep(void) { switch(JH_CTHL_NL_bCLFirst_Step) { case 19: JH_CTHL_NL_JLTou_VAVLE = 0; //接拉头 bZhuangLiaoOkFlg = 0; JH_CTHL_NL_bCLFirst_Step = 20; JH_CTHL_NL_CXDWZ_VAVLE = 0; //插销定位针(到位)电磁阀 JH_CTHL_NL_bCLFirst_Delay = dwTickCount + JH_CTHL_NL_PARAM_First_CL_DELAY;//延时一次穿入 break; case 20: if(dwTickCount >= JH_CTHL_NL_bCLFirst_Delay) { JH_CTHL_NL_bCLFirst_Step = 21; JH_CTHL_NL_First_CT_VAVLE = 1; //一次穿入电磁阀输出 JH_CTHL_NL_bCLFirst_Delay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } break; case 21: if(!JH_CTHL_NL_First_CT_Origin_IN) //原点离开后才开始时间 { JH_CTHL_NL_bCLFirst_Step = 22; JH_CTHL_NL_bCLFirst_Delay = dwTickCount + JH_CTHL_NL_PARAM_First_CL_Timer; //一次穿入时间 } else if(dwTickCount >= JH_CTHL_NL_bCLFirst_Delay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_YCCRYWYC_ALARM,bRunning); //一次穿入原位异常 } break; case 22: if(dwTickCount >= JH_CTHL_NL_bCLFirst_Delay) { JH_CTHL_NL_bCLFirst_Step = 23; JH_CTHL_NL_MGuo_VAVLE = 0; //码勾退 JH_CTHL_NL_bCLFirst_Delay = dwTickCount + JH_CTHL_NL_PARAM_MGOff_XiaMo_DELAY; JH_CTHL_NL_FKGD_VAVLE = 0; //方块固定退 JH_CTHL_NL_CXHJD_VAVLE = 0; //Y14 插销后夹带打开 // if(JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 0) // JH_CTHL_NL_CXSX_VAVLE = 1; //插销上下 // else // JH_CTHL_NL_CXSX_VAVLE = 0; //插销顶出 } break; case 23: if(dwTickCount >= JH_CTHL_NL_bCLFirst_Delay) { JH_CTHL_NL_bCLFirst_Step = 24; JH_CTHL_NL_CTXMSS_VAVLE = 0; //穿头下模下降 JH_CTHL_NL_CXHDW_VAVLE = 0; //插销后定位(插销穿入)关闭 JH_CTHL_NL_bCLFirst_Delay = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; } break; case 24: if(!JH_CTHL_NL_CTM_Limit_IN) { JH_CTHL_NL_bCLFirst_Step= 25; JH_CTHL_NL_bCLFirst_Delay = dwTickCount + 25; //一次穿入延时返回 } else if(dwTickCount >= JH_CTHL_NL_bCLFirst_Delay) { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Origin_ALARM,bRunning); //穿头下模下降异常 } break; case 25: if(dwTickCount >= JH_CTHL_NL_bCLFirst_Delay) { JH_CTHL_NL_bCLFirst_Step= 0; JH_CTHL_NL_First_CT_VAVLE = 0; //一次穿入电磁阀关 JH_CTHL_NL_CXHDW_VAVLE = 0; //插销后定位(插销穿入)关闭 //退下出错警告 JH_CTHL_NL_AutoDelay1 = dwTickCount + JH_CTHL_NL_VAVLE_ERROR_TIME; JH_CTHL_NL_AutoStep1 = 1; bTuiLaTouOkFlg = 1; } break; } } //手动动作 void JH_CTHL_NL_ManualAction(void) { //监控 if(cBanAuTo) { JH_CTHL_NL_PARAM_XCRU=1; } else { JH_CTHL_NL_PARAM_XCRU=0; } //监控 if(cCXCONE) { JH_CTHL_NL_PARAM_CXCR=1; } else { JH_CTHL_NL_PARAM_CXCR=0; } if(bRunning) // 运行灯输出 { JH_CTHL_NL_Run_State=1; JH_CTHL_NL_Stop_State=0; } else { JH_CTHL_NL_Stop_State=1; JH_CTHL_NL_Run_State=0; } if(GetEn(X_AXIS)==MOTOR_EN) JH_CTHL_NL_X_EN_FLG=1; if(GetEn(Y_AXIS)==MOTOR_EN) JH_CTHL_NL_Y_EN_FLG=1; if(dwTickCount>JH_CTHL_NL_bSFBBAOJIN_Delay) { JH_CTHL_NL_ALARMCLR_VAVLE=0; SetClr(Y_AXIS,MOTOR_ALARM); SetClr(X_AXIS,MOTOR_ALARM); } if((dwYRealPos > (JH_CTHL_NL_PARAM_Y_MAX_LENTH+20)) && Y_DRV && (GetDir(Y_AXIS)==DIR_P)) { } if(bRunning == 0) { //手动不用电机送带 JH_CTHL_NL_SongDai_Step=0; JH_CTHL_NL_SongDai_VAVLE = 0; if(bClearTotal) //切断计数清零 { bClearTotal = 0; ClrcToTal(QDCT_TOTAL_ADDR); } if(JH_CTHL_NL_bTLiao ) //手动推料(推拉头) { JH_CTHL_NL_bTLiao = 0; if(JH_CTHL_NL_TLiao_VAVLE) JH_CTHL_NL_TLiao_VAVLE = 0;//JH_CTHL_NL_TLiao_VAVLE; else if(!JH_CTHL_NL_HSLiao_VAVLE && JH_CTHL_NL_HSLiao_Origin_IN) { JH_CTHL_NL_TLiao_VAVLE = 1; } else//条件警告 { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_HENSONGLIAO_ALARM,0); // 横送料不能输出 } } if(JH_CTHL_NL_bHSL) //手动横送料 { JH_CTHL_NL_bHSL= 0; if(!JH_CTHL_NL_First_CT_VAVLE) { if(JH_CTHL_NL_HSLiao_VAVLE) { JH_CTHL_NL_HSLiao_VAVLE = 0;//~JH_CTHL_NL_HSLiao_VAVLE; } else if(!JH_CTHL_NL_TLiao_VAVLE && !JH_CTHL_NL_TLiao_Limit_IN && JH_CTHL_NL_CTM_Origin_IN && !JH_CTHL_NL_JLiao_Limit_IN && !JH_CTHL_NL_JLTou_VAVLE && !JH_CTHL_NL_CTXMSS_VAVLE && !JH_CTHL_NL_CXDWZ_VAVLE && (!JH_CTHL_NL_bMG || (JH_CTHL_NL_bMG && JH_CTHL_NL_LTou_Check))) { JH_CTHL_NL_HSLiao_VAVLE = 1; } else //条件警告 最后一个括号条件为已经有拉头 { if(JH_CTHL_NL_TLiao_Limit_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_TLiao_Limit_ALARM,0); else if(!JH_CTHL_NL_CTM_Origin_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Origin_ALARM,0); else if(JH_CTHL_NL_JLiao_Limit_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_JLiao_Limit_ALARM,0); } } } if(JH_CTHL_NL_bJLT) //接拉头 { JH_CTHL_NL_bJLT = 0; if(JH_CTHL_NL_JLTou_VAVLE) JH_CTHL_NL_JLTou_VAVLE = 0; else if(!JH_CTHL_NL_First_CT_VAVLE && !JH_CTHL_NL_CTXMSS_VAVLE && JH_CTHL_NL_CTM_Origin_IN && JH_CTHL_NL_First_CT_Origin_IN) { JH_CTHL_NL_MGuo_VAVLE = 0; JH_CTHL_NL_JLTou_VAVLE = 1; } else//条件警告 { if(!JH_CTHL_NL_CTM_Origin_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CTM_Origin_ALARM,0); else if(!JH_CTHL_NL_First_CT_Origin_IN) JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_First_CT_Origin_ALARM,0); } } if(JH_CTHL_NL_bMG) //码勾 { JH_CTHL_NL_bMG = 0; JH_CTHL_NL_MGuo_VAVLE = !JH_CTHL_NL_MGuo_VAVLE; } if(JH_CTHL_NL_bFKJD) //方块夹带 { JH_CTHL_NL_bFKJD = 0; JH_CTHL_NL_FKJD_VAVLE = !JH_CTHL_NL_FKJD_VAVLE; } if(JH_CTHL_NL_bXKTD) //斜口推带 { JH_CTHL_NL_bXKTD = 0; if(JH_CTHL_NL_XKTD_VAVLE) JH_CTHL_NL_XKTD_VAVLE = 0; else if(((!JH_CTHL_NL_DXK_VAVLE && (!JH_CTHL_NL_XKSC_Limit_IN || !JH_CTHL_NL_CTXMSS_VAVLE)) || (JH_CTHL_NL_PARAM_UP_DOWN_OUT_SELECT == 1)) || JH_CTHL_NL_PARAM_QianMaSelect) JH_CTHL_NL_XKTD_VAVLE = 1; else//条件警告 { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_DXKCTXM_Origin_ALARM,0); } } if(JH_CTHL_NL_bXKDW) //斜口定位 { JH_CTHL_NL_bXKDW = 0; JH_CTHL_NL_XKDW_VAVLE = ~JH_CTHL_NL_XKDW_VAVLE; } if(JH_CTHL_NL_bCTXM) //穿头下模 { JH_CTHL_NL_bCTXM = 0; if(JH_CTHL_NL_CTXMSS_VAVLE) { JH_CTHL_NL_HeMoStep = 10; // JH_CTHL_NL_JLTou_VAVLE = 0; // JH_CTHL_NL_CTXMXJ_VAVLE = 0; JH_CTHL_NL_CTXMSS_VAVLE = 0; } else if(!JH_CTHL_NL_HSLiao_VAVLE && JH_CTHL_NL_HSLiao_Origin_IN && (!JH_CTHL_NL_XKSC_Limit_IN || !JH_CTHL_NL_XKTD_VAVLE)) { // JH_CTHL_NL_MGuo_VAVLE = 1; JH_CTHL_NL_HeMoStep = 1; // JH_CTHL_NL_CTXMSS_VAVLE = 1; // JH_CTHL_NL_CTXMXJ_VAVLE = 1; // JH_CTHL_NL_XMXJ_Time = dwTickCount + 450; } } if(JH_CTHL_NL_bFD) //分带 { JH_CTHL_NL_bFD = 0; if(JH_CTHL_NL_FengDai_VAVLE) JH_CTHL_NL_FengDai_VAVLE = 0; else JH_CTHL_NL_FengDai_VAVLE = 1; } if(JH_CTHL_NL_bDXK) //顶斜口 { JH_CTHL_NL_bDXK = 0; if(JH_CTHL_NL_DXK_VAVLE) { JH_CTHL_NL_DXK_VAVLE = 0; } else if(!JH_CTHL_NL_XKTD_VAVLE) { JH_CTHL_NL_DXK_VAVLE = 1; JH_CTHL_NL_GDXM_VAVLE = 1; } else //条件警告 { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_XKTD_ALARM,0); } } if(JH_CTHL_NL_bXKGD) //固定斜码电磁阀 { JH_CTHL_NL_bXKGD = 0; JH_CTHL_NL_GDXM_VAVLE = ~JH_CTHL_NL_GDXM_VAVLE; } if(JH_CTHL_NL_bFKGD) //方块固定 { JH_CTHL_NL_bFKGD = 0; JH_CTHL_NL_FKGD_VAVLE = ~JH_CTHL_NL_FKGD_VAVLE; } if(JH_CTHL_NL_bCXQJD) //插销前夹带 { JH_CTHL_NL_bCXQJD = 0; JH_CTHL_NL_CXQJD_VAVLE = ~JH_CTHL_NL_CXQJD_VAVLE; } if(JH_CTHL_NL_bCXSY) //插销下移电磁阀 { JH_CTHL_NL_bCXSY = 0; JH_CTHL_NL_CXSX_VAVLE = !JH_CTHL_NL_CXSX_VAVLE; } // if(JH_CTHL_NL_bCXHT) { JH_CTHL_NL_bCXHT = 0; //JH_CTHL_NL_CXHT_VAVLE = ~JH_CTHL_NL_CXHT_VAVLE; if(JH_CTHL_NL_CL_MotorStep == 0) JH_CTHL_NL_CL_MotorStep = 20; SetEn(Y_AXIS, MOTOR_EN); JH_CTHL_NL_CXDW_Stop = 1; } if(JH_CTHL_NL_bBB) { JH_CTHL_NL_bBB = 0; JH_CTHL_NL_BB_VAVLE = ~JH_CTHL_NL_BB_VAVLE; } if(JH_CTHL_NL_bCXDWZ) //Y14 插销定位针电磁阀 { JH_CTHL_NL_bCXDWZ = 0; if(JH_CTHL_NL_CXDWZ_VAVLE) JH_CTHL_NL_CXDWZ_VAVLE = 0; else if(JH_CTHL_NL_HSLiao_Origin_IN) { JH_CTHL_NL_CXDWZ_VAVLE = 1; } else //条件警告 { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_HENSONGLIAO_ALARM,0); } } if(JH_CTHL_NL_bCXHJD) //Y15 插销后夹带电磁阀 { JH_CTHL_NL_bCXHJD = 0; JH_CTHL_NL_CXHJD_VAVLE =~JH_CTHL_NL_CXHJD_VAVLE; } if(JH_CTHL_NL_bCXHDW) //Y16 插销后定位电磁阀 { JH_CTHL_NL_bCXHDW = 0; if(JH_CTHL_NL_CXHDW_VAVLE) JH_CTHL_NL_CXHDW_VAVLE = 0; else if(!JH_CTHL_NL_CXQJD_VAVLE) JH_CTHL_NL_CXHDW_VAVLE = 1; else//条件警告 { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_CXQJD_ALARM,0); } } if(JH_CTHL_NL_bFirst_CT) //Y20 一次穿头电磁阀 { JH_CTHL_NL_bFirst_CT = 0; JH_CTHL_NL_First_CT_VAVLE = ~JH_CTHL_NL_First_CT_VAVLE; } if(JH_CTHL_NL_bHLJJ) //Y21 合链夹具电磁阀 { JH_CTHL_NL_bHLJJ = 0; JH_CTHL_NL_HLJJ_VAVLE = ~JH_CTHL_NL_HLJJ_VAVLE; } if(JH_CTHL_NL_bHL) { JH_CTHL_NL_bHL = 0; JH_CTHL_NL_HL_VAVLE = ~JH_CTHL_NL_HL_VAVLE; } if(JH_CTHL_NL_bCXSCDW) //Y23 插销上止定位电磁阀 { JH_CTHL_NL_bCXSCDW = 0; JH_CTHL_NL_CXSCDW_VAVLE = ~JH_CTHL_NL_CXSCDW_VAVLE; } //自动装料 if(JH_CTHL_NL_bAutoZhuangLiao) { JH_CTHL_NL_bAutoZhuangLiao = 0; if(JH_CTHL_NL_ZhuangLiaoStep == 0) { bTuiLaTouOkFlg = 1; bZhuangLiaoOkFlg = 0; JH_CTHL_NL_ZhuangLiaoStep = 1; JH_CTHL_NL_MGuo_VAVLE = 1; //判断是否已经有料 JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 150; } } //斜码插入 if(JH_CTHL_NL_bBanZiDong)//前码穿入 { JH_CTHL_NL_bBanZiDong=0; cBanAuTo=1; // XY_CTHL_PARAM_BanAuto_MODE=1; JH_CTHL_NL_ZhuangLiaoDelay = dwTickCount + 150; JH_CTHL_NL_MGuo_VAVLE = 1; //判断是否已经有料 JH_CTHL_NL_ZhuangLiaoStep = 1; bTuiLaTouOkFlg = 1; JH_CTHL_NL_cZipCnt=0; bZhuangLiaoOkFlg= 0; bCL_EN_FLG=0; JH_CTHL_NL_AutoStep = 1; bRunning=1; } //小插插入 if(JH_CTHL_NL_CXC)//穿小插 { JH_CTHL_NL_CXC=0; cCXCONE=1; cBanAuTo=0; cCHULIANBAOJIN=0; bCL_OK_FLG=1; // XY_CTHL_PARAM_BanAuto_MODE=0; JH_CTHL_NL_AutoStep = 11; bRunning=1; if(GetEn(Y_AXIS) == MOTOR_DISEN) { SetEn(Y_AXIS, MOTOR_EN); JH_CTHL_NL_CL_MotorDelay = dwTickCount + 260; //锁轴时间 } } //测试电机 if(JH_CTHL_NL_bCLMotor_N) { SetEn(Y_AXIS, MOTOR_EN); if(!JH_CTHL_NL_SF_Origin_IN) { if(!Y_DRV) // Y轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(Y_AXIS,2000,DIR_N,1000,1000,15,15); } else { JH_CTHL_NL_bCLMotor_N = 0; } } if(JH_CTHL_NL_bCLMotor_P) //后退限位已经取消 { SetEn(Y_AXIS, MOTOR_EN); if(!Y_DRV) // Y轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(Y_AXIS,2000,DIR_P,1000,1000,15,15); } if(!JH_CTHL_NL_bCLMotor_P && !JH_CTHL_NL_bCLMotor_N && (JH_CTHL_NL_TD_MotorStep == 0) && (JH_CTHL_NL_bFKCXTDDW_Step==0)&& (JH_CTHL_NL_CL_MotorStep == 0)) { AxisEgmStop(Y_AXIS);//AxisDecStop(Y_AXIS); } if(JH_CTHL_NL_bTDMotor_N) { SetEn(X_AXIS, MOTOR_EN); if(!X_DRV) // Y轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,2000,DIR_N,1000,1000,15,15); } if(JH_CTHL_NL_bTDMotor_P) //后退限位已经取消 { SetEn(X_AXIS, MOTOR_EN); if(!X_DRV) // Y轴 运行速度 启动速度 加速度 减速度 AxisContinueMoveAcc(X_AXIS,2000,DIR_P,1000,1000,15,15); } if(!JH_CTHL_NL_bTDMotor_P && !JH_CTHL_NL_bTDMotor_N && (JH_CTHL_NL_TD_MotorStep == 0) && (JH_CTHL_NL_bFKCXTDDW_Step==0)&& (JH_CTHL_NL_CL_MotorStep == 0)) { AxisEgmStop(X_AXIS);//AxisDecStop(Y_AXIS); } /* if(JH_CTHL_NL_bCLMotor_N) { JH_CTHL_NL_bCLMotor_N=0; SetEn(Y_AXIS, MOTOR_EN); if(!Y_DRV) // Y轴 运行速度 启动速度 加速度 减速度 AxisMovePosAccDec(Y_AXIS,JH_CTHL_NL_PARAM_CL_Speed,-JH_CTHL_NL_PARAM_CL_Length,2000,2000,50,50,50); } if(JH_CTHL_NL_bCLMotor_P) //后退限位已经取消 { JH_CTHL_NL_bCLMotor_P=0; SetEn(Y_AXIS, MOTOR_EN); if(!Y_DRV) // Y轴 运行速度 启动速度 加速度 减速度 AxisMovePosAccDec(Y_AXIS,JH_CTHL_NL_PARAM_CL_Speed,JH_CTHL_NL_PARAM_CL_Length,2000,2000,50,50,50); } */ //合链电机返回原点 if(JH_CTHL_NL_bCLMotor_O) { JH_CTHL_NL_bCLMotor_O = 0; if(JH_CTHL_NL_CL_MotorStep == 0) JH_CTHL_NL_CL_MotorStep = 40; } //拖带方块定位 ,因这步为前拖带定位, 很多电磁阀要关掉 if(JH_CTHL_NL_bFKTDDW) { JH_CTHL_NL_bFKTDDW = 0; if(JH_CTHL_NL_TD_MotorStep == 0) { JH_CTHL_NL_XKDW_VAVLE = 0; //斜口定位 JH_CTHL_NL_CXQJD_VAVLE = 0; //插销前夹带 //JH_CTHL_NL_CXSX_VAVLE = 1; //插销下移 JH_CTHL_NL_CXHJD_VAVLE = 0; //插销后夹带 JH_CTHL_NL_CXHDW_VAVLE = 0; //插销后定位 JH_CTHL_NL_CXDWZ_VAVLE = 0; //插销定位针 JH_CTHL_NL_bHLJJ = 0; //合链夹具 JH_CTHL_NL_FKJD_VAVLE = 0; //方块夹带 if((GetEn(X_AXIS) == MOTOR_DISEN)) { SetEn(X_AXIS, MOTOR_EN); JH_CTHL_NL_TD_MotorDelay = dwTickCount + 200; } else JH_CTHL_NL_TD_MotorDelay = dwTickCount + 50; JH_CTHL_NL_TD_MotorStep = 1; JH_CTHL_NL_FKJD_VAVLE=0; JH_CTHL_NL_cZipCnt = 0; } } //拖带方块插销定位(斜口推带,斜口定位,顶斜口) if(JH_CTHL_NL_bFKCXTDDW) { JH_CTHL_NL_bFKCXTDDW = 0; if((JH_CTHL_NL_bFKCXTDDW_Step == 0) && (JH_CTHL_NL_CL_MotorStep == 0) && !JH_CTHL_NL_CTXMSS_VAVLE) { JH_CTHL_NL_bFKCXTDDW_Step = 1; if(GetEn(X_AXIS)==MOTOR_DISEN) { SetEn(X_AXIS, MOTOR_EN); JH_CTHL_NL_bFKCXTDDW_Delay=dwTickCount + 500; } SetEn(X_AXIS, MOTOR_EN); JH_CTHL_NL_CXQJD_VAVLE = 0; //插销前夹带 //JH_CTHL_NL_CXSX_VAVLE = 1; //插销上下 JH_CTHL_NL_CXHJD_VAVLE = 0; //插销后夹带 JH_CTHL_NL_CXHDW_VAVLE = 0; //插销后定位 JH_CTHL_NL_CXDWZ_VAVLE = 0; //插销定位针 JH_CTHL_NL_HLJJ_VAVLE = 0; //合链夹具 } } //插销穿入(包含电机前定位,插销下移,后夹,后定位) if(JH_CTHL_NL_bCXCR) { JH_CTHL_NL_bCXCR = 0; //拉头模在上面到们并且码勾输出,判断有拉头 if(JH_CTHL_NL_CTXMSS_VAVLE && JH_CTHL_NL_MGuo_VAVLE && !JH_CTHL_NL_CXQJD_VAVLE && JH_CTHL_NL_CTM_Limit_IN && !JH_CTHL_NL_LTou_Check) { if(JH_CTHL_NL_CL_MotorStep == 0) { JH_CTHL_NL_bCXCR_Step = 11; JH_CTHL_NL_CXSX_VAVLE = 1; //Y06 插销下移电磁阀关 JH_CTHL_NL_CXHJD_VAVLE = 0; //插销后夹带 JH_CTHL_NL_CXHDW_VAVLE = 0; JH_CTHL_NL_HL_VAVLE = 0; // if(JH_CTHL_NL_PARAM_CR_MODE==0) // JH_CTHL_NL_CXSCDW_VAVLE = 1; // if(JH_CTHL_NL_PARAM_CR_MODE == 1) // { SetEn(Y_AXIS, MOTOR_EN); if(!JH_CTHL_NL_SF_Origin_IN) JH_CTHL_NL_CL_MotorStep = 40; // } } } else //警告不能自动穿插销 { JH_CTHL_NL_SetAlarmCode(JH_CTHL_NL_WFZIDONGCX_ALARM,0); } } //电机合链动作 if(JH_CTHL_NL_bMotorHL) { JH_CTHL_NL_bMotorHL = 0; // if(JH_CTHL_NL_PARAM_CR_MODE == 1) // { if(JH_CTHL_NL_SF_Origin_IN) { if((JH_CTHL_NL_CL_MotorStep == 0) && !JH_CTHL_NL_CTXMSS_VAVLE && (!JH_CTHL_NL_CTM_Limit_IN)) { bCL_OK_FLG = 0; JH_CTHL_NL_HLJJ_VAVLE = 1; //Y20 合链夹具电磁阀输出后,电机穿入 JH_CTHL_NL_CL_MotorStep = 1; JH_CTHL_NL_CL_MotorDelay = dwTickCount + JH_CTHL_NL_PARAM_HLJJ_CL_DELAY + 130; if((GetEn(Y_AXIS) == MOTOR_DISEN)) { SetEn(Y_AXIS, MOTOR_EN); JH_CTHL_NL_CL_MotorDelay = dwTickCount + 250; } if((JH_CTHL_NL_LianLengthAutoCheck ==0) || (JH_CTHL_NL_PARAM_CL_Length == 0)) { JH_CTHL_NL_LianLengthAutoCheck = 1000; JH_CTHL_NL_PARAM_CL_Length = 1000; } } // } else { JH_CTHL_NL_bCLMotor_O = 1; } } else { JH_CTHL_NL_HLJJ_VAVLE = 1; //Y20 合链夹具电磁阀输出后,电机穿入 JH_CTHL_NL_CL_MotorStep = 1; JH_CTHL_NL_CL_MotorDelay = dwTickCount + JH_CTHL_NL_PARAM_HLJJ_CL_DELAY; } } //一次穿链动作 if(JH_CTHL_NL_bCL_First) { JH_CTHL_NL_bCL_First = 0; //拉头模在上面到们并且码勾输出,判断有拉头 if(JH_CTHL_NL_CTXMSS_VAVLE && JH_CTHL_NL_MGuo_VAVLE && !JH_CTHL_NL_CXQJD_VAVLE && JH_CTHL_NL_CTM_Limit_IN && !JH_CTHL_NL_LTou_Check && (JH_CTHL_NL_CL_MotorStep == 0)) { JH_CTHL_NL_bCLFirst_Step = 19; JH_CTHL_NL_CXHJD_VAVLE = 1; //插销后夹带 JH_CTHL_NL_CXDWZ_VAVLE = 0; //插销定位针(到位)电磁阀 JH_CTHL_NL_CXQJD_VAVLE = 0; //插销前夹带 } } } } //初始化动作 void JH_CTHL_NL_InitAction(void) { float buff_pulse,buff_dist; buff_pulse = JH_CTHL_NL_PARAM_CYCLE_PULSE; buff_dist = JH_CTHL_NL_PARAM_CYCLE_LENGTH; XGearRatio = buff_pulse/buff_dist; buff_pulse = JH_CTHL_NL_PARAM_YCYCLE_PULSE; buff_dist = JH_CTHL_NL_PARAM_YCYCLE_LENGTH; YGearRatio = buff_pulse/buff_dist; //传递伺服齿轮比参数 #if X_USERING_TARR==1 set_com_servo_param(X_AXIS,JH_CTHL_NL_PARAM_CYCLE_PULSE,JH_CTHL_NL_PARAM_CYCLE_LENGTH); #endif #if Y_USERING_TARR==1 set_com_servo_param(Y_AXIS,JH_CTHL_NL_PARAM_YCYCLE_PULSE,JH_CTHL_NL_PARAM_YCYCLE_LENGTH); #endif JH_CTHL_NL_bZDP= 1; bYFirstDingWeiFlg = 1; user_datas[121] = 0; user_datas[122] = 0; user_datas[123] = 0; if(!JH_CTHL_NL_PARAM_MOTOR_ENSelect) SetEnReverse(X_AXIS, 1); else SetEnReverse(X_AXIS, 0); SetEnReverse(Y_AXIS, 1); SetEnReverse(Z_AXIS, 0); SetDirReverse(X_AXIS, 0); SetDirReverse(Y_AXIS, 0); SetDirReverse(Z_AXIS, 0); //设置伺服告警极性, //伺服设置常开,则极性设置为0, 0为正常,1为告警,; //伺服设置为常闭,则极性设置为1,0,为正常,1位告警 SetAlarmReverse(X_AXIS,0); SetAlarmReverse(Y_AXIS,1); SetServoComUse(X_AXIS,1);//X轴伺服扭矩通讯。 SetServoComUse(Y_AXIS,0);//Y轴正常模式。 SetEn(X_AXIS, MOTOR_DISEN); SetEn(Y_AXIS, MOTOR_DISEN); SetEn(Z_AXIS, MOTOR_DISEN); SetAlarmCode(JH_CTHL_NL_ALARM_ADDR,0); //警告要清除 JH_CTHL_NL_bSFBBAOJIN_Delay = dwTickCount + 2000; JH_CTHL_NL_X_EN_FLG=0; JH_CTHL_NL_Y_EN_FLG=0; JH_CTHL_NL_PARAM_CR_MODE=1; SF_ALARM_FLAG=1; //JH_CTHL_NL_SongDai_Step=1; // QDCT_SZ_OUT = QDCT_MOTOR_DISEN; } void JH_CTHL_NL_Action(void) { user_datas[121] = GetAlarm(X_AXIS); //user_datas[122] =GetAlarm(Y_AXIS); user_datas[123] =GetAlarm(Y_AXIS); dwXRealPos = GetPos(X_AXIS); dwYRealPos = GetPos(Y_AXIS); dwZRealPos = GetPos(Z_AXIS); user_datas[124] = dwXRealPos; user_datas[125] = JH_CTHL_NL_RunStepSave;//dwYRealPos; user_datas[126] = dwYRealPos;//JH_CTHL_NL_CL_MotorStep; user_datas[127] = GetAlarm(X_AXIS);//JH_CTHL_NL_TD_MotorStep; user_datas[128] = JH_CTHL_NL_TD_MotorStep;//JH_CTHL_NL_AutoStep; JH_CTHL_NL_ZhenDongAction(); if(JH_CTHL_NL_PARAM_SongDaiEn) JH_CTHL_NL_SongDaiAction(); JH_CTHL_NL_AlarmProtect(); JH_CTHL_NL_CheckStart(); JH_CTHL_NL_ZLT_Step(); JH_CTHL_NL_TLiao_Step(); JH_CTHL_NL_TD_Motor(); JH_CTHL_NL_CL_Motor(); JH_CTHL_NL_bFKCXTDDWStep(); JH_CTHL_NL_bCXCRStep(); JH_CTHL_NL_bCLFirstStep(); JH_CTHL_NL_HeMo(); JH_CTHL_NL_ManualAction(); JH_CTHL_NL_AutoStepAction(); servo_com_run(); CTHL_Running_state(); } #endif