|
@@ -0,0 +1,799 @@
|
|
|
+<?xml version="1.0" encoding="utf-8"?>
|
|
|
+<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4024.12">
|
|
|
+ <POU Name="Temp" Id="{de337f70-c820-498d-b2b1-1b320905ecbd}" SpecialFunc="None">
|
|
|
+ <Declaration><![CDATA[PROGRAM Temp
|
|
|
+VAR
|
|
|
+ H_LID :ARRAY[1..10] OF Temp_controller;
|
|
|
+ H_CHAMBER :ARRAY[1..10] OF Temp_controller;
|
|
|
+ H_PEN_VALVE :Temp_controller;
|
|
|
+ H_GATE_VALVE :Temp_controller;
|
|
|
+ H_IGS :ARRAY[1..10] OF Temp_controller;
|
|
|
+ H_TAPE :ARRAY[1..10] OF Temp_controller;
|
|
|
+ H_FORELINE :ARRAY[1..20] OF Temp_controller;
|
|
|
+END_VAR
|
|
|
+]]></Declaration>
|
|
|
+ <Implementation>
|
|
|
+ <ST><;
|
|
|
+ IF H_LID[1].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.LID_HEATER_PID[1].P:=H_LID[1].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.LID_HEATER_PID[1].I:=H_LID[1].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.LID_HEATER_PID[1].D:=H_LID[1].PID_AUTO_TUNE_D;
|
|
|
+ GV.LID_HEATER_AUTO_TUNE_EN[1]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//E06 CHAMBER1 PID
|
|
|
+ H_CHAMBER[1](
|
|
|
+ ENABLE:= GV.AI.CHAMBER_Temp1<100,
|
|
|
+ AUTO_TUNE:= GV.CHAMBER_HEATER_AUTO_TUNE_EN[1],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.CHAMBER_HEATER_AUTO_TUNE_OUTPUT[1],
|
|
|
+ TEMP_SV:= GV.AO.Chamber_Temp1_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.CHAMBER_Temp1,
|
|
|
+ TEMP_RATE:=5,
|
|
|
+ PID_P:= GV_H.CHAMBER_HEATER_PID[1].P,
|
|
|
+ PID_I:= GV_H.CHAMBER_HEATER_PID[1].I,
|
|
|
+ PID_D:= GV_H.CHAMBER_HEATER_PID[1].D,
|
|
|
+ PID_Dp:= GV_H.CHAMBER_HEATER_PID[1].DP,
|
|
|
+ PID_Feedforward:= GV_H.CHAMBER_HEATER_PID[1].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.CHAMBER_HEATER_PID[1].Output_Limit,
|
|
|
+ SSR_ON=> GV.CHAMBER_HEATER_SSR_ON[1],
|
|
|
+ SSR_ON=> GV.CHAMBER_HEATER_SSR_ON[2]
|
|
|
+ );
|
|
|
+ IF H_CHAMBER[1].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.CHAMBER_HEATER_PID[1].P:=H_CHAMBER[1].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.CHAMBER_HEATER_PID[1].I:=H_CHAMBER[1].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.CHAMBER_HEATER_PID[1].D:=H_CHAMBER[1].PID_AUTO_TUNE_D;
|
|
|
+ GV.CHAMBER_HEATER_AUTO_TUNE_EN[1]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//E07 CHAMBER2 PID
|
|
|
+ H_CHAMBER[2](
|
|
|
+ ENABLE:= GV.AI.CHAMBER_Temp2<100,
|
|
|
+ AUTO_TUNE:= GV.CHAMBER_HEATER_AUTO_TUNE_EN[2],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.CHAMBER_HEATER_AUTO_TUNE_OUTPUT[2],
|
|
|
+ TEMP_SV:= GV.AO.Chamber_Temp2_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.CHAMBER_Temp2,
|
|
|
+ TEMP_RATE:=5,
|
|
|
+ PID_P:= GV_H.CHAMBER_HEATER_PID[2].P,
|
|
|
+ PID_I:= GV_H.CHAMBER_HEATER_PID[2].I,
|
|
|
+ PID_D:= GV_H.CHAMBER_HEATER_PID[2].D,
|
|
|
+ PID_Dp:= GV_H.CHAMBER_HEATER_PID[2].DP,
|
|
|
+ PID_Feedforward:= GV_H.CHAMBER_HEATER_PID[2].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.CHAMBER_HEATER_PID[2].Output_Limit,
|
|
|
+ SSR_ON=> GV.CHAMBER_HEATER_SSR_ON[3]
|
|
|
+ );
|
|
|
+ IF H_CHAMBER[2].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.CHAMBER_HEATER_PID[2].P:=H_CHAMBER[2].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.CHAMBER_HEATER_PID[2].I:=H_CHAMBER[2].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.CHAMBER_HEATER_PID[2].D:=H_CHAMBER[2].PID_AUTO_TUNE_D;
|
|
|
+ GV.CHAMBER_HEATER_AUTO_TUNE_EN[2]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//E08 CHAMBER3 PID
|
|
|
+ H_CHAMBER[3](
|
|
|
+ ENABLE:= GV.AI.CHAMBER_Temp3<100,
|
|
|
+ AUTO_TUNE:= GV.CHAMBER_HEATER_AUTO_TUNE_EN[3],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.CHAMBER_HEATER_AUTO_TUNE_OUTPUT[3],
|
|
|
+ TEMP_SV:= GV.AO.Chamber_Temp3_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.Chamber_Temp3,
|
|
|
+ TEMP_RATE:=5,
|
|
|
+ PID_P:= GV_H.CHAMBER_HEATER_PID[3].P,
|
|
|
+ PID_I:= GV_H.CHAMBER_HEATER_PID[3].I,
|
|
|
+ PID_D:= GV_H.CHAMBER_HEATER_PID[3].D,
|
|
|
+ PID_Dp:= GV_H.CHAMBER_HEATER_PID[3].DP,
|
|
|
+ PID_Feedforward:= GV_H.CHAMBER_HEATER_PID[3].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.CHAMBER_HEATER_PID[3].Output_Limit,
|
|
|
+ SSR_ON=> GV.CHAMBER_HEATER_SSR_ON[4]
|
|
|
+ );
|
|
|
+ IF H_CHAMBER[3].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.CHAMBER_HEATER_PID[3].P:=H_CHAMBER[3].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.CHAMBER_HEATER_PID[3].I:=H_CHAMBER[3].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.CHAMBER_HEATER_PID[3].D:=H_CHAMBER[3].PID_AUTO_TUNE_D;
|
|
|
+ GV.CHAMBER_HEATER_AUTO_TUNE_EN[3]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//E18 GATE VALVE PID
|
|
|
+ IF ABS(GV.AI.GATE_VALVE_Temp-GV.AO.Gate_Valve_Temp_SV)<5
|
|
|
+ THEN
|
|
|
+ H_GATE_VALVE.PID_Feedforward:=GV_H.GATE_VALVE_HEATER_PID.Feedforward;
|
|
|
+ ELSE
|
|
|
+ H_GATE_VALVE.PID_Feedforward:=0;
|
|
|
+ END_IF
|
|
|
+ H_GATE_VALVE(
|
|
|
+ ENABLE:= GV.AI.GATE_VALVE_Temp<100,
|
|
|
+ AUTO_TUNE:= GV.GATE_VALVE_HEATER_AUTO_TUNE_EN,
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.GATE_VALVE_HEATER_AUTO_TUNE_OUTPUT,
|
|
|
+ TEMP_SV:= GV.AO.Gate_Valve_Temp_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.GATE_VALVE_Temp,
|
|
|
+ TEMP_RATE:=5,
|
|
|
+ PID_P:= GV_H.GATE_VALVE_HEATER_PID.P,
|
|
|
+ PID_I:= GV_H.GATE_VALVE_HEATER_PID.I,
|
|
|
+ PID_D:= GV_H.GATE_VALVE_HEATER_PID.D,
|
|
|
+ PID_Dp:= GV_H.GATE_VALVE_HEATER_PID.DP,
|
|
|
+ PID_Output_Limit:= GV_H.GATE_VALVE_HEATER_PID.Output_Limit,
|
|
|
+ SSR_ON=> GV.GATE_VALVE_SSR_ON
|
|
|
+ );
|
|
|
+ IF H_GATE_VALVE.PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.GATE_VALVE_HEATER_PID.P:=H_GATE_VALVE.PID_AUTO_TUNE_P;
|
|
|
+ GV_H.GATE_VALVE_HEATER_PID.I:=H_GATE_VALVE.PID_AUTO_TUNE_I;
|
|
|
+ GV_H.GATE_VALVE_HEATER_PID.D:=H_GATE_VALVE.PID_AUTO_TUNE_D;
|
|
|
+ GV.GATE_VALVE_HEATER_AUTO_TUNE_EN:=FALSE;
|
|
|
+ END_IF
|
|
|
+
|
|
|
+//E31 TAPE1 PID
|
|
|
+ H_TAPE[1](
|
|
|
+ ENABLE:= GV.AI.TAPE_Temp1<120,
|
|
|
+ AUTO_TUNE:= GV.TAPE_HEATER_AUTO_TUNE_EN[1],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.TAPE_HEATER_AUTO_TUNE_OUTPUT[1],
|
|
|
+ TEMP_SV:= GV.AO.Tape_Temp1_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.TAPE_Temp1,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.TAPE_HEATER_PID[1].P,
|
|
|
+ PID_I:= GV_H.TAPE_HEATER_PID[1].I,
|
|
|
+ PID_D:= GV_H.TAPE_HEATER_PID[1].D,
|
|
|
+ PID_Dp:= GV_H.TAPE_HEATER_PID[1].DP,
|
|
|
+ PID_Feedforward:= GV_H.TAPE_HEATER_PID[1].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.TAPE_HEATER_PID[1].Output_Limit,
|
|
|
+ SSR_ON=> GV.TAPE_HEATER_SSR_ON[1]
|
|
|
+ );
|
|
|
+ IF H_TAPE[1].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.TAPE_HEATER_PID[1].P:=H_TAPE[1].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.TAPE_HEATER_PID[1].I:=H_TAPE[1].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.TAPE_HEATER_PID[1].D:=H_TAPE[1].PID_AUTO_TUNE_D;
|
|
|
+ GV.TAPE_HEATER_AUTO_TUNE_EN[1]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//E32 TAPE2 PID
|
|
|
+ H_TAPE[2](
|
|
|
+ ENABLE:= GV.AI.TAPE_Temp2<120,
|
|
|
+ AUTO_TUNE:= GV.TAPE_HEATER_AUTO_TUNE_EN[2],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.TAPE_HEATER_AUTO_TUNE_OUTPUT[2],
|
|
|
+ TEMP_SV:= GV.AO.Tape_Temp2_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.TAPE_Temp2,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.TAPE_HEATER_PID[2].P,
|
|
|
+ PID_I:= GV_H.TAPE_HEATER_PID[2].I,
|
|
|
+ PID_D:= GV_H.TAPE_HEATER_PID[2].D,
|
|
|
+ PID_Dp:= GV_H.TAPE_HEATER_PID[2].DP,
|
|
|
+ PID_Feedforward:= GV_H.TAPE_HEATER_PID[2].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.TAPE_HEATER_PID[2].Output_Limit,
|
|
|
+ SSR_ON=> GV.TAPE_HEATER_SSR_ON[2]
|
|
|
+ );
|
|
|
+ IF H_TAPE[2].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.TAPE_HEATER_PID[2].P:=H_TAPE[2].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.TAPE_HEATER_PID[2].I:=H_TAPE[2].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.TAPE_HEATER_PID[2].D:=H_TAPE[2].PID_AUTO_TUNE_D;
|
|
|
+ GV.TAPE_HEATER_AUTO_TUNE_EN[2]:=FALSE;
|
|
|
+ END_IF
|
|
|
+// TAPE3 PID
|
|
|
+ H_TAPE[3](
|
|
|
+ ENABLE:= GV.AI.TAPE_Temp3<120,
|
|
|
+ AUTO_TUNE:= GV.TAPE_HEATER_AUTO_TUNE_EN[3],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.TAPE_HEATER_AUTO_TUNE_OUTPUT[3],
|
|
|
+ TEMP_SV:= GV.AO.Tape_Temp3_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.TAPE_Temp3,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.TAPE_HEATER_PID[3].P,
|
|
|
+ PID_I:= GV_H.TAPE_HEATER_PID[3].I,
|
|
|
+ PID_D:= GV_H.TAPE_HEATER_PID[3].D,
|
|
|
+ PID_Dp:= GV_H.TAPE_HEATER_PID[3].DP,
|
|
|
+ PID_Feedforward:= GV_H.TAPE_HEATER_PID[3].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.TAPE_HEATER_PID[3].Output_Limit,
|
|
|
+ SSR_ON=> GV.TAPE_HEATER_SSR_ON[3]
|
|
|
+ );
|
|
|
+ IF H_TAPE[3].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.TAPE_HEATER_PID[3].P:=H_TAPE[3].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.TAPE_HEATER_PID[3].I:=H_TAPE[3].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.TAPE_HEATER_PID[3].D:=H_TAPE[3].PID_AUTO_TUNE_D;
|
|
|
+ GV.TAPE_HEATER_AUTO_TUNE_EN[3]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//E35 IGS1 PID
|
|
|
+ H_IGS[1](
|
|
|
+ ENABLE:= GV.AI.IGS_Temp1<50,
|
|
|
+ AUTO_TUNE:= GV.IGS_HEATER_AUTO_TUNE_EN[1],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.IGS_HEATER_AUTO_TUNE_OUTPUT[1],
|
|
|
+ TEMP_SV:= GV.AO.IGS_Temp1_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.IGS_Temp1,
|
|
|
+ TEMP_RATE:=1.5,
|
|
|
+ PID_P:= GV_H.IGS_HEATER_PID[1].P,
|
|
|
+ PID_I:= GV_H.IGS_HEATER_PID[1].I,
|
|
|
+ PID_D:= GV_H.IGS_HEATER_PID[1].D,
|
|
|
+ PID_Dp:= GV_H.IGS_HEATER_PID[1].DP,
|
|
|
+ PID_Feedforward:= GV_H.IGS_HEATER_PID[1].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.IGS_HEATER_PID[1].Output_Limit,
|
|
|
+ SSR_ON=> GV.IGS_HEATER_SSR_ON[1]
|
|
|
+ );
|
|
|
+ IF H_IGS[1].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.IGS_HEATER_PID[1].P:=H_IGS[1].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.IGS_HEATER_PID[1].I:=H_IGS[1].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.IGS_HEATER_PID[1].D:=H_IGS[1].PID_AUTO_TUNE_D;
|
|
|
+ GV.IGS_HEATER_AUTO_TUNE_EN[1]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//E36 IGS2 PID
|
|
|
+ IF GV.AI.IGS_Temp2>GV.AO.IGS_Temp2_SV+3 THEN
|
|
|
+ H_IGS[2].PID_Feedforward:=0;
|
|
|
+ ELSE
|
|
|
+ H_IGS[2].PID_Feedforward:=GV_H.IGS_HEATER_PID[2].Feedforward;
|
|
|
+
|
|
|
+ END_IF
|
|
|
+ H_IGS[2](
|
|
|
+ ENABLE:= GV.AI.IGS_Temp2<50,
|
|
|
+ AUTO_TUNE:= GV.IGS_HEATER_AUTO_TUNE_EN[2],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.IGS_HEATER_AUTO_TUNE_OUTPUT[2],
|
|
|
+ TEMP_SV:= GV.AO.IGS_Temp2_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.IGS_Temp2,
|
|
|
+ TEMP_RATE:=1.5,
|
|
|
+ PID_P:= GV_H.IGS_HEATER_PID[2].P,
|
|
|
+ PID_I:= GV_H.IGS_HEATER_PID[2].I,
|
|
|
+ PID_D:= GV_H.IGS_HEATER_PID[2].D,
|
|
|
+ PID_Dp:= GV_H.IGS_HEATER_PID[2].DP,
|
|
|
+ PID_Feedforward:= GV_H.IGS_HEATER_PID[2].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.IGS_HEATER_PID[2].Output_Limit,
|
|
|
+ SSR_ON=> GV.IGS_HEATER_SSR_ON[2]
|
|
|
+ );
|
|
|
+ IF H_IGS[2].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.IGS_HEATER_PID[2].P:=H_IGS[2].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.IGS_HEATER_PID[2].I:=H_IGS[2].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.IGS_HEATER_PID[2].D:=H_IGS[2].PID_AUTO_TUNE_D;
|
|
|
+ GV.IGS_HEATER_AUTO_TUNE_EN[2]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//FORELINE1 PID SSR6 AV102
|
|
|
+ H_FORELINE[1](
|
|
|
+ ENABLE:= GV.AI.AV102_Temp<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[1],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.FORELINE_HEATER_AUTO_TUNE_OUTPUT[1],
|
|
|
+ TEMP_SV:= GV.AO.AV102_Temp_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.AV102_Temp,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[1].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[1].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[1].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[1].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[1].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[1].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[1]);
|
|
|
+
|
|
|
+ IF H_FORELINE[1].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[1].P:=H_FORELINE[1].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[1].I:=H_FORELINE[1].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[1].D:=H_FORELINE[1].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[1]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//FORELINE2 PID SSR7 AV101
|
|
|
+ H_FORELINE[2](
|
|
|
+ ENABLE:= GV.AI.AV101_Temp<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[2],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.FORELINE_HEATER_AUTO_TUNE_OUTPUT[2],
|
|
|
+ TEMP_SV:= GV.AO.AV101_Temp_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.AV101_Temp,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[2].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[2].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[2].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[2].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[2].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[2].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[2]);
|
|
|
+
|
|
|
+ IF H_FORELINE[2].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[2].P:=H_FORELINE[2].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[2].I:=H_FORELINE[2].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[2].D:=H_FORELINE[2].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[2]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//FORELINE3 PID SSR8 AV106
|
|
|
+ H_FORELINE[3](
|
|
|
+ ENABLE:= GV.AI.AV106_Temp<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[3],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.FORELINE_HEATER_AUTO_TUNE_OUTPUT[3],
|
|
|
+ TEMP_SV:= GV.AO.AV106_Temp_SV ,
|
|
|
+ TEMP_ACTUAL:= GV.AI.AV106_Temp,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[3].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[3].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[3].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[3].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[3].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[3].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[3]);
|
|
|
+
|
|
|
+ IF H_FORELINE[3].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[3].P:=H_FORELINE[3].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[3].I:=H_FORELINE[3].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[3].D:=H_FORELINE[3].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[3]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//FORELINE4 PID SSR9 BA101
|
|
|
+ H_FORELINE[4](
|
|
|
+ ENABLE:= GV.AI.BA01_Temp<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[4],
|
|
|
+ AUTO_TUNE_OUTPUT:=GV.FORELINE_HEATER_AUTO_TUNE_OUTPUT[4],
|
|
|
+ TEMP_SV:= GV.AO.BA01_Temp_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.BA01_Temp,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[4].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[4].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[4].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[4].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[4].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[4].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[4]);
|
|
|
+
|
|
|
+ IF H_FORELINE[4].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[4].P:=H_FORELINE[4].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[4].I:=H_FORELINE[4].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[4].D:=H_FORELINE[4].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[4]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//FORELINE5 PID SS10 VG103
|
|
|
+ H_FORELINE[5](
|
|
|
+ ENABLE:= GV.AI.VG103_Pipe_Temp<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[5],
|
|
|
+ TEMP_SV:= GV.AO.VG103_Pipe_Temp_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.VG103_Pipe_Temp,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[5].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[5].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[5].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[5].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[5].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[5].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[5]);
|
|
|
+
|
|
|
+ IF H_FORELINE[5].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[5].P:=H_FORELINE[5].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[5].I:=H_FORELINE[5].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[5].D:=H_FORELINE[5].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[5]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//FORELINE6 PID SSR11 EXHAUST1-6
|
|
|
+ H_FORELINE[6](
|
|
|
+ ENABLE:= GV.AI.Exhaust1_6_Temp<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[6],
|
|
|
+ TEMP_SV:= GV.AO.Exhaust1_6_Temp_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.Exhaust1_6_Temp,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[6].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[6].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[6].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[6].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[6].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[6].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[6]);
|
|
|
+
|
|
|
+ IF H_FORELINE[6].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[6].P:=H_FORELINE[6].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[6].I:=H_FORELINE[6].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[6].D:=H_FORELINE[6].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[6]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//FORELINE7 PID SSR12 EXHAUST7-8
|
|
|
+ H_FORELINE[7](
|
|
|
+ ENABLE:= GV.AI.Exhaust7_8_Temp<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[7],
|
|
|
+ TEMP_SV:= GV.AO.Exhaust7_8_Temp_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.Exhaust7_8_Temp,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[7].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[7].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[7].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[7].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[7].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[7].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[7]);
|
|
|
+
|
|
|
+ IF H_FORELINE[7].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[7].P:=H_FORELINE[7].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[7].I:=H_FORELINE[7].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[7].D:=H_FORELINE[7].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[7]:=FALSE;
|
|
|
+ END_IF
|
|
|
+//FORELINE8 PID SSR13
|
|
|
+ H_FORELINE[8](
|
|
|
+ ENABLE:= GV.AI.VG101_Pipe_Temp<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[8],
|
|
|
+ TEMP_SV:= GV.AO.VG101_Pipe_Temp_SV,
|
|
|
+ TEMP_ACTUAL:= GV.AI.VG101_Pipe_Temp,
|
|
|
+ TEMP_RATE:=10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[8].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[8].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[8].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[8].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[8].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[8].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[8]);
|
|
|
+
|
|
|
+ IF H_FORELINE[8].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[8].P:=H_FORELINE[8].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[8].I:=H_FORELINE[8].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[8].D:=H_FORELINE[8].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[8]:=FALSE;
|
|
|
+ END_IF
|
|
|
+(* //FORELINE9 PID
|
|
|
+ H_FORELINE[9](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp9<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[9],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[9],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp9,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[9].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[9].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[9].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[9].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[9].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[9].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[9]);
|
|
|
+
|
|
|
+ IF H_FORELINE[9].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[9].P:=H_FORELINE[9].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[9].I:=H_FORELINE[9].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[9].D:=H_FORELINE[9].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[9]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE10 PID
|
|
|
+ H_FORELINE[10](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp10<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[10],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[10],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp10,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[10].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[10].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[10].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[10].DP,
|
|
|
+ PID_Feedforward:= GV_H.FORELINE_HEATER_PID[10].Feedforward,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[10].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[10]);
|
|
|
+
|
|
|
+ IF H_FORELINE[10].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[10].P:=H_FORELINE[10].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[10].I:=H_FORELINE[10].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[10].D:=H_FORELINE[10].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[10]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE11 PID
|
|
|
+ H_FORELINE[11](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp11<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[11],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[11],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp11,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[11].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[11].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[11].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[11].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[11].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[11]);
|
|
|
+
|
|
|
+ IF H_FORELINE[11].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[11].P:=H_FORELINE[11].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[11].I:=H_FORELINE[11].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[11].D:=H_FORELINE[11].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[11]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE12 PID
|
|
|
+ H_FORELINE[12](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp12<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[12],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[12],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp12,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[12].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[12].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[12].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[12].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[12].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[12]);
|
|
|
+
|
|
|
+ IF H_FORELINE[12].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[12].P:=H_FORELINE[12].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[12].I:=H_FORELINE[12].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[12].D:=H_FORELINE[12].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[12]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE13 PID
|
|
|
+ H_FORELINE[13](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp13<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[13],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[13],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp13,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[13].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[13].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[13].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[13].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[13].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[13]);
|
|
|
+
|
|
|
+ IF H_FORELINE[13].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[13].P:=H_FORELINE[13].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[13].I:=H_FORELINE[13].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[13].D:=H_FORELINE[13].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[13]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE14 PID
|
|
|
+ H_FORELINE[14](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp14<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[14],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[14],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp14,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[14].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[14].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[14].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[14].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[14].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[14]);
|
|
|
+
|
|
|
+ IF H_FORELINE[14].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[14].P:=H_FORELINE[14].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[14].I:=H_FORELINE[14].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[14].D:=H_FORELINE[14].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[14]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE15 PID
|
|
|
+ H_FORELINE[15](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp15<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[15],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[15],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp15,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[15].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[15].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[15].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[15].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[15].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[15]);
|
|
|
+
|
|
|
+ IF H_FORELINE[15].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[15].P:=H_FORELINE[15].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[15].I:=H_FORELINE[15].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[15].D:=H_FORELINE[15].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[15]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE16 PID
|
|
|
+ H_FORELINE[16](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp16<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[16],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[16],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp16,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[16].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[16].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[16].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[16].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[16].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[16]);
|
|
|
+
|
|
|
+ IF H_FORELINE[16].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[16].P:=H_FORELINE[16].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[16].I:=H_FORELINE[16].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[16].D:=H_FORELINE[16].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[16]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE17 PID
|
|
|
+ H_FORELINE[17](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp17<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[17],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[17],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp17,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[17].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[17].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[17].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[17].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[17].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[17]);
|
|
|
+
|
|
|
+ IF H_FORELINE[17].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[17].P:=H_FORELINE[17].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[17].I:=H_FORELINE[17].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[17].D:=H_FORELINE[17].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[17]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE18 PID
|
|
|
+ H_FORELINE[18](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp18<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[18],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[18],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp18,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[18].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[18].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[18].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[18].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[18].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[18]);
|
|
|
+
|
|
|
+ IF H_FORELINE[18].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[18].P:=H_FORELINE[18].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[18].I:=H_FORELINE[18].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[18].D:=H_FORELINE[18].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[18]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE19 PID
|
|
|
+ H_FORELINE[19](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp19<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[19],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[19],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp19,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[19].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[19].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[19].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[19].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[19].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[19]);
|
|
|
+
|
|
|
+ IF H_FORELINE[19].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[19].P:=H_FORELINE[19].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[19].I:=H_FORELINE[19].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[19].D:=H_FORELINE[19].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[19]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ //FORELINE20 PID
|
|
|
+ H_FORELINE[20](
|
|
|
+ ENABLE:= GV.AI.FORELINE_Temp20<120,
|
|
|
+ AUTO_TUNE:= GV.FORELINE_HEATER_AUTO_TUNE_EN[20],
|
|
|
+ TEMP_SV:= FORELINE_TEMP_SV[20],
|
|
|
+ TEMP_ACTUAL:= GV.AI.FORELINE_Temp20,
|
|
|
+ PID_P:= GV_H.FORELINE_HEATER_PID[20].P,
|
|
|
+ PID_I:= GV_H.FORELINE_HEATER_PID[20].I,
|
|
|
+ PID_D:= GV_H.FORELINE_HEATER_PID[20].D,
|
|
|
+ PID_Dp:= GV_H.FORELINE_HEATER_PID[20].DP,
|
|
|
+ PID_Feedforward:= ,
|
|
|
+ PID_Output_Limit:= GV_H.FORELINE_HEATER_PID[20].Output_Limit,
|
|
|
+ SSR_ON=> GV.FORELINE_HEATER_SSR_ON[20]);
|
|
|
+
|
|
|
+ IF H_FORELINE[20].PID_AUTO_TUNE_DONE
|
|
|
+ THEN
|
|
|
+ GV_H.FORELINE_HEATER_PID[20].P:=H_FORELINE[20].PID_AUTO_TUNE_P;
|
|
|
+ GV_H.FORELINE_HEATER_PID[20].I:=H_FORELINE[20].PID_AUTO_TUNE_I;
|
|
|
+ GV_H.FORELINE_HEATER_PID[20].D:=H_FORELINE[20].PID_AUTO_TUNE_D;
|
|
|
+ GV.FORELINE_HEATER_AUTO_TUNE_EN[20]:=FALSE;
|
|
|
+ END_IF
|
|
|
+ *)]]></ST>
|
|
|
+ </Implementation>
|
|
|
+ <LineIds Name="Temp">
|
|
|
+ <LineId Id="33" Count="6" />
|
|
|
+ <LineId Id="41" Count="5" />
|
|
|
+ <LineId Id="1023" Count="0" />
|
|
|
+ <LineId Id="47" Count="5" />
|
|
|
+ <LineId Id="935" Count="0" />
|
|
|
+ <LineId Id="54" Count="14" />
|
|
|
+ <LineId Id="1022" Count="0" />
|
|
|
+ <LineId Id="69" Count="10" />
|
|
|
+ <LineId Id="81" Count="6" />
|
|
|
+ <LineId Id="926" Count="0" />
|
|
|
+ <LineId Id="159" Count="5" />
|
|
|
+ <LineId Id="1021" Count="0" />
|
|
|
+ <LineId Id="165" Count="7" />
|
|
|
+ <LineId Id="938" Count="0" />
|
|
|
+ <LineId Id="174" Count="13" />
|
|
|
+ <LineId Id="1020" Count="0" />
|
|
|
+ <LineId Id="188" Count="6" />
|
|
|
+ <LineId Id="937" Count="0" />
|
|
|
+ <LineId Id="196" Count="13" />
|
|
|
+ <LineId Id="1019" Count="0" />
|
|
|
+ <LineId Id="210" Count="7" />
|
|
|
+ <LineId Id="219" Count="6" />
|
|
|
+ <LineId Id="338" Count="6" />
|
|
|
+ <LineId Id="346" Count="5" />
|
|
|
+ <LineId Id="1018" Count="0" />
|
|
|
+ <LineId Id="352" Count="5" />
|
|
|
+ <LineId Id="936" Count="0" />
|
|
|
+ <LineId Id="359" Count="14" />
|
|
|
+ <LineId Id="1037" Count="0" />
|
|
|
+ <LineId Id="374" Count="6" />
|
|
|
+ <LineId Id="939" Count="0" />
|
|
|
+ <LineId Id="382" Count="13" />
|
|
|
+ <LineId Id="1036" Count="0" />
|
|
|
+ <LineId Id="396" Count="6" />
|
|
|
+ <LineId Id="940" Count="0" />
|
|
|
+ <LineId Id="404" Count="6" />
|
|
|
+ <LineId Id="987" Count="6" />
|
|
|
+ <LineId Id="1035" Count="0" />
|
|
|
+ <LineId Id="994" Count="13" />
|
|
|
+ <LineId Id="986" Count="0" />
|
|
|
+ <LineId Id="456" Count="6" />
|
|
|
+ <LineId Id="1034" Count="0" />
|
|
|
+ <LineId Id="463" Count="6" />
|
|
|
+ <LineId Id="941" Count="0" />
|
|
|
+ <LineId Id="471" Count="7" />
|
|
|
+ <LineId Id="962" Count="1" />
|
|
|
+ <LineId Id="965" Count="2" />
|
|
|
+ <LineId Id="964" Count="0" />
|
|
|
+ <LineId Id="479" Count="5" />
|
|
|
+ <LineId Id="961" Count="0" />
|
|
|
+ <LineId Id="485" Count="6" />
|
|
|
+ <LineId Id="942" Count="0" />
|
|
|
+ <LineId Id="493" Count="13" />
|
|
|
+ <LineId Id="1038" Count="0" />
|
|
|
+ <LineId Id="507" Count="21" />
|
|
|
+ <LineId Id="1039" Count="0" />
|
|
|
+ <LineId Id="529" Count="21" />
|
|
|
+ <LineId Id="1040" Count="0" />
|
|
|
+ <LineId Id="551" Count="21" />
|
|
|
+ <LineId Id="1041" Count="0" />
|
|
|
+ <LineId Id="573" Count="20" />
|
|
|
+ <LineId Id="1042" Count="0" />
|
|
|
+ <LineId Id="594" Count="20" />
|
|
|
+ <LineId Id="1043" Count="0" />
|
|
|
+ <LineId Id="615" Count="20" />
|
|
|
+ <LineId Id="1044" Count="0" />
|
|
|
+ <LineId Id="636" Count="20" />
|
|
|
+ <LineId Id="1045" Count="0" />
|
|
|
+ <LineId Id="657" Count="265" />
|
|
|
+ <LineId Id="5" Count="0" />
|
|
|
+ <LineId Id="923" Count="0" />
|
|
|
+ </LineIds>
|
|
|
+ </POU>
|
|
|
+</TcPlcObject>
|