![]() |
Да.
На всех маневровых, если есть точка разворота за ними ( с пути на путь) ставлю точки ожидания "для реалистичности". Двухсекционникам от минуты до 2-х, маневровым локомотивам или составам 10-30 сек, чтобы сразу не возвращались. Думаю, я понял: к чему ты клонишь. Именно поэтому сейчас снова пытаюсь "пробить" маневровый режим (не получается пока - переменные не хотят запоминать себя). У меня прописано маневровому на занятый путь не открываться, если следующий светофор открыт. То есть, за поездом маневровый сервис не поедет, не сцепится с ним и т.п. Но, эта связка ненадёжна. Я перегоняю локомотивы по главным путям станций, на них останавливаются только пассажирские и пригородные с открытыми выходными. Но, хочется универсальности, потому что, если выходной пассажирскому будет заблокирован, маневровый откроется. |
[quote]переменные не хотят запоминать себя[/quote] Да, всё "сбрасывается", по крайней мере у меня, хотя в МСТС работало...
[quote]маневровому на занятый путь не открываться, если следующий светофор открыт. То есть, за поездом маневровый сервис не поедет, не сцепится с ним и т.п. Но, эта связка ненадёжна. Я перегоняю локомотивы по главным путям станций, на них останавливаются только пассажирские и пригородные с открытыми выходными. Но, хочется универсальности, потому что, если выходной пассажирскому будет заблокирован, маневровый откроется.[/quote] Была мысль ставить специальные маркеры границы станции - если путь сервиса за них не заходит, то по !enabled выдают нужный управляющий аспект. Но то же самое можно считывать с уже имеющихся светофоров, только надо думать, как... Вот твой случай как раз и показал ненадёжность всего этого. |
Да, это недостаток. Но, что сделано - то сделано. У меня маршрут почти 500 км, на всех станциях они стоят и работают. И сценарии только я делаю, так что эта ситуация принимается мной во внимание. Сигнализацию с того, что есть на сегодняшний день, я могу только улучшать. Не получается - будет работать так дальше.
Скрипт как-то странно работает в ОР. Придётся все функции с самого начала проверять на тестовом |
Маневровый Б-С:
[SPOILER]if ( enabled ) { if ( ( opp_sig_lr (SIGFN_NORMAL) == 1 ) && ( next_N <= 2 ) && ( opp_D == 1 ) ) { state = 2; draw_state = 1; } /// из горловины на станц. путь } else { state = 0; draw_state = 0; }[/SPOILER] сам DISTANCE, opp_D == 1 - управляющий код в РЦ от оппозитно стоящего около входного светофора маневрового маркера, направленного на середину станции: [SPOILER]{ state = 0; } if ( ( block_state() == BLOCK_CLEAR ) && ( next_sig_lr (SIGFN_NORMAL) <=1 ) && ( opp_sig_lr (SIGFN_NORMAL) <=1 ) ) { state = 1; }[/SPOILER] Буду проверять... |
Ух, ты!!! Поменял на тестовом проходные на DISTANCE --- интересная штука получается. Ну-ка, какие твои выводы?
[size="1"][color="Silver"]Добавлено через 7 минут[/color][/size] Костя, opp_sig_lr работает [B]только[/B] на попутном светофоре. То есть, это [QUOTE]{ state = 0; } if ( ( block_state() == BLOCK_CLEAR ) && ( next_sig_lr (SIGFN_NORMAL) <=1 ) && ( [COLOR="Blue"]opp_sig_lr (SIGFN_NORMAL)[/COLOR] <=1 ) ) { state = 1; } [/QUOTE] работать не будет |
Как выводы??? Проходные DISTANCE? И что при этом происходит???
|
Зависимость DISTANCE от enabled()
[size="1"][color="Silver"]Добавлено через 5 минут[/color][/size] DISTANCE работают как enabled() пока следующий NORMAL enabled(). Но, у меня тестовый полигон очень короткий. Я как-то тестил DISTANCE - там ещё расстояния имеют значение, если пользоваться этими функциями. Поэтому, я для передачи информации ими не пользуюсь [size="1"][color="Silver"]Добавлено через 8 минут[/color][/size] Мысль такая. Первый проходной после станции в противоположном направлении от маневрового (нормальное положение RESTRICTING), в случае, если едет поезд в сторону станции будет !enabled, блок "за ним" по ходу - занят. Прописать в нём особый аспект на этот случай [QUOTE] if (!enabled && (block_state() !=# BLOCK_CLEAR)){state = 1; }[/QUOTE] Маневровый должен по if ( opp_sig_lr (SIGFN_NORMAL) == 1 ) "ловить" поездной режим и держать его до тех пор, пока сам не станет !enabled Если условия в рамке не имело место - режим маневровый |
А у меня так отдельный маневровый "датчик" работает.
А не повлияет этот проходной, если манёвры в сторону перегона? Хотя вроде не должен. ------------------------------------------------------------------ Дистансы работают. Я заехал за входной, и они все дружно загорелись жёлтым - для трафика. "Своего" БУ не имеют. [quote]DISTANCE работают как enabled() пока следующий NORMAL enabled()[/quote] Спасибо, про это не знал! |
[QUOTE=КЕ;539237]
А не повлияет этот проходной, если манёвры в сторону перегона? [/QUOTE] Нет. Выходной настраиваем давать на следующий 1 и 2 маневровый белый 2 и всё в ажуре. Проблема в другом. Как сохранить поездной режим? [size="1"][color="Silver"]Добавлено через 3 минуты[/color][/size] Лови скрипт моего маневрового :rolleyes: (Хотя, я давал его уже на Заборе) [SPOILER] extern float block_state (); extern float route_set (); extern float next_sig_lr (); extern float this_sig_lr (); extern float next_sig_mr (); extern float def_draw_state (); extern float state; extern float draw_state; extern float enabled; extern float sig_feature (); float next_state; next_state = next_sig_lr (SIGFN_NORMAL); if (route_set ()) { state = SIGASP_STOP; if (enabled && (block_state() ==# BLOCK_CLEAR) && (next_state ==# SIGASP_STOP)) { state = SIGASP_STOP_AND_PROCEED; } else if (enabled && (block_state() !=# BLOCK_CLEAR) && (next_state ==# SIGASP_STOP)) { state = SIGASP_RESTRICTING; } else if (enabled && (block_state() !=# BLOCK_CLEAR) && (next_state ==# SIGASP_STOP_AND_PROCEED)) { state = SIGASP_RESTRICTING; } else if (enabled && (block_state() !=# BLOCK_CLEAR) && (next_state ># SIGASP_RESTRICTING)) { state = SIGASP_STOP; } else if (enabled && (next_state ==# SIGASP_RESTRICTING)) { state = SIGASP_RESTRICTING; } else if (enabled && (block_state() ==# BLOCK_CLEAR) && (next_state ># SIGASP_RESTRICTING)) { state = next_state; } draw_state = def_draw_state (state); } else { state = SIGASP_STOP; draw_state = 0; if (this_sig_lr (SIGFN_NORMAL) ># SIGASP_STOP) { draw_state = 2; } } [/SPOILER] [size="1"][color="Silver"]Добавлено через 3 минуты[/color][/size] Это старый вариант без обратно-смотрящего маркера на выходных. Писал уже, что я их сейчас меняю на вариант с маркером из-за того, что стрелка не переводится, если за сервисом по удалению идёт ещё один |
Спасибо! Посмотрю ещё раз, подумаю завтра - может, какие идеи появятся (а то спать надо...).
[quote]Как сохранить поездной режим?[/quote] Или наоборот, маневровый. Какие-то переменные нужны, чтобы не "сбрасывались". Например, у меня такая попытка была: [SPOILER]///////////////////// УПРАВЛЯЮЩИЙ МАНЕВРОВЫЙ МАРКЕР 1, светофор ///////////////////////////////////////////////////////////////////////////////////// SCRIPT TK_M1-V extern float enabled; extern float block_state (); extern float next_sig_lr (); extern float opp_sig_lr (); extern float state; ///{ state = 0; } if ( ( block_state() == BLOCK_CLEAR ) && ( next_sig_lr (SIGFN_NORMAL) <=1 ) && ( opp_sig_lr (SIGFN_NORMAL) <=1 ) ) { state = 1; }[/SPOILER] { state = 0; } закомментировал. То есть state равно 0, если только всё заново начинается. |
Я пробовал инкримент. Если блок занят, прибавляется единица. Но, как только блок освобождается -- переменная обнуляется почему-то
[size="1"][color="Silver"]Добавлено через 2 минуты[/color][/size] [QUOTE=КЕ;539244] ///////////////////////////////////////////////////////////////////////////////////// SCRIPT TK_M1-V extern float enabled; extern float block_state (); extern float next_sig_lr (); extern float opp_sig_lr (); extern float state; ///{ state = 0; } if ( ( block_state() == BLOCK_CLEAR ) && ( next_sig_lr (SIGFN_NORMAL) <=1 ) && ( opp_sig_lr (SIGFN_NORMAL) <=1 ) ) { state = 1; }[/QUOTE] И что? Когда оппозит сбрасывается? Что со state? |
Да, и [I][B]dist_multi_sig_xx[/B][/I] до конца пути как проверяет? То есть как это в скрипте выглядит?
[size="1"][color="Silver"]Добавлено через 6 минут[/color][/size] [QUOTE=vicente;539247]И что? Когда оппозит сбрасывается? Что со state?[/QUOTE] Вот это я проверять буду, с трафиком. Посмотрю, как оно работает, но только послезавтра. |
[IMG][url=http://itmages.ru/image/view/5106146/480c7d5d][img]http://storage7.static.itmages.ru/i/16/1029/s_1477773489_2688766_480c7d5d20.png[/img][/url][/IMG]
[size="1"][color="Silver"]Добавлено через 1 минуту[/color][/size] [QUOTE=КЕ;539249]Да, и [I][B]dist_multi_sig_xx[/B][/I] до конца пути как проверяет? То есть как это в скрипте выглядит?[/QUOTE] Как в дефолте [QUOTE]SCRIPT UKSemDist // UK Semephore (Distance) extern float block_state (); extern float route_set (); extern float def_draw_state (); extern float dist_multi_sig_mr (); extern float state; extern float draw_state; extern float enabled; if ( //!enabled || // Not enabled/cleared to show natural state? !route_set() || // Switch not set as per link? dist_multi_sig_mr (SIGFN_NORMAL, SIGFN_DISTANCE) ==# SIGASP_STOP) { state = SIGASP_APPROACH_2; } else { state = SIGASP_CLEAR_2; } // Get draw state draw_state = def_draw_state (state); [/QUOTE] Проверяет головы NORMAL до следующего по пути DISTANCE. Если нет такового или путь заканчивается или есть на пути враждебная противошерстная стрелка - до места окончания пути Для Open Rails заблокированный светофор тоже является "окончанием пути". По скрипту, если есть [B]хоть один[/B] STOP , считается, что условие выполняется! [size="1"][color="Silver"]Добавлено через 15 минут[/color][/size] [url=http://itmages.ru/image/view/5106240/e1cafd4c][img]http://storage7.static.itmages.ru/i/16/1029/s_1477774733_3413209_e1cafd4c37.png[/img][/url] Как удержать аспект? :mad: |
Не удерживается даже в таком скрипте:
[SPOILER]SCRIPT TK_WB [I]extern float block_state (); extern float next_sig_lr (); extern float state; extern float draw_state; float next_N; float W;[/I] next_N = next_sig_lr (SIGFN_NORMAL); if ( ( state == 0 ) && ( block_state()!= BLOCK_CLEAR ) ) W = 1; else if ( ( ( next_N == 1 ) || ( next_N == 2 ) ) && W == 0 ) { state = 2; draw_state = 1; } /// из горловины на станц. путь else { state = 0; draw_state = 0; }[/SPOILER] Здесь переменная W задана для гашения белого в обратном направлении. Гаснет, но при обороте маневрового в горловине и движении обратно на станцию загорается белый, хотя сброс W в ноль не прописан в скрипте. То есть при перемене направления движения всё обнуляется заново независимо от скрипта.(?) Похоже, что при переходе из [I]!enabled[/I] в [I]enabled[/I] или обратно происходит то же самое. Переменная W - в принципе, тот же аспект. |
1. М-м-дя-я... "Головы" SHUNTING тоже оппозиты не читают, условие [B][I]opp_sig_lr (SIGFN_DISTANCE)[/I][/B] всегда возвращает "0". И в стабильной, и в последней тестовой версиях.
2. Если на станц. пути стоят вагоны, а за вагонами горит белый ( [I]state = 2;[/I]), то при этом на манёврах условие [I][B]if ( next_N == 2 )[/B][/I] не работает, [I][B]next_sig_xx[/B][/I] возвращает ноль (вроде как РЦ зашунтирована колёсами, и коды не проходят:)).:mad: Где можно посмотреть список внешних переменных для OR? |
Текущее время: 21:58. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim