JXSKQueDuanJi.c 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954
  1. #include "global.h"
  2. #if JU_XING_MACHINE ==1
  3. void SK_QueDuan_AlarmProtect(void);
  4. void SK_QueDuan_ManualAction(void);
  5. void SK_QueDuan_AutoAction(void);
  6. void SK_QueDuan_StepCheckStart(void);
  7. void SK_QueDuan_XiaQue(void);
  8. void SK_QueDuan_Motor(void);
  9. void SK_QueDuan_YuanDianAction(void);
  10. void SK_QueDuan_TuiLianAction(void);
  11. void SK_QueDuan_ExtiActionX31(void);
  12. void SK_QueDuan_BingLian(void);
  13. void SKQD_StopCode(void);
  14. void SKQD_TuiDaiAction(void);
  15. short *SKQD_length_buffer;
  16. void SKQD_SetAlarmCode(unsigned alarm_code)
  17. {
  18. SetAlarmCode(SKQD_ALARM_ADDR,alarm_code);
  19. bAlarmStop = 1;
  20. }
  21. void SK_QueDuan_ExtiActionX31(void)
  22. {
  23. cCheckLianFlg = 1;
  24. SKQD_cRealPos = GetPos(X_AXIS);
  25. }
  26. void SKQD_StopCode(void)
  27. {
  28. switch(SKQD_StopStep)
  29. {
  30. case 1:
  31. SKQD_StopStep=2;
  32. if(X_DRV)
  33. {
  34. AxisChangeSpeedDirect(X_AXIS,GetCurSpeed(X_AXIS) * 2/3);
  35. AxisDecStop(X_AXIS);
  36. }
  37. break;
  38. case 2:
  39. if(!X_DRV || (SKQD_cRealPos < 10))
  40. {
  41. SKQD_StopCodeDelay=dwTickCount+350;
  42. SKQD_StopStep = 3;
  43. }
  44. break;
  45. case 3:
  46. if(dwTickCount >= SKQD_StopCodeDelay)
  47. {
  48. if(!cSTOPONE)
  49. {
  50. SKQD_StopStep=0;
  51. }
  52. else
  53. {
  54. SKQD_SetAlarmCode(SKQD_PARAM_ANQUANMEN_ALARM);
  55. SKQD_StopStep=0;
  56. cSTOPONE=0;
  57. }
  58. SKQD_SZ_OUT = 1; //电机松轴
  59. }
  60. break;
  61. }
  62. switch(SKQD_CHUIQIStep)
  63. {
  64. case 1:
  65. SKQD_CQ_VAVLE=1;
  66. SKQD_CHUIQIStep=2;
  67. SKQD_ChuiQiDelay=dwTickCount+SKQD_PARAM_ChuiQi_TIME;
  68. break;
  69. case 2:
  70. if(dwTickCount >= SKQD_ChuiQiDelay)
  71. {
  72. SKQD_CQ_VAVLE=0;
  73. SKQD_CHUIQIStep=0;
  74. }
  75. break;
  76. }
  77. }
  78. void SK_QueDuan_InitAction(void)
  79. {
  80. float length_buff,pulse_buff;
  81. axis_x->speed_unit = 1; //速度频率倍率单位
  82. length_buff = SKQD_PARAM_CYCLE_LENGTH;
  83. pulse_buff = SKQD_PARAM_CYCLE_PULSE;
  84. XGearRatio = pulse_buff/length_buff;
  85. // SKQD_SZ_OUT = 1;
  86. // Motor_SZ(SKQD_MOTOR_DIS); //电机松轴
  87. SKQD_SetAlarmCode(0);
  88. SetDirReverse(X_AXIS, 1);
  89. }
  90. void SK_QueDuan_Action(void)
  91. {
  92. SK_QueDuan_AlarmProtect();
  93. SK_QueDuan_Motor();
  94. SK_QueDuan_XiaQue();
  95. SK_QueDuan_ManualAction();
  96. SK_QueDuan_TuiLianAction();
  97. SK_QueDuan_BingLian();
  98. SKQD_StopCode();
  99. SK_QueDuan_AutoAction();
  100. SK_QueDuan_StepCheckStart(); // 调用脚踏开关检测程序
  101. }
  102. //手动动作
  103. void SK_QueDuan_ManualAction(void)
  104. {
  105. //条数或扎数达到后,台面电机转两秒之后再停机
  106. if(cTABLETIME)
  107. {
  108. if(cTABLETOTAL)
  109. {
  110. cTABLETOTAL=0;
  111. SKQD_TABLE_VAVLE = 1;
  112. SKQD_TableDelay=dwTickCount + 2000;
  113. }
  114. if(dwTickCount >= SKQD_TableDelay)
  115. {
  116. SKQD_TABLE_VAVLE = 0;
  117. cTABLETIME=0;
  118. }
  119. }
  120. if(SKQD_HOUXIANWEI_UP && bRunning)
  121. {
  122. AxisEgmStop(X_AXIS);
  123. SKQD_SetAlarmCode(SKQD_PARAM_RUN_LENGTH_ALARM);
  124. }
  125. if(bRunning == 0)
  126. {
  127. cGoLimitEn = 0;
  128. if(SKQD_bClearTotal) //切断计数清零
  129. {
  130. SKQD_bClearTotal = 0;
  131. ClrcToTal(SKQD_TOTAL_ADDR);
  132. }
  133. if(SKQD_bClearNowTotal)
  134. {
  135. SKQD_bClearNowTotal = 0;
  136. SKQD_PARAM_NOW_CNT = 0;
  137. }
  138. if(SKQD_bXiaQie)
  139. {
  140. SKQD_bXiaQie = 0;
  141. if((SKQD_XiaQieStep == 0) && !SKQD_TL_VAVLE)
  142. {
  143. SKQD_XiaQieStep = 1;
  144. }
  145. }
  146. if(SKQD_bQianDianDW)
  147. {
  148. SKQD_bQianDianDW = 0;
  149. if(SKQD_MotorStep == 0)
  150. {
  151. SKQD_MotorStep = 61;
  152. cZipCnt = 0;
  153. }
  154. }
  155. if(SKQD_bTL)
  156. {
  157. SKQD_bTL = 0;
  158. if(SKQD_TL_VAVLE)
  159. {
  160. SKQD_TL_VAVLE = 0;
  161. }
  162. else if(!SKQD_GZ_VAVLE && !SKQD_SM_VAVLE)
  163. {
  164. SKQD_TL_VAVLE = ~SKQD_TL_VAVLE;
  165. }
  166. }
  167. if(SKQD_bYD)
  168. {
  169. SKQD_bYD = 0;
  170. SKQD_YD_VAVLE = ~SKQD_YD_VAVLE;
  171. }
  172. if(SKQD_bHuLian)
  173. {
  174. SKQD_bHuLian=0;
  175. SKQD_HULIAN_VAVLE = ~SKQD_HULIAN_VAVLE;
  176. }
  177. if(SKQD_bGZ)
  178. {
  179. SKQD_bGZ = 0;
  180. // SKQD_GZ_VAVLE = ~SKQD_GZ_VAVLE;
  181. }
  182. if(SKQD_bYD_ONE)
  183. {
  184. SKQD_bYD_ONE = 0;
  185. SKQD_YD_ONE_VAVLE = ~SKQD_YD_ONE_VAVLE;
  186. }
  187. if(SKQD_bJD)
  188. {
  189. SKQD_bJD = 0;
  190. SKQD_JD_VAVLE = ~SKQD_JD_VAVLE;
  191. }
  192. if(SKQD_bXM)
  193. {
  194. SKQD_bXM = 0;
  195. SKQD_XM_VAVLE = ~SKQD_XM_VAVLE;
  196. if(!SKQD_XM_VAVLE)SKQD_GZ_VAVLE = 0;
  197. }
  198. if(SKQD_GOUZHEN_IN_DW)
  199. {
  200. SKQD_YD_VAVLE=1;
  201. }
  202. if(SKQD_bSM)
  203. {
  204. SKQD_bSM = 0;
  205. if(SKQD_SM_VAVLE)
  206. SKQD_SM_VAVLE = 0;
  207. else if(!SKQD_TL_VAVLE)
  208. SKQD_SM_VAVLE = 1;
  209. }
  210. //台面电机
  211. if(SKQD_bTB)
  212. {
  213. SKQD_bTB = 0;
  214. SKQD_TABLE_VAVLE = ~SKQD_TABLE_VAVLE;
  215. }
  216. if(SKQD_bTestCS)
  217. {
  218. SKQD_bTestCS = 0;
  219. SKQD_CS_OUT = 1;
  220. SKQD_CSDelay = dwTickCount + SKQD_PARAM_CS_TIME;
  221. }
  222. if(SKQD_bBL)//吹气
  223. {
  224. SKQD_bBL = 0;
  225. SKQD_BL_VAVLE = ~SKQD_BL_VAVLE;
  226. }
  227. if(SKQD_bHL) //护链,双开用
  228. {
  229. SKQD_bHL = 0;
  230. SKQD_HL_VAVLE = ~SKQD_HL_VAVLE;
  231. }
  232. if(SKQD_bYX)
  233. {
  234. SKQD_bYX = 0;
  235. SKQD_YX_VAVLE = ~SKQD_YX_VAVLE;
  236. }
  237. if(SKQD_XiaQieStep == 0)
  238. {
  239. if(dwTickCount >= SKQD_CSDelay)SKQD_CS_OUT = 0;
  240. }
  241. //电机控制
  242. if(SKQD_QIAN_LIMIT_IN && SKQD_bGoMotor)
  243. {
  244. AxisEgmStop(X_AXIS);
  245. }
  246. if(SKQD_bGoMotor && !SKQD_QIAN_LIMIT_IN)
  247. {
  248. SKQD_SZ_OUT = 0;
  249. // SKQD_JZ_DIR = SKQD_YDIR_N;
  250. if(!X_DRV)
  251. AxisContinueMoveAcc(X_AXIS,SKQD_PARAM_GO_LOW_SPEED,SKQD_DIR_N,SKQD_PARAM_GO_LOW_SPEED,SKQD_PARAM_GO_LOW_SPEED,10,12);
  252. }
  253. if(SKQD_HOUXIANWEI && SKQD_bBackMotor)
  254. {
  255. AxisEgmStop(X_AXIS);
  256. }
  257. if(SKQD_bBackMotor && !SKQD_HOUXIANWEI) //后退限位已经取消
  258. {
  259. SKQD_SZ_OUT = 0;
  260. // SKQD_JZ_DIR = SKQD_YDIR_P;
  261. if(!X_DRV)
  262. AxisContinueMoveAcc(X_AXIS,SKQD_PARAM_GO_LOW_SPEED,SKQD_DIR_P,SKQD_PARAM_GO_LOW_SPEED,SKQD_PARAM_GO_LOW_SPEED,10,12);
  263. }
  264. if(!SKQD_bGoMotor && !SKQD_bBackMotor && (SKQD_MotorStep == 0))
  265. {
  266. if(X_DRV)AxisDecStop(X_AXIS);
  267. }
  268. if(SKQD_QIAN_LIMIT_IN && (SKQD_MotorStep == 0) && !SKQD_bBackMotor &&(SKQD_AutoStep == 0))
  269. {
  270. if(X_DRV)AxisEgmStop(X_AXIS);
  271. }
  272. }
  273. }
  274. void SK_QueDuan_AlarmProtect(void)
  275. {
  276. SKQD_cRealPos = GetPos(X_AXIS);
  277. if(!bRunning)
  278. {
  279. ;
  280. //
  281. #if 0
  282. if(SKQD_BACK_LIMIT_IN_UP)
  283. {
  284. if((SKQD_MotorStep == 0) && X_DRV && SKQD_bBackMotor) //到后限不能再后退但可以点前进
  285. {
  286. SKQD_bBackMotor = 0;
  287. AxisDecStop(X_AXIS);
  288. SKQD_JD_VAVLE = 0;
  289. SKQD_SetAlarmCode(SKQD_BACK_ALARM);
  290. }
  291. }
  292. #endif
  293. }
  294. else
  295. {
  296. if((SKQD_cRealPos > SKQD_PARAM_RUN_LENGTH) && (SKQD_PARAM_RUN_LENGTH > 3000)
  297. && (cGoLimitEn != 0))
  298. {
  299. AxisEgmStop(X_AXIS);
  300. SKQD_JD_VAVLE = 0;
  301. SKQD_SetAlarmCode(SKQD_BACK_ALARM);
  302. }
  303. }
  304. }
  305. void SK_QueDuan_AutoAction(void)
  306. {
  307. //台面电机定时关掉
  308. if(SKQD_QIAN_STOP_Auto)
  309. {
  310. cDLJ_ATUO=1;
  311. AxisEgmStop(X_AXIS);
  312. }
  313. if(SKQD_QIAN_START_Auto)
  314. {
  315. if(cDLJ_ATUO)
  316. {
  317. cDLJ_ATUO=0;
  318. SKQD_AutoDelay = dwTickCount + 1000;
  319. SKQD_MotorDelay = dwTickCount + 2000;
  320. if((SKQD_MotorStep==63 || SKQD_MotorStep==64 || SKQD_MotorStep==65) && !SKQD_QIAN_LIMIT_IN)
  321. AxisContinueMoveAcc(X_AXIS,SKQD_PARAM_GO_LOW_SPEED,SKQD_DIR_N,SKQD_PARAM_GO_LOW_SPEED/3,SKQD_PARAM_GO_LOW_SPEED/3,15,15);
  322. else if((SKQD_cRealPos < SKQD_PARAM_ZIPPER_LENGTH) && (SKQD_MotorStep > 311))
  323. AxisMoveTwoPos(X_AXIS,1000,(SKQD_PARAM_ZIPPER_LENGTH - SKQD_cRealPos) + (*SKQD_length_buffer),
  324. SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_BACK_LOW_SPEED_LENGTH,SKQD_DIR_P,5000,3000,20,30);
  325. }
  326. }
  327. if(!cDLJ_ATUO)
  328. {
  329. if(bRunning)
  330. {
  331. if(!cTABLETIME)
  332. {
  333. if(dwTickCount >= SKQD_TBDelay)
  334. SKQD_TABLE_VAVLE = 0;
  335. }
  336. switch(SKQD_AutoStep)
  337. {
  338. case 1:
  339. if(dwTickCount >= SKQD_AutoDelay)
  340. {
  341. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  342. {
  343. SKQD_AutoStep = 2;
  344. if(SKQD_MotorStep == 0)
  345. {
  346. SKQD_MotorStep = 61; //前点定位
  347. }
  348. cGoLimitEn = 0;
  349. }
  350. }
  351. break;
  352. case 2:
  353. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  354. {
  355. if(SKQD_MotorStep == 0)
  356. {
  357. SKQD_MotorStep = 30;
  358. SKQD_AutoStep = 3;
  359. cGoLimitEn = 1;
  360. }
  361. }
  362. break;
  363. case 3:
  364. if(SKQD_MotorStep == 0)
  365. {
  366. if(SKQD_SAFE_IN)
  367. {
  368. bStop = 1;
  369. }
  370. else
  371. {
  372. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  373. {
  374. if(SKQD_MotorStep==0)
  375. {
  376. if(SKQD_XiaQieStep == 0)
  377. SKQD_XiaQieStep = 1;
  378. SKQD_AutoStep = 4;
  379. }
  380. }
  381. }
  382. }
  383. break;
  384. case 4:
  385. // 闭口
  386. if((SKQD_XiaQieStep == 0) || ((SKQD_XiaQieStep == 6) && SKQD_KB_MODE)|| ((SKQD_XiaQieStep == 14) && (SKQD_KB_MODE == 0)))// && !SKQD_SHANG_MU_LIMIT_IN)
  387. {
  388. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  389. {
  390. if(SKQD_MotorStep == 0)
  391. {
  392. cGoLimitEn=0;
  393. SKQD_MotorStep = 40; //切完后退
  394. }
  395. SKQD_AutoStep = 5;
  396. }
  397. }
  398. break;
  399. case 5:
  400. if(SKQD_MotorStep == 0)
  401. {
  402. cZipCnt++;
  403. SKQD_PARAM_NOW_CNT++;
  404. cTableCnt++;
  405. AddToTal(SKQD_TOTAL_ADDR);
  406. AddToTal(CT_WORKTOTAL_ADDR);
  407. CalProSP(SKQD_PROSPEED_ADDR);
  408. if(cTableCnt >= SKQD_PARAM_TABLE_NUM)
  409. {
  410. cTableCnt = 0;
  411. SKQD_TABLE_VAVLE = 1;
  412. SKQD_TBDelay = dwTickCount + SKQD_PARAM_TB_TIME;
  413. }
  414. if( SingOneFlg || cZhouWanone)
  415. {
  416. {
  417. cZhouWanone=0;
  418. cStopMode=0;
  419. bRunning = 0;
  420. SKQD_AutoStep = 0;
  421. SingOneFlg = 0;
  422. SKQD_TABLE_VAVLE = 0;
  423. }
  424. // if(GetTotal(SKQD_TOTAL_ADDR) >= SKQD_PARAM_SET_TOTAL) SKQD_SetAlarmCode(SKQD_TOTAL_ALARM);
  425. }
  426. else
  427. {
  428. SKQD_AutoStep = 1;
  429. if((SKQD_PARAM_NOW_CNT >= SKQD_PARAM_ZHA_SHU) && (SKQD_PARAM_ZHA_SHU > 0))
  430. {
  431. SKQD_AutoDelay = dwTickCount + SKQD_PARAM_ZS_STOP_TIME;
  432. SKQD_PARAM_NOW_CNT = 0;
  433. cTABLETIME = 1;
  434. cTABLETOTAL= 1;
  435. if(SKQD_PARAM_ZS_STOP_TIME == 0)
  436. {
  437. bRunning = 0;
  438. SKQD_AutoStep = 0;
  439. SingOneFlg = 0;
  440. cTABLETIME = 1;
  441. cTABLETOTAL= 1;
  442. SKQD_SetAlarmCode(SKQD_TOTAL_ALARM);
  443. }
  444. }
  445. else
  446. SKQD_AutoDelay = dwTickCount + SKQD_PARAM_CYCLE_DELAY;
  447. }
  448. }
  449. break;
  450. }
  451. }
  452. }
  453. }
  454. void SK_QueDuan_StepCheckStart(void)
  455. {
  456. if(SKQD_DANXUNHUAN_LIMIT_IN_UP)
  457. {
  458. SKQD_bSingle=1;
  459. }
  460. // 启动
  461. if((SKQD_START_IN_UP) || bStart || SKQD_bSingle)
  462. {
  463. bStart = 0;
  464. if(!bRunning && (SKQD_AutoStep == 0))
  465. {
  466. if(SKQD_XIA_MU_LIMIT_IN && !SKQD_PARAM_XM_ENABLE)SKQD_SetAlarmCode(SKQD_XM_DAOWEI);
  467. // else if(GetAlarmCode(SKQD_ALARM_ADDR) != 0);
  468. //else if(GetTotal(SKQD_TOTAL_ADDR) >= SKQD_PARAM_SET_TOTAL) SKQD_SetAlarmCode(SKQD_TOTAL_ALARM);
  469. // else if(SKQD_BL_VAVLE)SKQD_SetAlarmCode(SKQD_BL_ALARM);
  470. else if(SKQD_SM_VAVLE)SKQD_SetAlarmCode(SKQD_SM_ALARM);
  471. else
  472. {
  473. bRunning = 1;
  474. SKQD_AutoStep = 1;
  475. if(SKQD_PARAM_BL_ENABLE)
  476. SKQD_PARAM_BL_ENABLE=1 ; //并链起动
  477. if(SKQD_bSingle)
  478. SingOneFlg= 1;
  479. cZipCnt = 0;
  480. cTABLETIME = 0;
  481. cTABLETOTAL= 0;
  482. cSTOPONE=0;
  483. cTuiFangKuaiCnt = 0;
  484. SKQD_BL_VAVLE = 0; //并链关
  485. cDLJ_ATUO=0;
  486. SKQD_HULIAN_VAVLE=1;
  487. SKQD_YD_ONE_VAVLE=1;
  488. SKQD_DGLG_VAVLE = 0; //顶过链杆关
  489. SetAlarmCode(SKQD_ALARM_ADDR,0);
  490. }
  491. }
  492. SKQD_bSingle = 0;
  493. }
  494. //停止
  495. if(bStop)
  496. {
  497. bStop = 0;
  498. if(cStopMode < 2)
  499. cStopMode++;
  500. if(cStopMode==1 && bRunning)
  501. cZhouWanone=1;
  502. if(bRunning && cStopMode==2)
  503. {
  504. SKQD_AutoDelay = dwTickCount;
  505. SKQD_MotorDelay = dwTickCount;
  506. SKQD_XiaQieDelay = dwTickCount;
  507. SKQD_KaDaiDelay = dwTickCount;
  508. SKQD_CSDelay = dwTickCount;
  509. SKQD_TBDelay = dwTickCount;
  510. SKQD_TFKDelay = dwTickCount;
  511. SKQD_TLDelay = dwTickCount;
  512. dwTickCount = SKQD_TBDelay;
  513. SingOneFlg = 0;
  514. bRunning = 0;
  515. SKQD_XiaQieStep = 0;
  516. SKQD_AutoStep = 0;
  517. SKQD_MotorStep = 0;
  518. SKQD_TuiLianStep = 0;
  519. SKQD_JD_VAVLE = 0;
  520. SKQD_SM_VAVLE = 0;
  521. SKQD_XM_VAVLE = 0;
  522. SKQD_YD_VAVLE = 0;
  523. SKQD_TFK_VAVLE= 0;
  524. SKQD_TL_VAVLE = 0;
  525. SKQD_HL_VAVLE = 0;
  526. SKQD_HULIAN_VAVLE=0;
  527. SKQD_YD_ONE_VAVLE=0;
  528. SKQD_CS_OUT = 0;
  529. SKQD_XiaQieStep = 0;
  530. SKQD_MotorStep = 0;
  531. SKQD_TuiLianStep = 0;
  532. //SKQD_SZ_OUT = 1;
  533. SKQD_GZ_VAVLE = 0;
  534. SKQD_TABLE_VAVLE = 0;
  535. SKQD_DGLG_VAVLE = 0; //顶过链杆关
  536. if((SKQD_StopStep == 0) && X_DRV)
  537. SKQD_StopStep = 1;
  538. SKQD_BinLianStep = 0;
  539. SKQD_BL_VAVLE = 0;
  540. cTABLETIME = 0;
  541. cTABLETOTAL= 0;
  542. user_datas[121] = 0;
  543. user_datas[122] = 0;
  544. SetAlarmCode(SKQD_ALARM_ADDR,0);
  545. }
  546. else if(!bRunning)
  547. {
  548. SKQD_AutoDelay = dwTickCount;
  549. SKQD_MotorDelay = dwTickCount;
  550. SKQD_XiaQieDelay = dwTickCount;
  551. SKQD_KaDaiDelay = dwTickCount;
  552. SKQD_CSDelay = dwTickCount;
  553. SKQD_TBDelay = dwTickCount;
  554. SKQD_TFKDelay = dwTickCount;
  555. SKQD_TLDelay = dwTickCount;
  556. dwTickCount = SKQD_TBDelay;
  557. SKQD_CHUIQIStep=0;
  558. SingOneFlg = 0;
  559. SKQD_HULIAN_VAVLE=0;
  560. SKQD_YD_ONE_VAVLE=0;
  561. SKQD_JD_VAVLE = 0;
  562. SKQD_SM_VAVLE = 0;
  563. SKQD_XM_VAVLE = 0;
  564. SKQD_YD_VAVLE = 0;
  565. SKQD_TFK_VAVLE= 0;
  566. SKQD_YX_VAVLE = 0;
  567. SKQD_HL_VAVLE = 0;
  568. cStopMode=0;
  569. cZhouWanone=0;
  570. SKQD_TL_VAVLE = 0;
  571. SKQD_DGLG_VAVLE = 0; //顶过链杆关
  572. SKQD_CS_OUT = 0;
  573. SKQD_XiaQieStep = 0;
  574. SKQD_MotorStep = 0;
  575. SKQD_TuiLianStep = 0;
  576. SKQD_SZ_OUT = 1;
  577. SKQD_GZ_VAVLE = 0;
  578. SKQD_TABLE_VAVLE = 0;
  579. if((SKQD_StopStep == 0))
  580. {
  581. SK_cSTOPONE = 0;
  582. AxisEgmStop(X_AXIS);
  583. SKQD_SZ_OUT = 1;
  584. }
  585. cTABLETIME = 0;
  586. cTABLETOTAL= 0;
  587. SKQD_BinLianStep = 0;
  588. SKQD_BL_VAVLE = 0;
  589. SetAlarmCode(SKQD_ALARM_ADDR,0);
  590. bRunning = 0;
  591. SKQD_XiaQieStep = 0;
  592. SKQD_AutoStep = 0;
  593. SKQD_MotorStep = 0;
  594. SKQD_TuiLianStep = 0;
  595. }
  596. }
  597. if(SKQD_STOP_IN_UP )
  598. {
  599. if(bRunning)
  600. {
  601. SKQD_AutoDelay = dwTickCount;
  602. SKQD_MotorDelay = dwTickCount;
  603. SKQD_XiaQieDelay = dwTickCount;
  604. SKQD_KaDaiDelay = dwTickCount;
  605. SKQD_CSDelay = dwTickCount;
  606. SKQD_TBDelay = dwTickCount;
  607. SKQD_TFKDelay = dwTickCount;
  608. SKQD_TLDelay = dwTickCount;
  609. dwTickCount = SKQD_TBDelay;
  610. SingOneFlg = 0;
  611. bRunning = 0;
  612. SKQD_XiaQieStep = 0;
  613. SKQD_AutoStep = 0;
  614. SKQD_MotorStep = 0;
  615. SKQD_TuiLianStep = 0;
  616. SKQD_JD_VAVLE = 0;
  617. SKQD_SM_VAVLE = 0;
  618. SKQD_XM_VAVLE = 0;
  619. SKQD_YD_VAVLE = 0;
  620. SKQD_TFK_VAVLE= 0;
  621. SKQD_TL_VAVLE = 0;
  622. SKQD_HL_VAVLE = 0;
  623. SKQD_HULIAN_VAVLE=0;
  624. SKQD_YD_ONE_VAVLE=0;
  625. SKQD_CS_OUT = 0;
  626. SKQD_XiaQieStep = 0;
  627. SKQD_MotorStep = 0;
  628. SKQD_TuiLianStep = 0;
  629. //SKQD_SZ_OUT = 1;
  630. SKQD_GZ_VAVLE = 0;
  631. SKQD_TABLE_VAVLE = 0;
  632. SKQD_DGLG_VAVLE = 0; //顶过链杆关
  633. if((SKQD_StopStep == 0) && X_DRV)
  634. SKQD_StopStep = 1;
  635. SKQD_BinLianStep = 0;
  636. SKQD_BL_VAVLE = 0;
  637. cTABLETIME = 0;
  638. cTABLETOTAL= 0;
  639. user_datas[121] = 0;
  640. user_datas[122] = 0;
  641. SetAlarmCode(SKQD_ALARM_ADDR,0);
  642. }
  643. else if(!bRunning)
  644. {
  645. SKQD_AutoDelay = dwTickCount;
  646. SKQD_MotorDelay = dwTickCount;
  647. SKQD_XiaQieDelay = dwTickCount;
  648. SKQD_KaDaiDelay = dwTickCount;
  649. SKQD_CSDelay = dwTickCount;
  650. SKQD_TBDelay = dwTickCount;
  651. SKQD_TFKDelay = dwTickCount;
  652. SKQD_TLDelay = dwTickCount;
  653. dwTickCount = SKQD_TBDelay;
  654. SKQD_CHUIQIStep=0;
  655. SingOneFlg = 0;
  656. SKQD_HULIAN_VAVLE=0;
  657. SKQD_YD_ONE_VAVLE=0;
  658. SKQD_JD_VAVLE = 0;
  659. SKQD_SM_VAVLE = 0;
  660. SKQD_XM_VAVLE = 0;
  661. SKQD_YD_VAVLE = 0;
  662. SKQD_TFK_VAVLE= 0;
  663. SKQD_YX_VAVLE = 0;
  664. SKQD_HL_VAVLE = 0;
  665. cStopMode=0;
  666. cZhouWanone=0;
  667. SKQD_TL_VAVLE = 0;
  668. SKQD_DGLG_VAVLE = 0; //顶过链杆关
  669. SKQD_CS_OUT = 0;
  670. SKQD_XiaQieStep = 0;
  671. SKQD_MotorStep = 0;
  672. SKQD_TuiLianStep = 0;
  673. SKQD_SZ_OUT = 1;
  674. SKQD_GZ_VAVLE = 0;
  675. SKQD_TABLE_VAVLE = 0;
  676. if((SKQD_StopStep == 0))
  677. {
  678. SK_cSTOPONE = 0;
  679. AxisEgmStop(X_AXIS);
  680. SKQD_SZ_OUT = 1;
  681. }
  682. cTABLETIME = 0;
  683. cTABLETOTAL= 0;
  684. SKQD_BinLianStep = 0;
  685. SKQD_BL_VAVLE = 0;
  686. SetAlarmCode(SKQD_ALARM_ADDR,0);
  687. bRunning = 0;
  688. SKQD_XiaQieStep = 0;
  689. SKQD_AutoStep = 0;
  690. SKQD_MotorStep = 0;
  691. SKQD_TuiLianStep = 0;
  692. }
  693. }
  694. if(bAlarmStop)
  695. {
  696. bAlarmStop = 0;
  697. SKQD_XiaQieStep = 0;
  698. SKQD_AutoStep = 0;
  699. SKQD_MotorStep = 0;
  700. SKQD_TuiLianStep = 0;
  701. SKQD_XiaQieStep = 0;
  702. SKQD_MotorStep = 0;
  703. SKQD_TuiLianStep = 0;
  704. SKQD_AutoDelay = dwTickCount;
  705. SKQD_MotorDelay = dwTickCount;
  706. SKQD_XiaQieDelay = dwTickCount;
  707. SKQD_KaDaiDelay = dwTickCount;
  708. SKQD_CSDelay = dwTickCount;
  709. SKQD_TBDelay = dwTickCount;
  710. SKQD_TFKDelay = dwTickCount;
  711. SKQD_TLDelay = dwTickCount;
  712. SingOneFlg = 0;
  713. bRunning = 0;
  714. SKQD_StopStep=1;
  715. cStopMode=0;
  716. cZhouWanone=0;
  717. dwTickCount = SKQD_TBDelay;
  718. SKQD_TABLE_VAVLE = 0;
  719. SKQD_TFK_VAVLE =0;
  720. SKQD_JD_VAVLE=0;
  721. SKQD_GZ_VAVLE=0;
  722. }
  723. }
  724. //记忆长度模式误差检测
  725. void SK_QueDuan_CheckLength(long zip_length)
  726. {
  727. static long start_dist;
  728. switch(SKQD_CheckLengthStep)
  729. {
  730. case 0:break;
  731. case 1:
  732. start_dist = SKQD_cRealPos;
  733. dwSaveLength = 0;
  734. SKQD_CheckLengthStep = 2;
  735. break;
  736. case 2:
  737. if(SKQD_GUO_LIAN_IN_DW)
  738. {
  739. dwSaveLength = SKQD_cRealPos - start_dist;
  740. // user_datas[127] = SKQD_cRealPos;
  741. }
  742. break;
  743. }
  744. }
  745. void SK_QueDuan_BingLian(void)
  746. {
  747. static long bl_pos_buff,HL_delay;
  748. switch(SKQD_BinLianStep)
  749. {
  750. case 1:
  751. bl_pos_buff = SKQD_cRealPos;
  752. SKQD_BinLianStep = 2;
  753. break;
  754. case 2:
  755. if((SKQD_cRealPos - bl_pos_buff) >= SKQD_PARAM_DELAY_HL_LENGTH)
  756. {
  757. SKQD_BL_VAVLE = 1;
  758. SKQD_BinLianStep = 3;
  759. }
  760. break;
  761. case 3://有过链检测
  762. if((SKQD_cRealPos - bl_pos_buff) >= (SKQD_PARAM_ZIPPER_LENGTH - SKQD_PARAM_HL_DELAY_BACK))
  763. {
  764. SKQD_BL_VAVLE = 0;
  765. SKQD_BinLianStep = 0;
  766. }
  767. if(SKQD_GUO_LIAN_IN_DW && SKQD_PARAM_BACK_MODE ==1) //|| (SKQD_PARAM_BACK_MODE==2 && cZipCnt < 2)))
  768. {
  769. SKQD_BL_VAVLE = 0;
  770. SKQD_BinLianStep = 0;
  771. }
  772. break;
  773. case 10:
  774. bl_pos_buff = SKQD_cRealPos;
  775. SKQD_BinLianStep = 11;
  776. break;
  777. case 11:
  778. if((SKQD_cRealPos - bl_pos_buff) >= SKQD_PARAM_DELAY_HL_LENGTH)
  779. {
  780. SKQD_BL_VAVLE = 1;
  781. SKQD_BinLianStep = 12;
  782. }
  783. break;
  784. case 12://有过链检测
  785. if(SKQD_GUO_LIAN_IN_DW)
  786. {
  787. SKQD_BL_VAVLE = 0;
  788. SKQD_BinLianStep = 0;
  789. }
  790. break;
  791. default:;
  792. }
  793. }
  794. #if SKQD_KB_MODE==1 //闭口
  795. //作闭口专用程序
  796. //不带过链感应长度输入电机长度 闭口有勾针到位
  797. void SK_QueDuan_Motor_NoGL(void)
  798. {
  799. static long save_buff,length_buff,gou_zhen_buff,checkdelay_buff,dandao_buff,back_buff,gouzhen_buff,go_buff,go_length_buff,jz_buff;
  800. long pulse_buff;
  801. unsigned short ch,kk;
  802. user_datas[121] = SKQD_MotorStep;
  803. user_datas[122] = SKQD_AutoStep;
  804. user_datas[124]= SKQD_cRealPos;
  805. user_datas[125]= bRunning;
  806. // user_datas[123] = length_buff - (*SKQD_length_buffer);
  807. // user_datas[127] = SKQD_cRealPos;
  808. // user_datas[126] = go_buff - SKQD_cRealPos;
  809. if(!cDLJ_ATUO)
  810. {
  811. switch(SKQD_MotorStep)
  812. {
  813. case 30:
  814. switch(SKQD_PARAM_BACK_MODE) //开口分四种模式
  815. {
  816. case 0: //单数控模式
  817. SKQD_MotorStep = 310; //每种模式留20步
  818. SKQD_DGLG_VAVLE = 1; //顶过链杆关
  819. break;
  820. case 1://单感应模式
  821. SKQD_MotorStep = 330; //每种模式留20步
  822. SKQD_DGLG_VAVLE = 0;
  823. break;
  824. case 2: //先感应后数控模式+检测
  825. SKQD_MotorStep = 350; //每种模式留20步
  826. SKQD_DGLG_VAVLE = 0;
  827. break;
  828. default: //数控模式+过链检测长度
  829. break;
  830. }
  831. SKQD_MotorDelay = dwTickCount + SKQD_PARAM_DELAY_BACK;
  832. break;
  833. case 310:
  834. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  835. {
  836. SKQD_MotorDelay = dwTickCount + SKQD_PARAM_DELAY_BACK;
  837. SetDir(X_AXIS, SKQD_DIR_P);
  838. SKQD_JZ_DIR = SKQD_YDIR_P;
  839. SetPos(X_AXIS, 0);
  840. SKQD_DGLG_VAVLE = 1; //顶过链杆关
  841. SKQD_length_buffer = &SKQD_PARAM_OFFSET_LENGTH;
  842. if(SKQD_PARAM_BL_ENABLE) //
  843. SKQD_BinLianStep = 1;
  844. SKQD_MotorStep = 311;
  845. }
  846. break;
  847. case 311:
  848. if(dwTickCount >= SKQD_MotorDelay)
  849. {
  850. back_buff = SKQD_cRealPos;
  851. gou_zhen_buff = SKQD_cRealPos;
  852. save_buff = SKQD_cRealPos;
  853. SKQD_length_buffer = &SKQD_PARAM_OFFSET_LENGTH;
  854. DCC_TIME_BL=SKQD_PARAM_GO_HIGH_SPEED/500;
  855. AxisMovePosAccDecNotStop(X_AXIS,SKQD_PARAM_BACK_SPEED,SKQD_PARAM_ZIPPER_LENGTH + (*SKQD_length_buffer), SKQD_PARAM_START_SPEED,SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_ACC,DCC_TIME_BL,SKQD_PARAM_BACK_LOW_SPEED_LENGTH);
  856. SKQD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME;
  857. SKQD_MotorStep = 312;
  858. }
  859. break;
  860. case 312:
  861. //勾针提前输出
  862. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_GOUZHEN_LENGTH ))
  863. SKQD_GZ_VAVLE = 1;
  864. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_YaDai_LENGTH ))
  865. SKQD_YD_ONE_VAVLE = 1;
  866. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_HuLian_LENGTH ))
  867. SKQD_HULIAN_VAVLE = 1;
  868. if((SKQD_cRealPos) > (SKQD_PARAM_ZIPPER_LENGTH + (*SKQD_length_buffer) - SKQD_PARAM_BACK_LOW_SPEED_LENGTH)) //- (*SKQD_length_buffer) - (SKQD_PARAM_BACK_LOW_SPEED_LENGTH + PulseToPos(X_AXIS,MV_Cal_Dec_pulse(SKQD_PARAM_BACK_SPEED,SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_DCC)))))
  869. {
  870. SKQD_MotorDelay = dwTickCount + 3000; //钩针未到位延时警告
  871. SKQD_MotorStep = 313;
  872. }
  873. break;
  874. case 313:
  875. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_GOUZHEN_LENGTH ))
  876. {
  877. SKQD_GZ_VAVLE = 1;
  878. }
  879. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_YaDai_LENGTH ))
  880. SKQD_YD_ONE_VAVLE = 1;
  881. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_HuLian_LENGTH ))
  882. SKQD_HULIAN_VAVLE = 1;
  883. if(!SKQD_GOUZHEN_IN)
  884. {
  885. AxisEgmStop(X_AXIS);
  886. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  887. {
  888. SKQD_MotorDelay = dwTickCount + 10;
  889. SKQD_YD_VAVLE = 1;
  890. SKQD_MotorStep = 314;
  891. SKQD_BL_VAVLE = 0; //停止时并链一定要打开
  892. }
  893. }
  894. else if((SKQD_cRealPos >= SKQD_PARAM_ZIPPER_LENGTH + 200 + (*SKQD_length_buffer)))// 长度超出2CM就警告
  895. {
  896. AxisEgmStop(X_AXIS);
  897. if(dwTickCount >= SKQD_MotorDelay)
  898. SKQD_SetAlarmCode(SKQD_GZ_ALARM);
  899. }
  900. break;
  901. case 314:
  902. if(!X_DRV && (dwTickCount >= SKQD_MotorDelay))
  903. {
  904. SKQD_MotorDelay = dwTickCount + VAVLE_ALARM_TIME;
  905. SKQD_YD_VAVLE = 1;
  906. SKQD_MotorStep = 315;
  907. }
  908. break;
  909. case 315:
  910. if(cZipCnt == 0)
  911. {
  912. ch = SKQD_PARAM_ZIPPER_LENGTH + (*SKQD_length_buffer)-SKQD_PARAM_WC_LENGTH;
  913. kk = SKQD_PARAM_ZIPPER_LENGTH + (*SKQD_length_buffer)+SKQD_PARAM_WC_LENGTH;
  914. }
  915. else
  916. {
  917. ch = SKQD_PARAM_ZIPPER_LENGTH + (*SKQD_length_buffer)-SKQD_PARAM_WC_LENGTH;
  918. kk = SKQD_PARAM_ZIPPER_LENGTH + (*SKQD_length_buffer)+SKQD_PARAM_WC_LENGTH;
  919. }
  920. if(SKQD_cRealPos < ch)
  921. {
  922. SetAlarmCode(SKQD_ALARM_ADDR,SKQD_LENGTH_SHORT_ALARM);
  923. if(dwTickCount >= SKQD_MotorDelay)
  924. bAlarmStop = 1;
  925. }
  926. else if(SKQD_cRealPos > kk)
  927. {
  928. SetAlarmCode(SKQD_ALARM_ADDR,SKQD_LENGTH_LONG_ALARM);
  929. if(dwTickCount >= SKQD_MotorDelay)
  930. bAlarmStop = 1;
  931. }
  932. else
  933. {
  934. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  935. {
  936. SKQD_MotorStep = 390;
  937. }
  938. }
  939. break;
  940. case 330:
  941. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  942. {
  943. back_buff = SKQD_cRealPos;
  944. gou_zhen_buff = SKQD_cRealPos;
  945. save_buff = SKQD_cRealPos;
  946. SKQD_MotorStep = 331;
  947. SetDir(X_AXIS, SKQD_DIR_P);
  948. }
  949. break;
  950. case 331:
  951. if(dwTickCount >= SKQD_MotorDelay)
  952. {
  953. SKQD_MotorStep = 332;
  954. if(cZipCnt < 2)
  955. {
  956. if(SKQD_PARAM_BL_ENABLE)
  957. SKQD_BinLianStep = 10; //并链起动
  958. //第一条都是过链感应,后拉速度减半//原来SKQD_PARAM_CHECK_BACK_HSPEED/2
  959. // X轴 运行速度 启动速度 加速度 减速度
  960. AxisContinueMoveAcc(X_AXIS,SKQD_PARAM_CHECK_BACK_HSPEED,SKQD_DIR_P,SKQD_PARAM_START_SPEED,1000,8,13);
  961. }
  962. else
  963. {
  964. if(SKQD_PARAM_BL_ENABLE)
  965. SKQD_BinLianStep = 1; //并链起动
  966. //因为每条都是过链感应,所以直接运行检测模式后拉速度
  967. // X轴 运行速度 启动速度 加速度 减速度
  968. AxisContinueMoveAcc(X_AXIS,SKQD_PARAM_BACK_SPEED,SKQD_DIR_P,SKQD_PARAM_START_SPEED,1000,SKQD_PARAM_ACC,SKQD_PARAM_DCC);
  969. }
  970. }
  971. break;
  972. case 332:
  973. if(cZipCnt > 1) //第三条开始数控降速
  974. {
  975. if((SKQD_cRealPos + SKQD_PARAM_BACK_LOW_SPEED_LENGTH + 300)>= length_buff)
  976. {
  977. AxisContinueMoveChangeSpeed(X_AXIS,SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_BACK_LOW_SPEED/2,25,15);
  978. SKQD_MotorStep = 334; //到检测定位
  979. }
  980. if(SKQD_GUO_LIAN_IN_UP) //重新到链上
  981. {
  982. AxisContinueMoveChangeSpeed(X_AXIS,SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_BACK_LOW_SPEED/2,25,15);
  983. gou_zhen_buff = SKQD_cRealPos;
  984. SKQD_MotorStep = 333; //到检测定位
  985. SKQD_MotorDelay = dwTickCount + SKQD_PARAM_FD_TIME;//SKQD_PARAM_DELAY_XM;
  986. }
  987. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_YaDai_LENGTH ))
  988. SKQD_YD_ONE_VAVLE = 1;
  989. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_HuLian_LENGTH ))
  990. SKQD_HULIAN_VAVLE = 1;
  991. if(!SKQD_GZ_VAVLE && (SKQD_cRealPos + SKQD_PARAM_GOUZHEN_LENGTH) > (SKQD_PARAM_ZIPPER_LENGTH ))
  992. {
  993. SKQD_GZ_VAVLE = 1;
  994. }
  995. }
  996. else //第一条工作
  997. {
  998. if(SKQD_GUO_LIAN_IN_UP)
  999. {
  1000. checkdelay_buff = SKQD_cRealPos;
  1001. AxisContinueMoveChangeSpeed(X_AXIS,SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_BACK_LOW_SPEED/2,25,15);
  1002. SKQD_MotorDelay = dwTickCount + SKQD_PARAM_FD_TIME;//SKQD_PARAM_DELAY_XM;
  1003. SKQD_MotorStep = 333;
  1004. }
  1005. }
  1006. break;
  1007. case 333: //此步为前两条运行
  1008. if(cZipCnt > 1) //第三条开始要长度误差
  1009. {
  1010. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_YaDai_LENGTH ))
  1011. SKQD_YD_ONE_VAVLE = 1;
  1012. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_HuLian_LENGTH ))
  1013. SKQD_HULIAN_VAVLE = 1;
  1014. if(!SKQD_GZ_VAVLE && (SKQD_cRealPos + SKQD_PARAM_GOUZHEN_LENGTH) > (SKQD_PARAM_ZIPPER_LENGTH ))
  1015. {
  1016. SKQD_GZ_VAVLE = 1;
  1017. }
  1018. }
  1019. if(SKQD_GUO_LIAN_IN_DW)
  1020. {
  1021. gou_zhen_buff = SKQD_cRealPos;
  1022. SKQD_GouZhenDelay=dwTickCount+SKQD_PARAM_GouZhen_Delay;
  1023. SKQD_YADaiDelay=dwTickCount+SKQD_PARAM_YaDai_Delay;
  1024. SKQD_HuLianDelay=dwTickCount+SKQD_PARAM_HuLian_Delay;
  1025. }
  1026. if(dwTickCount >= SKQD_MotorDelay)
  1027. {
  1028. if(SKQD_GUO_LIAN_IN)
  1029. {
  1030. AxisContinueMoveChangeSpeed(X_AXIS,SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_BACK_LOW_SPEED/2,25,15);
  1031. back_buff = SKQD_cRealPos;
  1032. SKQD_MotorDelay = dwTickCount + 30;
  1033. SKQD_MotorStep = 334;
  1034. }
  1035. }
  1036. else
  1037. {
  1038. if(!SKQD_GUO_LIAN_IN)
  1039. {
  1040. SKQD_MotorStep = 332;
  1041. }
  1042. }
  1043. break;
  1044. case 334:
  1045. if(SKQD_GUO_LIAN_IN_DW) //下降沿,定位长度
  1046. {
  1047. gou_zhen_buff = SKQD_cRealPos;
  1048. SKQD_MotorStep = 335;
  1049. SKQD_GouZhenDelay=dwTickCount+SKQD_PARAM_GouZhen_Delay;
  1050. SKQD_YADaiDelay=dwTickCount+SKQD_PARAM_YaDai_Delay;
  1051. SKQD_HuLianDelay=dwTickCount+SKQD_PARAM_HuLian_Delay;
  1052. }
  1053. if(cZipCnt > 1) //第三条开始要长度误差
  1054. {
  1055. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_YaDai_LENGTH ))
  1056. SKQD_YD_ONE_VAVLE = 1;
  1057. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_HuLian_LENGTH ))
  1058. SKQD_HULIAN_VAVLE = 1;
  1059. if(!SKQD_GZ_VAVLE && (SKQD_cRealPos + SKQD_PARAM_GOUZHEN_LENGTH) > (SKQD_PARAM_ZIPPER_LENGTH ))
  1060. {
  1061. SKQD_GZ_VAVLE = 1;
  1062. SKQD_MotorStep = 335; //到检测定位
  1063. }
  1064. }
  1065. if(cZipCnt > 1) //第三条开始要长度误差
  1066. {
  1067. if(SKQD_cRealPos >= (length_buff + SKQD_PARAM_ERROR_LENGTH))
  1068. {
  1069. SKQD_SetAlarmCode(SKQD_LENGTH_LONG_ALARM);
  1070. }
  1071. }
  1072. break;
  1073. case 335:
  1074. if(cZipCnt > 1) //第三条开始要长度误差
  1075. {
  1076. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_YaDai_LENGTH ))
  1077. SKQD_YD_ONE_VAVLE = 1;
  1078. if(SKQD_cRealPos >= (SKQD_PARAM_ZIPPER_LENGTH-SKQD_PARAM_HuLian_LENGTH ))
  1079. SKQD_HULIAN_VAVLE = 1;
  1080. if(!SKQD_GZ_VAVLE && (SKQD_cRealPos + SKQD_PARAM_GOUZHEN_LENGTH) > (SKQD_PARAM_ZIPPER_LENGTH ))
  1081. {
  1082. SKQD_GZ_VAVLE = 1;
  1083. }
  1084. }
  1085. if(dwTickCount >= SKQD_GouZhenDelay)
  1086. {
  1087. SKQD_GZ_VAVLE=1;
  1088. }
  1089. if(dwTickCount >=SKQD_YADaiDelay)
  1090. {
  1091. SKQD_YD_ONE_VAVLE=1;
  1092. }
  1093. if(dwTickCount >= SKQD_HuLianDelay)
  1094. {
  1095. SKQD_HULIAN_VAVLE=1;
  1096. }
  1097. if(SKQD_GUO_LIAN_IN_DW)
  1098. {
  1099. gou_zhen_buff = SKQD_cRealPos;
  1100. }
  1101. //在空们都把延时清零
  1102. if(SKQD_GUO_LIAN_IN)
  1103. {
  1104. gou_zhen_buff = SKQD_cRealPos;
  1105. }
  1106. if(!SKQD_GOUZHEN_IN)
  1107. {
  1108. AxisEgmStop(X_AXIS);
  1109. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1110. {
  1111. SKQD_MotorDelay = dwTickCount + 10;
  1112. SKQD_YD_VAVLE = 1;
  1113. SKQD_MotorStep = 336;
  1114. SKQD_BL_VAVLE = 0; //停止时并链一定要打开
  1115. }
  1116. }
  1117. else
  1118. {
  1119. if(cZipCnt > 1) //2 条后才有长度误差
  1120. {
  1121. if(SKQD_cRealPos >= (length_buff + 300))
  1122. {
  1123. AxisEgmStop(X_AXIS);
  1124. if(dwTickCount >= SKQD_MotorDelay)
  1125. SKQD_SetAlarmCode(SKQD_GZ_ALARM);
  1126. }
  1127. }
  1128. }
  1129. break;
  1130. case 336:
  1131. if(cZipCnt > 1) //长度检测
  1132. {
  1133. ch =SKQD_PARAM_ZIPPER_LENGTH;
  1134. if(((SKQD_cRealPos + SKQD_PARAM_ERROR_LENGTH) < (ch)) && SKQD_PARAM_ERROR_LENGTH)
  1135. {
  1136. SKQD_SetAlarmCode(SKQD_LENGTH_LONG_ALARM);
  1137. cJiaDaione=1;
  1138. }
  1139. else if((SKQD_cRealPos > (ch + SKQD_PARAM_ERROR_LENGTH)) && SKQD_PARAM_ERROR_LENGTH)//(SKQD_PARAM_ERROR_LENGTH - 200 + (*SKQD_length_buffer)+50)))
  1140. {
  1141. SKQD_SetAlarmCode(SKQD_LENGTH_SHORT_ALARM);
  1142. cJiaDaione=1;
  1143. }
  1144. else
  1145. {
  1146. SKQD_MotorStep = 337;
  1147. }
  1148. }
  1149. else
  1150. {
  1151. if(cZipCnt == 1)
  1152. {
  1153. length_buff = SKQD_cRealPos - save_buff;
  1154. SetData32bits(SKQD_PARAM_ZIPPER_LENGTH_ADDR,length_buff); //测量记录长度
  1155. }
  1156. SKQD_MotorStep = 337;
  1157. }
  1158. break;
  1159. case 337:
  1160. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1161. {
  1162. SKQD_MotorStep = 390;
  1163. }
  1164. break;
  1165. //350步到369步单感应模式
  1166. case 350:
  1167. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1168. {
  1169. back_buff = SKQD_cRealPos;
  1170. gou_zhen_buff = SKQD_cRealPos;
  1171. save_buff = SKQD_cRealPos;
  1172. SKQD_MotorStep = 351;
  1173. break;
  1174. }
  1175. case 351:
  1176. if(dwTickCount >= SKQD_MotorDelay)
  1177. {
  1178. SKQD_MotorStep = 352;
  1179. //第一,二条都是过链感应,测量长度
  1180. if(cZipCnt < 2)
  1181. {
  1182. if(SKQD_PARAM_BL_ENABLE) //因为长度未知,只能通过过链退合链
  1183. SKQD_BinLianStep = 10; //并链起动
  1184. SKQD_DGLG_VAVLE = 0; //顶过链杆关
  1185. // X轴 运行速度 启动速度 加速度 减速度
  1186. AxisContinueMoveAcc(X_AXIS,SKQD_PARAM_CHECK_BACK_HSPEED,SKQD_DIR_P,SKQD_PARAM_START_SPEED,1000,8,12);
  1187. }
  1188. else
  1189. {
  1190. if(SKQD_PARAM_BL_ENABLE)
  1191. SKQD_BinLianStep = 1; //并链起动
  1192. SKQD_DGLG_VAVLE = 1; //顶过链杆关
  1193. SKQD_CheckLengthStep = 1; //长度检测,第3条才有对比
  1194. //走数控方式,因第二条中已经测量出来拉链长度,可以直接按长度数控方式走
  1195. SKQD_MotorStep = 311;
  1196. }
  1197. }
  1198. break;
  1199. case 352:
  1200. //前两条都按最低速度工作
  1201. if(SKQD_GUO_LIAN_IN_UP)
  1202. {
  1203. checkdelay_buff = SKQD_cRealPos;
  1204. AxisContinueMoveChangeSpeed(X_AXIS,SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_BACK_LOW_SPEED/2,25,15);
  1205. SKQD_MotorDelay = dwTickCount + 5;//SKQD_PARAM_DELAY_XM;
  1206. SKQD_MotorStep = 353;
  1207. }
  1208. break;
  1209. case 353:
  1210. if(SKQD_GUO_LIAN_IN_DW)
  1211. {
  1212. gou_zhen_buff = SKQD_cRealPos;
  1213. SKQD_GouZhenDelay=dwTickCount+SKQD_PARAM_GouZhen_Delay;
  1214. SKQD_YADaiDelay=dwTickCount+SKQD_PARAM_YaDai_Delay;
  1215. SKQD_HuLianDelay=dwTickCount+SKQD_PARAM_HuLian_Delay;
  1216. }
  1217. if(dwTickCount >= SKQD_MotorDelay)
  1218. {
  1219. if(SKQD_GUO_LIAN_IN)
  1220. {
  1221. AxisContinueMoveChangeSpeed(X_AXIS,SKQD_PARAM_BACK_LOW_SPEED,SKQD_PARAM_BACK_LOW_SPEED/2,25,15);
  1222. back_buff = SKQD_cRealPos;
  1223. SKQD_MotorDelay = dwTickCount + 30;
  1224. SKQD_MotorStep = 359;
  1225. }
  1226. }
  1227. else
  1228. {
  1229. if(!SKQD_GUO_LIAN_IN)
  1230. {
  1231. SKQD_MotorStep = 352;
  1232. }
  1233. }
  1234. break;
  1235. case 359:
  1236. if(SKQD_GUO_LIAN_IN_DW) //下降沿,定位长度
  1237. {
  1238. gou_zhen_buff = SKQD_cRealPos;
  1239. SKQD_MotorStep = 354;
  1240. SKQD_GouZhenDelay=dwTickCount+SKQD_PARAM_GouZhen_Delay;
  1241. SKQD_YADaiDelay=dwTickCount+SKQD_PARAM_YaDai_Delay;
  1242. SKQD_HuLianDelay=dwTickCount+SKQD_PARAM_HuLian_Delay;
  1243. }
  1244. break;
  1245. case 354:
  1246. if(dwTickCount >= SKQD_GouZhenDelay)
  1247. {
  1248. SKQD_GZ_VAVLE=1;
  1249. }
  1250. if(dwTickCount >=SKQD_YADaiDelay)
  1251. {
  1252. SKQD_YD_ONE_VAVLE=1;
  1253. }
  1254. if(dwTickCount >= SKQD_HuLianDelay)
  1255. {
  1256. SKQD_HULIAN_VAVLE=1;
  1257. }
  1258. if(SKQD_GUO_LIAN_IN_DW) //下降沿,定位长度
  1259. {
  1260. if(SKQD_GUO_LIAN_IN_DW)
  1261. {
  1262. gou_zhen_buff = SKQD_cRealPos;
  1263. SKQD_MotorStep = 355;
  1264. }
  1265. }
  1266. if(!SKQD_GOUZHEN_IN)
  1267. {
  1268. AxisEgmStop(X_AXIS);
  1269. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1270. {
  1271. SKQD_MotorDelay = dwTickCount + 10;
  1272. SKQD_YD_VAVLE = 1;
  1273. SKQD_MotorStep = 356;
  1274. SKQD_BL_VAVLE = 0; //停止时并链一定要打开
  1275. }
  1276. }
  1277. break;
  1278. case 355:
  1279. //在空们都把延时清零
  1280. if(!SKQD_GOUZHEN_IN)
  1281. {
  1282. AxisEgmStop(X_AXIS);
  1283. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1284. {
  1285. SKQD_MotorDelay = dwTickCount + 10;
  1286. SKQD_YD_VAVLE = 1;
  1287. SKQD_MotorStep = 356;
  1288. SKQD_BL_VAVLE = 0; //停止时并链一定要打开
  1289. }
  1290. }
  1291. break;
  1292. case 356:
  1293. if(cZipCnt == 1)
  1294. {
  1295. length_buff = SKQD_cRealPos - save_buff;
  1296. SetData32bits(SKQD_PARAM_ZIPPER_LENGTH_ADDR,length_buff); //测量记录长度
  1297. }
  1298. SKQD_MotorStep = 357;
  1299. break;
  1300. case 357:
  1301. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1302. {
  1303. SKQD_MotorStep = 390; //延时反转步
  1304. }
  1305. break;
  1306. case 390:
  1307. SKQD_MotorDelay = dwTickCount +35;
  1308. SKQD_MotorStep = 391;
  1309. break;
  1310. case 391:
  1311. if(dwTickCount >= SKQD_MotorDelay)
  1312. {
  1313. AxisMovePosAccDec(X_AXIS,2200,-SKQD_PARAM_FZ_LENGTH,2200,2200,10,10,0);
  1314. SKQD_MotorStep = 0;
  1315. }
  1316. break;
  1317. case 40:
  1318. //切完延时后拉带松夹子
  1319. if(SKQD_PARAM_SJZ_LENGTH == 0)
  1320. {
  1321. SKQD_MotorDelay = dwTickCount + SKQD_PARAM_TDYS_DELAY;
  1322. AxisMovePosAccDecNotStop(X_AXIS,SKQD_PARAM_CUT_BACK_SPEED,SKQD_PARAM_BACK_LENGTH,500,1500,100,100,00);
  1323. SetDir(X_AXIS, SKQD_DIR_P);
  1324. SKQD_MotorStep = 44;
  1325. SKQD_JD_VAVLE = 0;
  1326. }
  1327. else
  1328. {
  1329. jz_buff = SKQD_cRealPos;
  1330. SetDir(X_AXIS, SKQD_DIR_P);
  1331. SKQD_MotorStep = 41;
  1332. }
  1333. break;
  1334. case 41:
  1335. AxisMovePosAccDecNotStop(X_AXIS,SKQD_PARAM_CUT_BACK_SPEED,SKQD_PARAM_SJZ_LENGTH+SKQD_PARAM_BACK_LENGTH,500,1500,100,100,00);
  1336. // AxisMovePosAccDec(X_AXIS,SKQD_PARAM_CUT_BACK_SPEED,SKQD_PARAM_SJZ_LENGTH+SKQD_PARAM_BACK_LENGTH,1000,1000,80,100,0);
  1337. SKQD_MotorStep = 42;
  1338. // SKQD_MotorDelay = dwTickCount+ 10;
  1339. break;
  1340. case 42:
  1341. if((SKQD_PARAM_SJZ_LENGTH <= (SKQD_cRealPos - jz_buff)))
  1342. {
  1343. SKQD_JD_VAVLE = 0;
  1344. SKQD_GZ_VAVLE=0;
  1345. SKQD_MotorStep = 44;
  1346. }
  1347. break;
  1348. case 44: // 切断完成后拉电机动作
  1349. if((SKQD_cRealPos - jz_buff) >= (SKQD_PARAM_SJZ_LENGTH+SKQD_PARAM_BACK_LENGTH))
  1350. {
  1351. AxisEgmStop(X_AXIS);
  1352. SKQD_MotorStep = 0;
  1353. SKQD_GZ_VAVLE=0;
  1354. SKQD_MotorDelay = dwTickCount;
  1355. }
  1356. break;
  1357. case 61: // 前点定位数控模式
  1358. if(SKQD_SZ_OUT)
  1359. {
  1360. SKQD_SZ_OUT = 0;
  1361. SKQD_MotorDelay = dwTickCount + 150;
  1362. SetPos(X_AXIS, 0);
  1363. }
  1364. else
  1365. SKQD_MotorDelay = dwTickCount;
  1366. SKQD_BL_VAVLE = 0;//并链也要打开
  1367. SetDir(X_AXIS,SKQD_DIR_N);
  1368. SKQD_JZ_DIR = SKQD_YDIR_N;
  1369. if(!SKQD_TL_VAVLE && cZipCnt) //没送链情况下主动送链
  1370. {
  1371. if(!SKQD_SHANG_MU_LIMIT_IN && (SKQD_TuiLianStep == 0))
  1372. {
  1373. SKQD_TuiLianStep = 1;
  1374. SKQD_MotorStep = 62;
  1375. }
  1376. }
  1377. else
  1378. SKQD_MotorStep = 62;
  1379. break;
  1380. case 62:
  1381. if(dwTickCount >= SKQD_MotorDelay)
  1382. {
  1383. if(SKQD_QIAN_LIMIT_IN)
  1384. {
  1385. // SetPos(X_AXIS, 0);//在前点,直接置零点
  1386. SetDir(X_AXIS,SKQD_DIR_N);
  1387. // AxisMovePosAccDec(X_AXIS,3000,SKQD_PARAM_QDW_LENGTH,2000,2000,SKQD_PARAM_ACC,SKQD_PARAM_DCC,0);
  1388. SKQD_JZ_DIR = SKQD_YDIR_P;
  1389. //前点亮的情况下先退出
  1390. AxisMovePos(X_AXIS,SKQD_PARAM_GO_LOW_SPEED,1000);
  1391. SKQD_MotorDelay = dwTickCount + 300;
  1392. }
  1393. SKQD_MotorStep = 63;
  1394. SKQD_JD_VAVLE = 0;
  1395. }
  1396. break;
  1397. case 63:
  1398. if(!X_DRV && !SKQD_QIAN_LIMIT_IN && (dwTickCount >= SKQD_MotorDelay))// && !SKQD_SHANG_MU_LIMIT_IN)
  1399. {
  1400. if(SKQD_ANQUANMEN_LIMIT_IN_UP)
  1401. {
  1402. SKQD_StopStep=1;
  1403. cSTOPONE=1;
  1404. }
  1405. SetDir(X_AXIS, SKQD_DIR_N);
  1406. SKQD_JZ_DIR = SKQD_YDIR_N;
  1407. go_buff = SKQD_cRealPos;
  1408. SKQD_YD_VAVLE = 1;
  1409. SKQD_HL_VAVLE = 1;
  1410. SKQD_YX_VAVLE = 1;
  1411. //李永庆代码,当位置在慢速之外,走数控到慢速点
  1412. if(cZipCnt > 0)
  1413. {
  1414. if(SKQD_cRealPos>(SKQD_PARAM_GO_LOW_SPEED_LENGTH))
  1415. {
  1416. DCC_TIME_BL=SKQD_PARAM_GO_HIGH_SPEED/500;
  1417. AxisMovePosAccDecNotStop(X_AXIS,SKQD_PARAM_GO_HIGH_SPEED,-SKQD_cRealPos,
  1418. SKQD_PARAM_START_SPEED,SKQD_PARAM_GO_LOW_SPEED,SKQD_PARAM_ACC,DCC_TIME_BL,
  1419. SKQD_PARAM_GO_LOW_SPEED_LENGTH);
  1420. }
  1421. else
  1422. {
  1423. // X轴 运行速度 启动速度 加速度 减速度
  1424. AxisContinueMoveAcc(X_AXIS,SKQD_PARAM_GO_LOW_SPEED,SKQD_DIR_N,SKQD_PARAM_GO_LOW_SPEED/3,1000,15,15);
  1425. }
  1426. }
  1427. else
  1428. {
  1429. // X轴 运行速度 启动速度 加速度 减速度
  1430. AxisContinueMoveAcc(X_AXIS,SKQD_PARAM_GO_LOW_SPEED,SKQD_DIR_N,SKQD_PARAM_GO_LOW_SPEED/3,1000,15,20);
  1431. // MoveAction_Const_AccDec(X_AXIS, SKQD_DIR_N,SKQD_PARAM_FIRST_GO_HIGHSPEED,SKQD_PARAM_START_SPEED,SKQD_PARAM_ACC,SKQD_PARAM_DCC);//
  1432. }
  1433. SKQD_MotorDelay = dwTickCount + MOTOR_ALARM_TIME;
  1434. SKQD_MotorStep =64;
  1435. }
  1436. break;
  1437. case 64:
  1438. if(SKQD_ANQUANMEN_LIMIT_IN_UP)
  1439. {
  1440. SKQD_StopStep=1;
  1441. cSTOPONE=1;
  1442. }
  1443. if(cZipCnt > 1)
  1444. {
  1445. //李永庆代码
  1446. if(((SKQD_cRealPos) < (SKQD_PARAM_GO_LOW_SPEED_LENGTH+1200)))// || (SKQD_QIAN_DEC_IN))
  1447. {
  1448. SKQD_MotorStep =65;
  1449. }
  1450. if(SKQD_QIAN_LIMIT_IN) //前点限位
  1451. {
  1452. SetPos(X_AXIS, SKQD_PARAM_QDW_LENGTH);
  1453. AxisMovePosAccDec(X_AXIS,1000,-SKQD_PARAM_QDW_LENGTH,1000,1000,5,5,00);
  1454. SKQD_MotorStep = 66;
  1455. }
  1456. }
  1457. else
  1458. {
  1459. if(SKQD_QIAN_LIMIT_IN) //前点限位
  1460. {
  1461. SetPos(X_AXIS, SKQD_PARAM_QDW_LENGTH);
  1462. AxisMovePosAccDec(X_AXIS,1000,-SKQD_PARAM_QDW_LENGTH,1000,1000,5,5,00);
  1463. SKQD_MotorStep = 66;
  1464. }
  1465. }
  1466. break;
  1467. case 65:
  1468. if(SKQD_ANQUANMEN_LIMIT_IN_UP)
  1469. {
  1470. SKQD_StopStep=1;
  1471. cSTOPONE=1;
  1472. }
  1473. if(SKQD_QIAN_LIMIT_IN)
  1474. {
  1475. SetPos(X_AXIS, SKQD_PARAM_QDW_LENGTH);
  1476. AxisMovePosAccDec(X_AXIS,1000,-SKQD_PARAM_QDW_LENGTH,1000,1000,5,5,00);
  1477. SKQD_MotorStep = 66;
  1478. }
  1479. else if(dwTickCount >= SKQD_MotorDelay)
  1480. SKQD_SetAlarmCode(SKQD_NO_ZIPPER_ALARM);
  1481. break;
  1482. case 66:
  1483. if(SKQD_ANQUANMEN_LIMIT_IN_UP)
  1484. {
  1485. SKQD_StopStep=1;
  1486. cSTOPONE=1;
  1487. }
  1488. if(!X_DRV || SKQD_cRealPos<0)
  1489. {
  1490. AxisEgmStop(X_AXIS);
  1491. SetPos(X_AXIS, 0);
  1492. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1493. {
  1494. SKQD_MotorDelay = dwTickCount;
  1495. SKQD_MotorStep = 67;
  1496. }
  1497. }
  1498. break;
  1499. case 67: //等推链完成后,
  1500. if((dwTickCount >= SKQD_MotorDelay) && (SKQD_TuiLianStep == 0) && ((SKQD_PARAM_TIAOSHI_MODE && SKQD_bTS) || (SKQD_PARAM_TIAOSHI_MODE == 0)) )
  1501. {
  1502. if(bRunning)
  1503. {
  1504. SKQD_JD_VAVLE = 1;
  1505. SKQD_MotorDelay = dwTickCount + SKQD_PARAM_DELAY_BACK;
  1506. }
  1507. SKQD_MotorStep = 68;
  1508. }
  1509. break;
  1510. case 68:
  1511. if(dwTickCount >= SKQD_MotorDelay)
  1512. {
  1513. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1514. {
  1515. SKQD_HULIAN_VAVLE=0;
  1516. SKQD_YD_ONE_VAVLE=0;
  1517. SKQD_YD_VAVLE = 0;
  1518. SKQD_HL_VAVLE = 0;
  1519. SKQD_YX_VAVLE = 0;
  1520. SKQD_CHUIQIStep=1;
  1521. SKQD_TL_VAVLE = 0;
  1522. SKQD_MotorStep = 0;
  1523. SKQD_MotorDelay = dwTickCount;
  1524. }
  1525. }
  1526. break;
  1527. }
  1528. }
  1529. }
  1530. #endif
  1531. //电机动作
  1532. void SK_QueDuan_Motor(void)
  1533. {
  1534. if(SKQD_KB_MODE) //闭口
  1535. {
  1536. #if SKQD_KB_MODE //闭口
  1537. SK_QueDuan_Motor_NoGL();
  1538. #endif
  1539. }
  1540. else //开口
  1541. {
  1542. #if !SKQD_KB_MODE //开口
  1543. SK_QueDuan_Motor_KK(); //
  1544. #endif
  1545. }
  1546. }
  1547. void SK_QueDuan_TuiLianAction(void)
  1548. {
  1549. if(SKQD_PARAM_XM_ENABLE == 0)
  1550. {
  1551. SKQD_TuiLianStep = 0;
  1552. }
  1553. else
  1554. {
  1555. switch(SKQD_TuiLianStep)
  1556. {
  1557. case 1:
  1558. SKQD_TuiLianStep = 2;
  1559. break;
  1560. case 2:
  1561. SKQD_TLDelay = dwTickCount + SKQD_PARAM_YD_DELAY;
  1562. SKQD_TuiLianStep = 3;
  1563. break;
  1564. case 3:
  1565. if(!SKQD_SM_VAVLE && !SKQD_SHANG_MU_LIMIT_IN)//dwTickCount >= SKQD_TLDelay)
  1566. {
  1567. SKQD_TL_VAVLE = 1;
  1568. // SKQD_TFK_VAVLE = 0;
  1569. // if(!bRunning)SKQD_TFK_VAVLE = 1;
  1570. SKQD_TLDelay = dwTickCount + SKQD_PARAM_TL_DELAY;
  1571. SKQD_TuiLianStep = 4;
  1572. }
  1573. break;
  1574. case 4:
  1575. if(dwTickCount >= SKQD_TLDelay)
  1576. {
  1577. SKQD_TuiLianStep = 0;
  1578. }
  1579. break;
  1580. case 10:
  1581. SKQD_TuiLianStep = 11;
  1582. break;
  1583. case 11:
  1584. if(!Y_DRV)
  1585. {
  1586. {
  1587. SKQD_TuiLianStep = 0;
  1588. }
  1589. }
  1590. break;
  1591. }
  1592. }
  1593. }
  1594. //闭口专用
  1595. void SK_QueDuan_XiaQue_NO_GL(void)
  1596. {
  1597. switch(SKQD_XiaQieStep)
  1598. {
  1599. case 0:
  1600. break;
  1601. case 1:
  1602. if(!bRunning)
  1603. {
  1604. SKQD_YD_VAVLE = 1;
  1605. SKQD_HULIAN_VAVLE=1;
  1606. SKQD_YD_ONE_VAVLE=1;
  1607. SKQD_XiaQieStep = 2;
  1608. SKQD_XiaQieDelay = dwTickCount + 80;
  1609. }
  1610. else
  1611. {
  1612. SKQD_YD_VAVLE = 1;
  1613. SKQD_XiaQieDelay = dwTickCount + 20;
  1614. SKQD_XiaQieStep = 2;
  1615. }
  1616. break;
  1617. case 2:
  1618. if(dwTickCount >= SKQD_XiaQieDelay)
  1619. {
  1620. SKQD_GZ_VAVLE=1;
  1621. if(SKQD_PARAM_GouZhen_MODE)
  1622. SKQD_GZ_VAVLE=0;
  1623. SKQD_XiaQieStep = 3;
  1624. SKQD_XiaQieDelay = dwTickCount + SKQD_PARAM_CUT_DELAY;
  1625. }
  1626. break;
  1627. case 3:
  1628. if(dwTickCount >= SKQD_XiaQieDelay && (bRunning || !SKQD_GOUZHEN_IN ))
  1629. {
  1630. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1631. {
  1632. if((SKQD_PARAM_TIAOSHI_MODE && SKQD_bTS) || (SKQD_PARAM_TIAOSHI_MODE == 0))
  1633. {
  1634. SKQD_SM_VAVLE = 1;
  1635. if(!SKQD_PARAM_XM_ENABLE)
  1636. SKQD_XM_VAVLE = 1;
  1637. SKQD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; //
  1638. SKQD_XiaQieStep = 4;
  1639. }
  1640. }
  1641. }
  1642. break;
  1643. case 4://永兴为下模固定
  1644. if(SKQD_SHANG_MU_LIMIT_IN && (SKQD_XIA_MU_LIMIT_IN || SKQD_PARAM_XM_ENABLE))
  1645. {
  1646. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1647. {
  1648. SKQD_GZ_VAVLE = 0;
  1649. if(!SKQD_PARAM_CS_MODE) //气切
  1650. {
  1651. SKQD_XiaQieDelay = dwTickCount + SKQD_PARAM_DELAYBACK_SM; //
  1652. SKQD_XiaQieStep = 5;
  1653. }
  1654. else
  1655. {
  1656. SKQD_XiaQieDelay = dwTickCount + SKQD_PARAM_DELAY_CS; //
  1657. SKQD_XiaQieStep = 10;
  1658. }
  1659. }
  1660. }
  1661. else if(dwTickCount >= SKQD_XiaQieDelay)SKQD_SetAlarmCode(SKQD_SM_DAOWEI);
  1662. break;
  1663. case 5:
  1664. if(dwTickCount >= SKQD_XiaQieDelay)
  1665. {
  1666. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1667. {
  1668. SKQD_SM_VAVLE = 0;
  1669. SKQD_XM_VAVLE = 0;
  1670. SKQD_XiaQieDelay = dwTickCount + VAVLE_ALARM_TIME; //
  1671. SKQD_XiaQieStep = 6;
  1672. }
  1673. }
  1674. break;
  1675. case 6:
  1676. if(!SKQD_SHANG_MU_LIMIT_IN && (!SKQD_XIA_MU_LIMIT_IN || SKQD_PARAM_XM_ENABLE)) //下模不动就不用判断
  1677. {
  1678. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1679. {
  1680. if(SKQD_TuiLianStep == 0)
  1681. SKQD_TuiLianStep = 1;
  1682. if(!bRunning)
  1683. SKQD_JD_VAVLE = 0;
  1684. SKQD_XiaQieStep = 0;
  1685. }
  1686. }
  1687. else if(dwTickCount >= SKQD_XiaQieDelay)
  1688. {
  1689. SKQD_SetAlarmCode(SKQD_SM_YUANWEI);
  1690. }
  1691. break;
  1692. //10~11步为超声
  1693. case 10:
  1694. if(dwTickCount >= SKQD_XiaQieDelay)
  1695. {
  1696. if(!SKQD_bDanBuAuto || SKQD_START_IN_UP)
  1697. {
  1698. if(SKQD_PARAM_CS_ENABLE)SKQD_CS_OUT = 1;
  1699. SKQD_XiaQieDelay = dwTickCount + SKQD_PARAM_CS_TIME; //
  1700. SKQD_XiaQieStep = 11;
  1701. }
  1702. }
  1703. break;
  1704. case 11:
  1705. if(dwTickCount >= SKQD_XiaQieDelay)
  1706. {
  1707. SKQD_CS_OUT = 0;
  1708. SKQD_XiaQieDelay = dwTickCount + SKQD_PARAM_CS_COLD_TIME; //
  1709. SKQD_XiaQieStep = 5;
  1710. }
  1711. break;
  1712. case 100:
  1713. if(dwTickCount >= SKQD_XiaQieDelay)
  1714. {
  1715. //这是双开程序,暂时不考虑
  1716. #if 1
  1717. if(SKQD_GOUZHEN_IN)
  1718. {
  1719. SKQD_YD_VAVLE = 1;
  1720. SKQD_XiaQieStep = 3;
  1721. }
  1722. #endif
  1723. }
  1724. break;
  1725. }
  1726. }
  1727. //切断动作
  1728. void SK_QueDuan_XiaQue(void)
  1729. {
  1730. if(SKQD_KB_MODE) //闭口
  1731. {
  1732. SK_QueDuan_XiaQue_NO_GL(); //
  1733. }
  1734. }
  1735. #endif