|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SEQ226 GLB : Production |
|
|
|
Network 1: Define SSM last step #SSM(LAST_STEP := 1); |
|
|
|
Network 2: 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 AND #SSM.S.stepllo; "DI OUT P03".G320C.DRV.Support.Cmd_MovAbso := "HMI KEY".P03.G320C.F12_Enable_WP AND #SSM.S.stepllo; "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 AND NOT #SSM.S.step0; "DI OUT P01".V107.VLV_O.CmdExe_WP := "HMI KEY".P01.V107.F12_Enable_WP AND NOT (#SEQ500.Product_flow_under_heated OR #SSM.S.step0); "DI OUT P03".V306.VLV_O.CmdExe_WP := "HMI KEY".P03.V306.F12_Enable_WP AND NOT #SSM.S.step0; "DI OUT P04".V401.VLV_O.CmdExe_WP := "HMI KEY".P04.V401.F12_Enable_WP; |
|
|
|
Network 3: 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 IF "DI OUT P01".G120C.DRV.Support.SetVelo < "HMI KEY".SetPoint.G120C_Product_Inlet_Filler_min THEN "DI OUT P01".G120C.DRV.Support.SetVelo := #SEQ302.G120C_Product_Inlet_RPM := "HMI KEY".SetPoint.G120C_Product_Inlet_Filler_min; END_IF; "DI OUT P01".G120C.DRV.Support.SetVelo := #SEQ302.G120C_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.SEQ226_GLB.SSM.S.steph OR NOT "DI OUT P01".G120C.DRV.Support.Cmd_MovJogWP; #SEQ500.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ226_Start AND NOT "DI MAIN GLB".P00.TOF_CmpltMaOFF_Pulse.Q; #SEQ500(); // G120C Filling SBT2 with product set value RPM IF #SEQ302.G120C_Product_Inlet_RPM * 1.5 < "HMI KEY".SetPoint.G120C_Product_Inlet_Filler_max THEN "DI OUT P01".G120C.DRV.Support.SetVelo := #SEQ302.G120C_Product_Inlet_RPM; END_IF; END_IF; // Calculation flow capacity SBT2 (Sterile Buffer Tank) #SEQ302.SSM.S.steph := "DI MAIN GLB".SEQ200.SEQ226_GLB.SSM.S.steph OR NOT "DI OUT P01".G120C.DRV.Support.Cmd_MovJogWP; #SEQ302.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ226_Start AND NOT "DI MAIN GLB".P00.TOF_CmpltMaOFF_Pulse.Q; #SEQ302(); // Pressure maintenance in SBT1 and SBT2 "HMI KEY".Execute.PT101_Pressure_Maintenace_SBT1 := "HMI KEY".Execute.PT201_Pressure_Maintenace_SBT2 := TRUE; // Query results to show message on HMI "HMI KEY".Message.Production_With_Filler_Running := "HMI KEY".Message.TT302_Medium_Temperature_reached AND "HMI KEY".Message.PT201_Pressure_Maintenance_reached AND "HMI KEY".Message.PT101_Pressure_Maintenance_reached AND NOT (#SEQ500.Product_flow_under_heated OR #SEQ500.Product_flow_over_heated); // Waiting for step conditions to be met IF NOT ("E01 LS102 low" OR "E04 LS404 low") OR #SEQ500.Product_flow_under_heated OR #SEQ500.Product_flow_over_heated THEN "DI MAIN GLB".SEQ200.Support.SEQ226_Start := FALSE; END_IF; END_CASE; |
|