'##############
'Getriebe-Script
'##############

'D851-Gearbox

'(c) 2008-2010 Rüdiger Hülsmann

'Script Version: 1.0
'Omsi release: 1.0

'Needs:
'- engine
'- bremse

'Revision History:
'- Rüdiger Hülsmann	13.04.2009	Neutralstellung mit anderer Zeitverzögerung
'- Rüdiger Hülsmann	04.06.2009	Verzögertes Einsetzen des Retarders
'- Marcel Kuhnt		13.06.2009	Removed Gearbox switches to cockpit script
'- Marcel Kuhnt		09.08.2009	Added Gearbox Failure
'- Rüdiger Hülsmann	09.10.2009	Rework for improved flexibility: Support for D.2/3-gearbox via config file
'					Functions added: Automatic neutral, retarder in 1st gear
'- Rüdiger Hülsmann	29.10.2009	Retarder bug removed
'- Rüdiger Hülsmann	16.09.2010	Reverse gear torque reduction
'- Rüdiger Hülsmann	14.10.2010	Downshift 3-2 added
'- Rüdiger Hülsmann	13.12.2010	Gearshift procedures debugged, smooth retarder fadeout, dynamic shifting moment
'- Rüdiger Hülsmann	27.12.2010	Retarder fadeout debugged
'- Rüdiger Hülsmann	01.01.2011	Retarder linked to ABS
'- Rüdiger Hülsmann	04.01.2011	Reverse only below 5 km/h


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

{macro:antrieb_init}
	1 (S.L.antrieb_getr_gangwahl) (S.L.antrieb_getr_gangvorwahl)
	0 (S.L.antrieb_getr_aktugang)
	
	0 (S.L.antrieb_wandler_moment)
{end}

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

{macro:antrieb_frame}

'Berechnen der Abtriebsdrehzahl
	(L.L.Wheel_RotationSpeed_1_L) (L.L.Wheel_RotationSpeed_1_R) + 2 / (C.L.antrieb_i_achse) * (S.L.antrieb_n_kardanwelle)

'Einlegen der Fahrstufe

(L.S.GetTime) (L.L.antrieb_getr_gangwahlzeitpunkt) - (C.L.antrieb_gangwahlzeit) >
(L.L.antrieb_getr_gangvorwahl) (L.L.antrieb_getr_gangwahl) = ! &&
(L.L.antrieb_failure_general) ! &&
{if}
	(L.L.antrieb_getr_gangvorwahl) (S.L.antrieb_getr_gangwahl)
	(L.L.antrieb_getr_gangwahl) 1 > (L.L.velocity) -1 > && (L.L.antrieb_getr_aktugang) 0 = &&
	{if}
		6 (S.L.antrieb_getr_aktugang)
		(C.L.antrieb_getr_ratio6) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
	{endif}
	(L.L.velocity) 1 < (L.L.antrieb_getr_gangwahl) 0 = && (L.L.antrieb_getr_aktugang) 0 = && 
	{if}
		1 /-/ (S.L.antrieb_getr_aktugang)
	{endif}
	(L.L.antrieb_getr_gangwahl) 1 = 
	{if}
		0 (S.L.antrieb_getr_aktugang) (S.L.antrieb_getr_fest)
	{endif}
{endif}

	
(L.L.engine_n) 200 <
{if}
	0 (S.L.antrieb_getr_aktugang)
{endif}






'Prüfen, ob Gang gewechselt wird - aber nur, wenn Getriebe heil ist:

	(L.L.antrieb_failure_general) !
	{if}
		(M.L.antrieb_getr_chkNxtGear)
	{endif}

'Berechnung des aktuellen Motordrehmoments:

	(M.L.engine_moment)



'Berechnung des dynamischen Schaltmoments

	(L.L.antrieb_getr_fest) ! (L.L.antrieb_schaltmoment) (C.L.antrieb_kuppl_M_up_max) < ||
	{if}
		(L.L.antrieb_schaltmoment) (L.S.Timegap) 1000 * + (C.L.antrieb_kuppl_M_up_max) min (S.L.antrieb_schaltmoment)
	
	{endif}
 	
