IF NOT bEnable THEN iStep := 0; Active := FALSE; Done := FALSE; Error := FALSE; bFirstDone := FALSE; ELSIF bEnable AND NOT bFirstDone THEN bFirstDone := TRUE; Active := TRUE; Done := FALSE; Error := FALSE; iStep := 10; END_IF Case iStep of 10: arAxisCtrl_gb[AxisIndex].Admin._OpMode := MODEPOSREL; iStep := 20; 20: bZylinderDown := TRUE; arAxisCtrl_gb[AxisIndex].Admin._OpMode := MODEPOSREL; arAxisCtrl_gb[AxisIndex].PosMode.Distance := rRightTurn * 360; arAxisCtrl_gb[AxisIndex].PosMode.Velocity := rVel; arAxisCtrl_gb[AxisIndex].PosMode.DynValues.Acceleration := rAcc; arAxisCtrl_gb[AxisIndex].PosMode.DynValues.Deceleration := rDec; IF arAxisStatus_gb[AxisIndex].Admin.CmdDone THEN bZylinderDown := FALSE; iStep := 30; END_IF 30: arAxisCtrl_gb[AxisIndex].Admin._OpMode := MODEPOSREL; arAxisCtrl_gb[AxisIndex].PosMode.Distance := -(rLeftTurn * 360); arAxisCtrl_gb[AxisIndex].PosMode.Velocity := rVel; arAxisCtrl_gb[AxisIndex].PosMode.DynValues.Acceleration := rAcc; arAxisCtrl_gb[AxisIndex].PosMode.DynValues.Deceleration := rDec; IF arAxisStatus_gb[AxisIndex].Admin.CmdDone THEN bZylinderUp := TRUE; iStep := 100; END_IF 100: bZylinderUp := FALSE; bZylinderDown := FALSE; Active := FALSE; Error := FALSE; Done := TRUE; bFirstDone := FALSE; END_CASE