Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

To go to next HMI image use the touch buttons; some of them are interactive.

OB1 Main Main Program Sweep

 

 

 

Netzwerk 1: Start measuring runtime (Start Cycle)

 

"HMI SYS".Support.LastCycle := RUNTIME("HMI SYS".Support.LastCycle_inout);

 

 

 

Netzwerk 2: Pulse generator

 

"HMI SYS".Support.Sav_Clock_Byte := "HMI SYS".Support.Sav_Clock_Byte XOR "Clock_Byte";

"M00 PLC Impulse" := "HMI SYS".Support.Sav_Clock_Byte AND "Clock_Byte";

"HMI SYS".Support.Sav_Clock_Byte := "Clock_Byte";

 

 

 

Netzwerk 3: CALL distributor

 

   "DI MAIN GLB"();

—> "DI MAIN P01"();

   //---—

—> "DI OUT P01"();

 

 

 

Netzwerk 4: First cycle evaluation

 

    U     "M00 log 1"

    L     s5t#2s

    SE    "T00 OB1 FirstCycle SE"

    U     "T00 OB1 FirstCycle SE"

    =     "M00 OB1 FirstCycle"

 

 

 

Netzwerk 5: Flag logic =0, =1

 

"M00 log 0" := FALSE;

"M00 log 1" := TRUE;

 

 

 

Netzwerk 6: End measuring runtime (End Cycle)

 

"HMI SYS".Support.LastCycle := RUNTIME("HMI SYS".Support.LastCycle_inout);

"HMI SYS".Support.LastCycle_real := LREAL_TO_REAL(IN := "HMI SYS".Support.LastCycle);

 

 

 

FB20 MAIN GLB Global signals evaluation

 

 

 

Netzwerk 1: Fault acknowledgement

 

"M00 ACK Imp" := NOT "M00 ACK FP" AND "HMI KEY".SYS.GLB.F1_AckKey;

"M00 ACK FP" := "HMI KEY".SYS.GLB.F1_AckKey;

 

 

 

Netzwerk 2: Call main station safety program

 

"M00 EStp ok" := "E00 1A1 EStop OK";

 

 

 

Netzwerk 3: GLB FLT faults monitoring

 

#FLT(FLT_MODULE := "M00 FLT ModuStp");

 

 

 

Netzwerk 4: Assigned failure complete machine

 

"M00 FltCmpltMaIS" := "M00 FLT ModuStp" OR "M01 FLT ModuStp";

 

 

 

Netzwerk 5: Set failure complet machine

 

IF "M00 FltCmpltMaIS" THEN

    "M00 FltCmpltMaSR" := true;

END_IF;

   

IF "M00 FltCmpltMaSR" AND NOT "M00 Flt ACK" THEN

    IF "M00 FltCmpltMaSR" AND "M00 ACK Imp" THEN

        "M00 Flt ACK" := TRUE;

    END_IF;

ELSIF NOT "M00 FltCmpltMaIS" AND "M00 Flt ACK" THEN

    "M00 FltCmpltMaSR" := "M00 Flt ACK" := FALSE;

END_IF;

 

 

 

Netzwerk 6: Query assembly module at home position

 

"M00 HomPos" := "M01 HomPos";

IF "M00 HomPos" THEN

   "M00 HomPosSR" := TRUE;

END_IF;

 

 

 

Netzwerk 7: Start operating mode AUTOMATIC

 

IF "HMI KEY".SYS.GLB.F3_OM_AUTO_ON AND ("M00 HomPosSR" OR "M00 HomPos")THEN

    "M00 OM AUTO" := TRUE;

    "M00 OM MANUAL" := "M00 OM HOME POS" := "M00 ManuCmpltMa run" := FALSE;

END_IF;

IF  "M00 OM AUTO" AND "HMI KEY".SYS.GLB.F5_Start AND ("M00 HomPosSR" OR "M00 HomPos") THEN

    "M00 AutoCmpltMa run" := TRUE;

