Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FB SEQ200 GLBProgramme selection + jump distributor

 

 

 

Network 1: Show required temperature reached

"HMI KEY".Message.TT302_Medium_Temperature_reached := "DI OUT P03".G320C.DRV.Support.LampON AND

ABS("DI OUT P03".V307.Setpoint - "DI OUT P03".V307.Input) < "HMI KEY".SetPoint.TT302_Temperature_Deviation;

 

 

 

Network 2: Force production abort

IF "HMI KEY".Execute.Production_Abort AND #Support.SEQ226_Start THEN

    "DI MAIN GLB".P00.AutoCmpltMa_run :=

    "HMI KEY".Message.Product_Inlet_Under_Heated_whilst_Production :=

    "HMI KEY".Message.SBT1_Concentrate_Access_done :=

    "HMI KEY".Message.SBT1_Water_Access_done :=

    "HMI KEY".Message.SBT1_Untreated_Product_Filling_Complete :=

    "HMI KEY".Message.Filling_Circular_Flow_With_Water_Complete :=

    "HMI KEY".Message.Temperature_Preparation_With_Water_complete :=

    "HMI KEY".Message.Filling_Circular_Flow_With_Product_Complete :=

    "HMI KEY".Message.Temperature_Preparation_With_Product_complete :=

    "HMI KEY".Message.SBT2_Product_Filling_Complete :=

    "HMI KEY".Message.Production_With_Filler_Running :=

    "HMI KEY".Message.Production_With_Filler_Complete :=

    "HMI KEY".Message.CIP_Lye_Access_Complete :=

    "HMI KEY".Message.CIP_Sterilisation_with_Water_Complete :=

    "HMI KEY".Message.CIP_Sterilisation_Water_Access_Complete := FALSE;

END_IF;

 

 

 

Network 3: Liquid handling start / restart

IF NOT "DI MAIN GLB".P00.AutoCmpltMa_run THEN

    #Support.SEQ210_Start :=

    #Support.SEQ220_Start :=

    #Support.SEQ221_Start :=

    #Support.SEQ222_Start :=

    #Support.SEQ223_Start :=

    #Support.SEQ224_Start :=

    #Support.SEQ225_Start :=

    #Support.SEQ225_Start :=

    #Support.SEQ226_Start :=

    #Support.SEQ227_Start :=

    #Support.SEQ228_Start :=

    #Support.SEQ229_Start :=

    #Support.SEQ240_Start :=

    #Support.SEQ241_Start :=

    #Support.SEQ242_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;

    // Liquid handling start / restart

    #Support.SEQ210_Start := "HMI KEY".Execute.Drainage_Selected;

    #Support.SEQ220_Start := "HMI KEY".Execute.Production_Selected AND NOT "HMI KEY".Message.SBT1_Untreated_Product_Filling_Complete;

    #Support.SEQ221_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Message.SBT1_Untreated_Product_Filling_Complete AND NOT "HMI KEY".Message.Filling_Circular_Flow_With_Water_Complete;

    #Support.SEQ222_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Message.Filling_Circular_Flow_With_Water_Complete AND NOT "HMI KEY".Message.Temperature_Preparation_With_Water_complete;

    #Support.SEQ223_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Message.Temperature_Preparation_With_Water_complete AND NOT "HMI KEY".Message.Filling_Circular_Flow_With_Product_Complete;

    #Support.SEQ224_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Message.Filling_Circular_Flow_With_Product_Complete AND NOT "HMI KEY".Message.Temperature_Preparation_With_Product_complete;

    #Support.SEQ225_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Message.Temperature_Preparation_With_Product_complete AND NOT "HMI KEY".Message.SBT2_Product_Filling_Complete;

    #Support.SEQ226_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Message.SBT2_Product_Filling_Complete;

    #Support.SEQ227_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Message.Product_Inlet_Under_Heated_whilst_Production;

    #Support.SEQ228_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Message.Product_Inlet_Over_Heated_whilst_Production;

    #Support.SEQ229_Start := "HMI KEY".Execute.Production_Selected AND "HMI KEY".Execute.Production_Abort;

    #Support.SEQ240_Start := "HMI KEY".Execute.CIP_Selected AND NOT "HMI KEY".Message.CIP_with_Lye_Complete;

    #Support.SEQ241_Start := "HMI KEY".Execute.CIP_Selected AND "HMI KEY".Message.CIP_with_Lye_Complete AND NOT "HMI KEY".Message.CIP_Sterilisation_with_Water_Complete;

    #Support.SEQ242_Start := "HMI KEY".Execute.CIP_Selected AND "HMI KEY".Message.CIP_Sterilisation_with_Water_Complete;

    #Support.SEQ200_Start := "HMI KEY".Execute.Production_Selected OR "HMI KEY".Execute.Drainage_Selected OR "HMI KEY".Execute.CIP_Selected;

    IF #Support.SEQ210_Start OR "HMI KEY".Message.Production_With_Filler_Complete OR "HMI KEY".Message.CIP_Sterilisation_with_Water_Complete THEN

        "HMI KEY".Message.Product_Inlet_Under_Heated_whilst_Production :=

        "HMI KEY".Message.SBT1_Concentrate_Access_done :=

        "HMI KEY".Message.SBT1_Water_Access_done :=

        "HMI KEY".Message.SBT1_Untreated_Product_Filling_Complete :=

        "HMI KEY".Message.Filling_Circular_Flow_With_Water_Complete :=

        "HMI KEY".Message.Temperature_Preparation_With_Water_complete :=

        "HMI KEY".Message.Filling_Circular_Flow_With_Product_Complete :=

        "HMI KEY".Message.Temperature_Preparation_With_Product_complete :=

        "HMI KEY".Message.SBT2_Product_Filling_Complete :=

        "HMI KEY".Message.Production_With_Filler_Running :=

        "HMI KEY".Message.Production_With_Filler_Complete :=

        "HMI KEY".Message.CIP_Lye_Access_Complete :=

        "HMI KEY".Message.CIP_Sterilisation_with_Water_Complete :=

        "HMI KEY".Message.CIP_Sterilisation_Water_Access_Complete := FALSE;

    END_IF;

