'######################
' Autoshift Volvo I-Shift GEARBOX
' Adapted from original OMSI Script by Thiago and krtz07
' verison 1.1
'######################

'Script Version: 2
'Omsi release: 1.04

'Needs:
'- engine
'- bremse

'Revision History
'-Thiago		06.11.2011	Manual Script for OMSI buses
'- Kyle Ortiz		28.06.2011	Imported some code from the Engine.OSC file. Added gear efficiency 
'- Kyle Ortiz		24.09.2013	Converted transmission to suit the engineb2.osc file
'- Kyle Ortiz		25.09.2013	Added autoshifter to the transmission
'- Kyle Ortiz		27.09.2013	Added automatic shifter 


'----------------------
'	Init
'----------------------

{macro:antrieb_init}
	0 (S.L.antrieb_eng_on)
	0 (S.L.antrieb_getr_aktugang)


	1 (S.L.antrieb_getr_gangwahl) (S.L.antrieb_getr_gangvorwahl) 
	

	0 (S.L.antrieb_getr_aktugang)
{end}

'----------------------
'	Frame
'----------------------

{macro:antrieb_frame}
(L.L.Wheel_RotationSpeed_1_L) (L.L.Wheel_RotationSpeed_1_R) + 2 / (C.L.antrieb_i_achse) * (S.L.antrieb_n_kardanwelle)


'#################################################################################
'	Retarder
'#################################################################################

(L.L.brake) 0.01 >
(L.L.antrieb_n_kardanwelle) 0.1 > &&
(L.L.antrieb_retarder_sw) &&
(L.L.antrieb_retarder_sw_direkt) ||
(L.L.antrieb_getr_aktugang) 5 > &&
(L.L.velocity) 5 > &&
(L.L.antrieb_failure_general) ! &&
(L.L.bremse_ABS_eingriff) ! &&
{if}

(L.L.antrieb_retarder_volume) (L.S.Timegap) 2 * + 1 min (S.L.antrieb_retarder_volume)

1 (S.L.antrieb_wendesatz)
(L.L.antrieb_n_kardanwelle) 29.3 / (F.L.retarder_stufe1) 0.85 *  (C.L.antrieb_i_achse) /-/ * (F.L.retarder_fadein) * (S.L.antrieb_retardermoment)
	
{else}
'		Ausfaden der Retarder-Bremsstärke
	(L.L.antrieb_retardermoment) (L.S.Timegap) 10000 * + 0 min (S.L.antrieb_retardermoment) 

	(L.L.antrieb_retarder_volume) (L.S.Timegap) 2 * - 0 max (S.L.antrieb_retarder_volume) s0
	l0 0 =
	{if}
		0 (S.L.antrieb_wendesatz)
	{endif}

{endif}

(L.L.antrieb_retarder_sw_direkt) 
		{if}
			2 (S.L.antrieb_retarderstufe)
		{else}
			1 (S.L.antrieb_retarderstufe)
		{endif}

'	Verzögerung der Kickdown-Schaltung:

(L.L.throttle) 1 =
{if}
	(L.L.antrieb_kickdown_stellglied) (L.S.Timegap) 2 * + 1 min (S.L.antrieb_kickdown_stellglied)
	1 =
	{if}
		1 (S.L.antrieb_kickdown)
	{endif}
{else}
	(L.L.antrieb_kickdown_stellglied) (L.S.Timegap) 1 * - 0 max (S.L.antrieb_kickdown_stellglied)
	0 =
	{if}
		0 (S.L.antrieb_kickdown)
	{endif}
{endif}

(L.L.throttle) (L.L.antrieb_throttle_stellglied) >
{if}
	(L.L.antrieb_throttle_stellglied) (L.S.Timegap) 1 * + (L.L.throttle) min (S.L.antrieb_throttle_stellglied)
{else}
	(L.L.antrieb_throttle_stellglied) (L.S.Timegap) 0.5 * - (L.L.throttle) max (S.L.antrieb_throttle_stellglied)
{endif}



'	Berechnen der aktuellen Beschleunigung:

(L.L.Velocity) (L.L.antrieb_last_geschwindigkeit) - 3.6 / (L.S.Timegap) / (S.L.antrieb_beschleunigung)
(L.L.Velocity) (S.L.antrieb_last_geschwindigkeit)
	
	
 
'transmission programable set




(L.L.throttle) (L.L.antrieb_last_throttle) - 1 / (L.S.Timegap) / (S.L.antrieb_delta_throttle)
(L.L.throttle) (S.L.antrieb_last_throttle)