'(L.L.antrieb_retarder_sw_direkt)
'{if}
'	1 (S.L.wandler_fest)
'{else}
'	0 (S.L.wandler_fest)
'{endif}
(L.L.antrieb_getr_gangwahl) 2 =
{if}
	
	(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwUpMinSpd1) 1 * >
	{if}
		1 (S.L.wandler_ue)
	{endif}
	(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwUpMinSpd1) 0.8 * <
	{if}
		0 (S.L.wandler_ue)
	{endif}
{else}
	
	(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwUpMinSpd1) 0.6 * >
	{if}
		1 (S.L.wandler_ue)
	{endif}
	(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwUpMinSpd1) 0.5 * <
	{if}
		0 (S.L.wandler_ue)
	{endif}
{endif}
(L.L.engine_n) 700 <
{if}
	0 (S.L.wandler_fest) (S.L.wandler_fest_time)
{endif}

(L.L.antrieb_getr_aktugang) 2 > (L.L.antrieb_getr_gangwahl) 2 = && (L.L.antrieb_getr_aktugang) 1 > (L.L.antrieb_getr_gangwahl) 4 = && || (L.L.wandler_ue) ||
{if}
	(L.L.wandler_fest_time) (L.S.timegap) + (S.L.wandler_fest_time)
	(L.L.wandler_fest_time) 0.5 >
	{if}
		1 (S.L.wandler_fest) (S.L.wandler_fest_time)
	{endif}
{else}
	0 (S.L.wandler_fest)
{endif}

(M.L.drehmomentbegrenzung_antrieb)
'Fallunterscheidung, ob Getriebe reibt oder wandelt oder nicht:

	(L.L.antrieb_getr_fest) (L.L.wandler_fest) &&
	{if}

'#################################################################################
'	Berechnung der Beschleunigung des Antriebsstrangs (am Motorflansch)
'#################################################################################
		

		(L.L.n_Wheel) (L.L.antrieb_getr_ratio) * (L.L.engine_n) - 2 * pi * 60 / (L.S.Timegap) / 

'	Berechnung des Momentes am Motor durch Trägheit:

		(C.L.engine_J) * s0

'	Berechnung des vom Antriebsstrang durchgeleiteten Momentes

		l0 /-/ (L.L.engine_M) (L.L.engine_M_additional_load) - + s1 


'	Wenn das Antriebsmoment zu groß ist oder ein Wandlergang eingelegt wird, rutscht die Kupplung durch:

		l1 abs (L.L.antrieb_schaltmoment) > 

		{if}
			
			0 (S.L.antrieb_getr_fest)

		{else}
			
'		Setzen des Momentes

			l1 (S.L.antrieb_getr_M_an) (S.L.antrieb_wandler_M)


