|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FB200 SEQ200 GLB : Programme selection + jump distributor |
|
|
|
Network 1: Pre-Setting IF NOT "HMI SYS".Support.FirstCycle_TON.Q THEN "HMI KEY".Execute.Pressure_Maintenance_in_STH_Start := TRUE; RETURN; END_IF; |
|
|
|
Network 2: Show message on HMI #Support.Pressure_Maintenance_reached := ABS("DI OUT P03".PT302.Support.Out_Scale - "HMI KEY".SetPoint.PT302_PressureMaintainace) <= "HMI KEY".SetPoint.PT302_PressureHysteresis; #Support.Unexpected_error_whilst_production := #SSM.S."1_FAULT_00_15".%X0; |
|
|
|
Network 3: Force production abort IF "HMI KEY".Execute.Production_Abort THEN "DI MAIN GLB".P00.AutoCmpltMa_run := #SSM.S."1_FAULT_00_15".%X0 := #Support.Production_Preparation_Complete := #Support.SBT_Product_Inlet_Complete := #Support.Product_Inlet_Manual_Complete := #Support.CIP_Cooling_after_Production_Complete := #Support.CIP_STH_Ringsing_Complete := #Support.CIP_with_Lye_running_Complete := #Support.CIP_with_Water_running_Complete := FALSE; END_IF; |
|
|
|
Network 4: Programme selection started IF NOT "DI MAIN GLB".P00.AutoCmpltMa_run THEN #Support.SEQ202_Start := #Support.SEQ220_Start := #Support.SEQ221_Start := #Support.SEQ222_Start := #Support.SEQ223_Start := #Support.SEQ240_Start := #Support.SEQ241_Start := #Support.SEQ242_Start := #Support.SEQ243_Start := #Support.SEQ244_Start := #Support.SEQ230_Start := FALSE; ELSIF NOT "DI MAIN GLB".SET.SSM.S.steps AND "DI MAIN GLB".P00.CmpltMaRun_Imp THEN "DI MAIN GLB".P00.OM_HOME_POS_ON := #Support.SEQ201_Start := FALSE; #Support.SEQ220_Start := #Support.Prodction_Selected AND NOT #Support.Production_Preparation_Complete; #Support.SEQ221_Start := #Support.Prodction_Selected AND #Support.Production_Preparation_Complete AND NOT #Support.SBT_Product_Inlet_Complete; #Support.SEQ222_Start := #Support.Prodction_Selected AND #Support.SBT_Product_Inlet_Complete; #Support.SEQ223_Start := #Support.Prodction_Selected AND "DI MAIN GLB".FILLER.TO_STH.Request_Production_End; #Support.SEQ202_Start := #Support.SBT_Drainage_Selected; #Support.SEQ230_Start := #Support.Prodction_Selected AND #SSM.S."1_FAULT_00_15".%X0 AND NOT #Support.SEQ202_Start; #Support.SEQ240_Start := #Support.CIP_Selected AND "HMI KEY".Execute.CIP_BufferTank_With_Lye AND NOT (#Support.CIP_with_Lye_running_Complete OR "HMI KEY".Execute.CIP_BufferTank_With_Water); #Support.SEQ241_Start := #Support.CIP_Selected AND #Support.CIP_with_Lye_running_Complete; #Support.SEQ242_Start := #Support.CIP_Selected AND "HMI KEY".Execute.CIP_BufferTank_With_Water AND NOT (#Support.CIP_with_Water_running_Complete OR "HMI KEY".Execute.CIP_BufferTank_With_Lye); #Support.SEQ243_Start := #Support.CIP_Selected AND #Support.CIP_STH_Ringsing_Complete AND NOT #Support.CIP_Cooling_after_Production_Complete AND (#Support.CIP_with_Lye_running_Complete OR #Support.CIP_with_Water_running_Complete); #Support.SEQ244_Start := #Support.CIP_Selected AND #Support.CIP_Cooling_after_Production_Complete; #Support.SEQ200_Start := #Support.Prodction_Selected OR #Support.SBT_Drainage_Selected OR #Support.CIP_Selected; IF #Support.SEQ202_Start THEN #SSM.S."1_FAULT_00_15".%X0 := #Support.Production_Preparation_Complete := #Support.SBT_Product_Inlet_Complete := #Support.Product_Inlet_Manual_Complete := #Support.CIP_Cooling_after_Production_Complete := #Support.CIP_STH_Ringsing_Complete := #Support.CIP_with_Lye_running_Complete := #Support.CIP_with_Water_running_Complete := FALSE; END_IF; END_IF; |
|
|
|
Network 5: Programme BASIC condition IF "DI MAIN GLB".SET.SSM.S.steps AND "DI MAIN GLB".P00.CmpltMaRun_Imp THEN #Support.SEQ200_Start := #Support.SEQ201_Start := TRUE; #Support.Prodction_Selected := #Support.CIP_Selected := #SSM.S."1_FAULT_00_15".%X0 := FALSE; END_IF; |
|
|
|
Network 6: Programme selection PRODUCTION IF #Support.Select_Production AND NOT (#Support.Prodction_Selected OR "DI MAIN GLB".P00.AutoCmpltMa_run) THEN #Support.Prodction_Selected := "DI MAIN GLB".FILLER.TO_STH.Request_Production_Start;// OR "DI MAIN GLB".FILLER.TO_STH.Request_Production_End; #Support.SBT_Drainage_Selected := #Support.CIP_Selected := FALSE; END_IF; |
|
|
|
Network 7: Programme selection DRAINAGE IF #Support.Select_Drainage AND NOT (#Support.SBT_Drainage_Selected OR "DI MAIN GLB".P00.AutoCmpltMa_run) THEN #Support.SBT_Drainage_Selected := TRUE; #Support.Prodction_Selected := #Support.CIP_Selected := FALSE; END_IF; |
|
|
|
Network 8: Programme selection CIP IF #Support.Select_CIP AND NOT (#Support.CIP_Selected OR "DI MAIN GLB".P00.AutoCmpltMa_run) THEN #Support.CIP_Selected := ("HMI KEY".Execute.CIP_BufferTank_With_Water XOR "HMI KEY".Execute.CIP_BufferTank_With_Lye) OR "HMI KEY".Execute.CIP_Without_BufferTank; IF #Support.CIP_Selected THEN #Support.Prodction_Selected := #Support.SBT_Drainage_Selected := FALSE; END_IF; END_IF; |
|
|
|
Network 9: Define unexpected error whilst production #Support.DlyErrorOn(IN := #Support.SEQ222_Start AND "DI OUT P02".V204.Input > "HMI KEY".SetPoint.Temperature_Deviation, PT := t#5000ms); IF #Support.DlyErrorOn.Q THEN #SSM.S."1_FAULT_00_15".%X0 := TRUE; END_IF; |
|
|
|
Network 10: Create delay steps off #Support.DlyStepsOff(IN := #Support.SEQ200_Start AND NOT "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q, PT := t#500ms); #SSM.S.steph := NOT "DI MAIN GLB".P00.AutoCmpltMa_run AND (#Support.Prodction_Selected OR #Support.CIP_Selected); #SSM.S.steps := #Support.DlyStepsOff.Q; |
|
|
|
Network 11: Define SSM last step #tmp_support_steph := NOT ("E00 Estp FdB" AND "E00 AirPressur ok" AND ("DI MAIN GLB".P00.AutoCmpltMa_run OR "DI MAIN GLB".SET.SSM.S.steps)); #SSM(LAST_STEP := 11); |
|
|
|
Network 12: Jump distributor corresponds to SEQ200 CASE #SSM.S.stepact OF 0: // waiting for sequencer to start IF #SSM.S.steps THEN #SSM.S.stepd := #Support.SEQ202_Start OR #Support.SEQ201_Start; IF #Support.SEQ220_Start THEN // Production temperature preparation with water #SSM.S.stepnew := 2; #SSM.S.stepd := TRUE; #Support.SEQ201_Start := FALSE; ELSIF #Support.SEQ221_Start THEN // Product inlet + filling SBT #SSM.S.stepnew := 3; #SSM.S.stepd := TRUE; ELSIF #Support.SEQ222_Start THEN // Production #SSM.S.stepnew := 4; #SSM.S.stepd := TRUE; ELSIF #Support.SEQ230_Start THEN // Error whilst production #SSM.S.stepnew := 5; #SSM.S.stepd := TRUE; ELSIF #Support.SEQ223_Start THEN // Production end #SSM.S.stepnew := 6; #SSM.S.stepd := TRUE; ELSIF #Support.SEQ240_Start THEN // CIP with Lye #SSM.S.stepnew := 7; #SSM.S.stepd := TRUE; ELSIF #Support.SEQ241_Start THEN // CIP STH rinsing #SSM.S.stepnew := 8; #SSM.S.stepd := TRUE; ELSIF #Support.SEQ242_Start THEN // CIP with water #SSM.S.stepnew := 9; #SSM.S.stepd := TRUE; ELSIF #Support.SEQ243_Start THEN // Cooling after production #SSM.S.stepnew := 10; #SSM.S.stepd := TRUE; ELSIF #Support.SEQ244_Start THEN // STH draining #SSM.S.stepnew := 11; #SSM.S.stepd := TRUE; END_IF; END_IF;
1: // Implement basic condition #SEQ201.SSM.S.steph := #tmp_support_steph; #SEQ201.DlyStepsOff(IN := #Support.SEQ201_Start, PT := t#200ms); #SEQ201.SSM.S.steps := #SEQ201.DlyStepsOff.Q; #SEQ201(); IF (NOT #SEQ201.SSM.S.step0 OR #SSM.S.DlyOff.Q) AND NOT #Support.SEQ202_Start THEN RETURN; ELSE "DI MAIN GLB".P00.OM_HOME_POS_ON := FALSE; IF #Support.SEQ220_Start THEN #SSM.S.stepd := TRUE; END_IF; END_IF;
// Start SBT Drainage #SEQ202.SSM.S.steph := #tmp_support_steph; #SEQ202.DlyStepsOff(IN := #Support.SEQ202_Start, PT := t#200ms); #SEQ202.SSM.S.steps := #SEQ202.DlyStepsOff.Q; #SEQ202(); IF NOT #SEQ202.SSM.S.step0 OR #SSM.S.DlyOff.Q THEN RETURN; ELSE "DI MAIN GLB".P00.AutoCmpltMa_run := FALSE; END_IF;
2: // Filling STH-System with watter + circulation #SEQ220.DlyStepsOff(IN := #Support.SEQ220_Start, PT := t#200ms); #SEQ220.SSM.S.steph := #tmp_support_steph; #SEQ220.SSM.S.steps := #SEQ220.DlyStepsOff.Q; #SEQ220(); #SSM.S.stepd := #SEQ220.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;
3: // Production preparation start IF #SSM.S.stepfc THEN #Support.SEQ221_Start := TRUE; ELSE #SEQ221.DlyStepsOff(IN := #Support.SEQ221_Start, PT := t#200ms); #SEQ221.SSM.S.steph := #tmp_support_steph; #SEQ221.SSM.S.steps := #SEQ221.DlyStepsOff.Q; #SEQ221(); #SSM.S.stepd := #SEQ221.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q; END_IF;
4: // Production IF #SSM.S.stepfc THEN #Support.SEQ222_Start := NOT #SSM.S."1_FAULT_00_15".%X0; ELSE #SEQ222.DlyStepsOff(IN := #Support.SEQ222_Start, PT := t#200ms); #SEQ222.SSM.S.steph := #tmp_support_steph; #SEQ222.SSM.S.steps := #SEQ222.DlyStepsOff.Q; #SEQ222(); END_IF; IF #SEQ222.SSM.S.step0 AND #SSM.S."1_FAULT_00_15".%X0 THEN #SSM.S.stepd := TRUE; ELSIF #SEQ222.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN #SSM.S.stepnew := 6; #SSM.S.stepd := TRUE; END_IF;
5: // Unexpected error whilst production IF #SSM.S.stepfc THEN #Support.SEQ230_Start := TRUE; ELSE #SEQ230.DlyStepsOff(IN := #Support.SEQ230_Start, PT := t#200ms); #SEQ230.SSM.S.steph := #tmp_support_steph; #SEQ230.SSM.S.steps := #SEQ230.DlyStepsOff.Q; #SEQ230(); END_IF; IF #SEQ230.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN #SSM.S.stepnew := 3; #SSM.S.stepd := TRUE; #SSM.S."1_FAULT_00_15".%X0 := FALSE; END_IF;
6: // Production end IF #SSM.S.stepfc THEN #Support.SEQ223_Start := TRUE; ELSE #SEQ223.DlyStepsOff(IN := #Support.SEQ223_Start, PT := t#200ms); #SEQ223.SSM.S.steph := #tmp_support_steph; #SEQ223.SSM.S.steps := #SEQ223.DlyStepsOff.Q; #SEQ223(); END_IF; IF NOT #SEQ223.SSM.S.step0 OR #SSM.S.DlyOff.Q THEN RETURN; ELSE "DI MAIN GLB".P00.AutoCmpltMa_run := FALSE; END_IF;
7: // CIP with Lye #SEQ240.DlyStepsOff(IN := #Support.SEQ240_Start, PT := t#200ms); #SEQ240.SSM.S.steph := #tmp_support_steph; #SEQ240.SSM.S.steps := #SEQ240.DlyStepsOff.Q; #SEQ240(); #SSM.S.stepd := #SEQ240.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;
8: // STH Rinsing IF #SSM.S.stepfc THEN #Support.SEQ241_Start := TRUE; ELSE #SEQ241.DlyStepsOff(IN := #Support.SEQ241_Start, PT := t#200ms); #SEQ241.SSM.S.steph := #tmp_support_steph; #SEQ241.SSM.S.steps := #SEQ241.DlyStepsOff.Q; #SEQ241(); IF #SEQ241.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN #SSM.S.stepnew := 10; #SSM.S.stepd := TRUE; END_IF; END_IF;
9: // CIP with Water #SEQ242.DlyStepsOff(IN := #Support.SEQ242_Start, PT := t#200ms); #SEQ242.SSM.S.steph := #tmp_support_steph; #SEQ242.SSM.S.steps := #SEQ242.DlyStepsOff.Q; #SEQ242(); #SSM.S.stepd := #SEQ242.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;
10: // Cooling after production IF #SSM.S.stepfc THEN #Support.SEQ243_Start := TRUE; ELSE #SEQ243.DlyStepsOff(IN := #Support.SEQ243_Start, PT := t#200ms); #SEQ243.SSM.S.steph := #tmp_support_steph; #SEQ243.SSM.S.steps := #SEQ243.DlyStepsOff.Q; #SEQ243(); #SSM.S.stepd := #SEQ243.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q; END_IF;
11: // STH draining IF #SSM.S.stepfc THEN #Support.SEQ244_Start := TRUE; ELSE #SEQ244.DlyStepsOff(IN := #Support.SEQ244_Start, PT := t#200ms); #SEQ244.SSM.S.steph := #tmp_support_steph; #SEQ244.SSM.S.steps := #SEQ244.DlyStepsOff.Q; #SEQ244(); IF #SEQ244.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN #SSM.S.stepnew := 1; #Support.CIP_Selected := "HMI KEY".Execute.Pressure_Maintenance_with_CO2 := "DI MAIN GLB".P00.OM_AUTO_ON := FALSE; #Support.SEQ201_Start := "DI MAIN GLB".SET.SSM.S.steps := "DI MAIN GLB".P00.OM_HOME_POS_ON := "HMI KEY".Execute.Pressure_Maintenance_with_Air := "HMI KEY".Execute.Pressure_Maintenance_in_STH_Start := #SSM.S.stepd := TRUE; END_IF; END_IF; END_CASE; |
|