(L.L.antrieb_delta_throttle) (L.L.throttle) ! ||
{if}
	1 (S.L.antrieb_delta_throttle_stellglied)
{else}
	(L.L.antrieb_delta_throttle_stellglied) (L.S.Timegap) 3 * - 0 max (S.L.antrieb_delta_throttle_stellglied)
{endif}

(L.L.antrieb_getr_gangvorwahl) 4 = (L.L.throttle) &&  (L.L.antrieb_delta_throttle_stellglied) ! &&
{if}

	(L.L.antrieb_force_1) 0.7 > (L.L.velocity) 8 < && (L.L.throttle) 0.6 > &&
	{if}
		(L.L.antrieb_hill) (L.S.Timegap) 1 * + 5 min (S.L.antrieb_hill)
	{else}

		(L.L.antrieb_hill) (L.S.Timegap) 1 * - 0 max (S.L.antrieb_hill)

		(L.L.antrieb_hill) !
		{if}

			(L.L.velocity) 5 < 
			(L.L.throttle) 0.25 < &&
			(L.L.brake) ! &&
			(L.L.antrieb_n_kardanwelle) 50 < &&
			{if}
				1 (S.L.antrieb_getr_aktugang)

				
			{endif}

			(L.L.velocity) 5 < 
			(L.L.throttle) 0.4 < &&
			(L.L.throttle) 0.25 > &&
			(L.L.brake) ! &&
			{if}
				2 (S.L.antrieb_getr_aktugang)

				
			{endif}


			(L.L.velocity) 5 < 
			(L.L.throttle) 0.4 >  &&
			(L.L.throttle) 0.55 <	 &&
			(L.L.brake) ! &&
			{if}
				4 (S.L.antrieb_getr_aktugang)
				

			{endif}


			(L.L.velocity) 5 < 
			(L.L.throttle) 0.6 > &&
			(L.L.brake) ! &&
			(L.L.antrieb_getr_aktugang) 5 > && 
			{if}
				6 (S.L.antrieb_getr_aktugang)
			
			{endif}
		{endif}
	{endif}
{endif}


(L.L.antrieb_hill) 0.7 > (L.L.antrieb_getr_aktugang) 4 > &&
{if}

4 (S.L.antrieb_getr_aktugang)
{endif}


(L.L.antrieb_hill) 1.7 > (L.L.antrieb_getr_aktugang) 3 > &&
{if}

3 (S.L.antrieb_getr_aktugang)
{endif}

(L.L.antrieb_getr_aktugang) s0

l0 0 = (L.L.antrieb_is_clutch) 0.990 > ||
{if}
	0 (S.L.antrieb_getr_ratio_act)
{endif}


l0 -1 =
{if}
	(C.L.antrieb_getr_ratioR) (S.L.antrieb_getr_ratio_act)
{endif}


l0 1 =
{if}
	(C.L.antrieb_getr_ratio1) (S.L.antrieb_getr_ratio_act)

	(M.L.antrieb_upshiftcomplete)

	125 s3
	88.75502008 s4

	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) <  (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}



	(L.L.antrieb_is_clutch) 1 = 
	(L.L.antrieb_upshift_request) && 
	
	(L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		  (L.L.antrieb_force_1) 0.65 >
		   {if}
			2 (S.L.antrieb_getr_aktugang) 
		   {endif}

		  (L.L.antrieb_force_1) 0.65 < 
		   {if}
			3 (S.L.antrieb_getr_aktugang) 
		   {endif}

		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}


	(M.L.checkifmanual)

(M.L.acceldiff)
{endif}


l0 2 =
{if}
	(C.L.antrieb_getr_ratio2) (S.L.antrieb_getr_ratio_act)

	(M.L.antrieb_upshiftcomplete)

	152 s3 
	113.0434783 s4

	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}



	(L.L.antrieb_is_clutch) 1 = 
	(L.L.antrieb_upshift_request) && 
	(L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		
		(L.L.antrieb_force_1) 0.6 < 
		{if}
			4 (S.L.antrieb_getr_aktugang) 
		{endif}


		(L.L.antrieb_force_1) 0.6 >
		 {if}
			3 (S.L.antrieb_getr_aktugang) 
		 {endif}

		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}


	(M.L.checkifmanual)

	(L.L.antrieb_dnshift_request) 1 = 
	 {if}
		1 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}