'		Berechnung des Getriebeabtriebmomentes:

			(L.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * (S.L.M_Wheel1)

'		Drehzahl des Motors ergibt sich aus der Getriebeabtriebswelle:

			(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (S.L.engine_n)		
		{endif}


		(L.L.antrieb_getr_M_an) (S.L.antrieb_wandler_moment) (S.L.antrieb_getr_m_an_last) (S.L.antrieb_wandler_M)

	{else}

'#################################################################################
'	Bestimmen, ob Leerlauf ist...:
'#################################################################################

		(L.L.antrieb_getr_gangwahl) 1 = (L.L.antrieb_getr_aktugang) 0 = ||

		{if}

'		... Antriebs- und Getriebeantriebsmoment sind 0:
			0 (S.L.M_Wheel1) (S.L.antrieb_getr_M_an)

			(M.L.engine_acceleration)
			0 (S.L.antrieb_wandler_moment)

'			Wenn Neutralgang beim Bremsen eingelegt wird
			(L.L.antrieb_getr_gangwahl) 1 =
			{if}
				0 (S.L.antrieb_retarder_wasrunning) (S.L.antrieb_gear_engaged_timer)
			{endif}

		{else}

'#################################################################################
'		Bestimmen, ob ein Wandlergang eingelegt ist...:
'#################################################################################

			(L.L.wandler_fest) 0 =
			{if}

					

'#################################################################################
'			Wandler Vorwärtsgang:	
'#################################################################################
				
				
				(L.L.n_Wheel) (L.L.antrieb_getr_ratio) * s0 (L.L.engine_n) / (S.L.antrieb_wandler_ny) 

				(L.L.engine_on)
				{if}
					
					(L.L.engine_n) sqr l0 sqr - 1000 / (C.L.wandler_gr) * s1 (S.L.antrieb_wandler_moment)
					(L.L.antrieb_getr_M_an) (L.L.antrieb_wandler_ny) (F.L.antrieb_wandlung) * (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * (S.L.M_Wheel1)
					
				{endif}

				
				(L.L.antrieb_wandler_moment) abs (L.L.antrieb_wandler_M) abs >
				{if}
					(L.L.antrieb_wandler_moment) 0 >
					{if}
						(L.L.antrieb_wandler_M) (C.L.antrieb_wandler_fillrate) (L.S.Timegap) * + (S.L.antrieb_wandler_M)
						(L.L.antrieb_wandler_moment) (L.L.antrieb_wandler_M) <
						{if}
							(L.L.antrieb_wandler_moment) (S.L.antrieb_wandler_M)
						{endif}
					{else}
						(L.L.antrieb_wandler_M) (C.L.antrieb_wandler_fillrate) (L.S.Timegap) * - (S.L.antrieb_wandler_M)
						(L.L.antrieb_wandler_moment) (L.L.antrieb_wandler_M) >
						{if}
							(L.L.antrieb_wandler_moment) (S.L.antrieb_wandler_M)
						{endif}
					{endif}
				{else}
					(L.L.antrieb_wandler_moment) (S.L.antrieb_wandler_M)
				{endif}
				(L.L.antrieb_getr_M_an) s3
				(L.L.antrieb_wandler_ny) 1 <
				{if}
					(L.L.antrieb_wandler_M) (S.L.antrieb_getr_M_an)
				{else}
					(L.L.antrieb_wandler_M) (C.L.wandler_r) * (S.L.antrieb_getr_M_an)
				{endif}
		

'			Vergleich der Ein- und Ausgangsleistungen:
				(L.L.M_Wheel1) (L.L.n_Wheel) * 3.14 * 30000 / (S.L.antrieb_gesamtleistung)
				(L.L.antrieb_gesamtleistung) (L.L.antrieb_motorleistung) / (S.L.antrieb_eta)
				
	
				(M.L.engine_acceleration)
				(L.L.antrieb_getr_M_an) (S.L.antrieb_schaltmoment)
				


'#################################################################################
'			Sonst ist ein normaler Gang eingelegt:
'#################################################################################

			{else}


'			Berechnung der Drehzahldifferenz:

				(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (L.L.engine_n) - s0



'			An dieser Stelle muss ggf. noch das unterschiedliche Kupplungsmoment eingesetzt werden:

				l0 0 <
				{if}
					(L.L.antrieb_schaltmoment)
				{else}
					(L.L.antrieb_schaltmoment) /-/
				{endif}
				(S.L.antrieb_getr_M_an)
				(L.L.antrieb_getr_ratio) *
				(C.L.gear_efficiency) * (S.L.M_Wheel1)

				(M.L.engine_acceleration)

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

				(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (L.L.engine_n) - l0 * 0 <= (L.L.engine_n) 560 > &&
				{if}
					(L.L.antrieb_getr_ratio) (L.L.n_Wheel) * (S.L.engine_n)
					(L.L.n_Wheel) (L.L.antrieb_getr_ratio) * (L.L.engine_n) - 2 * pi * 60 / (L.S.Timegap) / 

'					Berechnung des Momentes am Motor durch Trägheit:

					(C.L.engine_J) * s0

'					Berechnung des vom Antriebsstrang durchgeleiteten Momentes

					l0 /-/ (L.L.engine_M) (L.L.engine_M_additional_load) - + (S.L.antrieb_getr_M_an)


'					Berechnung des Getriebeabtriebmomentes:

					(L.L.antrieb_getr_M_an) abs (L.L.antrieb_schaltmoment) abs <
					{if}
						
'						(L.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * (S.L.M_Wheel1)
						
						1 (S.L.antrieb_getr_fest)
						(C.L.antrieb_kuppl_M_up_max) (S.L.antrieb_schaltmoment)
'						(C.L.antrieb_kuppl_M_up_max) 3 * (S.L.antrieb_schaltmoment)					
					{else}
'						(L.L.antrieb_schaltmoment) /-/ (S.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * (S.L.M_Wheel1)
					{endif}
					


				{endif}

'				(L.L.antrieb_getr_M_an) (S.L.antrieb_wandler_moment) (S.L.antrieb_getr_m_an_last) (S.L.antrieb_wandler_M)

			{endif}
		{endif}

	{endif}


'(L.L.engine_n) 100 / (S.L.tank_percent)
'(L.L.antrieb_getr_aktugang) (S.L.tank_percent)
'(L.L.antrieb_getr_M_an) (S.L.debug_3)
'(L.L.engine_n) (S.L.debug_3)
'(L.L.n_Wheel) (L.L.antrieb_getr_ratio) * (S.L.debug_4)
'(L.L.engine_m) (S.L.debug_5)
'(L.L.antrieb_wandler_ny) (S.L.tank_percent)

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

	(L.L.Wheel_RotationSpeed_1_L) (L.L.Wheel_RotationSpeed_1_R) + 2 / (L.L.antrieb_getr_ratio) * (S.L.antrieb_getr_n_an)

	(L.L.brake) 0.01 >
	(L.L.antrieb_retarder_sw) &&
	(L.L.antrieb_retarder_sw_direkt) ||
	(L.L.antrieb_getr_gangwahl) 1 > &&
	(L.L.Throttle) 0.1 < &&
	(L.L.antrieb_n_kardanwelle) (C.L.retarder_min_einschaltspeed)  > &&
	(L.L.antrieb_failure_general) ! &&
	(L.L.bremse_ABS_eingriff) ! &&
	(L.L.antrieb_getr_fest) &&
	{if}	
			
		(L.L.retarder_ein_multi) (C.L.retarder_ein) (L.S.Timegap) * + 1 min (S.L.retarder_ein_multi)
		(L.L.antrieb_getr_n_an) (F.L.retarder_stufe1) (L.L.retarder_ein_multi) * (S.L.antrieb_retardermoment)
	{else}
		(L.L.retarder_ein_multi) (C.L.retarder_aus) (L.S.Timegap) * - 0 max (S.L.retarder_ein_multi)
		(L.L.antrieb_getr_n_an) (F.L.retarder_stufe1) (L.L.retarder_ein_multi) * (S.L.antrieb_retardermoment)
		
	{endif}		
	(L.L.antrieb_retardermoment) (L.L.antrieb_getr_ratio) * /-/ (S.L.M_Wheel2)
'	(L.L.retarder_ein_multi) (S.L.antrieb_retarder_volume)
	(L.L.antrieb_retardermoment) 10000000000000 >
	{if}
		1 (S.L.antrieb_wendesatz) (S.L.antrieb_retarder_volume)
	{else}	
		0 (S.L.antrieb_wendesatz) (S.L.antrieb_retarder_volume)
	{endif}
	(L.L.retarder_ein_multi) (S.L.antrieb_wendesatz) (S.L.antrieb_retarder_volume)



'#################################################################################
'	Automatische Neutralschaltung bei Stillstand
'#################################################################################

(C.L.antrieb_getr_version) 1 >
{if}
	(L.L.antrieb_gear_engaged_timer) (L.S.Timegap) + (S.L.antrieb_gear_engaged_timer)
	
	(L.L.antrieb_n_kardanwelle) (C.L.antrieb_neutral_maxspeed) <
	(L.L.antrieb_getr_gangwahl) 1 > &&
	(L.L.antrieb_retarder) ! &&
	(L.L.antrieb_retarder_wasrunning) ! &&	
	{if}
		(L.L.bremse_p_Brzyl_HA) (C.L.antrieb_neutral_brakepressure) >
		{if}
			(L.L.antrieb_neutral_requested) !
			{if}
				1 (S.L.antrieb_neutral_requested)

				(C.L.antrieb_getr_version) 2 = !
				(C.L.antrieb_getr_version) 2 = (L.L.antrieb_gear_engaged_timer) (C.L.antrieb_gear_engaged_mintime) < && ||
				{if}
					0 (S.L.antrieb_gear_engaged_timer)
				{endif}
			{endif}
			
			(L.L.antrieb_neutral_requested)
			(L.L.antrieb_gear_engaged_timer) (C.L.antrieb_gear_engaged_mintime) >= &&
			{if}
				0 (S.L.antrieb_getr_aktugang) (S.L.antrieb_wandler_M) (S.L.antrieb_wandler_moment)
				
			{endif}

		{else}	
			(L.L.antrieb_getr_gangwahl) 2 >
			{if}	
				1 (S.L.antrieb_getr_aktugang)
				0 (S.L.antrieb_neutral_requested) (S.L.antrieb_gear_engaged_timer)
				(C.L.antrieb_getr_ratio1) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
			{else}
				2 (S.L.antrieb_getr_aktugang)
				0 (S.L.antrieb_neutral_requested) (S.L.antrieb_gear_engaged_timer)
				(C.L.antrieb_getr_ratio2) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
			{endif}
		{endif}
		
	{endif}
{endif}
(L.L.engine_n) 100 >
{if}
	(L.L.antrieb_getr_aktugang) 1 =
	{if}
		(L.L.M_wheel1) (L.L.M_wheel2) + (L.L.M_wheel) + 2 / (S.L.M_wheel)
	{else}
		(L.L.M_wheel1) (L.L.M_wheel2) + (S.L.M_wheel)
	{endif}
{else}
	0 (S.L.M_wheel)
{endif}
'(L.L.antrieb_getr_gangwahl) (S.L.tank_percent)

'#################################################################################
'	Planetengetriebe-Wendesatz (Fjü-Sound)
'#################################################################################
	
'	(L.L.antrieb_retarder)  
'	(L.L.antrieb_getr_gangwahl) 0 = ||
'	{if}
'		1 (S.L.antrieb_wendesatz) (S.L.antrieb_retarder_volume)
'		Rücksetzen auf 0 erfolgt beim Fadeout des Retarderbremsmoments
'	{endif}
{end}



'#################################################################################
'	Bestimmung der Schaltgeschwindigkeiten
'#################################################################################

{macro:antrieb_getr_chkNxtGear}

'	Höchster Gang: s0!

'	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}

'	Verzögerung der gaspedalabhängigen Schaltschwelle:

	
	(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)
	
			(L.L.antrieb_getr_gangwahl) 3 =
			{if}
				1 (S.L.antrieb_kickdown)
			{endif}
			
			(L.L.antrieb_getr_aktugang) s1

			l1 -1 =
			{if}
				(C.L.antrieb_getr_ratioR) (C.L.antrieb_i_achse) * /-/ (S.L.antrieb_getr_ratio)
			{endif}
			
			l1 1 =
			{if}
				
'				(C.L.antrieb_getr_ratio1) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwUpkickdnSpd1) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd1) s4
					(C.L.antrieb_getr_autoSwUpMaxSpd1) s3
				{endif}
'				(L.L.engine_M) 1.5 * (S.L.antrieb_schaltmoment)
'				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < l0 2 >= && (L.L.antrieb_beschleunigung) 0 > &&
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_beschleunigung) 0 > && (L.L.antrieb_getr_gangwahl) 2 = ||
				{if}
					0 (S.L.wandler_fest) (S.L.wandler_fest_time)
					2 (S.L.antrieb_getr_aktugang)
					(C.L.antrieb_kuppl_M_up_max) s6
					(C.L.antrieb_kuppl_M_up_min) s7
					(M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll)	(S.L.antrieb_schaltmoment)
					(T.L.ev_gear_upshift_1)
					
					(C.L.antrieb_getr_ratio2) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
					(M.L.antrieb_gearwhine)				
					
				{endif}

				
				
			{endif}
			l1 2 =
			{if}
'				(C.L.antrieb_getr_ratio2) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwUpkickdnSpd2) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd2) s4
					(C.L.antrieb_getr_autoSwUpMaxSpd2) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_beschleunigung) 0 > && 
				{if}
					0 (S.L.wandler_fest) (S.L.wandler_fest_time)
					3 (S.L.antrieb_getr_aktugang)
					(C.L.antrieb_kuppl_M_up_max) s6
					(C.L.antrieb_kuppl_M_up_min) s7
					(M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll) (S.L.antrieb_schaltmoment)
					
					(C.L.antrieb_getr_ratio3) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
					(T.L.ev_gear_upshift_2)
					(M.L.antrieb_gearwhine)
								
				{endif}
				(L.L.antrieb_kickdown) l0 1 = ||
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd2) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd2) s4
					(C.L.antrieb_getr_autoSwDnMaxSpd2) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_retarder_armed) ! &&
				(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd2) < || (L.L.antrieb_getr_gangwahl) 2 = ! &&
				{if}
					1 (S.L.antrieb_getr_aktugang)
					0 (S.L.antrieb_schaltmoment)
					
					(C.L.antrieb_getr_ratio1) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
					
				{endif}
			{endif}
			l1 3 =
			{if}
