Textfeld:

 

Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FB SEQ220 GLB Filling the system, and circular flow

 

 

 

Network 1: Define SSM last step

IF #FLT_MODULE AND "M00 FLT CmpltMaACK Imp" THEN

 

 

 

Network 2: Actors fixed-setting with halt

#SSM.S.stepllo := NOT (#SSM.S.step0 OR #SSM.S.steph);

"DI OUT P01".V110.VLV_O.CmdExe_WP := "HMI KEY".P01.V110.F12_Enable_WP AND NOT #Water_Access_Done AND #SSM.S.stepllo;

"DI OUT P01".V107.VLV_O.CmdExe_WP := "HMI KEY".P01.V107.F12_Enable_WP AND #Water_Access_Done AND NOT #SSM.S.step0;

"DI OUT P01".V103.VLV_O.CmdExe_WP := "HMI KEY".P01.V103.F12_Enable_WP AND #Water_Access_Done AND NOT #SSM.S.step0;

"DI OUT P02".V201.VLV_O.CmdExe_WP := "HMI KEY".P02.V201.F12_Enable_WP AND NOT #SSM.S.step0;

"DI OUT P02".V203.VLV_O.CmdExe_WP := "HMI KEY".P02.V203.F12_Enable_WP AND NOT #SSM.S.step0;

"DI OUT P01".G120C.DRV.Support.Cmd_MovJogWP := "HMI KEY".P01.G120C.F12_Enable_WP AND #SSM.S.stepllo;

"DI OUT P02".M201.DRV.CmdExe_WP := "HMI KEY".P02.M201.F12_Enable_WP AND #SSM.S.stepllo;

"DI OUT P02".G220C.DRV.Support.Cmd_MovAbso := "HMI KEY".P02.G220C.F12_Enable_WP AND #SSM.S.stepllo;

// Gas valve selection

"DI OUT P03".V301.VLV_O.CmdExe_WP := NOT #SSM.S.step0 AND "HMI KEY".Execute.Pressure_Maintenance_with_Air AND "HMI KEY".P03.V301.F12_Enable_WP;

"DI OUT P03".V302.VLV_O.CmdExe_WP := NOT #SSM.S.step0 AND "HMI KEY".Execute.Pressure_Maintenance_with_CO2 AND "HMI KEY".P03.V302.F12_Enable_WP;

 

 

 

Network 3: Show message on HMI

"DI MAIN GLB".SEQ200.Support.Water_Circular_Flow := "DI OUT P01".V107.VLV_O.CmdExe_WP;

"DI MAIN GLB".SEQ200.Support.Water_Access := "DI OUT P01".V110.VLV_O.CmdExe_WP;

 

 

 

Network 4: FIT102 Query medium volume meter filling the cycle flow

IF "E01 FIT102 Pulse" AND NOT #FIT102_Pulse_REg THEN

    "DI OUT P01".Support.FIT102_Volum_meter := "DI OUT P01".Support.FIT102_Volum_meter + 1.0;

    IF "DI OUT P01".Support.FIT102_Volum_meter >= "HMI KEY".SetPoint.G120C_Product_inlet THEN

       #Water_Access_Done := TRUE;

    END_IF;

END_IF;

#FIT102_Pulse_REg := "E01 FIT102 Pulse" OR NOT "DI OUT P01".V110.FB_WP;

 

 

 

Network 5: Calculate Pasteurization units, and  temperature

#SSM.S.stepllo :=

"DI OUT P02".V204.State = 3

AND "DI OUT P02".V205.State = 3

AND "DI OUT P03".V312.State = 4

AND "DI OUT P01".G120C.NexDrv_DlyOn

AND "DI OUT P02".G220C.NexDrv_DlyOn

AND "DI OUT P02".M201.NexDrv_DlyOn

AND "DI OUT P02".V201.FB_WP

AND "DI OUT P02".V203.FB_WP

AND "DI OUT P03".V312.Output > 0.0

AND "DI OUT P02".V205.Output > 0.0

AND "HMI KEY".P02.V204.F12_Enable_WP

