'############## 'Getriebe-Script '############## 'Manual Gearbox 'Script Version: 0.9 'Omsi release: 1.01 'Needs: '- engine '- bremse 'Revision History: '- Kyle Ortiz 17.01.2012 Original script based off of Automatic transmission Script; debugged gear controls '- Kyle Ortiz 18.01.2012 Clutch Fraction recognized '---------------------- ' Init '---------------------- {trigger:kw_s_N} 0 (S.L.antrieb_getr_aktugang) {end} {trigger:kw_s_1} 1 (S.L.antrieb_getr_aktugang) (T.L.ev_schaltruck) {end} {trigger:kw_s_2} 2 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_kickdown_sense) (T.L.ev_schaltruck) {end} {trigger:kw_s_3} 3 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_kickdown_sense) (T.L.ev_schaltruck) {end} {trigger:kw_s_4} 4 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_kickdown_sense) (T.L.ev_schaltruck) {end} {trigger:kw_s_5} 5 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_kickdown_sense) (T.L.ev_schaltruck) {end} {trigger:kw_s_R} -1 (S.L.antrieb_getr_aktugang) 0 (S.L.antrieb_kickdown_sense) (T.L.ev_schaltruck) {end} {macro:antrieb_init} 1 (S.L.antrieb_getr_gangwahl) (S.L.antrieb_getr_gangvorwahl) 1 (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) 'Gang rausnehmen, wenn Neutral angefordert '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) ! {if} (L.L.antrieb_schaltmoment) (L.S.Timegap) 1000 * + (L.L.antrieb_schaltmoment_soll) min (S.L.antrieb_schaltmoment) {endif} 'Fallunterscheidung, ob Getriebe reibt oder wandelt oder nicht: (L.L.antrieb_getr_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) > (L.L.antrieb_getr_gangwahl) 1 <= || (L.L.antrieb_getr_aktugang) 1 = || {if} 0 (S.L.antrieb_getr_fest) {else} ' Setzen des Momentes l1 (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.n_Wheel) * (S.L.engine_n) {endif} 0 (S.L.antrieb_wandler_moment) {else} '################################################################################# ' Bestimmen, ob Leerlauf ist...: '################################################################################# (L.L.antrieb_getr_aktugang) 0 = (L.L.clutch) 0.95 > || {if} ' ... Antriebs- und Getriebeantriebsmoment sind 0: 0 (S.L.M_Wheel) (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...: '################################################################################# ' 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_Wheel) (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_Wheel) 1 (S.L.antrieb_getr_fest) (C.L.antrieb_kuppl_M_up_max) (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_Wheel) {endif} {endif} {endif} {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) (C.L.antrieb_kuppl_M_up_max) (L.L.clutch) (F.L.clutch_fraction) * s6 (C.L.antrieb_kuppl_M_up_min) (L.L.clutch) (F.L.clutch_fraction) * s7 (M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll) (S.L.antrieb_schaltmoment) (L.L.clutch) 0.1 < (L.L.antrieb_kickdown_sense) 1 < && {if} (L.L.antrieb_kickdown_sense) (L.S.Timegap) 0.5 * + 1 min (S.L.antrieb_kickdown_sense) {else} 1 (S.L.antrieb_kickdown_sense) {endif} (L.L.antrieb_getr_aktugang) s1 1 = {if} (C.L.antrieb_getr_ratio1) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) (C.L.antrieb_kuppl_M_up_max) (L.L.clutch) (F.L.clutch_fraction) * s6 (C.L.antrieb_kuppl_M_up_min) (L.L.clutch) (F.L.clutch_fraction) * s7 (M.L.antrieb_getr_schaltmoment) (S.L.antrieb_schaltmoment_soll) (S.L.antrieb_schaltmoment) {endif} l1 2 = {if} (C.L.antrieb_getr_ratio2) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) {endif} l1 3 = {if} (C.L.antrieb_getr_ratio3) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) {endif} l1 4 = {if} (C.L.antrieb_getr_ratio4) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) {endif} l1 5 = {if} (C.L.antrieb_getr_ratio5) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) {endif} l1 -1 = {if} (C.L.antrieb_getr_ratioR) (C.L.antrieb_i_achse) * (S.L.antrieb_getr_ratio) {endif} {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 * + {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}