Temp.TcPOU 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
  3. <POU Name="Temp" Id="{de337f70-c820-498d-b2b1-1b320905ecbd}" SpecialFunc="None">
  4. <Declaration><![CDATA[PROGRAM Temp
  5. VAR
  6. H_LID :ARRAY[1..10] OF Temp_controller;
  7. H_CHAMBER :ARRAY[1..10] OF Temp_controller;
  8. H_PEN_VALVE :Temp_controller;
  9. H_GATE_VALVE :Temp_controller;
  10. H_IGS :ARRAY[1..10] OF Temp_controller;
  11. H_TAPE :ARRAY[1..10] OF Temp_controller;
  12. H_FORELINE :ARRAY[1..20] OF Temp_controller;
  13. END_VAR
  14. ]]></Declaration>
  15. <Implementation>
  16. <ST><![CDATA[//E01 PEN_VALVE PID
  17. IF GV.AI.APC_Temp-GV.AO.APC_Temp_SV<3
  18. THEN
  19. H_PEN_VALVE.PID_Feedforward:=GV_H.PEN_VALVE_HEATER_PID.Feedforward;
  20. ELSE
  21. H_PEN_VALVE.PID_Feedforward:=0;
  22. END_IF
  23. H_PEN_VALVE(
  24. ENABLE:= GV.AI.APC_Temp<110,
  25. AUTO_TUNE:= GV.PEN_VALVE_HEATER_AUTO_TUNE_EN,
  26. AUTO_TUNE_OUTPUT:=GV.PEN_VALVE_HEATER_AUTO_TUNE_OUTPUT,
  27. TEMP_SV:= GV.AO.APC_Temp_SV,
  28. TEMP_ACTUAL:= GV.AI.APC_Temp,
  29. TEMP_RATE:=5,
  30. PID_P:= GV_H.PEN_VALVE_HEATER_PID.P,
  31. PID_I:= GV_H.PEN_VALVE_HEATER_PID.I,
  32. PID_D:= GV_H.PEN_VALVE_HEATER_PID.D,
  33. PID_Dp:= GV_H.PEN_VALVE_HEATER_PID.DP,
  34. PID_Output_Limit:= GV_H.PEN_VALVE_HEATER_PID.Output_Limit,
  35. SSR_ON=> GV.PEN_VALVE_HEATER_SSR_ON
  36. );
  37. IF H_PEN_VALVE.PID_AUTO_TUNE_DONE
  38. THEN
  39. GV_H.PEN_VALVE_HEATER_PID.P:=H_PEN_VALVE.PID_AUTO_TUNE_P;
  40. GV_H.PEN_VALVE_HEATER_PID.I:=H_PEN_VALVE.PID_AUTO_TUNE_I;
  41. GV_H.PEN_VALVE_HEATER_PID.D:=H_PEN_VALVE.PID_AUTO_TUNE_D;
  42. GV.PEN_VALVE_HEATER_AUTO_TUNE_EN:=FALSE;
  43. END_IF
  44. //E02 LID1 PID
  45. H_LID[1](
  46. ENABLE:= GV.AI.Lid_Temp<100,
  47. AUTO_TUNE:= GV.LID_HEATER_AUTO_TUNE_EN[1],
  48. AUTO_TUNE_OUTPUT:=GV.LID_HEATER_AUTO_TUNE_OUTPUT[1],
  49. TEMP_SV:= GV.AO.LID_Temp_SV,
  50. TEMP_ACTUAL:= GV.AI.Lid_Temp,
  51. TEMP_RATE:=5,
  52. PID_P:= GV_H.LID_HEATER_PID[1].P,
  53. PID_I:= GV_H.LID_HEATER_PID[1].I,
  54. PID_D:= GV_H.LID_HEATER_PID[1].D,
  55. PID_Dp:= GV_H.LID_HEATER_PID[1].DP,
  56. PID_Feedforward:= GV_H.LID_HEATER_PID[1].Feedforward,
  57. PID_Output_Limit:= GV_H.LID_HEATER_PID[1].Output_Limit,
  58. SSR_ON=> GV.LID_HEATER_SSR_ON[1],
  59. SSR_ON=> GV.LID_HEATER_SSR_ON[2],
  60. SSR_ON=> GV.LID_HEATER_SSR_ON[3],
  61. SSR_ON=> GV.LID_HEATER_SSR_ON[4]
  62. );
  63. IF H_LID[1].PID_AUTO_TUNE_DONE
  64. THEN
  65. GV_H.LID_HEATER_PID[1].P:=H_LID[1].PID_AUTO_TUNE_P;
  66. GV_H.LID_HEATER_PID[1].I:=H_LID[1].PID_AUTO_TUNE_I;
  67. GV_H.LID_HEATER_PID[1].D:=H_LID[1].PID_AUTO_TUNE_D;
  68. GV.LID_HEATER_AUTO_TUNE_EN[1]:=FALSE;
  69. END_IF
  70. //E06 CHAMBER1 PID
  71. H_CHAMBER[1](
  72. ENABLE:= GV.AI.CHAMBER_Temp1<100,
  73. AUTO_TUNE:= GV.CHAMBER_HEATER_AUTO_TUNE_EN[1],
  74. AUTO_TUNE_OUTPUT:=GV.CHAMBER_HEATER_AUTO_TUNE_OUTPUT[1],
  75. TEMP_SV:= GV.AO.Chamber_Temp1_SV,
  76. TEMP_ACTUAL:= GV.AI.CHAMBER_Temp1,
  77. TEMP_RATE:=5,
  78. PID_P:= GV_H.CHAMBER_HEATER_PID[1].P,
  79. PID_I:= GV_H.CHAMBER_HEATER_PID[1].I,
  80. PID_D:= GV_H.CHAMBER_HEATER_PID[1].D,
  81. PID_Dp:= GV_H.CHAMBER_HEATER_PID[1].DP,
  82. PID_Feedforward:= GV_H.CHAMBER_HEATER_PID[1].Feedforward,
  83. PID_Output_Limit:= GV_H.CHAMBER_HEATER_PID[1].Output_Limit,
  84. SSR_ON=> GV.CHAMBER_HEATER_SSR_ON[1],
  85. SSR_ON=> GV.CHAMBER_HEATER_SSR_ON[2]
  86. );
  87. IF H_CHAMBER[1].PID_AUTO_TUNE_DONE
  88. THEN
  89. GV_H.CHAMBER_HEATER_PID[1].P:=H_CHAMBER[1].PID_AUTO_TUNE_P;
  90. GV_H.CHAMBER_HEATER_PID[1].I:=H_CHAMBER[1].PID_AUTO_TUNE_I;
  91. GV_H.CHAMBER_HEATER_PID[1].D:=H_CHAMBER[1].PID_AUTO_TUNE_D;
  92. GV.CHAMBER_HEATER_AUTO_TUNE_EN[1]:=FALSE;
  93. END_IF
  94. //E07 CHAMBER2 PID
  95. H_CHAMBER[2](
  96. ENABLE:= GV.AI.CHAMBER_Temp2<100,
  97. AUTO_TUNE:= GV.CHAMBER_HEATER_AUTO_TUNE_EN[2],
  98. AUTO_TUNE_OUTPUT:=GV.CHAMBER_HEATER_AUTO_TUNE_OUTPUT[2],
  99. TEMP_SV:= GV.AO.Chamber_Temp2_SV,
  100. TEMP_ACTUAL:= GV.AI.CHAMBER_Temp2,
  101. TEMP_RATE:=5,
  102. PID_P:= GV_H.CHAMBER_HEATER_PID[2].P,
  103. PID_I:= GV_H.CHAMBER_HEATER_PID[2].I,
  104. PID_D:= GV_H.CHAMBER_HEATER_PID[2].D,
  105. PID_Dp:= GV_H.CHAMBER_HEATER_PID[2].DP,
  106. PID_Feedforward:= GV_H.CHAMBER_HEATER_PID[2].Feedforward,
  107. PID_Output_Limit:= GV_H.CHAMBER_HEATER_PID[2].Output_Limit,
  108. SSR_ON=> GV.CHAMBER_HEATER_SSR_ON[3]
  109. );
  110. IF H_CHAMBER[2].PID_AUTO_TUNE_DONE
  111. THEN
  112. GV_H.CHAMBER_HEATER_PID[2].P:=H_CHAMBER[2].PID_AUTO_TUNE_P;
  113. GV_H.CHAMBER_HEATER_PID[2].I:=H_CHAMBER[2].PID_AUTO_TUNE_I;
  114. GV_H.CHAMBER_HEATER_PID[2].D:=H_CHAMBER[2].PID_AUTO_TUNE_D;
  115. GV.CHAMBER_HEATER_AUTO_TUNE_EN[2]:=FALSE;
  116. END_IF
  117. //E08 CHAMBER3 PID
  118. H_CHAMBER[3](
  119. ENABLE:= GV.AI.CHAMBER_Temp3<100,
  120. AUTO_TUNE:= GV.CHAMBER_HEATER_AUTO_TUNE_EN[3],
  121. AUTO_TUNE_OUTPUT:=GV.CHAMBER_HEATER_AUTO_TUNE_OUTPUT[3],
  122. TEMP_SV:= GV.AO.Chamber_Temp3_SV,
  123. TEMP_ACTUAL:= GV.AI.Chamber_Temp3,
  124. TEMP_RATE:=5,
  125. PID_P:= GV_H.CHAMBER_HEATER_PID[3].P,
  126. PID_I:= GV_H.CHAMBER_HEATER_PID[3].I,
  127. PID_D:= GV_H.CHAMBER_HEATER_PID[3].D,
  128. PID_Dp:= GV_H.CHAMBER_HEATER_PID[3].DP,
  129. PID_Feedforward:= GV_H.CHAMBER_HEATER_PID[3].Feedforward,
  130. PID_Output_Limit:= GV_H.CHAMBER_HEATER_PID[3].Output_Limit,
  131. SSR_ON=> GV.CHAMBER_HEATER_SSR_ON[4]
  132. );
  133. IF H_CHAMBER[3].PID_AUTO_TUNE_DONE
  134. THEN
  135. GV_H.CHAMBER_HEATER_PID[3].P:=H_CHAMBER[3].PID_AUTO_TUNE_P;
  136. GV_H.CHAMBER_HEATER_PID[3].I:=H_CHAMBER[3].PID_AUTO_TUNE_I;
  137. GV_H.CHAMBER_HEATER_PID[3].D:=H_CHAMBER[3].PID_AUTO_TUNE_D;
  138. GV.CHAMBER_HEATER_AUTO_TUNE_EN[3]:=FALSE;
  139. END_IF
  140. //E18 GATE VALVE PID
  141. IF ABS(GV.AI.GATE_VALVE_Temp-GV.AO.Gate_Valve_Temp_SV)<5
  142. THEN
  143. H_GATE_VALVE.PID_Feedforward:=GV_H.GATE_VALVE_HEATER_PID.Feedforward;
  144. ELSE
  145. H_GATE_VALVE.PID_Feedforward:=0;
  146. END_IF
  147. H_GATE_VALVE(
  148. ENABLE:= GV.AI.GATE_VALVE_Temp<100,
  149. AUTO_TUNE:= GV.GATE_VALVE_HEATER_AUTO_TUNE_EN,
  150. AUTO_TUNE_OUTPUT:=GV.GATE_VALVE_HEATER_AUTO_TUNE_OUTPUT,
  151. TEMP_SV:= GV.AO.Gate_Valve_Temp_SV,
  152. TEMP_ACTUAL:= GV.AI.GATE_VALVE_Temp,
  153. TEMP_RATE:=5,
  154. PID_P:= GV_H.GATE_VALVE_HEATER_PID.P,
  155. PID_I:= GV_H.GATE_VALVE_HEATER_PID.I,
  156. PID_D:= GV_H.GATE_VALVE_HEATER_PID.D,
  157. PID_Dp:= GV_H.GATE_VALVE_HEATER_PID.DP,
  158. PID_Output_Limit:= GV_H.GATE_VALVE_HEATER_PID.Output_Limit,
  159. SSR_ON=> GV.GATE_VALVE_SSR_ON
  160. );
  161. IF H_GATE_VALVE.PID_AUTO_TUNE_DONE
  162. THEN
  163. GV_H.GATE_VALVE_HEATER_PID.P:=H_GATE_VALVE.PID_AUTO_TUNE_P;
  164. GV_H.GATE_VALVE_HEATER_PID.I:=H_GATE_VALVE.PID_AUTO_TUNE_I;
  165. GV_H.GATE_VALVE_HEATER_PID.D:=H_GATE_VALVE.PID_AUTO_TUNE_D;
  166. GV.GATE_VALVE_HEATER_AUTO_TUNE_EN:=FALSE;
  167. END_IF
  168. //E31 TAPE1 PID
  169. H_TAPE[1](
  170. ENABLE:= GV.AI.TAPE_Temp1<120,
  171. AUTO_TUNE:= GV.TAPE_HEATER_AUTO_TUNE_EN[1],
  172. AUTO_TUNE_OUTPUT:=GV.TAPE_HEATER_AUTO_TUNE_OUTPUT[1],
  173. TEMP_SV:= GV.AO.Tape_Temp1_SV,
  174. TEMP_ACTUAL:= GV.AI.TAPE_Temp1,
  175. TEMP_RATE:=10,
  176. PID_P:= GV_H.TAPE_HEATER_PID[1].P,
  177. PID_I:= GV_H.TAPE_HEATER_PID[1].I,
  178. PID_D:= GV_H.TAPE_HEATER_PID[1].D,
  179. PID_Dp:= GV_H.TAPE_HEATER_PID[1].DP,
  180. PID_Feedforward:= GV_H.TAPE_HEATER_PID[1].Feedforward,
  181. PID_Output_Limit:= GV_H.TAPE_HEATER_PID[1].Output_Limit,
  182. SSR_ON=> GV.TAPE_HEATER_SSR_ON[1]
  183. );
  184. IF H_TAPE[1].PID_AUTO_TUNE_DONE
  185. THEN
  186. GV_H.TAPE_HEATER_PID[1].P:=H_TAPE[1].PID_AUTO_TUNE_P;
  187. GV_H.TAPE_HEATER_PID[1].I:=H_TAPE[1].PID_AUTO_TUNE_I;
  188. GV_H.TAPE_HEATER_PID[1].D:=H_TAPE[1].PID_AUTO_TUNE_D;
  189. GV.TAPE_HEATER_AUTO_TUNE_EN[1]:=FALSE;
  190. END_IF
  191. //E32 TAPE2 PID
  192. H_TAPE[2](
  193. ENABLE:= GV.AI.TAPE_Temp2<120,
  194. AUTO_TUNE:= GV.TAPE_HEATER_AUTO_TUNE_EN[2],
  195. AUTO_TUNE_OUTPUT:=GV.TAPE_HEATER_AUTO_TUNE_OUTPUT[2],
  196. TEMP_SV:= GV.AO.Tape_Temp2_SV,
  197. TEMP_ACTUAL:= GV.AI.TAPE_Temp2,
  198. TEMP_RATE:=10,
  199. PID_P:= GV_H.TAPE_HEATER_PID[2].P,
  200. PID_I:= GV_H.TAPE_HEATER_PID[2].I,
  201. PID_D:= GV_H.TAPE_HEATER_PID[2].D,
  202. PID_Dp:= GV_H.TAPE_HEATER_PID[2].DP,
  203. PID_Feedforward:= GV_H.TAPE_HEATER_PID[2].Feedforward,
  204. PID_Output_Limit:= GV_H.TAPE_HEATER_PID[2].Output_Limit,
  205. SSR_ON=> GV.TAPE_HEATER_SSR_ON[2]
  206. );
  207. IF H_TAPE[2].PID_AUTO_TUNE_DONE
  208. THEN
  209. GV_H.TAPE_HEATER_PID[2].P:=H_TAPE[2].PID_AUTO_TUNE_P;
  210. GV_H.TAPE_HEATER_PID[2].I:=H_TAPE[2].PID_AUTO_TUNE_I;
  211. GV_H.TAPE_HEATER_PID[2].D:=H_TAPE[2].PID_AUTO_TUNE_D;
  212. GV.TAPE_HEATER_AUTO_TUNE_EN[2]:=FALSE;
  213. END_IF
  214. // TAPE3 PID
  215. H_TAPE[3](
  216. ENABLE:= GV.AI.TAPE_Temp3<120,
  217. AUTO_TUNE:= GV.TAPE_HEATER_AUTO_TUNE_EN[3],
  218. AUTO_TUNE_OUTPUT:=GV.TAPE_HEATER_AUTO_TUNE_OUTPUT[3],
  219. TEMP_SV:= GV.AO.Tape_Temp3_SV,
  220. TEMP_ACTUAL:= GV.AI.TAPE_Temp3,
  221. TEMP_RATE:=10,
  222. PID_P:= GV_H.TAPE_HEATER_PID[3].P,
  223. PID_I:= GV_H.TAPE_HEATER_PID[3].I,
  224. PID_D:= GV_H.TAPE_HEATER_PID[3].D,
  225. PID_Dp:= GV_H.TAPE_HEATER_PID[3].DP,
  226. PID_Feedforward:= GV_H.TAPE_HEATER_PID[3].Feedforward,
  227. PID_Output_Limit:= GV_H.TAPE_HEATER_PID[3].Output_Limit,
  228. SSR_ON=> GV.TAPE_HEATER_SSR_ON[3]
  229. );
  230. IF H_TAPE[3].PID_AUTO_TUNE_DONE
  231. THEN
  232. GV_H.TAPE_HEATER_PID[3].P:=H_TAPE[3].PID_AUTO_TUNE_P;
  233. GV_H.TAPE_HEATER_PID[3].I:=H_TAPE[3].PID_AUTO_TUNE_I;
  234. GV_H.TAPE_HEATER_PID[3].D:=H_TAPE[3].PID_AUTO_TUNE_D;
  235. GV.TAPE_HEATER_AUTO_TUNE_EN[3]:=FALSE;
  236. END_IF
  237. //E35 IGS1 PID
  238. H_IGS[1](
  239. ENABLE:= GV.AI.IGS_Temp1<50,
  240. AUTO_TUNE:= GV.IGS_HEATER_AUTO_TUNE_EN[1],
  241. AUTO_TUNE_OUTPUT:=GV.IGS_HEATER_AUTO_TUNE_OUTPUT[1],
  242. TEMP_SV:= GV.AO.IGS_Temp1_SV,
  243. TEMP_ACTUAL:= GV.AI.IGS_Temp1,
  244. TEMP_RATE:=1.5,
  245. PID_P:= GV_H.IGS_HEATER_PID[1].P,
  246. PID_I:= GV_H.IGS_HEATER_PID[1].I,
  247. PID_D:= GV_H.IGS_HEATER_PID[1].D,
  248. PID_Dp:= GV_H.IGS_HEATER_PID[1].DP,
  249. PID_Feedforward:= GV_H.IGS_HEATER_PID[1].Feedforward,
  250. PID_Output_Limit:= GV_H.IGS_HEATER_PID[1].Output_Limit,
  251. SSR_ON=> GV.IGS_HEATER_SSR_ON[1]
  252. );
  253. IF H_IGS[1].PID_AUTO_TUNE_DONE
  254. THEN
  255. GV_H.IGS_HEATER_PID[1].P:=H_IGS[1].PID_AUTO_TUNE_P;
  256. GV_H.IGS_HEATER_PID[1].I:=H_IGS[1].PID_AUTO_TUNE_I;
  257. GV_H.IGS_HEATER_PID[1].D:=H_IGS[1].PID_AUTO_TUNE_D;
  258. GV.IGS_HEATER_AUTO_TUNE_EN[1]:=FALSE;
  259. END_IF
  260. //E36 IGS2 PID
  261. IF GV.AI.IGS_Temp2>GV.AO.IGS_Temp2_SV+3 THEN
  262. H_IGS[2].PID_Feedforward:=0;
  263. ELSE
  264. H_IGS[2].PID_Feedforward:=GV_H.IGS_HEATER_PID[2].Feedforward;
  265. END_IF
  266. H_IGS[2](
  267. ENABLE:= GV.AI.IGS_Temp2<50,
  268. AUTO_TUNE:= GV.IGS_HEATER_AUTO_TUNE_EN[2],
  269. AUTO_TUNE_OUTPUT:=GV.IGS_HEATER_AUTO_TUNE_OUTPUT[2],
  270. TEMP_SV:= GV.AO.IGS_Temp2_SV,
  271. TEMP_ACTUAL:= GV.AI.IGS_Temp2,
  272. TEMP_RATE:=1.5,
  273. PID_P:= GV_H.IGS_HEATER_PID[2].P,
  274. PID_I:= GV_H.IGS_HEATER_PID[2].I,
  275. PID_D:= GV_H.IGS_HEATER_PID[2].D,
  276. PID_Dp:= GV_H.IGS_HEATER_PID[2].DP,
  277. PID_Feedforward:= GV_H.IGS_HEATER_PID[2].Feedforward,
  278. PID_Output_Limit:= GV_H.IGS_HEATER_PID[2].Output_Limit,
  279. SSR_ON=> GV.IGS_HEATER_SSR_ON[2]
  280. );
  281. IF H_IGS[2].PID_AUTO_TUNE_DONE
  282. THEN
  283. GV_H.IGS_HEATER_PID[2].P:=H_IGS[2].PID_AUTO_TUNE_P;
  284. GV_H.IGS_HEATER_PID[2].I:=H_IGS[2].PID_AUTO_TUNE_I;
  285. GV_H.IGS_HEATER_PID[2].D:=H_IGS[2].PID_AUTO_TUNE_D;
  286. GV.IGS_HEATER_AUTO_TUNE_EN[2]:=FALSE;
  287. END_IF
  288. //FORELINE1 PID SSR6 AV102
  289. H_FORELINE[1](
  290. ENABLE:= GV.AI.AV102_Temp<120,
  291. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[1],
  292. AUTO_TUNE_OUTPUT:=GV.FORELINE_HEATER_AUTO_TUNE_OUTPUT[1],
  293. TEMP_SV:= GV.AO.AV102_Temp_SV,
  294. TEMP_ACTUAL:= GV.AI.AV102_Temp,
  295. TEMP_RATE:=10,
  296. PID_P:= GV_H.FORELINE_HEATER_PID[1].P,
  297. PID_I:= GV_H.FORELINE_HEATER_PID[1].I,
  298. PID_D:= GV_H.FORELINE_HEATER_PID[1].D,
  299. PID_Dp:= GV_H.FORELINE_HEATER_PID[1].DP,
  300. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[1].Feedforward,
  301. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[1].Output_Limit,
  302. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[1]);
  303. IF H_FORELINE[1].PID_AUTO_TUNE_DONE
  304. THEN
  305. GV_H.FORELINE_HEATER_PID[1].P:=H_FORELINE[1].PID_AUTO_TUNE_P;
  306. GV_H.FORELINE_HEATER_PID[1].I:=H_FORELINE[1].PID_AUTO_TUNE_I;
  307. GV_H.FORELINE_HEATER_PID[1].D:=H_FORELINE[1].PID_AUTO_TUNE_D;
  308. GV.FORELINE_HEATER_AUTO_TUNE_EN[1]:=FALSE;
  309. END_IF
  310. //FORELINE2 PID SSR7 AV101
  311. H_FORELINE[2](
  312. ENABLE:= GV.AI.AV101_Temp<120,
  313. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[2],
  314. AUTO_TUNE_OUTPUT:=GV.FORELINE_HEATER_AUTO_TUNE_OUTPUT[2],
  315. TEMP_SV:= GV.AO.AV101_Temp_SV,
  316. TEMP_ACTUAL:= GV.AI.AV101_Temp,
  317. TEMP_RATE:=10,
  318. PID_P:= GV_H.FORELINE_HEATER_PID[2].P,
  319. PID_I:= GV_H.FORELINE_HEATER_PID[2].I,
  320. PID_D:= GV_H.FORELINE_HEATER_PID[2].D,
  321. PID_Dp:= GV_H.FORELINE_HEATER_PID[2].DP,
  322. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[2].Feedforward,
  323. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[2].Output_Limit,
  324. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[2]);
  325. IF H_FORELINE[2].PID_AUTO_TUNE_DONE
  326. THEN
  327. GV_H.FORELINE_HEATER_PID[2].P:=H_FORELINE[2].PID_AUTO_TUNE_P;
  328. GV_H.FORELINE_HEATER_PID[2].I:=H_FORELINE[2].PID_AUTO_TUNE_I;
  329. GV_H.FORELINE_HEATER_PID[2].D:=H_FORELINE[2].PID_AUTO_TUNE_D;
  330. GV.FORELINE_HEATER_AUTO_TUNE_EN[2]:=FALSE;
  331. END_IF
  332. //FORELINE3 PID SSR8 AV106
  333. H_FORELINE[3](
  334. ENABLE:= GV.AI.AV106_Temp<120,
  335. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[3],
  336. AUTO_TUNE_OUTPUT:=GV.FORELINE_HEATER_AUTO_TUNE_OUTPUT[3],
  337. TEMP_SV:= GV.AO.AV106_Temp_SV ,
  338. TEMP_ACTUAL:= GV.AI.AV106_Temp,
  339. TEMP_RATE:=10,
  340. PID_P:= GV_H.FORELINE_HEATER_PID[3].P,
  341. PID_I:= GV_H.FORELINE_HEATER_PID[3].I,
  342. PID_D:= GV_H.FORELINE_HEATER_PID[3].D,
  343. PID_Dp:= GV_H.FORELINE_HEATER_PID[3].DP,
  344. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[3].Feedforward,
  345. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[3].Output_Limit,
  346. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[3]);
  347. IF H_FORELINE[3].PID_AUTO_TUNE_DONE
  348. THEN
  349. GV_H.FORELINE_HEATER_PID[3].P:=H_FORELINE[3].PID_AUTO_TUNE_P;
  350. GV_H.FORELINE_HEATER_PID[3].I:=H_FORELINE[3].PID_AUTO_TUNE_I;
  351. GV_H.FORELINE_HEATER_PID[3].D:=H_FORELINE[3].PID_AUTO_TUNE_D;
  352. GV.FORELINE_HEATER_AUTO_TUNE_EN[3]:=FALSE;
  353. END_IF
  354. //FORELINE4 PID SSR9 BA101
  355. H_FORELINE[4](
  356. ENABLE:= GV.AI.BA01_Temp<120,
  357. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[4],
  358. AUTO_TUNE_OUTPUT:=GV.FORELINE_HEATER_AUTO_TUNE_OUTPUT[4],
  359. TEMP_SV:= GV.AO.BA01_Temp_SV,
  360. TEMP_ACTUAL:= GV.AI.BA01_Temp,
  361. TEMP_RATE:=10,
  362. PID_P:= GV_H.FORELINE_HEATER_PID[4].P,
  363. PID_I:= GV_H.FORELINE_HEATER_PID[4].I,
  364. PID_D:= GV_H.FORELINE_HEATER_PID[4].D,
  365. PID_Dp:= GV_H.FORELINE_HEATER_PID[4].DP,
  366. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[4].Feedforward,
  367. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[4].Output_Limit,
  368. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[4]);
  369. IF H_FORELINE[4].PID_AUTO_TUNE_DONE
  370. THEN
  371. GV_H.FORELINE_HEATER_PID[4].P:=H_FORELINE[4].PID_AUTO_TUNE_P;
  372. GV_H.FORELINE_HEATER_PID[4].I:=H_FORELINE[4].PID_AUTO_TUNE_I;
  373. GV_H.FORELINE_HEATER_PID[4].D:=H_FORELINE[4].PID_AUTO_TUNE_D;
  374. GV.FORELINE_HEATER_AUTO_TUNE_EN[4]:=FALSE;
  375. END_IF
  376. //FORELINE5 PID SS10 VG103
  377. H_FORELINE[5](
  378. ENABLE:= GV.AI.VG103_Pipe_Temp<120,
  379. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[5],
  380. TEMP_SV:= GV.AO.VG103_Pipe_Temp_SV,
  381. TEMP_ACTUAL:= GV.AI.VG103_Pipe_Temp,
  382. TEMP_RATE:=10,
  383. PID_P:= GV_H.FORELINE_HEATER_PID[5].P,
  384. PID_I:= GV_H.FORELINE_HEATER_PID[5].I,
  385. PID_D:= GV_H.FORELINE_HEATER_PID[5].D,
  386. PID_Dp:= GV_H.FORELINE_HEATER_PID[5].DP,
  387. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[5].Feedforward,
  388. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[5].Output_Limit,
  389. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[5]);
  390. IF H_FORELINE[5].PID_AUTO_TUNE_DONE
  391. THEN
  392. GV_H.FORELINE_HEATER_PID[5].P:=H_FORELINE[5].PID_AUTO_TUNE_P;
  393. GV_H.FORELINE_HEATER_PID[5].I:=H_FORELINE[5].PID_AUTO_TUNE_I;
  394. GV_H.FORELINE_HEATER_PID[5].D:=H_FORELINE[5].PID_AUTO_TUNE_D;
  395. GV.FORELINE_HEATER_AUTO_TUNE_EN[5]:=FALSE;
  396. END_IF
  397. //FORELINE6 PID SSR11 EXHAUST1-6
  398. H_FORELINE[6](
  399. ENABLE:= GV.AI.Exhaust1_6_Temp<120,
  400. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[6],
  401. TEMP_SV:= GV.AO.Exhaust1_6_Temp_SV,
  402. TEMP_ACTUAL:= GV.AI.Exhaust1_6_Temp,
  403. TEMP_RATE:=10,
  404. PID_P:= GV_H.FORELINE_HEATER_PID[6].P,
  405. PID_I:= GV_H.FORELINE_HEATER_PID[6].I,
  406. PID_D:= GV_H.FORELINE_HEATER_PID[6].D,
  407. PID_Dp:= GV_H.FORELINE_HEATER_PID[6].DP,
  408. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[6].Feedforward,
  409. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[6].Output_Limit,
  410. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[6]);
  411. IF H_FORELINE[6].PID_AUTO_TUNE_DONE
  412. THEN
  413. GV_H.FORELINE_HEATER_PID[6].P:=H_FORELINE[6].PID_AUTO_TUNE_P;
  414. GV_H.FORELINE_HEATER_PID[6].I:=H_FORELINE[6].PID_AUTO_TUNE_I;
  415. GV_H.FORELINE_HEATER_PID[6].D:=H_FORELINE[6].PID_AUTO_TUNE_D;
  416. GV.FORELINE_HEATER_AUTO_TUNE_EN[6]:=FALSE;
  417. END_IF
  418. //FORELINE7 PID SSR12 EXHAUST7-8
  419. H_FORELINE[7](
  420. ENABLE:= GV.AI.Exhaust7_8_Temp<120,
  421. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[7],
  422. TEMP_SV:= GV.AO.Exhaust7_8_Temp_SV,
  423. TEMP_ACTUAL:= GV.AI.Exhaust7_8_Temp,
  424. TEMP_RATE:=10,
  425. PID_P:= GV_H.FORELINE_HEATER_PID[7].P,
  426. PID_I:= GV_H.FORELINE_HEATER_PID[7].I,
  427. PID_D:= GV_H.FORELINE_HEATER_PID[7].D,
  428. PID_Dp:= GV_H.FORELINE_HEATER_PID[7].DP,
  429. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[7].Feedforward,
  430. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[7].Output_Limit,
  431. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[7]);
  432. IF H_FORELINE[7].PID_AUTO_TUNE_DONE
  433. THEN
  434. GV_H.FORELINE_HEATER_PID[7].P:=H_FORELINE[7].PID_AUTO_TUNE_P;
  435. GV_H.FORELINE_HEATER_PID[7].I:=H_FORELINE[7].PID_AUTO_TUNE_I;
  436. GV_H.FORELINE_HEATER_PID[7].D:=H_FORELINE[7].PID_AUTO_TUNE_D;
  437. GV.FORELINE_HEATER_AUTO_TUNE_EN[7]:=FALSE;
  438. END_IF
  439. //FORELINE8 PID SSR13
  440. H_FORELINE[8](
  441. ENABLE:= GV.AI.VG101_Pipe_Temp<120,
  442. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[8],
  443. TEMP_SV:= GV.AO.VG101_Pipe_Temp_SV,
  444. TEMP_ACTUAL:= GV.AI.VG101_Pipe_Temp,
  445. TEMP_RATE:=10,
  446. PID_P:= GV_H.FORELINE_HEATER_PID[8].P,
  447. PID_I:= GV_H.FORELINE_HEATER_PID[8].I,
  448. PID_D:= GV_H.FORELINE_HEATER_PID[8].D,
  449. PID_Dp:= GV_H.FORELINE_HEATER_PID[8].DP,
  450. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[8].Feedforward,
  451. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[8].Output_Limit,
  452. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[8]);
  453. IF H_FORELINE[8].PID_AUTO_TUNE_DONE
  454. THEN
  455. GV_H.FORELINE_HEATER_PID[8].P:=H_FORELINE[8].PID_AUTO_TUNE_P;
  456. GV_H.FORELINE_HEATER_PID[8].I:=H_FORELINE[8].PID_AUTO_TUNE_I;
  457. GV_H.FORELINE_HEATER_PID[8].D:=H_FORELINE[8].PID_AUTO_TUNE_D;
  458. GV.FORELINE_HEATER_AUTO_TUNE_EN[8]:=FALSE;
  459. END_IF
  460. (* //FORELINE9 PID
  461. H_FORELINE[9](
  462. ENABLE:= GV.AI.FORELINE_Temp9<120,
  463. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[9],
  464. TEMP_SV:= FORELINE_TEMP_SV[9],
  465. TEMP_ACTUAL:= GV.AI.FORELINE_Temp9,
  466. PID_P:= GV_H.FORELINE_HEATER_PID[9].P,
  467. PID_I:= GV_H.FORELINE_HEATER_PID[9].I,
  468. PID_D:= GV_H.FORELINE_HEATER_PID[9].D,
  469. PID_Dp:= GV_H.FORELINE_HEATER_PID[9].DP,
  470. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[9].Feedforward,
  471. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[9].Output_Limit,
  472. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[9]);
  473. IF H_FORELINE[9].PID_AUTO_TUNE_DONE
  474. THEN
  475. GV_H.FORELINE_HEATER_PID[9].P:=H_FORELINE[9].PID_AUTO_TUNE_P;
  476. GV_H.FORELINE_HEATER_PID[9].I:=H_FORELINE[9].PID_AUTO_TUNE_I;
  477. GV_H.FORELINE_HEATER_PID[9].D:=H_FORELINE[9].PID_AUTO_TUNE_D;
  478. GV.FORELINE_HEATER_AUTO_TUNE_EN[9]:=FALSE;
  479. END_IF
  480. //FORELINE10 PID
  481. H_FORELINE[10](
  482. ENABLE:= GV.AI.FORELINE_Temp10<120,
  483. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[10],
  484. TEMP_SV:= FORELINE_TEMP_SV[10],
  485. TEMP_ACTUAL:= GV.AI.FORELINE_Temp10,
  486. PID_P:= GV_H.FORELINE_HEATER_PID[10].P,
  487. PID_I:= GV_H.FORELINE_HEATER_PID[10].I,
  488. PID_D:= GV_H.FORELINE_HEATER_PID[10].D,
  489. PID_Dp:= GV_H.FORELINE_HEATER_PID[10].DP,
  490. PID_Feedforward:= GV_H.FORELINE_HEATER_PID[10].Feedforward,
  491. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[10].Output_Limit,
  492. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[10]);
  493. IF H_FORELINE[10].PID_AUTO_TUNE_DONE
  494. THEN
  495. GV_H.FORELINE_HEATER_PID[10].P:=H_FORELINE[10].PID_AUTO_TUNE_P;
  496. GV_H.FORELINE_HEATER_PID[10].I:=H_FORELINE[10].PID_AUTO_TUNE_I;
  497. GV_H.FORELINE_HEATER_PID[10].D:=H_FORELINE[10].PID_AUTO_TUNE_D;
  498. GV.FORELINE_HEATER_AUTO_TUNE_EN[10]:=FALSE;
  499. END_IF
  500. //FORELINE11 PID
  501. H_FORELINE[11](
  502. ENABLE:= GV.AI.FORELINE_Temp11<120,
  503. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[11],
  504. TEMP_SV:= FORELINE_TEMP_SV[11],
  505. TEMP_ACTUAL:= GV.AI.FORELINE_Temp11,
  506. PID_P:= GV_H.FORELINE_HEATER_PID[11].P,
  507. PID_I:= GV_H.FORELINE_HEATER_PID[11].I,
  508. PID_D:= GV_H.FORELINE_HEATER_PID[11].D,
  509. PID_Dp:= GV_H.FORELINE_HEATER_PID[11].DP,
  510. PID_Feedforward:= ,
  511. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[11].Output_Limit,
  512. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[11]);
  513. IF H_FORELINE[11].PID_AUTO_TUNE_DONE
  514. THEN
  515. GV_H.FORELINE_HEATER_PID[11].P:=H_FORELINE[11].PID_AUTO_TUNE_P;
  516. GV_H.FORELINE_HEATER_PID[11].I:=H_FORELINE[11].PID_AUTO_TUNE_I;
  517. GV_H.FORELINE_HEATER_PID[11].D:=H_FORELINE[11].PID_AUTO_TUNE_D;
  518. GV.FORELINE_HEATER_AUTO_TUNE_EN[11]:=FALSE;
  519. END_IF
  520. //FORELINE12 PID
  521. H_FORELINE[12](
  522. ENABLE:= GV.AI.FORELINE_Temp12<120,
  523. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[12],
  524. TEMP_SV:= FORELINE_TEMP_SV[12],
  525. TEMP_ACTUAL:= GV.AI.FORELINE_Temp12,
  526. PID_P:= GV_H.FORELINE_HEATER_PID[12].P,
  527. PID_I:= GV_H.FORELINE_HEATER_PID[12].I,
  528. PID_D:= GV_H.FORELINE_HEATER_PID[12].D,
  529. PID_Dp:= GV_H.FORELINE_HEATER_PID[12].DP,
  530. PID_Feedforward:= ,
  531. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[12].Output_Limit,
  532. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[12]);
  533. IF H_FORELINE[12].PID_AUTO_TUNE_DONE
  534. THEN
  535. GV_H.FORELINE_HEATER_PID[12].P:=H_FORELINE[12].PID_AUTO_TUNE_P;
  536. GV_H.FORELINE_HEATER_PID[12].I:=H_FORELINE[12].PID_AUTO_TUNE_I;
  537. GV_H.FORELINE_HEATER_PID[12].D:=H_FORELINE[12].PID_AUTO_TUNE_D;
  538. GV.FORELINE_HEATER_AUTO_TUNE_EN[12]:=FALSE;
  539. END_IF
  540. //FORELINE13 PID
  541. H_FORELINE[13](
  542. ENABLE:= GV.AI.FORELINE_Temp13<120,
  543. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[13],
  544. TEMP_SV:= FORELINE_TEMP_SV[13],
  545. TEMP_ACTUAL:= GV.AI.FORELINE_Temp13,
  546. PID_P:= GV_H.FORELINE_HEATER_PID[13].P,
  547. PID_I:= GV_H.FORELINE_HEATER_PID[13].I,
  548. PID_D:= GV_H.FORELINE_HEATER_PID[13].D,
  549. PID_Dp:= GV_H.FORELINE_HEATER_PID[13].DP,
  550. PID_Feedforward:= ,
  551. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[13].Output_Limit,
  552. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[13]);
  553. IF H_FORELINE[13].PID_AUTO_TUNE_DONE
  554. THEN
  555. GV_H.FORELINE_HEATER_PID[13].P:=H_FORELINE[13].PID_AUTO_TUNE_P;
  556. GV_H.FORELINE_HEATER_PID[13].I:=H_FORELINE[13].PID_AUTO_TUNE_I;
  557. GV_H.FORELINE_HEATER_PID[13].D:=H_FORELINE[13].PID_AUTO_TUNE_D;
  558. GV.FORELINE_HEATER_AUTO_TUNE_EN[13]:=FALSE;
  559. END_IF
  560. //FORELINE14 PID
  561. H_FORELINE[14](
  562. ENABLE:= GV.AI.FORELINE_Temp14<120,
  563. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[14],
  564. TEMP_SV:= FORELINE_TEMP_SV[14],
  565. TEMP_ACTUAL:= GV.AI.FORELINE_Temp14,
  566. PID_P:= GV_H.FORELINE_HEATER_PID[14].P,
  567. PID_I:= GV_H.FORELINE_HEATER_PID[14].I,
  568. PID_D:= GV_H.FORELINE_HEATER_PID[14].D,
  569. PID_Dp:= GV_H.FORELINE_HEATER_PID[14].DP,
  570. PID_Feedforward:= ,
  571. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[14].Output_Limit,
  572. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[14]);
  573. IF H_FORELINE[14].PID_AUTO_TUNE_DONE
  574. THEN
  575. GV_H.FORELINE_HEATER_PID[14].P:=H_FORELINE[14].PID_AUTO_TUNE_P;
  576. GV_H.FORELINE_HEATER_PID[14].I:=H_FORELINE[14].PID_AUTO_TUNE_I;
  577. GV_H.FORELINE_HEATER_PID[14].D:=H_FORELINE[14].PID_AUTO_TUNE_D;
  578. GV.FORELINE_HEATER_AUTO_TUNE_EN[14]:=FALSE;
  579. END_IF
  580. //FORELINE15 PID
  581. H_FORELINE[15](
  582. ENABLE:= GV.AI.FORELINE_Temp15<120,
  583. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[15],
  584. TEMP_SV:= FORELINE_TEMP_SV[15],
  585. TEMP_ACTUAL:= GV.AI.FORELINE_Temp15,
  586. PID_P:= GV_H.FORELINE_HEATER_PID[15].P,
  587. PID_I:= GV_H.FORELINE_HEATER_PID[15].I,
  588. PID_D:= GV_H.FORELINE_HEATER_PID[15].D,
  589. PID_Dp:= GV_H.FORELINE_HEATER_PID[15].DP,
  590. PID_Feedforward:= ,
  591. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[15].Output_Limit,
  592. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[15]);
  593. IF H_FORELINE[15].PID_AUTO_TUNE_DONE
  594. THEN
  595. GV_H.FORELINE_HEATER_PID[15].P:=H_FORELINE[15].PID_AUTO_TUNE_P;
  596. GV_H.FORELINE_HEATER_PID[15].I:=H_FORELINE[15].PID_AUTO_TUNE_I;
  597. GV_H.FORELINE_HEATER_PID[15].D:=H_FORELINE[15].PID_AUTO_TUNE_D;
  598. GV.FORELINE_HEATER_AUTO_TUNE_EN[15]:=FALSE;
  599. END_IF
  600. //FORELINE16 PID
  601. H_FORELINE[16](
  602. ENABLE:= GV.AI.FORELINE_Temp16<120,
  603. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[16],
  604. TEMP_SV:= FORELINE_TEMP_SV[16],
  605. TEMP_ACTUAL:= GV.AI.FORELINE_Temp16,
  606. PID_P:= GV_H.FORELINE_HEATER_PID[16].P,
  607. PID_I:= GV_H.FORELINE_HEATER_PID[16].I,
  608. PID_D:= GV_H.FORELINE_HEATER_PID[16].D,
  609. PID_Dp:= GV_H.FORELINE_HEATER_PID[16].DP,
  610. PID_Feedforward:= ,
  611. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[16].Output_Limit,
  612. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[16]);
  613. IF H_FORELINE[16].PID_AUTO_TUNE_DONE
  614. THEN
  615. GV_H.FORELINE_HEATER_PID[16].P:=H_FORELINE[16].PID_AUTO_TUNE_P;
  616. GV_H.FORELINE_HEATER_PID[16].I:=H_FORELINE[16].PID_AUTO_TUNE_I;
  617. GV_H.FORELINE_HEATER_PID[16].D:=H_FORELINE[16].PID_AUTO_TUNE_D;
  618. GV.FORELINE_HEATER_AUTO_TUNE_EN[16]:=FALSE;
  619. END_IF
  620. //FORELINE17 PID
  621. H_FORELINE[17](
  622. ENABLE:= GV.AI.FORELINE_Temp17<120,
  623. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[17],
  624. TEMP_SV:= FORELINE_TEMP_SV[17],
  625. TEMP_ACTUAL:= GV.AI.FORELINE_Temp17,
  626. PID_P:= GV_H.FORELINE_HEATER_PID[17].P,
  627. PID_I:= GV_H.FORELINE_HEATER_PID[17].I,
  628. PID_D:= GV_H.FORELINE_HEATER_PID[17].D,
  629. PID_Dp:= GV_H.FORELINE_HEATER_PID[17].DP,
  630. PID_Feedforward:= ,
  631. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[17].Output_Limit,
  632. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[17]);
  633. IF H_FORELINE[17].PID_AUTO_TUNE_DONE
  634. THEN
  635. GV_H.FORELINE_HEATER_PID[17].P:=H_FORELINE[17].PID_AUTO_TUNE_P;
  636. GV_H.FORELINE_HEATER_PID[17].I:=H_FORELINE[17].PID_AUTO_TUNE_I;
  637. GV_H.FORELINE_HEATER_PID[17].D:=H_FORELINE[17].PID_AUTO_TUNE_D;
  638. GV.FORELINE_HEATER_AUTO_TUNE_EN[17]:=FALSE;
  639. END_IF
  640. //FORELINE18 PID
  641. H_FORELINE[18](
  642. ENABLE:= GV.AI.FORELINE_Temp18<120,
  643. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[18],
  644. TEMP_SV:= FORELINE_TEMP_SV[18],
  645. TEMP_ACTUAL:= GV.AI.FORELINE_Temp18,
  646. PID_P:= GV_H.FORELINE_HEATER_PID[18].P,
  647. PID_I:= GV_H.FORELINE_HEATER_PID[18].I,
  648. PID_D:= GV_H.FORELINE_HEATER_PID[18].D,
  649. PID_Dp:= GV_H.FORELINE_HEATER_PID[18].DP,
  650. PID_Feedforward:= ,
  651. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[18].Output_Limit,
  652. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[18]);
  653. IF H_FORELINE[18].PID_AUTO_TUNE_DONE
  654. THEN
  655. GV_H.FORELINE_HEATER_PID[18].P:=H_FORELINE[18].PID_AUTO_TUNE_P;
  656. GV_H.FORELINE_HEATER_PID[18].I:=H_FORELINE[18].PID_AUTO_TUNE_I;
  657. GV_H.FORELINE_HEATER_PID[18].D:=H_FORELINE[18].PID_AUTO_TUNE_D;
  658. GV.FORELINE_HEATER_AUTO_TUNE_EN[18]:=FALSE;
  659. END_IF
  660. //FORELINE19 PID
  661. H_FORELINE[19](
  662. ENABLE:= GV.AI.FORELINE_Temp19<120,
  663. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[19],
  664. TEMP_SV:= FORELINE_TEMP_SV[19],
  665. TEMP_ACTUAL:= GV.AI.FORELINE_Temp19,
  666. PID_P:= GV_H.FORELINE_HEATER_PID[19].P,
  667. PID_I:= GV_H.FORELINE_HEATER_PID[19].I,
  668. PID_D:= GV_H.FORELINE_HEATER_PID[19].D,
  669. PID_Dp:= GV_H.FORELINE_HEATER_PID[19].DP,
  670. PID_Feedforward:= ,
  671. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[19].Output_Limit,
  672. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[19]);
  673. IF H_FORELINE[19].PID_AUTO_TUNE_DONE
  674. THEN
  675. GV_H.FORELINE_HEATER_PID[19].P:=H_FORELINE[19].PID_AUTO_TUNE_P;
  676. GV_H.FORELINE_HEATER_PID[19].I:=H_FORELINE[19].PID_AUTO_TUNE_I;
  677. GV_H.FORELINE_HEATER_PID[19].D:=H_FORELINE[19].PID_AUTO_TUNE_D;
  678. GV.FORELINE_HEATER_AUTO_TUNE_EN[19]:=FALSE;
  679. END_IF
  680. //FORELINE20 PID
  681. H_FORELINE[20](
  682. ENABLE:= GV.AI.FORELINE_Temp20<120,
  683. AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[20],
  684. TEMP_SV:= FORELINE_TEMP_SV[20],
  685. TEMP_ACTUAL:= GV.AI.FORELINE_Temp20,
  686. PID_P:= GV_H.FORELINE_HEATER_PID[20].P,
  687. PID_I:= GV_H.FORELINE_HEATER_PID[20].I,
  688. PID_D:= GV_H.FORELINE_HEATER_PID[20].D,
  689. PID_Dp:= GV_H.FORELINE_HEATER_PID[20].DP,
  690. PID_Feedforward:= ,
  691. PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[20].Output_Limit,
  692. SSR_ON=> GV.FORELINE_HEATER_SSR_ON[20]);
  693. IF H_FORELINE[20].PID_AUTO_TUNE_DONE
  694. THEN
  695. GV_H.FORELINE_HEATER_PID[20].P:=H_FORELINE[20].PID_AUTO_TUNE_P;
  696. GV_H.FORELINE_HEATER_PID[20].I:=H_FORELINE[20].PID_AUTO_TUNE_I;
  697. GV_H.FORELINE_HEATER_PID[20].D:=H_FORELINE[20].PID_AUTO_TUNE_D;
  698. GV.FORELINE_HEATER_AUTO_TUNE_EN[20]:=FALSE;
  699. END_IF
  700. *)]]></ST>
  701. </Implementation>
  702. <LineIds Name="Temp">
  703. <LineId Id="33" Count="6" />
  704. <LineId Id="41" Count="5" />
  705. <LineId Id="1023" Count="0" />
  706. <LineId Id="47" Count="5" />
  707. <LineId Id="935" Count="0" />
  708. <LineId Id="54" Count="14" />
  709. <LineId Id="1022" Count="0" />
  710. <LineId Id="69" Count="10" />
  711. <LineId Id="81" Count="6" />
  712. <LineId Id="926" Count="0" />
  713. <LineId Id="159" Count="5" />
  714. <LineId Id="1021" Count="0" />
  715. <LineId Id="165" Count="7" />
  716. <LineId Id="938" Count="0" />
  717. <LineId Id="174" Count="13" />
  718. <LineId Id="1020" Count="0" />
  719. <LineId Id="188" Count="6" />
  720. <LineId Id="937" Count="0" />
  721. <LineId Id="196" Count="13" />
  722. <LineId Id="1019" Count="0" />
  723. <LineId Id="210" Count="7" />
  724. <LineId Id="219" Count="6" />
  725. <LineId Id="338" Count="6" />
  726. <LineId Id="346" Count="5" />
  727. <LineId Id="1018" Count="0" />
  728. <LineId Id="352" Count="5" />
  729. <LineId Id="936" Count="0" />
  730. <LineId Id="359" Count="14" />
  731. <LineId Id="1037" Count="0" />
  732. <LineId Id="374" Count="6" />
  733. <LineId Id="939" Count="0" />
  734. <LineId Id="382" Count="13" />
  735. <LineId Id="1036" Count="0" />
  736. <LineId Id="396" Count="6" />
  737. <LineId Id="940" Count="0" />
  738. <LineId Id="404" Count="6" />
  739. <LineId Id="987" Count="6" />
  740. <LineId Id="1035" Count="0" />
  741. <LineId Id="994" Count="13" />
  742. <LineId Id="986" Count="0" />
  743. <LineId Id="456" Count="6" />
  744. <LineId Id="1034" Count="0" />
  745. <LineId Id="463" Count="6" />
  746. <LineId Id="941" Count="0" />
  747. <LineId Id="471" Count="7" />
  748. <LineId Id="962" Count="1" />
  749. <LineId Id="965" Count="2" />
  750. <LineId Id="964" Count="0" />
  751. <LineId Id="479" Count="5" />
  752. <LineId Id="961" Count="0" />
  753. <LineId Id="485" Count="6" />
  754. <LineId Id="942" Count="0" />
  755. <LineId Id="493" Count="13" />
  756. <LineId Id="1038" Count="0" />
  757. <LineId Id="507" Count="21" />
  758. <LineId Id="1039" Count="0" />
  759. <LineId Id="529" Count="21" />
  760. <LineId Id="1040" Count="0" />
  761. <LineId Id="551" Count="21" />
  762. <LineId Id="1041" Count="0" />
  763. <LineId Id="573" Count="20" />
  764. <LineId Id="1042" Count="0" />
  765. <LineId Id="594" Count="20" />
  766. <LineId Id="1043" Count="0" />
  767. <LineId Id="615" Count="20" />
  768. <LineId Id="1044" Count="0" />
  769. <LineId Id="636" Count="20" />
  770. <LineId Id="1045" Count="0" />
  771. <LineId Id="657" Count="265" />
  772. <LineId Id="5" Count="0" />
  773. <LineId Id="923" Count="0" />
  774. </LineIds>
  775. </POU>
  776. </TcPlcObject>