JHJiaoYaDinCun.c 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974
  1. #include "global.h"
  2. #if JIN_HONG_MACHINE
  3. long RealPosBuff = 0; //记录齿数
  4. unsigned long ToothNumBuff = 0;
  5. unsigned long RemainKongWeiToothNum = 0; // 空位剩余齿数
  6. unsigned char cFirstFlg = 0,cSeBiaoStep = 0;
  7. unsigned short SecondToothNum = 0;
  8. unsigned char cCntEn = 0;
  9. unsigned long dwSeBiaoDelayCnt = 0;
  10. void StopProc(void);
  11. void StartProc(void);
  12. unsigned long CalEncodePulse(void);
  13. unsigned short testDisp;
  14. unsigned char cStopFlg = 0;
  15. unsigned long dwSaveTooth;
  16. unsigned long over_pulse;
  17. unsigned char cCheckFlg;
  18. void JYDC_DelayAction(void);
  19. void JYDC_InitAction(void);
  20. void JYDC_ExtiActionX30(void);
  21. void JYDC_Action(void);
  22. void ModeSelect(void);
  23. void JYDC_ChuiQi(void);
  24. void JYDC_XiaChong(void);
  25. void JYDC_SetAlarmCode(unsigned alarm_code);
  26. void JYDC_StartStopAction(void);
  27. void JYDC_AutoRunStep(void);
  28. unsigned long GetToothNum(unsigned long zipper_length);
  29. unsigned long JYDC_ToothGetLength(unsigned long tooth_num);
  30. unsigned char STOP_IN_FLAG,STOP_IN_FLAG_OLD,STOP_FILTER;
  31. unsigned char cAccSpeed = 5;
  32. unsigned char cXC_OnceFlg = 0;
  33. unsigned long cSinglePulse;
  34. void JYDC_SetAlarmCode(unsigned alarm_code)
  35. {
  36. SetAlarmCode(JYDC_ALARM_ADDR,alarm_code);
  37. JYDC_bAlarmStop = 1;
  38. }
  39. void JYDC_DelayAction(void)
  40. {
  41. }
  42. unsigned long JY_pulse_to_pos;
  43. void JYDC_InitAction(void)
  44. {
  45. // CalFreqTab_X_Free_JY();
  46. // float length_buff,pulse_buff;
  47. CalFreqTab_X_Free(20);
  48. XGearRatio = 1;
  49. if(MODE_SELECT > 3)MODE_SELECT = 0;
  50. ModeSelect();
  51. CUR_LEN_JY = 0;
  52. STOP_IN_FLAG = STOP_IN;
  53. STOP_IN_FLAG_OLD = STOP_IN_FLAG;
  54. JYDC_XICHI_MOTOR_MODE = 0;
  55. }
  56. //手动动作
  57. void JYDC_ManualAction(void)
  58. {
  59. //警告跳出
  60. if(bClearTotal)
  61. {
  62. bClearTotal = 0;
  63. ClrcToTal(JYDC_TOTAL_ADDR);
  64. }
  65. if(!JYDC_bRunning)
  66. {
  67. if(JYDC_bAddTooth)
  68. {
  69. JYDC_bAddTooth = 0;
  70. if(JYDC_PARAM_REVICHISHU < 65535)JYDC_PARAM_REVICHISHU++;
  71. }
  72. if(JYDC_bDecTooth)
  73. {
  74. JYDC_bDecTooth = 0;
  75. if(JYDC_PARAM_REVICHISHU != 0)JYDC_PARAM_REVICHISHU--;
  76. }
  77. if(JYDC_bManXiaChong || JYDC_ManXiaChong_UP)
  78. {
  79. JYDC_bManXiaChong = 0;
  80. if(JYDC_XiaChongStep == 0)//if(!JYDC_bRunning && !STOP_IN && !X_DRV && (JYDC_XiaChongStep == 0))
  81. {
  82. JYDC_XiaChongStep = 1;
  83. }
  84. }
  85. if(JYDC_bManSuoChi)
  86. {
  87. JYDC_bManSuoChi = 0;
  88. JYDC_SuoChi_VAVLE = ~JYDC_SuoChi_VAVLE;
  89. }
  90. if(JYDC_bManChuiQi)
  91. {
  92. JYDC_bManChuiQi = 0;
  93. JYDC_ChuiQi_VAVLE = 1;
  94. JYDC_ChuiQiDelay = dwTickCount + JYDC_PARAM_CHUIQI_TIME * 10;
  95. }
  96. if(JYDC_bChangeLength)
  97. {
  98. JYDC_bChangeLength = 0;
  99. ModeSelect();
  100. SetData32bits(31,CalInch(SET_ZIPPER_LENGTH));
  101. JYDC_PARAM_REVICHISHU = GetToothNum(SET_ZIPPER_LENGTH);
  102. CUR_LEN_JY = 0;
  103. cFirstFlg = 1;
  104. }
  105. if(JYDC_bSetInch)
  106. {
  107. JYDC_bSetInch = 0;
  108. SetData32bits(6,CalLengthCM(SET_ZIPPER_LENGTH_INCH));
  109. JYDC_bChangeLength = 1;
  110. }
  111. if(JYDC_bSetTooth)
  112. {
  113. JYDC_bSetTooth = 0;
  114. SetData32bits(6,JYDC_ToothGetLength(JYDC_PARAM_REVICHISHU));
  115. JYDC_bChangeLength = 1;
  116. }
  117. if(JYDC_bManXiChiMotor)
  118. {
  119. JYDC_bManXiChiMotor = 0;
  120. JYDC_XiChi_MOTOR = ~JYDC_XiChi_MOTOR;
  121. }
  122. if(JYDC_bManGuaChiMotor)
  123. {
  124. if(!X_DRV)
  125. {
  126. JYDC_SuoChi_VAVLE = 0;
  127. AxisContinueMove(X_AXIS,JYDC_PARAM_SET_SPEED,1);
  128. }
  129. }
  130. else if(!JYDC_bManMotor)
  131. {
  132. if(X_DRV && (tXAxisStepper.State != 2) && !cStopFlg)
  133. {
  134. AxisEgmStop(X_AXIS);
  135. JYDC_SuoChi_VAVLE = 1;
  136. }
  137. }
  138. if(JYDC_bManMotor)
  139. {
  140. if(!X_DRV)
  141. {
  142. JYDC_SuoChi_VAVLE = 0;
  143. AxisContinueMove(X_AXIS,10,1);
  144. }
  145. }
  146. else if(!JYDC_bManGuaChiMotor && !cStopFlg)
  147. {
  148. if(X_DRV && (tXAxisStepper.State != 2))
  149. {
  150. AxisEgmStop(X_AXIS);
  151. JYDC_SuoChi_VAVLE = 1;
  152. }
  153. }
  154. }
  155. }
  156. //高速输入X30/X16定时器中断
  157. void JYDC_ExtiActionX30(void)
  158. {
  159. if(cCheckFlg)
  160. {
  161. // cCheckFlg = 0;
  162. // DISPLAY_DATA0 = JYDC_AutoStep;
  163. // DISPLAY_DATA1= JYDC_XiaChongStep;
  164. // DISPLAY_DATA3
  165. // DISPLAY_DATA3
  166. // JYDC_SetAlarmCode(JYDC_TOTAL_ALARM);
  167. }
  168. CUR_LEN_JY++;
  169. // dwRealPos = GetPos(X_AXIS);
  170. if(JYDC_bRunning)
  171. {
  172. if(cAccSpeed > 1)cAccSpeed--;
  173. }
  174. if(JYDC_SEBIAO_MODE)
  175. {
  176. if(cSeBiaoStep == 1)
  177. {
  178. dwSeBiaoDelayCnt--;
  179. if(dwSeBiaoDelayCnt == 0)
  180. {
  181. CUR_LEN_JY = 0;
  182. cFirstFlg = 1;
  183. RemainKongWeiToothNum = SET_KOUWEI_JY;
  184. cSeBiaoStep = 2;
  185. }
  186. }
  187. else if(cSeBiaoStep == 2)
  188. {
  189. if((CUR_LEN_JY >= ToothNumBuff) && JYDC_bRunning)
  190. {
  191. AxisEgmStop(X_AXIS);
  192. if(JYDC_bTest)
  193. {
  194. CUR_LEN_JY = 0;
  195. testDisp = 0;
  196. JYDC_bRunning = 0;
  197. JYDC_AutoStep = 0;
  198. JYDC_SuoChi_VAVLE = 1;
  199. cSeBiaoStep = 0;
  200. }
  201. }
  202. }
  203. }
  204. else
  205. {
  206. if((CUR_LEN_JY >= ToothNumBuff) && JYDC_bRunning)
  207. {
  208. AxisEgmStop(X_AXIS);
  209. if(JYDC_bRunning)JYDC_SuoChi_VAVLE = 1;
  210. if(JYDC_bTest)
  211. {
  212. JYDC_bRunning = 0;
  213. JYDC_AutoStep = 0;
  214. JYDC_SuoChi_VAVLE = 1;
  215. CUR_LEN_JY = 0;
  216. testDisp = 0;
  217. }
  218. }
  219. if((ToothNumBuff) <= (JYDC_PARAM_LOW_LENGTH+CUR_LEN_JY))
  220. {
  221. AxisChangeSpeed(X_AXIS,JYDC_PARAM_LOW_SPEED);
  222. }
  223. }
  224. if(cStopFlg)
  225. {
  226. dwSaveTooth++;
  227. if((dwSaveTooth >= JYDC_PARAM_LOW_LENGTH) || (CUR_LEN_JY >= ToothNumBuff))
  228. {
  229. AxisEgmStop(X_AXIS);
  230. JYDC_SuoChi_VAVLE = 1;
  231. dwSaveTooth = 0;
  232. // cStopFlg = 0;
  233. // DISPLAY_DATA2++;
  234. }
  235. }
  236. }
  237. //高速输入X31/X17外部色标信号中断
  238. void JYDC_ExtiActionX31(void)
  239. {
  240. testDisp++;
  241. if(CUR_LEN_JY != testDisp)
  242. {
  243. /* DISPLAY_DATA0 = CUR_LEN_JY;
  244. DISPLAY_DATA2 = testDisp;
  245. JYDC_SetAlarmCode(JYDC_TOTAL_ALARM); */
  246. }
  247. /* if(cStopFlg)
  248. {
  249. cStopFlg = 0;
  250. JYDC_SuoChi_VAVLE = 1;
  251. AxisEgmStop(X_AXIS);
  252. }*/
  253. }
  254. //胶牙定寸动作
  255. void JYDC_Action(void)
  256. {
  257. DISPLAY_DATA0 = dwRealPos;
  258. // DISPLAY_DATA1 = GetCurSpeed(X_AXIS);
  259. // DISPLAY_DATA2 = GetSetSpeed(X_AXIS);
  260. // DISPLAY_DATA3 = GetState(X_AXIS);
  261. if((JYDC_COUNT_IN_DW && JYDC_COUNT_DIR) || (JYDC_COUNT_IN_UP && !JYDC_COUNT_DIR))
  262. {
  263. JYDC_ExtiActionX31();
  264. }
  265. JYDC_ManualAction();
  266. JYDC_ChuiQi();
  267. JYDC_XiaChong();
  268. JYDC_StartStopAction();
  269. JYDC_AutoRunStep();
  270. }
  271. void ModeSelect(void)
  272. {
  273. switch(MODE_SELECT) //模具选择
  274. {
  275. case 0: //3#模具
  276. JY_JIZHUN_CISHU = JY_JIZHUN_CISHU1;//基准长度对应齿数
  277. JY_JIZHUN_LEN = JY_JIZHUN_LEN1;//基准长度
  278. SET_DAOKOU_JY = SET_DAOKOU_JY1; //机械模具刀口
  279. break;
  280. case 1: //5#模具
  281. JY_JIZHUN_CISHU = JY_JIZHUN_CISHU2;//基准长度对应齿数
  282. JY_JIZHUN_LEN = JY_JIZHUN_LEN2;//基准长度
  283. SET_DAOKOU_JY = SET_DAOKOU_JY2; //机械模具刀口
  284. break;
  285. case 2: //8#模具
  286. JY_JIZHUN_CISHU = JY_JIZHUN_CISHU3;//基准长度对应齿数
  287. JY_JIZHUN_LEN = JY_JIZHUN_LEN3;//基准长度
  288. SET_DAOKOU_JY = SET_DAOKOU_JY3; //机械模具刀口
  289. break;
  290. default: //特殊模具
  291. JY_JIZHUN_CISHU = JY_JIZHUN_CISHU4;//基准长度对应齿数
  292. JY_JIZHUN_LEN = JY_JIZHUN_LEN4;//基准长度
  293. SET_DAOKOU_JY = SET_DAOKOU_JY4; //机械模具刀口
  294. break;
  295. }
  296. if((JY_JIZHUN_CISHU == 0) || (JY_JIZHUN_LEN == 0))
  297. {
  298. JY_JIZHUN_CISHU = 49;
  299. JY_JIZHUN_LEN = 1250;
  300. SET_DAOKOU_JY = 10;
  301. }
  302. }
  303. //输入拉链长度返回所输入拉链长度所对应的齿数
  304. unsigned long GetToothNum(unsigned long zipper_length)
  305. {
  306. float length_buff1,tooth_buff,length_buff2;
  307. length_buff1 = zipper_length;
  308. tooth_buff = JY_JIZHUN_CISHU;
  309. length_buff2 = JY_JIZHUN_LEN;
  310. return (unsigned long)round(length_buff1 * tooth_buff / length_buff2);
  311. }
  312. //输入齿数返回拉链长度
  313. unsigned long JYDC_ToothGetLength(unsigned long tooth_num)
  314. {
  315. float toothbuff1,tooth_buff,length_buff2;
  316. toothbuff1 = tooth_num;
  317. tooth_buff = JY_JIZHUN_CISHU;
  318. length_buff2 = JY_JIZHUN_LEN;
  319. return (unsigned long)round((toothbuff1 * length_buff2 / tooth_buff));
  320. }
  321. //吹气动作
  322. void JYDC_ChuiQi(void)
  323. {
  324. if(JYDC_XiaChong_DW)
  325. {
  326. JYDC_ChuiQi_VAVLE = 1;
  327. JYDC_ChuiQiDelay = dwTickCount + JYDC_PARAM_CHUIQI_TIME * 10;
  328. }
  329. if(JYDC_ChuiQi_VAVLE)
  330. {
  331. if(JYDC_ChuiQiDelay < dwTickCount)JYDC_ChuiQi_VAVLE = 0;
  332. }
  333. if(JYDC_XiChiChuiQi_VAVLE)
  334. {
  335. if(JYDC_XiChiChuiQiDelay < dwTickCount)JYDC_XiChiChuiQi_VAVLE = 0;
  336. }
  337. }
  338. //下冲动作
  339. void JYDC_XiaChong(void)
  340. {
  341. if(JYDC_XiaChongStep == 1)
  342. {
  343. JYDC_ShaChe_VAVLE = 0;
  344. cCheckFlg = 1;
  345. JYDC_SuoChi_VAVLE = 1; //手动下冲不锁齿
  346. JYDC_XiaChongDelay = dwTickCount + XIACONG_DELAY_TIME*10;
  347. JYDC_XiaChongStep = 2;
  348. }
  349. else if((JYDC_XiaChongStep == 2) && (dwTickCount >= JYDC_XiaChongDelay))
  350. {
  351. JYDC_XiaChong_MOTOR = 1;
  352. JYDC_XiaChongDelay = dwTickCount + JYDC_PARAM_XC_ALARM_TIME * 10;
  353. JYDC_XiaChongStep = 3;
  354. }
  355. else if(JYDC_XiaChongStep == 3)
  356. {
  357. if(JYDC_XiaChong_IN_UP)
  358. {
  359. JYDC_XiaChong_MOTOR = 0;
  360. // if(JYDC_bRunning)JYDC_SuoChi_VAVLE = 0;
  361. JYDC_XiaChongDelay = dwTickCount + JYDC_PARAM_SHACHE_DELAY_TIME * 10;
  362. JYDC_XiaChongStep = 4;
  363. }
  364. else if(dwTickCount >= JYDC_XiaChongDelay)
  365. {
  366. JYDC_SetAlarmCode(JYDC_XIACHONG_ARRIVE_ALARM);
  367. JYDC_XiaChong_MOTOR = 0;
  368. JYDC_XiaChongStep = 4;
  369. }
  370. }
  371. else if((JYDC_XiaChongStep == 4) && (dwTickCount >= JYDC_XiaChongDelay))
  372. {
  373. JYDC_ShaChe_VAVLE = 1;
  374. JYDC_XiaChongStep = 5;
  375. JYDC_XiaChongDelay = dwTickCount + JYDC_PARAM_SHACHE_TIME;
  376. }
  377. else if((JYDC_XiaChongStep == 5) && (dwTickCount >= JYDC_XiaChongDelay))
  378. {
  379. JYDC_ShaChe_VAVLE = 0;
  380. JYDC_XiaChongStep = 6;
  381. }
  382. else if(JYDC_XiaChongStep == 6)
  383. {
  384. if(!JYDC_bRunning)
  385. {
  386. CUR_LEN_JY = 0;
  387. testDisp = 0;
  388. cFirstFlg = 1;
  389. RemainKongWeiToothNum = 0;
  390. }
  391. JYDC_XiaChongStep = 0;
  392. }
  393. }
  394. unsigned long GetLowSpeedPulse(void)
  395. {
  396. return (JY_JIZHUN_LEN*JYDC_CYCLE_LENGTH*10/JY_JIZHUN_CISHU/JYDC_CYCLE_PULSE*JYDC_PARAM_LOW_LENGTH+tXAxisStepper.cCurSpeed);
  397. }
  398. //启动停止故障停止动作
  399. void JYDC_StartStopAction(void)
  400. {
  401. static unsigned long long_time_delay,delay_stop;
  402. static unsigned long long_time_save_pulse,long_time_pulse;
  403. if((START_IN_UP || JYDC_bStart) && !JYDC_bRunning && (JYDC_AutoStep ==0))
  404. {
  405. if(GetTotal(JYDC_TOTAL_ADDR) >= SET_TOTAL)JYDC_SetAlarmCode(JYDC_TOTAL_ALARM);
  406. else
  407. {
  408. cStopFlg = 0;
  409. JYDC_AutoStep = 1;
  410. JYDC_bRunning = 1;
  411. JYDC_SuoChi_VAVLE = 0;
  412. JYDC_AutoDelay = 0;
  413. cAccSpeed = 6;
  414. }
  415. JYDC_bStart = 0;
  416. }
  417. if(JYDC_KaDai_IN && (GetAlarmCode(100) == 0))
  418. {
  419. JYDC_SetAlarmCode(JYDC_KADAI_ALARM);
  420. }
  421. if(dwTickCount>=long_time_delay)
  422. {
  423. long_time_delay = dwTickCount+100;
  424. if(STOP_IN)
  425. {
  426. delay_stop++;
  427. if(delay_stop>=10)
  428. {
  429. JYDC_SuoChi_VAVLE = 0;
  430. }
  431. }
  432. else
  433. {
  434. delay_stop = 0;
  435. }
  436. }
  437. if((STOP_IN_UP)|| JYDC_bStop)
  438. {
  439. JYDC_bStop = 0;
  440. if((((CUR_LEN_JY+JYDC_PARAM_LOW_LENGTH+15) >= ToothNumBuff) || (JYDC_XiaChongStep != 0)) && JYDC_bRunning)
  441. {
  442. SingOneFlg = 1;
  443. }
  444. else
  445. {
  446. JYDC_ChuiQi_VAVLE = 1;
  447. JYDC_ChuiQiDelay = dwTickCount + JYDC_PARAM_CHUIQI_TIME * 10;
  448. JYDC_AutoDelay = dwTickCount;
  449. JYDC_bRunning = 0;
  450. JYDC_AutoStep = 0;
  451. JYDC_XiChi_MOTOR = 0;
  452. if(X_DRV)
  453. {
  454. if(!cStopFlg)
  455. {
  456. cStopFlg = 1;
  457. long_time_save_pulse = dwRealPos;
  458. long_time_pulse = GetLowSpeedPulse()+2000;
  459. AxisChangeSpeed(X_AXIS,JYDC_PARAM_LOW_SPEED);
  460. //DISPLAY_DATA3 = long_time_pulse;
  461. dwSaveTooth = 0;
  462. }
  463. }
  464. else
  465. {
  466. // if(tXAxisStepper.cCurSpeed >= 60)MV_Set_Dec_CPU(X_AXIS, tXAxisStepper.cCurSpeed/7);
  467. // AxisEgmStop(X_AXIS);
  468. // JYDC_SuoChi_VAVLE = 1;
  469. }
  470. SingOneFlg = 0;
  471. JYDC_bManGuaChiMotor = 0;
  472. }
  473. }
  474. if(cStopFlg)
  475. {
  476. if((dwRealPos - long_time_save_pulse) >= long_time_pulse)
  477. {
  478. cStopFlg = 0;
  479. AxisEgmStop(X_AXIS);
  480. JYDC_SuoChi_VAVLE = 1;
  481. }
  482. }
  483. if(JYDC_bAlarmStop)
  484. {
  485. JYDC_bAlarmStop = 0;
  486. AxisEgmStop(X_AXIS);
  487. JYDC_AutoStep = 0;
  488. if(JYDC_bRunning)JYDC_SuoChi_VAVLE = 1;
  489. JYDC_bRunning = 0;
  490. JYDC_XiaChongDelay = dwTickCount;
  491. JYDC_AutoDelay = dwTickCount;
  492. SingOneFlg = 0;
  493. JYDC_bManGuaChiMotor = 0;
  494. }
  495. }
  496. unsigned long ToothTransPulse(unsigned long tooth)
  497. {
  498. return(JY_JIZHUN_LEN * tooth * 2000 / 250 / JY_JIZHUN_CISHU);
  499. }
  500. unsigned char CheckSpeedError(unsigned char cspeed)
  501. {
  502. unsigned char buff;
  503. buff = cspeed/cAccSpeed;
  504. if(buff < 5)return 5;
  505. else
  506. return buff;
  507. }
  508. unsigned char CheckMaxLowSpeed(unsigned char cspeed)
  509. {
  510. if(cspeed > JYDC_PARAM_SET_SPEED)
  511. return JYDC_PARAM_SET_SPEED;
  512. else
  513. return cspeed;
  514. }
  515. //自动运行动作
  516. void JYDC_AutoRunStep(void)
  517. {
  518. // DISPLAY_DATA3 = dwSaveTooth;
  519. // DISPLAY_DATA1 = dwRealPos;
  520. // DISPLAY_DATA2 = dwSaveTooth;
  521. // DISPLAY_DATA3 = ToothNumBuff;
  522. dwRealPos = GetPos(X_AXIS);
  523. if(JYDC_XICHI_MOTOR_MODE)JYDC_XiChi_MOTOR = 1;
  524. else JYDC_XiChi_MOTOR = 0;
  525. if(JYDC_bRunning)
  526. {
  527. unsigned short buff;
  528. if(JYDC_AutoStep == 1)
  529. {
  530. if(JYDC_SEBIAO_MODE)
  531. {
  532. JYDC_AutoStep = 20;
  533. JYDC_SuoChi_VAVLE = 0;
  534. dwZipCnt = 0;
  535. }
  536. else
  537. {
  538. if((CUR_LEN_JY >= ToothNumBuff) && (ToothNumBuff != 0))
  539. {
  540. // CUR_LEN_JY = 0;
  541. testDisp = 0;
  542. if(!JYDC_bTest)JYDC_XiaChongStep = 1;
  543. else JYDC_XiaChongStep = 0;
  544. JYDC_AutoStep = 7;
  545. }
  546. else
  547. JYDC_AutoStep = 2;
  548. }
  549. }
  550. else if((JYDC_AutoStep == 2) && (JYDC_XiaChongStep == 0))
  551. {
  552. cFirstFlg = 1;
  553. if(RemainKongWeiToothNum == 0)
  554. {
  555. RemainKongWeiToothNum = SET_KOUWEI_JY;
  556. }
  557. else
  558. {
  559. }
  560. JYDC_AutoStep = 3;
  561. }
  562. else if(JYDC_AutoStep == 3)
  563. {
  564. if(RemainKongWeiToothNum >= SET_DAOKOU_JY)
  565. {
  566. if(cFirstFlg)
  567. {
  568. if(JYDC_PARAM_REVICHISHU <= SET_KOUWEI_JY)
  569. {
  570. ToothNumBuff = JYDC_PARAM_REVICHISHU + SET_DAOKOU_JY;
  571. RemainKongWeiToothNum = 0;
  572. }
  573. else
  574. {
  575. // ToothNumBuff = JYDC_PARAM_REVICHISHU + (RemainKongWeiToothNum-SET_DAOKOU_JY) + SET_DAOKOU_JY;
  576. ToothNumBuff = JYDC_PARAM_REVICHISHU+SET_DAOKOU_JY;
  577. RemainKongWeiToothNum -= SET_DAOKOU_JY;
  578. }
  579. }
  580. else
  581. {
  582. ToothNumBuff = ToothNumBuff + SET_DAOKOU_JY;
  583. RemainKongWeiToothNum -= SET_DAOKOU_JY;
  584. }
  585. }
  586. else
  587. {
  588. if(cFirstFlg)
  589. {
  590. ToothNumBuff = JYDC_PARAM_REVICHISHU - RemainKongWeiToothNum + SET_DAOKOU_JY;
  591. }
  592. else
  593. {
  594. ToothNumBuff = ToothNumBuff + RemainKongWeiToothNum;
  595. }
  596. RemainKongWeiToothNum = 0;
  597. }
  598. JYDC_SuoChi_VAVLE = 0;
  599. // JYDC_AutoDelay = dwTickCount + 50;
  600. JYDC_AutoStep = 4;
  601. }
  602. else if((JYDC_AutoStep == 4) && (dwTickCount >= JYDC_AutoDelay))
  603. {
  604. cCheckFlg = 0;
  605. if((ToothNumBuff) > (JYDC_PARAM_LOW_LENGTH + CUR_LEN_JY))
  606. {
  607. AxisContinueMoveAcc(X_AXIS,JYDC_PARAM_SET_SPEED,1,5,1,1);
  608. // AxisContinueMove(X_AXIS,JYDC_PARAM_SET_SPEED,0);
  609. AxisChangeSpeed(X_AXIS,CheckSpeedError(JYDC_PARAM_SET_SPEED));
  610. JYDC_AutoDelay = dwTickCount + NO_TOOTHCOUT_TIME * 10;
  611. JYDC_XiChiChuiQi_VAVLE = 1;
  612. JYDC_XiChiChuiQiDelay = dwTickCount + 200;
  613. JYDC_AutoStep = 5;
  614. }
  615. else
  616. {
  617. AxisContinueMove(X_AXIS,CheckMaxLowSpeed(JYDC_PARAM_LOW_SPEED),1);
  618. JYDC_AutoDelay = dwTickCount + NO_TOOTHCOUT_TIME * 10;
  619. JYDC_XiChiChuiQi_VAVLE = 1;
  620. JYDC_XiChiChuiQiDelay = dwTickCount + 200;
  621. JYDC_AutoStep = 6;
  622. }
  623. /* DISPLAY_DATA6 = ToothTransPulse(ToothNumBuff);
  624. DISPLAY_DATA7 = ToothTransPulse(JYDC_PARAM_LOW_LENGTH);
  625. AxisMoveTwoPos(X_AXIS,JYDC_PARAM_SET_SPEED,ToothTransPulse(ToothNumBuff - JYDC_PARAM_LOW_LENGTH),JYDC_PARAM_LOW_SPEED,ToothTransPulse(JYDC_PARAM_LOW_LENGTH+5),0);
  626. JYDC_AutoStep = 6;
  627. JYDC_AutoDelay = dwTickCount + NO_TOOTHCOUT_TIME;*/
  628. }
  629. else if(JYDC_AutoStep == 5)
  630. {
  631. if(cFirstFlg)
  632. {
  633. if((ToothNumBuff) <= (JYDC_PARAM_LOW_LENGTH + CUR_LEN_JY))
  634. {
  635. AxisChangeSpeed(X_AXIS,CheckMaxLowSpeed(JYDC_PARAM_LOW_SPEED));
  636. cFirstFlg = 0;
  637. JYDC_AutoStep = 6;
  638. }
  639. else if(dwTickCount >= JYDC_AutoDelay)
  640. {
  641. JYDC_SetAlarmCode(JYDC_COUNT_ALARM);
  642. }
  643. else
  644. {
  645. if(X_DRV)AxisChangeSpeed(X_AXIS,CheckSpeedError(JYDC_PARAM_SET_SPEED));
  646. }
  647. }
  648. else
  649. {
  650. if((ToothNumBuff) <= (JYDC_PARAM_LOW_LENGTH + CUR_LEN_JY))
  651. {
  652. AxisChangeSpeed(X_AXIS,CheckMaxLowSpeed(JYDC_PARAM_LOW_SPEED));
  653. JYDC_AutoStep = 6;
  654. }
  655. else if(dwTickCount >= JYDC_AutoDelay)
  656. {
  657. JYDC_SetAlarmCode(JYDC_COUNT_ALARM);
  658. }
  659. else
  660. {
  661. if(X_DRV)AxisChangeSpeed(X_AXIS,CheckSpeedError(JYDC_PARAM_SET_SPEED));
  662. }
  663. }
  664. }
  665. else if(JYDC_AutoStep == 6)
  666. {
  667. if(!X_DRV)
  668. {
  669. if(JYDC_FZ_MODE)
  670. {
  671. JYDC_AutoStep = 100;
  672. JYDC_AutoDelay = dwTickCount +JYDC_DELAY_FZ;
  673. }
  674. else
  675. {
  676. if(!JYDC_bTest)JYDC_XiaChongStep = 1;
  677. else JYDC_XiaChongStep = 0;
  678. JYDC_AutoStep = 7;
  679. }
  680. }
  681. else if(dwTickCount >= JYDC_AutoDelay)
  682. {
  683. JYDC_SetAlarmCode(JYDC_COUNT_ALARM);
  684. }
  685. }
  686. else if(JYDC_AutoStep == 7)
  687. {
  688. if(JYDC_XiaChongStep == 0)
  689. {
  690. if(RemainKongWeiToothNum == 0)
  691. {
  692. JYDC_AutoStep = 8;
  693. JYDC_AutoDelay = dwTickCount;
  694. }
  695. else
  696. {
  697. JYDC_AutoStep = 3;
  698. JYDC_AutoDelay = dwTickCount;
  699. }
  700. }
  701. }
  702. else if((JYDC_AutoStep == 8) && (JYDCRunFlg == 1))
  703. {
  704. AddToTal(JYDC_TOTAL_ADDR);
  705. CUR_LEN_JY = 0;
  706. testDisp = 0;
  707. if((GetTotal(JYDC_TOTAL_ADDR) >= SET_TOTAL) || JYDC_bStop || SingOneFlg)
  708. {
  709. if(JYDC_bStop || SingOneFlg)
  710. {
  711. JYDC_bStop = 0;
  712. JYDC_AutoStep = 0;
  713. JYDC_bRunning = 0;
  714. SingOneFlg = 0;
  715. JYDC_SuoChi_VAVLE = 1;
  716. JYDC_XiChi_MOTOR = 0;
  717. }
  718. else
  719. {
  720. JYDC_SetAlarmCode(JYDC_TOTAL_ALARM);
  721. }
  722. }
  723. else
  724. {
  725. JYDC_AutoStep = 1;
  726. cAccSpeed = 6;
  727. JYDC_AutoDelay = JYDC_PARAM_CYCLE_DELAY * 10 + dwTickCount;
  728. CalProSP(JYDC_PROSPEED_ADDR);
  729. }
  730. }
  731. else if((JYDC_AutoStep == 100) && (dwTickCount >= JYDC_AutoDelay))
  732. {
  733. AxisMovePosAccDec(X_AXIS,JYDC_PARAM_SET_SPEED,JYDC_FZ_LENGTH,5,1,1);
  734. JYDC_AutoStep = 101;
  735. }
  736. else if(JYDC_AutoStep == 101)
  737. {
  738. // if(!X_DRV)
  739. {
  740. if(!JYDC_bTest)JYDC_XiaChongStep = 1;
  741. else JYDC_XiaChongStep = 0;
  742. JYDC_AutoStep = 7;
  743. }
  744. }
  745. else if((JYDC_AutoStep == 20) && (dwTickCount >= JYDC_AutoDelay)) //色标动作
  746. {
  747. cSeBiaoEn = 1;
  748. if(dwZipCnt == 0)
  749. AxisContinueMove(X_AXIS,CheckMaxLowSpeed(JYDC_PARAM_LOW_SPEED),1);
  750. else
  751. AxisContinueMove(X_AXIS,JYDC_PARAM_SET_SPEED,1);
  752. JYDC_AutoDelay = dwTickCount + NO_TOOTHCOUT_TIME * 10;
  753. JYDC_XiChiChuiQi_VAVLE = 1;
  754. JYDC_XiChiChuiQiDelay = dwTickCount + 200;
  755. JYDC_AutoStep = 21;
  756. }
  757. else if(JYDC_AutoStep == 21)
  758. {
  759. if(!X_DRV)
  760. {
  761. JYDC_AutoStep = 22;
  762. JYDC_AutoDelay = dwTickCount;
  763. }
  764. else if(dwTickCount >= JYDC_AutoDelay)
  765. {
  766. JYDC_SetAlarmCode(JYDC_SEBIAO_ALARM);
  767. }
  768. }
  769. else if(JYDC_AutoStep == 22)
  770. {
  771. if(RemainKongWeiToothNum >= SET_DAOKOU_JY)
  772. {
  773. if(cFirstFlg)
  774. {
  775. if(JYDC_PARAM_REVICHISHU <= SET_KOUWEI_JY)
  776. {
  777. ToothNumBuff = JYDC_PARAM_REVICHISHU + SET_DAOKOU_JY;
  778. RemainKongWeiToothNum = 0;
  779. }
  780. else
  781. {
  782. ToothNumBuff = JYDC_PARAM_REVICHISHU + (RemainKongWeiToothNum-SET_DAOKOU_JY) + SET_DAOKOU_JY;
  783. RemainKongWeiToothNum -= SET_DAOKOU_JY;
  784. }
  785. }
  786. else
  787. {
  788. ToothNumBuff = ToothNumBuff + SET_DAOKOU_JY;
  789. RemainKongWeiToothNum -= SET_DAOKOU_JY;
  790. }
  791. }
  792. else
  793. {
  794. if(cFirstFlg)
  795. {
  796. ToothNumBuff = JYDC_PARAM_REVICHISHU - RemainKongWeiToothNum + SET_DAOKOU_JY;
  797. }
  798. else
  799. {
  800. ToothNumBuff = ToothNumBuff + RemainKongWeiToothNum;
  801. }
  802. RemainKongWeiToothNum = 0;
  803. }
  804. JYDC_AutoStep = 23;
  805. }
  806. else if((JYDC_AutoStep == 23) && (dwTickCount >= JYDC_AutoDelay))
  807. {
  808. if((ToothNumBuff - CUR_LEN_JY) > JYDC_PARAM_LOW_LENGTH)
  809. {
  810. if(!X_DRV)AxisContinueMove(X_AXIS,JYDC_PARAM_SET_SPEED,0);
  811. JYDC_AutoDelay = dwTickCount + NO_TOOTHCOUT_TIME * 10;
  812. JYDC_XiChiChuiQi_VAVLE = 1;
  813. JYDC_XiChiChuiQiDelay = dwTickCount + 200;
  814. JYDC_AutoStep = 24;
  815. }
  816. else
  817. {
  818. if(!X_DRV)AxisContinueMove(X_AXIS,CheckMaxLowSpeed(JYDC_PARAM_LOW_SPEED),0);
  819. JYDC_AutoDelay = dwTickCount + NO_TOOTHCOUT_TIME * 10;
  820. JYDC_XiChiChuiQi_VAVLE = 1;
  821. JYDC_XiChiChuiQiDelay = dwTickCount + 200;
  822. JYDC_AutoStep = 25;
  823. }
  824. }
  825. else if(JYDC_AutoStep == 24)
  826. {
  827. if(cFirstFlg)
  828. {
  829. if((ToothNumBuff - CUR_LEN_JY) <= (JYDC_PARAM_LOW_LENGTH))
  830. {
  831. AxisChangeSpeed(X_AXIS,CheckMaxLowSpeed(JYDC_PARAM_LOW_SPEED));
  832. cFirstFlg = 0;
  833. JYDC_AutoStep = 25;
  834. }
  835. else if(dwTickCount >= JYDC_AutoDelay)
  836. {
  837. JYDC_SetAlarmCode(JYDC_COUNT_ALARM);
  838. }
  839. }
  840. else
  841. {
  842. if((ToothNumBuff - CUR_LEN_JY) <= JYDC_PARAM_LOW_LENGTH)
  843. {
  844. AxisChangeSpeed(X_AXIS,CheckMaxLowSpeed(JYDC_PARAM_LOW_SPEED));
  845. JYDC_AutoStep = 25;
  846. }
  847. else if(dwTickCount >= JYDC_AutoDelay)
  848. {
  849. JYDC_SetAlarmCode(JYDC_COUNT_ALARM);
  850. }
  851. }
  852. }
  853. else if(JYDC_AutoStep == 25)
  854. {
  855. if(!X_DRV)
  856. {
  857. if(!JYDC_bTest)JYDC_XiaChongStep = 1;
  858. else JYDC_XiaChongStep = 0;
  859. JYDC_AutoStep = 26;
  860. }
  861. else if(dwTickCount >= JYDC_AutoDelay)
  862. {
  863. JYDC_SetAlarmCode(JYDC_COUNT_ALARM);
  864. }
  865. }
  866. else if(JYDC_AutoStep == 26)
  867. {
  868. if(JYDC_XiaChongStep == 0)
  869. {
  870. if(RemainKongWeiToothNum == 0)
  871. {
  872. JYDC_AutoStep = 27;
  873. JYDC_AutoDelay = dwTickCount;
  874. }
  875. else
  876. {
  877. JYDC_AutoStep = 22;
  878. JYDC_AutoDelay = dwTickCount;
  879. }
  880. }
  881. }
  882. else if((JYDC_AutoStep == 27) && (JYDCRunFlg == 1))
  883. {
  884. AddToTal(JYDC_TOTAL_ADDR);
  885. dwZipCnt++;
  886. CUR_LEN_JY = 0;
  887. cSeBiaoStep = 0;
  888. if((GetTotal(JYDC_TOTAL_ADDR) >= SET_TOTAL) || JYDC_bStop || SingOneFlg)
  889. {
  890. if(JYDC_bStop || SingOneFlg)
  891. {
  892. JYDC_bStop = 0;
  893. JYDC_AutoStep = 0;
  894. JYDC_bRunning = 0;
  895. SingOneFlg = 0;
  896. JYDC_SuoChi_VAVLE = 1;
  897. JYDC_XiChi_MOTOR = 0;
  898. }
  899. else
  900. {
  901. JYDC_SetAlarmCode(JYDC_TOTAL_ALARM);
  902. }
  903. }
  904. else
  905. {
  906. JYDC_AutoStep = 1;
  907. JYDC_AutoDelay = JYDC_PARAM_CYCLE_DELAY * 10 + dwTickCount;
  908. CalProSP(JYDC_PROSPEED_ADDR);
  909. }
  910. }
  911. }
  912. }
  913. #endif