XYChuanTouJi_HYX.c 42 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391
  1. #include "global.h"
  2. #if XIN_YE_MACHINE==1
  3. //鑫业穿头机
  4. void XYChuanTou_AlarmProtect(void);
  5. void XYChuanTou_ManualAction(void);
  6. void XYChuanTou_AutoAction(void);
  7. void XYChuanTou_StepCheckStart(void);
  8. void XYChuanTou_Motor(void);
  9. void XYChuanTou_SongLiaoAction(void);
  10. void XYChuanTou_HengSongLiao_Action(void); //横送料
  11. void XYChuanTou_ZhuangLiaoStep(void); //装料
  12. void XYChuanTou_HeMo(void); //合模动作
  13. void XYChuanTou_CLT_Step(void); //穿拉头动作
  14. void XYChuanTou_ZhenDongAction(void);
  15. static unsigned char cSongLiaoOk = 0,cMotorDinWei_OK = 0;
  16. static unsigned char cZhuangLiaoOk = 0;
  17. static unsigned char cZLCnt = 0;
  18. unsigned char SingOneFlg001;
  19. unsigned long Zipper_Length = 0;
  20. unsigned char DLP_ONE=0;
  21. void CT_SetAlarmCode(unsigned alarm_code)
  22. {
  23. SetAlarmCode(CT_ALARM_ADDR,alarm_code);
  24. bAlarmStop = 1;
  25. }
  26. void ChuanTou_InitAction(void)
  27. {
  28. float length_buff,pulse_buff;
  29. axis_x->speed_unit = 1; //速度频率倍率单位
  30. length_buff = CT_PARAM_CYCLE_LENGTH;
  31. pulse_buff = CT_PARAM_CYCLE_PULSE;
  32. XGearRatio = pulse_buff/length_buff;
  33. YGearRatio = 1;
  34. SetEn(X_AXIS,CT_MOTOR_DISEN);
  35. CT_ZhenDongPian_OUT = 1;
  36. SetAlarmCode(CT_ALARM_ADDR,0);
  37. }
  38. void ChuanTou_Action(void)
  39. {
  40. //数据监控
  41. dwRealPos = GetPos(X_AXIS);
  42. user_datas[121] = CT_MotorStep;
  43. user_datas[122] = CT_AutoStep;
  44. user_datas[123] = dwRealPos;
  45. user_datas[124] = CT_HeMoStep;
  46. user_datas[125] = CT_SL_Step;
  47. user_datas[126] = CT_HSL_Step;
  48. user_datas[127] = CT_ZL_Step;
  49. user_datas[128] = CT_CLT_Step;
  50. InputPinConfig();
  51. XYChuanTou_AlarmProtect();
  52. XYChuanTou_StepCheckStart(); // 调用脚踏开关检测程序
  53. XYChuanTou_Motor();
  54. XYChuanTou_ManualAction();
  55. XYChuanTou_AutoAction();
  56. XYChuanTou_ZhenDongAction();
  57. XYChuanTou_SongLiaoAction();
  58. XYChuanTou_HengSongLiao_Action(); //横送料
  59. XYChuanTou_ZhuangLiaoStep(); //装料
  60. XYChuanTou_HeMo(); //合模动作
  61. XYChuanTou_CLT_Step();
  62. OutputPinConfig();
  63. }
  64. //手动动作
  65. void XYChuanTou_ManualAction(void)
  66. {
  67. if(bRunning == 0)
  68. {
  69. if(bClearTotal) //切断计数清零
  70. {
  71. bClearTotal = 0;
  72. ClrcToTal(CT_TOTAL_ADDR);
  73. }
  74. //手动分带
  75. if(CT_bFD)
  76. {
  77. CT_bFD = 0;
  78. CT_FenDai_VAVLE = ~CT_FenDai_VAVLE;
  79. }
  80. //手动下模
  81. if(CT_bXM)
  82. {
  83. CT_bXM = 0;
  84. if(CT_XiaMo_VAVLE)
  85. CT_XiaMo_VAVLE = 0;
  86. else if(CT_HSL_ORIGIN_IN && !CT_HangSongLiao_VAVLE)
  87. CT_XiaMo_VAVLE = 1;
  88. else //下模输出条件警告
  89. {
  90. SetAlarmCode(CT_ALARM_ADDR,CT_XiaMo_out_ALARM); //横送料在原点才能输出
  91. }
  92. }
  93. if(CT_DZ_IN)
  94. {
  95. CT_GouZhen_VAVLE = 1;
  96. CT_HuChi_VAVLE=0;
  97. }
  98. if(CT_GUO_LIAN_IN_UP)
  99. {
  100. CT_GouZhen_VAVLE = 0;
  101. CT_HuChi_VAVLE=1;
  102. }
  103. //手动送料
  104. if(CT_bSL)
  105. {
  106. CT_bSL = 0;
  107. if(CT_SongLiao_VAVLE)
  108. {
  109. CT_SongLiao_VAVLE=0;
  110. }
  111. else if(!CT_HangSongLiao_VAVLE && !CT_HSL_LIMIT_IN)
  112. {
  113. CT_SongLiao_VAVLE = 1;
  114. }
  115. else
  116. {
  117. if(CT_HangSongLiao_VAVLE)
  118. SetAlarmCode(CT_ALARM_ADDR,CT_XiaMo_out_ALARM);
  119. }
  120. }
  121. // 手动合链
  122. if(CT_bHL)
  123. {
  124. CT_bHL = 0;
  125. CT_HeLian_VAVLE = ~CT_HeLian_VAVLE;
  126. }
  127. // 手动横送料
  128. if(CT_bHSL)
  129. {
  130. CT_bHSL = 0;
  131. if(CT_HangSongLiao_VAVLE)
  132. {
  133. if(!CT_SongLiao_VAVLE && !CT_SL_LIMIT_IN)
  134. CT_HangSongLiao_VAVLE = 0;
  135. } //送料电磁阀 接料电磁阀 下模电磁阀 送拉头到位 保证没拉头
  136. else if(!CT_SongLiao_VAVLE && !CT_JieLiao_VAVLE && !CT_XiaMo_VAVLE && !CT_SL_LIMIT_IN && (!CT_MaGou_VAVLE || (CT_MaGou_VAVLE && CT_MG_IN)))
  137. {
  138. CT_MaGou_VAVLE = 0;
  139. CT_HangSongLiao_VAVLE = 1;
  140. }
  141. else //警告代码
  142. {
  143. if(CT_SongLiao_VAVLE)
  144. SetAlarmCode(CT_ALARM_ADDR,CT_SongLiao_VAVLE_Not_ALARM); //送料不能有输出
  145. else if(CT_JieLiao_VAVLE)
  146. SetAlarmCode(CT_ALARM_ADDR,CT_JieLiao_VAVLE_Not_ALARM); //接料不能有输出
  147. else if(CT_XiaMo_VAVLE)//下模不能有输出
  148. SetAlarmCode(CT_ALARM_ADDR,CT_XiaMo_VAVLE_Not_ALARM);
  149. else //已经有拉头
  150. SetAlarmCode(CT_ALARM_ADDR,CT_LaTuo_Not_ALARM); //不能有拉头
  151. }
  152. }
  153. //手动接料
  154. if(CT_bJL)
  155. {
  156. CT_bJL = 0;
  157. if(CT_JieLiao_VAVLE)
  158. {
  159. //如果接料输出后,没马勾或横送料已回到原位才能退
  160. if((!CT_HangSongLiao_VAVLE && CT_HSL_ORIGIN_IN) || !CT_MaGou_VAVLE)
  161. CT_JieLiao_VAVLE = 0;
  162. else //退接料警告
  163. {
  164. SetAlarmCode(CT_ALARM_ADDR,CT_TuiJieLiao_ALARM); //码勾输出情况下横送料要退回原点
  165. }
  166. }
  167. else if((!CT_MaGou_VAVLE && !CT_JiaLaTou_VAVLE) || (CT_HSL_ORIGIN_IN && !CT_HangSongLiao_VAVLE))
  168. {
  169. CT_JieLiao_VAVLE = 1;
  170. }
  171. else //接料警告
  172. {
  173. SetAlarmCode(CT_ALARM_ADDR,CT_JieLiao_out_ALARM); //码勾没输出或横送料在原点才能输出
  174. }
  175. }
  176. if(CT_bGM) //手动勾码
  177. {
  178. CT_bGM = 0;
  179. CT_MaGou_VAVLE = ~CT_MaGou_VAVLE;
  180. }
  181. if(CT_bHC) //手动护齿
  182. {
  183. CT_bHC = 0;
  184. CT_HuChi_VAVLE = ~CT_HuChi_VAVLE;
  185. }
  186. //手动装料
  187. if(CT_bZL)
  188. {
  189. CT_bZL = 0;
  190. if(CT_ZL_Step == 0)
  191. {
  192. cSongLiaoOk = 1;
  193. cZhuangLiaoOk = 0;
  194. CT_ZL_Step = 1;
  195. }
  196. }
  197. //
  198. //手动夹拉头
  199. if(CT_bZLT)
  200. {
  201. CT_bZLT = 0;
  202. if(!CT_JiaLaTou_VAVLE)
  203. CT_JiaLaTou_VAVLE = 1;
  204. else if(!CT_FenDai_VAVLE || !CT_XiaMo_VAVLE)
  205. {
  206. CT_JiaLaTou_VAVLE=0;
  207. }
  208. else
  209. {
  210. SetAlarmCode(CT_ALARM_ADDR,CT_FENDAI_JIALITOU_out_ALARM);
  211. }
  212. }
  213. //
  214. //手动定位
  215. if(CT_bMotorDW)
  216. {
  217. CT_bMotorDW = 0;
  218. if(CT_MotorStep == 0)
  219. {
  220. if(!CT_FenDai_VAVLE && !CT_XiaMo_VAVLE)
  221. {
  222. CT_HuChi_VAVLE = 0;
  223. CT_HeLian_VAVLE = 0;
  224. CT_MotorStep = 1;
  225. }
  226. else
  227. {
  228. if(CT_FenDai_VAVLE) SetAlarmCode(CT_ALARM_ADDR,CT_FenDai_out_ALARM); //分带输出不能拖带
  229. //护链输出不能拖带
  230. }
  231. }
  232. }
  233. //自动装料
  234. if(CT_bZL)
  235. {
  236. CT_bZL = 0;
  237. if(CT_ZL_Step == 0)
  238. CT_ZL_Step = 1;
  239. }
  240. //合模 (半自动)
  241. if(CT_bHM)
  242. {
  243. CT_bHM = 0;
  244. if(CT_XiaMo_VAVLE && CT_FenDai_VAVLE)
  245. {
  246. CT_XiaMo_VAVLE = 0;
  247. CT_FenDai_VAVLE = 0;
  248. CT_HeLian_VAVLE = 0;
  249. CT_HuChi_VAVLE = 0;
  250. CT_JieLiao_VAVLE = 0;
  251. CT_JiaLaTou_VAVLE=0;
  252. CT_MaGou_VAVLE = 0;
  253. CT_HeMoStep = 0;
  254. }
  255. else if(CT_HeMoStep == 0)
  256. {
  257. if(CT_HSL_ORIGIN_IN && !CT_HangSongLiao_VAVLE)
  258. {
  259. CT_HeMoStep = 1;
  260. CT_MaGou_VAVLE = 1;
  261. CT_HeMoDelay = dwTickCount +80; //给码勾检测是否有拉头
  262. }
  263. else //合模条件不满足
  264. {
  265. SetAlarmCode(CT_ALARM_ADDR,CT_XiaMo_out_ALARM); //横送料在原点才能输出
  266. }
  267. }
  268. if(!CT_GUO_LIAN_IN)
  269. SetAlarmCode(CT_ALARM_ADDR,CT_Guo_Lian_IN_ALARM); //拉链在空位上容易爆链
  270. }
  271. //
  272. if(CT_bMotorH)
  273. {
  274. if(!X_DRV)AxisContinueMove(X_AXIS,20,CT_DIR_N);
  275. }
  276. if((QD_MotorStep == 0) && !CT_bMotorH && (CT_AutoStep == 0))
  277. {
  278. if(X_DRV)AxisEgmStop(X_AXIS);
  279. }
  280. //振动盘
  281. if(CT_bZDP)
  282. {
  283. CT_bZDP = 0;
  284. CT_ZDP_Delay = dwTickCount + CT_PARAM_ZDP_STOP_TIME;
  285. CT_ZhenDongPian_OUT = 1;
  286. }
  287. }
  288. }
  289. void XYChuanTou_AlarmProtect(void)
  290. {
  291. }
  292. //振动盘控制
  293. void XYChuanTou_ZhenDongAction(void)
  294. {
  295. if(CT_ZhenDongPian_OUT)
  296. {
  297. if( bRunning && CT_PARAM_DALIAOPIAN)
  298. {
  299. if(CT_DLP_Time >= dwTickCount)
  300. {
  301. CT_ZDP_Delay = dwTickCount + CT_PARAM_DLP_TIME + 40;
  302. CT_DaLaPian_VAVLE = ~CT_DaLaPian_VAVLE;
  303. }
  304. }
  305. else
  306. {
  307. CT_DaLaPian_VAVLE=0;
  308. }
  309. }
  310. if(CT_bDLP)
  311. {
  312. CT_bDLP=0;
  313. CT_DLPONE_Time = dwTickCount + CT_PARAM_DLP_TIME + 500;
  314. CT_DaLaPian_VAVLE =1;
  315. DLP_ONE=1;
  316. }
  317. if(DLP_ONE)
  318. {
  319. if(dwTickCount>=CT_DLPONE_Time)
  320. {
  321. CT_DaLaPian_VAVLE=0;
  322. DLP_ONE=0;
  323. }
  324. }
  325. #if 1
  326. // if(bRunning)
  327. // {
  328. // if(CT_PARAM_ZDP_MODE)
  329. // {
  330. if(CT_ZhenDongPian_OUT == 0)
  331. {
  332. if(!CT_ZDP_IN)
  333. {
  334. CT_ZhenDongPian_OUT = 1;
  335. CT_ZDP_Delay = dwTickCount + CT_PARAM_ZDP_STOP_TIME+ 50;
  336. }
  337. else
  338. {
  339. CT_ZDP_Delay = dwTickCount + CT_PARAM_ZDP_START_TIME;
  340. }
  341. }
  342. else
  343. {
  344. if(CT_ZDP_IN)
  345. {
  346. if((dwTickCount >= CT_ZDP_Delay))
  347. {
  348. CT_ZhenDongPian_OUT = 0;
  349. }
  350. }
  351. else
  352. CT_ZDP_Delay = dwTickCount + CT_PARAM_ZDP_STOP_TIME+ 50;
  353. }
  354. // }
  355. // else
  356. // {
  357. // if(CT_ZDP_IN_DW)CT_ZenDongPian_OUT = 0;
  358. // if(CT_ZDP_IN_UP)CT_ZenDongPian_OUT = 1;
  359. // }
  360. // }
  361. #if 0
  362. else
  363. {
  364. if(!CT_ZDP_IN && (CT_ZhenDongPian_OUT == 0))
  365. {
  366. CT_ZhenDongPian_OUT = 1;
  367. CT_ZDP_Delay = dwTickCount + CT_PARAM_ZDP_TIME + 20;
  368. }
  369. if((dwTickCount >= CT_ZDP_Delay) && CT_ZhenDongPian_OUT)
  370. {
  371. CT_ZhenDongPian_OUT = 0;
  372. }
  373. }
  374. #endif
  375. #endif
  376. }
  377. //送料
  378. void XYChuanTou_SongLiaoAction(void)
  379. {
  380. #if 1
  381. switch(CT_SL_Step)
  382. {
  383. case 1:
  384. if(cSongLiaoOk)
  385. {
  386. CT_SL_Step = 0;
  387. }
  388. else
  389. {
  390. // if(CT_PARAM_SL_MODE == 0)//横送模式
  391. // {
  392. CT_SL_Step = 2;
  393. CT_SL_Delay = dwTickCount + VAVLE_ALARM_TIME;
  394. // }
  395. // else //直送料
  396. // {
  397. // ;
  398. // }
  399. }
  400. break;
  401. case 2:
  402. {
  403. //横送料必须保持在原位
  404. if(CT_HSL_ORIGIN_IN && !CT_HSL_LIMIT_IN && !CT_HangSongLiao_VAVLE)
  405. {
  406. CT_SongLiao_VAVLE = 1;
  407. CT_SL_Delay = dwTickCount + VAVLE_ALARM_TIME;
  408. CT_SL_Step = 3;
  409. }
  410. else if(dwTickCount >= CT_SL_Delay)
  411. {
  412. if(!CT_HSL_ORIGIN_IN)CT_SetAlarmCode(CT_HSL_ORIGIN_ALARM);
  413. else if(CT_HSL_LIMIT_IN)CT_SetAlarmCode(CT_HSL_LIMIT_ALARM);
  414. else if(!CT_HangSongLiao_VAVLE)CT_SetAlarmCode(CT_HangSongLiao_Out_ALARM);
  415. }
  416. }
  417. break;
  418. case 3:
  419. {//送料离开原位
  420. if(!CT_SL_ORIGIN_IN && CT_SL_LIMIT_IN)
  421. {
  422. CT_SL_Step = 4;
  423. CT_SL_Delay = dwTickCount + CT_PARAM_SL_DELAY_BACK;
  424. }
  425. else if(dwTickCount >= CT_SL_Delay)
  426. {
  427. CT_SetAlarmCode(CT_SL_ORIGIN_ALARM);
  428. }
  429. }break;
  430. case 4:
  431. {//送料时间到延时返回
  432. if(dwTickCount >= CT_SL_Delay)
  433. {
  434. CT_SongLiao_VAVLE = 0;
  435. CT_SL_Delay = dwTickCount + VAVLE_ALARM_TIME;
  436. CT_SL_Step = 5;
  437. }
  438. }break;
  439. case 5:
  440. {
  441. if(CT_SL_ORIGIN_IN)
  442. {
  443. cSongLiaoOk = 1;
  444. CT_SL_Step = 0;
  445. }
  446. else if(dwTickCount >= CT_SL_Delay)
  447. {
  448. CT_SetAlarmCode(CT_SL_ORIGIN_ALARM);
  449. }
  450. }
  451. break;
  452. }
  453. #endif
  454. }
  455. //横送料
  456. void XYChuanTou_HengSongLiao_Action(void)
  457. {
  458. #if 1
  459. switch(CT_HSL_Step)
  460. {
  461. case 1:
  462. {//送料,下模,马勾在原位,电磁阀不能有输出
  463. if(CT_SL_ORIGIN_IN && CT_XM_ORIGIN_IN && !CT_JieLiao_VAVLE && !CT_XiaMo_VAVLE)
  464. {
  465. CT_HSL_Step = 2;
  466. CT_MaGou_VAVLE = 0; //马勾自动打开
  467. CT_JieLiao_VAVLE = 0; //接料也要关掉
  468. CT_JiaLaTou_VAVLE=0; //夹拉头关掉
  469. }
  470. else if(!bRunning)
  471. {
  472. CT_HSL_Step = 0;
  473. }
  474. }
  475. break;
  476. case 2:
  477. if(CT_SL_Step == 0)
  478. {
  479. CT_HangSongLiao_VAVLE = 1;
  480. CT_HSL_Delay = dwTickCount + VAVLE_ALARM_TIME;
  481. CT_HSL_Step = 3;
  482. }
  483. break;
  484. case 3:
  485. {
  486. if(CT_HSL_LIMIT_IN)
  487. {
  488. //横送到位延接料,等待拉片稳定
  489. CT_HSL_Delay = dwTickCount + CT_PARAM_JIELIAO_DELAY;
  490. CT_HSL_Step = 4;
  491. }
  492. else if(dwTickCount >= CT_HSL_Delay) //横送料到位异常
  493. {
  494. CT_SetAlarmCode(CT_HSL_LIMIT_ALARM);
  495. }
  496. }
  497. break;
  498. case 4:
  499. if(dwTickCount >= CT_HSL_Delay)
  500. {
  501. CT_HSL_Step = 5;
  502. CT_JieLiao_VAVLE = 1; //接料输出上升
  503. CT_HSL_Delay = dwTickCount + VAVLE_ALARM_TIME;
  504. }
  505. break;
  506. case 5:
  507. {
  508. if(!CT_XM_ORIGIN_IN)//下模离开后,延时输出马勾
  509. {
  510. cSongLiaoOk = 0;
  511. CT_HSL_Delay = dwTickCount + 20;
  512. CT_HSL_Step = 101;
  513. }
  514. else if(dwTickCount >= CT_HSL_Delay) //下模没法离开,电磁阀没有输出
  515. {
  516. CT_HSL_Step = 0;
  517. CT_SetAlarmCode(CT_XM_ORIGIN_ALARM);
  518. }
  519. }
  520. break;
  521. case 101:
  522. if (dwTickCount >= CT_HSL_Delay)
  523. {
  524. CT_HSL_Step = 6;
  525. CT_JiaLaTou_VAVLE=1; // 夹拉头输出
  526. CT_HSL_Delay = dwTickCount + CT_PARAM_GJ_TIME; //延时码勾输出
  527. }
  528. break;
  529. case 6:
  530. if(dwTickCount >= CT_HSL_Delay)
  531. {
  532. CT_MaGou_VAVLE = 1;
  533. CT_HSL_Delay = dwTickCount + CT_PARAM_HSL_BACK_DELAY;
  534. CT_HSL_Step = 7;
  535. }
  536. break;
  537. case 7:
  538. if(dwTickCount >= CT_HSL_Delay) //码勾输出后横送料退
  539. {
  540. CT_HangSongLiao_VAVLE = 0;
  541. CT_HSL_Delay = dwTickCount + VAVLE_ALARM_TIME;
  542. CT_HSL_Step = 8;
  543. CT_SL_Step = 1;
  544. }
  545. break;
  546. case 8://横送料退回
  547. if(CT_HSL_ORIGIN_IN && !CT_HSL_LIMIT_IN)
  548. {
  549. CT_HSL_Step = 0;
  550. }
  551. else if(dwTickCount >= CT_HSL_Delay)
  552. {
  553. CT_SetAlarmCode(CT_HSL_ORIGIN_ALARM);
  554. }
  555. break;
  556. case 9:
  557. break;
  558. }
  559. #endif
  560. }
  561. //装料
  562. void XYChuanTou_ZhuangLiaoStep(void)
  563. {
  564. #if 1
  565. switch(CT_ZL_Step)
  566. {
  567. case 1:
  568. {
  569. if(cZhuangLiaoOk || (CT_MaGou_VAVLE && !CT_MG_IN))
  570. {
  571. CT_ZL_Step = 0;
  572. cZhuangLiaoOk = 1;
  573. }
  574. else
  575. {
  576. CT_ZL_Delay = dwTickCount + VAVLE_ALARM_TIME;
  577. CT_ZL_Step = 2;
  578. cZLCnt = 0;
  579. CT_ZL_Delay = dwTickCount + CT_PARAM_MAGOU_TIME;
  580. cSongLiaoOk = 1;
  581. CT_MaGou_VAVLE = 1;
  582. }
  583. }
  584. break;
  585. case 2:
  586. if((dwTickCount >= CT_ZL_Delay) || CT_MG_IN)
  587. {
  588. // if(CT_SL_Step == 0)
  589. // CT_SL_Step = 1;
  590. CT_ZL_Step = 3;
  591. if(CT_MaGou_VAVLE && !CT_MG_IN)
  592. {
  593. CT_ZL_Step = 0;
  594. cZhuangLiaoOk = 1;
  595. }
  596. }
  597. break;
  598. case 3:
  599. {
  600. if(CT_SL_Step == 0)
  601. {
  602. CT_ZL_Step = 4;
  603. CT_HSL_Step = 1;
  604. }
  605. }
  606. break;
  607. case 4:
  608. {
  609. if(CT_HSL_Step == 0)
  610. {
  611. CT_ZL_Step = 0;
  612. cZhuangLiaoOk = 1;
  613. if(CT_MG_IN && CT_MaGou_VAVLE)
  614. {
  615. cZhuangLiaoOk = 0;
  616. CT_MaGou_VAVLE = 0;
  617. CT_JieLiao_VAVLE = 0;
  618. CT_ZL_Delay = dwTickCount + 600;
  619. cZLCnt++;
  620. if(cZLCnt>= 3)
  621. {
  622. CT_ZL_Delay = dwTickCount + 0;
  623. CT_ZL_Step = 0;
  624. CT_SetAlarmCode(CT_ZhuangLiao_ALARM);
  625. }
  626. else
  627. CT_ZL_Step = 2;
  628. }
  629. }
  630. }
  631. break;
  632. default:break;
  633. }
  634. #endif
  635. }
  636. //合模动作
  637. void XYChuanTou_HeMo(void)
  638. {
  639. switch(CT_HeMoStep)
  640. {
  641. case 1:
  642. if(CT_HSL_ORIGIN_IN && !CT_HangSongLiao_VAVLE && !CT_HSL_LIMIT_IN && (dwTickCount >= CT_HeMoDelay))
  643. {
  644. CT_HeMoStep = 2;
  645. if(CT_MaGou_VAVLE)
  646. {
  647. if(CT_MG_IN)
  648. {
  649. cZhuangLiaoOk = 0;
  650. CT_MaGou_VAVLE = 0;
  651. }
  652. }
  653. else
  654. {
  655. CT_MaGou_VAVLE = 1;
  656. }
  657. CT_ZL_Step = 1;
  658. CT_HuChi_VAVLE = 1;
  659. if(!bRunning || (dwZipCnt <= 2))
  660. CT_HeMoDelay = dwTickCount + 190; //给码勾检测是否有拉头
  661. else
  662. CT_HeMoDelay = dwTickCount +CT_PARAM_FD_DELAY; //延时分带
  663. // if((CT_PARAM_HouMa_MODE != HouMa_MODE_YOUHOUMA)) //有后码时不能有输出
  664. if((CT_PARAM_HouMa_MODE == HouMa_MODE_DANKUAI) ||
  665. (CT_PARAM_HouMa_MODE == HouMa_MODE_SHUANGBI) )
  666. {
  667. CT_HeLian_VAVLE = 1;
  668. if(bRunning)
  669. CT_HeMoDelay = dwTickCount; //
  670. }
  671. CT_ZL_Step = 1;
  672. }
  673. break;
  674. case 2:
  675. if(dwTickCount >= CT_HeMoDelay)
  676. {
  677. CT_HeMoStep = 3;
  678. CT_FenDai_VAVLE = 1; //
  679. CT_HeMoDelay = dwTickCount +VAVLE_ALARM_TIME; //延时分带
  680. if(CT_MG_IN)
  681. {
  682. cZhuangLiaoOk = 0;
  683. CT_MaGou_VAVLE = 0;
  684. if(CT_ZL_Step == 0)
  685. CT_ZL_Step = 1;
  686. }
  687. }
  688. break;
  689. case 3:
  690. if(CT_FD_IN)
  691. {
  692. //装已经完成或在手动情况下
  693. if(cZhuangLiaoOk && !CT_MG_IN)
  694. {
  695. if(CT_HSL_ORIGIN_IN && !CT_HangSongLiao_VAVLE && !CT_HSL_LIMIT_IN)
  696. {
  697. CT_HeMoStep = 4;
  698. CT_XiaMo_VAVLE = 1;
  699. CT_HeMoDelay = dwTickCount + 50; //延时退接料
  700. }
  701. }
  702. else if(CT_MaGou_VAVLE && CT_MG_IN)
  703. {
  704. if(CT_ZL_Step == 0)
  705. {
  706. CT_MaGou_VAVLE = 0;
  707. CT_ZL_Step = 2;
  708. CT_ZL_Delay = dwTickCount + 0;
  709. }
  710. }
  711. }
  712. else if(dwTickCount >= CT_HeMoDelay)
  713. {
  714. if(bRunning)
  715. {
  716. CT_SetAlarmCode(CT_FD_IN_ALARM);
  717. CT_HeMoStep = 0;
  718. }
  719. }
  720. break;
  721. case 4:
  722. if(dwTickCount >= CT_HeMoDelay)
  723. CT_JieLiao_VAVLE = 0;
  724. //下模离开原点,拉头顶到顶针处,或手动
  725. if(!CT_XM_ORIGIN_IN && CT_DZ_IN)
  726. {
  727. CT_HeMoStep = 5;
  728. CT_JieLiao_VAVLE = 0;
  729. CT_GouZhen_VAVLE = 1;
  730. CT_HeMoDelay = dwTickCount + 30; //退勾针延时拖带
  731. }
  732. break;
  733. case 5:
  734. if(dwTickCount >= CT_HeMoDelay)
  735. {
  736. CT_HeMoStep = 0;
  737. }
  738. break;
  739. }
  740. }
  741. void XYChuanTou_CLT_Step(void)
  742. {
  743. static long xm_buff;
  744. long ch;
  745. #if 1
  746. switch(CT_CLT_Step)
  747. {
  748. case 1:
  749. SetPos(X_AXIS, 0); //开始穿入位为零点
  750. dwRealPos = GetPos(X_AXIS);
  751. CT_CLT_Step = 2;
  752. break;
  753. case 2:
  754. //两段速度移动距离
  755. // 轴 第一段速度 第一段长度 第二段速度 第二段长度 方向
  756. // AxisMoveTwoPos(X_AXIS,QD_PARAM_CUT_BACK_SPEED,QD_PARAM_SJZ_LENGTH,5000,QD_PARAM_BACK_LENGTH,QD_DIR_P);
  757. AxisMovePosAccDec(X_AXIS,CT_PARAM_CR_SPEED,CT_PARAM_CR_LENGTH + 230 - CT_PARAM_STOP_LENGTH ,3000,8,12);
  758. // SetDir(X_AXIS, CT_DIR_P);
  759. CT_HuChi_VAVLE = 0;
  760. CT_CLT_Step = 3;
  761. xm_buff = 0;
  762. cMotorDinWei_OK = 0;
  763. break;
  764. case 3:
  765. //穿入过程,检测到空位
  766. if(CT_GUO_LIAN_IN_DW)
  767. {
  768. xm_buff = 0;
  769. CancelPmoveState(X_AXIS);
  770. AxisChangeSpeed(X_AXIS,CT_PARAM_LSPEED);
  771. }
  772. //在上升沿
  773. if(CT_GUO_LIAN_IN_UP)
  774. {
  775. xm_buff = dwRealPos;
  776. AxisEgmStop(X_AXIS);
  777. }
  778. //根据后码模式退合链
  779. if(CT_PARAM_HouMa_MODE == HouMa_MODE_DANKUAI)
  780. {
  781. if(dwRealPos >= CT_PARAM_TUIHELIAN_DELAY)
  782. CT_HeLian_VAVLE = 0;
  783. }
  784. //退分带动作//提前8MM退分带 或退长度到
  785. if(((dwRealPos + 80) >= CT_PARAM_CR_LENGTH) || (dwRealPos >= CT_PARAM_TUIFENGDAI_DELAY))
  786. CT_FenDai_VAVLE = 0;
  787. if((dwRealPos + 35) >= CT_PARAM_CR_LENGTH)
  788. {
  789. CT_MaGou_VAVLE = 0;
  790. }
  791. if((dwRealPos) >= CT_PARAM_CR_LENGTH)
  792. {
  793. AxisEgmStop(X_AXIS);
  794. }
  795. //穿入长度到
  796. if(!X_DRV)
  797. {//如果无后码单开模式长度过长时也强制打开 //双闭口要先慢速退
  798. if((CT_PARAM_HouMa_MODE == HouMa_MODE_DANKUAI) ||
  799. ((CT_PARAM_HouMa_MODE == HouMa_MODE_SHUANGBI) && (CT_PARAM_TUIHELIAN_DELAY == 0)))
  800. {
  801. CT_HeLian_VAVLE = 0; //合链关
  802. }
  803. CT_FenDai_VAVLE = 0; //分带关
  804. CT_JiaLaTou_VAVLE=0; //夹拉头关 考虑分带已经提前退, 会有时间差保障
  805. CT_CLT_Delay = dwTickCount + 2;
  806. CT_MaGou_VAVLE = 0; //码勾关
  807. CT_CLT_Step = 4;
  808. }
  809. break;
  810. case 4:
  811. if(dwTickCount >= CT_CLT_Delay)
  812. {
  813. CT_XiaMo_VAVLE = 0; //下模关
  814. }
  815. if(!CT_DZ_IN)
  816. {
  817. CT_CLT_Delay = dwTickCount + CT_PARAM_XM_BACK_DELAY_START;
  818. CT_CLT_Step = 5;
  819. }
  820. break;
  821. case 5:
  822. //下模退回
  823. if(((dwTickCount >= CT_CLT_Delay) || CT_XM_ORIGIN_IN) && !CT_FD_IN)
  824. {
  825. CT_ZL_Step = 2; //重装料
  826. cZLCnt = 0;
  827. CT_ZL_Delay = dwTickCount + 0;
  828. CT_MaGou_VAVLE = 0; //码勾输出检测拉头是否脱离模具
  829. if(xm_buff) //已经检测到拉链
  830. {
  831. CT_CLT_Step = 8;
  832. CT_MotorStep = 50; //只走定位长度步
  833. }
  834. else //没有检测到拉链
  835. {
  836. if((CT_PARAM_HouMa_MODE == HouMa_MODE_SHUANGBI) && CT_HeLian_VAVLE) //双闭口要先慢速退
  837. {
  838. xm_buff = dwRealPos;
  839. CT_CLT_Step = 6;
  840. ch = 1400;
  841. SetStartSpeed(X_AXIS,ch);
  842. if((Zipper_Length > (dwRealPos + 2000)) && (dwZipCnt > 2))
  843. {
  844. AxisContinueMove(X_AXIS,(CT_PARAM_HSPEED + CT_PARAM_HSPEED/3),CT_DIR_N); //主要生成高速表
  845. }
  846. else
  847. AxisContinueMove(X_AXIS,(CT_PARAM_HSPEED),CT_DIR_N);//主要生成高速表
  848. //低速走长度给合链退回争取时间,快转碰拉头,损坏拉链
  849. AxisChangeSpeed(X_AXIS,ch);
  850. //也进入过链检测状态
  851. CT_MotorStep = 3;
  852. CT_MotorDelay = dwTickCount + 0;
  853. }
  854. else
  855. {
  856. CT_CLT_Step = 8;
  857. CT_CLT_Delay = dwTickCount + 0;
  858. }
  859. }
  860. }
  861. break;
  862. case 6:
  863. ch = CT_PARAM_TUIHELIAN_DELAY;
  864. if(ch > 30) //最长限制1.5CM
  865. ch = 28;
  866. // if(dwRealPos >= (xm_buff + ch))
  867. {
  868. CT_HeLian_VAVLE = 0;
  869. CT_CLT_Delay = dwTickCount + 30; //延时时间再加速
  870. CT_CLT_Step = 7;
  871. }
  872. break;
  873. case 7:
  874. if(dwTickCount >= CT_CLT_Delay)
  875. {
  876. if(CT_MotorStep == 3) //如果电机还在检测拉链状态,就到变速程序
  877. CT_MotorStep = 40;
  878. CT_CLT_Step = 8;
  879. }
  880. break;
  881. case 8:
  882. CT_CLT_Step = 0;
  883. if((CT_MotorStep == 0) && (cMotorDinWei_OK == 0))
  884. CT_MotorStep = 1;
  885. break;
  886. }
  887. #endif
  888. }
  889. void XYChuanTou_AutoAction(void)
  890. {
  891. if(bRunning)
  892. {
  893. #if 1
  894. switch(CT_AutoStep)
  895. {
  896. case 1:
  897. if(dwTickCount >= CT_AutoDelay)
  898. {
  899. CT_AutoStep = 2;
  900. if(CT_MotorStep == 0)
  901. {
  902. CT_MotorStep = 1;
  903. }
  904. }
  905. break;
  906. case 2:
  907. if(CT_MotorStep == 0) //电机定位完成
  908. {
  909. if(SingOneFlg001) //当为单一自动时,装料
  910. {
  911. bRunning = 0;
  912. CT_AutoStep = 0;
  913. }
  914. else
  915. {
  916. if(dwZipCnt == 2)
  917. Zipper_Length = dwRealPos;
  918. CT_AutoStep = 3;
  919. CT_HeMoStep = 1;
  920. }
  921. }
  922. break;
  923. case 3:
  924. if((CT_MotorStep == 0) && (CT_HeMoStep == 0))
  925. {
  926. CT_CLT_Step = 1;
  927. CT_AutoStep = 4;
  928. }
  929. break;
  930. case 4:
  931. if(CT_CLT_Step >= 3)
  932. {
  933. AddToTal(CT_TOTAL_ADDR);
  934. AddToTal(CT_WORKTOTAL_ADDR);
  935. CalProSP(CT_PROSPEED_ADDR);
  936. CT_AutoStep = 5;
  937. }
  938. break;
  939. case 5:
  940. if(CT_CLT_Step == 0)
  941. {
  942. dwZipCnt++;
  943. dwZipCnt &= 7;
  944. CT_AutoStep = 1;
  945. CT_AutoDelay = dwTickCount + 0;
  946. }
  947. break;
  948. }
  949. #endif
  950. }
  951. }
  952. void XYChuanTou_StepCheckStart(void)
  953. {
  954. // 启动
  955. if((CT_START_IN_UP) || bStart || CT_bSingle)
  956. {
  957. bStart = 0;
  958. SingOneFlg001= 0;
  959. if(CT_bSingle) SingOneFlg001 = 1;
  960. CT_bSingle = 0;
  961. #if 1
  962. if(!bRunning && (CT_AutoStep == 0))
  963. {
  964. if(!CT_HSL_ORIGIN_IN)CT_SetAlarmCode(CT_HSL_ORIGIN_ALARM);
  965. else if(CT_HSL_LIMIT_IN)CT_SetAlarmCode(CT_HSL_LIMIT_ALARM);
  966. else if(!CT_SL_ORIGIN_IN)CT_SetAlarmCode(CT_SL_ORIGIN_ALARM);
  967. {
  968. bRunning = 1;
  969. SetEn(X_AXIS,CT_MOTOR_EN);
  970. CT_AutoStep = 3;
  971. CT_HeMoStep = 1;
  972. // if(!cZhuangLiaoOk)
  973. // CT_ZL_Step = 1;
  974. dwZipCnt = 0;
  975. Zipper_Length = 0;
  976. CT_AutoDelay = dwTickCount + 30;
  977. CT_HeMoDelay = dwTickCount +70;
  978. CT_MaGou_VAVLE = 1;
  979. cZLCnt = 0;
  980. SetAlarmCode(CT_ALARM_ADDR,0);
  981. }
  982. }
  983. #endif
  984. }
  985. #if 1
  986. //停止
  987. if((CT_STOP_IN_UP && (dwTickCount >= CT_StopKey_Time)) || bStop)
  988. {
  989. CT_StopKey_Time = dwTickCount + 60;
  990. if(bRunning)
  991. {
  992. if(!bStop)
  993. {
  994. bRunning = 0;
  995. CT_AutoStep = 0;
  996. CT_MotorStep = 0;
  997. CT_AutoDelay = dwTickCount;
  998. CT_MotorDelay = dwTickCount;
  999. AxisDecStop(X_AXIS);
  1000. CT_FenDai_VAVLE = 0;
  1001. SingOneFlg001 = 0;
  1002. }
  1003. else
  1004. SingOneFlg001 = 1;
  1005. }
  1006. else
  1007. {
  1008. bRunning = 0;
  1009. CT_AutoStep = 0;
  1010. CT_MotorStep = 0;
  1011. CT_HeMoStep = 0;
  1012. CT_SL_Step = 0;
  1013. CT_HSL_Step = 0;
  1014. CT_ZL_Step = 0;
  1015. CT_CLT_Step = 0;
  1016. CT_ZD_Step = 0;
  1017. CT_AutoDelay = dwTickCount;
  1018. CT_MotorDelay = dwTickCount;
  1019. CT_HeMoDelay = dwTickCount;
  1020. CT_SL_Delay = dwTickCount;
  1021. CT_HSL_Delay = dwTickCount;
  1022. CT_ZL_Delay = dwTickCount;
  1023. CT_XM_BACK_Delay = dwTickCount;
  1024. CT_CLT_Delay = dwTickCount;
  1025. CT_ZDP_Delay = dwTickCount;
  1026. SingOneFlg001 = 0;
  1027. AxisDecStop(X_AXIS);
  1028. SetEn(X_AXIS,CT_MOTOR_DISEN);
  1029. cSongLiaoOk = 0;
  1030. cZhuangLiaoOk = 0;
  1031. if(!CT_FenDai_VAVLE && !CT_FD_IN)
  1032. {
  1033. CT_XiaMo_VAVLE = 0; //下模
  1034. CT_JiaLaTou_VAVLE=0; //夹拉头
  1035. }
  1036. CT_SongLiao_VAVLE = 0; //送料
  1037. CT_GouZhen_VAVLE = 0; //勾针
  1038. CT_DaLaPian_VAVLE = 0; //顶拉片(打拉片)
  1039. CT_FenDai_VAVLE = 0; //分带
  1040. CT_HeLian_VAVLE = 0; //合链(穿模后面)
  1041. CT_ZhenDongPian_OUT = 0; //振动盘
  1042. CT_HuChi_VAVLE = 0; //护齿
  1043. CT_HangSongLiao_VAVLE = 0; //横送料
  1044. if(!CT_MaGou_VAVLE || (CT_HSL_ORIGIN_IN && !CT_HangSongLiao_VAVLE))
  1045. CT_JieLiao_VAVLE = 0; //接料下模
  1046. CT_MaGou_VAVLE = 0; //马勾
  1047. SetAlarmCode(CT_ALARM_ADDR,0);
  1048. }
  1049. bStop = 0;
  1050. }
  1051. #endif
  1052. #if 1
  1053. if(bAlarmStop)
  1054. {
  1055. bAlarmStop = 0;
  1056. bRunning = 0;
  1057. CT_AutoStep = 0;
  1058. // CT_MotorStep = 0;
  1059. CT_HeMoStep = 0;
  1060. CT_ZL_Step = 0;
  1061. CT_HSL_Step = 0;
  1062. CT_AutoDelay = dwTickCount;
  1063. CT_MotorDelay = dwTickCount;
  1064. SingOneFlg001 = 0;
  1065. AxisEgmStop(X_AXIS);
  1066. }
  1067. #endif
  1068. #if 1
  1069. //停止情况下无效
  1070. if(CT_ERROR_IN && bRunning)
  1071. {
  1072. bRunning = 0;
  1073. CT_AutoStep = 0;
  1074. CT_MotorStep = 0;
  1075. CT_HeMoStep = 0;
  1076. // CT_SL_Step = 0;
  1077. // CT_HSL_Step = 0;
  1078. CT_ZL_Step = 0;
  1079. CT_CLT_Step = 0;
  1080. CT_ZD_Step = 0;
  1081. CT_AutoDelay = dwTickCount;
  1082. CT_MotorDelay = dwTickCount;
  1083. CT_HeMoDelay = dwTickCount;
  1084. // CT_SL_Delay = dwTickCount;
  1085. // CT_HSL_Delay = dwTickCount;
  1086. CT_ZL_Delay = dwTickCount;
  1087. CT_XM_BACK_Delay = dwTickCount;
  1088. CT_CLT_Delay = dwTickCount;
  1089. CT_ZDP_Delay = dwTickCount;
  1090. SingOneFlg001 = 0;
  1091. AxisDecStop(X_AXIS);
  1092. SetEn(X_AXIS,CT_MOTOR_DISEN);
  1093. cSongLiaoOk = 0;
  1094. cZhuangLiaoOk = 0;
  1095. // CT_XiaMo_VAVLE = 0; //下模
  1096. // CT_SongLiao_VAVLE = 0; //送料
  1097. // CT_GouZhen_VAVLE = 0; //勾针
  1098. // CT_DaLaPian_VAVLE = 0; //顶拉片(打拉片)
  1099. // CT_FenDai_VAVLE = 0; //分带
  1100. // CT_HeLian_VAVLE = 0; //合链(穿模后面)
  1101. CT_ZhenDongPian_OUT = 0; //振动盘
  1102. // CT_HuChi_VAVLE = 0; //护齿
  1103. // CT_HangSongLiao_VAVLE = 0; //横送料
  1104. //if(!CT_MaGou_VAVLE || (CT_HSL_ORIGIN_IN && !CT_HangSongLiao_VAVLE))
  1105. // CT_JieLiao_VAVLE = 0; //接料下模
  1106. // CT_JiaLaTou_VAVLE=0; //夹拉头
  1107. // CT_MaGou_VAVLE = 0; //马勾
  1108. CT_SetAlarmCode(CT_ERROR_out_ALARM);
  1109. }
  1110. #endif
  1111. }
  1112. //电机动作
  1113. //第1~10前拖带定位
  1114. //
  1115. void XYChuanTou_Motor(void) //
  1116. {
  1117. static long back_buff,save_buff;
  1118. unsigned short ch;
  1119. switch(CT_MotorStep)
  1120. {
  1121. case 0:
  1122. break;
  1123. //拖带定位动作
  1124. case 1:
  1125. if(cMotorDinWei_OK && bRunning)
  1126. {
  1127. CT_MotorStep = 0;
  1128. break;
  1129. }
  1130. else
  1131. {
  1132. cMotorDinWei_OK = 0;
  1133. if(!GetEn(X_AXIS) || !CT_GouZhen_VAVLE)
  1134. {
  1135. SetEn(X_AXIS,CT_MOTOR_EN);
  1136. // CT_SZ_OUT = CT_MOTOR_Y_EN;
  1137. CT_MotorDelay = dwTickCount + 150;
  1138. }
  1139. else
  1140. CT_MotorDelay = dwTickCount + 0;
  1141. SetDir(X_AXIS, CT_DIR_N);
  1142. CT_GouZhen_VAVLE = 1;
  1143. CT_MotorStep = 2;
  1144. }
  1145. break;
  1146. case 2:
  1147. if(dwTickCount >= CT_MotorDelay)
  1148. {
  1149. save_buff = dwRealPos;
  1150. ch = CT_PARAM_HSPEED;
  1151. if((Zipper_Length > dwRealPos + 2000) && (dwZipCnt > 2))
  1152. {
  1153. ch += CT_PARAM_HSPEED/3;
  1154. CT_MotorStep = 4;
  1155. }
  1156. else
  1157. CT_MotorStep = 3;
  1158. if(!X_DRV)
  1159. {
  1160. SetAccTime(X_AXIS,15);
  1161. SetDecTime(X_AXIS,20);
  1162. AxisContinueMove(X_AXIS,ch,CT_DIR_N);
  1163. }
  1164. }
  1165. break;
  1166. case 3: //不用变速
  1167. if(!CT_GUO_LIAN_IN)
  1168. {
  1169. back_buff = dwRealPos;
  1170. user_datas[127] = dwRealPos;//ch;
  1171. AxisChangeSpeed(X_AXIS,CT_PARAM_LSPEED);
  1172. CT_MotorStep = 5;
  1173. CT_MotorDelay = dwTickCount + VAVLE_ALARM_TIME;
  1174. }
  1175. else if(((dwRealPos - save_buff) >= CT_PARAM_MAX_LENGTH) && bRunning && CT_PARAM_MAX_LENGTH) //拖带拉链最大长度
  1176. {
  1177. CT_SetAlarmCode(CT_ZIPPER_MAXLENGHT_ALARM); //拉链长度保护
  1178. CT_MotorStep = 0;
  1179. }
  1180. break;
  1181. case 4://到空位
  1182. if(((dwRealPos + 1700) >= Zipper_Length) && Zipper_Length && (dwZipCnt > 2) && (CT_CLT_Step== 0))
  1183. {
  1184. AxisChangeSpeed(X_AXIS,CT_PARAM_HSPEED);
  1185. }
  1186. if(!CT_GUO_LIAN_IN)
  1187. {
  1188. back_buff = dwRealPos;
  1189. user_datas[127] = dwRealPos;//ch;
  1190. AxisChangeSpeed(X_AXIS,CT_PARAM_LSPEED);
  1191. CT_MotorStep = 5;
  1192. CT_MotorDelay = dwTickCount + VAVLE_ALARM_TIME;
  1193. }
  1194. else if(((dwRealPos - save_buff) >= CT_PARAM_MAX_LENGTH) && bRunning && CT_PARAM_MAX_LENGTH) //拖带拉链最大长度
  1195. {
  1196. CT_SetAlarmCode(CT_ZIPPER_MAXLENGHT_ALARM); //拉链长度保护
  1197. CT_MotorStep = 0;
  1198. }
  1199. break;
  1200. case 5:
  1201. if(CT_GUO_LIAN_IN_UP)
  1202. {
  1203. back_buff = dwRealPos;
  1204. AxisChangeSpeed(X_AXIS,CT_PARAM_LSPEED/2);
  1205. CT_MotorStep = 6;
  1206. }
  1207. else if(dwTickCount >= CT_MotorDelay)//(dwRealPos - back_buff) >= 4500) //空位走25公分停止
  1208. {
  1209. CT_SetAlarmCode(CT_NO_ZIPPER_ALARM);
  1210. CT_MotorStep = 0;
  1211. }
  1212. break;
  1213. case 6:
  1214. //延迟上勾针
  1215. if((dwRealPos - back_buff) >= CT_PARAM_GZ_LENGTH)
  1216. {
  1217. CT_GouZhen_VAVLE = 0;
  1218. CT_HuChi_VAVLE=1;
  1219. if((CT_PARAM_HouMa_MODE == HouMa_MODE_DANKUAI) ||
  1220. (CT_PARAM_HouMa_MODE == HouMa_MODE_SHUANGBI) )
  1221. {
  1222. CT_HeLian_VAVLE = 1; //合链关
  1223. }
  1224. }
  1225. //定位长度
  1226. if((dwRealPos - back_buff) >= CT_PARAM_STOP_LENGTH)
  1227. {
  1228. CT_GouZhen_VAVLE = 0;
  1229. CT_HuChi_VAVLE=1;
  1230. AxisEgmStop(X_AXIS);
  1231. CT_MotorStep = 7;
  1232. if((CT_PARAM_HouMa_MODE == HouMa_MODE_DANKUAI) ||
  1233. (CT_PARAM_HouMa_MODE == HouMa_MODE_SHUANGBI) )
  1234. {
  1235. CT_HeLian_VAVLE = 1; //合链关
  1236. }
  1237. }
  1238. break;
  1239. case 7:
  1240. if(!X_DRV)
  1241. {
  1242. CT_MotorStep = 0;
  1243. cMotorDinWei_OK = 1;
  1244. }
  1245. break;
  1246. case 40:
  1247. save_buff = 0;
  1248. ch = CT_PARAM_HSPEED;
  1249. if((Zipper_Length > (dwRealPos + 1800)) && (dwZipCnt > 2))
  1250. {
  1251. ch += CT_PARAM_HSPEED/3;
  1252. CT_MotorStep = 4;
  1253. }
  1254. else
  1255. CT_MotorStep = 3;
  1256. user_datas[125] = ch;
  1257. user_datas[126] = Zipper_Length;
  1258. user_datas[128] = dwRealPos;
  1259. AxisChangeSpeed(X_AXIS,ch);
  1260. break;
  1261. case 50: //此步为穿链时已经检测到拉链上升沿
  1262. back_buff = dwRealPos;
  1263. SetStartSpeed(X_AXIS,CT_PARAM_LSPEED/2);
  1264. AxisContinueMove(X_AXIS,CT_PARAM_LSPEED/2,CT_DIR_N);
  1265. CT_MotorStep = 6;
  1266. break;
  1267. /*
  1268. //穿入动作
  1269. case 100: //穿入电机慢慢复位动作
  1270. CT_MotorStep = 101;
  1271. break;
  1272. case 101:
  1273. if(CT_CR_ORIGIN_IN)
  1274. {
  1275. AxisDecStop(Y_AXIS);
  1276. CT_MotorStep = 102;
  1277. }
  1278. else if(dwTickCount >= CT_MotorDelay)
  1279. CT_SetAlarmCode(CT_CR_ORIGIN_ALARM);
  1280. break;
  1281. case 102:
  1282. if(!Y_DRV)
  1283. {
  1284. CT_MotorStep = 0;
  1285. }
  1286. break;
  1287. */
  1288. }
  1289. }
  1290. #endif