'############## 'Door Script '############## 'Controls Doors '(c) 2007-2009 R�diger H�lsmann '(c) 2007-2012 Marcel Kuhnt 'Script Version: 1.1 'Omsi release: 1.0 'Needs: '- elec 'Revision History: '- Marcel Kuhnt 13.06.2009 Batterietrennschalter => elec_busbar_main '- Marcel Kuhnt 21.06.2009 AI-Unterst�tzung hinzugef�gt '- R�diger H�lsmann 24.10.2009 Ansteuerung des Kinderwagenwunsches modifiziert '- R�diger H�lsmann 19.12.2009 Timer f�r Ausstiegst�r jetzt Timegap-basiert, Bugfix: T�r schlie�t jetzt nur bei elec_busbar=1 '- R�diger H�lsmann 22.09.2010 Door light trigger value set to 0.1 '- R�diger H�lsmann 07.11.2010 Door speed based on reservoir pressure, air-operated doors made an option '- Marcel Kuhnt 08.11.2010 AI procedure closing doors debugged '- R�diger H�lsmann 21.11.2010 Front doors only operable when busbar on '- R�diger H�lsmann 23.12.2010 External front door operation included, option: doors only operable with actual stop brake '- R�diger H�lsmann 31.12.2010 Electric door function debugged '- R�diger H�lsmann 05.01.2011 20h-switch '- R�diger H�lsmann 07.01.2011 Backdoor manual switch sound debugged, 20h switch depending on bus type '- R�diger H�lsmann 19.01.2011 Electric door support '- Modified by Notio3D '------------------------------------------------------------------------------------------ '---------------------- ' Trigger '---------------------- {trigger:bus_doorfront0} (T.L.ev_switch_push_on) (C.L.fdoor_typ) 0 = {if} (L.L.elec_busbar_main) {if} (L.L.cp_doorselect_sw) abs {if} (L.L.cp_doorselect_sw) -1 = {if} (L.L.doorTarget_0) 1 = {if} (M.L.trg_bus_doorfront0) {endif} (M.L.trg_bus_doorfront01) {else} (L.L.doorTarget_01) 1 = {if} (M.L.trg_bus_doorfront01) {endif} (M.L.trg_bus_doorfront0) {endif} {else} (L.L.doorTarget_01) 1 = (L.L.doorTarget_0) 0 = && {if} (M.L.trg_bus_doorfront01) {else} (L.L.doorTarget_01) 0 = (L.L.doorTarget_0) 1 = && {if} (M.L.trg_bus_doorfront0) {else} (L.L.doorTarget_01) 0 = (L.L.doorTarget_0) 0 = && {if} (M.L.trg_bus_doorfront0) (M.L.trg_bus_doorfront01) {else} (L.L.doorTarget_01) 1 = (L.L.doorTarget_0) 1 = && {if} (M.L.trg_bus_doorfront0) (M.L.trg_bus_doorfront01) {endif} {endif} {endif} {endif} {endif} {else} 1 (S.L.cp_tuer0_taster) {endif} {else} (L.L.elec_busbar_main) {if} (M.L.trg_bus_doorfront0) {else} 1 (S.L.cp_tuer0_taster) {endif} {endif} {end} {trigger:bus_doorfront0_off} 0 (S.L.cp_tuer0_taster) (T.L.ev_switch_push_off) {end} {trigger:bus_doorfront1} (T.L.ev_switch_push_on) (L.L.elec_busbar_main) {if} (M.L.trg_bus_doorfront1) {else} 1 (S.L.cp_tuer1_taster) {endif} {end} {trigger:bus_doorfront1_off} 0 (S.L.cp_tuer1_taster) (T.L.ev_switch_push_off) {end} {trigger:bus_doorfront2} (C.L.rdoor_typ) 1 = {if} (T.L.ev_switch_push_on) (L.L.elec_busbar_main) {if} (M.L.trg_bus_doorfront2) {else} 1 (S.L.cp_tuer2_taster) {endif} {endif} {end} {trigger:bus_doorfront2_off} 0 (S.L.cp_tuer2_taster) (T.L.ev_switch_push_off) {end} {trigger:bus_doorfront0_external} (C.L.fdoor_typ) 0 = {if} (L.L.elec_busbar_avail) {if} (L.L.cp_doorselect_sw) abs {if} (L.L.cp_doorselect_sw) -1 = {if} (L.L.doorTarget_0) 1 = {if} (M.L.trg_bus_doorfront0) {endif} (M.L.trg_bus_doorfront01) {else} (L.L.doorTarget_01) 1 = {if} (M.L.trg_bus_doorfront01) {endif} (M.L.trg_bus_doorfront0) {endif} {else} (L.L.doorTarget_01) 1 = (L.L.doorTarget_0) 0 = && {if} (M.L.trg_bus_doorfront01) {else} (L.L.doorTarget_01) 0 = (L.L.doorTarget_0) 1 = && {if} (M.L.trg_bus_doorfront0) {else} (L.L.doorTarget_01) 0 = (L.L.doorTarget_0) 0 = && {if} (M.L.trg_bus_doorfront0) (M.L.trg_bus_doorfront01) {else} (L.L.doorTarget_01) 1 = (L.L.doorTarget_0) 1 = && {if} (M.L.trg_bus_doorfront0) (M.L.trg_bus_doorfront01) {endif} {endif} {endif} {endif} {endif} {else} 1 (S.L.cp_tuer0_taster) {endif} {else} (L.L.elec_busbar_avail) {if} (M.L.trg_bus_doorfront0) {else} 1 (S.L.cp_tuer0_taster) {endif} {endif} {end} {trigger:bus_dooraft} (L.L.dash_haltebremse_sw) {if} 0 (S.L.dash_haltebremse_sw) (T.L.ev_switch_off) {else} 1 (S.L.dash_haltebremse) (S.L.dash_haltebremse_sw) (T.L.ev_switch_on) {endif} (L.L.elec_busbar_main) {if} (L.L.dash_haltebremse) {if} (L.L.Velocity) abs (C.L.Door_Bremse_Halte_MaxKMH) < {if} (L.L.bremse_halte) ! {if} (T.L.ev_haltebremse_an) {endif} 1 (S.L.bremse_halte) {endif} {else} 0 (S.L.bremse_halte) (T.L.ev_haltebremse_aus) {endif} {endif} {end} {trigger:bus_dooraft_off} ' (T.L.ev_switch_off) {end} {trigger:bus_20h-switch} (C.L.cockpit_has_20h_switch) (L.L.Velocity) abs (C.L.Door_Bremse_Halte_MaxKMH) < && {if} (M.L.trg_bus_20h-switch) {endif} {end} {trigger:door_haltewunsch} 1 (S.L.haltewunsch) (S.L.door_haltewunsch_knopfdruck) {end} {trigger:door_haltewunsch_off} 0 (S.L.door_haltewunsch_knopfdruck) {end} {trigger:dash_schalter_kinderwagen} (L.L.door_handsteuerung) ! (S.L.door_handsteuerung) {if} 0 (S.L.door_kinderwagenwunsch) ' (T.L.ev_kippschalter_ein) {else} ' (T.L.ev_kippschalter_aus) {endif} {end} {trigger:door_kinderwagenwunsch} (L.L.bremse_halte) (L.L.door_handsteuerung) ! && {if} 1 (S.L.door_kinderwagenwunsch) {endif} {end} {macro:Door_Init} 1000 random 400 / 1 - (C.L.door_acc_var) * (C.L.fdoor_acc) + (S.L.doorAcc_0) 1000 random 400 / 1 - (C.L.door_acc_var) * (C.L.fdoor_acc) + (S.L.doorAcc_01) 1000 random 400 / 1 - (C.L.door_acc_var) * (C.L.fdoor_acc) + (S.L.doorAcc_1) 1000 random 400 / 1 - (C.L.door_acc_var) * (C.L.fdoor_acc) + (S.L.doorAcc_2) 1000 random 400 / 1 - (C.L.door_maxspeed_var) * (C.L.fdoor_maxspeed) + (S.L.doorMaxSpeed_0_norm) 1000 random 400 / 1 - (C.L.door_maxspeed_var) * (C.L.fdoor_maxspeed) + (S.L.doorMaxSpeed_01_norm) 1000 random 400 / 1 - (C.L.door_maxspeed_var) * (C.L.fdoor_maxspeed) + (S.L.doorMaxSpeed_1_norm) (C.L.door_refl) (S.L.doorRefl_0) (C.L.door_refl) (S.L.doorRefl_1) (C.L.door_refl) (S.L.doorRefl_2) 1 (S.L.tuer_unlock_trg) {end} {macro:Door_Frame} ' tuer_unlock_trg (L.L.Velocity) abs 3 > {if} (L.L.tuer_unlock_trg_timer) (L.S.Timegap) + (S.L.tuer_unlock_trg_timer) 0 (S.L.tuer_unlock_trg) {endif} (L.L.Velocity) abs 1.5 < (L.L.tuer_unlock_trg_timer) 0.5 > && (L.L.tuer_unlock_trg) ! && {if} 1 (S.L.tuer_unlock_trg) 0 (S.L.tuer_unlock_trg_timer) (T.L.tuer_unlock) {endif} 'VehicleType: '0 = 120 '1 = 121 '2 = 220 '3 = 221 (C.L.VehicleType) 0 = (C.L.VehicleType) 2 = || {if} (L.L.haltewunsch) (L.L.PAX_Exit0_Req) (L.L.PAX_Exit1_Req) || || (S.L.haltewunsch) {endif} (C.L.VehicleType) 1 = (C.L.VehicleType) 3 = || {if} (L.L.haltewunsch) (L.L.PAX_Exit0_Req) (L.L.PAX_Exit1_Req) (L.L.PAX_Exit2_Req) || || || (S.L.haltewunsch) {endif} (M.L.Door0_Calc) (M.L.Door1_Calc) (M.L.Door2_Calc) (L.L.doorDragAcc_0) 0 > {if} (L.L.doorDragAcc_0) 0.1 (L.S.Timegap) * - (S.L.doorDragAcc_0) {endif} (L.L.doorDragAcc_01) 0 > {if} (L.L.doorDragAcc_01) 0.1 (L.S.Timegap) * - (S.L.doorDragAcc_01) {endif} (L.L.doorDragAcc_11) 0 > {if} (L.L.doorDragAcc_11) 0.1 (L.S.Timegap) * - (S.L.doorDragAcc_11) {endif} (L.L.doorDragAcc_2) 0 > {if} (L.L.doorDragAcc_2) 0.1 (L.S.Timegap) * - (S.L.doorDragAcc_2) {endif} ' PAX 'VehicleType: '0 = 120 '1 = 121 '2 = 220 '3 = 221 (C.L.VehicleType) 0 = {if} (L.L.door_0) 0.95 > (S.L.PAX_Entry0_Open) (L.L.door_1) 0.90 > (S.L.PAX_Exit0_Open) (L.L.door_11) 0.90 > (S.L.PAX_Exit1_Open) {endif} (C.L.VehicleType) 1 = {if} (L.L.door_0) 0.95 > (S.L.PAX_Entry0_Open) (L.L.door_1) 0.90 > (S.L.PAX_Exit0_Open) (L.L.door_11) 0.90 > (S.L.PAX_Exit1_Open) (L.L.door_2) 0.90 > (S.L.PAX_Exit2_Open) {endif} (C.L.VehicleType) 2 = {if} (L.L.door_0) 0.95 > (S.L.PAX_Entry1_Open) (L.L.door_01) 0.95 > (S.L.PAX_Entry0_Open) (L.L.door_1) 0.90 > (S.L.PAX_Exit0_Open) (L.L.door_11) 0.90 > (S.L.PAX_Exit1_Open) {endif} (C.L.VehicleType) 3 = {if} (L.L.door_0) 0.95 > (S.L.PAX_Entry1_Open) (L.L.door_01) 0.95 > (S.L.PAX_Entry0_Open) (L.L.door_1) 0.90 > (S.L.PAX_Exit0_Open) (L.L.door_11) 0.90 > (S.L.PAX_Exit1_Open) (L.L.door_2) 0.90 > (S.L.PAX_Exit2_Open) {endif} ' T�rfreigabekriterium (L.L.bremse_halte_sw) (L.L.bremse_halte) && (S.L.door_freigabe) ' Haltewunschlampe: (L.L.haltewunsch) (L.L.door_0) 0.2 < && (L.L.door_1) 0.2 < && (L.L.door_2) 0.2 < && (L.L.elec_busbar_main) && {if} 1 (S.L.haltewunschlampe) {else} 0 (S.L.haltewunschlampe) (S.L.haltewunsch) {endif} ' Bing: (L.L.haltewunsch) (L.L.prev_haltewunsch) ! && (L.L.elec_busbar_main) (C.L.elec_busbar_minV) > && {if} (T.L.ev_stop) 0 (S.L.cockpit_warnblink_count) {endif} (L.L.haltewunsch) (S.L.prev_haltewunsch) ' "Dauerfeuer"-Haltewunsch ber Kinderwagenschalter (macht genau dasselbe wie der "trigger:door_haltewunsch"): (L.L.door_handsteuerung) (L.L.door_haltewunsch_knopfdruck) || {if} 1 (S.L.haltewunsch) {endif} ' Setzen der Haltestellenbremse erst bei Stillstand des Busses: (L.L.cp_20h_halte_sw) ! (L.L.bremse_halte) ! && (L.L.ready_to_depart) && (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < && {if} (L.L.elec_busbar_main) {if} (T.L.ev_haltebremse_an) 1 (S.L.bremse_halte) {endif} {endif} (L.L.door_0) 0.1 > (L.L.door_1) 0.1 > || (L.L.door_2) 0.1 > || (S.L.ready_to_depart) (L.L.ready_to_depart) 1 = {if} 1 (S.L.ready_to_depart_icon) {endif} (L.L.ready_to_depart_icon) (L.L.bremse_halte) && (S.L.ready_to_depart_icon) (L.L.elec_busbar_main) ! (L.L.bremse_halte) && {if} 0 (S.L.bremse_halte) (T.L.ev_haltebremse_aus) {endif} ' Abfall des Kinderwagenwunsch-Relais bei fehlender Stromversorgung: (L.L.elec_busbar_main) 0 = {if} 0 (S.L.door_kinderwagenwunsch) {endif} ' Beleuchtung der Einstiege (L.L.elec_busbar_main) {if} (L.L.cockpit_failure) (L.L.doorEntriegelung_01) || {if} (L.L.cp_tuer0_taster_licht_timer) (L.S.Timegap) + (S.L.cp_tuer0_taster_licht_timer) 0.5 > {if} (L.L.cp_tuer0_taster_licht) ! (S.L.cp_tuer0_taster_licht) 0 (S.L.cp_tuer0_taster_licht_timer) {endif} {else} (L.L.door_0) 0.01 > (L.L.door_01) 0.01 > || (S.L.cp_tuer0_taster_licht) {endif} (L.L.cockpit_failure) (L.L.doorEntriegelung_11) || {if} (L.L.cp_tuer1_taster_licht_timer) (L.S.Timegap) + (S.L.cp_tuer1_taster_licht_timer) 0.5 > {if} (L.L.cp_tuer1_taster_licht) ! (S.L.cp_tuer1_taster_licht) 0 (S.L.cp_tuer1_taster_licht_timer) {endif} {else} (L.L.door_1) 0.01 > (S.L.cp_tuer1_taster_licht) {endif} (L.L.cockpit_failure) (L.L.doorEntriegelung_2) || {if} (L.L.cp_tuer2_taster_licht_timer) (L.S.Timegap) + (S.L.cp_tuer2_taster_licht_timer) 0.5 > {if} (L.L.cp_tuer2_taster_licht) ! (S.L.cp_tuer2_taster_licht) 0 (S.L.cp_tuer2_taster_licht_timer) {endif} {else} (L.L.door_2) 0.01 > (S.L.cp_tuer2_taster_licht) {endif} {else} 0 (S.L.cp_tuer0_taster_licht) (S.L.cp_tuer1_taster_licht) (S.L.cp_tuer2_taster_licht) {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.doorTarget_0) ! (L.L.door_AI_timer) 0.3 > && {if} (M.L.trg_bus_doorfront0) {endif} (L.L.doorTarget_01) ! (L.L.door_AI_timer) 0.3 > && {if} (M.L.trg_bus_doorfront01) {endif} (L.L.doorTarget_1) ! (L.L.door_AI_timer) 0.6 > && {if} (M.L.trg_bus_doorfront1) {endif} (L.L.doorTarget_2) ! (L.L.door_AI_timer) 0.6 > && {if} (M.L.trg_bus_doorfront2) {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_1) {if} (M.L.trg_bus_doorfront1) 0 (S.L.door_AI_timer) {endif} (L.L.doorTarget_0) (L.L.door_AI_timer) 0.3 > && {if} (M.L.trg_bus_doorfront0) {endif} (L.L.doorTarget_01) (L.L.door_AI_timer) 0.3 > && {if} (M.L.trg_bus_doorfront01) {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 < && {if} (L.L.bremse_halte_sw) (L.L.door_AI_timer) 0.3 > && {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) ! && {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} {macro:Door0_Calc} (C.L.fdoor_typ) 0 = {if} (L.L.doorEntriegelung_01) ! {if} (L.L.door0_failure) ! {if} (L.L.doorTarget_0) {if} (L.L.door_0) (F.L.door0_opn_speed) (S.L.doorMaxSpeed_0) {else} (L.L.door_0) (F.L.door0_cls_speed) (S.L.doorMaxSpeed_0) {endif} (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} 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.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} (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0) {else} 0 (S.L.doorSpeed_0) {endif} {endif} (L.L.door_0) 1 > {if} (T.L.ev_doorhitopen_0) 1 (S.L.door_0) (L.L.doorSpeed_0) /-/ 0.250 * (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) /-/ 0.250 * (S.L.doorSpeed_0) {endif} {endif} {endif} {else} (L.L.doorSpeed_0) (L.L.doorDragAcc_0) + (L.S.Timegap) * + s1 (L.L.door_0) l1 (L.S.Timegap) * + (S.L.door_0) (L.L.door_0) 1 > {if} 1 (S.L.door_0) 0 (S.L.doorDragAcc_0) {endif} (L.L.door_0) 0 < {if} 0 (S.L.door_0) 0 (S.L.doorDragAcc_0) {endif} {endif} '....................................... (L.L.doorEntriegelung_01) ! {if} (L.L.door0_failure) ! {if} (L.L.doorTarget_01) {if} (L.L.door_01) (F.L.door01_opn_speed) (S.L.doorMaxSpeed_01) {else} (L.L.door_01) (F.L.door01_cls_speed) (S.L.doorMaxSpeed_01) {endif} (C.L.fdoor_acc) (S.L.doorAcc_01) (L.L.doorTarget_01) ! (L.L.doorSpeed_01) s0 abs 0.05 > (L.L.door_01) 0 > || && {if} l0 /-/ (L.L.doorMaxSpeed_01) < {if} (L.L.doorSpeed_01) (L.L.doorAcc_01) (L.S.Timegap) * - (S.L.doorSpeed_01) {else} (L.L.doorSpeed_01) (L.L.doorAcc_01) (L.S.Timegap) * + (S.L.doorSpeed_01) {endif} (L.L.door_01) (L.L.doorSpeed_01) (L.S.Timegap) * + (S.L.door_01) {else} (L.L.doorSpeed_01) abs 0.05 > (L.L.door_01) 1 < || (L.L.doorTarget_01) && {if} l0 (L.L.doorMaxSpeed_01) < {if} (L.L.doorSpeed_01) (L.L.doorAcc_01) (L.S.Timegap) * + (S.L.doorSpeed_01) {else} (L.L.doorSpeed_01) (L.L.doorAcc_01) (L.S.Timegap) * - (S.L.doorSpeed_01) {endif} (L.L.door_01) (L.L.doorSpeed_01) (L.S.Timegap) * + (S.L.door_01) {else} 0 (S.L.doorSpeed_01) {endif} {endif} (L.L.door_01) 1 > {if} (T.L.ev_doorhitopen_01) 1 (S.L.door_01) (L.L.doorSpeed_01) /-/ 0.250 * (S.L.doorSpeed_01) {else} (L.L.door_01) 0 < {if} (L.L.cp_doorselect_sw) -1 = {if} (T.L.ev_doorhitclose_01) {endif} 0 (S.L.door_01) (L.L.doorSpeed_01) /-/ 0.250 * (S.L.doorSpeed_01) {endif} {endif} {endif} {else} (L.L.doorSpeed_01) (L.L.doorDragAcc_01) + (L.S.Timegap) * + s1 (L.L.door_01) l1 (L.S.Timegap) * + (S.L.door_01) (L.L.door_01) 1 > {if} 1 (S.L.door_01) 0 (S.L.doorDragAcc_01) {endif} (L.L.door_01) 0 < {if} 0 (S.L.door_01) 0 (S.L.doorDragAcc_01) {endif} {endif} {else} (L.L.doorEntriegelung_01) ! {if} (L.L.door0_failure) ! {if} (L.L.doorTarget_0) {if} (L.L.door_0) (F.L.door0b_opn_speed) (S.L.doorMaxSpeed_0) {else} (L.L.door_0) (F.L.door0b_cls_speed) (S.L.doorMaxSpeed_0) {endif} 1 (S.L.doorAcc_0) (L.L.doorTarget_0) ! (L.L.door_0) 0 > && {if} (L.L.door_0) (F.L.door0b_cls_speed) s1 (L.L.door_0) l1 (L.S.Timegap) * - (S.L.door_0) {else} (L.L.doorTarget_0) (L.L.door_0) 1 < && {if} (L.L.door_0) (F.L.door0b_opn_speed) s1 (L.L.door_0) l1 (L.S.Timegap) * + (S.L.door_0) {else} 0 (S.L.doorSpeed_0) {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) * (S.L.doorSpeed_0) {else} (L.L.door_0) 0 < {if} (C.L.fdoor_typ) 1 = {if} (T.L.ev_doorhitclose_0b) {endif} 0 (S.L.door_0) (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0) * (S.L.doorSpeed_0) {endif} {endif} {endif} {else} (L.L.doorSpeed_0) (L.L.doorDragAcc_0) + (L.S.Timegap) * + s1 (L.L.door_0) l1 (L.S.Timegap) * + (S.L.door_0) (L.L.door_0) 1 > {if} 1 (S.L.door_0) 0 (S.L.doorDragAcc_0) {endif} (L.L.door_0) 0 < {if} 0 (S.L.door_0) 0 (S.L.doorDragAcc_0) {endif} {endif} {endif} {end} {macro:Door1_Calc} (L.L.doorEntriegelung_11) ! {if} (L.L.door_1) (F.L.door1_rot) (S.L.door_1_rotfaktor) (L.L.door1_failure) ! {if} (L.L.doorTarget_1) {if} (L.L.door_1) (F.L.door1_opn_speed) (S.L.doorMaxSpeed_1) {else} (L.L.door_1) (F.L.door1_cls_speed) (S.L.doorMaxSpeed_1) {endif} (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) {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} (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1) {else} 0 (S.L.doorSpeed_1) {endif} {endif} (L.L.door_1) 1 > {if} (T.L.ev_doorhitopen_1) 1 (S.L.door_1) (L.L.doorSpeed_1) /-/ 0.250 * (S.L.doorSpeed_1) {else} (L.L.door_1) 0 < {if} 0 (S.L.door_1) (L.L.doorSpeed_1) /-/ 0.250 * (S.L.doorSpeed_1) {endif} {endif} {endif} {else} (L.L.door_1) (S.L.door_1_rotfaktor) (L.L.doorSpeed_1) (L.L.doorDragAcc_1) + (L.S.Timegap) * + s1 (L.L.door_1) l1 (L.S.Timegap) * + (S.L.door_1) (L.L.door_1) 1 > {if} 1 (S.L.door_1) 0 (S.L.doorDragAcc_1) {endif} (L.L.door_1) 0 < {if} 0 (S.L.door_1) 0 (S.L.doorDragAcc_1) {endif} {endif} ' ------------ (L.L.doorEntriegelung_11) ! {if} (L.L.door_11) (F.L.door11_rot) (S.L.door_11_rotfaktor) (L.L.door1_failure) ! {if} (L.L.doorTarget_11) {if} (L.L.door_11) (F.L.door11_opn_speed) (S.L.doorMaxSpeed_11) {else} (L.L.door_11) (F.L.door11_cls_speed) (S.L.doorMaxSpeed_11) {endif} (C.L.fdoor_acc) (S.L.doorAcc_11) (L.L.doorTarget_11) ! (L.L.doorSpeed_11) s0 abs 0.05 > (L.L.door_11) 0 > || && {if} l0 /-/ (L.L.doorMaxSpeed_11) < {if} (L.L.doorSpeed_11) (L.L.doorAcc_11) (L.S.Timegap) * - (S.L.doorSpeed_11) {else} (L.L.doorSpeed_11) (L.L.doorAcc_11) (L.S.Timegap) * + (S.L.doorSpeed_11) {endif} (L.L.door_11) (L.L.doorSpeed_11) (L.S.Timegap) * + (S.L.door_11) {else} (L.L.doorSpeed_11) abs 0.05 > (L.L.door_11) 1 < || (L.L.doorTarget_11) && {if} l0 (L.L.doorMaxSpeed_11) < {if} (L.L.doorSpeed_11) (L.L.doorAcc_11) (L.S.Timegap) * + (S.L.doorSpeed_11) {else} (L.L.doorSpeed_11) (L.L.doorAcc_11) (L.S.Timegap) * - (S.L.doorSpeed_11) {endif} (L.L.door_11) (L.L.doorSpeed_11) (L.S.Timegap) * + (S.L.door_11) {else} 0 (S.L.doorSpeed_11) {endif} {endif} (L.L.door_11) 1 > {if} 1 (S.L.door_11) (L.L.doorSpeed_11) /-/ 0.250 * (S.L.doorSpeed_11) {else} (L.L.door_11) 0 < {if} (C.L.mdoor_typ) 0 = {if} (T.L.ev_doorhitclose_1) {endif} 0 (S.L.door_11) (L.L.doorSpeed_11) /-/ 0.250 * (S.L.doorSpeed_11) {endif} {endif} {endif} {else} (L.L.door_11) (S.L.door_11_rotfaktor) (L.L.doorSpeed_11) (L.L.doorDragAcc_11) + (L.S.Timegap) * + s1 (L.L.door_11) l1 (L.S.Timegap) * + (S.L.door_11) (L.L.door_11) 1 > {if} 1 (S.L.door_11) 0 (S.L.doorDragAcc_11) {endif} (L.L.door_11) 0 < {if} 0 (S.L.door_11) 0 (S.L.doorDragAcc_11) {endif} {endif} {end} {macro:Door2_Calc} (L.L.doorEntriegelung_2) ! {if} (L.L.door2_failure) ! {if} (L.L.doorTarget_2) {if} (L.L.door_2) (F.L.door2_opn_speed) (S.L.doorMaxSpeed_2) {else} (L.L.door_2) (F.L.door2_cls_speed) (S.L.doorMaxSpeed_2) {endif} 1 (S.L.doorAcc_2) (L.L.doorTarget_2) ! (L.L.door_2) 0 > && {if} (L.L.door_2) (F.L.door2_cls_speed) s1 (L.L.door_2) l1 (L.S.Timegap) * - (S.L.door_2) {else} (L.L.doorTarget_2) (L.L.door_2) 1 < && {if} (L.L.door_2) (F.L.door2_opn_speed) s1 (L.L.door_2) l1 (L.S.Timegap) * + (S.L.door_2) {else} 0 (S.L.doorSpeed_2) {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) * (S.L.doorSpeed_2) {else} (L.L.door_2) 0 < {if} (T.L.ev_doorhitclose_2) 0 (S.L.door_2) (L.L.doorSpeed_2) /-/ (L.L.doorRefl_2) * (S.L.doorSpeed_2) {endif} {endif} {endif} {else} (L.L.doorSpeed_2) (L.L.doorDragAcc_2) + (L.S.Timegap) * + s1 (L.L.door_2) l1 (L.S.Timegap) * + (S.L.door_2) (L.L.door_2) 1 > {if} 1 (S.L.door_2) 0 (S.L.doorDragAcc_2) {endif} (L.L.door_2) 0 < {if} 0 (S.L.door_2) 0 (S.L.doorDragAcc_2) {endif} {endif} {end} {macro:trg_bus_doorfront0} 1 (S.L.cp_tuer0_taster) (L.L.cockpit_failure) ! (L.L.doorEntriegelung_01) ! && (L.L.elec_busbar_main) && {if} (L.L.door0_failure) ! {if} (L.L.doorTarget_0) ! {if} (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < {if} (C.L.fdoor_typ) 0 = {if} 1 (S.L.doorTarget_0) {else} 1 (S.L.doorTarget_0) {endif} (C.L.fdoor_typ) 1 = {if} (T.L.ev_doortriggeropen_0b) {else} (T.L.ev_doortriggeropen_0) {endif} (L.L.cp_20h_halte_sw) ! {if} (M.L.trg_bus_20h-switch) {endif} {endif} {else} (C.L.fdoor_typ) 0 = {if} 0 (S.L.doorTarget_0) {else} 0 (S.L.doorTarget_0) {endif} (C.L.fdoor_typ) 1 = {if} (T.L.ev_doortriggerclose_0b) {else} (T.L.ev_doortriggerclose_0) {endif} (L.L.cp_doorselect_sw) -1 = {if} (C.L.fdoor_typ) 1 = {if} (T.L.ev_doortriggerclose_0b) {else} (T.L.ev_doortriggerclose_01) {endif} {endif} {endif} {else} (C.L.fdoor_typ) 0 = {if} 0 (S.L.doorTarget_0) {else} 0 (S.L.doorTarget_0) {endif} (C.L.fdoor_typ) 1 = {if} (T.L.ev_doortriggerclose_0b) {else} (T.L.ev_doortriggerclose_0) {endif} 0 (S.L.door0_failure) {endif} {endif} {end} {macro:trg_bus_doorfront01} 1 (S.L.cp_tuer0_taster) (L.L.cockpit_failure) ! (L.L.doorEntriegelung_01) ! && (L.L.elec_busbar_main) && {if} (L.L.door0_failure) ! {if} (L.L.doorTarget_01) ! {if} (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < {if} (C.L.fdoor_typ) 0 = {if} 1 (S.L.doorTarget_01) {endif} (L.L.cp_doorselect_sw) -1 = {if} (C.L.fdoor_typ) 1 = {if} (T.L.ev_doortriggeropen_0b) {else} (T.L.ev_doortriggeropen_01) {endif} {endif} {endif} {else} (C.L.fdoor_typ) 0 = {if} 0 (S.L.doorTarget_01) {endif} (L.L.cp_doorselect_sw) -1 = {if} (C.L.fdoor_typ) 1 = {if} (T.L.ev_doortriggerclose_0b) {else} (T.L.ev_doortriggerclose_01) {endif} {endif} {endif} {else} (C.L.fdoor_typ) 0 = {if} 0 (S.L.doorTarget_01) {endif} (C.L.fdoor_typ) 1 = {if} (T.L.ev_doortriggerclose_0b) {else} (T.L.ev_doortriggerclose_01) {endif} 0 (S.L.door0_failure) {endif} {endif} {end} {macro:trg_bus_doorfront1} 1 (S.L.cp_tuer1_taster) (L.L.cockpit_failure) ! (L.L.doorEntriegelung_11) ! && (L.L.elec_busbar_main) && {if} (L.L.door1_failure) ! {if} (L.L.doorTarget_1) ! {if} (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < {if} 1 (S.L.doorTarget_1) (S.L.doorTarget_11) (C.L.mdoor_typ) 1 = {if} (T.L.ev_doortriggeropen_1b) {else} (T.L.ev_doortriggeropen_1) {endif} (L.L.cp_20h_halte_sw) ! {if} (M.L.trg_bus_20h-switch) {endif} {endif} {else} (L.L.ramp_rot) 0.1 < {if} 0 (S.L.ramp_rot) (S.L.ramp_target) 0 (S.L.doorTarget_1) (S.L.doorTarget_11) (C.L.mdoor_typ) 1 = {if} (T.L.ev_doortriggerclose_1b) {else} (T.L.ev_doortriggerclose_1) {endif} {endif} {endif} {else} (L.L.ramp_rot) 0.1 < {if} 0 (S.L.ramp_rot) (S.L.ramp_target) 0 (S.L.doorTarget_1) (S.L.doorTarget_11) (C.L.mdoor_typ) 1 = {if} (T.L.ev_doortriggerclose_1b) {else} (T.L.ev_doortriggerclose_1) {endif} {endif} 0 (S.L.door1_failure) {endif} {endif} {end} {macro:trg_bus_doorfront2} (C.L.rdoor_typ) 1 = {if} 1 (S.L.cp_tuer2_taster) (L.L.cockpit_failure) ! (L.L.doorEntriegelung_2) ! && (L.L.elec_busbar_main) && {if} (L.L.door2_failure) ! {if} (L.L.doorTarget_2) ! {if} (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < {if} 1 (S.L.doorTarget_2) (T.L.ev_doortriggeropen_2) (L.L.cp_20h_halte_sw) ! {if} (M.L.trg_bus_20h-switch) {endif} {endif} {else} 0 (S.L.doorTarget_2) (T.L.ev_doortriggerclose_2) {endif} {else} 0 (S.L.doorTarget_2) (T.L.ev_doortriggerclose_2) 0 (S.L.door2_failure) {endif} {endif} {endif} {end} {macro:trg_bus_dooraft} (L.L.bremse_halte_sw) ! (S.L.bremse_halte_sw) (L.L.bremse_halte) ! (S.L.bremse_halte) (L.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.bremse_halte) ! {if} 1 (S.L.bremse_halte) {endif} (L.L.door_20h_sw) ! (S.L.door_20h_sw) {end} {trigger:door0_drag} (L.S.mouse_y) (L.S.mouse_x) - 20 / (S.L.doorDragAcc_0) {end} {trigger:door01_drag} (L.S.mouse_y) (L.S.mouse_x) - 20 / (S.L.doorDragAcc_01) {end} {trigger:door1_drag} (L.S.mouse_y) (L.S.mouse_x) - 20 / (S.L.doorDragAcc_1) {end} {trigger:door11_drag} (L.S.mouse_y) (L.S.mouse_x) - 20 / (S.L.doorDragAcc_11) {end} {trigger:door2_drag} (L.S.mouse_y) (L.S.mouse_x) - 20 / (S.L.doorDragAcc_2) {end} {trigger:cp_doorEntriegelung_01} (L.L.doorEntriegelung_01) ! (S.L.doorEntriegelung_01) {if} (T.L.ev_doorEntriegelung_01_on) 0 (S.L.door0_failure) {else} (T.L.ev_doorEntriegelung_01_off) (L.L.bremse_p_Tank04) 100000 - 0.94 * 100000 + (S.L.bremse_p_Tank04) 1 (S.L.door0_failure) {endif} {end} {trigger:cp_doorEntriegelung_11} (L.L.doorEntriegelung_11) ! (S.L.doorEntriegelung_11) {if} (T.L.ev_doorEntriegelung_11_on) 0 (S.L.door1_failure) {else} (T.L.ev_doorEntriegelung_11_off) (L.L.bremse_p_Tank04) 100000 - 0.94 * 100000 + (S.L.bremse_p_Tank04) 1 (S.L.door1_failure) {endif} {end} {trigger:cp_doorEntriegelung_01_} (L.L.doorEntriegelung_01_) ! (S.L.doorEntriegelung_01_) {end} {trigger:cp_doorEntriegelung_11_} (L.L.doorEntriegelung_11_) ! (S.L.doorEntriegelung_11_) {end} {trigger:cp_doorEntriegelung_2} (C.L.rdoor_typ) 1 = {if} (L.L.doorEntriegelung_2) ! (S.L.doorEntriegelung_2) {if} (T.L.ev_doorEntriegelung_2_on) 0 (S.L.door2_failure) {else} (T.L.ev_doorEntriegelung_2_off) (L.L.bremse_p_Tank04) 100000 - 0.94 * 100000 + (S.L.bremse_p_Tank04) 1 (S.L.door2_failure) {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}