(M.L.acceldiff)
{endif}
l0 3 =
{if}
	(C.L.antrieb_getr_ratio3) (S.L.antrieb_getr_ratio_act)

	(M.L.antrieb_upshiftcomplete)

	224.5840708  s3 
	146.6814159  s4

	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < 
	(L.L.antrieb_getr_gangvorwahl) 4 = && 
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}



	

	(L.L.antrieb_is_clutch) 1 = 
	(L.L.antrieb_upshift_request) && 
	 (L.L.antrieb_force_1) 0.55 >  && 
	 (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		4 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}

	 
	(L.L.antrieb_is_clutch) 1 = 
	(L.L.antrieb_upshift_request) &&  
	 (L.L.antrieb_force_1) 0.55 <  && 
	 (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		5 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}

	 (M.L.checkifmanual) 

	(L.L.antrieb_dnshift_request) 1 = 
	 {if}
		2 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}

(M.L.acceldiff)
{endif}


l0 4 =
{if}
	(C.L.antrieb_getr_ratio4) (S.L.antrieb_getr_ratio_act)

	(M.L.antrieb_upshiftcomplete)

	(M.L.acceldiff)

		
		267 s3  
		187.0239774 s4
				 
	
	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < 
	(L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}



	(L.L.antrieb_is_clutch) 1 =
	(L.L.antrieb_upshift_request) &&
	 (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		
		  (L.L.antrieb_force_1) 0.5 < &&
		   {if}
			7 (S.L.antrieb_getr_aktugang) 
		   {endif}

		   (L.L.antrieb_force_1) 0.5 >
		  (L.L.antrieb_force_1) 0.6 < &&
		   {if}
			6 (S.L.antrieb_getr_aktugang) 
		   {endif}

		    (L.L.antrieb_force_1) 0.6 >
		     {if}
				5 (S.L.antrieb_getr_aktugang) 
		    {endif}

		1 (S.L.antrieb_upshift_complete)
		0 (S.L.antrieb_upshift_request)
	 {endif}
	  
	

	(M.L.checkifmanual) 

	(L.L.antrieb_dnshift_request) 1 = 
	 {if}
		3 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}



{endif}


l0 5 =
{if}
	(C.L.antrieb_getr_ratio5) (S.L.antrieb_getr_ratio_act)

(M.L.antrieb_upshiftcomplete)

	
	315.9602888  s3 
	239.3501805  s4
					 
	
	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) <  
	(L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}



	(L.L.antrieb_is_clutch) 1 = 
	(L.L.antrieb_upshift_request) && 
	 (L.L.antrieb_getr_gangvorwahl) 4 = && 
	  (L.L.antrieb_force_1) 0.6 > &&
	 {if}
		 
		6 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}


	 (L.L.antrieb_is_clutch) 1 = 
	(L.L.antrieb_upshift_request) &&  				  
	 (L.L.antrieb_force_1) 0.6 < &&
	(L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		7 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
		0 (S.L.antrieb_upshift_manual_request) 
	 {endif}

	(M.L.checkifmanual) 

	(L.L.antrieb_dnshift_request) 1 = 
	 {if}
		4 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}

(M.L.acceldiff)
{endif}


l0 6 =
{if}
	(C.L.antrieb_getr_ratio6) (S.L.antrieb_getr_ratio_act)


	(M.L.antrieb_upshiftcomplete)

	406 s3 
	298 s4
	
	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_getr_gangvorwahl) 4 = && 
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}

		
	(L.L.antrieb_is_clutch) 1 = 
	(L.L.antrieb_upshift_request) && 				  
	(L.L.antrieb_force_1) 0.6 < &&
	(L.L.antrieb_force_1) 0.45 > &&  
	(L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		8 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}


	(L.L.antrieb_is_clutch) 1 =
	(L.L.antrieb_upshift_request) &&
	(L.L.antrieb_force_1) 0.45 < &&
	(L.L.antrieb_getr_gangvorwahl) 4 = &&

	 {if}
		 
		9 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}

	 	(L.L.antrieb_is_clutch) 1 =
	(L.L.antrieb_upshift_request) &&				  
	 (L.L.antrieb_force_1) 0.6 > &&
	(L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		7 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
		0 (S.L.antrieb_upshift_manual_request) 
	 {endif}


	(M.L.checkifmanual) 

	(L.L.antrieb_dnshift_request) 1 = 
	 {if}
		5 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}


(M.L.acceldiff)
 {endif}