END_IF;

 

 

 

Netzwerk 8: Start operating mode MANUAL

 

IF "HMI KEY".SYS.GLB.F4_OM_MANU_ON THEN

    "M00 OM MANUAL":=TRUE;

    "M00 OM AUTO" := "M00 AutoCmpltMa run" := "M00 OM HOME POS" := FALSE;

END_IF;

IF "HMI KEY".SYS.GLB.F5_Start AND "M00 OM MANUAL" THEN

    "M00 ManuCmpltMa run":= TRUE;

END_IF;

 

"M00 ManuCmpltMa Imp" := NOT "M00 ManuCmpltMa run" AND "M00 ManuCmpltM FN";

"M00 ManuCmpltM FN" := "M00 ManuCmpltMa run";

#Halt_TOF_Pulse(IN := "M00 ManuCmpltMa Imp",PT := t#600ms);

 

 

 

Netzwerk 9: STOP all operating mode

 

#tmp_save := "M00 OM HOME POS" OR "HMI KEY".SYS.GLB.F8_Stop AND ("M00 AutoCmpltMa run" OR "M00 ManuCmpltMa run");

IF #tmp_save OR "M00 FltCmpltMaSR" THEN

    "M00 AutoCmpltMa run" := FALSE;

END_IF;

IF #tmp_save OR "M00 ManuCmpltMa Imp" THEN

    "M00 ManuCmpltMa run" := FALSE;

END_IF;

 

 

 

Netzwerk 10: Impuls Start complete machine

 