END_IF;

 

 

 

Network 4: 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;

    "HMI KEY".Execute.Drainage_Selected := "HMI KEY".Execute.Production_Selected := "HMI KEY".Execute.CIP_Selected := FALSE;

END_IF;

 

 

 

Network 5: Programme selection PRODUCTION

IF "HMI KEY".Execute.Select_Production AND NOT ("HMI KEY".Execute.Production_Selected OR "DI MAIN GLB".P00.AutoCmpltMa_run) THEN

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

    "HMI KEY".Execute.Drainage_Selected := "HMI KEY".Execute.CIP_Selected := FALSE;

END_IF;

 

 

 

Network 6: Programme selection DRAINAGE

IF "HMI KEY".Execute.Select_Drainage AND NOT ("HMI KEY".Execute.Drainage_Selected OR "DI MAIN GLB".P00.AutoCmpltMa_run) THEN

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

    "HMI KEY".Execute.Production_Selected := "HMI KEY".Execute.CIP_Selected := FALSE;

END_IF;

 

 

 

Network 7: Programme selection CIP

IF "HMI KEY".Execute.Select_CIP AND NOT ("HMI KEY".Execute.CIP_Selected OR "DI MAIN GLB".P00.AutoCmpltMa_run) THEN

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

    "HMI KEY".Execute.Production_Selected := "HMI KEY".Execute.Drainage_Selected := FALSE;

END_IF;

 

 

 

Network 8: Create delay steps off

#Support.DlyStepsOff(IN := #Support.SEQ200_Start AND NOT "DI MAIN GLB".P00.TOF_CmpltMaOFF_Pulse.Q,

                     PT := t#500ms);

#SSM.S.steph := NOT "DI MAIN GLB".P00.AutoCmpltMa_run AND ("HMI KEY".Execute.Production_Selected OR "HMI KEY".Execute.CIP_Selected);

#SSM.S.steps := #Support.DlyStepsOff.Q;

#tmp_support_steph := NOT ("E00 Estp Fb" AND "E00 AirPressure ok" AND ("DI MAIN GLB".P00.AutoCmpltMa_run OR "DI MAIN GLB".SET.SSM.S.steps));

 

 

 

Network 9: Perform pressure maintenance in SBT1 and SBT2

// Pressure maintenance in SBT1