l0 7 =
{if}
	(C.L.antrieb_getr_ratio7) (S.L.antrieb_getr_ratio_act)

	    (M.L.antrieb_upshiftcomplete)

  	508 s3 
	385.4651163 s4 
	
	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}


	 	(L.L.antrieb_is_clutch) 1 =
	(L.L.antrieb_upshift_request) &&
	 (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		
		  (L.L.antrieb_force_1) 0.75 < &&
		   {if}
			9 (S.L.antrieb_getr_aktugang) 
		   {endif}


		    (L.L.antrieb_force_1) 0.75 >
		     {if}
				8 (S.L.antrieb_getr_aktugang) 
		    {endif}

		1 (S.L.antrieb_upshift_complete)
		0 (S.L.antrieb_upshift_request)
	 {endif}




	(M.L.checkifmanual) 



		(L.L.antrieb_kickdown) 
		    {if}

	    261.627907 s4 s3   
	
	    {else}
	     121.627907 s4 s3  
	    {endif}

	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_getr_gangvorwahl) 4 = && 
	(L.L.antrieb_dnshift_request) 1 = ||
	 {if}
		6 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}

(M.L.acceldiff)

{endif}


l0 8 =
{if}
	(C.L.antrieb_getr_ratio8) (S.L.antrieb_getr_ratio_act)

		

    (M.L.antrieb_upshiftcomplete) 

	648 s3
	491.1111111 s4 
	
	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}

		
	(L.L.antrieb_is_clutch) 1 = (L.L.antrieb_upshift_request) && (L.L.antrieb_getr_gangvorwahl) 4 = && (L.L.antrieb_force_1) 0.7 > &&
	 {if}
		 
		9 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)


	 {endif}


	 
	(L.L.antrieb_is_clutch) 1 = (L.L.antrieb_force_1) 0.7 < && (L.L.antrieb_upshift_request) &&  (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		10 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}

	 (M.L.checkifmanual) 

	(L.L.antrieb_kickdown) 
	    {if}
		  376.644172  s4 s3   
	 {else}
		173.3333333 s4 s3  
	{endif}

	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_getr_gangvorwahl) 4 = && 
	(L.L.antrieb_dnshift_request) 1 = ||
	 {if}
		7 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}


(M.L.acceldiff)
{endif}


l0 9 =
{if}
	(C.L.antrieb_getr_ratio9) (S.L.antrieb_getr_ratio_act)

   (M.L.antrieb_upshiftcomplete)

			       	841.4615385  s3  
				637 s4
	
	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) <  (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}

		
	(L.L.antrieb_is_clutch) 1 = (L.L.antrieb_upshift_request) && (L.L.antrieb_getr_gangvorwahl) 4 = &&  
	 {if}
		 
		10 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}

	  (M.L.checkifmanual)


	(L.L.antrieb_kickdown) (L.L.antrieb_force_1) 0.45 > &&
	    {if}
		536.644172  s4 s3  
	 {else}
		 432.6923077 s4 s3   
	{endif}

	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_getr_gangvorwahl) 4 = &&
	(L.L.antrieb_dnshift_request) 1 = ||
	 {if}
		8 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}

(M.L.acceldiff)

{endif}


l0 10 =
{if}
	(C.L.antrieb_getr_ratio10) (S.L.antrieb_getr_ratio_act)

   (M.L.antrieb_upshiftcomplete)

				1073.644172  s3  
				813.4969325  s4	
	
	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_getr_gangvorwahl) 4 = &&
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}

		
	(L.L.antrieb_is_clutch) 1 = (L.L.antrieb_upshift_request) && (L.L.antrieb_getr_gangvorwahl) 4 = &&  
	 {if}
		 
		11 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}

	 (M.L.checkifmanual)
				 	(L.L.antrieb_kickdown) 
					    {if}
			
				    656.1472393 s4 s3  
				
				    {else}
				    552.1472393 s4 s3  
				    {endif} 

				


	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_getr_gangvorwahl) 4 = && 
	(L.L.antrieb_dnshift_request) 1 = ||
	 {if}
		9 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}


(M.L.acceldiff)

{endif}