'				(C.L.antrieb_getr_ratio3) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwUpkickdnSpd3) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd3) s4
					(C.L.antrieb_getr_autoSwUpMaxSpd3) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_beschleunigung) 0 > && 
				{if}
					0 (S.L.wandler_fest) (S.L.wandler_fest_time)
					4 (S.L.antrieb_getr_aktugang)
					(C.L.antrieb_kuppl_M_up_max) s6
					(C.L.antrieb_kuppl_M_up_min) s7
					(M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll) (S.L.antrieb_schaltmoment)
					(T.L.ev_gear_upshift_3)
					(M.L.antrieb_gearwhine)
					(C.L.antrieb_getr_ratio4) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
							
				{endif}
				(L.L.antrieb_kickdown) l0 1 = ||
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd3) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd3) s4
					(C.L.antrieb_getr_autoSwDnMaxSpd3) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_retarder_armed) ! &&
				(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd2) < ||
				{if}
					2 (S.L.antrieb_getr_aktugang)
					0 (S.L.antrieb_schaltmoment)
					(T.L.ev_gear_downshift_2)
					(C.L.antrieb_getr_ratio2) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
					
					
				{endif}
			{endif}
			l1 4 =
			{if}
'				(C.L.antrieb_getr_ratio4) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwUpkickdnSpd4) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd4) s4
					(C.L.antrieb_getr_autoSwUpMaxSpd4) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_beschleunigung) 0 > && 
				{if}
					0 (S.L.wandler_fest) (S.L.wandler_fest_time)
					5 (S.L.antrieb_getr_aktugang)
					(C.L.antrieb_kuppl_M_up_max) s6
					(C.L.antrieb_kuppl_M_up_min) s7
					(M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll) (S.L.antrieb_schaltmoment)
					(T.L.ev_gear_upshift_4)
