'############## 'Door Script '############## 'Controls Doors '(c) 2007-2009 Rüdiger Hülsmann '(c) 2007-2012 Marcel Kuhnt '(c) 2011 Markus Rabe '(c) 31.05.2021 edited by Fourkane Mhoma (TheFMrr) for PDO Irisbus Citelis 18 (AddOn Saint-Servan) 'Script Version: 1.1 'Omsi release: 1.0 'Needs: '- elec '- actia '- bremse '- ramp '- sprite cranberry '#################### ' Front Doors '#################### {trigger:bus_doorfront0} 1 (S.L.cockpit_tuertaster1) (T.L.ev_Actia_BTN_door_pushed) (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > (L.L.DEV) && {if} ' door0 (left) (L.L.doorTarget_0) (L.L.doorTarget_0) ! (L.L.Actia_BTN_door0_block) ! && || {if} (M.L.trg_bus_doorfront0) {endif} ' door 1 (right) (M.L.trg_bus_doorfront1) {endif} {end} {trigger:bus_doorfront0_off} 0 (S.L.cockpit_tuertaster1) (T.L.ev_Actia_BTN_door_released) {end} ' > Emergency button ("nothahn") {trigger:bus_doorfront0_lock} (L.L.door_opening_locked) ! {if} 1 (S.L.doorfront_emergency) (T.L.ev_doorfront_emergency_pushed) {endif} {end} ' > "Tuersperre" {trigger:bus_doorfront0_block} (L.L.Actia_BTN_door0_block) ! (S.L.Actia_BTN_door0_block) {if} (T.L.ev_Actia_BTN_pushed) {else} (L.L.doorTarget_1) (L.L.doorTarget_0) ! && (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && {if} (M.L.trg_bus_doorfront0) {endif} (T.L.ev_Actia_BTN_released) {endif} {end} ' > Opening from the outside {trigger:bus_doorfront0_external} (L.L.elec_busbar_avail) (C.L.elec_busbar_minV) > {if} (L.L.doorfront_ext_opening_request_time) ! && {if} (L.S.GetTime) (S.L.doorfront_ext_opening_request_time) {endif} {endif} {end} '#################### ' Mid Doors '#################### {trigger:bus_doorfront1} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > (L.L.door_opening_locked) ! && (L.L.doorTarget_23) (L.L.door_SECU_off) || (L.L.bremse_halte) || && {if} (M.L.trg_bus_dooraft23) {endif} 1 (S.L.cockpit_tuertaster2) (T.L.ev_Actia_BTN_door_released) {end} {trigger:bus_doorfront1_off} 0 (S.L.cockpit_tuertaster2) (T.L.ev_Actia_BTN_door_pushed) {end} ' > Emergency button ("nothahn") {trigger:bus_doorfront1_lock} (L.L.door_opening_locked) ! {if} 1 (S.L.doorback23_emergency) (T.L.ev_doorback23_emergency_pushed) {endif} {end} ' > DEV trigger {trigger:bus_doorfront1_self} 1 (S.L.PAX_Exit1_Req) {end} '#################### ' Back Doors '#################### {trigger:bus_doorfront2} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > (L.L.door_opening_locked) ! && (L.L.doorTarget_45) (L.L.door_SECU_off) || (L.L.bremse_halte) || && {if} (M.L.trg_bus_dooraft45) {endif} 1 (S.L.cockpit_tuertaster3) (T.L.ev_Actia_BTN_door_pushed) {end} {trigger:bus_doorfront2_off} 0 (S.L.cockpit_tuertaster3) (T.L.ev_Actia_BTN_door_released) {end} ' > Emergency button ("nothahn") {trigger:bus_doorfront2_lock} (L.L.door_opening_locked) ! {if} 1 (S.L.doorback45_emergency) (T.L.ev_doorback45_emergency_pushed) {endif} {end} ' > DEV trigger {trigger:bus_doorfront2_self} 1 (S.L.PAX_Exit3_Req) {end} '#################### ' Back Back Doors '#################### {trigger:bus_doorfront3} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > (L.L.door_opening_locked) ! && (L.L.doorTarget_67) (L.L.door_SECU_off) || (L.L.bremse_halte) || && {if} (M.L.trg_bus_dooraft67) {endif} 1 (S.L.cockpit_tuertaster4) (T.L.ev_Actia_BTN_door_pushed) {end} {trigger:bus_doorfront3_off} 0 (S.L.cockpit_tuertaster4) (T.L.ev_Actia_BTN_door_released) {end} ' > Emergency button ("nothahn") {trigger:bus_doorfront3_lock} (L.L.door_opening_locked) ! {if} 1 (S.L.doorback67_emergency) (T.L.ev_doorback67_emergency_pushed) {endif} {end} ' > DEV trigger {trigger:bus_doorfront3_self} 1 (S.L.PAX_Exit5_Req) {end} ' > DEV allowed trigger (cockpit) {trigger:bus_dooraft} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > {if} (L.L.DEV) ! (S.L.DEV) ' (S.L.Actia_BTN_doorall) ! (S.L.Actia_BTN_doorall) {if} (T.L.ev_Actia_BTN_misc_pushed) {else} (T.L.ev_Actia_BTN_misc_released) {endif} (M.L.trg_bus_dooraft) {endif} {end} {trigger:bus_20h-switch} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > {if} (M.L.trg_bus_20h-switch) {endif} {end} {trigger:bus_doorfront_all_close} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > {if} (L.L.doorfront_emergency) s0 (L.L.doorback23_emergency) s1 || (L.L.doorback45_emergency) s2 || (L.L.doorback67_emergency) s3 || {if} l0 {if} 0 (S.L.doorfront_emergency) (T.L.ev_doorfront_unlock) {endif} l1 {if} 0 (S.L.doorback23_emergency) (T.L.ev_doorback_23_unlock) {endif} l2 {if} 0 (S.L.doorback45_emergency) (T.L.ev_doorback_45_unlock) {endif} l3 {if} 0 (S.L.doorback67_emergency) (T.L.ev_doorback_67_unlock) {endif} {else} (L.L.doorTarget_0) {if} (M.L.trg_bus_doorfront0) {endif} (L.L.doorTarget_1) {if} (M.L.trg_bus_doorfront1) {endif} (L.L.doorTarget_23) {if} (M.L.trg_bus_dooraft23) {endif} (L.L.doorTarget_45) {if} (M.L.trg_bus_dooraft45) {endif} (L.L.doorTarget_67) {if} (M.L.trg_bus_dooraft67) {endif} {endif} (T.L.ev_doors_compress) (T.L.ev_doorall_unlock) {endif} 1 (S.L.Actia_BTN_rearm) (T.L.ev_Actia_BTN_misc_pushed) {end} {trigger:bus_doorfront_all_close_off} 0 (S.L.Actia_BTN_rearm) (T.L.ev_Actia_BTN_misc_released) {end} ' > OMSI internal haltewunsch trigger {trigger:int_haltewunsch} 1 (S.L.haltewunsch) {end} ' > DISABLED Command request {trigger:cp_schalter_kinderwagen} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > {if} 1 (S.L.door_DISABLED_Req) {endif} {end} {trigger:bus_SECU_off} (L.L.door_SECU_off) ! (S.L.door_SECU_off) {if} (T.L.ev_Actia_BTN_pushed) {else} (T.L.ev_Actia_BTN_released) {endif} {end} {trigger:door0_drag} (L.S.mouse_y) (L.S.mouse_x) - 1.5 / (S.L.doorDragAcc_0) {end} {trigger:door1_drag} (L.S.mouse_y) (L.S.mouse_x) + 1.5 / (S.L.doorDragAcc_1) {end} {trigger:door2_drag} (L.S.mouse_y) (L.S.mouse_x) - 1.5 / (S.L.doorDragAcc_2) {end} {trigger:door3_drag} (L.S.mouse_y) (L.S.mouse_x) + 1.5 / (S.L.doorDragAcc_3) {end} {trigger:door4_drag} (L.S.mouse_y) (L.S.mouse_x) - 1.5 / (S.L.doorDragAcc_4) {end} {trigger:door5_drag} (L.S.mouse_y) (L.S.mouse_x) + 1.5 / (S.L.doorDragAcc_5) {end} {trigger:door6_drag} (L.S.mouse_y) (L.S.mouse_x) - 1.5 / (S.L.doorDragAcc_6) {end} {trigger:door7_drag} (L.S.mouse_y) (L.S.mouse_x) + 1.5 / (S.L.doorDragAcc_7) {end} {macro:Door_Init} 301 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_acc_var) * (C.L.fdoor_acc) + (S.L.doorAcc_0) 302 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_acc_var) * (C.L.fdoor_acc) + (S.L.doorAcc_1) 303 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_acc_var) * (C.L.mdoor_acc) + (S.L.doorAcc_2) 304 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_acc_var) * (C.L.mdoor_acc) + (S.L.doorAcc_3) 305 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_acc_var) * (C.L.bdoor_acc) + (S.L.doorAcc_4) 306 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_acc_var) * (C.L.bdoor_acc) + (S.L.doorAcc_5) 305 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_acc_var) * (C.L.bdoor_acc) + (S.L.doorAcc_6) 306 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_acc_var) * (C.L.bdoor_acc) + (S.L.doorAcc_7) 307 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_maxspeed_var) * (C.L.fdoor_maxspeed) + (S.L.doorMaxSpeed_0_norm) 308 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_maxspeed_var) * (C.L.fdoor_maxspeed) + (S.L.doorMaxSpeed_1_norm) 309 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_maxspeed_var) * (C.L.mdoor_maxspeed) + (S.L.doorMaxSpeed_2_norm) 310 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_maxspeed_var) * (C.L.mdoor_maxspeed) + (S.L.doorMaxSpeed_3_norm) 311 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_maxspeed_var) * (C.L.bdoor_maxspeed) + (S.L.doorMaxSpeed_4_norm) 312 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_maxspeed_var) * (C.L.bdoor_maxspeed) + (S.L.doorMaxSpeed_5_norm) 311 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_maxspeed_var) * (C.L.bdoor_maxspeed) + (S.L.doorMaxSpeed_6_norm) 312 (M.V.NrSpecRandom) 2 * 1 - (C.L.door_maxspeed_var) * (C.L.bdoor_maxspeed) + (S.L.doorMaxSpeed_7_norm) 'Beim Dämpfer wird der Wert bis auf 40% reduziert statt eine Varianz verwendet: 313 (M.V.NrSpecRandom) 0.9 * 0.1 + (C.L.door0_damper) * (S.L.doorDamper_0_kennwert) 314 (M.V.NrSpecRandom) 0.9 * 0.1 + (C.L.door1_damper) * (S.L.doorDamper_1_kennwert) 315 (M.V.NrSpecRandom) 0.9 * 0.1 + (C.L.door2_damper) * (S.L.doorDamper_2_kennwert) 316 (M.V.NrSpecRandom) 0.9 * 0.1 + (C.L.door3_damper) * (S.L.doorDamper_3_kennwert) 317 (M.V.NrSpecRandom) 0.9 * 0.1 + (C.L.door4_damper) * (S.L.doorDamper_4_kennwert) 318 (M.V.NrSpecRandom) 0.9 * 0.1 + (C.L.door5_damper) * (S.L.doorDamper_5_kennwert) 317 (M.V.NrSpecRandom) 0.9 * 0.1 + (C.L.door4_damper) * (S.L.doorDamper_6_kennwert) 318 (M.V.NrSpecRandom) 0.9 * 0.1 + (C.L.door5_damper) * (S.L.doorDamper_7_kennwert) (C.L.door0_refl_opn) (S.L.doorRefl_0_opn) (C.L.door1_refl_opn) (S.L.doorRefl_1_opn) (C.L.door2_refl_opn) (S.L.doorRefl_2_opn) (C.L.door3_refl_opn) (S.L.doorRefl_3_opn) (C.L.door4_refl_opn) (S.L.doorRefl_4_opn) (C.L.door5_refl_opn) (S.L.doorRefl_5_opn) (C.L.door6_refl_opn) (S.L.doorRefl_6_opn) (C.L.door7_refl_opn) (S.L.doorRefl_7_opn) (C.L.door0_refl_cls) (S.L.doorRefl_0_cls) (C.L.door1_refl_cls) (S.L.doorRefl_1_cls) (C.L.door2_refl_cls) (S.L.doorRefl_2_cls) (C.L.door3_refl_cls) (S.L.doorRefl_3_cls) (C.L.door4_refl_cls) (S.L.doorRefl_4_cls) (C.L.door5_refl_cls) (S.L.doorRefl_5_cls) (C.L.door6_refl_cls) (S.L.doorRefl_6_cls) (C.L.door7_refl_cls) (S.L.doorRefl_7_cls) 0 (S.L.door0_warten) 0 (S.L.door0_umkehr) 0 (S.L.door0_physblock) 1 (S.L.door1_physblock) 0 (S.L.door_pressure_open_0) (S.L.door_pressure_close_0) (S.L.door_pressure_open_1) (S.L.door_pressure_close_1) (S.L.door_pressure_open_2) (S.L.door_pressure_close_2) (S.L.door_pressure_open_3) (S.L.door_pressure_close_3) (S.L.door_pressure_open_4) (S.L.door_pressure_close_4) (S.L.door_pressure_open_5) (S.L.door_pressure_close_5) (S.L.door_pressure_open_6) (S.L.door_pressure_close_6) (S.L.door_pressure_open_7) (S.L.door_pressure_close_7) (S.L.doorDamper_0) (S.L.doorDamper_1) (S.L.doorDamper_2) (S.L.doorDamper_3) (S.L.doorDamper_4) (S.L.doorDamper_5) (S.L.doorDamper_6) (S.L.doorDamper_7) 0 (S.L.door_0) (S.L.door_1) (S.L.door_2) (S.L.door_3) (S.L.door_4) (S.L.door_5) (S.L.door_6) (S.L.door_7) (S.L.doorTarget_0) (S.L.doorTarget_1) (S.L.doorTarget_23) (S.L.doorTarget_45) (S.L.doorTarget_67) {end} {macro:Door_Frame} (M.L.Door0_Calc) (M.L.Door1_Calc) (M.L.Door2_Calc) ' (M.L.Door3_Calc) (M.L.Door4_Calc) ' (M.L.Door5_Calc) (M.L.Door6_Calc) ' (M.L.Door7_Calc) (M.L.DoorAftCalc) (M.L.DoorLockAtDeparture_Calc) 0 (S.L.doorDragAcc_0) (S.L.doorDragAcc_1) (S.L.doorDragAcc_2) (S.L.doorDragAcc_3) (S.L.doorDragAcc_4) (S.L.doorDragAcc_5) (S.L.doorDragAcc_6) (S.L.doorDragAcc_7) ' > Actia DoorCount '4 (S.L.Actia_DoorCount) ' > PAX Entry (L.L.door_0) 0.5 > (S.L.PAX_Entry3_Open) (L.L.door_1) 0.5 > (S.L.PAX_Exit2_Open) (S.L.PAX_Entry2_Open) (L.L.door_2) 0.5 > (S.L.PAX_Exit0_Open) (S.L.PAX_Entry0_Open) (L.L.door_3) 0.5 > (S.L.PAX_Exit1_Open) (S.L.PAX_Entry1_Open) (L.L.door_4) 0.5 > (S.L.PAX_Exit3_Open) (S.L.PAX_Entry4_Open) (L.L.door_5) 0.5 > (S.L.PAX_Exit4_Open) (S.L.PAX_Entry5_Open) (L.L.door_6) 0.5 > (S.L.PAX_Exit5_Open) (S.L.PAX_Entry6_Open) (L.L.door_7) 0.5 > (S.L.PAX_Exit6_Open) (S.L.PAX_Entry7_Open) ' > Swinging back doors (L.L.door_2) (S.L.door_3) (F.L.door2_xposition) (S.L.door2_positionx) (L.L.door_3) (F.L.door2_yposition) (S.L.door2_positiony) (L.L.door_4) (S.L.door_5) (F.L.door3_xposition) (S.L.door3_positionx) (L.L.door_5) (F.L.door3_yposition) (S.L.door3_positiony) (L.L.door_6) (S.L.door_7) (F.L.door4_xposition) (S.L.door4_positionx) (L.L.door_7) (F.L.door4_yposition) (S.L.door4_positiony) ' > Door lights (L.L.door_0) (L.L.door_1) || (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && (S.L.door_light_1) (L.L.door_2) (L.L.door_3) || (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && (S.L.door_light_2) (L.L.door_4) (L.L.door_5) || (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && (S.L.door_light_3) (L.L.door_6) (L.L.door_7) || (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && (S.L.door_light_4) ' Setzen der Haltestellenbremse erst bei Stillstand des Busses: (L.L.bremse_halte_sw) (L.L.bremse_halte) ! (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < && && {if} (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > {if} (T.L.ev_haltebremse_an) 1 (S.L.bremse_halte) {endif} {endif} ' Anhand dieser Bedingungen kann nun die Automatiktür geöffnet werden: (M.L.DEV_Calc) ' Haltewunsch + Haltewunschlampe: (L.L.haltewunsch) (L.L.door_2) 0.2 < (L.L.door_3) 0.2 < && (L.L.door_4) 0.2 < (L.L.door_5) 0.2 < && && (L.L.door_6) 0.2 < (L.L.door_7) 0.2 < && && && (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && {if} 1 (S.L.haltewunschlampe) {else} 0 (S.L.haltewunschlampe) (S.L.haltewunsch) {endif} (L.L.door_DISABLED_Req) (L.L.ramp_target) ! && (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && {if} 1 (S.L.haltewunschlampe_DISABLED) {else} 0 (S.L.door_DISABLED_Req) (S.L.haltewunschlampe_DISABLED) {endif} ' Bing: (what?) (L.L.haltewunsch) (L.L.prev_haltewunsch) ! && (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && {if} (T.L.ev_stop) {endif} (L.L.haltewunsch) (S.L.prev_haltewunsch) ' Beleuchtung der Einstiege ' Ausgelagert in Lights-Script '############################################################################################### ' Druckluftverhalten: (C.L.door_druckluft) {if} (L.L.doorMaxSpeed_0_norm) (L.L.bremse_p_Tank01) 100000 - 750000 / * (S.L.doorMaxSpeed_0) (L.L.doorMaxSpeed_1_norm) (L.L.bremse_p_Tank01) 100000 - 850000 / * (S.L.doorMaxSpeed_1) (L.L.doorMaxSpeed_2_norm) (L.L.bremse_p_Tank02) 100000 - 800000 / * (S.L.doorMaxSpeed_2) (L.L.doorMaxSpeed_3_norm) (L.L.bremse_p_Tank02) 100000 - 900000 / * (S.L.doorMaxSpeed_3) (L.L.doorMaxSpeed_4_norm) (L.L.bremse_p_Tank02) 100000 - 800000 / * (S.L.doorMaxSpeed_4) (L.L.doorMaxSpeed_5_norm) (L.L.bremse_p_Tank02) 100000 - 900000 / * (S.L.doorMaxSpeed_5) (L.L.doorMaxSpeed_6_norm) (L.L.bremse_p_Tank02) 100000 - 800000 / * (S.L.doorMaxSpeed_6) (L.L.doorMaxSpeed_7_norm) (L.L.bremse_p_Tank02) 100000 - 900000 / * (S.L.doorMaxSpeed_7) {endif} '------------------------------------------------------------------- '############################################################################################### ' Gegenseitiges Blockieren der Türflügel: ' Die jeweilige Tür wird dadurch blockiert, dass ihr Öffnungsgrad kleiner ist als der des anderen Flügels ist, der selbst aber schon fast zu und nicht blockiert sein muss: (C.L.door_blocking) {if} (L.L.door0_physblock) {if} (L.L.door_0) (L.L.door_1) (C.L.door_blocking_diff) + < (L.L.door_1) (C.L.door_blocking_area) < && (L.L.door1_physblock) ! && (S.L.door0_physblock) {else} (L.L.door_0) (L.L.door_1) < (L.L.door_1) (C.L.door_blocking_area) < && (L.L.door1_physblock) ! && (S.L.door0_physblock) {endif} (L.L.door1_physblock) {if} (L.L.door_1) (L.L.door_0) (C.L.door_blocking_diff) + < (L.L.door_0) (C.L.door_blocking_area) < && (L.L.door0_physblock) ! && (S.L.door1_physblock) {else} (L.L.door_1) (L.L.door_0) < (L.L.door_0) (C.L.door_blocking_area) < && (L.L.door0_physblock) ! && (S.L.door1_physblock) {endif} {else} 0 (S.L.door0_physblock) (S.L.door1_physblock) {endif} '############################################################################################### '############################################################################################### ' AI-Ablauf: (L.L.AI_Scheduled_AtStation) s0 1 = {if} 'Wenn Türen geöffnet werden sollen: (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < {if} 'Nur, wenn v < maxkmh, sonst warten 'Taster jeweils nur betätigen, falls noch nicht an (L.L.bremse_halte_sw) ! {if} (M.L.trg_bus_dooraft) {endif} (L.L.door_AI_timer) 0.3 > {if} (L.L.doorTarget_0) ! {if} (M.L.trg_bus_doorfront0) {endif} (L.L.doorTarget_1) ! {if} (M.L.trg_bus_doorfront1) {endif} {endif} (L.L.door_AI_timer) 0.4 > {if} (L.L.haltewunsch) (L.L.PAX_Exit0_Req) (L.L.PAX_Exit1_Req) (L.L.PAX_Entry0_Req) (L.L.PAX_Entry1_Req) || || || && (L.L.doorTarget_23) ! {if} (M.L.trg_bus_dooraft23) {endif} {endif} (L.L.door_AI_timer) 0.5 > {if} (L.L.haltewunsch) (L.L.PAX_Exit3_Req) (L.L.PAX_Exit4_Req) (L.L.PAX_Entry4_Req) (L.L.PAX_Entry5_Req) || || || && (L.L.doorTarget_45) ! {if} (M.L.trg_bus_dooraft45) {endif} {endif} (L.L.door_AI_timer) 0.6 > {if} (L.L.haltewunsch) (L.L.PAX_Exit5_Req) (L.L.PAX_Exit6_Req) (L.L.PAX_Entry6_Req) (L.L.PAX_Entry7_Req) || || || && (L.L.doorTarget_67) ! {if} (M.L.trg_bus_dooraft67) {endif} {endif} {else} 0 (S.L.door_AI_timer) {endif} (L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer) {else} l0 -1 = {if} 'Wenn Türen geschlossen werden sollen: 'Taster jeweils nur betätigen, falls noch nicht aus: (L.L.doorTarget_0) {if} (M.L.trg_bus_doorfront0) {endif} (L.L.doorTarget_1) {if} (M.L.trg_bus_doorfront1) {endif} (L.L.doorTarget_23) {if} (M.L.trg_bus_dooraft23) {endif} (L.L.doorTarget_45) {if} (M.L.trg_bus_dooraft45) {endif} (L.L.doorTarget_67) {if} (M.L.trg_bus_dooraft67) {endif} 'Haltestellenbremse erst wegnehmen, wenn alle Türen zu. Dann auch erst den Bus AI-mäßig freigeben: (L.L.door_0) 0.1 < (L.L.door_1) 0.1 < && (L.L.door_2) 0.1 < && (L.L.door_3) 0.1 < && (L.L.door_4) 0.1 < && (L.L.door_5) 0.1 < && (L.L.door_6) 0.1 < && (L.L.door_7) 0.1 < && {if} (L.L.bremse_halte_sw) (L.L.door_AI_timer) 0.5 > && {if} (M.L.trg_bus_dooraft) {endif} (L.L.bremse_halte_sw) ! {if} 0 (S.L.AI_Scheduled_AtStation) {endif} {else} 'Sollte eine der Türen auf sein und die Haltestellenbremse aus, dann sofort diese einlegen (L.L.bremse_halte_sw) ! {if} (M.L.trg_bus_dooraft) {endif} (L.L.doorTarget_0) ! (L.L.doorTarget_1) ! && (L.L.doorTarget_23) ! && (L.L.doorTarget_45) ! && (L.L.doorTarget_67) ! && {if} 0 (S.L.door_AI_timer) {endif} {endif} (L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer) {endif} {endif} {end} '############################################################################################### ' Door Calc Türenpaar 1 '############################################################################################### {macro:Door0_Calc} (L.L.doorfront_emergency) ! {if} (C.L.fdoor_acc) (S.L.doorAcc_0) (L.L.doorTarget_0) ! (L.L.doorSpeed_0) s0 abs 0.05 > (L.L.door_0) 0 > || && {if} (C.L.thinking_doors) {if} (L.L.doorTarget_1) ! (L.L.door_1) 0 > && (L.L.door_1) (L.L.door_0) - 0.25 /-/ > && (L.L.door_1) (L.L.door_0) - 0.25 < && (L.L.door_0) 0.15 > && {if} (L.L.door0_warten) 1 = {if} 0 (S.L.doorSpeed_0) 0.20 (S.L.door_0) {else} (L.L.door_0) 0.25 > {if} l0 /-/ (L.L.doorMaxSpeed_0) < {if} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0) {else} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0) {endif} (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) {else} (L.L.door0_umkehr) 1 = {if} 0.1 (S.L.doorMaxSpeed_0) (L.L.doorSpeed_0) (L.L.doorMaxSpeed_0) < {if} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0) {else} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0) {endif} (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) (L.L.door_0) 0.20 > {if} 1 (S.L.door0_warten) {endif} {else} 0.2 (S.L.doorMaxSpeed_0) l0 /-/ (L.L.doorMaxSpeed_0) < {if} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0) {else} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0) {endif} (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) (L.L.door_0) 0.18 < {if} 1 (S.L.door0_umkehr) {endif} {endif} {endif} {endif} {else} (L.L.door_0) (F.L.door_0_cls_speed) (S.L.doorMaxSpeed_0) l0 /-/ (L.L.doorMaxSpeed_0) < {if} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0) {else} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0) {endif} (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) {endif} {else} l0 /-/ (L.L.doorMaxSpeed_0) < {if} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0) {else} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0) {endif} (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) {endif} {else} (L.L.doorSpeed_0) abs 0.05 > (L.L.door_0) 1 < || (L.L.doorTarget_0) && {if} l0 (L.L.doorMaxSpeed_0) < {if} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0) {else} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0) {endif} 'Falls die Tür durch den anderen Flügel blockiert wird, geht sie nur gaaanz langsam auf: (L.L.door_1) (L.L.door_0) < (L.L.door0_physblock) && {if} (C.L.door_blocking_speed) (S.L.doorSpeed_0) (T.L.ev_doortriggeropen_0) {endif} (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) {else} 0 (S.L.doorSpeed_0) {endif} {endif} 'Pneumatisch: ................................. {else} (L.L.doorTarget_0) ! (L.L.doorSpeed_0) s0 abs 0.05 > (L.L.door_0) 0 > || (L.L.doorDragAcc_0) 0 = ! || && {if} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.L.door_pressure_close_0) * (L.L.doorDragAcc_0) - (L.S.Timegap) * - (L.L.doorDamper_0) (L.L.doorDamper_0_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_0) (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) {else} (L.L.doorSpeed_0) abs 0.05 > (L.L.door_0) 1 < || (L.L.doorDragAcc_0) 0 = ! || (L.L.doorTarget_0) && {if} (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.L.door_pressure_open_0) * (L.L.doorDragAcc_0) + (L.S.Timegap) * + (L.L.doorDamper_0) (L.L.doorDamper_0_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_0) 'Falls die Tür durch den anderen Flügel blockiert wird, geht sie nur gaaanz langsam auf: (L.L.door_1) (L.L.door_0) < (L.L.door0_physblock) && {if} (C.L.door_blocking_speed) (S.L.doorSpeed_0) {endif} (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) {else} 0 (S.L.doorSpeed_0) {endif} {endif} {endif} (L.L.door_0) 1 > {if} (T.L.ev_doorhitopen_0) 1 (S.L.door_0) (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0_opn) * (S.L.doorSpeed_0) {else} (L.L.door_0) 0 < {if} (T.L.ev_doorhitclose_0) 0 (S.L.door_0) (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0_cls) * (S.L.doorSpeed_0) {endif} {endif} ' Open front door from outside (L.L.doorfront_ext_opening_request_time) s0 {if} (L.S.GetTime) l0 - 1 >= {if} (L.L.doorTarget_1) ! (L.L.doorTarget_0) && {if} (M.L.trg_bus_doorfront0) {else} (L.L.doorTarget_1) (L.L.doorTarget_0) ! && {if} (M.L.trg_bus_doorfront1) {else} (M.L.trg_bus_doorfront0) (M.L.trg_bus_doorfront1) {endif} {endif} 0 (S.L.doorfront_ext_opening_request_time) {endif} {endif} {end} {macro:Door1_Calc} 'Nur, wenn nicht verriegelt: (L.L.doorfront_emergency) ! {if} (C.L.fdoor_acc) (S.L.doorAcc_1) (L.L.doorTarget_1) ! (L.L.doorSpeed_1) s0 abs 0.05 > (L.L.door_1) 0 > || && {if} l0 /-/ (L.L.doorMaxSpeed_1) < {if} (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * - (S.L.doorSpeed_1) {else} (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * + (S.L.doorSpeed_1) {endif} (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1) (L.L.door_1) 0.01 < {if} 0 (S.L.door0_warten) 0 (S.L.door0_umkehr) {endif} {else} (L.L.doorSpeed_1) abs 0.05 > (L.L.door_1) 1 < || (L.L.doorTarget_1) && {if} l0 (L.L.doorMaxSpeed_1) < {if} (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * + (S.L.doorSpeed_1) {else} (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * - (S.L.doorSpeed_1) {endif} 'Falls die Tür durch den anderen Flügel blockiert wird, geht sie nur gaaanz langsam auf: (L.L.door_0) (L.L.door_1) < (L.L.door1_physblock) && {if} (C.L.door_blocking_speed) (S.L.doorSpeed_1) (T.L.ev_doortriggeropen_1) {endif} (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1) {else} 0 (S.L.doorSpeed_1) {endif} {endif} 'Pneumatisch: ................................. {else} (L.L.doorTarget_1) ! (L.L.doorSpeed_1) s0 abs 0.05 > (L.L.door_1) 0 > || (L.L.doorDragAcc_1) 0 = ! || && {if} (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.L.door_pressure_close_1) (L.L.doorDragAcc_1) - * (L.S.Timegap) * - (L.L.doorDamper_1) (L.L.doorDamper_1_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_1) (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1) {else} (L.L.doorSpeed_1) abs 0.05 > (L.L.door_1) 1 < || (L.L.doorDragAcc_1) 0 = ! || (L.L.doorTarget_1) && {if} (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.L.door_pressure_open_1) (L.L.doorDragAcc_1) + * (L.S.Timegap) * + (L.L.doorDamper_1) (L.L.doorDamper_1_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_1) 'Falls die Tür durch den anderen Flügel blockiert wird, geht sie nur gaaanz langsam auf: (L.L.door_0) (L.L.door_1) < (L.L.door1_physblock) && {if} (C.L.door_blocking_speed) (S.L.doorSpeed_1) {endif} (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1) {else} 0 (S.L.doorSpeed_1) {endif} {endif} {endif} (L.L.door_1) 1 > {if} (T.L.ev_doorhitopen_1) 1 (S.L.door_1) (L.L.doorSpeed_1) /-/ (L.L.doorRefl_1_opn) * (S.L.doorSpeed_1) {else} (L.L.door_1) 0 < {if} (T.L.ev_doorhitclose_1) 0 (S.L.door_1) (L.L.doorSpeed_1) /-/ (L.L.doorRefl_1_cls) * (S.L.doorSpeed_1) {endif} {endif} {end} '############################################################################################### ' Hintertürautomatiken '############################################################################################### {macro:DEV_Calc} (L.L.DEV) {if} ' > Doors 2-3 (L.L.haltewunsch) (L.L.PAX_Exit0_Req) (L.L.PAX_Exit1_Req) || && (L.L.PAX_Entry0_Req) (L.L.PAX_Entry1_Req) || || ' (L.L.door_2) 0.5 > (L.L.door_3) 0.5 > || && || {if} (L.L.doorTarget_23) ! (L.L.ramp_pos) ! && {if} (M.L.trg_bus_dooraft23) {endif} 0 (S.L.doorMidLastOpen) {else} (L.L.doorTarget_23) (L.L.ramp_pos) ! && (L.L.doorMidLastOpen) (C.L.doorMidOpenTime) > && {if} (M.L.trg_bus_dooraft23) {endif} {endif} ' > Doors 4-5 (L.L.haltewunsch) (L.L.PAX_Exit3_Req) (L.L.PAX_Exit4_Req) || && (L.L.PAX_Entry4_Req) (L.L.PAX_Entry5_Req) || || ' (L.L.door_4) 0.5 > (L.L.door_5) 0.5 > || && || {if} (L.L.doorTarget_45) ! {if} (M.L.trg_bus_dooraft45) {endif} 0 (S.L.doorAftLastOpen) {else} (L.L.doorTarget_45) (L.L.doorAftLastOpen) (C.L.doorAftOpenTime) > && {if} (M.L.trg_bus_dooraft45) {endif} {endif} ' > Doors 6-7 (L.L.haltewunsch) (L.L.PAX_Exit5_Req) (L.L.PAX_Exit6_Req) || && (L.L.PAX_Entry6_Req) (L.L.PAX_Entry7_Req) || || ' (L.L.door_6) 0.5 > (L.L.door_7) 0.5 > || && || {if} (L.L.doorTarget_67) ! {if} (M.L.trg_bus_dooraft67) {endif} 0 (S.L.doorAft2LastOpen) {else} (L.L.doorTarget_67) (L.L.doorAft2LastOpen) (C.L.doorAft2OpenTime) > && {if} (M.L.trg_bus_dooraft67) {endif} {endif} (L.L.door_2) 1 = (L.L.door_3) 1 = || {if} (L.L.doorMidLastOpen) (L.S.Timegap) + {else} 0 {endif} (S.L.DoorMidLastOpen) (L.L.door_4) 1 = (L.L.door_5) 1 = || {if} (L.L.doorAftLastOpen) (L.S.Timegap) + {else} 0 {endif} (S.L.DoorAftLastOpen) (L.L.door_6) 1 = (L.L.door_7) 1 = || {if} (L.L.doorAft2LastOpen) (L.S.Timegap) + {else} 0 {endif} (S.L.DoorAft2LastOpen) {else} 0 (S.L.doorMidLastOpen) (S.L.doorAftLastOpen) (S.L.DoorAft2LastOpen) {endif} {end} '############################################################################################### ' BREMSE HALTE CALC '############################################################################################### {macro:DoorAftCalc} (L.L.bremse_halte_sw) ! (L.L.DEBUG_Kneel) ! && (L.L.ramp_target) ! && (L.L.DEV) ! && (L.L.door_0) ! && (L.L.door_1) ! && (L.L.door_2) ! && (L.L.door_3) ! && (L.L.door_4) ! && (L.L.door_5) ! && (L.L.door_6) ! && (L.L.door_7) ! && (L.L.throttle) 0.1 > && (L.L.elec_busbar_main) (C.L.elec_busbar_minV) <= || (L.L.bremse_halte) && {if} 0 (S.L.bremse_halte) ' 0 (S.L.DEV) (S.L.bremse_halte) (T.L.ev_haltebremse_aus) {endif} {end} '############################################################################################### ' Door Calc Türenpaar 2 '############################################################################################### {macro:Door2_Calc} (L.L.doorback23_emergency) ! {if} (C.L.mdoor_acc) (S.L.doorAcc_2) (L.L.doorTarget_23) ! (L.L.doorSpeed_2) s0 abs 0.05 > (L.L.door_2) 0 > || && {if} l0 /-/ (L.L.doorMaxSpeed_2) < {if} (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * - (S.L.doorSpeed_2) {else} (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * + (S.L.doorSpeed_2) {endif} (L.L.door_2) (L.L.doorSpeed_2) (L.S.Timegap) * + (S.L.door_2) {else} (L.L.doorSpeed_2) abs 0.05 > (L.L.door_2) 1 < || (L.L.doorTarget_23) && {if} l0 (L.L.doorMaxSpeed_2) < {if} (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * + (S.L.doorSpeed_2) {else} (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * - (S.L.doorSpeed_2) {endif} (L.L.door_2) (L.L.doorSpeed_2) (L.S.Timegap) * + (S.L.door_2) {else} 0 (S.L.doorSpeed_2) {endif} {endif} 'Pneumatisch: ................................. {else} (L.L.doorTarget_23) ! (L.L.doorSpeed_2) s0 abs 0.05 > (L.L.door_2) 0 > || (L.L.doorDragAcc_2) 0 = ! || && {if} (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.L.door_pressure_close_2) (L.L.doorDragAcc_2) - * (L.S.Timegap) * - (L.L.doorDamper_2) (L.L.doorDamper_2_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_2) (L.L.door_2) (L.L.doorSpeed_2) (L.S.Timegap) * + (S.L.door_2) {else} (L.L.doorSpeed_2) abs 0.05 > (L.L.door_2) 1 < || (L.L.doorDragAcc_2) 0 = ! || (L.L.doorTarget_23) && {if} (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.L.door_pressure_open_2) (L.L.doorDragAcc_2) + * (L.S.Timegap) * + (L.L.doorDamper_2) (L.L.doorDamper_2_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_2) (L.L.door_2) (L.L.doorSpeed_2) (L.S.Timegap) * + (S.L.door_2) {else} 0 (S.L.doorSpeed_2) {endif} {endif} {endif} (L.L.door_2) 1 > {if} (T.L.ev_doorhitopen_2) 1 (S.L.door_2) (L.L.doorSpeed_2) /-/ (L.L.doorRefl_2_opn) * (S.L.doorSpeed_2) {else} (L.L.door_2) 0 < {if} (T.L.ev_doorhitclose_2) 0 (S.L.door_2) (S.L.ramp_soll) (L.L.doorSpeed_2) /-/ (L.L.doorRefl_2_cls) * (S.L.doorSpeed_2) {endif} {endif} {end} '############################################################################################### ' Door Calc Türenpaar 3 '############################################################################################### {macro:Door4_Calc} (L.L.doorback45_emergency) ! {if} (C.L.bdoor_acc) (S.L.doorAcc_4) (L.L.doorTarget_45) ! (L.L.doorSpeed_4) s0 abs 0.05 > (L.L.door_4) 0 > || && {if} l0 /-/ (L.L.doorMaxSpeed_4) < {if} (L.L.doorSpeed_4) (L.L.doorAcc_4) (L.S.Timegap) * - (S.L.doorSpeed_4) {else} (L.L.doorSpeed_4) (L.L.doorAcc_4) (L.S.Timegap) * + (S.L.doorSpeed_4) {endif} (L.L.door_4) (L.L.doorSpeed_4) (L.S.Timegap) * + (S.L.door_4) {else} (L.L.doorSpeed_4) abs 0.05 > (L.L.door_4) 1 < || (L.L.doorTarget_45) && {if} l0 (L.L.doorMaxSpeed_4) < {if} (L.L.doorSpeed_4) (L.L.doorAcc_4) (L.S.Timegap) * + (S.L.doorSpeed_4) {else} (L.L.doorSpeed_4) (L.L.doorAcc_4) (L.S.Timegap) * - (S.L.doorSpeed_4) {endif} (L.L.door_4) (L.L.doorSpeed_4) (L.S.Timegap) * + (S.L.door_4) {else} 0 (S.L.doorSpeed_4) {endif} {endif} 'Pneumatisch: ................................. {else} (L.L.doorTarget_45) ! (L.L.doorSpeed_4) s0 abs 0.05 > (L.L.door_4) 0 > || (L.L.doorDragAcc_4) 0 = ! || && {if} (L.L.doorSpeed_4) (L.L.doorAcc_4) (L.L.door_pressure_close_4) (L.L.doorDragAcc_4) - * (L.S.Timegap) * - (L.L.doorDamper_4) (L.L.doorDamper_4_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_4) (L.L.door_4) (L.L.doorSpeed_4) (L.S.Timegap) * + (S.L.door_4) {else} (L.L.doorSpeed_4) abs 0.05 > (L.L.door_4) 1 < || (L.L.doorDragAcc_4) 0 = ! || (L.L.doorTarget_45) && {if} (L.L.doorSpeed_4) (L.L.doorAcc_4) (L.L.door_pressure_open_4) (L.L.doorDragAcc_4) + * (L.S.Timegap) * + (L.L.doorDamper_4) (L.L.doorDamper_4_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_4) (L.L.door_4) (L.L.doorSpeed_4) (L.S.Timegap) * + (S.L.door_4) {else} 0 (S.L.doorSpeed_4) {endif} {endif} {endif} (L.L.door_4) 1 > {if} (T.L.ev_doorhitopen_4) 1 (S.L.door_4) (L.L.doorSpeed_4) /-/ (L.L.doorRefl_4_opn) * (S.L.doorSpeed_4) {else} (L.L.door_4) 0 < {if} (T.L.ev_doorhitclose_4) 0 (S.L.door_4) (L.L.doorSpeed_4) /-/ (L.L.doorRefl_4_cls) * (S.L.doorSpeed_4) {endif} {endif} {end} '############################################################################################### ' Door Calc Türenpaar 4 '############################################################################################### {macro:Door6_Calc} (L.L.doorback67_emergency) ! {if} (C.L.bdoor_acc) (S.L.doorAcc_6) (L.L.doorTarget_67) ! (L.L.doorSpeed_6) s0 abs 0.05 > (L.L.door_6) 0 > || && {if} l0 /-/ (L.L.doorMaxSpeed_6) < {if} (L.L.doorSpeed_6) (L.L.doorAcc_6) (L.S.Timegap) * - (S.L.doorSpeed_6) {else} (L.L.doorSpeed_6) (L.L.doorAcc_6) (L.S.Timegap) * + (S.L.doorSpeed_6) {endif} (L.L.door_6) (L.L.doorSpeed_6) (L.S.Timegap) * + (S.L.door_6) {else} (L.L.doorSpeed_6) abs 0.05 > (L.L.door_6) 1 < || (L.L.doorTarget_67) && {if} l0 (L.L.doorMaxSpeed_6) < {if} (L.L.doorSpeed_6) (L.L.doorAcc_6) (L.S.Timegap) * + (S.L.doorSpeed_6) {else} (L.L.doorSpeed_6) (L.L.doorAcc_6) (L.S.Timegap) * - (S.L.doorSpeed_6) {endif} (L.L.door_6) (L.L.doorSpeed_6) (L.S.Timegap) * + (S.L.door_6) {else} 0 (S.L.doorSpeed_6) {endif} {endif} 'Pneumatisch: ................................. {else} (L.L.doorTarget_67) ! (L.L.doorSpeed_6) s0 abs 0.05 > (L.L.door_6) 0 > || (L.L.doorDragAcc_6) 0 = ! || && {if} (L.L.doorSpeed_6) (L.L.doorAcc_6) (L.L.door_pressure_close_6) (L.L.doorDragAcc_6) - * (L.S.Timegap) * - (L.L.doorDamper_6) (L.L.doorDamper_6_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_6) (L.L.door_6) (L.L.doorSpeed_6) (L.S.Timegap) * + (S.L.door_6) {else} (L.L.doorSpeed_6) abs 0.05 > (L.L.door_6) 1 < || (L.L.doorDragAcc_6) 0 = ! || (L.L.doorTarget_67) && {if} (L.L.doorSpeed_6) (L.L.doorAcc_6) (L.L.door_pressure_open_6) (L.L.doorDragAcc_6) + * (L.S.Timegap) * + (L.L.doorDamper_6) (L.L.doorDamper_6_kennwert) (L.S.Timegap) * * - (S.L.doorSpeed_6) (L.L.door_6) (L.L.doorSpeed_6) (L.S.Timegap) * + (S.L.door_6) {else} 0 (S.L.doorSpeed_6) {endif} {endif} {endif} (L.L.door_6) 1 > {if} (T.L.ev_doorhitopen_6) 1 (S.L.door_6) (L.L.doorSpeed_6) /-/ (L.L.doorRefl_6_opn) * (S.L.doorSpeed_6) {else} (L.L.door_6) 0 < {if} (T.L.ev_doorhitclose_6) 0 (S.L.door_6) (L.L.doorSpeed_6) /-/ (L.L.doorRefl_6_cls) * (S.L.doorSpeed_6) {endif} {endif} {end} '############################################################################################### {macro:trg_bus_doorfront0} (L.L.doorfront_emergency) ! {if} (L.L.doorTarget_0) ! (S.L.doorTarget_0) {if} (T.L.ev_doortriggeropen_0) {else} (T.L.ev_doortriggerclose_0) {endif} (C.L.door_druckluft) {if} (L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04) {endif} {endif} {end} {macro:trg_bus_doorfront1} (L.L.doorfront_emergency) ! {if} (L.L.doorTarget_1) ! (S.L.doorTarget_1) {if} (T.L.ev_doortriggeropen_1) {else} (T.L.ev_doortriggerclose_1) {endif} (C.L.door_druckluft) {if} (L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04) {endif} {endif} {end} {macro:trg_bus_dooraft23} (L.L.doorback23_emergency) ! {if} (L.L.doorTarget_23) ! (S.L.doorTarget_23) {if} (T.L.ev_doortriggeropen_2) {else} (T.L.ev_doortriggerclose_2) {endif} (C.L.door_druckluft) {if} (L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04) {endif} {endif} {end} {macro:trg_bus_dooraft45} (L.L.doorback45_emergency) ! {if} (L.L.doorTarget_45) ! (S.L.doorTarget_45) {if} (T.L.ev_doortriggeropen_3) {else} (T.L.ev_doortriggerclose_3) {endif} (C.L.door_druckluft) {if} (L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04) {endif} {endif} {end} {macro:trg_bus_dooraft67} (L.L.doorback67_emergency) ! {if} (L.L.doorTarget_67) ! (S.L.doorTarget_67) {if} (T.L.ev_doortriggeropen_3) {else} (T.L.ev_doortriggerclose_3) {endif} (C.L.door_druckluft) {if} (L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04) {endif} {endif} {end} {macro:trg_bus_dooraft} (L.L.bremse_halte_sw) ! (S.L.bremse_halte_sw) {if} (T.L.ev_haltebremse_sw_an) {else} (T.L.ev_haltebremse_sw_aus) {endif} {end} {macro:trg_bus_20h-switch} (L.L.door_20h_sw) ! (S.L.door_20h_sw) (L.L.bremse_halte_sw) ! (S.L.bremse_halte_sw) {if} (T.L.ev_haltebremse_sw_an) {else} (T.L.ev_haltebremse_sw_aus) {endif} {end} {macro:DoorLockAtDeparture_Calc} (L.L.Velocity) 3 > {if} (L.L.door_opening_locked) 0 = {if} (T.L.ev_door_lock) 1 (S.L.door_opening_locked) {endif} {endif} (L.L.Velocity) 3 < {if} (L.L.door_opening_locked) 1 = {if} (T.L.ev_door_unlock) 0 (S.L.door_opening_locked) {endif} {endif} {end} {macro: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}