l0 11 =
{if}
	(C.L.antrieb_getr_ratio11) (S.L.antrieb_getr_ratio_act)


	   (M.L.antrieb_upshiftcomplete)

					1377.062992 s3 
					1044.094488 s4
	
	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_getr_gangvorwahl) 4 = && 
	 {if}
		 
		1 (S.L.antrieb_upshift_request)  
	 {endif}

		
	(L.L.antrieb_is_clutch) 1 = (L.L.antrieb_upshift_request) && (L.L.antrieb_getr_gangvorwahl) 4 = &&    
	 {if}
		 
		12 (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
	 {endif}


	  (M.L.checkifmanual)


		(L.L.antrieb_kickdown) 
			    {if}
	
					  903.644172  s4 s3  

			 {else}
					 708.6614173 s4 s3    

			{endif}  

				


	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_getr_gangvorwahl) 4 = && 
	(L.L.antrieb_dnshift_request) 1 = ||
	 {if}
		10 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}

(M.L.acceldiff)
{endif}


l0 12 =
{if}
	(C.L.antrieb_getr_ratio12) (S.L.antrieb_getr_ratio_act)

	   (M.L.antrieb_upshiftcomplete)


	(L.L.antrieb_kickdown) 
	    {if}

	  1200  s4 s3  
	 {else}
		900  s4 s3  
	{endif}

				


	(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_getr_gangvorwahl) 4 = && 
	(L.L.antrieb_dnshift_request) 1 = ||
	 {if}
		11 (S.L.antrieb_getr_aktugang)
		0 (S.L.antrieb_dnshift_request)
	 {endif}


{endif}





(L.L.antrieb_upshift_complete) (L.L.antrieb_upshift_request) ||
{if}
	(L.L.engine_n) (F.L.engine_M_minThrottle) (L.L.engine_n) (F.L.engine_M_maxThrottle) (L.L.engine_n) (F.L.engine_M_minThrottle) abs + / (S.L.throttle_active)	
{else}
	1 (S.L.throttle_active)	
{endif}
		



(L.L.antrieb_is_clutch_off)
{if}
	700 s1
{else}
	800 s1	
{endif}

(L.L.antrieb_upshift_complete) 1 =
{if}

	1 (S.L.antrieb_is_clutch)
{else}
	(L.L.antrieb_upshift_request) !
	{if}
		(L.L.antrieb_getr_ratio_act) (L.L.antrieb_n_kardanwelle) * l1 < 
		{if}
			(L.L.engine_n) (F.L.clutch_friction_2) (S.L.antrieb_is_clutch)
			0 (S.L.antrieb_is_clutch_off)
		{else}


				1 (S.L.antrieb_is_clutch_off)
				(L.L.antrieb_upshift_complete) !
				{if}
					(L.L.antrieb_is_clutch) (L.S.Timegap)  0.4 * - 0 max (S.L.antrieb_is_clutch)
				{else}

					(L.L.antrieb_is_clutch) (L.S.Timegap)  3 * - 0 max (S.L.antrieb_is_clutch)
				
				{endif}

		{endif}
	{else}

		 (L.L.antrieb_upshift_request) 
		{if}
			(L.L.engine_M) 0 <
			{if}
				1 (S.L.antrieb_is_clutch)
			{endif}

		{else}
			(L.L.antrieb_is_clutch) (L.S.Timegap)  2 * + 1 min (S.L.antrieb_is_clutch)
		{endif}
	{endif}
{endif}



'Berechnung der Kupplungsdrehzahl:

	(L.L.n_Wheel) (C.L.antrieb_i_achse) * (L.L.antrieb_getr_ratio_act) * (S.L.antrieb_kupp_n)

'Berechnung des Motordrehmomentes (engine.osc):

	(M.L.engine_moment)



'Berechnung der Differenz zwischen Motordrehzahl und Kupplungsdrehzahl:

	(L.L.antrieb_kupp_n) (L.L.engine_n) - (S.L.antrieb_kupp_n_delta) abs 50 >
'	{if}
'		1 (S.L.antrieb_kupp_schleif)
'	{endif}


'Wenn kein Gang eingelegt ist...
	(L.L.antrieb_getr_aktugang) 0 = (L.L.antrieb_is_clutch) 0.980 > || 
	{if}
		0 (S.L.antrieb_kupp_M_haft) (S.L.antrieb_kupp_M_gleit)
		1 (S.L.antrieb_kupp_schleif)
	{else}
'Sonst Berechnen der aktuellen Kupplungsmomente 0.35 0.6 for cars:

		
		1 (L.L.antrieb_is_clutch) - 0 max 1 min d *

		s0
		(C.L.antrieb_kupp_Mmax_haft) * (S.L.antrieb_kupp_M_haft)
		l0 (C.L.antrieb_kupp_Mmax_gleit) * (S.L.antrieb_kupp_M_gleit)
	{endif}


