|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SEQ225 GLB : Filling sterile buffer tank 2 with product (SBT2) |
|
|
|
Network 1: Define SSM last step #SSM(LAST_STEP := 1); |
|
|
|
Network 2: FIT101 Metering product access to SBT2 IF "E01 FIT101 pulse" AND NOT #FIT101_Pulse_REg THEN IF "DI OUT P01".Support.FIT101_Volum_meter >= "HMI KEY".SetPoint.FIT101_Filling_SBT2_with_Product THEN #Filling_SBT2_with_product_done := TRUE; ELSE "DI OUT P01".Support.FIT101_Volum_meter := "DI OUT P01".Support.FIT101_Volum_meter + 1.0; END_IF; END_IF; #FIT101_Pulse_REg := "E01 FIT101 pulse" OR #Filling_SBT2_with_product_done; #tmp_lic201_required_buffer_level_sbt2 := REAL_TO_INT("HMI KEY".SetPoint.FIT101_Filling_SBT2_with_Product); |
|
|
|
Network 3: Assign actors required state with or without hold #SSM.S.stepllo := NOT (#SSM.S.step0 OR #SSM.S.steph); #tmp_llo_lic402_min := "HMI KEY".SYS.GLB.SliderControl > "HMI KEY".SetPoint.LIC402_Level_PST_min AND #SSM.S.stepllo; "DI OUT P01".G120C.DRV.Support.Cmd_MovJogWP := "HMI KEY".P01.G120C.F12_Enable_WP AND #SSM.S.stepllo; "DI OUT P01".M101.DRV.CmdExe_WP := "HMI KEY".P01.M101.F12_Enable_WP AND NOT #SEQ500.Product_flow_under_heated AND #SSM.S.stepllo; "DI OUT P03".M301.DRV.CmdExe_WP := "HMI KEY".P03.M301.F12_Enable_WP AND "DI OUT P01".G120C.DRV.Support.LampON; "DI OUT P02".V201.VLV_O.CmdExe_WP := "HMI KEY".P02.V201.F12_Enable_WP AND NOT #SSM.S.step0; "DI OUT P03".G320C.DRV.Support.Cmd_MovAbso := "HMI KEY".P03.G320C.F12_Enable_WP; "DI OUT P04".M401.DRV.CmdExe_WP := "HMI KEY".P04.M401.F12_Enable_WP AND #tmp_llo_lic402_min AND #SSM.S.stepllo; "DI OUT P01".V101.VLV_O.CmdExe_WP := "HMI KEY".P01.V101.F12_Enable_WP; "DI OUT P01".V107.VLV_O.CmdExe_WP := "HMI KEY".P01.V107.F12_Enable_WP AND NOT #SEQ500.Product_flow_under_heated; "DI OUT P03".V303.VLV_O.CmdExe_WP := "HMI KEY".P03.V303.F12_Enable_WP AND NOT #SSM.S.step0; "DI OUT P03".V306.VLV_O.CmdExe_WP := "HMI KEY".P03.V306.F12_Enable_WP AND NOT #SSM.S.step0; |
|
|
|
Network 4: CASE-Function correspond to actual SSM CASE #SSM.S.stepact OF 0: // Waiting for sequencer to start #SSM.S.stepd := #SSM.S.steps;
1: // Assign drivers velocity IF #SSM.S.DlyOff.Q THEN "DI OUT P01".G120C.DRV.Support.SetVelo := "HMI KEY".SetPoint.G120C_Product_Inlet_SBT2_RPM; IF "DI OUT P04".G420C.DRV.Support.SetVelo < "HMI KEY".SetPoint.G420C_Product_Inlet_PST_min THEN "DI OUT P04".G420C.DRV.Support.SetVelo := #SEQ602.G420C_product_inlet_RPM := "HMI KEY".SetPoint.G420C_Product_Inlet_PST_min; END_IF; "DI OUT P04".G420C.DRV.Support.SetVelo := #SEQ602.G420C_product_inlet_RPM; "DI OUT P03".G320C.DRV.MC_MoveVelocity.Velocity := "HMI KEY".SetPoint.G320C_Heating_Circular_Flow_RPM; // Assign actors pre-setting "DI OUT P03".V307.Mode := 3; "DI OUT P03".V307.ModeActivate := TRUE; RETURN; ELSE "DI OUT P03".V307.ModeActivate := FALSE; "DI OUT P03".V307.Setpoint := #SEQ500.Set_Point_Temperature * "HMI KEY".SetPoint.V307_Steam_Regulating_Factor; // Calculate required temperature #SEQ500.SSM.S.steph := "DI MAIN GLB".SEQ200.SEQ225_GLB.SSM.S.steph OR NOT "DI OUT P01".G120C.DRV.Support.Cmd_MovJogWP; #SEQ500.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ225_Start AND NOT "DI MAIN GLB".P00.TOF_CmpltMaOFF_Pulse.Q; #SEQ500(); #SSM.S.c1.set := REAL_TO_INT(#SEQ500.Temperature_holding_time); "HMI KEY".Message.Temperature_Actual_Hold_Time := #SSM.S.c1.act; #SSM.S.c1.start := "HMI KEY".Message.TT302_Medium_Temperature_reached; // G420C product circulation set value RPM IF #SEQ602.G420C_product_inlet_RPM * 1.5 < "HMI KEY".SetPoint.G420C_Product_Inlet_PST_max THEN "DI OUT P04".G420C.DRV.Support.SetVelo := #SEQ602.G420C_product_inlet_RPM; END_IF; END_IF; // Calculation flow capacity PST (Primary Settling Tank) #SEQ602.SSM.S.steph := "DI MAIN GLB".SEQ200.SEQ225_GLB.SSM.S.steph OR NOT "DI OUT P04".G420C.DRV.Support.Cmd_MovJogWP; #SEQ602.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ225_Start AND NOT "DI MAIN GLB".P00.TOF_CmpltMaOFF_Pulse.Q; #SEQ602(); // Pressure maintenance in SBT1 and SBT2 "HMI KEY".Execute.PT101_Pressure_Maintenace_SBT1 := "HMI KEY".Execute.PT201_Pressure_Maintenace_SBT2 := TRUE; // Waiting for step conditions to be met IF "HMI KEY".Message.PT101_Pressure_Maintenance_reached AND "HMI KEY".Message.PT201_Pressure_Maintenance_reached AND "HMI KEY".P02.GLB.SliderControl >= #tmp_lic201_required_buffer_level_sbt2 OR #SEQ500.Product_flow_under_heated OR #SEQ500.Product_flow_over_heated THEN "HMI KEY".Message.SBT2_Product_Filling_Complete := NOT (#SEQ500.Product_flow_over_heated OR #SEQ500.Product_flow_under_heated); "DI OUT P01".Support.FIT101_Volum_meter := 0.0; "DI MAIN GLB".SEQ200.Support.SEQ225_Start := FALSE; END_IF; END_CASE; |
|