    CASE enStepPress OF
      //Init
      //---------------------------
  	  enPressStep_INIT:
        bTransitionCondition := FALSE;
        IF bMachIsInHomepos THEN
          enStepPress := enPressStep_WAIT_START;
        ELSE
          enStepPress := enPressStep_MOVEHOMEPOS;
        END_IF
        
      //Press up to Home
      //---------------------------
  	  enPressStep_MOVEHOMEPOS:
        lAxisShaft1.Para.rPosition := rPressPosHomeIWIS; //rPressPosHome
        lAxisShaft1.Para.rVelocity := rSpeedHandling;
        IF MoveConditions.bEnablePosShaft1 THEN
          lAxisShaft1.Move.bAbsolute :=TRUE;
          enStepPress := enPressStep_MOVEHOMEPOS_WAIT;
        END_IF
        
      //Press up to Home (Wait)
      //---------------------------
  	  enPressStep_MOVEHOMEPOS_WAIT:
        IF bPressIsInHomepos AND lAxisShaft1.Status.bStandstill THEN
          enStepPress := enPressStep_INIT;
          lAxisShaft1.Move.bAbsolute := 0;
          rMaxForce := 0;
          rMaxTorque := 0;
        END_IF
      
        
      //Wait for Start
      //---------------------------
  	  enPressStep_WAIT_START:
        udCycletime := 0; 
        bTransitionCondition := (EDGEPOS (gbInStartProcess) OR (gMachine.enMode = enMACH_MANUAL)) AND bSafetyOk ;

        IF (bSafetyOkFP OR (bTransitionCondition AND (bEnableNextStep OR gbInStartProcess))) THEN
          enStepPress := enPressStep_PRESS_PRESSPOS;
          gMAxTrace.bStartSave := 1;
          lAxisShaft1.Status.bTorqueLimitReached := FALSE;
          rMaxForce := 0;
          rMaxTorque := 0;
        END_IF 
       

      //Press down to Presspos
      //---------------------------
  	  enPressStep_PRESS_PRESSPOS:
//        lAxisShaft1.Para.rPosition := lPressParamActTool1.rPosPress;
        lAxisShaft1.Para.rVelocity := rSpeedPress;
        lAxisShaft1.Para.rTorqueLimit := rParamForce / rTorqueForceFactor;
        bTransitionCondition :=  MoveConditions.bEnableNegShaft1;
        IF bTransitionCondition THEN
          lAxisShaft1.Move.bTorqueControl := TRUE;
          //lAxisShaft1.Move.bAbsolute := TRUE;
          enStepPress := enPressStep_PRESS_PRESSPOS_WAIT;
        END_IF

      //Press down to Presspos (WAIT)
      //---------------------------
  	  enPressStep_PRESS_PRESSPOS_WAIT:
        bTransitionCondition := lAxisShaft1.Status.bTorqueLimitReached OR
          (lAxisShaft1.rActPosition <= rPressPosStopIWIS);
        
        IF bTransitionCondition THEN
          enStepPress := enPressStep_WAIT_PRESSED;
          lAxisShaft1.Move.bTorqueControl := FALSE;
          lAxisShaft1.bStop := 1;
          udSteptime := 0;
        END_IF
                
      //Wait Pressed
      //---------------------------
      enPressStep_WAIT_PRESSED:
        bTransitionCondition := FALSE;
        IF udSteptime > udPresstime THEN
          enStepPress := enPressStep_PRESS_HOMEPOS;
          gPressLog.rForceReached := rMaxForce;
          gPressLog.bLog := TRUE;
        END_IF
        
      //Press up to Home
      //---------------------------
  	  enPressStep_PRESS_HOMEPOS:
        lAxisShaft1.Para.rPosition := rPressPosHomeIWIS; //rPressPosHome
        lAxisShaft1.Para.rVelocity := rSpeedHandling;
        bTransitionCondition := MoveConditions.bEnablePosShaft1;
        IF bTransitionCondition THEN
          lAxisShaft1.Move.bAbsolute :=TRUE;
          enStepPress := enPressStep_PRESS_HOMEPOS_WAIT;
        END_IF
        
      //Press up to Home (Wait)
      //---------------------------
  	  enPressStep_PRESS_HOMEPOS_WAIT:
        bTransitionCondition :=  bPressIsInHomepos AND lAxisShaft1.Status.bStandstill;
        IF bTransitionCondition THEN
          enStepPress := enPressStep_WAIT_START;
          lAxisShaft1.Move.bAbsolute := 0;
        END_IF
    END_CASE   