"M00 TrnsSysRun Imp" := NOT "M00 TrnsSysRun FP" AND ("M00 AutoCmpltMa run" OR "M00 ManuCmpltMa run" OR #SET.SET.S.steps);

"M00 TrnsSysRun FP" := "M00 AutoCmpltMa run" OR "M00 ManuCmpltMa run" OR #SET.SET.S.steps;

 

 

 

Netzwerk 11: Show key colour on HMI

 

"HMI KEY".SYS.GLB.F15_OM_ON_RUN := "M00 TrnsSysRun FP";

"HMI KEY".SYS.GLB.F11_Show_KeyColour_Start_Stop := "M00 AutoCmpltMa run" OR "M00 ManuCmpltMa run" OR #SET.SET.S.steps;

"HMI KEY".SYS.GLB.F14_Show_Key_Start_Stop := "M00 OM AUTO" OR "M00 OM MANUAL" OR "M00 OM HOME POS";

 

 

 

Netzwerk 12: Enable running each module

 

"M00 Enabled" := "M00 OM HOME POS" AND NOT "M00 FltCmpltMaSR";

"M01 Enabled" := "M00 AutoCmpltMa run" AND NOT "M00 FltCmpltMaSR";

 

 

 

Netzwerk 13: START home position complete machine

 

IF "HMI KEY".SYS.GLB.F7_OM_HOM_POS_ON AND NOT "M00 HomPos" THEN

    "M00 OM HOME POS" := TRUE;

    "M00 OM AUTO" := "M00 OM MANUAL" := FALSE;

END_IF;

IF "HMI KEY".SYS.GLB.F5_Start AND "M00 OM HOME POS" AND NOT "M00 FltCmpltMaSR" THEN

    #SET.SET.S.steps := TRUE;

    "M00 HomPosSR" := FALSE;

END_IF;

IF NOT "M00 OM HOME POS" OR "HMI KEY".SYS.GLB.F8_Stop THEN

    #SET.SET.S.steps := FALSE;

END_IF;

 

"M00 Active" := #SET.SET.S.steps;

#SET.SET.S.steph := "M00 FltCmpltMaSR";

#SET(ACT_STEP => #SET.STEP_NO);

 

 

 

FB31 SET P01 SET Move DSM Multi Pro to home position

 

 

 

Netzwerk 1: SET query home position

 

// query pneumatics at HP

#tmp_pneumatic_hp :=

"DI OUT P01"."C01-2 Washer above".FB_HP

AND "DI OUT P01"."C01-3 Washer below".FB_HP

AND "DI OUT P01"."C01-2 Tray above".FB_HP

AND "DI OUT P01"."C03-4 Tray below".FB_HP

AND NOT "A01 Y30 GreasNozzel 1 on"

AND NOT "A01 Y31 GreasNozzel 2 on";

// Query 30T1-Z DSM Multi Pro ready to start and at HP

#tmp_tox_line_x_hp :=

"DI OUT P01"."30T1_Z".DRV.Support.InPos

AND "DI OUT P01"."30T1_Z".DRV.Support.HomDone

AND "HMI KEY".P01."30T1_Z".F11_Enable_HP

AND "HMI KEY".P01."30T1_Z".F12_Enable_WP;

 

"M01 HomPos" := #tmp_pneumatic_hp AND #tmp_tox_line_x_hp;

"M01 MW38" := 0;

 

 

 

Netzwerk 2: SET execute home position

 

#SET(MAX_STEP := 4);

#ACT_STEP := #SET.S.stepact;

 

 

 

Netzwerk 3: Step jump distributor

 

CASE #SET.S.stepact OF

    0: // Waiting for enable

        IF #SET.S.steps THEN

            "M01 MW38" := 0;

            #SET.S.stepd := TRUE;

            "DI OUT P01"."DSM IO".IN.ProcessNumber := 0;

        END_IF;

    1: // Set pneumatics to home position

        "DI OUT P01"."C01-2 Washer above".VLV.CmdExe_WP := FALSE;

        "DI OUT P01"."C01-2 Washer above".VLV.CmdExe_HP := "HMI KEY".P01."C01-2 Washer above".F11_Enable_HP;

       

        "DI OUT P01"."C01-3 Washer below".VLV.CmdExe_WP := FALSE;

        "DI OUT P01"."C01-3 Washer below".VLV.CmdExe_HP := "HMI KEY".P01."C01-3 Washer below".F11_Enable_HP;

       

        "DI OUT P01"."C01-2 Tray above".VLV.CmdExe_WP := FALSE;

        "DI OUT P01"."C01-2 Tray above".VLV.CmdExe_HP := "HMI KEY".P01."C01-2 Tray above".F11_Enable_HP;

       

        "DI OUT P01"."C03-4 Tray below".VLV.CmdExe_WP := FALSE;

        "DI OUT P01"."C03-4 Tray below".VLV.CmdExe_HP := "HMI KEY".P01."C03-4 Tray below".F11_Enable_HP;

       

        "DI OUT P01"."Y30 GreasNozzel 1".VLV.CmdExe_WP := "DI OUT P01"."Y31 GreasNozzel 2".VLV.CmdExe_WP := FALSE;

        #SET.S.stepd := #tmp_pneumatic_hp;

       

    2: // 30T1-Z DSN Multi Pro axis referencing

        #SET.S.stepd := "DI OUT P01"."30T1_Z".DRV.Support.HomDone;

       

    3: // Move 30T1-Z DSN Multi Pro to home position   

        IF #SET.S.stepfc THEN

            "DI OUT P01"."30T1_Z".DRV.MC_MoveAbsolute.Position := 5.0;

            "DI OUT P01"."30T1_Z".DRV.Support.SetVelo := 20.0;

            RETURN;

        ELSE

            "M01 30T1_Z GoToPosAbso" := TRUE;

        END_IF;

        IF "DI OUT P01"."30T1_Z"."MC MoveAbsolute".Done THEN

            #SET.S.stepd := TRUE;

        END_IF;

       

    4: // End running home position      

        IF "M01 HomPos" THEN

            "M01 RunHomPos" := FALSE;

        END_IF;

END_CASE;