XYJinShuDinCun.c 40 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200
  1. #include "global.h"
  2. #if XIN_YE_MACHINE==1
  3. void JSDC_CheckStart(void);
  4. void JSDC_Motor(void);
  5. void JSDC_XiaChong(void);
  6. void JSDC_ChuiQi(void);
  7. void JSDC_ValveAction(void);
  8. void JSDC_ManualAction(void);
  9. void JSDC_AutoAction(void);
  10. unsigned char JSDC_CheckPos(void);
  11. unsigned char JSDC_cLFengTimer,JSDC_cRFengTimer;
  12. unsigned long JSDC_cZipperLength[2];
  13. unsigned char JSDC_cCheckLengthOk=0;
  14. unsigned char JSDC_cGZDW_CNT=0,JSDC_SingOne=0,JSDC_oneDEL=0,JSDC_twoDEL=0;
  15. unsigned char JSDC_STOP_IN_FLAG,JSDC_STOP_IN_FLAG_OLD,JSDC_STOP_FILTER;
  16. unsigned char JSDC_SingOneFlag = 0,JSDC_FirstFlg = 0;
  17. unsigned char JSDC_cAlarmStopFlg = 0;
  18. long JSDC_dwEncPos = 0;
  19. long JSDC_SaveLength = 0;
  20. //故障报警
  21. void JSDC_SetAlarmCode(unsigned alarm_code)
  22. {
  23. SetAlarmCode(JSDC_ALARM_ADDR,alarm_code);
  24. JSDC_bAlarmStop = 1;
  25. JSDC_cAlarmStopFlg = 1;
  26. }
  27. //高速输入X20外部色标信号中断
  28. void JSDC_ExtiActionX20(void)
  29. {
  30. }
  31. void JSDC_InitAction(void)
  32. {
  33. float length_buff,pulse_buff;
  34. CalFreqTab_X_Free(25);
  35. length_buff = JSDC_PARAM_DAILUN_LENGTH;
  36. pulse_buff = JSDC_PARAM_CYCLE_PULSE;
  37. XGearRatio = pulse_buff/length_buff;
  38. length_buff = JSDC_BM_LENGTH;
  39. pulse_buff = 1000;
  40. BMGearRatio = pulse_buff/length_buff;
  41. JSDC_SZ_OUT = 1;
  42. JSDC_STOP_IN_FLAG = STOP_IN;
  43. JSDC_STOP_IN_FLAG_OLD = JSDC_STOP_IN_FLAG;
  44. JSDC_SaveLength = 0;
  45. }
  46. void JSDC_Action(void)
  47. {
  48. InputPinConfig();
  49. JSDC_CheckStart(); //启动
  50. JSDC_XiaChong(); //下冲
  51. JSDC_ChuiQi();
  52. JSDC_ValveAction();
  53. JSDC_Motor(); //拖带控制
  54. JSDC_ManualAction();
  55. JSDC_AutoAction();
  56. OutputPinConfig();
  57. }
  58. void JSDC_ManualAction(void)
  59. {
  60. long i;
  61. short *len_buff;
  62. //清总产量
  63. if(JSDC_bClear) //清总产量
  64. {
  65. JSDC_bClear = 0;
  66. ClrcToTal(JSDC_TOTAL_ADDR);
  67. JSDC_bSaveWorkData = 1;
  68. }
  69. //当长度改变时,生产总量自动清零
  70. if(JSDC_bChangeLength)
  71. {
  72. JSDC_bChangeLength = 0;
  73. JSDC_SaveLength = 0;
  74. JSDC_bClear = 1;
  75. }
  76. //加10
  77. if(JSDC_bAddLength)
  78. {
  79. JSDC_bAddLength = 0;
  80. i = JSDC_SET_REVISE_ZIPPER_LENGTH;
  81. i += 5;
  82. SetData32bits(JSDC_ZIPPER_LENGTH_ADDR,i);
  83. }
  84. //减10
  85. if(JSDC_bDecLength)
  86. {
  87. JSDC_bDecLength = 0;
  88. i = JSDC_SET_REVISE_ZIPPER_LENGTH;
  89. i -= 5;
  90. SetData32bits(JSDC_ZIPPER_LENGTH_ADDR,i);
  91. }
  92. //工作方式选择(数控定寸和勾针定寸) 
  93. if(JSDC_bSetDCMode)
  94. {
  95. JSDC_bSetDCMode = 0;
  96. JSDC_SaveLength = 0;
  97. if(JSDC_DC_MODE != 0)
  98. {
  99. JSDC_GouZhen_VAVLE = 1;
  100. JSDC_cGouZhenTime = 300;
  101. }
  102. if(JSDC_DC_MODE == JSDC_DC_SF_MODE)
  103. {
  104. MV_Set_Command_Pos_CPU(X_AXIS,0);
  105. }
  106. }
  107. //英寸设置
  108. if(JSDC_bSetLength)
  109. {
  110. JSDC_bSetLength = 0;
  111. if(JSDC_PARAM_INCH_MODE)
  112. {
  113. SetData32bits(15,CalLengthCM(JSDC_SET_ZIPPER_LENGTH_INCH));
  114. len_buff = &JSDC_SET_REVISE_ZIPPER_LENGTH_INCH;
  115. JSDC_SET_REVISE_ZIPPER_LENGTH = CalLengthCM2(*len_buff);
  116. }
  117. else
  118. {
  119. SetData32bits(18,CalInch(JSDC_SET_ZIPPER_LENGTH));
  120. len_buff = &JSDC_SET_REVISE_ZIPPER_LENGTH;
  121. JSDC_SET_REVISE_ZIPPER_LENGTH_INCH = CalInch2(*len_buff);
  122. }
  123. JSDC_SaveLength = 0;
  124. }
  125. if((JSDC_bRunning) == 0) ////手动
  126. {
  127. if(JSDC_bXiaChong | JSDC_ManualXC_IN_UP)
  128. {
  129. JSDC_bXiaChong = 0;
  130. JSDC_SaveLength = 0;
  131. JSDC_twoDEL=1;
  132. if(JSDC_GOUZHEN_MODE)
  133. {
  134. JSDC_cValveStep=1;
  135. }
  136. if(JSDC_cXiaChongStep == 0)
  137. JSDC_cXiaChongStep = 1;
  138. }
  139. if(JSDC_bMotorSZ)
  140. {
  141. JSDC_bMotorSZ = 0;
  142. JSDC_SZ_OUT = ~JSDC_SZ_OUT;
  143. }
  144. //手动测试气缸
  145. if(JSDC_bDingZhen)
  146. {
  147. JSDC_bDingZhen = 0;
  148. JSDC_DingZhen_VAVLE = ~JSDC_DingZhen_VAVLE;
  149. }
  150. if(JSDC_bRightXuanChi)
  151. {
  152. JSDC_bRightXuanChi = 0;
  153. JSDC_RightXC_VAVLE = ~JSDC_RightXC_VAVLE;
  154. }
  155. if(JSDC_bLeftXuanChi)
  156. {
  157. JSDC_bLeftXuanChi = 0;
  158. JSDC_LeftXC_VAVLE = ~JSDC_LeftXC_VAVLE;
  159. }
  160. if(JSDC_bShaChe)
  161. {
  162. JSDC_bShaChe = 0;
  163. JSDC_XC_ShaChe = ~JSDC_XC_ShaChe;
  164. }
  165. if(JSDC_bRightCY)
  166. {
  167. JSDC_bRightCY = 0;
  168. JSDC_RightCY_VAVLE = ~JSDC_RightCY_VAVLE;
  169. }
  170. if(JSDC_bLeftDY)
  171. {
  172. JSDC_bLeftDY = 0;
  173. JSDC_LeftDY_VAVLE = ~JSDC_LeftDY_VAVLE;
  174. }
  175. //点动下冲
  176. if((JSDC_bDotXiaChong))
  177. {
  178. JSDC_bDotXiaChong = 0;
  179. if(JSDC_cXiaChongStep == 0)JSDC_cXiaChongStep = 20;
  180. }
  181. if(JSDC_bGouZhen)
  182. {
  183. JSDC_bGouZhen = 0;
  184. JSDC_cGouZhenTime = dwTickCount + 300;
  185. JSDC_GouZhen_VAVLE = ~JSDC_GouZhen_VAVLE;
  186. }
  187. if(JSDC_DC_MODE != 0) //伺服定寸
  188. {
  189. JSDC_GouZhen_VAVLE = 1;
  190. }
  191. else
  192. {
  193. if((dwTickCount >= JSDC_cGouZhenTime) && !JSDC_SingOne && JSDC_cXiaChongStep==0)
  194. JSDC_GouZhen_VAVLE = 0;
  195. }
  196. if(JSDC_bTestMotor)
  197. {
  198. if(!X_DRV && JSDC_CheckPos())
  199. {
  200. // AxisContinueMove(X_AXIS,10,1);
  201. MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P, JSDC_SDtuodai_sSPEED,JSDC_SDtuodai_sSPEED,5,5);
  202. // if(JSDC_cSDStep == 0)JSDC_cSDStep = 1;
  203. }
  204. }
  205. else
  206. {
  207. if(X_DRV)
  208. {
  209. AxisEgmStop(X_AXIS);
  210. // JSDC_cSDStep = 0;
  211. }
  212. }
  213. }
  214. }
  215. void JSDC_AutoAction(void)
  216. {
  217. // DISPLAY_DATA0 = JSDC_cAutoStep;
  218. DISPLAY_DATA1 = JSDC_cMotorStep;
  219. DISPLAY_DATA2 = JSDC_BM_LENGTH;
  220. DISPLAY_DATA3 = JSDC_cXiaChongStep;
  221. DISPLAY_DATA4 = JSDC_cCheckLengthOk;
  222. // DISPLAY_DATA5 = zipper_length;
  223. DISPLAY_DATA6 = dwRealPos;
  224. // DISPLAY_DATA6= dwRealPos;
  225. JSDC_LENTH_BUFF = JSDC_dwEncPos;
  226. if(JSDC_bRunning)
  227. {
  228. switch(JSDC_cAutoStep)
  229. {
  230. case 0:
  231. break;
  232. case 1:
  233. if(dwTickCount >= JSDC_cAutoDelay)
  234. {
  235. JSDC_cAutoStep = 2;
  236. }
  237. break;
  238. case 2:
  239. //左右分针要退到位,过链到位要离开
  240. if(dwTickCount >= JSDC_cAutoDelay)
  241. {
  242. JSDC_cAutoStep = 3;
  243. switch(JSDC_DC_MODE)
  244. {
  245. case JSDC_DC_SF_MODE:JSDC_cMotorStep = 20; break; //伺服
  246. case JSDC_DC_BMQ_MODE:JSDC_cMotorStep = 60; break; //编码器
  247. default:JSDC_cMotorStep = 1; //启动拖带 ;//勾针
  248. }
  249. }
  250. break;
  251. case 3:
  252. //拖带已经完成
  253. if(JSDC_cMotorStep == 0)
  254. {
  255. if(JSDC_GOUZHEN_MODE)
  256. {
  257. JSDC_cValveStep=1;
  258. }
  259. JSDC_cAutoStep = 4;
  260. }
  261. break;
  262. case 4:
  263. if(JSDC_cValveStep == 0)
  264. {
  265. JSDC_cAutoStep = 5;
  266. }
  267. break;
  268. case 5:
  269. if(JSDC_cXiaChongStep == 0)
  270. {
  271. JSDC_cXiaChongStep = 1; //下冲电机启动
  272. JSDC_cAutoStep = 6;
  273. }
  274. break;
  275. case 6: //下冲已完成
  276. if((JSDC_cXiaChongStep == 0) || (JSDC_cXiaChongStep == 6))
  277. {
  278. if(JSDC_DC_MODE == JSDC_DC_BMQ_MODE)
  279. {
  280. JSDC_SaveLength += JSDC_PARAM_DAOKOU_LENGTH;
  281. if(JSDC_SaveLength >= JSDC_PARAM_KONG_WEI_LENGTH)
  282. {
  283. if(JSDC_bRunning)
  284. SetEncodePos(0);
  285. DISPLAY_DATA0 =1;
  286. dwZipCnt++;
  287. if(JSDC_cGZDW_CNT < 3)
  288. JSDC_cGZDW_CNT++;
  289. JSDC_SaveLength = 0;
  290. // SetPos(X_AXIS,0);
  291. if(!JSDC_SingOneFlag)
  292. {
  293. AddToTal(JSDC_TOTAL_ADDR); //计数增加和保存
  294. CalProSP(JSDC_PROSPEED_ADDR);
  295. }
  296. JSDC_cAutoStep = 7;
  297. }
  298. else
  299. {
  300. if((JSDC_PARAM_KONG_WEI_LENGTH - JSDC_SaveLength) >= JSDC_PARAM_DAOKOU_LENGTH)
  301. {
  302. DISPLAY_DATA0 =2;
  303. JSDC_cAutoStep = 2;
  304. }
  305. else
  306. {
  307. DISPLAY_DATA0 =3;
  308. JSDC_SaveLength = JSDC_PARAM_KONG_WEI_LENGTH - JSDC_PARAM_DAOKOU_LENGTH;
  309. JSDC_cAutoStep = 2;
  310. }
  311. }
  312. }
  313. else
  314. {
  315. DISPLAY_DATA0 =4;
  316. if(JSDC_bRunning)
  317. SetEncodePos(0);
  318. dwZipCnt++;
  319. if(JSDC_cGZDW_CNT < 3)
  320. JSDC_cGZDW_CNT++;
  321. JSDC_SaveLength = 0;
  322. // SetPos(X_AXIS,0);
  323. if(!JSDC_SingOneFlag)
  324. {
  325. AddToTal(JSDC_TOTAL_ADDR); //计数增加和保存
  326. CalProSP(JSDC_PROSPEED_ADDR);
  327. }
  328. JSDC_GouZhen_VAVLE = 1;
  329. JSDC_cAutoStep = 7;
  330. }
  331. }
  332. break;
  333. case 7:
  334. if(!JSDC_GouZhen_IN)
  335. {
  336. if(GetTotal(JSDC_TOTAL_ADDR) >= JSDC_SET_TOTAL)
  337. {
  338. JSDC_SetAlarmCode(JSDC_TOTAL_ALARM);
  339. }
  340. JSDC_cAutoStep = 8;
  341. }
  342. break;
  343. case 8:
  344. JSDC_cAutoDelay = dwTickCount + JSDC_PARAM_MOTOR_DELAY;
  345. JSDC_cAutoStep = 1;
  346. if(JSDC_SingOneFlag)
  347. {
  348. JSDC_cGZDW_CNT=0;
  349. dwZipCnt = 0;
  350. JSDC_SingOneFlag = 0;
  351. JSDC_SingOne=1;
  352. JSDC_cAutoStep = 0;
  353. JSDC_bRunning = 0;
  354. }
  355. break;
  356. }
  357. }
  358. }
  359. /*
  360. void JSDC_SD(void)
  361. {
  362. switch(JSDC_cSDStep)
  363. {
  364. case 1:
  365. if(JSDC_SD_LIMIT_UP_IN_DW)
  366. {
  367. if(JSDC_SD_MOTOR)
  368. {
  369. JSDC_cSDStep = 2;
  370. JSDC_cSDDelay = dwTickCount + JSDC_DELAY_STOP_SD;
  371. }
  372. }
  373. // if(JSDC_SD_LIMIT_UP_IN_UP)
  374. {
  375. JSDC_SD_MOTOR = 1;
  376. JSDC_cSDDelay = dwTickCount + 2000;//JSDC_DELAY_STOP_SD;
  377. }
  378. break;
  379. case 2:
  380. if(dwTickCount >= JSDC_cSDDelay)
  381. {
  382. JSDC_SD_MOTOR = 0;
  383. // JSDC_cSDStep = 1;
  384. }
  385. break;
  386. }
  387. }
  388. */
  389. // 检测是否踏了脚踏开关
  390. void JSDC_CheckStart(void)
  391. {
  392. // 停止键 不能在工作,手动,停止过程中
  393. if((JSDC_bRunning == 0) && (JSDC_START_IN_UP || JSDC_bStart || JSDC_bNext))
  394. {
  395. if(GetTotal(JSDC_TOTAL_ADDR) >= JSDC_SET_TOTAL)JSDC_SetAlarmCode(JSDC_TOTAL_ALARM);
  396. else if((JSDC_PARAM_SEBIAO_DW_LENGTH > JSDC_SET_ZIPPER_LENGTH) && (JSDC_DC_MODE==2))JSDC_SetAlarmCode(JSDC_SEBIAO_ZIPPER_LENGTH_ALARM);
  397. else if(JSDC_KaDai_IN)JSDC_SetAlarmCode(JSDC_KA_DAI_ALARM);
  398. else
  399. {
  400. if(JSDC_bNext)
  401. {
  402. JSDC_SingOneFlag = 1;
  403. JSDC_bNext = 0;
  404. }
  405. JSDC_bRunning = 1;
  406. JSDC_twoDEL=0;
  407. JSDC_cAutoStep = 1;
  408. JSDC_SingOne=0;
  409. JSDC_GouZhen_VAVLE = 1;
  410. JSDC_cGZDW_CNT = 0;
  411. JSDC_cGouZhenTime = 1;
  412. JSDC_cCheckLengthOk = 0;
  413. JSDC_cZipperLength[0] = 0;
  414. JSDC_cZipperLength[1] = 0;
  415. dwZipCnt = 0;
  416. JSDC_cAutoDelay = dwTickCount;
  417. JSDC_cMotorDelay = dwTickCount;
  418. JSDC_cXiaChongDelay = dwTickCount;
  419. }
  420. JSDC_bStart = 0;
  421. JSDC_bNext = 0;
  422. }
  423. //卡带感应
  424. if(JSDC_KaDai_IN)
  425. {
  426. JSDC_SetAlarmCode(JSDC_KA_DAI_ALARM);
  427. }
  428. else
  429. {
  430. if(GetAlarmCode(JSDC_ALARM_ADDR) == JSDC_KA_DAI_ALARM)SetAlarmCode(JSDC_ALARM_ADDR,0);
  431. }
  432. if(JSDC_KaDai_IN_UP)
  433. {
  434. if(JSDC_cChuiQiStep == 0)JSDC_cChuiQiStep = 1;
  435. }
  436. //停止
  437. JSDC_STOP_IN_FLAG_OLD = JSDC_STOP_IN_FLAG;
  438. if(JSDC_STOP_IN)
  439. {
  440. if(JSDC_STOP_FILTER < 50)
  441. {
  442. JSDC_STOP_FILTER++;
  443. }
  444. else
  445. JSDC_STOP_IN_FLAG = 1;
  446. }
  447. else if(JSDC_STOP_FILTER > 25)
  448. {
  449. JSDC_STOP_FILTER--;
  450. }
  451. else
  452. JSDC_STOP_IN_FLAG = 0;
  453. if(JSDC_bStop)
  454. {
  455. JSDC_bStop = 0;
  456. if(JSDC_bRunning)JSDC_SingOneFlag = 1;
  457. }
  458. if(((JSDC_STOP_IN_FLAG && !JSDC_STOP_IN_FLAG_OLD)))
  459. {
  460. JSDC_bStop = 0;
  461. if(JSDC_bRunning)
  462. {
  463. if(JSDC_cXiaChongStep==0)
  464. {
  465. if(JSDC_cChuiQiStep == 0)JSDC_cChuiQiStep = 1;
  466. // if(!JSDC_XiaChong_MOTOR)JSDC_XC_SongZhou = JSDC_SERVER_DISEN;
  467. }
  468. JSDC_cGZDW_CNT=0;
  469. JSDC_SingOne=0;
  470. JSDC_twoDEL=1;
  471. JSDC_bRunning = 0;
  472. JSDC_cAutoStep = 0;
  473. // JSDC_cXiaChongStep = 0;
  474. JSDC_cMotorStep = 0;
  475. AxisEgmStop(X_AXIS);
  476. // JSDC_cJiaoDaoStep = 0;
  477. JSDC_SingOneFlag = 0;
  478. }
  479. else
  480. {
  481. JSDC_bRunning = 0;
  482. JSDC_cAutoStep = 0;
  483. JSDC_cMotorStep = 0;
  484. JSDC_cXiaChongStep = 0;
  485. JSDC_SingOne=0;
  486. JSDC_cGZDW_CNT=0;
  487. JSDC_DingZhen_VAVLE=0;
  488. JSDC_RightXC_VAVLE=0;
  489. JSDC_ChuiQi_VAVLE=0;
  490. JSDC_LeftXC_VAVLE=0;
  491. // JSDC_GouZhen_VAVLE=0;
  492. JSDC_XC_ShaChe=0;
  493. JSDC_XiaChong_MOTOR=0;
  494. JSDC_RightCY_VAVLE=0;
  495. JSDC_LeftDY_VAVLE=0;
  496. JSDC_SingOneFlag = 0;
  497. if((JSDC_cChuiQiStep == 0) &&(JSDC_cXiaChongStep==0))JSDC_cChuiQiStep = 1;
  498. AxisEgmStop(X_AXIS);
  499. SetAlarmCode(JSDC_ALARM_ADDR,JSDC_NO_ALARM);
  500. JSDC_SetAlarmCode(JSDC_NO_ALARM);
  501. }
  502. }
  503. if(JSDC_bAlarmStop)
  504. {
  505. JSDC_bAlarmStop = 0;
  506. JSDC_bNext = 0;
  507. JSDC_bRunning = 0;
  508. JSDC_cAutoStep = 0;
  509. JSDC_SingOne=0;
  510. JSDC_cMotorStep = 0;
  511. JSDC_SingOneFlag = 0;
  512. AxisEgmStop(X_AXIS);
  513. }
  514. }
  515. void JSDC_ValveAction(void)
  516. {
  517. switch(JSDC_cValveStep)
  518. {
  519. case 1:
  520. if(!X_DRV)
  521. {
  522. JSDC_RightXC_VAVLE=1;
  523. JSDC_cValveDelay = dwTickCount +JSDC_RightCY_DELAY;
  524. JSDC_cValveStep=2;
  525. }
  526. break;
  527. case 2:
  528. if(dwTickCount >= JSDC_cValveDelay )
  529. {
  530. JSDC_RightCY_VAVLE=1;
  531. JSDC_cValveDelay = dwTickCount +JSDC_LeftXC_DELAY;
  532. JSDC_cValveStep=3;
  533. }
  534. break;
  535. case 3:
  536. if(dwTickCount >= JSDC_cValveDelay )
  537. {
  538. JSDC_LeftXC_VAVLE=1;
  539. JSDC_DingZhen_VAVLE=1;
  540. JSDC_cValveDelay = dwTickCount +JSDC_LeftDY_DELAY;
  541. JSDC_cValveStep=4;
  542. }
  543. break;
  544. case 4:
  545. if(dwTickCount >= JSDC_cValveDelay )
  546. {
  547. JSDC_LeftDY_VAVLE=1;
  548. JSDC_cValveStep=5;
  549. }
  550. break;
  551. case 5:
  552. JSDC_cValveStep=0;
  553. break;
  554. case 6:
  555. if(dwTickCount >= JSDC_cValveDelay)
  556. {
  557. JSDC_DingZhen_VAVLE=0;
  558. JSDC_RightXC_VAVLE=0;
  559. JSDC_LeftXC_VAVLE=0;
  560. JSDC_cValveStep=0;
  561. }
  562. break;
  563. }
  564. }
  565. void JSDC_ChuiQi(void)
  566. {
  567. //吹气
  568. if(JSDC_XiaChong_IN_UP)
  569. {
  570. if(JSDC_cChuiQiStep == 0)JSDC_cChuiQiStep = 1;
  571. }
  572. switch(JSDC_cChuiQiStep)
  573. {
  574. case 1:
  575. JSDC_cChuiQiStep = 2;
  576. JSDC_cChuiQiDelay = dwTickCount+JSDC_PARAM_DELAY_CHUIQI_TIME;
  577. break;
  578. case 2:
  579. if(dwTickCount >= JSDC_cChuiQiDelay)
  580. {
  581. JSDC_cChuiQiDelay = dwTickCount + JSDC_PARAM_CHUIQI_TIME;
  582. JSDC_ChuiQi_VAVLE = 1;//
  583. JSDC_cChuiQiStep = 3;
  584. }
  585. break;
  586. case 3:
  587. if(dwTickCount >= JSDC_cChuiQiDelay)
  588. {
  589. JSDC_ChuiQi_VAVLE = 0;//
  590. JSDC_cChuiQiStep = 0;
  591. }
  592. break;
  593. case 6:
  594. JSDC_cChuiQiDelay = dwTickCount + JSDC_TDCQ_TIME;
  595. JSDC_ChuiQi_VAVLE = 1;//
  596. JSDC_cChuiQiStep = 7;
  597. break;
  598. case 7:
  599. if(dwTickCount >= JSDC_cChuiQiDelay)
  600. {
  601. JSDC_ChuiQi_VAVLE = 0;//
  602. JSDC_cChuiQiStep = 0;
  603. }
  604. break;
  605. }
  606. }
  607. unsigned char JSDC_ComPareLength(void)
  608. {
  609. if((JSDC_cZipperLength[0] != 0) && (JSDC_cZipperLength[1] != 0))
  610. {
  611. if(JSDC_cZipperLength[0] > JSDC_cZipperLength[1])
  612. {
  613. if((JSDC_cZipperLength[0] - JSDC_cZipperLength[1]) > 200)
  614. {
  615. return 0;
  616. }
  617. else
  618. return 1;
  619. }
  620. else
  621. {
  622. if((JSDC_cZipperLength[1] - JSDC_cZipperLength[0]) > 200)
  623. {
  624. return 0;
  625. }
  626. else
  627. return 1;
  628. }
  629. }
  630. else
  631. return 0;
  632. }
  633. unsigned char JSDC_CheckPos(void)
  634. {
  635. unsigned long zipper_length;
  636. short *revise_buff;
  637. if(JSDC_DC_MODE == JSDC_DC_GZ_MODE)
  638. {
  639. if(JSDC_GouZhen_IN)
  640. return 0;
  641. else
  642. return 1;
  643. }
  644. else
  645. {
  646. revise_buff = &user_datas[17];
  647. zipper_length = JSDC_SET_ZIPPER_LENGTH + (*revise_buff) + JSDC_PARAM_DAOKOU_LENGTH;
  648. if(JSDC_dwEncPos >= zipper_length)return 0;
  649. else
  650. return 1;
  651. }
  652. }
  653. void JSDC_Motor(void)
  654. {
  655. static long save_buff,gou_zhen_buff,zipper_length_buff;
  656. static unsigned long zipper_length;
  657. short *revise_buff;
  658. //实时显示行程总长
  659. JSDC_All_LENTH = JSDC_SET_ZIPPER_LENGTH + JSDC_SET_REVISE_ZIPPER_LENGTH + JSDC_PARAM_KONG_WEI_LENGTH;
  660. dwRealPos = GetPos(X_AXIS);
  661. JSDC_dwEncPos = GetEncodePos();
  662. if(!JSDC_bRunning)
  663. {
  664. if(JSDC_CheckPos() == 0)AxisEgmStop(X_AXIS);
  665. }
  666. switch(JSDC_cMotorStep)
  667. {
  668. case 0:
  669. break;
  670. case 1:
  671. if(JSDC_SZ_OUT == JSDC_SERVER_DISEN)
  672. {
  673. JSDC_SZ_OUT = JSDC_SERVER_EN;
  674. JSDC_cMotorDelay = dwTickCount + 50; //先锁轴
  675. }
  676. if(!JSDC_LENTH_MODE)
  677. {
  678. JSDC_cMotorStep = 2;
  679. }
  680. else
  681. {
  682. JSDC_cMotorStep = 8;
  683. }
  684. break;
  685. case 2://勾针模式 手动测长
  686. if(dwTickCount >= JSDC_cMotorDelay)
  687. {
  688. save_buff = JSDC_dwEncPos;
  689. revise_buff = &user_datas[17];
  690. zipper_length = JSDC_SET_ZIPPER_LENGTH + (*revise_buff) + JSDC_PARAM_DAOKOU_LENGTH;
  691. if(JSDC_cGZDW_CNT > 1)
  692. {
  693. MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_SET_SPEED,1,5,1);
  694. }
  695. else
  696. {
  697. MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_FIRST_SPEED,1,5,1);
  698. }
  699. JSDC_cChuiQiStep = 6;
  700. JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME;
  701. JSDC_cMotorStep = 3;
  702. }
  703. break;
  704. case 3:
  705. if(JSDC_GouZhen_IN)
  706. {
  707. JSDC_GouZhen_VAVLE = 0;
  708. JSDC_cMotorStep = 5;
  709. JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME;
  710. AxisEgmStop(X_AXIS);
  711. }
  712. if(JSDC_dwEncPos > zipper_length - JSDC_PARAM_GZ_LENGTH)
  713. {
  714. JSDC_GouZhen_VAVLE = 0;
  715. }
  716. if((JSDC_dwEncPos - save_buff) >= (zipper_length - JSDC_PARAM_LOWSPEED_LENGTH))
  717. {
  718. AxisChangeSpeed(X_AXIS,JSDC_PARAM_LOW_SPEED);
  719. JSDC_cMotorStep = 4;
  720. }
  721. if(dwTickCount >= JSDC_cMotorDelay)
  722. JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  723. break;
  724. case 4:
  725. if(JSDC_dwEncPos > zipper_length - JSDC_PARAM_GZ_LENGTH)
  726. {
  727. JSDC_GouZhen_VAVLE = 0;
  728. }
  729. if(JSDC_GouZhen_IN)
  730. {
  731. JSDC_GouZhen_VAVLE = 0;
  732. JSDC_cMotorStep = 5;
  733. JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME;
  734. AxisEgmStop(X_AXIS);
  735. }
  736. if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  737. break;
  738. case 5:
  739. if(!X_DRV)
  740. {
  741. JSDC_cMotorStep = 0;
  742. JSDC_cMotorDelay = dwTickCount;
  743. }
  744. else if(dwTickCount >= JSDC_cMotorDelay)
  745. {
  746. JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  747. }
  748. break;
  749. //自动测长
  750. case 8:
  751. if(dwTickCount >= JSDC_cMotorDelay)
  752. {
  753. save_buff = dwRealPos;
  754. revise_buff = &user_datas[17];
  755. if(JSDC_cCheckLengthOk)
  756. {
  757. MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_SET_SPEED,1,5,1);
  758. }
  759. else
  760. {
  761. if(JSDC_cCheckLengthOk == 0)
  762. {
  763. JSDC_cZipperLength[0] = JSDC_cZipperLength[1];
  764. JSDC_cZipperLength[1] = dwRealPos - zipper_length_buff;
  765. zipper_length_buff = dwRealPos;
  766. if(JSDC_ComPareLength())
  767. {
  768. JSDC_cCheckLengthOk = 1;
  769. }
  770. }
  771. if(JSDC_cCheckLengthOk)
  772. {
  773. zipper_length = JSDC_cZipperLength[1] + (*revise_buff);
  774. }
  775. MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_FIRST_SPEED,1,5,1);
  776. }
  777. JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME;
  778. JSDC_cGouZhenTime = dwTickCount + 300;
  779. JSDC_cChuiQiStep = 6;
  780. JSDC_cMotorStep = 9;
  781. }
  782. break;
  783. case 9:
  784. if(((dwTickCount >= JSDC_cGouZhenTime)&&(JSDC_PARAM_GZ_RESET_MODE==0)) || (JSDC_cCheckLengthOk == 0))
  785. JSDC_GouZhen_VAVLE = 0;
  786. if(JSDC_cCheckLengthOk)
  787. {
  788. if(((dwRealPos - save_buff) >= (zipper_length - JSDC_PARAM_GZ_LENGTH))&&JSDC_PARAM_GZ_RESET_MODE)
  789. JSDC_GouZhen_VAVLE = 0;
  790. if((dwRealPos - save_buff) >= (zipper_length - JSDC_PARAM_LOWSPEED_LENGTH))
  791. {
  792. AxisChangeSpeed(X_AXIS,JSDC_PARAM_LOW_SPEED);
  793. JSDC_cMotorStep = 10;
  794. }
  795. }
  796. else
  797. {
  798. if(JSDC_GouZhen_IN)
  799. {
  800. JSDC_GouZhen_VAVLE = 0;
  801. JSDC_cMotorStep = 11;
  802. AxisEgmStop(X_AXIS);
  803. }
  804. else
  805. {
  806. if(dwTickCount >= JSDC_cGouZhenTime)
  807. {
  808. JSDC_GouZhen_VAVLE = 0;
  809. }
  810. JSDC_cMotorStep = 10;
  811. }
  812. }
  813. if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  814. break;
  815. case 10:
  816. if(((dwTickCount >= JSDC_cGouZhenTime)&&(JSDC_PARAM_GZ_RESET_MODE==0)) || (JSDC_cCheckLengthOk == 0))
  817. JSDC_GouZhen_VAVLE = 0;
  818. if(((dwRealPos - save_buff) >= (zipper_length - JSDC_PARAM_GZ_LENGTH))&&JSDC_PARAM_GZ_RESET_MODE &&JSDC_cCheckLengthOk)
  819. JSDC_GouZhen_VAVLE = 0;
  820. if(JSDC_GouZhen_IN)
  821. {
  822. JSDC_GouZhen_VAVLE = 0;
  823. JSDC_cMotorStep = 11;
  824. AxisEgmStop(X_AXIS);
  825. }
  826. if(dwTickCount >= JSDC_cMotorDelay)
  827. JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  828. break;
  829. case 11:
  830. if(((dwTickCount >= JSDC_cGouZhenTime)&&(JSDC_PARAM_GZ_RESET_MODE==0)) || (JSDC_cCheckLengthOk == 0))
  831. JSDC_GouZhen_VAVLE = 0;
  832. if(!X_DRV)
  833. {
  834. JSDC_cMotorStep = 0;
  835. JSDC_cMotorDelay = dwTickCount;
  836. }
  837. else if(dwTickCount >= JSDC_cMotorDelay)
  838. JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  839. break;
  840. case 20:
  841. if(JSDC_SZ_OUT == JSDC_SERVER_DISEN)
  842. {
  843. JSDC_SZ_OUT = JSDC_SERVER_EN;
  844. JSDC_cMotorDelay = dwTickCount + 50; //先锁轴
  845. }
  846. JSDC_cMotorStep = 21;
  847. break;
  848. case 21:
  849. if(dwTickCount >= JSDC_cMotorDelay) //电机定寸模式
  850. {
  851. revise_buff = &user_datas[17];
  852. if(JSDC_cAlarmStopFlg)
  853. {
  854. zipper_length = JSDC_SET_ZIPPER_LENGTH + (*revise_buff) + JSDC_PARAM_DAOKOU_LENGTH;
  855. JSDC_cAlarmStopFlg = 0;
  856. }
  857. else
  858. {
  859. zipper_length = JSDC_SET_ZIPPER_LENGTH + (*revise_buff) + JSDC_PARAM_DAOKOU_LENGTH;
  860. if((0 - dwRealPos) > zipper_length)
  861. zipper_length = JSDC_SET_ZIPPER_LENGTH + (*revise_buff) + JSDC_PARAM_DAOKOU_LENGTH;
  862. else
  863. zipper_length = JSDC_SET_ZIPPER_LENGTH + (*revise_buff) + JSDC_PARAM_DAOKOU_LENGTH - (0 - dwRealPos);
  864. }
  865. AxisMovePosAccDec(X_AXIS,JSDC_PARAM_SET_SPEED,zipper_length,JSDC_PARAM_START_SPEED,JSDC_PARAM_ACC_SPEED,JSDC_PARAM_DEC_SPEED);
  866. JSDC_GouZhen_VAVLE = 1; //定位(活动勾针)电磁阀
  867. JSDC_cMotorStep = 22;
  868. JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME;
  869. }
  870. break;
  871. case 22:
  872. if(!X_DRV)
  873. {
  874. MV_Set_Command_Pos_CPU(X_AXIS,0);
  875. JSDC_cMotorStep = 0;
  876. JSDC_cMotorDelay = dwTickCount;
  877. }
  878. else if(dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  879. break;
  880. case 60:
  881. if(JSDC_SZ_OUT == JSDC_SERVER_DISEN)
  882. {
  883. JSDC_SZ_OUT = JSDC_SERVER_EN;
  884. JSDC_cMotorDelay = dwTickCount + 50; //先锁轴
  885. }
  886. JSDC_cMotorStep = 61;
  887. break;
  888. case 61:
  889. if((dwTickCount >= JSDC_cMotorDelay) && JSDC_cValveStep == 0)
  890. {
  891. save_buff = JSDC_dwEncPos;
  892. revise_buff = &user_datas[17];
  893. //减20做误差补偿
  894. zipper_length = JSDC_SET_ZIPPER_LENGTH + (*revise_buff) + JSDC_PARAM_DAOKOU_LENGTH + JSDC_SaveLength-20;
  895. if(JSDC_cGZDW_CNT > 1)
  896. {
  897. MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_SET_SPEED,JSDC_PARAM_START_SPEED,JSDC_PARAM_ACC_SPEED,JSDC_PARAM_DEC_SPEED);
  898. }
  899. else
  900. {
  901. MoveAction_Const_AccDec(X_AXIS,JSDC_DIR_P,JSDC_PARAM_FIRST_SPEED,JSDC_PARAM_START_SPEED ,JSDC_PARAM_ACC_SPEED,JSDC_PARAM_DEC_SPEED);
  902. }
  903. JSDC_cMotorDelay = dwTickCount + JSDC_PARAM_MOTOR_ALARM_TIME;
  904. JSDC_cChuiQiStep = 6;
  905. JSDC_cMotorStep = 62;
  906. }
  907. break;
  908. case 62:
  909. // DISPLAY_DATA4 = zipper_length;
  910. if((JSDC_dwEncPos + PulseToPos(X_AXIS,(JSDC_PARAM_SET_SPEED - JSDC_PARAM_LOW_SPEED) * 0) + JSDC_PARAM_LOWSPEED_LENGTH) >= zipper_length)
  911. {
  912. AxisChangeSpeed(X_AXIS,JSDC_PARAM_LOW_SPEED);
  913. JSDC_cMotorStep = 63;
  914. }
  915. else if(JSDC_dwEncPos >= zipper_length)
  916. {
  917. JSDC_cMotorStep = 64;
  918. AxisEgmStop(X_AXIS);
  919. }
  920. else if(dwTickCount >= JSDC_cMotorDelay)
  921. JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  922. break;
  923. case 63:
  924. if((JSDC_dwEncPos) >= zipper_length)
  925. {
  926. JSDC_cMotorStep = 64;
  927. AxisEgmStop(X_AXIS);
  928. }
  929. else if(dwTickCount >= JSDC_cMotorDelay)
  930. JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  931. break;
  932. case 64:
  933. if(!X_DRV)
  934. {
  935. JSDC_cMotorStep = 0;
  936. JSDC_cMotorDelay = dwTickCount;
  937. }
  938. else if
  939. (dwTickCount >= JSDC_cMotorDelay)JSDC_SetAlarmCode(JSDC_LONG_TIME_NO_ZIPPER_ALARM);
  940. break;
  941. }
  942. }
  943. //下冲
  944. void JSDC_XiaChong(void)
  945. {
  946. switch(JSDC_cXiaChongStep)
  947. {
  948. case 0:
  949. return;
  950. break;
  951. case 1:
  952. if(JSDC_cValveStep==0)
  953. {
  954. JSDC_cXiaChongStep = 2;
  955. }
  956. break;
  957. case 2:
  958. JSDC_XC_ShaChe = JSDC_SC_DISEN;
  959. if(JSDC_bRunning)JSDC_cXiaChongDelay = dwTickCount + JSDC_PARAM_DELAY_XC;
  960. if(!JSDC_bRunning && JSDC_GOUZHEN_MODE)JSDC_cXiaChongDelay = dwTickCount + JSDC_PARAM_DELAY_XC;
  961. JSDC_cXiaChongStep = 3;
  962. break;
  963. case 3:
  964. if(dwTickCount >= JSDC_cXiaChongDelay)
  965. {
  966. // JSDC_cLeftFenZhenStep = 1;
  967. JSDC_cXiaChongStep = 4;
  968. JSDC_XiaChong_MOTOR = 1; //下冲电机
  969. JSDC_cXiaChongDelay = dwTickCount + (unsigned long)JSDC_ERRORTIME; //下冲最长时间
  970. if(JSDC_XiaChongMotorMode == 1)
  971. {
  972. AxisMoveTwoPos(Y_AXIS,JSDC_XiaChongSpeed,2000,JSDC_XiaChongLowSpeed,9999999,0);
  973. }
  974. }
  975. break;
  976. case 4: //碰到右大微动,延时停
  977. if(JSDC_XiaChong_IN_UP)
  978. {
  979. JSDC_cXiaChongDelay = dwTickCount + JSDC_PARAM_XC_DELAY;
  980. JSDC_cXiaChongStep = 5;
  981. if(JSDC_cMotorStep || !JSDC_DC_MODE)
  982. {
  983. JSDC_GouZhen_VAVLE = 1;
  984. }
  985. }
  986. else if(dwTickCount >= JSDC_cXiaChongDelay) //自动停机
  987. {
  988. JSDC_cXiaChongStep = 0;
  989. JSDC_XiaChong_MOTOR = 0;// //下冲电机
  990. JSDC_SetAlarmCode(JSDC_XC_ALARM);
  991. }
  992. break;
  993. case 5:
  994. if(dwTickCount >= JSDC_cXiaChongDelay)
  995. {
  996. AxisEgmStop(Y_AXIS);
  997. JSDC_XiaChong_MOTOR = 0;
  998. if(!JSDC_bRunning && JSDC_twoDEL)
  999. {
  1000. JSDC_twoDEL=0;
  1001. SetEncodePos(0);
  1002. }
  1003. JSDC_cXiaChongDelay = dwTickCount + 0 ;
  1004. JSDC_cXiaChongStep = 6;
  1005. }
  1006. break;
  1007. case 6:
  1008. if((dwTickCount >= JSDC_cXiaChongDelay))
  1009. {
  1010. JSDC_cXiaChongStep = 7;
  1011. JSDC_cXiaChongDelay = dwTickCount+ JSDC_PARAM_SC_DELAY;
  1012. // JSDC_XC_SongZhou = JSDC_SERVER_DISEN;
  1013. JSDC_XC_ShaChe = JSDC_SC_EN;
  1014. JSDC_RightCY_VAVLE=0;
  1015. JSDC_LeftDY_VAVLE=0;
  1016. JSDC_cValveStep=6;
  1017. JSDC_cValveDelay = dwTickCount + JSDC_TuiXC_DELAY;
  1018. }
  1019. break;
  1020. case 7:
  1021. if((dwTickCount >= JSDC_cXiaChongDelay))
  1022. {
  1023. JSDC_cXiaChongStep = 8;
  1024. if(!JSDC_bRunning)MV_Set_Command_Pos_CPU(X_AXIS,0);
  1025. // JSDC_XC_SongZhou = JSDC_SERVER_DISEN;
  1026. JSDC_XC_ShaChe = JSDC_SC_DISEN;
  1027. }
  1028. break;
  1029. case 8:
  1030. if(JSDC_cValveStep == 0)
  1031. {
  1032. JSDC_oneDEL=0;
  1033. JSDC_cXiaChongStep = 0;
  1034. }
  1035. break;
  1036. case 20: // 点动普通下冲动作
  1037. // JSDC_XC_SongZhou = JSDC_SERVER_EN;
  1038. JSDC_XC_ShaChe = JSDC_SC_DISEN;
  1039. JSDC_cXiaChongDelay = dwTickCount + 50;
  1040. JSDC_cXiaChongStep = 21;
  1041. break;
  1042. case 21:
  1043. if((dwTickCount >= JSDC_cXiaChongDelay))
  1044. {
  1045. JSDC_XiaChong_MOTOR = 1;
  1046. JSDC_cXiaChongDelay = dwTickCount + 50;
  1047. JSDC_cXiaChongStep = 22;
  1048. }
  1049. break;
  1050. case 22:
  1051. if((dwTickCount >= JSDC_cXiaChongDelay))
  1052. {
  1053. JSDC_XiaChong_MOTOR = 0;
  1054. // JSDC_XC_SongZhou = JSDC_SERVER_EN;
  1055. if(JSDC_XiaChongMotorMode)
  1056. JSDC_cXiaChongStep = 0;
  1057. else
  1058. {
  1059. JSDC_XC_ShaChe = JSDC_SC_EN;
  1060. JSDC_cXiaChongDelay = dwTickCount + 150;
  1061. JSDC_cXiaChongStep = 23;
  1062. }
  1063. }
  1064. break;
  1065. case 23:
  1066. if((dwTickCount >= JSDC_cXiaChongDelay))
  1067. {
  1068. //JSDC_XC_SongZhou = JSDC_SERVER_DISEN;
  1069. JSDC_XC_ShaChe = JSDC_SC_DISEN;
  1070. JSDC_cXiaChongStep = 0;
  1071. }
  1072. break;
  1073. case 40: // 点动电机下冲动作
  1074. //JSDC_XC_SongZhou = JSDC_SERVER_EN;
  1075. JSDC_cXiaChongDelay = dwTickCount + 50;
  1076. JSDC_cXiaChongStep = 41;
  1077. break;
  1078. case 41:
  1079. if(!Y_DRV)AxisMovePos(Y_AXIS,20,10);
  1080. JSDC_cXiaChongStep = 42;
  1081. break;
  1082. case 42:
  1083. if(!Y_DRV)
  1084. {
  1085. JSDC_cXiaChongStep = 0;
  1086. }
  1087. break;
  1088. }
  1089. }
  1090. #endif