PROCESS.TcPOU 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572
  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="{8f0fc598-40b3-45a0-b6d6-82fe73246645}" 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_TEMP1,
  31. STAGE_TEMP2,
  32. STAGE_TEMP3,
  33. STAGE_TEMP4:REAL;
  34. //STEP
  35. STEP_TIME_OUT:BOOL;
  36. STEP_ERR:BOOL;
  37. NEXTSTEP:BOOL;
  38. //Tolerance
  39. PRESSURE_WARNING:BOOL;
  40. PRESSURE_ALARM:BOOL;
  41. MFC1_WARNING:BOOL;
  42. MFC1_Alarm:BOOL;
  43. MFC2_WARNING:BOOL;
  44. MFC2_Alarm:BOOL;
  45. MFC3_WARNING:BOOL;
  46. MFC3_Alarm:BOOL;
  47. MFC4_WARNING:BOOL;
  48. MFC4_Alarm:BOOL;
  49. MFC5_WARNING:BOOL;
  50. MFC5_Alarm:BOOL;
  51. MFC6_WARNING:BOOL;
  52. MFC6_Alarm:BOOL;
  53. MFC7_WARNING:BOOL;
  54. MFC7_Alarm:BOOL;
  55. MFC8_WARNING:BOOL;
  56. MFC8_Alarm:BOOL;
  57. MFC9_WARNING:BOOL;
  58. MFC9_Alarm:BOOL;
  59. WALL_TEMP_WARNING:BOOL;
  60. WALL_TEMP_Alarm:BOOL;
  61. LID_TEMP_WARNING:BOOL;
  62. LID_TEMP_Alarm:BOOL;
  63. STAGE_TEMP1_WARNING:BOOL;
  64. STAGE_TEMP1_Alarm:BOOL;
  65. STAGE_TEMP2_WARNING:BOOL;
  66. STAGE_TEMP2_Alarm:BOOL;
  67. STAGE_TEMP3_WARNING:BOOL;
  68. STAGE_TEMP3_Alarm:BOOL;
  69. STAGE_TEMP4_WARNING:BOOL;
  70. STAGE_TEMP4_Alarm:BOOL;
  71. END_VAR
  72. VAR
  73. STEP_TIME:TON;
  74. STEP_TIME_DONE:BOOL;
  75. COMPLETION:INT;
  76. //Tolerance
  77. TOL_PRESSURE_PERCENT:Tolerance;
  78. TOL_PRESSURE_VALUE_EN:BOOL;
  79. TOL_PRESSURE_PERCENT_EN:BOOL;
  80. TOL_MFC1:Tolerance;
  81. TOL_MFC2:Tolerance;
  82. TOL_MFC3:Tolerance;
  83. //TOL_MFC4:Tolerance;
  84. TOL_MFC5:Tolerance;
  85. TOL_MFC6:Tolerance;
  86. TOL_MFC7:Tolerance;
  87. //TOL_MFC8:Tolerance;
  88. //TOL_MFC9:Tolerance;
  89. TOL_MFC_VALUE_EN:BOOL;
  90. TOL_MFC_PERCENT_EN:BOOL;
  91. TOL_WALL_TEMP:Tolerance;
  92. TOL_LID_TEMP:Tolerance;
  93. TOL_STAGE_TEMP1:Tolerance;
  94. TOL_STAGE_TEMP2:Tolerance;
  95. TOL_STAGE_TEMP3:Tolerance;
  96. TOL_STAGE_TEMP4:Tolerance;
  97. TOL_HEATER_VALUE_EN:BOOL;
  98. TOL_HEATER_PERCENT_EN:BOOL;
  99. TON_STEP_TIME:TON;
  100. TON_STEP_TIME_EN:BOOL;
  101. WARNING_OCC:BOOL;
  102. ALARM_OCC:BOOL;
  103. i:INT;
  104. STABLE_DONE:BOOL;
  105. EN_TRIG:R_TRIG;
  106. TON_STABLE_PROCESS:TON;
  107. CHAMBER_TEMP_MIN_VALUE:REAL;
  108. STAGE_EDGE_TEMP_MIN_VALUE:REAL;
  109. STAGE_CENTER_TEMP_MIN_VALUE:REAL;
  110. END_VAR
  111. ]]></Declaration>
  112. <Implementation>
  113. <ST><![CDATA[//NOT ENABLE
  114. IF NOT ENABLE
  115. THEN
  116. i:=0;
  117. STEP_ERR:=FALSE;
  118. STEP_TIME_OUT:=FALSE;
  119. NEXTSTEP:=FALSE;
  120. TON_STEP_TIME_EN:=FALSE;
  121. END_IF;
  122. //初始化
  123. EN_TRIG(CLK:= ENABLE, Q=> );
  124. IF EN_TRIG.Q OR NEXTSTEP_EN
  125. THEN
  126. i:=1;
  127. STEP_ERR:=FALSE;
  128. STEP_TIME_OUT:=FALSE;
  129. NEXTSTEP:=FALSE;
  130. TON_STEP_TIME_EN:=TRUE;
  131. END_IF;
  132. //STEP开始时赋值
  133. IF ENABLE AND NOT STEP_TIME_DONE
  134. THEN
  135. //APC
  136. IF STEP_DATA.LstUnit.Pressure.PressureUnitMode = 'Pressure'
  137. THEN
  138. APC_PRESSURE:=STEP_DATA.LstUnit.Pressure.StartValue;
  139. APC_CONTROL_MODE:=5;
  140. ELSIF
  141. STEP_DATA.LstUnit.Pressure.PressureUnitMode = 'Position'
  142. THEN
  143. APC_POSITION:=STEP_DATA.LstUnit.Pressure.StartValue;
  144. APC_CONTROL_MODE:=2;
  145. END_IF
  146. IF STEP_DATA.LstUnit.Pressure.ToleranceMode = 'Value'
  147. THEN
  148. TOL_PRESSURE_VALUE_EN:=TRUE;
  149. TOL_PRESSURE_PERCENT_EN:=FALSE;
  150. ELSIF
  151. STEP_DATA.LstUnit.Pressure.ToleranceMode = 'Percent'
  152. THEN
  153. TOL_PRESSURE_VALUE_EN:=FALSE;
  154. TOL_PRESSURE_PERCENT_EN:=TRUE;
  155. END_IF
  156. //MFC
  157. IF STEP_DATA.LstUnit.GAS.ToleranceMode = 'Value'
  158. THEN
  159. TOL_MFC_VALUE_EN:=TRUE;
  160. TOL_MFC_PERCENT_EN:=FALSE;
  161. ELSIF
  162. STEP_DATA.LstUnit.GAS.ToleranceMode = 'Percent'
  163. THEN
  164. TOL_MFC_VALUE_EN:=FALSE;
  165. TOL_MFC_PERCENT_EN:=TRUE;
  166. END_IF
  167. MFC1_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas1);
  168. MFC2_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas2);
  169. MFC3_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas3);
  170. MFC4_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas4);
  171. MFC5_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas5);
  172. MFC6_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas6);
  173. MFC7_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas7);
  174. MFC8_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas8);
  175. MFC9_SV:=INT_TO_REAL(STEP_DATA.LstUnit.GAS.Gas9);
  176. //HEATER
  177. IF STEP_DATA.LstUnit.Heater.ToleranceMode = 'Value'
  178. THEN
  179. TOL_HEATER_VALUE_EN:=TRUE;
  180. TOL_HEATER_PERCENT_EN:=FALSE;
  181. ELSIF
  182. STEP_DATA.LstUnit.Heater.ToleranceMode = 'Percent'
  183. THEN
  184. TOL_HEATER_VALUE_EN:=FALSE;
  185. TOL_HEATER_PERCENT_EN:=TRUE;
  186. END_IF
  187. WALL_TEMP:=INT_TO_REAL(STEP_DATA.LstUnit.Heater.WallTemp);
  188. LID_TEMP:=INT_TO_REAL(STEP_DATA.LstUnit.Heater.LidTemp);
  189. STAGE_TEMP1:=INT_TO_REAL(STEP_DATA.LstUnit.Heater.StageTemp1);
  190. STAGE_TEMP2:=INT_TO_REAL(STEP_DATA.LstUnit.Heater.StageTemp2);
  191. STAGE_TEMP3:=INT_TO_REAL(STEP_DATA.LstUnit.Heater.StageTemp3);
  192. STAGE_TEMP4:=INT_TO_REAL(STEP_DATA.LstUnit.Heater.StageTemp4);
  193. END_IF;
  194. // Lifter
  195. GV.NDO.AV110 := STEP_DATA.Lifter_Up AND NOT STEP_DATA.Lifter_Down;
  196. GV.NDO.AV109 := FALSE;
  197. //取最小值
  198. IF
  199. GV.AI.Chamber_Temp1<=GV.AI.Chamber_Temp2 AND GV.AI.Chamber_Temp1<=GV.AI.Chamber_Temp3
  200. THEN
  201. CHAMBER_TEMP_MIN_VALUE:=GV.AI.Chamber_Temp1;
  202. ELSIF
  203. GV.AI.Chamber_Temp2<=GV.AI.Chamber_Temp1 AND GV.AI.Chamber_Temp2<=GV.AI.Chamber_Temp3
  204. THEN
  205. CHAMBER_TEMP_MIN_VALUE:=GV.AI.Chamber_Temp2;
  206. ELSIF
  207. GV.AI.Chamber_Temp3<=GV.AI.Chamber_Temp2 AND GV.AI.Chamber_Temp3<=GV.AI.Chamber_Temp1
  208. THEN
  209. CHAMBER_TEMP_MIN_VALUE:=GV.AI.Chamber_Temp3;
  210. END_IF
  211. //Tolerance
  212. TOL_PRESSURE_PERCENT(
  213. ENABLE:= TOL_PRESSURE_PERCENT.SV>0 AND ENABLE,
  214. STEP_TYPE:= STEP_DATA.Completion,
  215. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  216. TOL_V:= TOL_PRESSURE_VALUE_EN,
  217. TOL_P:= TOL_PRESSURE_PERCENT_EN,
  218. SV:= STEP_DATA.LstUnit.Pressure.StartValue,
  219. PV:= GV.AI. APC.ACTUAL_PRESSURE,
  220. WARNING_RANGE:= STEP_DATA.LstUnit.Pressure.StartValueWarningRange,
  221. ALARM_RANGE:= STEP_DATA.LstUnit.Pressure.StartValueAlarmRange,
  222. DELAY_TIME:=STEP_DATA.LstUnit.Pressure.ToleranceDelayTime,
  223. RST := Alarm_RST,
  224. STABLE_TIME := PMStableTime,
  225. STU_WARNING=> PRESSURE_WARNING,
  226. STU_ALARM=> PRESSURE_ALARM, );
  227. TOL_MFC1(
  228. ENABLE:= TOL_MFC1.SV>0 AND ENABLE,
  229. STEP_TYPE:= STEP_DATA.Completion,
  230. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  231. TOL_V:= TOL_MFC_VALUE_EN,
  232. TOL_P:= TOL_MFC_PERCENT_EN,
  233. SV:= STEP_DATA.LstUnit.GAS.Gas1,
  234. PV:= GV.AI.MFC1_Flow,
  235. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas1WarningRange,
  236. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas1AlarmRange,
  237. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  238. RST := Alarm_RST,
  239. STABLE_TIME := PMStableTime,
  240. STU_WARNING=> MFC1_WARNING,
  241. STU_ALARM=> MFC1_Alarm, );
  242. (*
  243. TOL_MFC2(
  244. ENABLE:= TOL_MFC2.SV>0 AND ENABLE,
  245. STEP_TYPE:= STEP_DATA.Completion,
  246. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  247. TOL_V:= TOL_MFC_VALUE_EN,
  248. TOL_P:= TOL_MFC_PERCENT_EN,
  249. SV:= STEP_DATA.LstUnit.GAS.Gas2,
  250. PV:= GV.AI.MFC2_Flow,
  251. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas2WarningRange,
  252. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas2AlarmRange,
  253. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  254. RST := Alarm_RST,
  255. STABLE_TIME := PMStableTime,
  256. STU_WARNING=> MFC2_WARNING,
  257. STU_ALARM=> MFC2_Alarm, );
  258. TOL_MFC3(
  259. ENABLE:= TOL_MFC3.SV>0 AND ENABLE,
  260. STEP_TYPE:= STEP_DATA.Completion,
  261. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  262. TOL_V:= TOL_MFC_VALUE_EN,
  263. TOL_P:= TOL_MFC_PERCENT_EN,
  264. SV:= STEP_DATA.LstUnit.GAS.Gas3,
  265. PV:= GV.AI.MFC3_Flow,
  266. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas3WarningRange,
  267. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas3AlarmRange,
  268. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  269. RST := Alarm_RST,
  270. STABLE_TIME := PMStableTime,
  271. STU_WARNING=> MFC3_WARNING,
  272. STU_ALARM=> MFC3_Alarm, );
  273. TOL_MFC5(
  274. ENABLE:= TOL_MFC5.SV>0 AND ENABLE,
  275. STEP_TYPE:= STEP_DATA.Completion,
  276. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  277. TOL_V:= TOL_MFC_VALUE_EN,
  278. TOL_P:= TOL_MFC_PERCENT_EN,
  279. SV:= STEP_DATA.LstUnit.GAS.Gas5,
  280. PV:= GV.AI.MFC5_Flow,
  281. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas5WarningRange,
  282. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas5AlarmRange,
  283. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  284. RST := Alarm_RST,
  285. STABLE_TIME := PMStableTime,
  286. STU_WARNING=> MFC5_WARNING,
  287. STU_ALARM=> MFC5_Alarm, );
  288. TOL_MFC6(
  289. ENABLE:= TOL_MFC6.SV>0 AND ENABLE,
  290. STEP_TYPE:= STEP_DATA.Completion,
  291. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  292. TOL_V:= TOL_MFC_VALUE_EN,
  293. TOL_P:= TOL_MFC_PERCENT_EN,
  294. SV:= STEP_DATA.LstUnit.GAS.Gas6,
  295. PV:= GV.AI.MFC6_Flow,
  296. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas6WarningRange,
  297. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas6AlarmRange,
  298. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  299. RST := Alarm_RST,
  300. STABLE_TIME := PMStableTime,
  301. STU_WARNING=> MFC6_WARNING,
  302. STU_ALARM=> MFC6_Alarm, );
  303. TOL_MFC7(
  304. ENABLE:= TOL_MFC7.SV>0 AND ENABLE,
  305. STEP_TYPE:= STEP_DATA.Completion,
  306. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  307. TOL_V:= TOL_MFC_VALUE_EN,
  308. TOL_P:= TOL_MFC_PERCENT_EN,
  309. SV:= STEP_DATA.LstUnit.GAS.Gas7,
  310. PV:= GV.AI.MFC7_Flow,
  311. WARNING_RANGE:= STEP_DATA.LstUnit.GAS.Gas7WarningRange,
  312. ALARM_RANGE:= STEP_DATA.LstUnit.GAS.Gas7AlarmRange,
  313. DELAY_TIME:=STEP_DATA.LstUnit.GAS.ToleranceDelayTime,
  314. RST := Alarm_RST,
  315. STABLE_TIME := PMStableTime,
  316. STU_WARNING=> MFC7_WARNING,
  317. STU_ALARM=> MFC7_Alarm, );
  318. *)
  319. TOL_WALL_TEMP(
  320. ENABLE:= ENABLE,
  321. STEP_TYPE:= STEP_DATA.Completion,
  322. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  323. TOL_V:= TOL_HEATER_VALUE_EN,
  324. TOL_P:= TOL_HEATER_PERCENT_EN,
  325. SV:= STEP_DATA.LstUnit.Heater.WallTemp,
  326. PV:= CHAMBER_TEMP_MIN_VALUE,
  327. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.WallTempWaningRange,
  328. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.WallTempAlarmRange,
  329. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  330. RST := Alarm_RST,
  331. STABLE_TIME := PMStableTime,
  332. STU_WARNING=> WALL_TEMP_WARNING,
  333. STU_ALARM=> WALL_TEMP_Alarm, );
  334. TOL_LID_TEMP(
  335. ENABLE:= ENABLE,
  336. STEP_TYPE:= STEP_DATA.Completion,
  337. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  338. TOL_V:= TOL_HEATER_VALUE_EN,
  339. TOL_P:= TOL_HEATER_PERCENT_EN,
  340. SV:= STEP_DATA.LstUnit.Heater.LidTemp,
  341. PV:= GV.AI. Lid_Temp,
  342. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.LidTempWaningRange,
  343. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.LidTempAlarmRange,
  344. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  345. RST := Alarm_RST,
  346. STABLE_TIME := PMStableTime,
  347. STU_WARNING=> LID_TEMP_WARNING,
  348. STU_ALARM=> LID_TEMP_Alarm, );
  349. TOL_STAGE_TEMP1(
  350. ENABLE:= ENABLE,
  351. STEP_TYPE:= STEP_DATA.Completion,
  352. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  353. TOL_V:= TOL_HEATER_VALUE_EN,
  354. TOL_P:= TOL_HEATER_PERCENT_EN,
  355. SV:= STEP_DATA.LstUnit.Heater.StageTemp1,
  356. PV:= GV.AI.Stage_Temp1,
  357. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.StageTemp1WaningRange,
  358. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.StageTemp1AlarmRange,
  359. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  360. RST := Alarm_RST,
  361. STABLE_TIME := PMStableTime,
  362. STU_WARNING=> STAGE_TEMP1_WARNING,
  363. STU_ALARM=> STAGE_TEMP1_Alarm, );
  364. TOL_STAGE_TEMP2(
  365. ENABLE:= ENABLE,
  366. STEP_TYPE:= STEP_DATA.Completion,
  367. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  368. TOL_V:= TOL_HEATER_VALUE_EN,
  369. TOL_P:= TOL_HEATER_PERCENT_EN,
  370. SV:= STEP_DATA.LstUnit.Heater.StageTemp2,
  371. PV:= GV.AI.Stage_Temp2,
  372. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.StageTemp2WaningRange,
  373. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.StageTemp2AlarmRange,
  374. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  375. RST := Alarm_RST,
  376. STABLE_TIME := PMStableTime,
  377. STU_WARNING=> STAGE_TEMP2_WARNING,
  378. STU_ALARM=> STAGE_TEMP2_Alarm, );
  379. TOL_STAGE_TEMP3(
  380. ENABLE:= ENABLE,
  381. STEP_TYPE:= STEP_DATA.Completion,
  382. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  383. TOL_V:= TOL_HEATER_VALUE_EN,
  384. TOL_P:= TOL_HEATER_PERCENT_EN,
  385. SV:= STEP_DATA.LstUnit.Heater.StageTEMP3,
  386. PV:= GV.AI.Stage_TEMP3,
  387. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.StageTEMP3WaningRange,
  388. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.StageTEMP3AlarmRange,
  389. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  390. RST := Alarm_RST,
  391. STABLE_TIME := PMStableTime,
  392. STU_WARNING=> STAGE_TEMP3_WARNING,
  393. STU_ALARM=> STAGE_TEMP3_Alarm, );
  394. TOL_STAGE_TEMP4(
  395. ENABLE:= ENABLE,
  396. STEP_TYPE:= STEP_DATA.Completion,
  397. STEP_TIME:= STEP_DATA.StepTime+STEP_DATA.AddTime,
  398. TOL_V:= TOL_HEATER_VALUE_EN,
  399. TOL_P:= TOL_HEATER_PERCENT_EN,
  400. SV:= STEP_DATA.LstUnit.Heater.StageTEMP4,
  401. PV:= GV.AI.Stage_TEMP4,
  402. WARNING_RANGE:= STEP_DATA.LstUnit.Heater.StageTEMP4WaningRange,
  403. ALARM_RANGE:= STEP_DATA.LstUnit.Heater.StageTEMP4AlarmRange,
  404. DELAY_TIME:=STEP_DATA.LstUnit.Heater.ToleranceDelayTime,
  405. RST := Alarm_RST,
  406. STABLE_TIME := PMStableTime,
  407. STU_WARNING=> STAGE_TEMP4_WARNING,
  408. STU_ALARM=> STAGE_TEMP4_Alarm, );
  409. //ALRAM & WARNING
  410. WARNING_OCC:= PRESSURE_WARNING
  411. OR MFC1_WARNING OR MFC2_WARNING OR MFC3_WARNING OR MFC4_WARNING OR MFC5_WARNING
  412. OR MFC6_WARNING OR MFC7_WARNING OR MFC8_WARNING OR MFC9_WARNING
  413. OR WALL_TEMP_WARNING OR LID_TEMP_WARNING OR STAGE_TEMP1_WARNING
  414. OR STAGE_TEMP1_WARNING OR STAGE_TEMP2_WARNING OR STAGE_TEMP3_WARNING OR STAGE_TEMP4_WARNING;
  415. ALARM_OCC:= PRESSURE_ALARM
  416. OR MFC1_ALARM OR MFC2_ALARM OR MFC3_ALARM OR MFC4_ALARM OR MFC5_ALARM
  417. OR MFC6_ALARM OR MFC7_ALARM OR MFC8_ALARM OR MFC9_ALARM
  418. OR WALL_TEMP_ALARM OR LID_TEMP_ALARM OR STAGE_TEMP1_Alarm
  419. OR STAGE_TEMP1_ALARM OR STAGE_TEMP2_ALARM OR STAGE_TEMP3_ALARM OR STAGE_TEMP4_ALARM;
  420. //STABLE DONE
  421. TON_STABLE_PROCESS(IN:= ENABLE, PT:= INT_TO_TIME(PMStableTime)*1000, Q=> , ET=> );
  422. STABLE_DONE:= TOL_PRESSURE_PERCENT.STABLE_DONE
  423. AND TOL_MFC1.STABLE_DONE
  424. AND TOL_MFC2.STABLE_DONE
  425. AND TOL_MFC3.STABLE_DONE
  426. AND TOL_MFC5.STABLE_DONE
  427. AND TOL_MFC6.STABLE_DONE
  428. AND TOL_MFC7.STABLE_DONE
  429. AND TOL_WALL_TEMP.STABLE_DONE
  430. AND TOL_LID_TEMP.STABLE_DONE
  431. AND TOL_STAGE_TEMP1.STABLE_DONE
  432. AND TOL_STAGE_TEMP2.STABLE_DONE
  433. AND TOL_STAGE_TEMP3.STABLE_DONE
  434. AND TOL_STAGE_TEMP4.STABLE_DONE
  435. AND TON_STABLE_PROCESS.Q;
  436. //STEP流程
  437. CASE i OF
  438. 1: IF STEP_DATA.Completion='Stable'
  439. THEN
  440. i:= 10;
  441. ELSIF STEP_DATA.Completion='Time'
  442. THEN
  443. i:= 20;
  444. END_IF
  445. //STABLE
  446. 10: IF STABLE_DONE
  447. THEN i:=100;
  448. END_IF;
  449. //TIME
  450. 20: IF ALARM_OCC
  451. THEN i:=50;
  452. ELSE i:=21;
  453. END_IF;
  454. 21: IF STEP_TIME_DONE
  455. THEN i:= 100;
  456. ELSE i:= 20;
  457. END_IF;
  458. //ALARM CONDITION
  459. 50: STEP_ERR:=TRUE;
  460. TON_STEP_TIME_EN:=FALSE;
  461. //TIME OUT
  462. 51: STEP_TIME_OUT:=TRUE;
  463. TON_STEP_TIME_EN:=FALSE;
  464. //FINISHED
  465. 100: NEXTSTEP:=TRUE;
  466. TON_STEP_TIME_EN:=FALSE;
  467. END_CASE;
  468. //PROCESS TIME
  469. STEP_TIME(IN:= TON_STEP_TIME_EN, PT:= INT_TO_TIME(STEP_DATA.StepTime+STEP_DATA.AddTime)*1000, Q=> STEP_TIME_DONE, ET=> );
  470. ]]></ST>
  471. </Implementation>
  472. <LineIds Name="PROCESS">
  473. <LineId Id="11534" Count="83" />
  474. <LineId Id="11950" Count="0" />
  475. <LineId Id="11954" Count="2" />
  476. <LineId Id="11620" Count="0" />
  477. <LineId Id="12100" Count="0" />
  478. <LineId Id="12098" Count="1" />
  479. <LineId Id="11621" Count="0" />
  480. <LineId Id="12101" Count="0" />
  481. <LineId Id="11622" Count="14" />
  482. <LineId Id="11653" Count="177" />
  483. <LineId Id="11913" Count="0" />
  484. <LineId Id="11915" Count="30" />
  485. <LineId Id="11914" Count="0" />
  486. <LineId Id="11831" Count="8" />
  487. <LineId Id="11946" Count="0" />
  488. <LineId Id="11840" Count="4" />
  489. <LineId Id="11947" Count="0" />
  490. <LineId Id="11845" Count="14" />
  491. <LineId Id="11948" Count="1" />
  492. <LineId Id="11860" Count="45" />
  493. <LineId Id="28" Count="0" />
  494. </LineIds>
  495. </POU>
  496. </TcPlcObject>