'ZF ECOMAT 1 'C 2023 Christian Rolle {macro:antrieb_init} 1 (S.L.antrieb_getr_gangwahl) (S.L.antrieb_getr_gangvorwahl) 1 (S.L.antrieb_getr_aktugang) (S.L.antrieb_retarderstufe) 0 (S.L.antrieb_wandler_moment) (S.L.antrieb_WK) 2 (S.L.cp_lenkrad_visible) (C.L.antrieb_i_achse) (S.L.antrieb_i_achse) {end} {macro:antrieb_frame} 2 (S.L.vis_doors_sw) (L.L.antrieb_getr_aktugang) (S.L.Debug_2) (L.L.antrieb_n_kardanwelle) (S.L.Debug_1) (L.L.vis_gearlock) 0 = {if} 1 (S.L.vis_gearlock_sw) {else} 0 (S.L.vis_gearlock_sw) {endif} (L.L.antrieb_retarder_running_timer) (L.S.Timegap) + (S.L.antrieb_retarder_running_timer) (L.L.dash_retarder_sw) (L.L.brake) 0.15 > || (L.L.velocity) 15 > && {if} 1 (S.L.antrieb_retarder_running) (L.L.antrieb_retarder_running_timer_rep) ! {if} 0 (S.L.antrieb_retarder_running_timer) 1 (S.L.antrieb_retarder_running_timer_rep) {endif} {endif} (L.L.velocity) 14 < {if} (L.L.antrieb_retarder_running) {if} (L.L.antrieb_retarder_running_timer) 1 > {if} (T.L.ev_retarder_disengagex) {endif} 0 (S.L.antrieb_retarder_running) 0 (S.L.antrieb_retarder_running_timer_rep) {endif} {else} (L.L.antrieb_retarder) ! (L.L.brake) 0.05 < && (L.L.antrieb_retarder_running) && {if} (L.L.antrieb_retarder_running_timer) 2 > {if} (T.L.ev_retarder_disengagex) {endif} 0 (S.L.antrieb_retarder_running) 0 (S.L.antrieb_retarder_running_timer_rep) {endif} {endif} (L.L.antrieb_getr_aktugang) (F.L.antrieb_getr_torquerestriction) (S.L.engine_M_restriction) (L.L.antrieb_shift_timer) (L.S.Timegap) + (S.L.antrieb_shift_timer) 'Velocity aus Antriebsachse: 1.05 pi * (L.L.Wheel_RotationSpeed_1_L) * 1000 / 60 * s0 1.05 pi * (L.L.Wheel_RotationSpeed_1_R) * 1000 / 60 * s1 l0 l1 + 2 / (S.L.antrieb_Velocity) '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) ' Setzen des maximalen Eingangsmomentes: (C.L.antrieb_gearboxtype) 1 = {if} (L.L.engine_power_sv) ! {if} 2500 (S.L.antrieb_maxtorque) {else} 2800 (S.L.antrieb_maxtorque) {endif} {endif} '############################## 'AB HIER ZF ECOMAT '############################## (L.L.elec_busbar_main) {if} 'Achsrucken bei Wandlerschluss: (L.L.Throttle) (S.L.antrieb_rucksoundvol) (L.L.antrieb_WK) (L.L.antrieb_WK_prev) = ! {if} (L.L.antrieb_WK) {if} (T.L.ev_WK_ruck) {endif} (L.L.antrieb_WK) (S.L.antrieb_WK_prev) {endif} 'Einlegen der Fahrstufe: (L.L.antrieb_getr_gangvorwahl) (L.L.antrieb_getr_gangwahl) = ! {if} (L.L.antrieb_getr_gangwahl_timer) (L.S.Timegap) + (S.L.antrieb_getr_gangwahl_timer) s0 l0 (C.L.antrieb_gangwahlzeit) > {if} (L.L.engine_on) 1 = {if} (L.L.antrieb_getr_gangvorwahl) 1 > {if} (L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd6) > {if} 6 (S.L.antrieb_getr_aktugang) (T.L.ev_schaltruck) {else} (L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd5) > {if} 5 (S.L.antrieb_getr_aktugang) (T.L.ev_schaltruck) {else} (L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd4) > {if} 4 (S.L.antrieb_getr_aktugang) (T.L.ev_schaltruck) {else} (L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd3) > {if} 3 (S.L.antrieb_getr_aktugang) (T.L.ev_schaltruck) {else} (L.L.antrieb_n_kardanwelle) (C.L.antrieb_getr_autoSwDnMinSpd2) > (L.L.antrieb_Velocity) 5 > || {if} 2 (S.L.antrieb_getr_aktugang) (T.L.ev_schaltruck) {else} 1 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_gear_engaged_timer) (S.L.antrieb_WK) (T.L.ev_schaltruck) {endif} {endif} {endif} {endif} {endif} {endif} {endif} (L.L.antrieb_getr_gangvorwahl) 0 = {if} 0 (S.L.antrieb_gear_engaged_timer) 9 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_WK) {endif} 0 (S.L.antrieb_getr_gangwahl_timer) (L.L.antrieb_getr_gangvorwahl) (S.L.antrieb_getr_gangwahl) {endif} {endif} 'Gang rausnehmen, wenn Neutral angefordert: (L.L.antrieb_getr_gangwahl) 1 = (L.L.engine_n) 200 < || {if} 0 (S.L.antrieb_getr_aktugang) (S.L.antrieb_WK) 0 (S.L.antrieb_wandler_swgear_timer) {endif} 'Wandler Fade-In, wenn aus Neutral in den Gang geschalten wird: (L.L.Throttle) 0.05 < (L.L.Brake) 0.15 > && (L.L.antrieb_Velocity) 3 < && {if} 0 (S.L.antrieb_wandler_swgear_timer) {endif} 'Rückwärtsgangsperre: (L.L.antrieb_getr_gangvorwahl) 0 = (L.L.antrieb_Velocity) 3 >= && {if} 1 (S.L.antrieb_getr_gangwahl) {endif} 'Prüfen, ob Gang gewechselt wird: (M.L.antrieb_getr_chkNxtGear) 'Berechnung des aktuellen Motordrehmoments: (M.L.engine_moment) 'Berechnung des dynamischen Schaltmoments: (L.L.antrieb_getr_fest) ! (L.L.antrieb_WK) 1 = && {if} (L.L.antrieb_maxtorque) 200 - 1000 / s0 (L.L.Throttle) 0 > {if} (L.L.antrieb_getr_aktugang) 1 = {if} (L.L.antrieb_schaltmoment) (L.L.antrieb_WK_startmoment) max (L.S.Timegap) 300 l0 * * 0.15 (L.L.Throttle) max * + (L.L.antrieb_maxtorque) min (S.L.antrieb_schaltmoment) {else} (L.L.antrieb_getr_aktugang) 2 = {if} (L.L.antrieb_schaltmoment) (L.L.antrieb_WK_startmoment) max (L.S.Timegap) 1000 l0 * * 0.15 (L.L.Throttle) max * + (L.L.antrieb_maxtorque) min (S.L.antrieb_schaltmoment) (L.L.antrieb_gearchange_timer) (L.S.Timegap) + (S.L.antrieb_gearchange_timer) 1.3 > {if} (L.L.antrieb_schaltmoment) 1.3 * (S.L.antrieb_schaltmoment) {endif} ' 1500 (S.L.antrieb_schaltmoment) {else} (L.L.antrieb_schaltmoment) (L.L.antrieb_WK_startmoment) max (L.S.Timegap) 900 * 0.25 (L.L.Throttle) max * + (L.L.antrieb_maxtorque) min (S.L.antrieb_schaltmoment) (L.L.antrieb_gearchange_timer) (L.S.Timegap) + (S.L.antrieb_gearchange_timer) 0.6 > {if} (L.L.antrieb_schaltmoment) 1.3 * (S.L.antrieb_schaltmoment) {endif} {endif} {endif} {else} (L.L.antrieb_schaltmoment) (L.L.antrieb_WK_startmoment) max (L.S.Timegap) 700 * + (L.L.antrieb_maxtorque) min (S.L.antrieb_schaltmoment) {endif} {else} (L.L.engine_M_raw) (S.L.antrieb_WK_startmoment) 0 (S.L.antrieb_gearchange_timer) {endif} 'deaktivieren des Retarders beim Gangwechsel: (L.L.antrieb_getr_aktugang) (L.L.antrieb_getr_prevgang) = ! {if} (L.L.antrieb_retarder_avail_timer) (L.S.Timegap) + (S.L.antrieb_retarder_avail_timer) 1 > {if} 1 (S.L.antrieb_retarder_avail) (L.L.antrieb_getr_aktugang) (S.L.antrieb_getr_prevgang) 0 (S.L.antrieb_retarder_avail_timer) {else} 0 (S.L.antrieb_retarder_avail) {endif} {endif} 'Support für Morphi ZF Soundconfigs: (L.L.antrieb_getr_aktugang) 1 = {if} (L.L.sound_fade_g1) (L.S.timegap) + 1 min (S.L.sound_fade_g1) {else} (L.L.sound_fade_g1) (L.S.timegap) 4 * - 0 max (S.L.sound_fade_g1) {endif} (L.L.antrieb_getr_aktugang) 2 = {if} (L.L.sound_fade_g2) (L.S.timegap) + 1 min (S.L.sound_fade_g2) {else} (L.L.sound_fade_g2) (L.S.timegap) 4 * - 0 max (S.L.sound_fade_g2) {endif} (L.L.antrieb_getr_aktugang) 3 = {if} (L.L.sound_fade_g3) (L.S.timegap) + 1 min (S.L.sound_fade_g3) {else} (L.L.sound_fade_g3) (L.S.timegap) 4 * - 0 max (S.L.sound_fade_g3) {endif} (L.L.antrieb_getr_aktugang) 4 = {if} (L.L.sound_fade_g4) (L.S.timegap) + 1 min (S.L.sound_fade_g4) {else} (L.L.sound_fade_g4) (L.S.timegap) 4 * - 0 max (S.L.sound_fade_g4) {endif} (L.L.antrieb_getr_aktugang) 5 = {if} (L.L.sound_fade_g5) (L.S.timegap) + 1 min (S.L.sound_fade_g5) {else} (L.L.sound_fade_g5) (L.S.timegap) 4 * - 0 max (S.L.sound_fade_g5) {endif} 'Bestimmung des Sollwertes für das Wandlermoment (L.L.antrieb_getr_gangwahl) 0 = ! (L.L.antrieb_getr_aktugang) 0 = ! && {if} (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / (L.L.antrieb_getr_ratio) * (S.L.antrieb_getr_n_ab) (L.L.engine_n) / 1 min (S.L.antrieb_wandler_sollwert) 'Glättung des Wandlermomentes (L.L.antrieb_wandler_ny) (L.L.antrieb_wandler_sollwert) > {if} (L.L.antrieb_wandler_ny) (L.S.Timegap) 0.5 * - (L.L.antrieb_wandler_sollwert) max (S.L.antrieb_wandler_ny) {else} (L.L.antrieb_wandler_ny) (L.S.Timegap) 0.5 * + (L.L.antrieb_wandler_sollwert) min (S.L.antrieb_wandler_ny) {endif} {endif} 'Wandler oder Getriebe? 'Fallunterscheidung, ob Getriebe reibt oder wandelt oder nicht: (L.L.antrieb_getr_fest) {if} (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / (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) > (L.L.antrieb_getr_gangwahl) 1 <= || (L.L.antrieb_WK) 0 = || {if} 0 (S.L.antrieb_getr_fest) {else} 'Setzen des Momentes l1 (L.L.engine_M_raw) min (S.L.antrieb_getr_M_an) 'Berechnung des Getriebeabtriebmomentes: (L.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * (S.L.M_Wheel) 'Drehzahl des Motors ergibt sich aus der Getriebeabtriebswelle: (L.L.antrieb_getr_ratio) (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / * (S.L.engine_n) {endif} 0 (S.L.antrieb_wandler_moment) {else} 'Leerlauf: (L.L.antrieb_getr_gangwahl) 1 = {if} 0 (S.L.M_Wheel) (S.L.antrieb_getr_M_an) (M.L.engine_acceleration) 0 (S.L.antrieb_wandler_moment) (S.L.antrieb_wandler_ny) (S.L.antrieb_wandler_sollwert) '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) 0 (S.L.nbs_fade) {endif} {else} 'Wandlergang: (L.L.antrieb_WK) 0 = {if} (L.L.antrieb_wandler_moment) abs (L.L.antrieb_getr_M_an) abs > {if} (L.L.antrieb_wandler_moment) 0 > {if} (L.L.antrieb_getr_M_an) (C.L.antrieb_wandler_fillrate) (L.S.Timegap) * + (S.L.antrieb_getr_M_an) (L.L.antrieb_wandler_moment) (L.L.antrieb_getr_M_an) < {if} (L.L.antrieb_wandler_moment) (L.L.antrieb_n_kardanwelle) (F.L.wandler_fluidrotation) - (S.L.antrieb_getr_M_an) {endif} {else} (L.L.antrieb_getr_M_an) (C.L.antrieb_wandler_fillrate) (L.S.Timegap) * - (S.L.antrieb_getr_M_an) (L.L.antrieb_wandler_moment) (L.L.antrieb_getr_M_an) > {if} (L.L.antrieb_wandler_moment) (L.L.antrieb_n_kardanwelle) (F.L.wandler_fluidrotation) (S.L.antrieb_getr_M_an) {endif} {endif} {else} (L.L.antrieb_wandler_moment) (L.L.antrieb_n_kardanwelle) (F.L.wandler_fluidrotation) - (S.L.antrieb_getr_M_an) {endif} 'Rückwärts: (L.L.antrieb_getr_gangwahl) 0 = {if} (L.L.antrieb_n_kardanwelle) 2 * (S.L.antrieb_getr_n_ab) /-/ (L.L.engine_n) / (S.L.antrieb_wandler_ny) 'Berechnung des Motor-Antriebsmomentes (L.L.engine_n) 2 * 3.14 * 60 / (L.L.engine_n) 2 * 3.14 * 60 / * s1 0.0042 (L.L.antrieb_wandler_ny) (F.L.antrieb_wandler_lambda) * l1 * (S.L.antrieb_wandler_moment) 'Berechnung des Rad-Abtriebsmomentes (L.L.antrieb_wandler_ny) (F.L.antrieb_wandler_my) (L.L.antrieb_getr_M_an) * (L.L.antrieb_i_achse) * 0.9 * /-/ (C.L.gear_efficiency) * (L.L.antrieb_n_kardanwelle) (F.L.antrieb_reverse_torque_reduction) * (S.L.M_Wheel) 'Vorwärts: {else} (L.L.Antrieb_WK) ! (L.L.antrieb_getr_aktugang) 1 = (L.L.antrieb_getr_aktugang) 2 = || && {if} (L.L.antrieb_wandler_swgear_timer) (L.S.Timegap) 10 * + 1 min (S.L.antrieb_wandler_swgear_timer) {endif} 'Berechnung des Motor-Antriebsmomentes (L.L.engine_n) 2 * 3.14 * 60 / (L.L.engine_n) 2 * 3.14 * 60 / * s1 0.0042 (L.L.antrieb_wandler_ny) (F.L.antrieb_wandler_lambda) * l1 * (S.L.antrieb_wandler_moment) 'Berechnung des Wandler-Wirkungsgrades: (L.L.engine_n) (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / (L.L.antrieb_getr_ratio) * - (F.L.antrieb_getr_diffs) (S.L.antrieb_getr_diff) 'Berechnung des Rad-Abtriebsmomentes (L.L.engine_M) (L.L.antrieb_i_achse) * (C.L.antrieb_wandler_factor) * (L.L.antrieb_getr_diff) * (L.L.antrieb_wandler_swgear_timer) * (C.L.gear_efficiency) * (S.L.M_Wheel) {endif} 'Vergleich der Ein- und Ausgangsleistungen: (L.L.M_Wheel) (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / * 3.14 * 30000 / (S.L.antrieb_gesamtleistung) (L.L.antrieb_gesamtleistung) (L.L.antrieb_motorleistung) / (S.L.antrieb_eta) (M.L.engine_acceleration) 'Fester Gang: {else} 'Berechnung der Drehzahldifferenz: (L.L.antrieb_getr_ratio) (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / * (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_Wheel) (M.L.engine_acceleration) 'Prüfen, ob sich das Vorzeichen der Drehzahldifferenz umgekehrt hat: (L.L.antrieb_getr_ratio) (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / * (L.L.engine_n) - l0 * 0 <= (L.L.engine_n) 560 > && {if} (L.L.antrieb_getr_ratio) (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / * (S.L.engine_n) (L.L.antrieb_n_kardanwelle) (L.L.antrieb_i_achse) / (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_Wheel) 1 (S.L.antrieb_getr_fest) {else} (L.L.antrieb_schaltmoment) /-/ (S.L.antrieb_getr_M_an) (L.L.antrieb_getr_ratio) * (C.L.gear_efficiency) * (S.L.M_Wheel) {endif} {endif} 0 (S.L.antrieb_wandler_moment) {endif} {endif} {endif} 'Retarder über Schalter: (L.L.Brake) 0.1 > (L.L.dash_retarder_sw) 0 > || (L.L.cp_retarder_sw_direkt) 0 = && (L.L.antrieb_getr_gangwahl) 1 > && (L.L.Throttle) 0.1 < && (L.L.velocity) abs 3 > && (L.L.bremse_ABS_eingriff) ! && {if} 1 (S.L.cockpit_light_retarder) {else} 0 (S.L.cockpit_light_retarder) {endif} -1 (S.L.misc_retarder_stalk) (L.L.Brake) (S.L.retarder_brake_vol) (L.L.Brake) 0.15 > (L.L.dash_retarder_sw) 0 > || (L.L.cp_retarder_sw_direkt) 0 = && (L.L.antrieb_getr_gangwahl) 1 > && (L.L.Throttle) 0.1 < && (L.L.antrieb_Velocity) 3 > && (L.L.bremse_ABS_eingriff) ! && (L.L.antrieb_retarder_avail) && {if} (L.L.antrieb_retarder_time_elapsed) (L.S.Timegap) + (S.L.antrieb_retarder_time_elapsed) (L.L.antrieb_retarder_time_elapsed) (C.L.antrieb_retarder_startdelay) > (L.L.cp_retarder_sw_direkt) (L.L.antrieb_retarderstufe) 0 > || && {if} (L.L.antrieb_retarder_sndlck_2) ! {if} (T.L.ev_retarder_engage) 1 (S.L.antrieb_retarder_sndlck_2) {endif} 1 (S.L.antrieb_retarder) 0 (S.L.antrieb_retarder_sndlck) {endif} (L.L.dash_retarder_sw) ! {if} 1 (S.L.antrieb_retarder) 2 (S.L.antrieb_retarderstufe) {else} (L.L.dash_retarder_sw) 3 > {if} 3 (S.L.antrieb_retarderstufe) 1 (S.L.antrieb_retarder) {else} (L.L.dash_retarder_sw) (S.L.antrieb_retarderstufe) 1 (S.L.antrieb_retarder) {endif} {endif} 'Ausschalten des Retarders: {else} (L.L.cp_retarder_sw_direkt) {if} (L.L.antrieb_retarder) (L.L.Brake) 0.15 > && (L.L.antrieb_Velocity) 0.5 > && {if} (T.L.ev_retarder_hiss) {endif} (L.L.brake) 0.05 <= (L.L.antrieb_Velocity) 0.5 > && (L.L.antrieb_retarder) && (L.L.antrieb_Velocity) 0.5 <= || {if} (L.L.antrieb_retarder_sndlck) ! {if} 1 (S.L.antrieb_retarder_sndlck) (T.L.ev_retarder_disengage) {endif} 0 (S.L.antrieb_retarder_sndlck_2) {endif} {else} (L.L.antrieb_retarder) (L.L.antrieb_Velocity) 0.5 > && {if} (T.L.ev_retarder_hiss) {endif} (L.L.antrieb_retarder) (L.L.antrieb_Velocity) 0.5 <= && {if} (L.L.antrieb_retarder_sndlck) ! {if} 1 (S.L.antrieb_retarder_sndlck) (T.L.ev_retarder_disengage) {endif} 0 (S.L.antrieb_retarder_sndlck_2) {endif} {endif} 0 (S.L.antrieb_retarder) (S.L.antrieb_retarder_time_elapsed) (S.L.antrieb_retarderstufe) {endif} 'Bremsmoment des Retarders: (L.L.antrieb_retarder) 1 = {if} (L.L.antrieb_retarderstufe) 1 = {if} (L.L.antrieb_n_kardanwelle) 29.3 / (F.L.retarder_stufe1) (C.L.antrieb_i_achse) /-/ * (L.L.antrieb_retarder_time_elapsed) (F.L.retarder_fadein) * (S.L.antrieb_retardermoment) (L.L.M_Wheel) + (S.L.M_Wheel) {else} (L.L.antrieb_retarderstufe) 2 = {if} (L.L.antrieb_retardermoment) (L.S.Timegap) 10000 * - s1 (L.L.antrieb_n_kardanwelle) 29.3 / (F.L.retarder_stufe2) (C.L.antrieb_i_achse) /-/ * (L.L.antrieb_retarder_time_elapsed) (F.L.retarder_fadein) * s2 l1 l2 max (S.L.antrieb_retardermoment) (L.L.M_Wheel) + (S.L.M_Wheel) {else} (L.L.antrieb_retarderstufe) 3 = {if} (L.L.antrieb_retardermoment) (L.S.Timegap) 10000 * - s1 (L.L.antrieb_n_kardanwelle) 29.3 / (F.L.retarder_stufe3) (C.L.antrieb_i_achse) /-/ * (L.L.antrieb_retarder_time_elapsed) (F.L.retarder_fadein) * s2 l1 l2 max (S.L.antrieb_retardermoment) (L.L.M_Wheel) + (S.L.M_Wheel) {else} (L.L.antrieb_retarderstufe) 4 = {if} (L.L.antrieb_retardermoment) (L.S.Timegap) 10000 * - s1 (L.L.antrieb_n_kardanwelle) 29.3 / (F.L.retarder_stufe4) (C.L.antrieb_i_achse) /-/ * (L.L.antrieb_retarder_time_elapsed) (F.L.retarder_fadein) * s2 l1 l2 max (S.L.antrieb_retardermoment) (L.L.M_Wheel) + (S.L.M_Wheel) {endif} {endif} {endif} {endif} {else} ' Ausfaden der Retarder-Bremsstärke (L.L.antrieb_retardermoment) (L.S.Timegap) 1500 * + 0 min (S.L.antrieb_retardermoment) (L.L.M_Wheel) + (S.L.M_Wheel) (L.L.antrieb_retarder_volume) (L.S.Timegap) - 0 max (S.L.antrieb_retarder_volume) s0 l0 0 = {if} 0 (S.L.antrieb_wendesatz) {endif} {endif} '################################################################################# ' Automatische Neutralschaltung bei Stillstand '################################################################################# (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) ! && {if} (L.L.bremse_p_Brzyl_HA) (C.L.antrieb_neutral_brakepressure) > s0 l0 (L.L.bremse_feststell) || {if} (L.L.antrieb_neutral_requested) ! {if} 1 (S.L.antrieb_neutral_requested) 0 (S.L.antrieb_gear_engaged_timer) (S.L.antrieb_wandler_moment) (S.L.antrieb_wandler_ny) (S.L.antrieb_wandler_sollwert) {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_schaltmoment) (L.L.nbs_fade) 0 = {if} (L.L.engine_n) 100 > {if} "zf-Eco1\nbs-on.wav" (T.F.ev_nbs_on) 0 (S.L.antrieb_wandler_swgear_timer) {endif} {endif} (L.L.nbs_fade) (L.S.timegap) + (S.L.nbs_fade) {endif} {else} 1 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_neutral_requested) (S.L.antrieb_gear_engaged_timer) (L.L.nbs_fade) 0 > {if} (T.L.ev_nbs_off) "misc\silence.wav" (T.F.ev_nbs_on) {endif} 0 (S.L.nbs_fade) {endif} {endif} '################################################################################# ' Planetengetriebe-Wendesatz (Fjü-Sound) '################################################################################# (L.L.antrieb_retarder) (L.L.antrieb_getr_gangwahl) 0 = || {if} 1 (S.L.antrieb_wendesatz) (L.L.antrieb_retarder_volume) (L.S.Timegap) + 1 min (S.L.antrieb_retarder_volume) ' Rücksetzen auf 0 erfolgt beim Fadeout des Retarderbremsmoments {endif} {endif} {end} {macro:antrieb_getr_chkNxtGear} ' Höchster Gang: s0! ' Verzögerung der Kickdown-Schaltung: (L.L.throttle) 0.95 >= {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: ' Beschleunigung in m/s²: (L.L.antrieb_Velocity) (L.L.antrieb_Velocity_prev) - 3.6 / (L.S.Timegap) / (S.L.antrieb_force) (L.L.antrieb_Velocity) (S.L.antrieb_Velocity_prev) (L.L.antrieb_getr_aktugang) s1 ' 1.Gang 1 = {if} (C.L.antrieb_getr_ratio1) (L.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) ' Wandlerüberbrückung im ersten Gang? (C.L.antrieb_WK_lock) 1 <= {if} (L.L.Throttle) 0 > {if} (C.L.antrieb_WK_LockMin1) s1 (C.L.antrieb_WK_LockMax1) s2 (C.L.antrieb_WK_LockMin1) l2 l1 - (L.L.Throttle) * + (C.L.antrieb_WK_LockMax1) min s0 (L.L.antrieb_n_kardanwelle) l0 > {if} (L.L.antrieb_n_kardanwelle) (L.L.engine_n) (C.L.engine_governed_idle_RPM) 350 + < {if} 0 (S.L.antrieb_WK) {else} 1 (S.L.antrieb_WK) {endif} {endif} {else} (L.L.antrieb_Velocity) 8 > {if} 1 (S.L.antrieb_WK) {else} (L.L.antrieb_Velocity) 4 < {if} 0 (S.L.antrieb_WK) {endif} {endif} {endif} (L.L.antrieb_kickdown) (L.L.Throttle) 0 = || {if} (C.L.antrieb_getr_autoSwUpkickdnSpd1) s3 s4 {else} (C.L.antrieb_getr_autoSwUpMaxSpd1) s3 s4 {endif} {else} (L.L.antrieb_kickdown) (L.L.Throttle) 0 = || {if} (C.L.antrieb_getr_WK_autoSwUpKickdnSpd1) s3 s4 {else} (C.L.antrieb_getr_WK_autoSwUpMaxSpd1) s3 s4 {endif} 0 (S.L.antrieb_WK) {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_force) 0 > && (L.L.antrieb_getr_gangvorwahl) 2 > && {if} 2 (S.L.antrieb_getr_aktugang) (C.L.antrieb_WK_lock) 1 <= {if} 1 (S.L.antrieb_WK) {endif} 0 (S.L.antrieb_schaltmoment) (T.L.ev_gear_upshift2) {endif} {endif} '2.Gang l1 2 = {if} (C.L.antrieb_getr_ratio2) (L.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) ' Wandlerüberbrückung im zweiten Gang? (C.L.antrieb_WK_lock) 2 = {if} (C.L.antrieb_WK_LockMin2) s1 (C.L.antrieb_WK_LockMax2) s2 (C.L.antrieb_WK_LockMin2) l2 l1 - (L.L.Throttle) * + (C.L.antrieb_WK_LockMax2) min s0 (L.L.antrieb_n_kardanwelle) l0 > {if} (L.L.antrieb_n_kardanwelle) (L.L.engine_n) (C.L.engine_governed_idle_RPM) 350 + < {if} 0 (S.L.antrieb_WK) {else} 1 (S.L.antrieb_WK) {endif} {endif} {else} 1 (S.L.antrieb_WK) {endif} (L.L.antrieb_getr_gangvorwahl) 3 > {if} (L.L.antrieb_kickdown) (L.L.Throttle) 0 = || {if} (C.L.antrieb_getr_autoSwUpkickdnSpd2) s3 s4 {else} (L.L.Throttle) (F.L.antrieb_schaltpunkt_last) (C.L.antrieb_getr_autoSwUpMaxSpd2) * s3 s4 {endif} {else} 9999 s3 s4 {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_force) 0 > && (L.L.antrieb_shift_timer) 1 > && {if} 3 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_shift_timer) (L.L.engine_turbo_RPM) 78.5 > (L.L.throttle) 0.8 > && {if} (T.L.engine_blowoff_int_2) {endif} 0 (S.L.antrieb_schaltmoment) 1 (S.L.antrieb_WK) (T.L.ev_gear_upshift3) {endif} (L.L.antrieb_n_kardanwelle) (L.L.engine_n) (C.L.engine_governed_idle_RPM) 350 + < (L.L.antrieb_WK) && {if} 0 (S.L.antrieb_WK) {endif} {endif} '3.Gang l1 3 = {if} (L.L.Throttle) 0.2 > {if} (L.L.antrieb_downshift_lock) (L.S.Timegap) + (S.L.antrieb_downshift_lock) {else} 0 (S.L.antrieb_downshift_lock) {endif} 1 (S.L.antrieb_WK) (C.L.antrieb_getr_ratio3) (L.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) (L.L.antrieb_getr_gangvorwahl) 4 > {if} (L.L.antrieb_kickdown) (L.L.Throttle) 0 = || {if} (C.L.antrieb_getr_autoSwUpkickdnSpd3) s3 s4 {else} (L.L.Brake) 0.15 > (L.L.antrieb_Retarder) || {if} (C.L.antrieb_getr_autoSwUpMaxSpd3) 1.5 * s3 s4 {else} (L.L.Throttle) (F.L.antrieb_schaltpunkt_last) (C.L.antrieb_getr_autoSwUpMaxSpd3) * s3 s4 {endif} {endif} {else} 9999 s3 s4 {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_force) 0 > && (L.L.antrieb_getr_gangvorwahl) 4 > && (L.L.antrieb_shift_timer) 1 > && {if} 4 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_shift_timer) (L.L.engine_turbo_RPM) 78.5 > (L.L.throttle) 0.8 > && {if} (T.L.engine_blowoff_int_2) {endif} 0 (S.L.antrieb_schaltmoment) (T.L.ev_gear_upshift4) {endif} (L.L.antrieb_kickdown) {if} (C.L.antrieb_getr_autoSwDnkickdnSpd3) s3 s4 {else} (L.L.Brake) 0.15 > (L.L.antrieb_Retarder) || {if} (C.L.antrieb_getr_autoSwDnMinSpd3) 1.3 * s4 (C.L.antrieb_getr_autoSwDnMaxSpd3) 1.3 * s3 {else} (C.L.antrieb_getr_autoSwDnMinSpd3) s4 (C.L.antrieb_getr_autoSwDnMaxSpd3) s3 {endif} {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_downshift_lock) 2 >= (L.L.antrieb_downshift_lock) ! || && (L.L.antrieb_shift_timer) 0.2 > && {if} 2 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_shift_timer) 0 (S.L.antrieb_schaltmoment) (T.L.ev_gear_downshift4) 0 (S.L.antrieb_downshift_lock) 1 (S.L.antrieb_retarder_deactivate) {endif} {endif} '4.Gang l1 4 = {if} (L.L.Throttle) 0.2 > {if} (L.L.antrieb_downshift_lock) (L.S.Timegap) + (S.L.antrieb_downshift_lock) {else} 0 (S.L.antrieb_downshift_lock) {endif} 1 (S.L.antrieb_WK) (C.L.antrieb_getr_ratio4) (L.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) (L.L.antrieb_getr_gangvorwahl) 4 > {if} (L.L.antrieb_kickdown) (L.L.Throttle) 0 = || {if} (C.L.antrieb_getr_autoSwUpkickdnSpd4) s3 s4 {else} (L.L.Brake) 0.15 > (L.L.antrieb_Retarder) || {if} (C.L.antrieb_getr_autoSwUpMaxSpd4) 1.5 * s3 s4 {else} (L.L.Throttle) (F.L.antrieb_schaltpunkt_last) (C.L.antrieb_getr_autoSwUpMaxSpd4) * s3 s4 {endif} {endif} {else} 9999 s3 s4 {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_force) 0 > && (L.L.antrieb_getr_gangvorwahl) 4 > && (L.L.antrieb_shift_timer) 1 > && {if} 5 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_shift_timer) (L.L.engine_turbo_RPM) 78.5 > (L.L.throttle) 0.8 > && {if} (T.L.engine_blowoff_int_2) {endif} 0 (S.L.antrieb_schaltmoment) (T.L.ev_gear_upshift5) {endif} (L.L.antrieb_kickdown) {if} (C.L.antrieb_getr_autoSwDnkickdnSpd4) s3 s4 {else} (L.L.Brake) 0.15 > (L.L.antrieb_Retarder) || {if} (C.L.antrieb_getr_autoSwDnMinSpd4) 1.3 * s4 (C.L.antrieb_getr_autoSwDnMaxSpd4) 1.3 * s3 {else} (C.L.antrieb_getr_autoSwDnMinSpd4) s4 (C.L.antrieb_getr_autoSwDnMaxSpd4) s3 {endif} {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_downshift_lock) 2 >= (L.L.antrieb_downshift_lock) ! || && (L.L.antrieb_shift_timer) 0.2 > && {if} 3 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_shift_timer) 0 (S.L.antrieb_schaltmoment) (T.L.ev_gear_downshift5) 0 (S.L.antrieb_downshift_lock) 1 (S.L.antrieb_retarder_deactivate) {endif} {endif} '5.Gang l1 5 = {if} (L.L.Throttle) 0.2 > {if} (L.L.antrieb_downshift_lock) (L.S.Timegap) + (S.L.antrieb_downshift_lock) {else} 0 (S.L.antrieb_downshift_lock) {endif} 1 (S.L.antrieb_WK) (C.L.antrieb_getr_ratio5) (L.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) (L.L.antrieb_getr_gangvorwahl) 4 >= {if} (L.L.antrieb_kickdown) (L.L.Throttle) 0 = || {if} (C.L.antrieb_getr_autoSwUpkickdnSpd5) s3 s4 {else} (L.L.Brake) 0.15 > (L.L.antrieb_Retarder) || {if} (C.L.antrieb_getr_autoSwUpMaxSpd5) 1.7 * s3 s4 {else} (L.L.Throttle) (F.L.antrieb_schaltpunkt_last) (C.L.antrieb_getr_autoSwUpMaxSpd5) * s3 s4 {endif} {endif} {else} 9999 s3 s4 {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) < (L.L.antrieb_force) 0 > && (L.L.antrieb_getr_gangvorwahl) 4 >= && (L.L.antrieb_shift_timer) 1 > && {if} 6 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_shift_timer) (L.L.engine_turbo_RPM) 78.5 > (L.L.throttle) 0.8 > && {if} (T.L.engine_blowoff_int_2) {endif} 0 (S.L.antrieb_schaltmoment) (T.L.ev_gear_upshift6) {endif} (L.L.antrieb_kickdown) {if} (C.L.antrieb_getr_autoSwDnkickdnSpd5) s3 s4 {else} (L.L.Brake) 0.15 > (L.L.antrieb_Retarder) || {if} (C.L.antrieb_getr_autoSwDnMinSpd5) 1.5 * s4 (C.L.antrieb_getr_autoSwDnMaxSpd5) 1.5 * s3 {else} (C.L.antrieb_getr_autoSwDnMinSpd5) s4 (C.L.antrieb_getr_autoSwDnMaxSpd5) s3 {endif} {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_downshift_lock) 2 >= (L.L.antrieb_downshift_lock) ! || && (L.L.antrieb_shift_timer) 0.2 > && {if} 4 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_shift_timer) 0 (S.L.antrieb_schaltmoment) (T.L.ev_gear_downshift6) 0 (S.L.antrieb_downshift_lock) 1 (S.L.antrieb_retarder_deactivate) {endif} {endif} '6.Gang l1 6 = {if} (L.L.Throttle) 0 >= {if} (L.L.antrieb_downshift_lock) (L.S.Timegap) + (S.L.antrieb_downshift_lock) {else} 0 (S.L.antrieb_downshift_lock) {endif} 1 (S.L.antrieb_WK) (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} (L.L.Brake) 0.15 > (L.L.antrieb_Retarder) || {if} (C.L.antrieb_getr_autoSwDnMinSpd6) 1.5 * s4 (C.L.antrieb_getr_autoSwDnMaxSpd6) 1.5 * s3 {else} (C.L.antrieb_getr_autoSwDnMinSpd6) s4 (C.L.antrieb_getr_autoSwDnMaxSpd6) s3 {endif} {endif} (M.L.antrieb_getr_chkCh) (L.L.antrieb_n_kardanwelle) > (L.L.antrieb_downshift_lock) 2 >= (L.L.antrieb_downshift_lock) ! || && (L.L.antrieb_shift_timer) 0.2 > && {if} 5 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_shift_timer) 0 (S.L.antrieb_schaltmoment) (T.L.ev_gear_downshift7) 0 (S.L.antrieb_downshift_lock) 1 (S.L.antrieb_retarder_deactivate) {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 l3 * 1 l2 - l4 * + (L.L.antrieb_throttle_stellglied) 0 > {if} l3 {else} l4 {endif} {end} {macro:temperatur_traegheit} 'Simuliert träges Verhalten (exponentiell) 'Ladekonventionen: ' Sollwert l0 ' Istwert l1 ' Konstante Anlauf l2 (Einheiten/s) ' Konstante Ablauf l3 (Einheiten/s) 'Anlauf oder Auslauf? l0 l1 > {if} l2 (L.S.Timegap) * 1 min -1 max s4 {else} l3 (L.S.Timegap) * 1 min -1 max s4 {endif} 'Sollwert: l0 'Istwert: l1 'Beschleunigung: - l4 * 'Addition zum Istwert: l1 + s1 {end}