#SEQ301.SSM.S.steph := #tmp_support_steph;

#SEQ301.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ200_Start AND NOT "DI MAIN GLB".P00.TOF_CmpltMaOFF_Pulse.Q;

#SEQ301();

"HMI KEY".Message.PT101_Pressure_Maintenance_reached :=

ABS("DI OUT P01".PT101.Support.Out_Scaled - "HMI KEY".SetPoint.PT101_Pressure_above) <= "HMI KEY".SetPoint.PT101_PressureHysteresis;

// Pressure maintenance in SBT2

#SEQ401.SSM.S.steph := #tmp_support_steph;

#SEQ401.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ200_Start AND NOT "DI MAIN GLB".P00.TOF_CmpltMaOFF_Pulse.Q;

#SEQ401();

"HMI KEY".Message.PT201_Pressure_Maintenance_reached :=

ABS("DI OUT P02".PT201.Support.Out_Scaled - "HMI KEY".SetPoint.PT201_Pressure_above) <= "HMI KEY".SetPoint.PT201_PressureHysteresis;

 

 

 

Network 10: Define SSM last step

#SSM(LAST_STEP := 14);

 

 

 

Network 11: CASE-Function correspond to actual SSM

CASE #SSM.S.stepact OF

    0: // waiting for sequencer to start

        IF #SSM.S.steps THEN

            #SSM.S.stepd := #Support.SEQ210_Start OR #Support.SEQ201_Start;

            IF #Support.SEQ220_Start THEN // Filling sterile buffer tank 1 with untreated product

                #SSM.S.stepnew := 2;

                #SSM.S.stepd := TRUE;

                #Support.SEQ201_Start := FALSE;

            ELSIF #Support.SEQ221_Start THEN // Filling circular flow with water

                #SSM.S.stepnew := 3;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ222_Start THEN // Temperature preparation with water

                #SSM.S.stepnew := 4;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ223_Start THEN // Filling circular flow with product

                #SSM.S.stepnew := 5;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ224_Start THEN // Temperature preparation with product

                #SSM.S.stepnew := 6;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ225_Start THEN // Filling sterile buffer tank 2 with product

                #SSM.S.stepnew := 7;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ226_Start THEN // Production

                #SSM.S.stepnew := 8;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ227_Start THEN // Product inlet under heated whilst production

                #SSM.S.stepnew := 9;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ228_Start THEN // Product inlet over heated whilst production

                #SSM.S.stepnew := 10;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ229_Start THEN // Production end

                #SSM.S.stepnew := 11;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ240_Start THEN // CIP with Lye

                #SSM.S.stepnew := 12;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ241_Start THEN // Rinsing

                #SSM.S.stepnew := 13;

                #SSM.S.stepd := TRUE;

            ELSIF #Support.SEQ242_Start THEN // Cooling

                #SSM.S.stepnew := 14;

                #SSM.S.stepd := TRUE;

            END_IF;

        END_IF;

       

    1: // Implement basic condition

        #SEQ201_GLB.SSM.S.steph := #tmp_support_steph;

        #SEQ201_GLB.DlyStepsOff(IN := #Support.SEQ201_Start,

                                PT := t#200ms);

        #SEQ201_GLB.SSM.S.steps := #SEQ201_GLB.DlyStepsOff.Q;

        #SEQ201_GLB();

        IF (NOT #SEQ201_GLB.SSM.S.step0 OR #SSM.S.DlyOff.Q) AND NOT #Support.SEQ210_Start THEN

            RETURN;

        ELSE

            #SSM.S.stepd := #Support.SEQ220_Start;

        END_IF;

       

        // Liquid tanks draining

        #SEQ210_GLB.SSM.S.steph := #tmp_support_steph;

        #SEQ210_GLB.DlyStepsOff(IN := #Support.SEQ210_Start,

                                PT := t#200ms);

        #SEQ210_GLB.SSM.S.steps := #SEQ210_GLB.DlyStepsOff.Q;

        #SEQ210_GLB();

        IF NOT #SEQ210_GLB.SSM.S.step0 OR #SSM.S.DlyOff.Q THEN

            RETURN;

        ELSE

            "DI MAIN GLB".P00.AutoCmpltMa_run := FALSE;

        END_IF;

       

    2: // Filling steril buffer tank 1 with untreated product

        #SEQ220_GLB.DlyStepsOff(IN := #Support.SEQ220_Start,

                                PT := t#200ms);

        #SEQ220_GLB.SSM.S.steph := #tmp_support_steph;

        #SEQ220_GLB.SSM.S.steps := #SEQ220_GLB.DlyStepsOff.Q;

        #SEQ220_GLB();

        #SSM.S.stepd := #SEQ220_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;

       

    3: // Filling circular flow with water

        IF #SSM.S.stepfc THEN

            #Support.SEQ221_Start := TRUE;

        ELSE

            #SEQ221_GLB.DlyStepsOff(IN := #Support.SEQ221_Start,

                                    PT := t#200ms);

            #SEQ221_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ221_GLB.SSM.S.steps := #SEQ221_GLB.DlyStepsOff.Q;

            #SEQ221_GLB();

            #SSM.S.stepd := #SEQ221_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;

        END_IF;

       

    4: // Temperature preparation with water

        IF #SSM.S.stepfc THEN

            #Support.SEQ222_Start := TRUE;

        ELSE

            #SEQ222_GLB.DlyStepsOff(IN := #Support.SEQ222_Start,

                                    PT := t#200ms);

            #SEQ222_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ222_GLB.SSM.S.steps := #SEQ222_GLB.DlyStepsOff.Q;

            #SEQ222_GLB();

            #SSM.S.stepd := #SEQ222_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;

        END_IF;

       

    5: // Filling circular flow with product

        IF #SSM.S.stepfc THEN

            #Support.SEQ223_Start := TRUE;

        ELSE

            #SEQ223_GLB.DlyStepsOff(IN := #Support.SEQ223_Start,

                                    PT := t#200ms);

            #SEQ223_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ223_GLB.SSM.S.steps := #SEQ223_GLB.DlyStepsOff.Q;

            #SEQ223_GLB();

            #SSM.S.stepd := #SEQ223_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;

        END_IF;

       

    6: // Temperature preparation with product

        IF #SSM.S.stepfc THEN

            #Support.SEQ224_Start := TRUE;

        ELSE

            #SEQ224_GLB.DlyStepsOff(IN := #Support.SEQ224_Start,

                                    PT := t#200ms);

            #SEQ224_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ224_GLB.SSM.S.steps := #SEQ224_GLB.DlyStepsOff.Q;

            #SEQ224_GLB();

            #SSM.S.stepd := #SEQ224_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;

        END_IF;

       

    7: // Filling sterile buffer tank 2 with product

        IF #SSM.S.stepfc THEN

            #Support.SEQ225_Start := TRUE;

        ELSE

            #SEQ225_GLB.DlyStepsOff(IN := #Support.SEQ225_Start,

                                    PT := t#200ms);

            #SEQ225_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ225_GLB.SSM.S.steps := #SEQ225_GLB.DlyStepsOff.Q;

            #SEQ225_GLB();

        END_IF;

        IF #SEQ225_GLB.SSM.S.step0

            AND ("HMI KEY".Message.Product_Inlet_Under_Heated_whilst_Production OR "HMI KEY".Message.Product_Inlet_Over_Heated_whilst_Production) THEN

            IF "HMI KEY".Message.Product_Inlet_Under_Heated_whilst_Production THEN

                #SSM.S.stepnew := 9;

                #SSM.S.stepd := TRUE;

            ELSIF "HMI KEY".Message.Product_Inlet_Over_Heated_whilst_Production THEN

                #SSM.S.stepnew := 10;

                #SSM.S.stepd := TRUE;

            END_IF;

        ELSIF #SEQ225_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN

            #SSM.S.stepd := TRUE;

        END_IF;

       

    8: // Production

        IF #SSM.S.stepfc THEN

            #Support.SEQ226_Start := TRUE;

        ELSE

            #SEQ226_GLB.DlyStepsOff(IN := #Support.#SEQ226_Start,

                                    PT := t#200ms);

            #SEQ226_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ226_GLB.SSM.S.steps := #SEQ226_GLB.DlyStepsOff.Q;

            #SEQ226_GLB();

        END_IF;

        IF #SEQ226_GLB.SSM.S.step0

            AND ("HMI KEY".Message.Product_Inlet_Under_Heated_whilst_Production OR "HMI KEY".Message.Product_Inlet_Over_Heated_whilst_Production) THEN

            IF "HMI KEY".Message.Product_Inlet_Under_Heated_whilst_Production THEN

                #SSM.S.stepd := TRUE;

            ELSIF "HMI KEY".Message.Product_Inlet_Over_Heated_whilst_Production THEN

                #SSM.S.stepnew := 10;

                #SSM.S.stepd := TRUE;

            END_IF;

        ELSIF #SEQ226_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN

            #SSM.S.stepnew := 11;

            #SSM.S.stepd := TRUE;

        END_IF;

       

    9: // Product inlet under heated whilst production

        IF #SSM.S.stepfc THEN

            #Support.SEQ227_Start := TRUE;

        ELSE

            #SEQ227_GLB.DlyStepsOff(IN := #Support.SEQ227_Start,

                                    PT := t#200ms);

            #SEQ227_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ227_GLB.SSM.S.steps := #SEQ227_GLB.DlyStepsOff.Q;

            #SEQ227_GLB();

        END_IF;

        IF #SEQ227_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN

            #SSM.S.stepnew := 6;

            #SSM.S.stepd := TRUE;

        END_IF;

       

    10: // Product inlet over heated whilst production

        IF #SSM.S.stepfc THEN

            #Support.SEQ228_Start := TRUE;

        ELSE

            #SEQ228_GLB.DlyStepsOff(IN := #Support.SEQ228_Start,

                                    PT := t#200ms);

            #SEQ228_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ228_GLB.SSM.S.steps := #SEQ228_GLB.DlyStepsOff.Q;

            #SEQ228_GLB();

        END_IF;

        IF #SEQ228_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN

            #SSM.S.stepnew := 5;

            #SSM.S.stepd := TRUE;

        END_IF;

       

    11: // Production end

        IF #SSM.S.stepfc THEN

            #Support.SEQ229_Start := TRUE;

        ELSE

            #SEQ229_GLB.DlyStepsOff(IN := #Support.SEQ229_Start,

                                    PT := t#200ms);

            #SEQ229_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ229_GLB.SSM.S.steps := #SEQ229_GLB.DlyStepsOff.Q;

            #SEQ229_GLB();

        END_IF;

        IF NOT #SEQ229_GLB.SSM.S.step0 OR #SSM.S.DlyOff.Q THEN

            RETURN;

        ELSE

            "DI MAIN GLB".P00.AutoCmpltMa_run := FALSE;

        END_IF;

       

    12: // CIP with Lye

        #SEQ240_GLB.DlyStepsOff(IN := #Support.SEQ240_Start,

                                PT := t#200ms);

        #SEQ240_GLB.SSM.S.steph := #tmp_support_steph;

        #SEQ240_GLB.SSM.S.steps := #SEQ240_GLB.DlyStepsOff.Q;

        #SEQ240_GLB();

        #SSM.S.stepd := #SEQ240_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;

       

    13: // CIP Sterilisation with water

        IF #SSM.S.stepfc THEN

            #Support.SEQ241_Start := TRUE;

        ELSE

            #SEQ241_GLB.DlyStepsOff(IN := #Support.SEQ241_Start,

                                    PT := t#200ms);

            #SEQ241_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ241_GLB.SSM.S.steps := #SEQ241_GLB.DlyStepsOff.Q;

            #SEQ241_GLB();

            #SSM.S.stepd := #SEQ241_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q;

        END_IF;

       

    14: // Cooling after production

        IF #SSM.S.stepfc THEN

            #Support.SEQ242_Start := TRUE;

        ELSE

            #SEQ242_GLB.DlyStepsOff(IN := #Support.SEQ242_Start,

                                    PT := t#200ms);

            #SEQ242_GLB.SSM.S.steph := #tmp_support_steph;

            #SEQ242_GLB.SSM.S.steps := #SEQ242_GLB.DlyStepsOff.Q;

            #SEQ242_GLB();

        END_IF;

        IF #SEQ242_GLB.SSM.S.step0 AND NOT #SSM.S.DlyOff.Q THEN

            "DI MAIN GLB".P00.AutoCmpltMa_run := FALSE;

            #SSM.S.stepd := TRUE;

        END_IF;

END_CASE;