FIMSSEQUENCE.TcPOU 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
  3. <POU Name="FIMSSEQUENCE" Id="{ccd53ff0-004a-4e41-8b19-d824f47f7c88}" SpecialFunc="None">
  4. <Declaration><![CDATA[FUNCTION_BLOCK FIMSSEQUENCE
  5. VAR_INPUT
  6. Enable :BOOL;
  7. StopCmd_In_b :BOOL;
  8. LoadCmd_In_b :BOOL;
  9. UnloadCmd_In_b :BOOL;
  10. Open_Close_Cmd_In_b :BOOL;
  11. Open_Close_Count :BOOL;
  12. PodSeqAlmRst_In_b :BOOL;
  13. N2PurgeBypassEN_In_b :BOOL;
  14. FoupInPodPos_In_b :BOOL;
  15. FoupInRetractPos_In_b :BOOL;
  16. FoupInExtendPos_In_b :BOOL;
  17. FoupInSealPos_In_b :BOOL;
  18. FoupInRlsPos_In_b :BOOL;
  19. FoupLatchOnPos_In_b :BOOL;
  20. FoupLatchOffPos_In_b :BOOL;
  21. PodVacStatus_In_b :BOOL;
  22. PodVacATM_In_b :BOOL;
  23. O2Check_EN :BOOL;
  24. O2Check_Done_In_b :BOOL;
  25. PodDrXaxisAvoidInUpPos_In_b :BOOL;
  26. PodDrXaxisAvoidInDnPos_In_b :BOOL;
  27. PodDrYClsPos_In_b :BOOL;
  28. PodDrYOpPos_In_b :BOOL;
  29. N2PurgeValOpPos_In_b :BOOL;
  30. N2PurgeValClPos_In_b :BOOL;
  31. END_VAR
  32. VAR_OUTPUT
  33. EnableOutput :BOOL;
  34. LoadOTAlm_Out_b :BOOL;
  35. UnloadOTAlm_Out_b :BOOL;
  36. PodLoadDone_Out_b :BOOL;
  37. PodUnloadDone_Out_b :BOOL;
  38. PodRunning_Out_b :BOOL;
  39. PodRetractVal_Out_b :BOOL;
  40. PodExtendVal_Out_b :BOOL;
  41. PodVacOpVal_Out_b :BOOL;
  42. PodVacClsVal_Out_b :BOOL;
  43. PodFoupLatchOffVal_Out_b :BOOL;
  44. PodFoupLatchonVal_Out_b :BOOL;
  45. PodSealVal_Out_b :BOOL;
  46. PodRealseVal_Out_b :BOOL;
  47. N2PurgePodOpVal_Out_b :BOOL;
  48. N2PurgePodClsVal_Out_b :BOOL;
  49. O2CheckVal_Out_b :BOOL;
  50. PodDrXaxisAvoidOpVal_Out_b :BOOL;
  51. PodDrXaxisAvoidClsVal_Out_b :BOOL;
  52. PodDrYOpVal_Out_b :BOOL;
  53. PodDrYClsVal_Out_b :BOOL;
  54. END_VAR
  55. VAR
  56. UnloadStage : INT ;
  57. FIMSUnloadTrig : R_TRIG ;
  58. UnloadOTAlm : TON ;
  59. LoadStage : INT ;
  60. FIMSLoadTrig : R_TRIG ;
  61. LoadOTAlm : TON ;
  62. FIMSTrigDleyOn : TON ;
  63. FIMSUnloadDlyOn : TON ;
  64. PodLoadRunning_b : BOOL ;
  65. PodUnloadRunning_b : BOOL ;
  66. loadottime : TIME ;
  67. unloadottime : TIME ;
  68. KeyStatusTON : TON ;
  69. KeyStatusTON1 : TON ;
  70. UnloadVacOffDly : TON ;
  71. UNLOAD_STEP_DELAY_EN : BOOL ;
  72. UNLOAD_STEP_NEXT : INT ;
  73. UNLOAD_STEP_DELAY : TON ;
  74. UNLOAD_STEP_DELAY_TIME : TIME ;
  75. LOAD_STEP_DELAY_EN : BOOL ;
  76. LOAD_STEP_NEXT : INT ;
  77. LOAD_STEP_DELAY : TON ;
  78. LOAD_STEP_DELAY_TIME : TIME ;
  79. END_VAR
  80. ]]></Declaration>
  81. <Implementation>
  82. <ST><![CDATA[ IF NOT LoadCmd_In_b OR ( LoadOTAlm_Out_b AND PodSeqAlmRst_In_b ) OR StopCmd_In_b THEN
  83. LoadOTAlm( In:= FALSE , PT:= T#60s , Q=> LoadOTAlm_Out_b , ET=>loadottime );
  84. LoadStage := 0 ;
  85. PodLoadRunning_b := FALSE ;
  86. LOAD_STEP_DELAY_EN:=FALSE;
  87. LOAD_STEP_NEXT:=0;
  88. END_IF ;
  89. IF NOT UnloadCmd_In_b OR ( UnloadOTAlm_Out_b AND PodSeqAlmRst_In_b ) OR StopCmd_In_b THEN
  90. UnloadOTAlm( In:= FALSE , PT:= T#60s , Q=> UnloadOTAlm_Out_b , ET=>unloadottime );
  91. UnloadStage := 0 ;
  92. PodUnloadRunning_b := FALSE ;
  93. UNLOAD_STEP_DELAY_EN:=FALSE;
  94. UNLOAD_STEP_NEXT:=0;
  95. END_IF;
  96. IF Enable THEN
  97. //Alarm
  98. IF LoadCmd_In_b AND NOT StopCmd_In_b AND LoadStage>0 THEN
  99. LoadOTAlm( In:= TRUE , PT:= T#60s , Q=> LoadOTAlm_Out_b , ET=>loadottime );
  100. (*ELSIF NOT LoadCmd_In_b OR ( LoadOTAlm_Out_b AND PodSeqAlmRst_In_b ) OR StopCmd_In_b THEN
  101. LoadOTAlm( In:= FALSE , PT:= T#60s , Q=> LoadOTAlm_Out_b , ET=>loadottime );
  102. LoadStage := 0 ;
  103. PodLoadRunning_b := FALSE ;*)
  104. END_IF;
  105. IF UnloadCmd_In_b AND NOT StopCmd_In_b AND UnloadStage>0 THEN
  106. UnloadOTAlm( In:= TRUE , PT:= T#60s , Q=> UnloadOTAlm_Out_b , ET=>unloadottime );
  107. (*ELSIF NOT UnloadCmd_In_b OR ( UnloadOTAlm_Out_b AND PodSeqAlmRst_In_b ) OR StopCmd_In_b THEN
  108. UnloadOTAlm( In:= FALSE , PT:= T#60s , Q=> UnloadOTAlm_Out_b , ET=>unloadottime );
  109. UnloadStage := 0 ;
  110. PodUnloadRunning_b := FALSE ;*)
  111. END_IF;
  112. //Unload
  113. FIMSUnloadDlyOn.In := UnloadCmd_In_b ;
  114. FIMSUnloadDlyOn((*In:=,*) PT:=T#100MS(*, Q=>, ET=>*));
  115. UNLOAD_STEP_DELAY(In:=UNLOAD_STEP_DELAY_EN,PT:=UNLOAD_STEP_DELAY_TIME);
  116. IF UnloadCmd_In_b THEN
  117. FIMSUnloadTrig( Clk:= FIMSUnloadDlyOn.Q );
  118. IF FIMSUnloadTrig.Q THEN
  119. UnloadStage := 0 ;
  120. END_IF;
  121. CASE UnloadStage OF
  122. 0://门板Y轴归位
  123. PodLoadDone_Out_b := FALSE ;
  124. PodUnloadDone_Out_b := FALSE ;
  125. PodUnloadRunning_b := TRUE ;
  126. PodDrYClsVal_Out_b := TRUE ;
  127. PodDrYOpVal_Out_b := FALSE ;
  128. (*UnloadOTAlm( In:= PodDrYClsVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
  129. IF PodDrYClsVal_Out_b AND PodDrYClsPos_In_b AND NOT PodDrYOpPos_In_b AND NOT UnloadOTAlm_Out_b
  130. THEN
  131. UNLOAD_STEP_DELAY_EN:=TRUE;
  132. UNLOAD_STEP_NEXT:=10;
  133. UNLOAD_STEP_DELAY_TIME:=T#200ms;
  134. UnloadStage := 200 ;
  135. END_IF;
  136. 10://Pod 门板移动 seal
  137. PodSealVal_Out_b := TRUE ;
  138. PodRealseVal_Out_b := FALSE ;
  139. (*UnloadOTAlm( In:= PodSealVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
  140. IF PodSealVal_Out_b AND FoupInSealPos_In_b AND NOT FoupInRlsPos_In_b AND NOT UnloadOTAlm_Out_b THEN
  141. N2PurgePodClsVal_Out_b := TRUE ;
  142. UNLOAD_STEP_DELAY_EN:=TRUE;
  143. UNLOAD_STEP_NEXT:=30;
  144. UNLOAD_STEP_DELAY_TIME:=T#200ms;
  145. UnloadStage := 200 ;
  146. END_IF;
  147. (*20://pod门板x轴避让归位
  148. PodDrXaxisAvoidClsVal_Out_b :=TRUE ;
  149. PodDrXaxisAvoidOpVal_Out_b := FALSE ;
  150. [*UnloadOTAlm( In:= PodDrXaxisAvoidClsVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*]
  151. IF PodDrXaxisAvoidClsVal_Out_b AND PodDrXaxisAvoidInDnPos_In_b AND NOT PodDrXaxisAvoidInUpPos_In_b AND NOT UnloadOTAlm_Out_b THEN
  152. UnloadStage := 30;
  153. END_IF;*)
  154. 30://foup latch on
  155. PodFoupLatchonVal_Out_b := TRUE ;
  156. PodFoupLatchoffVal_Out_b := FALSE ;
  157. KeyStatusTON(In:=PodFoupLatchonVal_Out_b, PT:=T#1s(*, Q=>, ET=>*));
  158. (*UnloadOTAlm( In:= PodFoupLatchonVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
  159. IF PodFoupLatchonVal_Out_b AND FoupLatchOnPos_In_b AND NOT FoupLatchOffPos_In_b AND NOT UnloadOTAlm_Out_b AND KeyStatusTON.Q THEN
  160. UNLOAD_STEP_DELAY_EN:=TRUE;
  161. UNLOAD_STEP_NEXT:=40;
  162. UNLOAD_STEP_DELAY_TIME:=T#200ms;
  163. UnloadStage := 200 ;
  164. END_IF;
  165. 40://Vacuum off
  166. PodVacClsVal_Out_b := TRUE ;
  167. PodVacOpVal_Out_b := FALSE ;
  168. UnloadVacOffDly(In:=PodVacClsVal_Out_b, PT:=T#1.5s(*, Q=>, ET=>*));
  169. IF PodVacATM_In_b OR UnloadVacOffDly.Q(*PodVacClsVal_Out_b AND PodVacStatus_In_b*) THEN
  170. UNLOAD_STEP_DELAY_EN:=TRUE;
  171. UNLOAD_STEP_NEXT:=50;
  172. UNLOAD_STEP_DELAY_TIME:=T#200ms;
  173. UnloadStage := 200 ;
  174. END_IF;
  175. 50:// retract
  176. KeyStatusTON(In:=FALSE, PT:=T#1s(*, Q=>, ET=>*));
  177. PodRetractVal_Out_b := TRUE ;
  178. PodExtendVal_Out_b := FALSE ;
  179. (*UnloadOTAlm( In:= PodRetractVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
  180. IF PodRetractVal_Out_b AND FoupInRetractPos_In_b AND NOT FoupInExtendPos_In_b AND NOT UnloadOTAlm_Out_b (*AND FoupInPodPos_In_b*)THEN
  181. UNLOAD_STEP_DELAY_EN:=TRUE;
  182. UNLOAD_STEP_NEXT:=100;
  183. UNLOAD_STEP_DELAY_TIME:=T#200ms;
  184. UnloadStage := 200 ;
  185. END_IF;
  186. 100://Unload done
  187. UnloadOTAlm( In:= FALSE , PT:= T#60s , Q=> UnloadOTAlm_Out_b (*, ET=>*));
  188. PodUnloadRunning_b := FALSE ;
  189. PodUnloadDone_Out_b := TRUE ;
  190. UNLOAD_STEP_DELAY_EN:=FALSE;
  191. 200://each step delay time
  192. IF UNLOAD_STEP_DELAY.Q
  193. THEN
  194. UNLOAD_STEP_DELAY_EN:=FALSE;
  195. UnloadStage := UNLOAD_STEP_NEXT ;
  196. END_IF;
  197. END_CASE;
  198. END_IF;
  199. //Load
  200. (*FIMSTrigDleyOn.In := LoadCmd_In_b ;*)
  201. FIMSTrigDleyOn.In := LoadCmd_In_b ;
  202. FIMSTrigDleyOn((*In:= LoadCmd_In_b ,*) PT:= T#100MS (*, Q=>, ET=>*));
  203. LOAD_STEP_DELAY(In:=LOAD_STEP_DELAY_EN,PT:=LOAD_STEP_DELAY_TIME);
  204. IF LoadCmd_In_b THEN
  205. FIMSLoadTrig( Clk:= FIMSTrigDleyOn.Q );
  206. IF FIMSLoadTrig.Q=TRUE THEN
  207. LoadStage:= 0;
  208. END_IF;
  209. CASE LoadStage OF
  210. 0://载台上foup有无检测
  211. PodUnloadDone_Out_b := FALSE ;
  212. PodLoadDone_Out_b := FALSE ;
  213. PodLoadRunning_b := TRUE ;
  214. (*LoadOTAlm.In := NOT PodSeqAlmRst_In_b ;*)
  215. (*LoadOTAlm([*In:=,*] PT:=T#60s, Q=>LoadOTAlm_Out_b[*, ET=>*]);*)
  216. IF FoupInPodPos_In_b AND NOT LoadOTAlm_Out_b THEN
  217. LoadOTAlm.In :=FALSE ;
  218. LOAD_STEP_DELAY_EN:=TRUE;
  219. LOAD_STEP_NEXT:=10;
  220. LOAD_STEP_DELAY_TIME:=T#200ms;
  221. loadStage := 200 ;
  222. END_IF;
  223. 10: //dock
  224. PodExtendVal_Out_b :=TRUE;
  225. PodRetractVal_Out_b:=FALSE;
  226. (*LoadOTAlm1(In:= PodExtendVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s, Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
  227. IF PodExtendVal_Out_b=TRUE AND FoupInExtendPos_In_b=TRUE AND NOT FoupInRetractPos_In_b=TRUE AND NOT LoadOTAlm_Out_b=TRUE THEN
  228. LOAD_STEP_DELAY_EN:=TRUE;
  229. LOAD_STEP_NEXT:=20;
  230. LOAD_STEP_DELAY_TIME:=T#200ms;
  231. loadStage := 200 ;
  232. END_IF;
  233. 20: //vacuum on
  234. PodVacOpVal_Out_b := TRUE ;
  235. PodVacClsVal_Out_b := FALSE ;
  236. IF PodVacOpVal_Out_b=TRUE (* AND PodVacStatus_In_b=TRUE *) THEN
  237. LOAD_STEP_DELAY_EN:=TRUE;
  238. LOAD_STEP_NEXT:=30;
  239. LOAD_STEP_DELAY_TIME:=T#200ms;
  240. loadStage := 200 ;
  241. END_IF;
  242. 30: //foup latch off
  243. PodFoupLatchoffVal_Out_b := TRUE ;
  244. PodFoupLatchonVal_Out_b := FALSE ;
  245. KeyStatusTON1(In:=PodFoupLatchoffVal_Out_b, PT:=T#1s(*, Q=>, ET=>*));
  246. (*LoadOTAlm2( In:= PodFoupLatchoffVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
  247. IF PodFoupLatchoffVal_Out_b AND FoupLatchOffPos_In_b AND NOT FoupLatchOnPos_In_b AND NOT LoadOTAlm_Out_b AND KeyStatusTON1.Q THEN
  248. LOAD_STEP_DELAY_EN:=TRUE;
  249. LOAD_STEP_NEXT:=31;
  250. LOAD_STEP_DELAY_TIME:=T#200ms;
  251. loadStage := 200 ;
  252. END_IF;
  253. 31://N2 Purge Judge
  254. IF N2PurgeBypassEN_In_b AND O2Check_EN
  255. THEN
  256. loadStage := 40 ;
  257. ELSE
  258. loadStage := 50;
  259. END_IF;
  260. 40://pod门板x轴避让归位 N2 SEAL
  261. PodDrXaxisAvoidClsVal_Out_b :=TRUE ;
  262. PodDrXaxisAvoidOpVal_Out_b := FALSE ;
  263. (*UnloadOTAlm( In:= PodDrXaxisAvoidClsVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
  264. IF PodDrXaxisAvoidClsVal_Out_b AND PodDrXaxisAvoidInDnPos_In_b AND NOT PodDrXaxisAvoidInUpPos_In_b AND NOT UnloadOTAlm_Out_b THEN
  265. LOAD_STEP_DELAY_EN:=TRUE;
  266. LOAD_STEP_NEXT:=41;
  267. LOAD_STEP_DELAY_TIME:=T#0ms;
  268. loadStage := 41 ;
  269. END_IF;
  270. 41: //Pod 门板移动 release
  271. PodRealseVal_Out_b := TRUE ;
  272. PodSealVal_Out_b := FALSE ;
  273. (*LoadOTAlm3( In:= PodRealseVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
  274. IF PodRealseVal_Out_b AND FoupInRlsPos_In_b AND NOT FoupInSealPos_In_b AND NOT LoadOTAlm_Out_b THEN
  275. N2PurgePodClsVal_Out_b := TRUE ;
  276. LOAD_STEP_DELAY_EN:=TRUE;
  277. LOAD_STEP_NEXT:=42;
  278. LOAD_STEP_DELAY_TIME:=T#0ms;
  279. loadStage := 42 ;
  280. END_IF;
  281. 42: //N2 Purge and O2 detect
  282. N2PurgePodOpVal_Out_b := TRUE ;
  283. N2PurgePodClsVal_Out_b :=FALSE ;
  284. O2CheckVal_Out_b := TRUE ;
  285. IF N2PurgePodOpVal_Out_b AND N2PurgeValOpPos_In_b AND NOT N2PurgeValClPos_In_b AND O2Check_Done_In_b AND NOT LoadOTAlm_Out_b THEN
  286. LOAD_STEP_DELAY_EN:=TRUE;
  287. LOAD_STEP_NEXT:=43;
  288. LOAD_STEP_DELAY_TIME:=T#0ms;
  289. loadStage := 43 ;
  290. END_IF;
  291. 43://Pod 门板移动 seal
  292. PodSealVal_Out_b := TRUE ;
  293. PodRealseVal_Out_b := FALSE ;
  294. (*UnloadOTAlm( In:= PodSealVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
  295. IF PodSealVal_Out_b AND FoupInSealPos_In_b AND NOT FoupInRlsPos_In_b AND NOT UnloadOTAlm_Out_b THEN
  296. N2PurgePodClsVal_Out_b := TRUE ;
  297. LOAD_STEP_DELAY_EN:=TRUE;
  298. LOAD_STEP_NEXT:=50;
  299. LOAD_STEP_DELAY_TIME:=T#200ms;
  300. loadStage := 200 ;
  301. END_IF;
  302. 50: // X轴避让
  303. PodDrXaxisAvoidOpVal_Out_b := TRUE ;
  304. PodDrXaxisAvoidClsVal_Out_b := FALSE ;
  305. (*LoadOTAlm4( In:= PodDrXaxisAvoidOpVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
  306. IF PodDrXaxisAvoidOpVal_Out_b AND PodDrXaxisAvoidInUpPos_In_b AND NOT PodDrXaxisAvoidInDnPos_In_b AND NOT LoadOTAlm_Out_b THEN
  307. LOAD_STEP_DELAY_EN:=TRUE;
  308. LOAD_STEP_NEXT:=51;
  309. LOAD_STEP_DELAY_TIME:=T#0ms;
  310. loadStage := 51 ;
  311. END_IF;
  312. 51: //Pod 门板移动 release
  313. PodRealseVal_Out_b := TRUE ;
  314. PodSealVal_Out_b := FALSE ;
  315. (*LoadOTAlm3( In:= PodRealseVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );*)
  316. IF PodRealseVal_Out_b AND FoupInRlsPos_In_b AND NOT FoupInSealPos_In_b AND NOT LoadOTAlm_Out_b THEN
  317. LOAD_STEP_DELAY_EN:=TRUE;
  318. LOAD_STEP_NEXT:=52;
  319. LOAD_STEP_DELAY_TIME:=T#200ms;
  320. loadStage := 200 ;
  321. END_IF;
  322. 52://X轴避让
  323. PodDrXaxisAvoidOpVal_Out_b := TRUE ;
  324. PodDrXaxisAvoidClsVal_Out_b := FALSE ;
  325. //LoadOTAlm4( In:= PodDrXaxisAvoidOpVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> LoadOTAlm_Out_b [*, ET=>*] );
  326. IF PodDrXaxisAvoidOpVal_Out_b AND PodDrXaxisAvoidInUpPos_In_b AND NOT PodDrXaxisAvoidInDnPos_In_b AND NOT LoadOTAlm_Out_b THEN
  327. LOAD_STEP_DELAY_EN:=TRUE;
  328. LOAD_STEP_NEXT:=60;
  329. LOAD_STEP_DELAY_TIME:=T#200ms;
  330. loadStage := 200 ;
  331. END_IF;
  332. (*53://vacuum off
  333. KeyStatusTON(In:=FALSE, PT:=T#1s[*, Q=>, ET=>*]);
  334. PodVacClsVal_Out_b := TRUE ;
  335. PodVacOpVal_Out_b := FALSE ;
  336. IF PodVacClsVal_Out_b AND PodVacStatus_In_b THEN
  337. LoadStage := 60 ;
  338. END_IF; *)
  339. 60://Y轴移动
  340. PodDrYOpVal_Out_b := TRUE ;
  341. PodDrYClsVal_Out_b := FALSE ;
  342. (*LoadOTAlm5( In:= PodDrYOpVal_Out_b AND NOT PodSeqAlmRst_In_b , PT:= T#60s , Q=> UnloadOTAlm_Out_b [*, ET=>*] );*)
  343. IF PodDrYOpVal_Out_b AND PodDrYOpPos_In_b AND NOT PodDrYClsPos_In_b AND NOT UnloadOTAlm_Out_b THEN
  344. LOAD_STEP_DELAY_EN:=TRUE;
  345. LOAD_STEP_NEXT:=100;
  346. LOAD_STEP_DELAY_TIME:=T#0ms;
  347. loadStage := 100 ;
  348. END_IF;
  349. 100://Load done
  350. LoadOTAlm( In:= FALSE , PT:= T#60s , Q=> LoadOTAlm_Out_b (*, ET=>*));
  351. PodLoadRunning_b := FALSE ;
  352. PodLoadDone_Out_b := TRUE ;
  353. 200://each step delay time
  354. IF LOAD_STEP_DELAY.Q
  355. THEN
  356. LOAD_STEP_DELAY_EN:=FALSE;
  357. loadStage := LOAD_STEP_NEXT ;
  358. END_IF;
  359. END_CASE;
  360. END_IF;
  361. PodRunning_Out_b := PodLoadRunning_b OR PodUnloadRunning_b ;
  362. END_IF;]]></ST>
  363. </Implementation>
  364. <LineIds Name="FIMSSEQUENCE">
  365. <LineId Id="17" Count="36" />
  366. <LineId Id="412" Count="0" />
  367. <LineId Id="54" Count="78" />
  368. <LineId Id="134" Count="11" />
  369. <LineId Id="411" Count="0" />
  370. <LineId Id="146" Count="154" />
  371. <LineId Id="302" Count="29" />
  372. <LineId Id="9" Count="0" />
  373. </LineIds>
  374. </POU>
  375. </TcPlcObject>