Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

SEQ220 GLB Filling sterile buffer tank 1 with untreated product

 

 

 

Network 1: Define SSM last step

#SSM(LAST_STEP := 1);

 

 

 

Network 2: FIT402 Metering concentrate access to SBT1

#tmp_filling_concentrate_sbt1 := "HMI KEY".SetPoint.FIT401_Filling_SBT1_with_Untreated_Product * "HMI KEY".SetPoint.FIT402_Filling_SBT1_Concentrate_MixingRatio;

IF "E04 FIT402 pulse" AND NOT #FIT402_Pulse_REg THEN

    IF "DI OUT P04".Support.FIT402_Volum_meter >= #tmp_filling_concentrate_sbt1 THEN

        "HMI KEY".Message.SBT1_Concentrate_Access_done :=

        #Filling_SBT1_with_concentrate_done := TRUE;

    ELSE

        "DI OUT P04".Support.FIT402_Volum_meter := "DI OUT P04".Support.FIT402_Volum_meter + 1.0;

    END_IF;

END_IF;

#FIT402_Pulse_REg := "E04 FIT402 pulse" OR #Filling_SBT1_with_concentrate_done;

 

 

 

Network 3: FIT401 Metering water access to SBT1

#tmp_filling_water_sbt1 := "HMI KEY".SetPoint.FIT401_Filling_SBT1_with_Untreated_Product - #tmp_filling_concentrate_sbt1;

IF "E04 FIT401 pulse" AND NOT #FIT401_Pulse_REg THEN

    IF "DI OUT P04".Support.FIT401_Volum_meter >= #tmp_filling_water_sbt1 THEN

        "HMI KEY".Message.SBT1_Water_Access_done :=

        #Filling_SBT1_with_water_done := TRUE;

    ELSE

        "DI OUT P04".Support.FIT401_Volum_meter := "DI OUT P04".Support.FIT401_Volum_meter + 1.0;

    END_IF;

END_IF;

#FIT401_Pulse_REg := "E04 FIT401 pulse" OR #Filling_SBT1_with_water_done;

 

 

 

Network 4: 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 P04".G420C.DRV.Support.Cmd_MovJogWP := "HMI KEY".P04.G420C.F12_Enable_WP AND NOT #Filling_SBT1_with_water_done 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 P04".M402.DRV.CmdExe_WP := "HMI KEY".P04.M402.F12_Enable_WP AND NOT #Filling_SBT1_with_concentrate_done 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".V102.VLV_O.CmdExe_WP := "HMI KEY".P01.V102.F12_Enable_WP AND NOT #SSM.S.step0;

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

"DI OUT P04".V402.VLV_O.CmdExe_WP := "HMI KEY".P04.V402.F12_Enable_WP AND NOT (#SSM.S.step0 OR #Filling_SBT1_with_water_done);

"DI OUT P04".V403.VLV_O.CmdExe_WP := "HMI KEY".P04.V403.F12_Enable_WP AND NOT (#SSM.S.step0 OR #Filling_SBT1_with_concentrate_done);

"DI OUT P04".V405.VLV_O.CmdExe_WP := "HMI KEY".P04.V405.F12_Enable_WP AND NOT #Filling_SBT1_with_water_done AND #SSM.S.stepllo;

"DI OUT P04".V413.VLV_O.CmdExe_WP := "HMI KEY".P04.V413.F12_Enable_WP AND NOT (#SSM.S.step0 OR #Filling_SBT1_with_concentrate_done);;

 

 

 

Network 5: 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 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 P01".G120C.DRV.Support.SetVelo := "HMI KEY".SetPoint.G120C_Untreated_Product_SBT1_RPM;

            RETURN;

        END_IF;

        // Calculation flow capacity for G402C

        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;

        // Enable flow capacity for G402C

        #SEQ602.SSM.S.steph := "DI MAIN GLB".SEQ200.SEQ220_GLB.SSM.S.steph OR NOT "DI OUT P04".G420C.DRV.Support.Cmd_MovJogWP;

        #SEQ602.SSM.S.steps := "DI MAIN GLB".SEQ200.Support.SEQ220_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 #Filling_SBT1_with_water_done

            AND #Filling_SBT1_with_concentrate_done

            AND "HMI KEY".Message.PT101_Pressure_Maintenance_reached

            AND "HMI KEY".Message.PT201_Pressure_Maintenance_reached

            AND NOT "E04 LS404 low" THEN

            "HMI KEY".Message.SBT1_Untreated_Product_Filling_Complete := TRUE;

            "DI OUT P04".Support.FIT401_Volum_meter :=

            "DI OUT P04".Support.FIT402_Volum_meter := 0.0;

            #Filling_SBT1_with_concentrate_done := #Filling_SBT1_with_water_done :=

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

        END_IF;

END_CASE;