'Wenn die Kupplung nicht schleift...

	(L.L.antrieb_kupp_schleif) 0 =
	{if}
		(L.L.antrieb_kupp_n) (S.L.engine_n)
		(L.L.engine_M) (S.L.antrieb_getr_M_an)
		(L.L.engine_M) abs (L.L.antrieb_kupp_M_haft) >
		{if}
			1 (S.L.antrieb_kupp_schleif)
		{endif}
	{else}

'Sonst...

		(L.L.antrieb_kupp_n_delta) s0
		0 >
'Wenn Motor durch Kupplung beschleunigt wird...
		{if}
'Berechnen des Motor-Beschleunigungsmomentes:

			(L.L.antrieb_kupp_M_gleit) /-/ (S.L.antrieb_getr_M_an)
		{else}
			(L.L.antrieb_kupp_M_gleit) (S.L.antrieb_getr_M_an)
		{endif}

' Calls engine.osc
		(M.L.engine_acceleration)


'Prüfen, ob sich das Vorzeichen der Drehzahldifferenz umkehrt:


		(L.L.antrieb_kupp_n) (L.L.engine_n) - (L.L.antrieb_kupp_n_delta) * 0 <
		{if}
			0 (S.L.antrieb_kupp_schleif)
			(L.L.antrieb_kupp_n) (S.L.engine_n)
		{endif}


	{endif}

	
'Berechnung des Abtriebmomentes:

	(L.L.antrieb_getr_M_an)  (L.L.antrieb_getr_ratio_act) * (C.L.antrieb_i_achse) * (C.L.gear_efficiency) * (S.L.M_Wheel)

	(L.L.M_Wheel) (L.L.antrieb_retardermoment) +  (S.L.M_Wheel)
{endif}

{end}


{macro:antrieb_getr_chkCh}
'	Berechnung der aktuellen Hochschaltschwelle: (l3 = bei Vollgas, l4 = bei Leergas)
	(L.L.antrieb_throttle_stellglied) s2 l3 * 1 l2 - l4 * +
{end}


{macro:antrieb_upshiftcomplete}

(L.L.velocity) 2 >
{if}
	(L.L.antrieb_upshift_complete) (L.L.engine_n) (L.L.antrieb_n_kardanwelle_save) (L.L.antrieb_getr_ratio_act) * < &&
	{if}
	1 (S.L.antrieb_upshift_complete_1)	
	
	{endif}

	(L.L.antrieb_upshift_complete_1)
	{if}
		(L.L.antrieb_upshift_complete) (L.S.Timegap) 4 * - 0 max (S.L.antrieb_upshift_complete) 
	{endif}

	(L.L.antrieb_upshift_complete) ! 
	{if}
		0 (S.L.antrieb_upshift_complete_1)
	{endif}

{else}
	0 (S.L.antrieb_upshift_complete_1) (S.L.antrieb_upshift_complete) 
{endif}
{end}


{macro:acceldiff}


'F MA
' mass

(L.L.antrieb_beschleunigung) 0 > 
{if}
' mass											Drag		RollD
13770 (L.L.antrieb_beschleunigung) * (L.L.Axle_Brakeforce_0_R) 4 * + 800 + 1.08 * (S.L.antrieb_force)
{endif} 

(L.L.antrieb_beschleunigung) 0 <
{if}
1 (S.L.antrieb_force)
{endif} 

(L.L.antrieb_upshift_request) ! (L.L.antrieb_upshift_complete) ! &&
{if}


(L.L.M_Wheel) (L.L.antrieb_force) / 1 (L.L.throttle) / * (S.L.antrieb_force_1)

{endif}


(L.L.antrieb_upshift_complete) !
{if}

(L.L.antrieb_n_kardanwelle) 5 max (S.L.antrieb_n_kardanwelle_save)
{endif}
{end}


{macro:checkifmanual}

	 (L.L.antrieb_is_clutch) 1 = 
	(L.L.antrieb_upshift_request) &&  				  
	 (L.L.antrieb_getr_gangvorwahl) 5 = &&
	 {if}
		 
		(L.L.antrieb_getr_aktugang) (L.L.antrieb_shift_quo) + (S.L.antrieb_getr_aktugang) 
		0 (S.L.antrieb_upshift_request)
		1 (S.L.antrieb_upshift_complete)
		0 (S.L.antrieb_upshift_manual_request) (S.L.antrieb_shift_quo)
	 {endif}
 
{end}