AND "DI OUT P01".V107.FB_WP;

 

"FC CALC PE UNITS"(PU_EXE := #SSM.S.stepllo,

                   PIPE_DN := 80.0,

                   PIPE_LENGTH := 51.0,

                   HL_H := "DI OUT P01".FIT102.Support.Out_Scale,

                   TEMP_ACT_VAL := "DI OUT P02".TT206.Support.Out_Scale,

                   PU_SET_VAL := "HMI KEY".SetPoint.Pasteurization_Unit_PU,

                   SET_POINT_TEMP => "HMI KEY".SetPoint.V204_Steam_Regulating,

                   PU_ACT_VAL => #tmp_pu_act_val,

                   TEMP_HOLD_TIME_SEC => #tmp_temp_hold_time);

"DI OUT P02".V204.Setpoint := "HMI KEY".SetPoint.V204_Steam_Regulating * "HMI KEY".SetPoint.V204_Steam_Regulating_Factor;

 

 

 

Network 6: CASE function corresponds to SEQ220

CASE #SSM.S.stepact OF

    0: // Waiting for sequencer to start

        #SSM.S.stepd := #SSM.S.steps;

        #Water_Access_Done := FALSE;

        IF "DI MAIN GLB".SEQ200.Support.Product_Inlet_Manual_Complete THEN

            #SSM.S.stepnew := 2;

        END_IF;

       

    1: // Query fixe-setting valves WP

        IF #SSM.S.DlyOff.Q THEN

            IF "DI OUT P01".G120C.DRV.Support.SetVelo < "HMI KEY".SetPoint.G120C_Product_inlet_min THEN

                "DI OUT P01".G120C.DRV.Support.SetVelo := #SEQ315.G120C_Product_Inlet_RPM := "HMI KEY".SetPoint.G120C_Product_inlet_min;

            END_IF;

            "DI OUT P01".G120C.DRV.Support.SetVelo := #SEQ315.G120C_Product_Inlet_RPM;

            "DI OUT P02".G220C.DRV.MC_MoveVelocity.Velocity := "HMI KEY".SetPoint.G220C_Heating_cycle;

            "DI OUT P02".V205.Setpoint := "HMI KEY".SetPoint.V205_Glycol_Regulating;

            "DI OUT P03".V312.ManualValue := "HMI KEY".SetPoint.V312_Product_inlet;

            "DI OUT P02".V205.Mode := "DI OUT P02".V204.Mode := 3;

            "DI OUT P03".V312.Mode := 4;

            "DI OUT P03".V312.ManualEnable := FALSE;

            "DI OUT P02".V204.ModeActivate := "DI OUT P02".V205.ModeActivate := "DI OUT P03".V312.ModeActivate := TRUE;

            RETURN;

        ELSE

            "DI OUT P02".V204.ModeActivate := "DI OUT P02".V205.ModeActivate := "DI OUT P03".V312.ModeActivate := FALSE;

        END_IF;

       

        // V312 force manual value product inlet regulating valve

        "DI OUT P03".V312.ManualEnable := "HMI KEY".P03.V312.F12_Enable_WP;

       

        // G120C product inlet set value RPM

        IF #SEQ315.G120C_Product_Inlet_RPM * 1.5 < "HMI KEY".SetPoint.G120C_Product_inlet_max THEN

            "DI OUT P01".G120C.DRV.Support.SetVelo := #SEQ315.G120C_Product_Inlet_RPM;

        END_IF;

       

        // Pressure maintenance in SBT

        "HMI KEY".Execute.Pressure_Maintenance_in_STH_Start := TRUE;

        #SEQ506.SSM.S.steph :=

        "DI MAIN GLB".SEQ200.SEQ220.SSM.S.steph OR NOT ("HMI KEY".Execute.Pressure_Maintenance_with_Air XOR "HMI KEY".Execute.Pressure_Maintenance_with_CO2);

        #SEQ506.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ220_Start AND NOT "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q;

        #SEQ506();

        // Product inlet with a manual switch, and inspection glass

        #SEQ309.SSM.S.steph := "DI MAIN GLB".SEQ200.SEQ220.SSM.S.steph;

        #SEQ309.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ220_Start AND NOT "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q;

        #SEQ309();

       

        // Culation flow capacity

        #SEQ315.SSM.S.steph := "DI MAIN GLB".SEQ200.SEQ220.SSM.S.steph OR NOT "DI OUT P01".G120C.DRV.Support.Cmd_MovJogWP;

        #SEQ315.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ220_Start

        AND "DI MAIN GLB".SEQ200.Support.Product_Inlet_Manual_Complete AND NOT "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q;

        #SEQ315();

       

        // Query control set values

        #SSM.S.c1.set := REAL_TO_INT(#tmp_temp_hold_time / 2.0);

        "HMI KEY".SetPoint.Temperture_RestHoldTime := #SSM.S.c1.act;

        #SSM.S.c1.start :=

        "DI MAIN GLB".SEQ200.Support.Product_Inlet_Manual_Complete

        AND "DI MAIN GLB".SEQ200.Support.Pressure_Maintenance_reached

        AND #Water_Access_Done

        AND "DI OUT P02".V204.Output > 20.0

        AND "DI OUT P02".V205.Output > 5.0

        AND "DI OUT P03".V312.Output > 72.7;

       

        #SSM.S.stepd := "DI MAIN GLB".SEQ200.Support.Water_Circular_Flow AND "DI OUT P01".V110.FB_HP AND #SSM.S.c1.done;

       

    2: // Prepare Steril Buffer Tank (SBT) for production

        IF #SSM.S.stepfc THEN

            #SSM.S.c1.set := #SSM.S.c2.set := 50;

            "DI OUT P03".V308.VLV_O.CmdExe_WP := TRUE;

        ELSE

            #SSM.S.c1.start := "DI OUT P03".V308.FB_WP AND "DI OUT P03".PT302.Support.Out_Scale <= "HMI KEY".SetPoint.PT302_PressureRelease;

            IF #SSM.S.c1.done THEN

                "DI OUT P03".V308.VLV_O.CmdExe_WP := FALSE;

            END_IF;

            "DI OUT P03".V307.VLV_O.CmdExe_WP := "DI OUT P03".V308.FB_HP AND NOT #SSM.S.DlyOff.Q;

            #SSM.S.c2.start := "DI OUT P03".V307.FB_WP;

            #SSM.S.stepd := NOT "E03 LS307 min" AND #SSM.S.c2.done;

        END_IF;

       

    3: // Start Steril Buffer Tank residual fluid blow out

        IF #SSM.S.stepfc THEN

            #SSM.S.c1.set := 50;

            "DI OUT P03".V303.VLV_O.CmdExe_WP := TRUE;

        ELSE

            #SSM.S.c1.start := "DI OUT P03".V303.FB_WP;

            "DI OUT P03".V303.VLV_O.CmdExe_WP := "DI OUT P03".V307.VLV_O.CmdExe_WP := NOT #SSM.S.c1.done;

            #SSM.S.stepd := "DI OUT P03".V307.FB_HP AND "DI OUT P03".V303.FB_HP;

        END_IF;

       

    4: // Regain SBT Pressure maintenance

        "HMI KEY".Execute.Pressure_Maintenance_in_STH_Start := TRUE;

        #SEQ506.SSM.S.steph :=

        "DI MAIN GLB".SEQ200.SEQ220.SSM.S.steph OR NOT ("HMI KEY".Execute.Pressure_Maintenance_with_Air XOR "HMI KEY".Execute.Pressure_Maintenance_with_CO2);

        #SEQ506.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ220_Start AND NOT "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q;

        #SEQ506();

        IF "DI MAIN GLB".SEQ200.Support.Pressure_Maintenance_reached THEN

            "DI MAIN GLB".SEQ200.Support.Production_Preparation_Complete := TRUE;

            "DI OUT P01".Support.FIT102_Volum_meter := 0.0;

            "DI MAIN GLB".SEQ200.Support.SEQ220_Start := FALSE;

        END_IF;

END_CASE;