PROCESS.TcPOU 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
  3. <POU Name="PROCESS" Id="{4e5b59a3-f96c-4b90-972f-6e352fb86290}" SpecialFunc="None">
  4. <Declaration><![CDATA[FUNCTION_BLOCK PROCESS
  5. VAR_INPUT
  6. ENABLE:BOOL;
  7. NEXTSTEP_EN:BOOL;
  8. Alarm_RST:BOOL;
  9. PMStableTime:INT;
  10. STEP_DATA:RecipeEachStep;
  11. END_VAR
  12. VAR_OUTPUT
  13. //APC
  14. APC_PRESSURE:REAL;
  15. APC_POSITION:REAL;
  16. APC_CONTROL_MODE:SINT;
  17. //MFC
  18. MFC1_SV:REAL;
  19. MFC2_SV:REAL;
  20. MFC3_SV:REAL;
  21. MFC4_SV:REAL;
  22. MFC5_SV:REAL;
  23. MFC6_SV:REAL;
  24. MFC7_SV:REAL;
  25. MFC8_SV:REAL;
  26. MFC9_SV:REAL;
  27. //HEATER
  28. WALL_TEMP:REAL;
  29. LID_TEMP:REAL;
  30. STAGE_EDGE_TEMP:INT;
  31. STAGE_CENTER_TEMP:INT;
  32. //STEP
  33. STEP_TIME_OUT:BOOL;
  34. STEP_ERR:BOOL;
  35. NEXTSTEP:BOOL;
  36. //Tolerance
  37. PRESSURE_WARNING:BOOL;
  38. PRESSURE_ALARM:BOOL;
  39. MFC1_WARNING:BOOL;
  40. MFC1_Alarm:BOOL;
  41. MFC2_WARNING:BOOL;
  42. MFC2_Alarm:BOOL;
  43. MFC3_WARNING:BOOL;
  44. MFC3_Alarm:BOOL;
  45. MFC4_WARNING:BOOL;
  46. MFC4_Alarm:BOOL;
  47. MFC5_WARNING:BOOL;
  48. MFC5_Alarm:BOOL;
  49. MFC6_WARNING:BOOL;
  50. MFC6_Alarm:BOOL;
  51. MFC7_WARNING:BOOL;
  52. MFC7_Alarm:BOOL;
  53. MFC8_WARNING:BOOL;
  54. MFC8_Alarm:BOOL;
  55. MFC9_WARNING:BOOL;
  56. MFC9_Alarm:BOOL;
  57. WALL_TEMP_WARNING:BOOL;
  58. WALL_TEMP_Alarm:BOOL;
  59. LID_TEMP_WARNING:BOOL;
  60. LID_TEMP_Alarm:BOOL;
  61. STAGE_EDGE_TEMP_WARNING:BOOL;
  62. STAGE_EDGE_TEMP_Alarm:BOOL;
  63. STAGE_CENTER_TEMP_WARNING: BOOL;
  64. STAGE_CENTER_TEMP_ALARM: BOOL;
  65. END_VAR
  66. VAR
  67. STEP_TIME:TON;
  68. STEP_TIME_DONE:BOOL;
  69. COMPLETION:INT;
  70. //Tolerance
  71. TOL_PRESSURE_PERCENT:Tolerance;
  72. TOL_PRESSURE_VALUE_EN:BOOL;
  73. TOL_PRESSURE_PERCENT_EN:BOOL;
  74. TOL_MFC1_PERCENT:Tolerance;
  75. TOL_MFC2_PERCENT:Tolerance;
  76. TOL_MFC3_PERCENT:Tolerance;
  77. //TOL_MFC4_PERCENT:Tolerance;
  78. TOL_MFC5_PERCENT:Tolerance;
  79. TOL_MFC6_PERCENT:Tolerance;
  80. TOL_MFC7_PERCENT:Tolerance;
  81. //TOL_MFC8_PERCENT:Tolerance;
  82. //TOL_MFC9_PERCENT:Tolerance;
  83. TOL_MFC_VALUE_EN:BOOL;
  84. TOL_MFC_PERCENT_EN:BOOL;
  85. TOL_WALL_TEMP_PERCENT:Tolerance;
  86. TOL_LID_TEMP_PERCENT:Tolerance;
  87. TOL_STAGE_EDGE_TEMP_PERCENT:Tolerance;
  88. TOL_STAGE_CENTER_TEMP_PERCENT:Tolerance;
  89. TOL_HEATER_VALUE_EN:BOOL;
  90. TOL_HEATER_PERCENT_EN:BOOL;
  91. TON_STEP_TIME:TON;
  92. TON_STEP_TIME_EN:BOOL;
  93. WARNING_OCC:BOOL;
  94. ALARM_OCC:BOOL;
  95. i:INT;
  96. STABLE_DONE:BOOL;
  97. EN_TRIG:R_TRIG;
  98. TON_STABLE_PROCESS:TON;
  99. CHAMBER_TEMP_MIN_VALUE:REAL;
  100. STAGE_EDGE_TEMP_MIN_VALUE:REAL;
  101. STAGE_CENTER_TEMP_MIN_VALUE:REAL;
  102. END_VAR
  103. ]]></Declaration>
  104. <Implementation>
  105. <ST><![CDATA[//NOT ENABLE
  106. IF NOT ENABLE
  107. THEN
  108. i:=0;
  109. STEP_ERR:=FALSE;
  110. STEP_TIME_OUT:=FALSE;
  111. NEXTSTEP:=FALSE;
  112. TON_STEP_TIME_EN:=FALSE;
  113. END_IF;
  114. //初始化
  115. EN_TRIG(CLK:= ENABLE, Q=> );
  116. IF EN_TRIG.Q OR NEXTSTEP_EN
  117. THEN
  118. i:=1;
  119. STEP_ERR:=FALSE;
  120. STEP_TIME_OUT:=FALSE;
  121. NEXTSTEP:=FALSE;
  122. TON_STEP_TIME_EN:=TRUE;
  123. END_IF;
  124. //STEP开始时赋值
  125. IF ENABLE AND NOT STEP_TIME_DONE
  126. THEN
  127. //APC
  128. IF STEP_DATA.LstUnit.Pressure.PressureUnitMode = 'Pressure'
  129. THEN
  130. APC_PRESSURE:=STEP_DATA.LstUnit.Pressure.StartValue;
  131. APC_CONTROL_MODE:=5;
  132. ELSIF
  133. STEP_DATA.LstUnit.Pressure.PressureUnitMode = 'Position'
  134. THEN
  135. APC_POSITION:=STEP_DATA.LstUnit.Pressure.StartValue;
  136. APC_CONTROL_MODE:=2;
  137. END_IF
  138. IF STEP_DATA.LstUnit.Pressure.ToleranceMode = 'Value'
  139. THEN
  140. TOL_PRESSURE_VALUE_EN:=TRUE;
  141. TOL_PRESSURE_PERCENT_EN:=FALSE;
  142. ELSIF
  143. STEP_DATA.LstUnit.Pressure.ToleranceMode = 'Percent'
  144. THEN
  145. TOL_PRESSURE_VALUE_EN:=FALSE;
  146. TOL_PRESSURE_PERCENT_EN:=TRUE;
  147. END_IF
  148. //MFC
  149. IF STEP_DATA.LstUnit.GAS.ToleranceMode = 'Value'
  150. THEN
  151. TOL_MFC_VALUE_EN:=TRUE;
  152. TOL_MFC_PERCENT_EN:=FALSE;
  153. ELSIF
  154. STEP_DATA.LstUnit.GAS.ToleranceMode = 'Percent'
  155. THEN
  156. TOL_MFC_VALUE_EN:=FALSE;
  157. TOL_MFC_PERCENT_EN:=TRUE;
  158. END_IF
  159. MFC1_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas1);
  160. MFC2_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas2);
  161. MFC3_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas3);
  162. MFC4_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas4);
  163. MFC5_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas5);
  164. MFC6_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas6);
  165. MFC7_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas7);
  166. MFC8_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas8);
  167. MFC9_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas9);
  168. //HEATER
  169. IF STEP_DATA.LstUnit.Heater.ToleranceMode = 'Value'
  170. THEN
  171. TOL_HEATER_VALUE_EN:=TRUE;
  172. TOL_HEATER_PERCENT_EN:=FALSE;
  173. ELSIF
  174. STEP_DATA.LstUnit.Heater.ToleranceMode = 'Percent'
  175. THEN
  176. TOL_HEATER_VALUE_EN:=FALSE;
  177. TOL_HEATER_PERCENT_EN:=TRUE;
  178. END_IF
  179. WALL_TEMP:=INT_TO_REAL(STEP_DATA.LstUnit.Heater.WallTemp);
  180. LID_TEMP:=INT_TO_REAL(STEP_DATA.LstUnit.Heater.LidTemp);
  181. STAGE_EDGE_TEMP:= STEP_DATA.LstUnit.Heater.StageEdgeTemp*10;
  182. STAGE_CENTER_TEMP:= STEP_DATA.LstUnit.Heater.StageCenterTemp*10;
  183. END_IF;
  184. // Lifter
  185. GV.NDO.AV110 := STEP_DATA.Lifter_Up AND NOT STEP_DATA.Lifter_Down;
  186. GV.NDO.AV109 := FALSE;
  187. //取最小值
  188. IF
  189. GV.AI.Chamber_Temp1<=GV.AI.Chamber_Temp2 AND GV.AI.Chamber_Temp1<=GV.AI.Chamber_Temp3
  190. THEN
  191. CHAMBER_TEMP_MIN_VALUE:=GV.AI.Chamber_Temp1;
  192. ELSIF
  193. GV.AI.Chamber_Temp2<=GV.AI.Chamber_Temp1 AND GV.AI.Chamber_Temp2<=GV.AI.Chamber_Temp3
  194. THEN
  195. CHAMBER_TEMP_MIN_VALUE:=GV.AI.Chamber_Temp2;
  196. ELSIF
  197. GV.AI.Chamber_Temp3<=GV.AI.Chamber_Temp2 AND GV.AI.Chamber_Temp3<=GV.AI.Chamber_Temp1
  198. THEN
  199. CHAMBER_TEMP_MIN_VALUE:=GV.AI.Chamber_Temp3;
  200. END_IF
  201. IF
  202. GV.AI.Stage_Temp1<=GV.AI.Stage_Temp3
  203. THEN
  204. STAGE_EDGE_TEMP_MIN_VALUE:=GV.AI.Stage_Temp1;
  205. ELSE
  206. STAGE_EDGE_TEMP_MIN_VALUE:=GV.AI.Stage_Temp3;
  207. END_IF
  208. IF
  209. GV.AI.Stage_Temp2<=GV.AI.Stage_Temp4
  210. THEN
  211. STAGE_CENTER_TEMP_MIN_VALUE:=GV.AI.Stage_Temp2;
  212. ELSE
  213. STAGE_CENTER_TEMP_MIN_VALUE:=GV.AI.Stage_Temp4;
  214. END_IF
  215. //Tolerance
  216. TOL_PRESSURE_PERCENT(
  217. ENABLE:= TOL_PRESSURE_PERCENT.SV>0 AND ENABLE,
  218. STEP_TYPE:= STEP_DATA.Completion,
  219. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  220. TOL_V:= TOL_PRESSURE_VALUE_EN,
  221. TOL_P:= TOL_PRESSURE_PERCENT_EN,
  222. SV:= STEP_DATA.LstUnit.Pressure.StartValue,
  223. PV:= GV.AI. APC.ACTUAL_PRESSURE,
  224. WARNING_RANGE:= STEP_DATA.LstUnit.Pressure.StartValueWarningRange,
  225. ALARM_RANGE:= STEP_DATA.LstUnit.Pressure.StartValueAlarmRange,
  226. DELAY_TIME:=STEP_DATA.LstUnit.Pressure.ToleranceDelayTime,
  227. RST := Alarm_RST,
  228. STABLE_TIME := PMStableTime,
  229. STU_WARNING=> PRESSURE_WARNING,
  230. STU_ALARM=> PRESSURE_ALARM, );
  231. TOL_MFC1_PERCENT(
  232. ENABLE:= TOL_MFC1_PERCENT.SV>0 AND ENABLE,
  233. STEP_TYPE:= STEP_DATA.Completion,
  234. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  235. TOL_V:= TOL_MFC_VALUE_EN,
  236. TOL_P:= TOL_MFC_PERCENT_EN,
  237. SV:= STEP_DATA.LstUnit.GAS.Gas1,
  238. PV:= GV.AI.MFC1_Flow,
  239. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas1WarningRange,
  240. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas1AlarmRange,
  241. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  242. RST := Alarm_RST,
  243. STABLE_TIME := PMStableTime,
  244. STU_WARNING=> MFC1_WARNING,
  245. STU_ALARM=> MFC1_Alarm, );
  246. TOL_MFC2_PERCENT(
  247. ENABLE:= TOL_MFC2_PERCENT.SV>0 AND ENABLE,
  248. STEP_TYPE:= STEP_DATA.Completion,
  249. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  250. TOL_V:= TOL_MFC_VALUE_EN,
  251. TOL_P:= TOL_MFC_PERCENT_EN,
  252. SV:= STEP_DATA.LstUnit.GAS.Gas2,
  253. PV:= GV.AI.MFC2_Flow,
  254. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas2WarningRange,
  255. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas2AlarmRange,
  256. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  257. RST := Alarm_RST,
  258. STABLE_TIME := PMStableTime,
  259. STU_WARNING=> MFC2_WARNING,
  260. STU_ALARM=> MFC2_Alarm, );
  261. TOL_MFC3_PERCENT(
  262. ENABLE:= TOL_MFC3_PERCENT.SV>0 AND ENABLE,
  263. STEP_TYPE:= STEP_DATA.Completion,
  264. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  265. TOL_V:= TOL_MFC_VALUE_EN,
  266. TOL_P:= TOL_MFC_PERCENT_EN,
  267. SV:= STEP_DATA.LstUnit.GAS.Gas3,
  268. PV:= GV.AI.MFC3_Flow,
  269. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas3WarningRange,
  270. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas3AlarmRange,
  271. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  272. RST := Alarm_RST,
  273. STABLE_TIME := PMStableTime,
  274. STU_WARNING=> MFC3_WARNING,
  275. STU_ALARM=> MFC3_Alarm, );
  276. TOL_MFC5_PERCENT(
  277. ENABLE:= TOL_MFC5_PERCENT.SV>0 AND ENABLE,
  278. STEP_TYPE:= STEP_DATA.Completion,
  279. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  280. TOL_V:= TOL_MFC_VALUE_EN,
  281. TOL_P:= TOL_MFC_PERCENT_EN,
  282. SV:= STEP_DATA.LstUnit.GAS.Gas5,
  283. PV:= GV.AI.MFC5_Flow,
  284. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas5WarningRange,
  285. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas5AlarmRange,
  286. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  287. RST := Alarm_RST,
  288. STABLE_TIME := PMStableTime,
  289. STU_WARNING=> MFC5_WARNING,
  290. STU_ALARM=> MFC5_Alarm, );
  291. TOL_MFC6_PERCENT(
  292. ENABLE:= TOL_MFC6_PERCENT.SV>0 AND ENABLE,
  293. STEP_TYPE:= STEP_DATA.Completion,
  294. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  295. TOL_V:= TOL_MFC_VALUE_EN,
  296. TOL_P:= TOL_MFC_PERCENT_EN,
  297. SV:= STEP_DATA.LstUnit.GAS.Gas6,
  298. PV:= GV.AI.MFC6_Flow,
  299. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas6WarningRange,
  300. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas6AlarmRange,
  301. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  302. RST := Alarm_RST,
  303. STABLE_TIME := PMStableTime,
  304. STU_WARNING=> MFC6_WARNING,
  305. STU_ALARM=> MFC6_Alarm, );
  306. TOL_MFC7_PERCENT(
  307. ENABLE:= TOL_MFC7_PERCENT.SV>0 AND ENABLE,
  308. STEP_TYPE:= STEP_DATA.Completion,
  309. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  310. TOL_V:= TOL_MFC_VALUE_EN,
  311. TOL_P:= TOL_MFC_PERCENT_EN,
  312. SV:= STEP_DATA.LstUnit.GAS.Gas7,
  313. PV:= GV.AI.MFC7_Flow,
  314. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas7WarningRange,
  315. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas7AlarmRange,
  316. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  317. RST := Alarm_RST,
  318. STABLE_TIME := PMStableTime,
  319. STU_WARNING=> MFC7_WARNING,
  320. STU_ALARM=> MFC7_Alarm, );
  321. TOL_WALL_TEMP_PERCENT(
  322. ENABLE:= ENABLE,
  323. STEP_TYPE:= STEP_DATA.Completion,
  324. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  325. TOL_V:= TOL_HEATER_VALUE_EN,
  326. TOL_P:= TOL_HEATER_PERCENT_EN,
  327. SV:= STEP_DATA.LstUnit.Heater.WallTemp,
  328. PV:= CHAMBER_TEMP_MIN_VALUE,
  329. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.WallTempWaningRange,
  330. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.WallTempAlarmRange,
  331. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  332. RST := Alarm_RST,
  333. STABLE_TIME := PMStableTime,
  334. STU_WARNING=> WALL_TEMP_WARNING,
  335. STU_ALARM=> WALL_TEMP_Alarm, );
  336. TOL_LID_TEMP_PERCENT(
  337. ENABLE:= ENABLE,
  338. STEP_TYPE:= STEP_DATA.Completion,
  339. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  340. TOL_V:= TOL_HEATER_VALUE_EN,
  341. TOL_P:= TOL_HEATER_PERCENT_EN,
  342. SV:= STEP_DATA.LstUnit.Heater.LidTemp,
  343. PV:= GV.AI. Lid_Temp,
  344. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.LidTempWaningRange,
  345. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.LidTempAlarmRange,
  346. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  347. RST := Alarm_RST,
  348. STABLE_TIME := PMStableTime,
  349. STU_WARNING=> LID_TEMP_WARNING,
  350. STU_ALARM=> LID_TEMP_Alarm, );
  351. TOL_STAGE_EDGE_TEMP_PERCENT(
  352. ENABLE:= ENABLE,
  353. STEP_TYPE:= STEP_DATA.Completion,
  354. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  355. TOL_V:= TOL_HEATER_VALUE_EN,
  356. TOL_P:= TOL_HEATER_PERCENT_EN,
  357. SV:= STEP_DATA.LstUnit.Heater.StageEdgeTemp,
  358. PV:= STAGE_EDGE_TEMP_MIN_VALUE,
  359. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.StageEdgeTempWaningRange,
  360. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.StageEdgeTempAlarmRange,
  361. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  362. RST := Alarm_RST,
  363. STABLE_TIME := PMStableTime,
  364. STU_WARNING=> STAGE_EDGE_TEMP_WARNING,
  365. STU_ALARM=> STAGE_EDGE_TEMP_Alarm, );
  366. TOL_STAGE_CENTER_TEMP_PERCENT(
  367. ENABLE:= ENABLE,
  368. STEP_TYPE:= STEP_DATA.Completion,
  369. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  370. TOL_V:= TOL_HEATER_VALUE_EN,
  371. TOL_P:= TOL_HEATER_PERCENT_EN,
  372. SV:= STEP_DATA.LstUnit.Heater.StageCenterTemp,
  373. PV:= STAGE_CENTER_TEMP_MIN_VALUE,
  374. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.StageCenterTempWaningRange,
  375. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.StageCenterTempAlarmRange,
  376. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  377. RST := Alarm_RST,
  378. STABLE_TIME := PMStableTime,
  379. STU_WARNING=> STAGE_CENTER_TEMP_WARNING,
  380. STU_ALARM=> STAGE_CENTER_TEMP_ALARM, );
  381. //ALRAM & WARNING
  382. WARNING_OCC:= PRESSURE_WARNING
  383. OR MFC1_WARNING OR MFC2_WARNING OR MFC3_WARNING OR MFC4_WARNING OR MFC5_WARNING
  384. OR MFC6_WARNING OR MFC7_WARNING OR MFC8_WARNING OR MFC9_WARNING
  385. OR WALL_TEMP_WARNING OR LID_TEMP_WARNING OR STAGE_EDGE_TEMP_WARNING OR STAGE_CENTER_TEMP_WARNING;
  386. ALARM_OCC:= PRESSURE_ALARM
  387. OR MFC1_ALARM OR MFC2_ALARM OR MFC3_ALARM OR MFC4_ALARM OR MFC5_ALARM
  388. OR MFC6_ALARM OR MFC7_ALARM OR MFC8_ALARM OR MFC9_ALARM
  389. OR WALL_TEMP_ALARM OR LID_TEMP_ALARM OR STAGE_EDGE_TEMP_ALARM OR STAGE_CENTER_TEMP_ALARM;
  390. //STABLE DONE
  391. TON_STABLE_PROCESS(IN:= ENABLE, PT:= INT_TO_TIME(PMStableTime)*1000, Q=> , ET=> );
  392. STABLE_DONE:= TOL_PRESSURE_PERCENT.STABLE_DONE
  393. AND TOL_MFC1_PERCENT.STABLE_DONE
  394. AND TOL_MFC2_PERCENT.STABLE_DONE
  395. AND TOL_MFC3_PERCENT.STABLE_DONE
  396. AND TOL_MFC5_PERCENT.STABLE_DONE
  397. AND TOL_MFC6_PERCENT.STABLE_DONE
  398. AND TOL_MFC7_PERCENT.STABLE_DONE
  399. AND TOL_WALL_TEMP_PERCENT.STABLE_DONE
  400. AND TOL_LID_TEMP_PERCENT.STABLE_DONE
  401. AND TOL_STAGE_EDGE_TEMP_PERCENT.STABLE_DONE
  402. AND TOL_STAGE_CENTER_TEMP_PERCENT.STABLE_DONE
  403. AND TON_STABLE_PROCESS.Q;
  404. //STEP流程
  405. CASE i OF
  406. 1: IF STEP_DATA.Completion='Stable'
  407. THEN
  408. i:= 10;
  409. ELSIF STEP_DATA.Completion='Time'
  410. THEN
  411. i:= 20;
  412. END_IF
  413. //STABLE
  414. 10: IF STABLE_DONE
  415. THEN i:=100;
  416. END_IF;
  417. //TIME
  418. 20: IF ALARM_OCC
  419. THEN i:=50;
  420. ELSE i:=21;
  421. END_IF;
  422. 21: IF STEP_TIME_DONE
  423. THEN i:= 100;
  424. ELSE i:= 20;
  425. END_IF;
  426. //ALARM CONDITION
  427. 50: STEP_ERR:=TRUE;
  428. TON_STEP_TIME_EN:=FALSE;
  429. //TIME OUT
  430. 51: STEP_TIME_OUT:=TRUE;
  431. TON_STEP_TIME_EN:=FALSE;
  432. //FINISHED
  433. 100: NEXTSTEP:=TRUE;
  434. TON_STEP_TIME_EN:=FALSE;
  435. END_CASE;
  436. //PROCESS TIME
  437. STEP_TIME(IN:= TON_STEP_TIME_EN, PT:= INT_TO_TIME(STEP_DATA.StepTime+STEP_DATA.AddTime)*1000, Q=> STEP_TIME_DONE, ET=> );
  438. ]]></ST>
  439. </Implementation>
  440. <LineIds Name="PROCESS">
  441. <LineId Id="3674" Count="6" />
  442. <LineId Id="4359" Count="0" />
  443. <LineId Id="3681" Count="11" />
  444. <LineId Id="3696" Count="10" />
  445. <LineId Id="4163" Count="0" />
  446. <LineId Id="3707" Count="3" />
  447. <LineId Id="4151" Count="0" />
  448. <LineId Id="4153" Count="2" />
  449. <LineId Id="4161" Count="0" />
  450. <LineId Id="4157" Count="0" />
  451. <LineId Id="4164" Count="0" />
  452. <LineId Id="4158" Count="1" />
  453. <LineId Id="4162" Count="0" />
  454. <LineId Id="4152" Count="0" />
  455. <LineId Id="3711" Count="1" />
  456. <LineId Id="4167" Count="8" />
  457. <LineId Id="4165" Count="1" />
  458. <LineId Id="3713" Count="10" />
  459. <LineId Id="4177" Count="8" />
  460. <LineId Id="4176" Count="0" />
  461. <LineId Id="4186" Count="0" />
  462. <LineId Id="3724" Count="4" />
  463. <LineId Id="4571" Count="0" />
  464. <LineId Id="4368" Count="0" />
  465. <LineId Id="4572" Count="1" />
  466. <LineId Id="4369" Count="0" />
  467. <LineId Id="4380" Count="11" />
  468. <LineId Id="4370" Count="0" />
  469. <LineId Id="4392" Count="0" />
  470. <LineId Id="4408" Count="4" />
  471. <LineId Id="4419" Count="0" />
  472. <LineId Id="4407" Count="0" />
  473. <LineId Id="4420" Count="0" />
  474. <LineId Id="4422" Count="5" />
  475. <LineId Id="4421" Count="0" />
  476. <LineId Id="3729" Count="11" />
  477. <LineId Id="4149" Count="1" />
  478. <LineId Id="4429" Count="0" />
  479. <LineId Id="3741" Count="12" />
  480. <LineId Id="4199" Count="1" />
  481. <LineId Id="4430" Count="0" />
  482. <LineId Id="3754" Count="7" />
  483. <LineId Id="4189" Count="0" />
  484. <LineId Id="3763" Count="3" />
  485. <LineId Id="4201" Count="1" />
  486. <LineId Id="4431" Count="0" />
  487. <LineId Id="3767" Count="7" />
  488. <LineId Id="4190" Count="0" />
  489. <LineId Id="3776" Count="3" />
  490. <LineId Id="4203" Count="1" />
  491. <LineId Id="4432" Count="0" />
  492. <LineId Id="3780" Count="2" />
  493. <LineId Id="3795" Count="5" />
  494. <LineId Id="4192" Count="0" />
  495. <LineId Id="3802" Count="3" />
  496. <LineId Id="4208" Count="0" />
  497. <LineId Id="4207" Count="0" />
  498. <LineId Id="4433" Count="0" />
  499. <LineId Id="3806" Count="7" />
  500. <LineId Id="4193" Count="0" />
  501. <LineId Id="3815" Count="3" />
  502. <LineId Id="4209" Count="1" />
  503. <LineId Id="4434" Count="0" />
  504. <LineId Id="3819" Count="7" />
  505. <LineId Id="4194" Count="0" />
  506. <LineId Id="3828" Count="3" />
  507. <LineId Id="4211" Count="1" />
  508. <LineId Id="4435" Count="0" />
  509. <LineId Id="3832" Count="1" />
  510. <LineId Id="3860" Count="10" />
  511. <LineId Id="4213" Count="1" />
  512. <LineId Id="4436" Count="0" />
  513. <LineId Id="3871" Count="7" />
  514. <LineId Id="4195" Count="0" />
  515. <LineId Id="3880" Count="3" />
  516. <LineId Id="4215" Count="1" />
  517. <LineId Id="4437" Count="0" />
  518. <LineId Id="3884" Count="8" />
  519. <LineId Id="4196" Count="0" />
  520. <LineId Id="3894" Count="3" />
  521. <LineId Id="4217" Count="1" />
  522. <LineId Id="4438" Count="0" />
  523. <LineId Id="3898" Count="7" />
  524. <LineId Id="4197" Count="0" />
  525. <LineId Id="3907" Count="3" />
  526. <LineId Id="4220" Count="0" />
  527. <LineId Id="4219" Count="0" />
  528. <LineId Id="4439" Count="0" />
  529. <LineId Id="3911" Count="1" />
  530. <LineId Id="4133" Count="0" />
  531. <LineId Id="3913" Count="0" />
  532. <LineId Id="4134" Count="1" />
  533. <LineId Id="3914" Count="11" />
  534. <LineId Id="4366" Count="1" />
  535. <LineId Id="4345" Count="0" />
  536. <LineId Id="4347" Count="3" />
  537. <LineId Id="4352" Count="5" />
  538. <LineId Id="4364" Count="0" />
  539. <LineId Id="4363" Count="0" />
  540. <LineId Id="3927" Count="12" />
  541. <LineId Id="3941" Count="1" />
  542. <LineId Id="3953" Count="23" />
  543. <LineId Id="4358" Count="0" />
  544. <LineId Id="3977" Count="3" />
  545. <LineId Id="28" Count="0" />
  546. </LineIds>
  547. </POU>
  548. </TcPlcObject>