'					(L.L.engine_m) (S.L.antrieb_wandler_M)
					(C.L.antrieb_getr_ratio5) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
					(M.L.antrieb_gearwhine)		
				{endif}
				(L.L.antrieb_kickdown) l0 1 = ||
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd4) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd4) s4
					(C.L.antrieb_getr_autoSwDnMaxSpd4) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_retarder_armed) ! &&
				(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd2) < ||
				{if}
					3 (S.L.antrieb_getr_aktugang)
					0 (S.L.antrieb_schaltmoment)
'					 (T.L.ev_gear_downshift_3)
					(C.L.antrieb_getr_ratio3) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
					
				{endif}
			{endif}
			l1 5 =
			{if}
'				(C.L.antrieb_getr_ratio5) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwUpkickdnSpd5) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwUpMinSpd5) s4
					(C.L.antrieb_getr_autoSwUpMaxSpd5) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_beschleunigung) 0 > && 
				{if}
					0 (S.L.wandler_fest) (S.L.wandler_fest_time)
					6 (S.L.antrieb_getr_aktugang)
					(C.L.antrieb_kuppl_M_up_max) s6
					(C.L.antrieb_kuppl_M_up_min) s7
					(M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll) (S.L.antrieb_schaltmoment)
					(M.L.antrieb_gearwhine)
					(T.L.ev_gear_upshift_4)
					
					(C.L.antrieb_getr_ratio6) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
							
				{endif}
				(L.L.antrieb_kickdown) l0 1 = ||
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd5) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd5) s4
					(C.L.antrieb_getr_autoSwDnMaxSpd5) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_retarder_armed) ! &&
				(L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd2) < ||
				{if}
					4 (S.L.antrieb_getr_aktugang)
					0 (S.L.antrieb_schaltmoment)
					  (T.L.ev_gear_downshift_4)
					(C.L.antrieb_getr_ratio4) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
					
				{endif}
			{endif}
			l1 6 =
			{if}
