GLTieBuJi-SF.c 63 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884
  1. #include "global.h"
  2. #if CHANG_SHENG_GEI_LI_MACHINE == 1
  3. unsigned short Prv_SQJCOUNT,Prv_XQJCOUNT;
  4. void TBJ_InitAction(void);
  5. void TBJ_Action(void);
  6. void TBJ_ChuiQi(void);
  7. void TBJ_ChaoShengHeMo(void);
  8. void TBJ_SetAlarmCode(unsigned alarm_code); //等待调用
  9. void TBJ_StartStopAction(void);
  10. void TBJ_AutoRunStep(void);
  11. void TBJ_Motor(void);
  12. void TBJ_SongJiao(void);
  13. void TBJ_STOP_Action(void);
  14. void TBJ_ChuiQi_Stop(void);
  15. void TBJ_QJCount(void);
  16. void TBJ_QieJiao_Proc(void);
  17. void TBJ_XCReset_Proc(void);
  18. void TBJ_SFHeMo_Proc(void);
  19. void TBJ_ChaoShengHeMo_SF(void);
  20. void TBJ_QJCQ_Stop(void);
  21. void TBJ_Action(void)
  22. {
  23. //步骤显示
  24. DISPLAY_DATA0 = dwYRealPos_com;//TBJ_XC_RstStep;//TBJ_Auto_Step;
  25. DISPLAY_DATA1 = dwYRealPos;//TBJ_Motor_Step;
  26. DISPLAY_DATA2 = TBJ_HMCS_Step;
  27. DISPLAY_DATA3 = TBJ_HeMo_Step;//TBJ_SJ_FJ_Step;
  28. DISPLAY_DATA4 = TBJ_Auto_Step;//TBJ_XC_CS_LOCAL;//servo_y.IO_TO_COM;//TBJ_STOP_Step;
  29. DISPLAY_DATA5 = TBJ_FIRST_CS_Y_LOCAL;//TBJ_Motor_Step;//GetTarr(Y_AXIS);//dwXRealPos;
  30. DISPLAY_DATA6 = TBJ_CS_Y_Local;
  31. DISPLAY_DATA7 = TBJ_GH_Y_Local;
  32. CTHL_bServo_Com_Y=servo_y.IO_TO_COM;
  33. dwXRealPos = GetPos(X_AXIS);
  34. dwYRealPos = GetPos(Y_AXIS);
  35. dwYRealPos_com=get_encode_value(Y_AXIS)/4;//减速比
  36. TBJ_ManualAction();
  37. //TBJ_ChaoShengHeMo();
  38. TBJ_ChaoShengHeMo_SF();
  39. TBJ_StartStopAction();
  40. TBJ_AutoRunStep();
  41. TBJ_Motor();
  42. TBJ_SongJiao();
  43. TBJ_STOP_Action();
  44. TBJ_ChuiQi_Stop();
  45. TBJ_QJCQ_Stop();
  46. TBJ_QJCount();
  47. servo_com_run();
  48. TBJ_QieJiao_Proc();
  49. TBJ_XCReset_Proc();
  50. TBJ_SFHeMo_Proc();
  51. }
  52. void TBJ_QJCount(void)
  53. {
  54. if(TBJ_SQJGY_IN_UP)
  55. {
  56. TBJ_PARAM_SQJCOUNT++;
  57. }
  58. if(TBJ_XQJGY_IN_UP)
  59. {
  60. TBJ_PARAM_XQJCOUNT++;
  61. }
  62. }
  63. //故障报警
  64. void TBJ_SetAlarmCode(unsigned alarm_code)
  65. {
  66. SetAlarmCode(TBJ_ALARM_ADDR, alarm_code);
  67. TBJ_bAlarmStop = 1;
  68. }
  69. void TBJ_InitAction(void)
  70. {
  71. float buff_pulse, buff_dist;
  72. //电机脉冲与距离比例计算
  73. buff_pulse = TBJ_PARAM_CYCLE_PULSE; //电机走一圈所需的脉冲
  74. buff_dist = TBJ_PARAM_CYCLE_LENGTH; //电机走一圈长度
  75. XGearRatio = buff_pulse / buff_dist; //可根据距离换算所需脉冲,反之一样
  76. buff_pulse = TBJ_PARAM_YCYCLE_PULSE; //电机走一圈所需的脉冲
  77. buff_dist = TBJ_PARAM_YCYCLE_LENGTH; //电机走一圈长度
  78. YGearRatio= buff_pulse / buff_dist; //可根据距离换算所需脉冲,反之一样
  79. TBJ_CHENGXU_UPDATE = 1; //便于屏幕判断程序有无更新
  80. SetDirReverse(X_AXIS, 1);
  81. //传递伺服齿轮比参数
  82. set_com_servo_param(Y_AXIS,TBJ_PARAM_YCYCLE_PULSE,TBJ_PARAM_YCYCLE_LENGTH);
  83. SetServoComUse(X_AXIS,0);//X轴正常模式。
  84. SetServoComUse(Y_AXIS,1);//Y轴伺服扭矩通讯。
  85. ReadServoAlarm_Enable(Y_AXIS,1);
  86. ReadServoEncode_Enable(Y_AXIS,1);
  87. SetEnReverse(X_AXIS, 1);
  88. SetEnReverse(Y_AXIS, 0);
  89. //电机松轴
  90. SetEn(X_AXIS, TBJ_MOTOR_DISEN);
  91. SetEn(Y_AXIS, TBJ_MOTOR_DISEN);
  92. SetAlarmCode(TBJ_ALARM_ADDR, TBJ_NO_ALARM); //警告要清除
  93. TBJ_Hemo_flag=0;
  94. TBJ_XC_Reset_flag=1;
  95. if(TBJ_PARAM_XCRest_MODE)TBJ_bXCRest=1;
  96. }
  97. //吹气
  98. void TBJ_ChuiQi(void)
  99. {
  100. if (!TBJ_CQ_VAVLE)
  101. {
  102. TBJ_CQ_VAVLE = 1;
  103. TBJ_CQ_Delay = dwTickCount + TBJ_PARAM_ChuiQi_TIME;
  104. }
  105. }
  106. //停止吹气
  107. void TBJ_ChuiQi_Stop(void)
  108. {
  109. if (TBJ_CQ_VAVLE && dwTickCount >= TBJ_CQ_Delay)// && dwTickCount >= TBJ_CS_Delay)
  110. TBJ_CQ_VAVLE = 0;
  111. }
  112. //切胶吹气
  113. void TBJ_QJCQ_Start(void)
  114. {
  115. if (!TBJ_QJCQ_VAVLE)
  116. {
  117. TBJ_QJCQ_VAVLE = 1;
  118. TBJ_QJCQ_Delay = dwTickCount + TBJ_PARAM_QJCQ_TIME;
  119. }
  120. }
  121. //停止吹气
  122. void TBJ_QJCQ_Stop(void)
  123. {
  124. if (TBJ_QJCQ_VAVLE && dwTickCount >= TBJ_QJCQ_Delay)// && dwTickCount >= TBJ_CS_Delay)
  125. TBJ_QJCQ_VAVLE = 0;
  126. }
  127. //红外算出来的时间重新赋值
  128. void TBJ_ResetCsTime(void)
  129. {
  130. if (TBJ_PARAM_CS_MODE == 0)
  131. user_datas[33] = user_datas[57];
  132. else
  133. user_datas[6] = user_datas[57];
  134. }
  135. //超声时间选择
  136. unsigned short TBJ_Choose_CSTime(void)
  137. {
  138. if (TBJ_PARAM_CS_MODE == 0) //超声模式 0为透明胶 1为布胶
  139. return TBJ_PARAM_TMJ_CS_TIME; //透明胶超声时间
  140. else
  141. return TBJ_PARAM_BJ_CS_TIME; //布胶超声时间
  142. }
  143. //固化时间选择
  144. unsigned short TBJ_Choose_COLDTime(void)
  145. {
  146. if (TBJ_PARAM_CS_MODE == 0)
  147. return TBJ_PARAM_TMJ_GH_TIME; //透明胶固化时间
  148. else
  149. return TBJ_PARAM_BJ_GH_TIME; //布胶固化时间
  150. }
  151. //手动动作
  152. void TBJ_ManualAction(void)
  153. {
  154. #if 1
  155. if (!TBJ_bRunning)
  156. {
  157. //屏幕按钮手动钩针
  158. if (TBJ_bGZ)
  159. {
  160. TBJ_bGZ = 0;
  161. if (TBJ_GZ_VAVLE)
  162. TBJ_GZ_VAVLE = 0;
  163. else
  164. TBJ_GZ_VAVLE = 1;
  165. }
  166. //手动分胶
  167. if (TBJ_bFJ &&((TBJ_PARAM_SGZSelect) //单钩针模式下的判断
  168. || ((TBJ_PARAM_SGZSelect == 0) && !TBJ_GZ_LIMIT_IN )) //双钩针模式下的判断
  169. &&TBJ_Y_ORIGIN_IN //上模在原点
  170. && (TBJ_FJ_VAVLE || (!TBJ_SJ_LIMIT_IN && TBJ_SJ_ORIGIN_IN)) //未进分胶,送胶不能输出,进完分胶后,无视送胶状态,可退分胶
  171. )
  172. {
  173. TBJ_bFJ = 0;
  174. if (TBJ_FJ_VAVLE)
  175. TBJ_FJ_VAVLE = 0;
  176. else
  177. TBJ_FJ_VAVLE = 1;
  178. }
  179. else if (TBJ_bFJ)
  180. {
  181. TBJ_bFJ = 0;
  182. if (!((TBJ_PARAM_SGZSelect) || ((TBJ_PARAM_SGZSelect == 0) && !TBJ_GZ_LIMIT_IN)))
  183. TBJ_SetAlarmCode(34); //E34 手动分胶停止,钩针未退位;
  184. else if (!TBJ_Y_ORIGIN_IN)//上摸不在原点
  185. TBJ_SetAlarmCode(36); //E36 手动分胶停止,下冲气缸未退位或X14下冲到位感应异常
  186. else if (TBJ_SJ_LIMIT_IN)
  187. TBJ_SetAlarmCode(38); //E38 手动分胶停止,送胶阀未退回,或X16送胶到位感应异常
  188. else if (!TBJ_SJ_ORIGIN_IN)
  189. TBJ_SetAlarmCode(39); //E39 手动分胶停止,送胶阀未退回,或X17退胶到位感应异常
  190. }
  191. //手动切胶
  192. if(TBJ_bQJ)
  193. {
  194. if(TBJ_SJ_ORIGIN_IN)TBJ_QJ_Step=1;
  195. else
  196. TBJ_SetAlarmCode(TBJ_QJ_SJNORIGIN_ALARM); //E43 手动切胶,送胶不在原位
  197. TBJ_bQJ=0;
  198. }
  199. //手动送胶
  200. if (((TBJ_bSJ && !TBJ_SJ_VAVLE))) //按钮按下 送胶阀未输出 进行送胶
  201. { //手动送胶 || (按钮送胶 && 送胶阀没输出)&& (!1二次拖带的情况下考虑钩针阀没有输出)
  202. if ((TBJ_PARAM_SGZSelect || ((TBJ_PARAM_SGZSelect == 0) &&!TBJ_GZ_LIMIT_IN) ) //单钩针模式,钩针与送胶阀错位,不用考虑相撞,双钩针模式下的判断,钩针钩住拖带后退,可能会与送胶阀产生碰撞
  203. && (TBJ_FJ_LIMIT_IN ^ TBJ_FJ_ORIGIN_IN) && TBJ_SJ_ORIGIN_IN //判断分胶阀有无出错,只能到位或原位 送胶阀后感应亮
  204. && TBJ_Y_ORIGIN_IN //上模原点 超声未打开
  205. && !TBJ_GZ_VAVLE) //考虑钩针有无退回
  206. {
  207. TBJ_SJ_FJ_Step=20;
  208. TBJ_bSJ = 0;
  209. }
  210. else if (TBJ_bSJ) //送胶失败,发送警告
  211. {
  212. TBJ_bSJ = 0;
  213. if (!(TBJ_PARAM_SGZSelect || ((TBJ_PARAM_SGZSelect == 0) &&!TBJ_GZ_LIMIT_IN)))
  214. TBJ_SetAlarmCode(40); //E40 手动送胶停止,双钩针模式下钩针未退回
  215. else if (!(TBJ_FJ_LIMIT_IN ^ TBJ_FJ_ORIGIN_IN))
  216. TBJ_SetAlarmCode(41); //E41 手动送胶停止,分胶阀处于异常状态,X12,X13前后感应灯同亮或同灭
  217. else if (!TBJ_SJ_VAVLE && !TBJ_SJ_ORIGIN_IN)
  218. TBJ_SetAlarmCode(42); //E42 手动送胶停止,X17送胶后感应异常
  219. else if (!TBJ_Y_ORIGIN_IN)
  220. TBJ_SetAlarmCode(44); //E44 手动送胶停止,下冲气缸未退回,或X14 下冲到位感应异常
  221. if (TBJ_SJ_VAVLE)
  222. TBJ_SJ_VAVLE = 0;
  223. }
  224. }
  225. else if (((TBJ_bSJ && TBJ_SJ_VAVLE))) //送胶阀已输出,进行退胶
  226. {
  227. TBJ_SJ_FJ_Step=25;
  228. TBJ_bSJ = 0;
  229. }
  230. //手动合模
  231. if (TBJ_bHM&&TBJ_Hemo_flag==0)//&& !TBJ_SM_VAVLE) //屏幕按钮按下 || 上模没输出 && 手动合模输入
  232. {
  233. if ( !TBJ_XC_Reset_flag&&TBJ_FJ_ORIGIN_IN && !TBJ_FJ_LIMIT_IN //分胶阀感应判断
  234. && ((!TBJ_SJ_LIMIT_IN && TBJ_SJ_ORIGIN_IN) || TBJ_PARAM_SongJiaoMode) //送胶阀原点,或者滚筒模式 //送胶阀感应判断
  235. && !TBJ_FJ_VAVLE && !TBJ_SJ_VAVLE && !TBJ_CS_OUT //分胶阀,送胶阀、超声未动作 //分胶阀判断 送胶阀判断 超声判断
  236. && ((TBJ_PARAM_SGZSelect) || ((TBJ_PARAM_SGZSelect == 0) &&!TBJ_GZ_LIMIT_IN)))//双钩钩针在原点、或单钩针 //双钩针模式需考虑钩针有无输出
  237. {
  238. if(TBJ_PARAM_XiaChong_MODE==0)
  239. {
  240. TBJ_SM_VAVLE = 1;//气缸合模
  241. TBJ_Hand_Hemo_flag=1;
  242. }
  243. else
  244. {
  245. TBJ_HeMo_Step=1;//伺服合模
  246. TBJ_GZ_VAVLE = 0;//钩针
  247. TBJ_FJ_VAVLE = 0; //分胶
  248. TBJ_DZ_VAVLE=0;//顶针
  249. TBJ_SJ_VAVLE=0;//送胶
  250. TBJ_HeMo_Delay=dwTickCount+100;
  251. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMIN;
  252. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMIN;
  253. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,
  254. TBJ_PARAM_Y_LOW_SPEED,TBJ_PARAM_Y_LOW_SPEED,SERVO_TARR_CW);
  255. }
  256. if (TBJ_PARAM_XiaMo_Mode == 0)TBJ_XM_VAVLE = 1; //下模活动
  257. TBJ_bHM = 0;
  258. }
  259. else
  260. {
  261. TBJ_bHM = 0;
  262. if (!TBJ_FJ_ORIGIN_IN)
  263. TBJ_SetAlarmCode(46); //E46 手动合模停止,分胶阀未退位,或 X13分胶后感应异常
  264. else if (TBJ_FJ_LIMIT_IN)
  265. TBJ_SetAlarmCode(47); //E47 手动合模停止,分胶阀未退位,或 X12分胶前感应异常
  266. else if (TBJ_SJ_LIMIT_IN)
  267. TBJ_SetAlarmCode(48); //E48 手动合模停止,送胶阀未退位,或 X16送胶前感应异常
  268. else if (!TBJ_SJ_ORIGIN_IN)
  269. TBJ_SetAlarmCode(49); //E49 手动合模停止,送胶阀未退位,或 X17分胶后感应异常
  270. else if (TBJ_CS_OUT)
  271. TBJ_SetAlarmCode(50); //E50 手动合模停止,超声未关闭
  272. else if(TBJ_XC_Reset_flag)
  273. TBJ_SetAlarmCode(TBJ_XC_NO_REST); //E09 下冲电机未复位
  274. }
  275. }
  276. else if (TBJ_bHM&&TBJ_Hemo_flag)// && TBJ_SM_VAVLE) //屏幕按钮按下 && 上模已输出 && 手动合模没输入
  277. {
  278. if(TBJ_PARAM_XiaChong_MODE==0)TBJ_SM_VAVLE = 0; //上模退回
  279. else
  280. {
  281. TBJ_HeMo_Step=20;//伺服合模
  282. SetPos(Y_AXIS,dwYRealPos_com);
  283. //Set_Ctrlmode_trans(Y_AXIS,POS_MODE);
  284. TBJ_SERVO_CLR=0;
  285. TBJ_HeMo_Delay=dwTickCount+100;
  286. }
  287. if (TBJ_PARAM_XiaMo_Mode == 0)TBJ_XM_VAVLE = 0; //下模退回 //双钩针模式下 或下模活动模式
  288. TBJ_bHM = 0;
  289. }
  290. //合模后吹气一次
  291. if (TBJ_SM_LIMIT_IN&&TBJ_Hand_Hemo_flag) //合模到位
  292. {
  293. TBJ_ChuiQi(); //启动吹气
  294. TBJ_Hand_Hemo_flag = 0;
  295. }
  296. //连续超声
  297. if(TBJ_bCS)
  298. {
  299. if ((!TBJ_FJ_LIMIT_IN && TBJ_FJ_ORIGIN_IN ) //分胶阀判断
  300. && ( !TBJ_SJ_LIMIT_IN && TBJ_SJ_ORIGIN_IN || TBJ_PARAM_SongJiaoMode)) //送胶阀判断
  301. {
  302. if (TBJ_bCS && !TBJ_bCS_FLAG) //按钮已按下,超声未开始
  303. {
  304. TBJ_bCS_FLAG = 1; //cMidleCoil[0] |= (1<<10); //M10
  305. TBJ_CS_OUT = 1; //发超声
  306. TBJ_CS_Delay = dwTickCount + TBJ_Choose_CSTime(); //限长时间1.5
  307. }
  308. }
  309. TBJ_bCS=0;
  310. }
  311. if(TBJ_bCS_FLAG&&dwTickCount >= TBJ_CS_Delay)
  312. {
  313. TBJ_bCS_FLAG=0;
  314. TBJ_bCS_FLAG = 0; //超声标志位清零
  315. TBJ_CS_OUT = 0; //关闭超声
  316. TBJ_ChuiQi(); //开启吹气
  317. }
  318. //合模+超声
  319. if(TBJ_bSC&& !TBJ_bSC_FLAG)
  320. {
  321. TBJ_bSC=0;
  322. if (!TBJ_XC_Reset_flag&&(!TBJ_FJ_VAVLE && !TBJ_FJ_LIMIT_IN && TBJ_FJ_ORIGIN_IN || TBJ_PARAM_FenJiaoSelect) //分胶阀判断
  323. && (!TBJ_SJ_VAVLE && !TBJ_SJ_LIMIT_IN && TBJ_SJ_ORIGIN_IN || TBJ_PARAM_SongJiaoMode) //送胶阀判断
  324. && (dwTickCount >= TBJ_CS_Delay))
  325. {
  326. if ((TBJ_PARAM_SGZSelect || ((TBJ_PARAM_SGZSelect == 0) &&!TBJ_GZ_LIMIT_IN)))
  327. {
  328. TBJ_bSC_FLAG = 1;
  329. TBJ_HMCS_Step = 1; //整个合模超声过程
  330. TBJ_GZ_VAVLE = 0;//钩针
  331. TBJ_FJ_VAVLE = 0; //分胶
  332. TBJ_DZ_VAVLE=0;//顶针
  333. TBJ_SJ_VAVLE=0;//送胶
  334. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMIN;
  335. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMIN;
  336. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,
  337. TBJ_PARAM_Y_LOW_SPEED,TBJ_PARAM_Y_LOW_SPEED,SERVO_TARR_CW);
  338. }
  339. }
  340. else
  341. {
  342. if (TBJ_FJ_VAVLE)
  343. TBJ_SetAlarmCode(57); //E57 手动上超停止,分胶阀未退回
  344. else if (TBJ_FJ_LIMIT_IN)
  345. TBJ_SetAlarmCode(58); //E58 手动上超停止,分胶阀未退回,或X12分胶前感应异常
  346. else if (!TBJ_PARAM_FenJiaoSelect && !TBJ_FJ_ORIGIN_IN)
  347. TBJ_SetAlarmCode(59); //E59 手动上超停止,分胶阀未退回,或X13分胶后感应异常
  348. else if (TBJ_PARAM_SongJiaoMode == 0)
  349. {
  350. if (TBJ_SJ_VAVLE)
  351. TBJ_SetAlarmCode(60); //E60 手动上超停止,送胶阀未退回
  352. if (TBJ_SJ_LIMIT_IN)
  353. TBJ_SetAlarmCode(61); //E61 手动上超停止,送胶阀未退回,或X16送胶到位感应异常
  354. if (!TBJ_SJ_ORIGIN_IN)
  355. TBJ_SetAlarmCode(62); //E62 手动上超停止,送胶阀未退回,或X17退胶到位感应异常
  356. }
  357. else if(TBJ_XC_Reset_flag)
  358. TBJ_SetAlarmCode(TBJ_XC_NO_REST); //E50 手动合模停止,超声未关闭
  359. }
  360. }
  361. //手动夹胶(压带)
  362. if (TBJ_bJJ)
  363. {
  364. if (TBJ_JJ_VAVLE)
  365. TBJ_JJ_VAVLE = 0;
  366. else
  367. TBJ_JJ_VAVLE = 1;
  368. TBJ_bJJ = 0;
  369. }
  370. //手动压带
  371. if (TBJ_bYD)
  372. {
  373. if (TBJ_YD_VAVLE)
  374. TBJ_YD_VAVLE = 0;
  375. else
  376. TBJ_YD_VAVLE = 1;
  377. TBJ_bYD = 0;
  378. }
  379. //顶针
  380. if (TBJ_bDZ)
  381. {
  382. if (TBJ_DZ_VAVLE)
  383. TBJ_DZ_VAVLE = 0;
  384. else
  385. TBJ_DZ_VAVLE = 1;
  386. TBJ_bDZ = 0;
  387. }
  388. /*给力无松带
  389. //松带
  390. if (TBJ_bSD)
  391. {
  392. if (TBJ_SD_VAVLE)
  393. TBJ_SD_VAVLE = 0;
  394. else
  395. TBJ_SD_VAVLE = 1;
  396. TBJ_bSD = 0;
  397. }
  398. */
  399. //风扇
  400. if (TBJ_bFS)
  401. {
  402. if (TBJ_LQFS_OUT){
  403. SetEn(X_AXIS, TBJ_MOTOR_DISEN);
  404. SetEn(Y_AXIS, TBJ_MOTOR_DISEN);
  405. TBJ_XC_Reset_flag=1;
  406. TBJ_LQFS_OUT = 0;
  407. }
  408. else
  409. {
  410. SetEn(X_AXIS, TBJ_MOTOR_EN);
  411. SetEn(Y_AXIS, TBJ_MOTOR_EN);
  412. TBJ_LQFS_OUT = 1;
  413. }
  414. TBJ_bFS = 0;
  415. }
  416. //手动拖带
  417. if(TBJ_bMotor_N)
  418. {
  419. SetEn(X_AXIS, TBJ_MOTOR_EN);
  420. if(!X_DRV)
  421. {
  422. AxisContinueMoveAcc(X_AXIS,1000,DIR_N,1000,1000,10,12);
  423. }
  424. }
  425. else if(TBJ_bMotor_P)
  426. {
  427. SetEn(X_AXIS, TBJ_MOTOR_EN);
  428. if(TBJ_GZ_LIMIT_IN)
  429. {
  430. TBJ_bMotor_N=0;
  431. AxisEgmStop(X_AXIS);
  432. }
  433. if(!X_DRV&&!TBJ_GZ_LIMIT_IN)
  434. {
  435. AxisContinueMoveAcc(X_AXIS,1000,DIR_P,1000,1000,10,12);
  436. }
  437. }
  438. else
  439. {
  440. if(X_DRV)
  441. {
  442. AxisEgmStop(X_AXIS);
  443. }
  444. }
  445. //手动下冲
  446. if(TBJ_bYMotor_N)
  447. {
  448. SetEn(Y_AXIS, TBJ_MOTOR_EN);
  449. if(TBJ_Y_ORIGIN_IN)AxisEgmStop(Y_AXIS);
  450. if(!Y_DRV&&!TBJ_Y_ORIGIN_IN)
  451. {
  452. AxisContinueMoveAcc(Y_AXIS,800,DIR_N,800,800,10,12);
  453. }
  454. }
  455. else if(TBJ_bYMotor_P)
  456. {
  457. SetEn(Y_AXIS, TBJ_MOTOR_EN);
  458. //if(TBJ_Y_RUNING_IN)AxisEgmStop(Y_AXIS);
  459. if(!Y_DRV&&TBJ_FJ_ORIGIN_IN&&TBJ_SJ_ORIGIN_IN)
  460. {
  461. AxisContinueMoveAcc(Y_AXIS,800,DIR_P,800,1000,10,12);
  462. }
  463. }
  464. else
  465. {
  466. if(Y_DRV&&!TBJ_bXCResting&&TBJ_HMCS_Step==0&&TBJ_HeMo_Step==0)
  467. {
  468. AxisEgmStop(Y_AXIS);
  469. }
  470. }
  471. //复位下冲
  472. if(TBJ_bXCRest&&GetServoComState(Y_AXIS))
  473. {
  474. TBJ_bXCRest=0;
  475. TBJ_bXCResting=1;
  476. TBJ_XC_RstStep=1;
  477. TBJ_GZ_VAVLE = 0;//钩针
  478. TBJ_FJ_VAVLE = 0; //分胶
  479. TBJ_DZ_VAVLE=0;//顶针
  480. TBJ_SJ_VAVLE=0;//送胶
  481. SetEn(Y_AXIS, TBJ_MOTOR_EN);
  482. TBJ_XCRst_Delay=dwTickCount+100;
  483. //Set_Ctrlmode_trans(Y_AXIS,POS_MODE);
  484. TBJ_SERVO_CLR=0;
  485. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMIN;
  486. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMIN;
  487. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,TBJ_PARAM_SFZSY_SPEED,TBJ_PARAM_SFZSY_SPEED,SERVO_TARR_CW);
  488. }
  489. }
  490. #endif
  491. }
  492. //伺服合模处理
  493. void TBJ_SFHeMo_Proc(void)
  494. {
  495. switch(TBJ_HeMo_Step)
  496. {
  497. case 1:
  498. if(dwTickCount>=TBJ_HeMo_Delay)
  499. {
  500. TBJ_LENTH=TBJ_PARAM_Y_Work_Local-dwYRealPos;
  501. AxisMovePosAccDec(Y_AXIS, TBJ_PARAM_Y_HIGH_SPEED,TBJ_LENTH,1000,1000,20,20,10);
  502. TBJ_HeMo_Step++;
  503. }
  504. break;
  505. case 2:
  506. if(!Y_DRV)
  507. {
  508. TBJ_HeMo_Step=3;
  509. //Set_Ctrlmode_trans(Y_AXIS,TARR_MODE);
  510. TBJ_SERVO_CLR=1;
  511. TBJ_HeMo_Delay=dwTickCount+100;
  512. }
  513. break;
  514. case 3:
  515. if(dwTickCount>=TBJ_HeMo_Delay)
  516. {
  517. TBJ_HeMo_Step=0;
  518. TBJ_Hemo_flag=1;
  519. SetPos(Y_AXIS,dwYRealPos_com);
  520. }
  521. break;
  522. case 20:
  523. if(dwTickCount>=TBJ_HeMo_Delay)
  524. {
  525. TBJ_LENTH=dwYRealPos-0;
  526. AxisMovePosAccDec(Y_AXIS, TBJ_PARAM_Y_HIGH_SPEED, -TBJ_LENTH, 1000,
  527. 1000, 20, 20, 10);
  528. TBJ_HeMo_Step++;
  529. }
  530. break;
  531. case 21:
  532. if(!Y_DRV)
  533. {
  534. TBJ_HeMo_Step=0;
  535. TBJ_Hemo_flag=0;
  536. TBJ_ChuiQi(); //启动吹气
  537. }
  538. break;
  539. }
  540. }
  541. //下冲复位处理
  542. void TBJ_XCReset_Proc(void)
  543. {
  544. switch(TBJ_XC_RstStep)
  545. {
  546. case 1:
  547. if(TBJ_XC_Reset_flag)
  548. {
  549. AxisDisableSoftwarelmt(Y_AXIS);
  550. if(TBJ_Y_ORIGIN_IN&&dwTickCount>=TBJ_XCRst_Delay)
  551. {
  552. TBJ_XC_RstStep=4;
  553. AxisContinueMove(Y_AXIS,200,DIR_P);
  554. }
  555. else
  556. {
  557. TBJ_XC_RstStep++;
  558. AxisContinueMove(Y_AXIS,800,DIR_N);
  559. }
  560. }
  561. else
  562. {
  563. TBJ_XC_RstStep=14;
  564. SetPos(Y_AXIS,dwYRealPos_com);
  565. }
  566. break;
  567. case 2:
  568. if(TBJ_Y_ORIGIN_IN)
  569. {
  570. TBJ_XC_RstStep++;
  571. AxisEgmStop(Y_AXIS);
  572. TBJ_XCRst_Delay=dwTickCount+10;
  573. }
  574. break;
  575. case 3:
  576. if(dwTickCount>=TBJ_XCRst_Delay)
  577. {
  578. TBJ_XC_RstStep++;
  579. AxisContinueMove(Y_AXIS,200,DIR_P);
  580. }
  581. break;
  582. case 4:
  583. if(!TBJ_Y_ORIGIN_IN)
  584. {
  585. TBJ_XC_RstStep++;
  586. AxisEgmStop(Y_AXIS);
  587. TBJ_XCRst_Delay=dwTickCount+10;
  588. }
  589. break;
  590. case 5:
  591. TBJ_XC_RstStep++;
  592. AxisMovePosAccDec(Y_AXIS,800,10,800,800,10,10,0);
  593. break;
  594. case 6:
  595. if(dwTickCount>=TBJ_XCRst_Delay&&!Y_DRV)
  596. {
  597. TBJ_XC_RstStep++;
  598. AxisContinueMove(Y_AXIS,200,DIR_N);
  599. }
  600. break;
  601. case 7:
  602. if(TBJ_Y_ORIGIN_IN)
  603. {
  604. TBJ_XC_RstStep++;
  605. AxisEgmStop(Y_AXIS);
  606. TBJ_XCRst_Delay=dwTickCount+10;
  607. }
  608. break;
  609. case 8:
  610. if(dwTickCount>=TBJ_XCRst_Delay&&!Y_DRV)
  611. {
  612. TBJ_XC_RstStep++;
  613. //AxisMovePos(Y_AXIS,400,-10);
  614. AxisMovePosAccDec(Y_AXIS,400,-10,400,400,10,10,0);
  615. }
  616. break;
  617. case 9:
  618. if(!Y_DRV)
  619. {
  620. /*if(TBJ_PARAM_SFXC_MODE)
  621. {
  622. if(get_tarr_set(Y_AXIS)!=2)//伺服配置转矩限制失败
  623. {
  624. TBJ_XC_RstStep=0;
  625. SetEn(Y_AXIS, MOTOR_DISEN);//设置扭矩做准备
  626. TBJ_XC_Reset_flag=1;
  627. TBJ_SetAlarmCode(65);//伺服转矩配置失败
  628. }
  629. }*/
  630. TBJ_XC_RstStep++;
  631. TBJ_XCRst_Delay=dwTickCount+100;
  632. }
  633. break;
  634. case 10:
  635. if(dwTickCount>=TBJ_XCRst_Delay&&!Y_DRV)
  636. {
  637. SetPos(Y_AXIS, 0);
  638. axis_set_com_pos(Y_AXIS,0);
  639. //if(TBJ_PARAM_SFXC_MODE==0)
  640. {
  641. TBJ_XC_RstStep=0;
  642. TBJ_bXCResting=0;
  643. TBJ_XC_Reset_flag=0;
  644. AxisEnableSoftwarelmt(Y_AXIS,TBJ_PARAM_Y_SOFT_PLIMIT,0);
  645. }
  646. /*else
  647. {
  648. TBJ_XC_RstStep++;
  649. TBJ_XCRst_Delay=dwTickCount+10;
  650. }*/
  651. }
  652. break;
  653. case 11:
  654. if(dwTickCount>=TBJ_XCRst_Delay)
  655. {
  656. TBJ_XC_RstStep++;
  657. //Set_Ctrlmode_trans(Y_AXIS,TARR_MODE);
  658. TBJ_SERVO_CLR=1;
  659. TBJ_XCRst_Delay=dwTickCount+100;
  660. }
  661. break;
  662. case 12://扭矩到达
  663. if (dwTickCount >= TBJ_XCRst_Delay)
  664. {
  665. TBJ_XC_RstStep ++;
  666. TBJ_XCRst_Delay = dwTickCount + 500;
  667. }
  668. break;
  669. case 13://扭矩到达并维持10ms
  670. // if (!(GetTarr(Y_AXIS)))
  671. if (TBJ_TARR_LIMIT)
  672. {
  673. if((dwTickCount >= TBJ_XCRst_Delay))
  674. {
  675. TBJ_XC_RstStep++;
  676. TBJ_PARAM_Y_Work_Local= dwYRealPos_com-30;
  677. TBJ_PARAM_Y_SOFT_PLIMIT=dwYRealPos_com-20;
  678. //AxisEnableSoftwarelmt(Y_AXIS,TBJ_PARAM_Y_SOFT_PLIMIT,0);
  679. SetPos(Y_AXIS,dwYRealPos_com);
  680. //Set_Ctrlmode_trans(Y_AXIS,POS_MODE);
  681. TBJ_SERVO_CLR=0;
  682. TBJ_XCRst_Delay = dwTickCount + 10;
  683. }
  684. }
  685. else
  686. {
  687. TBJ_XCRst_Delay = dwTickCount + 100;
  688. }
  689. break;
  690. case 14://扭矩到达
  691. if(dwTickCount>=TBJ_XCRst_Delay)
  692. {
  693. TBJ_XC_RstStep ++;
  694. AxisMovePosAccDec(Y_AXIS, TBJ_PARAM_Y_HIGH_SPEED, -dwYRealPos, 1000,
  695. 1000, 20, 20, 10) ;
  696. }
  697. break;
  698. case 15://扭矩到达
  699. if(!Y_DRV)
  700. {
  701. TBJ_XCRst_Delay = dwTickCount + 100;
  702. TBJ_XC_RstStep = 16;
  703. }
  704. break;
  705. case 16://扭矩到达
  706. if(dwTickCount>=TBJ_XCRst_Delay)
  707. {
  708. if(TBJ_Y_ORIGIN_IN)
  709. {
  710. TBJ_XC_RstStep = 0;
  711. TBJ_bXCResting=0;
  712. TBJ_XC_Reset_flag=0;
  713. }
  714. else
  715. {
  716. TBJ_XC_RstStep = 1;
  717. TBJ_bXCResting=1;
  718. TBJ_XC_Reset_flag=1;
  719. }
  720. }
  721. break;
  722. }
  723. }
  724. //送胶动作
  725. void TBJ_SongJiao(void)
  726. {
  727. #if 1
  728. if (TBJ_bStop)
  729. return;
  730. switch (TBJ_SJ_FJ_Step)
  731. {
  732. case 0:
  733. break;
  734. case 1:
  735. TBJ_SJ_FJ_Step = 2;
  736. TBJ_SJ_Delay = dwTickCount + TBJ_PARAM_FJ_DELAY;
  737. break;
  738. case 2:
  739. if (dwTickCount >= TBJ_SJ_Delay)
  740. {
  741. TBJ_SJ_FJ_Step = 3;
  742. TBJ_FJ_VAVLE = 1; //分胶阀输出
  743. //TBJ_JJ_VAVLE = 1; //夹胶阀输出
  744. TBJ_JJ_VAVLE = 0; //2024-0903
  745. TBJ_FJ_Delay = dwTickCount + 1; //分胶阀输出时间
  746. TBJ_SJ_ErrorTime = dwTickCount + ERRORTIME; //分胶阀输出容错时间
  747. }
  748. break;
  749. case 3:
  750. if (TBJ_FJ_LIMIT_IN )
  751. {
  752. TBJ_SJ_FJ_Step = 4;
  753. TBJ_SJ_VAVLE = 1; //送胶输出
  754. TBJ_SJ_ErrorTime = dwTickCount + ERRORTIME;
  755. TBJ_FJ_Delay = dwTickCount + TBJ_PARAM_SJ_TIME;
  756. }
  757. else if (dwTickCount > TBJ_SJ_ErrorTime)
  758. {
  759. TBJ_SetAlarmCode(10); //E10 分胶未到位或 X12分胶前感应异常,无法送胶
  760. }
  761. break;
  762. case 4:
  763. TBJ_SJ_FJ_Step = 5;
  764. /*
  765. if ((TBJ_PARAM_SGZSelect || (TBJ_Motor_Step == 0)) && (dwTickCount >= TBJ_SJ_Delay))
  766. {
  767. if (TBJ_FJ_LIMIT_IN && TBJ_FJ_VAVLE)
  768. {
  769. TBJ_SJ_FJ_Step = 5;
  770. TBJ_SJ_VAVLE = 1; //送胶输出
  771. TBJ_SJ_ErrorTime = dwTickCount + ERRORTIME;
  772. TBJ_FJ_Delay = dwTickCount + TBJ_PARAM_SJ_TIME;
  773. }
  774. else if (dwTickCount > TBJ_SJ_ErrorTime)
  775. {
  776. TBJ_SetAlarmCode(10); //E10 分胶未到位或 X12分胶前感应异常,无法送胶
  777. }
  778. }*/
  779. break;
  780. case 5:
  781. if (TBJ_SJ_LIMIT_IN_UP || (TBJ_PARAM_SongJiaoMode && (dwTickCount > TBJ_FJ_Delay)))
  782. {
  783. TBJ_SJ_FJ_Step = 6;
  784. TBJ_FJ_Delay = dwTickCount + 20;
  785. }
  786. else if (dwTickCount > TBJ_SJ_ErrorTime)
  787. {
  788. TBJ_SetAlarmCode(4); //E04 送胶不到位或 X07送胶前感应异常
  789. }
  790. break;
  791. case 6:
  792. if ((dwTickCount >= TBJ_FJ_Delay) && (!X_DRV || TBJ_GUO_LIAN_IN_UP))
  793. {
  794. TBJ_SJ_FJ_Step = 7;
  795. //TBJ_QJ_Step=1;
  796. TBJ_FJ_VAVLE = 0; //关分胶
  797. //TBJ_JJ_VAVLE = 0; //关夹胶
  798. TBJ_JJ_VAVLE=1;//2024-0903
  799. TBJ_FJ_Delay = dwTickCount + 10;
  800. TBJ_SJ_ErrorTime = dwTickCount + ERRORTIME;
  801. }
  802. break;
  803. case 7:
  804. if (!TBJ_FJ_LIMIT_IN && (dwTickCount >= TBJ_FJ_Delay) )
  805. {
  806. TBJ_SJ_FJ_Step = 8;
  807. if (TBJ_PARAM_SongJiaoMode == 0)TBJ_SJ_VAVLE = 0; //气缸送胶先退,滚轮送胶先不退或是触摸屏手动退送胶
  808. TBJ_SJ_ErrorTime = dwTickCount + ERRORTIME;
  809. }
  810. else if (dwTickCount >= TBJ_SJ_ErrorTime)
  811. {
  812. TBJ_SetAlarmCode(6); //E06 退分胶不到位警告或 X13分胶后感应异常
  813. }
  814. break;
  815. case 8:
  816. if ((TBJ_PARAM_SongJiaoMode)||(!TBJ_SJ_LIMIT_IN && TBJ_SJ_ORIGIN_IN))
  817. {
  818. TBJ_SJ_FJ_Step = 0;
  819. TBJ_JJ_VAVLE=0;//2024-0903
  820. }
  821. else if (dwTickCount >= TBJ_SJ_ErrorTime)
  822. {
  823. TBJ_SetAlarmCode(5); //E05 退胶不到位警告 或 X16、X17送胶前后感应异常
  824. }
  825. break;
  826. //手动送胶
  827. case 20://手动送胶
  828. TBJ_JJ_VAVLE = 0; //压胶阀输出
  829. TBJ_SJ_Delay = dwTickCount + 70; //延迟70ms输出送胶阀
  830. TBJ_SJ_FJ_Step = 21;
  831. break;
  832. case 21:
  833. if (dwTickCount >= TBJ_SJ_Delay)
  834. {
  835. TBJ_SJ_VAVLE = 1; //压胶阀输出
  836. TBJ_SJ_FJ_Step = 22;
  837. }
  838. break;
  839. case 22:
  840. if (TBJ_SJ_LIMIT_IN)
  841. {
  842. //TBJ_JJ_VAVLE = 1; //压胶阀输出
  843. TBJ_SJ_FJ_Step = 23;
  844. TBJ_FJ_Delay = dwTickCount + 100;
  845. }
  846. break;
  847. case 23:
  848. if (dwTickCount>=TBJ_FJ_Delay)
  849. {
  850. TBJ_JJ_VAVLE = 1; //压胶阀输出
  851. TBJ_SJ_FJ_Step = 0;
  852. TBJ_FJ_Delay = dwTickCount + 50;
  853. }
  854. break;
  855. case 25://手动退送胶
  856. TBJ_JJ_VAVLE = 1; //压胶阀输出
  857. TBJ_SJ_Delay = dwTickCount + 50; //延迟120ms退回送胶阀
  858. TBJ_SJ_FJ_Step = 26;
  859. break;
  860. case 26:
  861. if (dwTickCount >= TBJ_SJ_Delay)
  862. {
  863. TBJ_SJ_VAVLE = 0; //压胶阀输出
  864. TBJ_SJ_FJ_Step = 27;
  865. //TBJ_QJ_Step=1;
  866. }
  867. break;
  868. case 27:
  869. if (TBJ_SJ_ORIGIN_IN)
  870. {
  871. //判断是否使用切胶
  872. //TBJ_YD_VAVLE = 0; //压胶阀输出
  873. //TBJ_SJ_FJ_Step = 0;
  874. //TBJ_QJ_Step=1;
  875. TBJ_SJ_FJ_Step = 28;
  876. TBJ_SJ_Delay = dwTickCount + 50; //延迟120ms退回送胶阀
  877. }
  878. break;
  879. case 28:
  880. if ((dwTickCount >= TBJ_SJ_Delay))
  881. //if (TBJ_QJ_Step==0&& (dwTickCount >= TBJ_SJ_Delay))
  882. {
  883. TBJ_JJ_VAVLE = 0;
  884. TBJ_SJ_FJ_Step = 0;
  885. }
  886. break;
  887. }
  888. #endif
  889. }
  890. //切胶处理
  891. void TBJ_QieJiao_Proc(void)
  892. {
  893. #if 1
  894. switch (TBJ_QJ_Step)
  895. {
  896. case 1:
  897. if(TBJ_SJ_ORIGIN_IN)
  898. {
  899. TBJ_QJ_Step=2;
  900. TBJ_QJ_VAVLE=1;
  901. TBJ_QieJiao_Delay=dwTickCount+ERRORTIME;
  902. }
  903. break;
  904. case 2:
  905. if(TBJ_QJ_LIMIT_IN)
  906. {
  907. TBJ_QJ_Step=3;
  908. TBJ_QJCQ_Start();
  909. TBJ_QieJiao_Delay=dwTickCount+10;
  910. }
  911. else if(dwTickCount>=TBJ_QieJiao_Delay)
  912. {
  913. TBJ_SetAlarmCode(TBJ_QJLIMIT_ALARM); //E15 切胶到位异常,检查X11
  914. }
  915. break;
  916. case 3:
  917. TBJ_QJ_Step=0;
  918. TBJ_QJ_VAVLE=0;
  919. break;
  920. }
  921. #endif
  922. }
  923. //合模超声动作
  924. void TBJ_ChaoShengHeMo(void)
  925. {
  926. #if 1
  927. unsigned short cs_time;
  928. switch (TBJ_HMCS_Step)
  929. {
  930. case 0:
  931. break;
  932. case 1:
  933. if (!TBJ_FJ_VAVLE && (!TBJ_SJ_VAVLE || TBJ_PARAM_SongJiaoMode) //输出阀判断
  934. && !TBJ_FJ_LIMIT_IN && TBJ_FJ_ORIGIN_IN //分胶阀位置判断
  935. && (!TBJ_SJ_LIMIT_IN && TBJ_SJ_ORIGIN_IN || (TBJ_PARAM_SongJiaoMode == 1)) //送胶阀位置判断
  936. && (TBJ_PARAM_SGZSelect || ((TBJ_PARAM_SGZSelect == 0) &&!TBJ_GZ_LIMIT_IN))) //钩针阀判断
  937. {
  938. TBJ_SM_VAVLE = 1; // 下冲
  939. TBJ_SFHM_Step=1;
  940. if ((TBJ_PARAM_XiaMo_Mode == 0) && (TBJ_PARAM_SGZSelect != 0))
  941. TBJ_XM_VAVLE = 1;
  942. TBJ_HMCS_Step = 2;
  943. TBJ_SM_ErrorTime = dwTickCount + (unsigned long)ERRORTIME; //上模下冲容错时间
  944. }
  945. else if (!TBJ_bRunning)
  946. TBJ_HMCS_Step = 0;
  947. break;
  948. case 2:
  949. if (TBJ_SM_LIMIT_IN && ((TBJ_PARAM_SGZSelect || ((TBJ_PARAM_SGZSelect == 0) &&!TBJ_GZ_LIMIT_IN)) || TBJ_PARAM_XiaMo_Mode)) //1 下模不动
  950. {
  951. TBJ_CS_Delay = dwTickCount + TBJ_PARAM_CS_DELAY; //延时超声
  952. TBJ_HMCS_Step = 3;
  953. if (TBJ_PARAM_TuiGouZhen_Mode == 1) //0 先超声后下勾针,1 先下勾针后超声
  954. TBJ_GZ_VAVLE = 0;
  955. }
  956. else if ((dwTickCount >= TBJ_SM_ErrorTime) && !TBJ_SM_LIMIT_IN)
  957. {
  958. TBJ_SetAlarmCode(26); //E26 超声停止,合模不到位或 X03下冲到位感应异常
  959. }
  960. else if ((dwTickCount >= TBJ_SM_ErrorTime) && (TBJ_GZ_LIMIT_IN))
  961. {
  962. TBJ_SetAlarmCode(27); //E27 超声停止,钩针不到位或 TBJ_GZ_ORIGIN_IN钩针复位感应异常
  963. }
  964. break;
  965. case 3:
  966. if (dwTickCount >= TBJ_CS_Delay)
  967. {
  968. TBJ_bCS = 0;
  969. TBJ_CS_OUT = 1; //超声打开
  970. cs_time = TBJ_Choose_CSTime();
  971. if (cs_time > 1500)
  972. cs_time = 1500; //超声时间上限为1.5 S
  973. TBJ_CS_Delay = dwTickCount + cs_time;
  974. TBJ_HMCS_Step = 4;
  975. }
  976. TBJ_SJ_VAVLE = 0;
  977. break;
  978. case 4:
  979. if (dwTickCount >= TBJ_CS_Delay)
  980. {
  981. TBJ_HMCS_Step = 5;
  982. TBJ_CS_OUT = 0;
  983. TBJ_CS_Delay = dwTickCount + (TBJ_Choose_COLDTime() / 3); //固化一半时间
  984. }
  985. break;
  986. case 5:
  987. if (dwTickCount >= TBJ_CS_Delay)
  988. {
  989. TBJ_HMCS_Step = 6;
  990. TBJ_ChuiQi();
  991. TBJ_GZ_VAVLE = 0;
  992. TBJ_CS_Delay = dwTickCount + (TBJ_Choose_COLDTime()*2 / 3);
  993. }
  994. break;
  995. case 6:
  996. if (dwTickCount >= TBJ_CS_Delay)
  997. {
  998. if (TBJ_PARAM_HONGWAI_GanYin != 0)
  999. {
  1000. //重新算温度
  1001. cs_time = user_datas[55];
  1002. if (user_datas[39] == 0)
  1003. user_datas[39] = 1;
  1004. //测温值 降时间阀值
  1005. if ((cs_time >= user_datas[37]) && (cs_time >= user_datas[58]))
  1006. {
  1007. cs_time = (cs_time - user_datas[58]) / user_datas[39];
  1008. cs_time *= user_datas[38];
  1009. if (cs_time > 3)
  1010. cs_time = 3;
  1011. if ((user_datas[59] + cs_time) < 4)
  1012. user_datas[59] += cs_time;
  1013. else if (user_datas[59] < 4)
  1014. {
  1015. cs_time = 3 - user_datas[59];
  1016. user_datas[59] = 3;
  1017. }
  1018. else
  1019. cs_time = 0;
  1020. }
  1021. else
  1022. cs_time = 0;
  1023. user_datas[57] = TBJ_Choose_CSTime();
  1024. user_datas[57] -= cs_time;
  1025. TBJ_ResetCsTime();
  1026. }
  1027. user_datas[56] = user_datas[55];
  1028. if (user_datas[56] > user_datas[58])
  1029. user_datas[58] = user_datas[55];
  1030. TBJ_SM_VAVLE = 0;
  1031. TBJ_XM_VAVLE = 0;
  1032. TBJ_HMCS_Step = 0;
  1033. TBJ_CS_Delay = dwTickCount + 350;
  1034. }
  1035. break;
  1036. }
  1037. #endif
  1038. }
  1039. //合模超声动作,伺服合模
  1040. void TBJ_ChaoShengHeMo_SF(void)
  1041. {
  1042. #if 1
  1043. unsigned short cs_time;
  1044. static unsigned char JLXL_flag=0,JLXL_flag1=0;
  1045. switch (TBJ_HMCS_Step)
  1046. {
  1047. case 0:
  1048. break;
  1049. case 1://走位置
  1050. if (!Y_DRV&&!TBJ_FJ_VAVLE && (!TBJ_SJ_VAVLE || TBJ_PARAM_SongJiaoMode) //输出阀判断
  1051. && !TBJ_FJ_LIMIT_IN && TBJ_FJ_ORIGIN_IN //分胶阀位置判断
  1052. && (!TBJ_SJ_LIMIT_IN && TBJ_SJ_ORIGIN_IN || (TBJ_PARAM_SongJiaoMode == 1)) //送胶阀位置判断
  1053. ) //钩针阀判断
  1054. {
  1055. if(TBJ_PARAM_TuiGouZhen_Mode)//先下钩针
  1056. {
  1057. TBJ_GZ_VAVLE=0;
  1058. TBJ_CS_Delay = dwTickCount + TBJ_PARAM_GZREBACK_TIME;
  1059. TBJ_HMCS_Step = 2;
  1060. }
  1061. else//先超声
  1062. {
  1063. TBJ_HMCS_Step = 3;
  1064. TBJ_CS_Delay = dwTickCount + 0;
  1065. }
  1066. }
  1067. else if (!TBJ_bRunning)
  1068. TBJ_HMCS_Step = 0;
  1069. break;
  1070. case 2://转扭矩
  1071. if(dwTickCount>=TBJ_CS_Delay)
  1072. {
  1073. TBJ_DZ_VAVLE=0;
  1074. TBJ_HMCS_Step = 3;
  1075. TBJ_CS_Delay = dwTickCount+10;
  1076. }
  1077. break;
  1078. case 3://转扭矩
  1079. if(dwTickCount>=TBJ_CS_Delay)
  1080. {
  1081. if(TBJ_PARAM_SFXC_MODE&&TEST1<1) //自适应模式第一条走扭矩
  1082. {
  1083. TBJ_LENTH=100-dwYRealPos;
  1084. AxisMovePosAccDec(Y_AXIS, TBJ_PARAM_Y_HIGH_SPEED, TBJ_LENTH, 1000,
  1085. 1000, 20, 20, 10);
  1086. }
  1087. else
  1088. {
  1089. TBJ_LENTH=TBJ_PARAM_Y_Work_Local-dwYRealPos;
  1090. AxisMovePosAccDec(Y_AXIS, TBJ_PARAM_Y_HIGH_SPEED, TBJ_LENTH, 1000,
  1091. 1000, 20, 20, 10);
  1092. }
  1093. TBJ_HMCS_Step = 4;
  1094. }
  1095. break;
  1096. case 4://转扭矩
  1097. if (!Y_DRV)
  1098. {
  1099. TBJ_HMCS_Step = 5;
  1100. //Set_Ctrlmode_trans(Y_AXIS,TARR_MODE);
  1101. TBJ_SERVO_CLR=1;
  1102. TBJ_CS_Delay = dwTickCount + 10;
  1103. if (TBJ_PARAM_TuiGouZhen_Mode == 1)TBJ_GZ_VAVLE = 0;//0 先超声后下勾针,1 先下勾针后超声
  1104. }
  1105. break;
  1106. case 5://扭矩到达
  1107. // if (!GetTarr(Y_AXIS))
  1108. if (TBJ_TARR_LIMIT)
  1109. {
  1110. if(dwTickCount >= TBJ_CS_Delay)
  1111. {
  1112. TBJ_HMCS_Step = 6;
  1113. TBJ_CS_Delay = dwTickCount + 10;
  1114. }
  1115. }
  1116. else
  1117. {
  1118. TBJ_CS_Delay = dwTickCount + 10;
  1119. }
  1120. break;
  1121. case 6://扭矩到达并维持10ms
  1122. //if (!GetTarr(Y_AXIS)&&(dwTickCount >= TBJ_CS_Delay))
  1123. if (TBJ_TARR_LIMIT&&(dwTickCount >= TBJ_CS_Delay))
  1124. {
  1125. //获取Y轴位置
  1126. if(TBJ_PARAM_SFXC_MODE&&TEST1<1)
  1127. TBJ_CS_Delay = dwTickCount + 200; //延时超声
  1128. else
  1129. TBJ_CS_Delay = dwTickCount + TBJ_PARAM_CS_DELAY; //延时超声
  1130. TBJ_HMCS_Step = 7;
  1131. }
  1132. break;
  1133. case 7:
  1134. if (dwTickCount >= TBJ_CS_Delay)
  1135. {
  1136. TBJ_CS_Y_Local=dwYRealPos_com;
  1137. if(TEST1<=1)TBJ_FIRST_CS_Y_LOCAL=dwYRealPos_com;
  1138. if(abs(TBJ_FIRST_CS_Y_LOCAL-TBJ_CS_Y_Local)<=3)
  1139. {
  1140. TBJ_bCS = 0;
  1141. TBJ_CS_OUT = 1; //超声打开
  1142. cs_time = TBJ_Choose_CSTime();
  1143. if (cs_time > 1500)
  1144. cs_time = 1500; //超声时间上限为1.5 S
  1145. TBJ_CS_Delay = dwTickCount + cs_time;
  1146. if(TBJ_PARAM_CS_MODE)
  1147. TBJ_HeMo_JLXL_Delay=dwTickCount+TBJ_PARAM_JL_BD_DELAY;
  1148. else
  1149. TBJ_HeMo_JLXL_Delay=dwTickCount+TBJ_PARAM_JL_TM_DELAY;
  1150. JLXL_flag=1;
  1151. TBJ_HMCS_Step = 8;
  1152. }
  1153. else
  1154. {
  1155. TBJ_HMCS_Step = 10;
  1156. TBJ_CS_Delay = dwTickCount + 100;
  1157. }
  1158. }
  1159. break;
  1160. case 8:
  1161. if(dwTickCount>=TBJ_HeMo_JLXL_Delay&&JLXL_flag)
  1162. {
  1163. JLXL_flag=0;
  1164. JLXL_flag1=1;
  1165. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMAX;
  1166. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMAX;
  1167. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,TBJ_PARAM_Y_LOW_SPEED,TBJ_PARAM_Y_LOW_SPEED,SERVO_TARR_CW);
  1168. if(TBJ_PARAM_CS_MODE)
  1169. TBJ_HeMo_JLXL_Delay=dwTickCount+TBJ_PARAM_XL_BD_DELAY;
  1170. else
  1171. TBJ_HeMo_JLXL_Delay=dwTickCount+TBJ_PARAM_XL_TM_DELAY;
  1172. }
  1173. if(dwTickCount>=TBJ_HeMo_JLXL_Delay&&JLXL_flag1)
  1174. {
  1175. JLXL_flag1=0;
  1176. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMIN;
  1177. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMIN;
  1178. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,TBJ_PARAM_Y_LOW_SPEED,TBJ_PARAM_Y_LOW_SPEED,SERVO_TARR_CW);
  1179. }
  1180. if (dwTickCount >= TBJ_CS_Delay)
  1181. {
  1182. TBJ_HMCS_Step = 9;
  1183. TBJ_GH_Y_Local=dwYRealPos_com;
  1184. TBJ_CS_OUT = 0;
  1185. TBJ_CS_Delay = dwTickCount + (TBJ_Choose_COLDTime() / 3); //固化一半时间
  1186. if(JLXL_flag)
  1187. {
  1188. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMAX;
  1189. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMAX;
  1190. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,TBJ_PARAM_Y_LOW_SPEED,TBJ_PARAM_Y_LOW_SPEED,SERVO_TARR_CW);
  1191. if(TBJ_PARAM_CS_MODE)
  1192. TBJ_HeMo_JLXL_Delay=dwTickCount+TBJ_PARAM_XL_BD_DELAY;
  1193. else
  1194. TBJ_HeMo_JLXL_Delay=dwTickCount+TBJ_PARAM_XL_TM_DELAY;
  1195. JLXL_flag1=1;
  1196. }
  1197. }
  1198. break;
  1199. case 9:
  1200. if(dwTickCount>=TBJ_HeMo_JLXL_Delay&&JLXL_flag1)
  1201. {
  1202. JLXL_flag1=0;
  1203. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMIN;
  1204. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMIN;
  1205. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,TBJ_PARAM_Y_LOW_SPEED,TBJ_PARAM_Y_LOW_SPEED,SERVO_TARR_CW);
  1206. }
  1207. if (dwTickCount >= TBJ_CS_Delay)
  1208. {
  1209. TBJ_HMCS_Step = 10;
  1210. TBJ_ChuiQi();
  1211. TBJ_GZ_VAVLE = 0;
  1212. TBJ_CS_Delay = dwTickCount + (TBJ_Choose_COLDTime()*2 / 3);
  1213. }
  1214. break;
  1215. case 10:
  1216. if(dwTickCount>=TBJ_HeMo_JLXL_Delay&&JLXL_flag1)
  1217. {
  1218. JLXL_flag1=0;
  1219. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMIN;
  1220. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMIN;
  1221. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,TBJ_PARAM_Y_LOW_SPEED,TBJ_PARAM_Y_LOW_SPEED,SERVO_TARR_CW);
  1222. }
  1223. if (dwTickCount >= TBJ_CS_Delay)
  1224. {
  1225. TBJ_XM_VAVLE = 0;
  1226. TBJ_HMCS_Step = 11;
  1227. SetPos(Y_AXIS,dwYRealPos_com);
  1228. Set_Ctrlmode_trans(Y_AXIS,POS_MODE);
  1229. TBJ_SERVO_CLR=0;
  1230. TBJ_XC_CS_LOCAL=dwYRealPos_com;
  1231. if(TEST1<1)
  1232. {
  1233. TBJ_PARAM_Y_Work_Local= dwYRealPos_com-25;
  1234. TBJ_PARAM_Y_SOFT_PLIMIT=dwYRealPos_com-15;
  1235. TBJ_WAIT_LOCAL=dwYRealPos_com-TBJ_PARAM_Y_Wait_Local;
  1236. AxisEnableSoftwarelmt(Y_AXIS,TBJ_PARAM_Y_SOFT_PLIMIT,0);
  1237. }
  1238. TBJ_CS_Delay = dwTickCount + 10;
  1239. }
  1240. break;
  1241. case 11:
  1242. if (dwTickCount >= TBJ_CS_Delay)
  1243. {
  1244. SetPos(Y_AXIS,dwYRealPos_com);
  1245. dwYRealPos = GetPos(Y_AXIS);
  1246. TBJ_LENTH=dwYRealPos-0;
  1247. TBJ_CS_Delay = dwTickCount+1500;
  1248. AxisMovePosAccDec(Y_AXIS, TBJ_PARAM_Y_HIGH_SPEED, -TBJ_LENTH, 1000,
  1249. 1000, 20, 20, 10);
  1250. TBJ_HMCS_Step = 12;
  1251. }
  1252. break;
  1253. case 12:
  1254. if (TBJ_Y_ORIGIN_IN)
  1255. {
  1256. TBJ_GZ_VAVLE=0;
  1257. TBJ_YD_VAVLE=0;
  1258. TBJ_DZ_VAVLE=0;
  1259. TBJ_HMCS_Step = 0;
  1260. TBJ_bSC_FLAG=0;
  1261. }
  1262. else if(dwTickCount >= TBJ_CS_Delay)
  1263. {
  1264. TBJ_SetAlarmCode(TBJ_NO_YORIGIN_ALARM);//E19 超声结束后伺服未复位到原点
  1265. }
  1266. break;
  1267. }
  1268. #endif
  1269. }
  1270. //启动停止故障停止动作
  1271. void TBJ_StartStopAction(void)
  1272. {
  1273. #if 1
  1274. //告警灯
  1275. if(GetAlarmCode(TBJ_ALARM_ADDR)==0)
  1276. {
  1277. TBJ_LED_R_OUT=0;
  1278. TBJ_LED_Y_OUT=0;
  1279. TBJ_LED_G_OUT=0;
  1280. if(TBJ_bRunning)TBJ_LED_G_OUT=1;
  1281. else TBJ_LED_Y_OUT=1;
  1282. }
  1283. else
  1284. {
  1285. TBJ_LED_R_OUT=1;
  1286. TBJ_LED_Y_OUT=0;
  1287. TBJ_LED_G_OUT=0;
  1288. }
  1289. //卡带感应
  1290. if(TBJ_KADAI_IN)
  1291. {
  1292. TBJ_SetAlarmCode(TBJ_KADAI_ALARM);
  1293. }
  1294. else
  1295. {
  1296. if(GetAlarmCode(TBJ_ALARM_ADDR) == TBJ_KADAI_ALARM)SetAlarmCode(TBJ_ALARM_ADDR,0);
  1297. }
  1298. if(GetAlarm(Y_AXIS)==1)
  1299. {
  1300. TBJ_SetAlarmCode(TBJ_SERVO_ALARM);
  1301. }
  1302. else
  1303. {
  1304. if(GetAlarmCode(TBJ_ALARM_ADDR) == TBJ_SERVO_ALARM)SetAlarmCode(TBJ_ALARM_ADDR,0);
  1305. }
  1306. if ((TBJ_START_IN_UP || TBJ_bStart||TBJ_bSingle||TBJ_HandWork) && !TBJ_bRunning && (TBJ_Auto_Step == 0))
  1307. {
  1308. if (GetTotal(TBJ_TOTAL_ADDR) >= TBJ_SET_TOTAL)
  1309. TBJ_SetAlarmCode(TBJ_TOTAL_ALARM);
  1310. else if(!(GetServoComState(Y_AXIS)))
  1311. TBJ_SetAlarmCode(TBJ_SERVO_COM_ALARM);
  1312. else
  1313. {
  1314. if(TBJ_XC_Reset_flag||!TBJ_Y_ORIGIN_IN)
  1315. {
  1316. TBJ_bXCRest=0;
  1317. TBJ_bXCResting=1;
  1318. TBJ_XC_RstStep=1;
  1319. SetEn(Y_AXIS, TBJ_MOTOR_EN);
  1320. //Set_Ctrlmode_trans(Y_AXIS,POS_MODE);
  1321. TBJ_SERVO_CLR=0;
  1322. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMIN;
  1323. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMIN;
  1324. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,
  1325. TBJ_PARAM_SFZSY_SPEED,TBJ_PARAM_SFZSY_SPEED,SERVO_TARR_CW);
  1326. }
  1327. SetEn(X_AXIS, TBJ_MOTOR_EN);
  1328. TBJ_Auto_Delay = dwTickCount + 100;
  1329. TBJ_Auto_Step = 1;
  1330. TBJ_bRunning = 1;
  1331. TBJ_Auto_Delay = 0;
  1332. TBJ_PARAM_SQJCOUNT=0;
  1333. TBJ_PARAM_XQJCOUNT=0;
  1334. //TBJ_SD_VAVLE=1;
  1335. TBJ_GZ_VAVLE = 0;//钩针
  1336. TBJ_FJ_VAVLE = 0; //分胶
  1337. TBJ_DZ_VAVLE=0;//顶针
  1338. TBJ_SJ_VAVLE=0;//送胶
  1339. TBJ_YD_VAVLE=0;
  1340. if(TBJ_bSingle)TBJ_bSingleOne=1;
  1341. if(TBJ_HandWork)
  1342. {
  1343. TBJ_HandWorking=1;
  1344. TBJ_bSingleOne=1;
  1345. }
  1346. }
  1347. TBJ_HandWork=0;
  1348. TBJ_bStart = 0;
  1349. TBJ_bSingle=0;
  1350. TBJ_bSC_FLAG=0;
  1351. TBJ_LLPL_flag=0;
  1352. }
  1353. if (TBJ_STOP_IN_UP || TBJ_bStop)
  1354. {
  1355. /*当自动步骤达到4,已完成送胶动作,将本次贴胶动作做完*/
  1356. if (TBJ_bRunning && !TBJ_bSingleOne)
  1357. {
  1358. TBJ_bStop = 0;
  1359. TBJ_bSingleOne = 1;
  1360. }
  1361. else
  1362. {
  1363. TBJ_bStart = 0;
  1364. TBJ_bRunning = 0;
  1365. TBJ_bSingleOne=0;
  1366. TBJ_HandWorking=0;
  1367. TBJ_bAlarmStop = 0;
  1368. TBJ_bStop = 0;
  1369. TBJ_HMCS_Step = 0;
  1370. TBJ_Auto_Step = 0;
  1371. TBJ_SJ_FJ_Step = 0;
  1372. TBJ_Motor_Step = 0;
  1373. TBJ_bXCResting=0;
  1374. TBJ_XC_RstStep=0;
  1375. TBJ_QJ_Step=0;
  1376. //TBJ_HeMo_Step=0;
  1377. TBJ_QJ_Step=0;
  1378. AxisEgmStop(X_AXIS); //刹停电机
  1379. SetEn(X_AXIS, TBJ_MOTOR_DISEN); //松轴
  1380. AxisEgmStop(Y_AXIS); //刹停电机
  1381. if(GetAlarm(Y_AXIS)==1)SetClr(Y_AXIS, 1);
  1382. //SetEn(Y_AXIS, TBJ_MOTOR_DISEN); //松轴
  1383. TBJ_GZ_VAVLE = 0; //Y01钩针
  1384. TBJ_FJ_VAVLE = 0; //Y02分胶
  1385. TBJ_SM_VAVLE = 0; //Y03上模(下冲)
  1386. TBJ_CS_OUT = 0; //Y10超声
  1387. TBJ_MOTOR_OUT = 0; //Y11拖带电机
  1388. TBJ_XM_VAVLE = 0; //Y12下模
  1389. TBJ_DZ_VAVLE=0;
  1390. TBJ_YD_VAVLE=0;
  1391. //TBJ_SD_VAVLE=0;
  1392. if (TBJ_PARAM_SHENGJIAO == 1)
  1393. TBJ_STOP_Step = 1; //停机节省布胶动作
  1394. else
  1395. {
  1396. TBJ_JJ_VAVLE = 0; //Y05压带
  1397. TBJ_SJ_VAVLE = 0; //Y04送胶退回
  1398. }
  1399. TBJ_bSC_FLAG=0;
  1400. TBJ_XC_RstStep=0;
  1401. TBJ_bXCResting=0;
  1402. TBJ_SERVO_CLR=0;
  1403. //Set_Ctrlmode_trans(Y_AXIS,POS_MODE);
  1404. TBJ_HeMo_Step=20;//伺服开模
  1405. TBJ_HeMo_Delay=dwTickCount+100;
  1406. }
  1407. }
  1408. if (TBJ_bAlarmStop)
  1409. {
  1410. TBJ_bAlarmStop = 0;
  1411. AxisEgmStop(X_AXIS);
  1412. TBJ_Auto_Step = 0;
  1413. TBJ_HMCS_Step = 0;
  1414. TBJ_Motor_Step = 0;
  1415. TBJ_SJ_FJ_Step = 0;
  1416. TBJ_bRunning = 0;
  1417. SingOneFlg = 0;
  1418. SetEn(X_AXIS, TBJ_MOTOR_DISEN); //松轴
  1419. }
  1420. #endif
  1421. }
  1422. void TBJ_STOP_Action(void)
  1423. {
  1424. #if 1
  1425. switch (TBJ_STOP_Step)
  1426. {
  1427. case 0:
  1428. break;
  1429. case 1:
  1430. {
  1431. TBJ_JJ_VAVLE = 0;
  1432. TBJ_STOP_Delay = dwTickCount + 50;
  1433. TBJ_STOP_Step = 2;
  1434. }
  1435. break;
  1436. case 2:
  1437. if (dwTickCount >= TBJ_STOP_Delay)
  1438. {
  1439. TBJ_SJ_VAVLE = 0;
  1440. TBJ_STOP_Step = 3;
  1441. }
  1442. break;
  1443. case 3:
  1444. if (TBJ_SJ_ORIGIN_IN)
  1445. {
  1446. TBJ_JJ_VAVLE = 0;
  1447. TBJ_STOP_Step = 0;
  1448. }
  1449. break;
  1450. }
  1451. #endif
  1452. }
  1453. //电机动作
  1454. void TBJ_Motor(void) //
  1455. {
  1456. #if 1
  1457. switch (TBJ_Motor_Step)
  1458. {
  1459. case 0:
  1460. //AxisDecStop(X_AXIS); //上钩针后减速停,保证拉链到位
  1461. break;
  1462. case 1:
  1463. TBJ_Motor_Step = 2;
  1464. SetPos(X_AXIS, 0);
  1465. TBJ_DJ_ErrorTime = dwTickCount + TBJ_PARAM_DJ_AUTO_STOP_TIME; //电机容错时间
  1466. if(TBJ_PARAM_DEC_MODE)//数控模式
  1467. {
  1468. if (TEST1 > 1 )
  1469. {
  1470. //第三条,开始走数控长度
  1471. AxisMovePosAccDecNotStop(X_AXIS, TBJ_PARAM_HIGH_SPEED, TBJ_SAVE_POS - TNJ_PARAM_TD_LENGTH - 200,
  1472. TBJ_PARAM_MOTOR_START_SPEED, TBJ_PARAM_NULL_SPEED, TBJ_PARAM_MOTOR_ADD, TBJ_PARAM_MOTOR_ADD, 0);
  1473. }
  1474. else
  1475. {
  1476. AxisContinueMoveAcc(X_AXIS, TBJ_PARAM_HIGH_SPEED*2/3, TBJ_DIR_P, TBJ_PARAM_MOTOR_START_SPEED,
  1477. TBJ_PARAM_NULL_SPEED, TBJ_PARAM_MOTOR_ADD, TBJ_PARAM_MOTOR_ADD);
  1478. }
  1479. }
  1480. else//感应模式
  1481. {
  1482. AxisContinueMoveAcc(X_AXIS, TBJ_PARAM_HIGH_SPEED, TBJ_DIR_P, TBJ_PARAM_MOTOR_START_SPEED,
  1483. TBJ_PARAM_NULL_SPEED, TBJ_PARAM_MOTOR_ADD, TBJ_PARAM_MOTOR_ADD);
  1484. }
  1485. break;
  1486. case 2:
  1487. if (TEST1 > 1 && TBJ_PARAM_DEC_MODE)//数控模式
  1488. {
  1489. if (!TBJ_GUO_LIAN_IN)
  1490. {
  1491. TBJ_Motor_Step = 3;
  1492. TBJ_Motor_Delay = dwTickCount + 10; //防震时间
  1493. TBJ_DJ_ErrorTime = dwTickCount + ERRORTIME;
  1494. if(dwXRealPos<(TBJ_SAVE_POS - TNJ_PARAM_TD_LENGTH - 600))
  1495. AxisContinueMoveChangeSpeed(X_AXIS,TBJ_PARAM_NULL_SPEED,1000,20,20);
  1496. }
  1497. if ((TBJ_PARAM_LL_PRETECT_LENGTH > 0) && (GetPos(X_AXIS) >= TBJ_SAVE_POS + TBJ_PARAM_LL_PRETECT_LENGTH))
  1498. {
  1499. TBJ_SetAlarmCode(8); //E8 拉链长度异常,超过拉链保护长度
  1500. }
  1501. }
  1502. else//感应模式
  1503. {
  1504. if (!TBJ_GUO_LIAN_IN )
  1505. {
  1506. TBJ_Motor_Step = 3;
  1507. TBJ_Motor_Delay = dwTickCount + 10; //防震时间
  1508. TBJ_DJ_ErrorTime = dwTickCount + ERRORTIME;
  1509. AxisContinueMoveChangeSpeed(X_AXIS,TBJ_PARAM_NULL_SPEED,1000,20,20);
  1510. }
  1511. }
  1512. if ((dwTickCount > TBJ_DJ_ErrorTime) && (TBJ_PARAM_DJ_AUTO_STOP_TIME ))
  1513. {
  1514. TBJ_SetAlarmCode(24); //E24 拉拉链时间过长,可能由以下原因:①超出保护时间,请检查保护时间是否设置过短②电机是否启动,速度是否过慢③拉链过紧,电机没拉动
  1515. }
  1516. break;
  1517. case 3: //防震
  1518. if (TBJ_GUO_LIAN_IN)
  1519. {
  1520. TBJ_Motor_Step = 2;
  1521. }
  1522. if (dwTickCount >= TBJ_Motor_Delay)
  1523. {
  1524. TBJ_Motor_Step = 4;
  1525. }
  1526. break;
  1527. case 4:
  1528. if (TBJ_GUO_LIAN_IN || (TBJ_TEST_MODE && (dwTickCount > TBJ_TEST_TIME))) //过链上升沿
  1529. {
  1530. if (TBJ_PARAM_TWOTD_SELECT == 0)//平口带
  1531. {
  1532. TBJ_Motor_Step = 5;
  1533. TBJ_DJ_ErrorTime = dwTickCount + 5000; //电机容错时间
  1534. AxisMovePosAccDec(X_AXIS, TBJ_PARAM_NULL_SPEED, TNJ_PARAM_TD_LENGTH, TBJ_PARAM_NULL_SPEED,
  1535. 1000, 50, 50, 20); //普通拖带,根据脉冲走一定距离
  1536. TBJ_GZ_Delay = dwTickCount + TBJ_PARAM_GZ_DELAY; //钩针延时输出
  1537. }
  1538. else//凹口带//二次拖带是,双钩针带缺口,防止撞送带增加的,要等送胶到位后,才能下钩针
  1539. {
  1540. AxisMovePosAccDec(X_AXIS, TBJ_PARAM_NULL_SPEED, TBJ_PARAM_TWOTD_LENGTH, TBJ_PARAM_NULL_SPEED,
  1541. 1000,50, 50, 0); //二次拖带,根据脉冲走不同距离
  1542. TBJ_Motor_Step = 40;
  1543. }
  1544. }
  1545. else if (dwTickCount > TBJ_DJ_ErrorTime) //一直处于空位,没拉链警告
  1546. {
  1547. TBJ_SetAlarmCode(1); //E01 没拉链警告 请检查 X15 过链接近开关
  1548. }
  1549. break;
  1550. case 40:
  1551. if (!X_DRV) //轴停
  1552. {
  1553. TBJ_GZ_VAVLE = 1; //输出钩针
  1554. if (!TBJ_SJ_VAVLE&&TBJ_SJ_LIMIT_IN) //分胶送胶已完成
  1555. {
  1556. TBJ_Motor_Delay = dwTickCount + 10; //二次拖带电机延时输出
  1557. TBJ_Motor_Step = 41;
  1558. }
  1559. }
  1560. break;
  1561. case 41:
  1562. if (dwTickCount > TBJ_Motor_Delay) //二次拖带电机延时已过
  1563. {
  1564. TBJ_Motor_Step = 5;
  1565. TBJ_DJ_ErrorTime = dwTickCount + 500; //电机容错时间
  1566. AxisMovePosAccDec(X_AXIS, TBJ_PARAM_NULL_SPEED, TNJ_PARAM_TD_LENGTH, 1000,
  1567. 1000, 20, 20, 0); //根据脉冲走一定距离
  1568. }
  1569. break;
  1570. case 5:
  1571. if (dwTickCount > TBJ_GZ_Delay)
  1572. {
  1573. TBJ_GZ_VAVLE = 1; //上钩针
  1574. }
  1575. if(TBJ_PARAM_SGZSelect==0)//双钩针模式
  1576. {
  1577. if(TBJ_GZ_LIMIT_IN)
  1578. {
  1579. TBJ_LLPL_flag=0;
  1580. AxisEgmStop(X_AXIS); //急停电机
  1581. TBJ_Motor_Step = 6;
  1582. TBJ_DZ_VAVLE=1;
  1583. TBJ_Motor_Delay = dwTickCount + 10; //延时压带
  1584. if(GetAlarmCode(TBJ_ALARM_ADDR)==TBJ_LLPL_ALARM)
  1585. SetAlarmCode(TBJ_ALARM_ADDR, 0);
  1586. }
  1587. else if (dwTickCount >= TBJ_DJ_ErrorTime)
  1588. {
  1589. if(TEST1<2||TBJ_LLPL_flag)
  1590. {
  1591. TBJ_SetAlarmCode(25); //E25 钩针未到位或 TBJ_TD_LIMIT_IN 钩针到位感应异常警告,电机停止
  1592. }
  1593. else
  1594. {
  1595. TBJ_LLPL_flag++;
  1596. SetAlarmCode(TBJ_ALARM_ADDR, TBJ_LLPL_ALARM);
  1597. }
  1598. }
  1599. }
  1600. else //单钩针模式
  1601. {
  1602. if(!X_DRV)
  1603. {
  1604. TBJ_GZ_VAVLE = 1; //上钩针
  1605. TBJ_Motor_Step = 0; //单钩针方式便完成电机动作
  1606. }
  1607. else if (dwTickCount >= TBJ_DJ_ErrorTime)
  1608. {
  1609. TBJ_SetAlarmCode(25); //E25 钩针未到位或 TBJ_TD_LIMIT_IN 钩针到位感应异常警告,电机停止
  1610. }
  1611. }
  1612. break;
  1613. /*以下为双钩针模式进行*/
  1614. case 6:
  1615. if (dwTickCount > TBJ_Motor_Delay)
  1616. {
  1617. TBJ_Motor_Step = 7;
  1618. TBJ_YD_VAVLE = 1; //压带输出
  1619. TBJ_Motor_Delay = dwTickCount + TBJ_PARAM_YD_TIME; //压带输出延时退勾针
  1620. }
  1621. break;
  1622. case 7:
  1623. if (dwTickCount > TBJ_Motor_Delay) //过了钩针延时
  1624. {
  1625. //TBJ_GZ_VAVLE = 0; //钩针退出
  1626. TBJ_Motor_Step = 0;
  1627. TBJ_DJ_ErrorTime = dwTickCount + ERRORTIME; //钩针退回容错时间
  1628. }
  1629. break;
  1630. case 8:
  1631. if (!TBJ_GZ_LIMIT_IN) //钩针返回原位感应
  1632. {
  1633. TBJ_Motor_Step = 0; //完成双钩针模式
  1634. }
  1635. else if (dwTickCount > TBJ_DJ_ErrorTime) //钩针长时间不退回
  1636. {
  1637. TBJ_SetAlarmCode(2); //E02 退勾针不到位或 TBJ_GZ_ORIGIN_IN 钩针复位感应异常,当前程序处于电机第七步
  1638. }
  1639. break;
  1640. //电机退链
  1641. case 20:
  1642. //SetEn(X_AXIS, TBJ_MOTOR_EN); //锁轴
  1643. //SetPos(X_AXIS, 0); //设当前位置pos为0
  1644. TBJ_Motor_Step = 21;
  1645. TBJ_Motor_Delay = dwTickCount + 5; //电机延时启动,等待锁轴
  1646. if (TBJ_PARAM_DJ_FANZHUAN == 0) //电机如果没有选择反转退链,则关闭该步骤
  1647. TBJ_Motor_Step = 0;
  1648. break;
  1649. case 21:
  1650. if (dwTickCount > TBJ_Motor_Delay) //锁轴完成
  1651. {
  1652. TBJ_Motor_Step = 22;
  1653. AxisMovePosAccDec(X_AXIS, TBJ_PARAM_NULL_SPEED, -TBJ_TUILIAN_LENGTH, TBJ_PARAM_NULL_SPEED,
  1654. TBJ_PARAM_NULL_SPEED, 20, 20, 0); //根据脉冲走一定距离
  1655. }
  1656. break;
  1657. case 22:
  1658. //if (!X_DRV) //电机移动到退链长度
  1659. {
  1660. TBJ_Motor_Step = 0;
  1661. if (TBJ_FJBACKMode)
  1662. TBJ_FJ_VAVLE = 0; //二次拖带退分胶
  1663. }
  1664. break;
  1665. }
  1666. #endif
  1667. }
  1668. int TBJ_QieJiao_Check(void)
  1669. {
  1670. switch(TBJ_PARAM_QJCheck_MODE)
  1671. {
  1672. case 0://不检测
  1673. return 1;
  1674. break;
  1675. case 1://信号检测
  1676. if(TBJ_XQJGY_IN)
  1677. {
  1678. TBJ_SetAlarmCode(TBJ_NoJiao_W);
  1679. return 0;
  1680. }
  1681. else
  1682. {
  1683. return 1;
  1684. }
  1685. break;
  1686. case 2://码盘检测
  1687. if((TEST1>5)&&((TBJ_PARAM_SQJCOUNT<TBJ_PARAM_SET_SQJCOUNT)&&TBJ_PARAM_SET_SQJCOUNT
  1688. ||(TBJ_PARAM_XQJCOUNT<TBJ_PARAM_SET_XQJCOUNT)&&(TBJ_PARAM_SET_XQJCOUNT)))
  1689. {
  1690. if(TBJ_PARAM_SQJCOUNT<TBJ_PARAM_SET_SQJCOUNT)
  1691. TBJ_SetAlarmCode(TBJ_NoSJiao_W); //E63 上胶已用完,请补充胶 或检查X01上胶感应信号
  1692. else
  1693. TBJ_SetAlarmCode(TBJ_NoXJiao_W); //E64 下胶已用完,请补充胶,或检查X00下胶感应信号
  1694. return 0;
  1695. }
  1696. else
  1697. {
  1698. TBJ_PARAM_SQJCOUNT=0;
  1699. TBJ_PARAM_XQJCOUNT=0;
  1700. return 1;
  1701. }
  1702. break;
  1703. }
  1704. return 0;
  1705. }
  1706. //自动运行动作
  1707. void TBJ_AutoRunStep(void)
  1708. {
  1709. #if 1
  1710. if (TBJ_bRunning)
  1711. {
  1712. switch (TBJ_Auto_Step)
  1713. {
  1714. case 0:
  1715. break;
  1716. case 1:
  1717. if(TBJ_Y_ORIGIN_IN&&TBJ_XC_Reset_flag==0&&(dwTickCount > TBJ_Auto_Delay))
  1718. {
  1719. TBJ_Auto_Step = 2;
  1720. TBJ_Auto_Delay = dwTickCount + 1;
  1721. TEST1 = 0; //当前为第一条拉链
  1722. TBJ_SAVE_POS = 0; //用来保存第二条长度,置零
  1723. }
  1724. break;
  1725. case 2: //第一条时
  1726. if (dwTickCount > TBJ_Auto_Delay)
  1727. {
  1728. if(TBJ_PARAM_CS_MODE)TBJ_NJ_SEL=SERVO_PARAM_TRARR_BD_LIMITMIN;//布胶
  1729. else TBJ_NJ_SEL=SERVO_PARAM_TRARR_TM_LIMITMIN;//透明胶
  1730. set_servo_postotarr_limit(Y_AXIS,TBJ_NJ_SEL,TBJ_PARAM_Y_LOW_SPEED,TBJ_PARAM_Y_LOW_SPEED,SERVO_TARR_CW);
  1731. //Set_Ctrlmode_trans(Y_AXIS,POS_MODE);
  1732. TBJ_SERVO_CLR=0;
  1733. if(TBJ_QieJiao_Check())//缺胶检测
  1734. {
  1735. TBJ_Auto_Step = 3;
  1736. TBJ_SJ_FJ_Step = 1; //开始分胶送胶,送胶分胶需电机动作完成后才能完成
  1737. SetPos(X_AXIS, 0);
  1738. if(!TBJ_HandWorking)
  1739. {
  1740. if(TBJ_PARAM_SGZSelect)//单钩针
  1741. {
  1742. if (!TBJ_GZ_VAVLE)TBJ_Motor_Step = 1; //开始电机动作
  1743. else TBJ_SetAlarmCode(QD_GZOut_W); //E18 钩针阀未退回,无法启动
  1744. }
  1745. else//双钩针
  1746. {
  1747. if(!TBJ_GZ_LIMIT_IN)TBJ_Motor_Step = 1; //开始电机动作
  1748. else TBJ_SetAlarmCode(QD_GZOut_W); //E18 钩针阀未退回,无法启动
  1749. }
  1750. }
  1751. }
  1752. }
  1753. break;
  1754. case 3:
  1755. if ((TBJ_SJ_FJ_Step == 0) && (TBJ_Motor_Step == 0))
  1756. {
  1757. TBJ_Auto_Step = 4;
  1758. if (TEST1 == 1) //第二条拉链
  1759. TBJ_SAVE_POS = GetPos(X_AXIS); //保存第二条拉链的长度数据
  1760. if (TBJ_PARAM_DJ_FANZHUAN == 1&&!TBJ_HandWorking)
  1761. TBJ_Motor_Step = 20;
  1762. if(TBJ_HandWorking)
  1763. {
  1764. TBJ_GZ_VAVLE=1;
  1765. }
  1766. TBJ_Auto_Delay = dwTickCount + 1000; //延迟执行超声合模动作
  1767. }
  1768. break;
  1769. case 4:
  1770. if ((!TBJ_FJ_LIMIT_IN && TBJ_FJ_ORIGIN_IN) //分胶没输出 到位没感应 原位有感应 没有分胶阀则不考虑前面条件
  1771. && ((!TBJ_SJ_LIMIT_IN && TBJ_SJ_ORIGIN_IN) || TBJ_PARAM_SongJiaoMode) //送胶没输出 到位没感应 原位有感应 滚轮送胶则不考虑前面条件
  1772. && (TBJ_PARAM_SGZSelect || ((TBJ_PARAM_SGZSelect == 0) &&TBJ_GZ_LIMIT_IN))) //双钩针模式需要考虑钩针退回原位 拖带到位感应不亮 单钩针模式不考虑
  1773. {
  1774. if (TBJ_Motor_Step == 0) //反转完成
  1775. {
  1776. TBJ_Auto_Step = 5;
  1777. TBJ_HMCS_Step = 1; //执行合模超声动作
  1778. }
  1779. }
  1780. else if (dwTickCount >= TBJ_Auto_Delay&&!TBJ_HandWorking)
  1781. {
  1782. if (TBJ_FJ_LIMIT_IN)
  1783. TBJ_SetAlarmCode(29); //E29 自动停止,分胶未退位或分胶前感应异常
  1784. else if (!TBJ_FJ_ORIGIN_IN )
  1785. TBJ_SetAlarmCode(30); //E30 自动停止,分胶未退位或分胶后感应异常
  1786. else if (TBJ_SJ_LIMIT_IN && !TBJ_PARAM_SongJiaoMode)
  1787. TBJ_SetAlarmCode(32); //E32 自动停止,送胶未退位或送胶前感应异常
  1788. else if (!TBJ_SJ_ORIGIN_IN && !TBJ_PARAM_SongJiaoMode)
  1789. TBJ_SetAlarmCode(33); //E33 自动停止,送胶未退位或送胶后感应异常
  1790. else if(!(TBJ_PARAM_SGZSelect || ((TBJ_PARAM_SGZSelect == 0) &&TBJ_GZ_LIMIT_IN)))
  1791. {
  1792. TBJ_SetAlarmCode(QD_GZDaoWei_W); //E03 钩针未退位或 X20 钩针到位感应异常警告,无法启动
  1793. }
  1794. }
  1795. break;
  1796. case 5:
  1797. if (TBJ_HMCS_Step == 0)
  1798. {
  1799. TBJ_Auto_Step = 6;
  1800. TBJ_GZ_VAVLE = 0; //退钩针
  1801. CalProSP(TBJ_SPEED_ADDR); //计算生产速度
  1802. AddToTal(TBJ_TOTAL_ADDR); //产量增加
  1803. }
  1804. break;
  1805. case 6:
  1806. if (TBJ_Y_ORIGIN_IN && //上模已离开
  1807. ((TBJ_PARAM_SGZSelect || ((TBJ_PARAM_SGZSelect == 0) &&!TBJ_GZ_LIMIT_IN)) //双钩针模式,钩针已回到原位,拖带到位感应不亮(该感应需要上钩针配合,不亮代表无钩针配合)
  1808. || ((TBJ_PARAM_XiaMo_Mode == 0) && !TBJ_GZ_LIMIT_IN) //下模不动模式,钩针与上下模位置错开,不相互影响,不需要回到原位
  1809. || ((TBJ_PARAM_XiaMo_Mode == 1) && TBJ_PARAM_SGZSelect))) //下模活动模式,单钩针模式,钩针与上下模位置错开
  1810. {
  1811. TBJ_Auto_Step = 7;
  1812. TBJ_CQ_VAVLE = 1;
  1813. TBJ_CQ_Delay = dwTickCount + 100;
  1814. TBJ_Auto_Delay = dwTickCount + TBJ_PARAM_KAIMO_TD_DELAY + 20; //开模后延时拖带,45为下限时间
  1815. }
  1816. break;
  1817. case 7:
  1818. if (dwTickCount > TBJ_Auto_Delay)
  1819. {
  1820. if (GetTotal(TBJ_TOTAL_ADDR) >= TBJ_SET_TOTAL)
  1821. {
  1822. TBJ_SetAlarmCode(TBJ_TOTAL_ALARM);
  1823. TBJ_Auto_Step = 0;
  1824. TBJ_bRunning = 0;
  1825. TBJ_bSingleOne=0;
  1826. TBJ_HandWorking=0;
  1827. }
  1828. else if(TBJ_bSingleOne||TBJ_HandWorking)
  1829. {
  1830. TBJ_bSingleOne=0;
  1831. TBJ_HandWorking=0;
  1832. TBJ_Auto_Step = 0;
  1833. TBJ_bRunning = 0;
  1834. }
  1835. else
  1836. {
  1837. TBJ_Auto_Step = 2;
  1838. if(TBJ_WAIT_LOCAL>0)
  1839. {
  1840. TBJ_LENTH=TBJ_WAIT_LOCAL-dwYRealPos;
  1841. AxisMovePosAccDec(Y_AXIS, TBJ_PARAM_Y_HIGH_SPEED, TBJ_LENTH, 1000,
  1842. 1000, 20, 20, 10);
  1843. }
  1844. }
  1845. TEST1++;
  1846. if (TEST1 > 10)
  1847. TEST1 = 10;
  1848. }
  1849. break;
  1850. }
  1851. }
  1852. #endif
  1853. }
  1854. #endif