Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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;