'				(C.L.antrieb_getr_ratio6) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
				(L.L.antrieb_kickdown)
				{if}
					(C.L.antrieb_getr_autoSwDnkickdnSpd6) s3 s4
				{else}
					(C.L.antrieb_getr_autoSwDnMinSpd6) s4
					(C.L.antrieb_getr_autoSwDnMaxSpd6) s3
				{endif}
				(M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) >
				{if}
					5 (S.L.antrieb_getr_aktugang)
					(C.L.antrieb_kuppl_M_dn_max) s6
					(C.L.antrieb_kuppl_M_dn_min) s7
					(M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll)
					0 (S.L.antrieb_schaltmoment)
'					 
					(C.L.antrieb_getr_ratio5) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio)
					
					
				{endif}
			{endif}
			(M.L.antrieb_gearwhine)

	{endif}
	{endif}


'	Testweise: Differenzialdrehzahlpfeifen

	(L.L.engine_n) (L.L.antrieb_n_kardanwelle) 2 * - (S.L.antrieb_n_differenz)





{end}

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

{macro:antrieb_getr_schaltmoment}
'	Berechnung des Schaltmomentes (l6 = bei Vollgas, l7 = bei Leergas)
	(L.L.antrieb_throttle_stellglied) s5 l6 * 1 l5 - l7 * +
{end}

{macro:antrieb_gearwhine}
(L.L.antrieb_gearwhine_fade) (L.S.Timegap) 3 * + 1 min (S.L.antrieb_gearwhine_fade)
					
{end}

{macro:drehmomentbegrenzung_antrieb}
(L.L.antrieb_getr_aktugang) 1.5 <
{if}
	(C.L.m_max_1) (S.L.throttle_multi)
{endif}
(L.L.antrieb_getr_aktugang) 2 =
{if}
	(C.L.m_max_2) (S.L.throttle_multi)
{endif}
(L.L.antrieb_getr_aktugang) 3 =
{if}
	(C.L.m_max_3) (S.L.throttle_multi)
{endif}
(L.L.antrieb_getr_aktugang) 3 >
{if}
	1 (S.L.throttle_multi)
{endif}
{end}







