Guest User

Untitled

a guest
Nov 6th, 2013
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 20.73 KB | None | 0 0
  1. '##############
  2. 'Door Script
  3. '##############
  4.  
  5. 'Controls Doors
  6.  
  7. '(c) 2007-2009 Rüdiger Hülsmann
  8. '(c) 2007-2009 Marcel Kuhnt
  9.  
  10. 'Script Version: 1.1
  11. 'Omsi release: 1.0
  12.  
  13. 'Needs:
  14. '- elec
  15.  
  16. 'Revision History:
  17. '- Marcel Kuhnt 13.06.2009 Batterietrennschalter => elec_busbar_main
  18. '- Marcel Kuhnt 21.06.2009 AI-Unterstützung hinzugefügt
  19. '- Rüdiger Hülsmann 24.10.2009 Ansteuerung des Kinderwagenwunsches modifiziert
  20. '- 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
  21. '- RÜdiger Hülsmann 22.09.2010 Door light trigger value set to 0.1
  22. '- RÜdiger Hülsmann 07.11.2010 Door speed based on reservoir pressure, air-operated doors made an option
  23. '- Marcel Kuhnt 08.11.2010 AI procedure closing doors debugged
  24. '- Rüdiger Hülsmann 21.11.2010 Front doors only operable when busbar on
  25. '- Rüdiger Hülsmann 23.12.2010 External front door operation included, option: doors only operable with actual stop brake
  26. '- Rüdiger Hülsmann 31.12.2010 Electric door function debugged
  27. '- Rüdiger Hülsmann 05.01.2011 20h-switch
  28. '- Rüdiger Hülsmann 07.01.2011 Backdoor manual switch sound debugged, 20h switch depending on bus type
  29. '- Rüdiger Hülsmann 19.01.2011 Electric door support
  30. '- Rüdiger Hülsmann 19.01.2011 Electric door support
  31. '- Morozov Maxim ---------- Removed automatical back door. Added ramp animation... etc...
  32. '--------------------------------------------------------------------------------
  33.  
  34. {trigger:bus_doorfront0}
  35. (L.L.elec_busbar_main) (L.L.bremse_halte_sw) (C.L.door_needs_stopbrake) ! && &&
  36. (L.L.elec_busbar_main) (L.L.bremse_halte) (C.L.door_needs_stopbrake) && && ||
  37. (L.L.Nothahn_1_sw) 0 = &&
  38. {if}
  39. (M.L.trg_bus_doorfront0)
  40. (M.L.trg_bus_doorfront1)
  41. {endif}
  42. 1 (S.L.cockpit_tuertaster1)
  43. {end}
  44.  
  45. {trigger:bus_doorfront0_off}
  46. 0 (S.L.cockpit_tuertaster1)
  47. {end}
  48.  
  49. {trigger:ramp_sw}
  50. (L.L.elec_busbar_main) (L.L.bremse_halte_sw) (C.L.door_needs_stopbrake) ! && &&
  51. (L.L.elec_busbar_main) (L.L.bremse_halte) (C.L.door_needs_stopbrake) && && ||
  52. {if}
  53. (M.L.trg_ramp)
  54. {endif}
  55. 1 (S.L.cockpit_ramp_sw)
  56. (T.L.ev_kippschalter_ein)
  57. {end}
  58.  
  59. {trigger:ramp_sw_off}
  60. 0 (S.L.cockpit_ramp_sw)
  61. (T.L.ev_kippschalter_aus)
  62. {end}
  63.  
  64. {trigger:ramp_sw_external}
  65. (L.L.elec_busbar_main) (L.L.bremse_halte_sw) (C.L.door_needs_stopbrake) ! && &&
  66. (L.L.elec_busbar_main) (L.L.bremse_halte) (C.L.door_needs_stopbrake) && && ||
  67. {if}
  68. (M.L.trg_ramp)
  69. {endif}
  70. {end}
  71.  
  72. {trigger:bus_doorfront1}
  73. (L.L.elec_busbar_main) (L.L.bremse_halte_sw) (C.L.door_needs_stopbrake) ! && &&
  74. (L.L.elec_busbar_main) (L.L.bremse_halte) (C.L.door_needs_stopbrake) && && ||
  75. (L.L.door_20h_sw) ! &&
  76. (L.L.Nothahn_1_sw) 0 = &&
  77. {if}
  78. 0 (S.L.door_kinderwagenwunsch)
  79. (M.L.trg_bus_doorback23)
  80. {endif}
  81. 1 (S.L.cockpit_tuertaster2)
  82. {end}
  83.  
  84. {trigger:bus_doorfront1_off}
  85. 0 (S.L.cockpit_tuertaster2)
  86. {end}
  87.  
  88. {trigger:bus_dooraft}
  89. (M.L.trg_bus_dooraft)
  90. {end}
  91.  
  92. {trigger:Nothahn_1}
  93. (L.L.Nothahn_1_sw) ! (S.L.Nothahn_1_sw)
  94. (T.L.ev_doornothahn_front)
  95. {end}
  96.  
  97. {trigger:Nothahn_2}
  98. (L.L.Nothahn_2_sw) ! (S.L.Nothahn_2_sw)
  99. (T.L.ev_doornothahn_back)
  100. {end}
  101.  
  102. {trigger:Door_0_drag}
  103. (L.L.Nothahn_1_sw)
  104. {if}
  105. (L.S.mouse_x) 1000 / (L.L.door_0) + -1 max 1 min (S.L.door_0) s1
  106. {endif}
  107. {end}
  108.  
  109. {trigger:Door_1_drag}
  110. (L.L.Nothahn_1_sw)
  111. {if}
  112. (L.S.mouse_x) 1000 / (L.L.door_1) + -1 max 1 min (S.L.door_1) s1
  113. {endif}
  114. {end}
  115.  
  116. {trigger:Door_2_drag}
  117. (L.L.Nothahn_2_sw)
  118. {if}
  119. (L.S.mouse_x) 1000 / (L.L.door_2) + -1 max 1 min (S.L.door_2) s1
  120. {endif}
  121. {end}
  122.  
  123.  
  124. {trigger:Door_3_drag}
  125. (L.L.Nothahn_2_sw)
  126. {if}
  127. (L.S.mouse_x) 1000 / (L.L.door_3) + -1 max 1 min (S.L.door_3) s1
  128. {endif}
  129. {end}
  130.  
  131.  
  132. {trigger:bus_20h-switch}
  133. (C.L.cockpit_has_20h_switch)
  134. {if}
  135. (M.L.trg_bus_20h-switch)
  136. {endif}
  137. {end}
  138.  
  139.  
  140. {trigger:int_haltewunsch}
  141. 1 (S.L.haltewunsch)
  142. {end}
  143.  
  144. {trigger:door_haltewunsch}
  145. 1 (S.L.haltewunsch) (S.L.door_haltewunsch_knopfdruck)
  146. {end}
  147.  
  148. {trigger:door_haltewunsch_off}
  149. 0 (S.L.door_haltewunsch_knopfdruck)
  150. {end}
  151.  
  152. {trigger:cp_schalter_kinderwagen}
  153. (L.L.door_handsteuerung) ! (S.L.door_handsteuerung)
  154. {if}
  155. 0 (S.L.door_kinderwagenwunsch)
  156. (T.L.ev_kippschalter_ein)
  157. {else}
  158. (T.L.ev_kippschalter_aus)
  159. {endif}
  160.  
  161. {end}
  162.  
  163. {trigger:door_kinderwagenwunsch}
  164. (L.L.bremse_halte) (L.L.door_handsteuerung) ! &&
  165. {if}
  166. 1 (S.L.door_kinderwagenwunsch)
  167. {endif}
  168. {end}
  169.  
  170.  
  171. {macro:Door_Init}
  172. 1000 random 500 / 1 - (C.L.door_acc_var) * (C.L.fdoor_acc) + (S.L.doorAcc_0)
  173. 1000 random 500 / 1 - (C.L.door_acc_var) * (C.L.fdoor_acc) + (S.L.doorAcc_1)
  174. 1000 random 500 / 1 - (C.L.door_acc_var) * (C.L.bdoor_acc) + (S.L.doorAcc_2)
  175. 1000 random 500 / 1 - (C.L.door_acc_var) * (C.L.bdoor_acc) + (S.L.doorAcc_3)
  176. 1000 random 500 / 1 - (C.L.ramp_acc_var) * (C.L.ramp_acc) + (S.L.rampAcc)
  177.  
  178. 1000 random 500 / 1 - (C.L.door_maxspeed_var) * (C.L.fdoor_maxspeed) + (S.L.doorMaxSpeed_0_norm)
  179. 1000 random 500 / 1 - (C.L.door_maxspeed_var) * (C.L.fdoor_maxspeed) + (S.L.doorMaxSpeed_1_norm)
  180. 1000 random 500 / 1 - (C.L.door_maxspeed_var) * (C.L.bdoor_maxspeed) + (S.L.doorMaxSpeed_2_norm)
  181. 1000 random 500 / 1 - (C.L.door_maxspeed_var) * (C.L.bdoor_maxspeed) + (S.L.doorMaxSpeed_3_norm)
  182. 1000 random 500 / 1 - (C.L.ramp_maxspeed_var) * (C.L.ramp_maxspeed) + (S.L.rampMaxSpeed)
  183.  
  184. (C.L.door_refl) (S.L.doorRefl_0)
  185. (C.L.door_refl) (S.L.doorRefl_1)
  186. (C.L.door_refl) (S.L.doorRefl_2)
  187. (C.L.door_refl) (S.L.doorRefl_3)
  188. 0 (S.L.rampRefl)
  189.  
  190. {end}
  191.  
  192. {macro:Door_Frame}
  193. (M.L.Door0_Calc)
  194. (M.L.Door1_Calc)
  195. (M.L.DoorAftCalc)
  196. (M.L.Door2_Calc)
  197. (M.L.Door3_Calc)
  198. (M.L.ramp_calc)
  199. (M.L.ramp_rot)
  200. (M.L.Nothahn_Loopsound)
  201.  
  202. (L.L.door_0) 0.9 > (L.L.door_1) 0.9 > && (S.L.PAX_Entry0_Open) (S.L.PAX_Entry1_Open)
  203. (L.L.door_2) 0.9 > (L.L.door_3) 0.9 > && (S.L.PAX_Exit0_Open) (S.L.PAX_Exit1_Open)
  204.  
  205. ' "Dauerfeuer"-Haltewunsch über Kinderwagenschalter (macht genau dasselbe wie der "trigger:int_haltewunsch"):
  206. (L.L.door_handsteuerung) (L.L.door_haltewunsch_knopfdruck) ||
  207. {if}
  208. 1 (S.L.haltewunsch)
  209. {endif}
  210.  
  211. ' Setzen der Haltestellenbremse erst bei Stillstand des Busses:
  212. (L.L.bremse_halte_sw) (L.L.door_20h_sw) ||
  213. (L.L.bremse_halte) ! (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) < && &&
  214. {if}
  215. (L.L.elec_busbar_main)
  216. {if}
  217. (T.L.ev_haltebremse_an)
  218. 1 (S.L.bremse_halte)
  219. {endif}
  220. {endif}
  221.  
  222. ' Türfreigabekriterium
  223.  
  224. (L.L.bremse_halte_sw) (L.L.bremse_halte) && (S.L.door_freigabe)
  225.  
  226. ' Haltewunschlampe:
  227. (L.L.haltewunsch) (L.L.door_2) 0.2 < (L.L.elec_busbar_main) && &&
  228. {if}
  229. 1 (S.L.haltewunschlampe)
  230. {else}
  231. 0 (S.L.haltewunschlampe) (S.L.haltewunsch)
  232. {endif}
  233.  
  234. ' Abfall des Kinderwagenwunsch-Relais bei fehlender Stromversorgung:
  235.  
  236. (L.L.elec_busbar_main) 0 =
  237. {if}
  238. 0 (S.L.door_kinderwagenwunsch)
  239. {endif}
  240.  
  241. ' Beleuchtung der Einstiege
  242.  
  243. (L.L.elec_busbar_main)
  244. {if}
  245. (L.L.door_0) 0.1 > (L.L.door_1) 0.1 > || (S.L.door_light_1)
  246. (L.L.door_2) 0.1 > (L.L.door_3) 0.1 > || (S.L.door_light_2)
  247. {else}
  248. 0 (S.L.door_light_1) (S.L.door_light_2)
  249. {endif}
  250.  
  251. ' Druckabhängige Türgeschwindigkeit
  252.  
  253. (C.L.door_druckluft)
  254. {if}
  255. (L.L.doorMaxSpeed_0_norm) (L.L.bremse_p_Tank04) 100000 - 850000 / (S.L.doorMaxSpeed_0)
  256. (L.L.doorMaxSpeed_1_norm) (L.L.bremse_p_Tank04) 100000 - 850000 / (S.L.doorMaxSpeed_1)
  257. (L.L.doorMaxSpeed_2_norm) (L.L.bremse_p_Tank04) 100000 - 850000 / (S.L.doorMaxSpeed_2)
  258. (L.L.doorMaxSpeed_3_norm) (L.L.bremse_p_Tank04) 100000 - 850000 / (S.L.doorMaxSpeed_3)
  259. {endif}
  260. '----------------------
  261. ' AI-Ablauf:
  262.  
  263. (L.L.AI_Scheduled_AtStation) s0
  264. 1 =
  265. {if}
  266. 'Wenn Türen geöffnet werden sollen:
  267. (L.L.Velocity) (C.L.Door_Bremse_Halte_MaxKMH) <
  268. {if}
  269. 'Nur, wenn v < maxkmh, sonst warten
  270. 'Taster jeweils nur betätigen, falls noch nicht an
  271. (L.L.bremse_halte_sw) !
  272. {if}
  273. (M.L.trg_bus_dooraft)
  274. {endif}
  275. (L.L.doorTarget_0) ! (L.L.door_AI_timer) 0.3 > &&
  276. {if}
  277. (M.L.trg_bus_doorfront0)
  278. {endif}
  279. (L.L.doorTarget_1) ! (L.L.door_AI_timer) 0.6 > &&
  280. {if}
  281. (M.L.trg_bus_doorfront1)
  282. {endif}
  283. (L.L.doorTarget_23) ! (L.L.door_AI_timer) 0.6 > (L.L.haltewunsch) && &&
  284. {if}
  285. (M.L.trg_bus_doorback23)
  286. {endif}
  287. {else}
  288. 0 (S.L.door_AI_timer)
  289. {endif}
  290. (L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer)
  291. {else}
  292. l0 -1 =
  293. {if}
  294. 'Wenn Türen geschlossen werden sollen:
  295. 'Taster jeweils nur betätigen, falls noch nicht aus:
  296. (L.L.doorTarget_1)
  297. {if}
  298. (M.L.trg_bus_doorfront1)
  299. 0 (S.L.door_AI_timer)
  300. {endif}
  301. (L.L.doorTarget_0) (L.L.door_AI_timer) 0.3 > &&
  302. {if}
  303. (M.L.trg_bus_doorfront0)
  304. {endif}
  305. (L.L.doorTarget_23) (L.L.door_AI_timer) 0.3 > &&
  306. {if}
  307. (M.L.trg_bus_doorback23)
  308. {endif}
  309. 'Haltestellenbremse erst wegnehmen, wenn alle Türen zu. Dann auch erst den Bus AI-mäßig freigeben:
  310. (L.L.door_0) 0.1 <
  311. (L.L.door_1) 0.1 < &&
  312. (L.L.door_2) 0.1 < &&
  313. {if}
  314. (L.L.bremse_halte_sw) (L.L.door_AI_timer) 0.3 > &&
  315. {if}
  316. (M.L.trg_bus_dooraft)
  317. {endif}
  318. (L.L.bremse_halte_sw) !
  319. {if}
  320. 0 (S.L.AI_Scheduled_AtStation)
  321. {endif}
  322. {else}
  323. 'Sollte eine der Türen auf sein und die Haltestellenbremse aus, dann sofort diese einlegen
  324. (L.L.bremse_halte_sw) !
  325. {if}
  326. (M.L.trg_bus_dooraft)
  327. {endif}
  328. (L.L.doorTarget_0) !
  329. (L.L.doorTarget_1) ! &&
  330. (L.L.doorTarget_23) ! &&
  331. {if}
  332. 0 (S.L.door_AI_timer)
  333. {endif}
  334. {endif}
  335. (L.L.door_AI_timer) (L.S.Timegap) + (S.L.door_AI_timer)
  336. {endif}
  337. {endif}
  338.  
  339.  
  340. {end}
  341.  
  342. {macro:Nothahn_Loopsound}
  343.  
  344. (L.L.elec_busbar_main) 1 =
  345. {if}
  346. (L.L.Nothahn_1_sw) 1 =
  347. (L.L.Nothahn_2_sw) 1 = ||
  348. {if}
  349. 1 (S.L.ev_door_Nothahnwarnloop)
  350. {else}
  351. 0 (S.L.ev_door_Nothahnwarnloop)
  352. {endif}
  353. {else}
  354. 0 (S.L.ev_door_Nothahnwarnloop)
  355. {endif}
  356. {end}
  357.  
  358.  
  359. {macro:Door0_Calc}
  360. (C.L.electric_doors)
  361. (L.L.Nothahn_1_sw) 0 = &&
  362. {if}
  363. (L.L.doorTarget_0)
  364. {if}
  365. (L.L.door_0) (F.L.door_0_opn_speed) (S.L.doorMaxSpeed_0)
  366. {else}
  367. (L.L.door_0) (F.L.door_0_cls_speed) (S.L.doorMaxSpeed_0)
  368. {endif}
  369.  
  370. (C.L.fdoor_acc) (S.L.doorAcc_0)
  371.  
  372. (L.L.doorTarget_0) ! (L.L.doorSpeed_0) s0 abs 0.05 > (L.L.door_0) 0 > || &&
  373. {if}
  374. l0 /-/ (L.L.doorMaxSpeed_0) <
  375. {if}
  376. (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0)
  377. {else}
  378. (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0)
  379. {endif}
  380. (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0)
  381. {else}
  382. (L.L.doorSpeed_0) abs 0.05 > (L.L.door_0) 1 < || (L.L.doorTarget_0) &&
  383. {if}
  384. l0 (L.L.doorMaxSpeed_0) <
  385. {if}
  386. (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0)
  387. {else}
  388. (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0)
  389. {endif}
  390. (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0)
  391. {else}
  392. 0 (S.L.doorSpeed_0)
  393. {endif}
  394. {endif}
  395. {else}
  396. (L.L.Nothahn_1_sw) 0 =
  397. {if}
  398. (L.L.doorTarget_0) ! (L.L.doorSpeed_0) s0 abs 0.05 > (L.L.door_0) 0 > || &&
  399. {if}
  400. l0 /-/ (L.L.doorMaxSpeed_0) <
  401. {if}
  402. (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * - (S.L.doorSpeed_0)
  403. {endif}
  404. (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0)
  405. {else}
  406. (L.L.doorSpeed_0) abs 0.05 > (L.L.door_0) 1 < || (L.L.doorTarget_0) &&
  407. {if}
  408. l0 (L.L.doorMaxSpeed_0) <
  409. {if}
  410. (L.L.doorSpeed_0) (L.L.doorAcc_0) (L.S.Timegap) * + (S.L.doorSpeed_0)
  411. {endif}
  412. (L.L.door_0) (L.L.doorSpeed_0) (L.S.Timegap) * + (S.L.door_0)
  413. {else}
  414. 0 (S.L.doorSpeed_0)
  415. {endif}
  416. {endif}
  417. {endif}
  418. {endif}
  419.  
  420. (L.L.door_0) 1 >
  421. {if}
  422. (T.L.ev_doorhitopen_0)
  423. 1 (S.L.door_0)
  424. (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0) * (S.L.doorSpeed_0)
  425. {else}
  426. (L.L.door_0) 0 <
  427. {if}
  428. (T.L.ev_doorhitclose_0)
  429. 0 (S.L.door_0)
  430. (L.L.doorSpeed_0) /-/ (L.L.doorRefl_0) * (S.L.doorSpeed_0)
  431. {endif}
  432. {endif}
  433. {end}
  434.  
  435. {macro:Door1_Calc}
  436. (C.L.electric_doors)
  437. (L.L.Nothahn_1_sw) 0 = &&
  438. {if}
  439. (L.L.doorTarget_1)
  440. {if}
  441. (L.L.door_1) (F.L.door_1_opn_speed) (S.L.doorMaxSpeed_1)
  442. {else}
  443. (L.L.door_1) (F.L.door_1_cls_speed) (S.L.doorMaxSpeed_1)
  444. {endif}
  445.  
  446. (C.L.fdoor_acc) (S.L.doorAcc_1)
  447.  
  448. (L.L.doorTarget_1) ! (L.L.doorSpeed_1) s0 abs 0.05 > (L.L.door_1) 0 > || &&
  449. {if}
  450. l0 /-/ (L.L.doorMaxSpeed_1) <
  451. {if}
  452. (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * - (S.L.doorSpeed_1)
  453. {else}
  454. (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * + (S.L.doorSpeed_1)
  455. {endif}
  456. (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1)
  457. {else}
  458. (L.L.doorSpeed_1) abs 0.05 > (L.L.door_1) 1 < || (L.L.doorTarget_1) &&
  459. {if}
  460. l0 (L.L.doorMaxSpeed_1) <
  461. {if}
  462. (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * + (S.L.doorSpeed_1)
  463. {else}
  464. (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * - (S.L.doorSpeed_1)
  465. {endif}
  466. (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1)
  467. {else}
  468. 0 (S.L.doorSpeed_1)
  469. {endif}
  470. {endif}
  471. {else}
  472. (L.L.Nothahn_1_sw) 0 = &&
  473. {if}
  474. (L.L.doorTarget_1) ! (L.L.doorSpeed_1) s0 abs 0.05 > (L.L.door_1) 0 > || &&
  475. {if}
  476. l0 /-/ (L.L.doorMaxSpeed_1) <
  477. {if}
  478. (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * - (S.L.doorSpeed_1)
  479. {endif}
  480. (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1)
  481. {else}
  482. (L.L.doorSpeed_1) abs 0.05 > (L.L.door_1) 1 < || (L.L.doorTarget_1) &&
  483. {if}
  484. l0 (L.L.doorMaxSpeed_1) <
  485. {if}
  486. (L.L.doorSpeed_1) (L.L.doorAcc_1) (L.S.Timegap) * + (S.L.doorSpeed_1)
  487. {endif}
  488. (L.L.door_1) (L.L.doorSpeed_1) (L.S.Timegap) * + (S.L.door_1)
  489. {else}
  490. 0 (S.L.doorSpeed_1)
  491. {endif}
  492. {endif}
  493. {endif}
  494. {endif}
  495. (L.L.door_1) 1 >
  496. {if}
  497. (T.L.ev_doorhitopen_1)
  498. 1 (S.L.door_1)
  499. (L.L.doorSpeed_1) /-/ (L.L.doorRefl_1) * (S.L.doorSpeed_1)
  500. {else}
  501. (L.L.door_1) 0 <
  502. {if}
  503. (T.L.ev_doorhitclose_1)
  504. 0 (S.L.door_1)
  505. (L.L.doorSpeed_1) /-/ (L.L.doorRefl_1) * (S.L.doorSpeed_1)
  506. {endif}
  507. {endif}
  508. {end}
  509.  
  510. {macro:ramp_calc}
  511. (L.L.rampTarget)
  512. {if}
  513. (L.L.ramp) (F.L.ramp_out_speed) (S.L.rampMaxSpeed)
  514. {else}
  515. (L.L.ramp) (F.L.ramp_in_speed) (S.L.rampMaxSpeed)
  516. {endif}
  517.  
  518. (C.L.ramp_acc) (S.L.rampAcc)
  519.  
  520. (L.L.rampTarget) ! (L.L.rampSpeed) s0 abs 0.05 > (L.L.ramp) 0 > || &&
  521. {if}
  522. l0 /-/ (L.L.rampMaxSpeed) <
  523. {if}
  524. (L.L.rampSpeed) (L.L.rampAcc) (L.S.Timegap) * - (S.L.rampSpeed)
  525. {else}
  526. (L.L.rampSpeed) (L.L.rampAcc) (L.S.Timegap) * + (S.L.rampSpeed)
  527. {endif}
  528. (L.L.ramp) (L.L.rampSpeed) (L.S.Timegap) * + (S.L.ramp)
  529. {else}
  530. (L.L.rampSpeed) abs 0.05 > (L.L.ramp) 1 < || (L.L.rampTarget) &&
  531. {if}
  532. l0 (L.L.rampMaxSpeed) <
  533. {if}
  534. (L.L.rampSpeed) (L.L.rampAcc) (L.S.Timegap) * + (S.L.rampSpeed)
  535. {else}
  536. (L.L.rampSpeed) (L.L.rampAcc) (L.S.Timegap) * - (S.L.rampSpeed)
  537. {endif}
  538. (L.L.ramp) (L.L.rampSpeed) (L.S.Timegap) * + (S.L.ramp)
  539. {else}
  540. 0 (S.L.rampSpeed)
  541. {endif}
  542. {endif}
  543.  
  544. (L.L.ramp) 1 >
  545. {if}
  546. (T.L.ramp_out_hit)
  547. 1 (S.L.ramp)
  548. {else}
  549. (L.L.ramp) 0 <
  550. {if}
  551. (T.L.ramp_in_hit)
  552. 0 (S.L.ramp)
  553. {endif}
  554. {endif}
  555. {end}
  556.  
  557. {macro:ramp_rot}
  558. (L.L.kneel_allowed)
  559. {if}
  560. (L.L.ramp) (F.L.ramp_rot_angle_kneel) (S.L.ramp_rot_angle)
  561. {else}
  562. (L.L.ramp) (F.L.ramp_rot_angle_no_kneel) (S.L.ramp_rot_angle)
  563. {endif}
  564. {end}
  565.  
  566. {macro:DoorAftCalc}
  567.  
  568. (L.L.bremse_halte_sw) !
  569. (L.L.door_20h_sw) ! &&
  570. (L.L.door_0) 0 = &&
  571. (L.L.door_1) 0 = &&
  572. (L.L.door_2) 0 = &&
  573. (L.L.door_3) 0 = &&
  574. (L.L.ramp) 0 = &&
  575. (L.L.elec_busbar_main) ! ||
  576. (L.L.bremse_halte) &&
  577. {if}
  578. 0 (S.L.bremse_halte)
  579. (T.L.ev_haltebremse_aus)
  580. {endif}
  581. {end}
  582.  
  583. {macro:Door2_Calc}
  584. (C.L.electric_doors)
  585. (L.L.Nothahn_2_sw) 0 = &&
  586. {if}
  587. (L.L.doorTarget_23)
  588. {if}
  589. (L.L.door_2) (F.L.door_2_opn_speed) (S.L.doorMaxSpeed_2)
  590. {else}
  591. (L.L.door_2) (F.L.door_2_cls_speed) (S.L.doorMaxSpeed_2)
  592. {endif}
  593.  
  594. (C.L.bdoor_acc) (S.L.doorAcc_2)
  595.  
  596. (L.L.doorTarget_23) ! (L.L.doorSpeed_2) s0 abs 0.05 > (L.L.door_2) 0 > || &&
  597. {if}
  598. l0 /-/ (L.L.doorMaxSpeed_2) <
  599. {if}
  600. (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * - (S.L.doorSpeed_2)
  601. {else}
  602. (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * + (S.L.doorSpeed_2)
  603. {endif}
  604. (L.L.door_2) (L.L.doorSpeed_2) (L.S.Timegap) * + (S.L.door_2)
  605. {else}
  606. (L.L.doorSpeed_2) abs 0.05 > (L.L.door_2) 1 < || (L.L.doorTarget_23) &&
  607. {if}
  608. l0 (L.L.doorMaxSpeed_2) <
  609. {if}
  610. (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * + (S.L.doorSpeed_2)
  611. {else}
  612. (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * - (S.L.doorSpeed_2)
  613. {endif}
  614. (L.L.door_2) (L.L.doorSpeed_2) (L.S.Timegap) * + (S.L.door_2)
  615. {else}
  616. 0 (S.L.doorSpeed_2)
  617. {endif}
  618. {endif}
  619. {else}
  620. (L.L.Nothahn_2_sw) 0 = &&
  621. {if}
  622. (L.L.doorTarget_23) ! (L.L.doorSpeed_2) s0 abs 0.05 > (L.L.door_2) 0 > || &&
  623. {if}
  624. l0 /-/ (L.L.doorMaxSpeed_2) <
  625. {if}
  626. (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * - (S.L.doorSpeed_2)
  627. {endif}
  628. (L.L.door_2) (L.L.doorSpeed_2) (L.S.Timegap) * + (S.L.door_2)
  629. {else}
  630. (L.L.doorSpeed_2) abs 0.05 > (L.L.door_2) 1 < || (L.L.doorTarget_23) &&
  631. {if}
  632. l0 (L.L.doorMaxSpeed_2) <
  633. {if}
  634. (L.L.doorSpeed_2) (L.L.doorAcc_2) (L.S.Timegap) * + (S.L.doorSpeed_2)
  635. {endif}
  636. (L.L.door_2) (L.L.doorSpeed_2) (L.S.Timegap) * + (S.L.door_2)
  637. {else}
  638. 0 (S.L.doorSpeed_2)
  639. {endif}
  640. {endif}
  641. {endif}
  642. {endif}
  643.  
  644. (L.L.door_2) 1 >
  645. {if}
  646. (T.L.ev_doorhitopen_2)
  647. 1 (S.L.door_2)
  648. (L.L.doorSpeed_2) /-/ (L.L.doorRefl_2) * (S.L.doorSpeed_2)
  649. {else}
  650. (L.L.door_2) 0 <
  651. {if}
  652. (T.L.ev_doorhitclose_2)
  653. 0 (S.L.door_2)
  654. (L.L.doorSpeed_2) /-/ (L.L.doorRefl_2) * (S.L.doorSpeed_2)
  655. {endif}
  656. {endif}
  657. {end}
  658.  
  659. {macro:Door3_Calc}
  660. (C.L.electric_doors)
  661. (L.L.Nothahn_2_sw) 0 = &&
  662. {if}
  663. (L.L.doorTarget_23)
  664. {if}
  665. (L.L.door_3) (F.L.door_3_opn_speed) (S.L.doorMaxSpeed_3)
  666. {else}
  667. (L.L.door_3) (F.L.door_3_cls_speed) (S.L.doorMaxSpeed_3)
  668. {endif}
  669.  
  670. (C.L.bdoor_acc) (S.L.doorAcc_3)
  671.  
  672. (L.L.doorTarget_23) ! (L.L.doorSpeed_3) s0 abs 0.05 > (L.L.door_3) 0 > || &&
  673. {if}
  674. l0 /-/ (L.L.doorMaxSpeed_3) <
  675. {if}
  676. (L.L.doorSpeed_3) (L.L.doorAcc_3) (L.S.Timegap) * - (S.L.doorSpeed_3)
  677. {else}
  678. (L.L.doorSpeed_3) (L.L.doorAcc_3) (L.S.Timegap) * + (S.L.doorSpeed_3)
  679. {endif}
  680. (L.L.door_3) (L.L.doorSpeed_3) (L.S.Timegap) * + (S.L.door_3)
  681. {else}
  682. (L.L.doorSpeed_3) abs 0.05 > (L.L.door_3) 1 < || (L.L.doorTarget_23) &&
  683. {if}
  684. l0 (L.L.doorMaxSpeed_3) <
  685. {if}
  686. (L.L.doorSpeed_3) (L.L.doorAcc_3) (L.S.Timegap) * + (S.L.doorSpeed_3)
  687. {else}
  688. (L.L.doorSpeed_3) (L.L.doorAcc_3) (L.S.Timegap) * - (S.L.doorSpeed_3)
  689. {endif}
  690. (L.L.door_3) (L.L.doorSpeed_3) (L.S.Timegap) * + (S.L.door_3)
  691. {else}
  692. 0 (S.L.doorSpeed_3)
  693. {endif}
  694. {endif}
  695. {else}
  696. (L.L.Nothahn_2_sw) 0 = &&
  697. {if}
  698. (L.L.doorTarget_23) ! (L.L.doorSpeed_3) s0 abs 0.05 > (L.L.door_3) 0 > || &&
  699. {if}
  700. l0 /-/ (L.L.doorMaxSpeed_3) <
  701. {if}
  702. (L.L.doorSpeed_3) (L.L.doorAcc_3) (L.S.Timegap) * - (S.L.doorSpeed_3)
  703. {endif}
  704. (L.L.door_3) (L.L.doorSpeed_3) (L.S.Timegap) * + (S.L.door_3)
  705. {else}
  706. (L.L.doorSpeed_3) abs 0.05 > (L.L.door_3) 1 < || (L.L.doorTarget_23) &&
  707. {if}
  708. l0 (L.L.doorMaxSpeed_3) <
  709. {if}
  710. (L.L.doorSpeed_3) (L.L.doorAcc_3) (L.S.Timegap) * + (S.L.doorSpeed_3)
  711. {endif}
  712. (L.L.door_3) (L.L.doorSpeed_3) (L.S.Timegap) * + (S.L.door_3)
  713. {else}
  714. 0 (S.L.doorSpeed_3)
  715. {endif}
  716. {endif}
  717. {endif}
  718.  
  719. (L.L.door_3) 1 >
  720. {if}
  721. (T.L.ev_doorhitopen_3)
  722. 1 (S.L.door_3)
  723. (L.L.doorSpeed_3) /-/ (L.L.doorRefl_3) * (S.L.doorSpeed_3)
  724. {else}
  725. (L.L.door_3) 0 <
  726. {if}
  727. (T.L.ev_doorhitclose_3)
  728. 0 (S.L.door_3)
  729. (L.L.doorSpeed_3) /-/ (L.L.doorRefl_3) * (S.L.doorSpeed_3)
  730. {endif}
  731. {endif}
  732.  
  733. {end}
  734.  
  735. {macro:trg_ramp}
  736.  
  737. (L.L.rampTarget) ! (S.L.rampTarget)
  738. {if}
  739. (T.L.ramp_roll_out)
  740. {else}
  741. (T.L.ramp_roll_in)
  742. {endif}
  743. {end}
  744.  
  745. {macro:trg_bus_doorfront0}
  746.  
  747. (L.L.doorTarget_0) ! (S.L.doorTarget_0)
  748. {if}
  749. (T.L.ev_doortriggeropen_0)
  750. {else}
  751. (T.L.ev_doortriggerclose_0)
  752. {endif}
  753. (C.L.door_druckluft)
  754. {if}
  755. (L.L.bremse_p_Tank04) 100000 - 0.98 * 100000 + (S.L.bremse_p_Tank04)
  756. {endif}
  757. {end}
  758.  
  759. {macro:trg_bus_doorfront1}
  760.  
  761. (L.L.doorTarget_1) ! (S.L.doorTarget_1)
  762. {if}
  763. (T.L.ev_doortriggeropen_1)
  764. {else}
  765. (T.L.ev_doortriggerclose_1)
  766. {endif}
  767. (C.L.door_druckluft)
  768. {if}
  769. (L.L.bremse_p_Tank04) 100000 - 0.98 * 100000 + (S.L.bremse_p_Tank04)
  770. {endif}
  771. {end}
  772.  
  773. {macro:trg_bus_doorback23}
  774.  
  775. (L.L.doorTarget_23) ! (S.L.doorTarget_23)
  776. {if}
  777. (T.L.ev_doortriggeropen_2)
  778. {else}
  779. (T.L.ev_doortriggerclose_2)
  780. {endif}
  781. (C.L.door_druckluft)
  782. {if}
  783. (L.L.bremse_p_Tank04) 100000 - 0.96 * 100000 + (S.L.bremse_p_Tank04)
  784. {endif}
  785. {end}
  786.  
  787. {macro:trg_bus_dooraft}
  788. (L.L.bremse_halte_sw) ! (S.L.bremse_halte_sw)
  789.  
  790. (L.L.bremse_halte_sw)
  791. {if}
  792. (T.L.ev_haltebremse_sw_an)
  793. {else}
  794. (T.L.ev_haltebremse_sw_aus)
  795. {endif}
  796. {end}
  797.  
  798. {macro:trg_bus_20h-switch}
  799. (L.L.door_20h_sw) ! (S.L.door_20h_sw)
  800.  
  801. (L.L.door_20h_sw)
  802. {if}
  803. (T.L.ev_haltebremse_sw_an)
  804. {else}
  805. (T.L.ev_haltebremse_sw_aus)
  806. {endif}
  807. {end}
Advertisement
Add Comment
Please, Sign In to add comment