Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   MSTS - Маршруты (http://www.trainsim.ru/forum/forumdisplay.php?f=19)
-   -   Сигнализация: конфигурация и скрипты (http://www.trainsim.ru/forum/showthread.php?t=13819)

КЕ 26.10.2016 08:59

Контроль приближения как делается? Это только в ОР?

vicente 26.10.2016 11:53

Да, только ОР.
В конфигурации прописываешь между блоком [B][I]SignalAspects[/I][/B] и [B][I]SignalNumClearAhead[/I][/B]:

[QUOTE]ApproachControlSettings (
PositionM ( 500 )
SpeedMpH ( 10 )
)[/QUOTE]

Теперь в скрипте можно прописать такую зависимость:
[QUOTE]if (Approach_Control_Speed(Approach_Control_Req_Position, Approach_Control_Req_Speed))[/QUOTE]

КЕ 27.10.2016 11:29

Точно! Видел это в мануале, только перевод не понял. Теперь ясно.
А рестрикты - проверял для имитации ПАБ, когда на локомотивном всегда белый. В МСТС на RES 0 км/ч трафик останавливается; хотел так сделать для OR, но не вышло. Так что будет белый и красный на АЛСН.
А по 3 жёлтым - да, так и надо сделать.
[SIZE="1"]В РТС трафик на 0 км/ч RES останавливается.[/SIZE]

vicente 27.10.2016 13:53

[QUOTE=КЕ;538688]
А рестрикты - проверял для имитации ПАБ, когда на локомотивном всегда белый. В МСТС на RES 0 км/ч трафик останавливается; хотел так сделать для OR, но не вышло. Так что будет белый и красный на АЛСН.[/QUOTE]
Я не смотрю твои скрипты, но, ты, вроде, когда-то собирался их попарно ставить, "прикрывая" 0 маркерами для АЛСН... Да, и в МSTS RES нужен для ограничения скорости по сигналам... Передумал? Я на ПАБ для МSTS когда-то начинал делать светофоры с аспектами SAP и RES, а показания головой DISTANCE.
[QUOTE=КЕ;538688]А по 3 жёлтым - да, так и надо сделать.
[/QUOTE]
В МSTS тоже должно работать, только без гашения синего на RES.

КЕ 27.10.2016 14:12

[quote]...ставить, "прикрывая" 0 маркерами для АЛСН...[/quote]
Так было в каком-то раннем варианте моей сигнализации; потом отказался, потому что "пошли" РТС и OR.
Сейчас для ПАБ принцип почти тот же, только всё прописано в светофоре, без доп. маркеров.
[quote]...В МSTS тоже должно работать, только без гашения синего на RES....[/quote]
Да, работает, соответственно там на !enabled - STOP, на enabled - S.A.P.
--------
А вообще функция определения расстояния - интересная вещь! Надо её попробовать с пригласительным...

vicente 27.10.2016 22:44

[QUOTE=КЕ;538710]
А вообще функция определения расстояния - интересная вещь! Надо её попробовать с пригласительным...[/QUOTE]
Я думал об этом, но отказался. То есть, зажигать пригласительное показание, может, только так и нужно, чисто "для реалистичности", но как одно из условий не пошло у меня. Хотя, вот, сейчас подумал -- есть одна идея. А именно зажигать пригласительный, проверяя по [I][B]dist_multi_sig_xx()[/B][/I]. На моей сигнализации это сработает. У меня большинство входных и проходных светофоров в нормальном положении RES. Маневровые на выходной RES сами дают RES и это блокирует входной (В принципе, то, что я тебе описал с маршрутным - с небольшими оговорками - и есть скрипт моего маневрового, я показывал его на "Заборе"). Но, есть небольшая проблема. Я не могу принять сервис с перегона без точки ожидания, если продолжение его маршрута с пути станции - маневровым порядком. И часто забываю об этой фишке, прокладывая маршрут. Как следствие - сервис "застряёт" на входном. Пока это дело "отловишь" на 4-х направлениях и почти 500 км маршрута, пока переделаешь... Так вот, думаю, может, в таких ситуациях давать пригласительный на входном?...
Надо потестить будет :crazy:

КЕ 27.10.2016 22:57

Я c пригласительным попробовал "слегка", вроде получается; но надо, конечно, как следует "осилить и затестить насмерть" :)
И, по-моему, лучше для входного делать Ж или 2Ж, если след. аспект - RES или меньше.

vicente 27.10.2016 23:30

Костя, у меня немного другая ситуация. Входной работает согласно скрипту первого за ним маневрового. А маневровые по цепочке "через" маркер РЦ (есть и такой:D) ловят аспекты выходного. А как ты хочешь сделать пригласительный? То есть, какие условия должны выполняться, чтобы по пригласительному принимался поезд? Я имею в виду поездную ситуацию, а не скрипт.

КЕ 27.10.2016 23:43

Для игрока - если на входном 0 или 1, и путь за ним свободен. Не уверен, так ли это нужно; просто вспомнился "вечный красный" в сценариях МСТС.

vicente 28.10.2016 00:06

Не думаю.
"0" не просто так на сигнале будет, это блокировка, "1" вообще прописывать нельзя, естественно. Есть в ORTS тоже ситуации, когда блокировки срабатывают с двух сторон и "вечный красный". Но, это надо решать расстановкой сигналов. То есть, на простой "вилке", "огороженной" сигналами этого никогда не будет, но, ведь, станции у нас не всегда простые...
Думаю, пригласительный буду зажигать проверяя впередистоящие сигналы и, если на всех будут RES, тогда давать пригласительный

КЕ 28.10.2016 00:29

Так - да. Или для особенных манёвров.
Как это писать в скрипте с dist_multi_sig_lr? Если у тебя все сигналы - NORMAL?
[QUOTE=vicente;538852]...маркер РЦ (есть и такой:D)...[/QUOTE]
- это кто такой???:)

vicente 28.10.2016 01:42

На выходных светофорах я сделал обратно-смотрящую голову NORMAL, чтобы сделать дополнительный блок. Пока состав на стрелках, светофор перед узлом (у меня - маневровый) заблокирован. Иначе есть проблемы с переводом стрелок из-за особенностей скриптов маневровых.

[size="1"][color="Silver"]Добавлено через 5 минут[/color][/size]
[QUOTE=КЕ;538861]Как это писать в скрипте с dist_multi_sig_lr? Если у тебя все сигналы - NORMAL?[/QUOTE]
А почему нет? Эта функция должна работать со всеми видами сигналов.
С забора перенесу сюда: [QUOTE]Проверяет сигналы первого типа на пути до сигнала второго типа/враждебной стрелки/окончания пути
Ну, и ловит соответствующее значение подобно другим x_sig() функциям...[/QUOTE]
У него в заявлении два Fn_type. Первый ставим NORMAL, второй, скажем, DISTANCE и всё! Он читает NORMAL-ы

КЕ 28.10.2016 01:48

А ДИСТАНС придется отдельно ставить для этого?
Как до вржд. стрелки считать?
И что со стрелками не так?

vicente 28.10.2016 01:49

Как писать?
Не знаю пока... Думаю пока как сделать условие, чтобы на пути функции были [B]только[/B] аспекты 2

КЕ 28.10.2016 01:53

Вот если бы можно было передавать аспекты на впередистоящие светофоры...
С bak_sig_xx здесь никак не получится?..

vicente 28.10.2016 01:55

[QUOTE=КЕ;538879]А ДИСТАНС придется отдельно ставить для этого?[/QUOTE]
Вот и я не хочу их ставить. А только пользоваться второй частью определения "враждебной стрелки/окончания пути ". Ещё неизвестно как оно в ОР работать будет, но есть шанс. Дело в том, что светофор !enabled в ОР не "читает" положение стрелок перед собой. Я проверял функцию block_state() недавно. Светофор, через который не проходит путь выдает BLOCK_JN_OBSTRUCTED независимо от положения стрелки. Возможно и dist_multi_sig_xx() будет доходить до этого момента и прекращать проверку...

КЕ 28.10.2016 02:01

Надо завтра проверить. Только как писать? Первый тип укажем НОРМАЛ, а на месте второго что??

vicente 28.10.2016 02:08

[QUOTE=КЕ;538879]И что со стрелками не так?[/QUOTE]
Это особенность скрипта моих маневровых светофоров. Из за того, что перед узлом маневровый, именно он блокирует. А у меня на занятый путь он RES, тогда поезд следующий "по удалению" резервирует стрелку для себя не по своему маршруту, а по её последнему положению. Поэтому мне надо держать его "0" пока состав не освобождает стрелки.
[QUOTE=КЕ;538881]Вот если бы можно было передавать аспекты на впередистоящие светофоры...
С bak_sig_xx здесь никак не получится?..[/QUOTE]
Эта функция работает только на светофоре, который перед тобой :(

КЕ 28.10.2016 02:12

Я вот сейчас хотел проверить, но, оказывается, это не то, что думал. Как этот bak_sig_xx на самом деле работает?

APK-LVDZ 28.10.2016 02:25

Если имеется ввиду опция opp_sig_xx, то она работает так же как next_sig_xx, только в обратную сторону. Там есть ряд ограничений на тип головы, сейчас точно не помню. Вроде REPEATER не ловил, и можно было использовать не во всех головах. Это актуально для МСТС

КЕ 28.10.2016 02:28

Нет, именно это, [B]extern float [I]bak_sig_lr;[/I][/B], например.

vicente 28.10.2016 02:34

[QUOTE=КЕ;538887] Как этот bak_sig_xx на самом деле работает?[/QUOTE]

Лёша, В МСТС оно работает отлично от ОР
Ой... не то. Что это за bak?Я, как Лёша, перепутал с оппозитом

[size="1"][color="Silver"]Добавлено через 3 минуты[/color][/size]
Первый раз слышу о такой функции. Откуда это?

КЕ 28.10.2016 02:38

Брал здесь, но не до конца понятно:
[SPOILER][QUOTE=Zaborin.ru]next читает список аспектов следующей сигнальной точки,
this проверка своего светофора, например – передача кода с одной головки DISTANCE на другую NORMAL.
opp - маркер у считываемой точки - в сторону той, которая читает.
Т.е. если упростить до ПАБ, то так можно получить аспект входного светофора, когда точка (светофор), где
запущена функция, стоит к нему "лицом", т.е. они смотрят друг на друга.
bak - смотрит и передаёт в обратную сторону; пример - кодирование АЛСН по неправильному пути.

Bak-субобъекты

Bak-головой на спине выходного можно послать код маневров на все маршрутные и входной.
bak «вешает» любую головку на «спину», необязательно какую-то особенную, можно один и тот же маркер сделать на обе стороны. Обрабатываются как обычные головы, функции относительно "лица" точки; как от неё смотришь, так и прописываешь.
Передает, (как при этом принимает - не тестил) в обратную строну, соответственно, как у любой нормальной головы любого стандартного типа - у неё должно быть "неактивное" состояние, в котором она не светит и передает неуправляющий на фоне других аспект.
ИМХО тут нужно смотреть скриптом в ту сторону, куда смотрит головка, хотя надо затестить – может быть, только "передатчик" разворачивается.
[/quote][/SPOILER]

vicente 28.10.2016 02:58

Нет такого. Сейчас гляну там...

[size="1"][color="Silver"]Добавлено через 13 минут[/color][/size]
Костя, нет такой функции

КЕ 28.10.2016 03:10

Опечатка, наверное, была...
Значит, передать аспекты "вперёд" нельзя (оппозиты ведь не работают с ними)?

vicente 28.10.2016 04:33

А зачем?

КЕ 28.10.2016 08:45

Думал так передавать маневровый режим.

vicente 28.10.2016 12:18

Надо подумать )))

КЕ 28.10.2016 12:31

Вперед передать надо, но тут "зацепиться" не за что. Оппозиты только занятость пути "понимают". Я так хочу со спины выходного попробовать для маневровых Б-С.
Или dist_multi_sig_xx применить... до какого сигнала проверять? Или до конца пути - тогда как скрипт должен выглядеть?

КЕ 29.10.2016 20:06

Олег, а ты в каком-нибудь сценарии маневровый "по удалению" за поездным сервисом с точкой ожидания делаешь?

vicente 29.10.2016 21:45

Да.
На всех маневровых, если есть точка разворота за ними ( с пути на путь) ставлю точки ожидания "для реалистичности". Двухсекционникам от минуты до 2-х, маневровым локомотивам или составам 10-30 сек, чтобы сразу не возвращались.
Думаю, я понял: к чему ты клонишь. Именно поэтому сейчас снова пытаюсь "пробить" маневровый режим (не получается пока - переменные не хотят запоминать себя). У меня прописано маневровому на занятый путь не открываться, если следующий светофор открыт. То есть, за поездом маневровый сервис не поедет, не сцепится с ним и т.п. Но, эта связка ненадёжна. Я перегоняю локомотивы по главным путям станций, на них останавливаются только пассажирские и пригородные с открытыми выходными. Но, хочется универсальности, потому что, если выходной пассажирскому будет заблокирован, маневровый откроется.

КЕ 29.10.2016 22:16

[quote]переменные не хотят запоминать себя[/quote] Да, всё "сбрасывается", по крайней мере у меня, хотя в МСТС работало...
[quote]маневровому на занятый путь не открываться, если следующий светофор открыт. То есть, за поездом маневровый сервис не поедет, не сцепится с ним и т.п. Но, эта связка ненадёжна. Я перегоняю локомотивы по главным путям станций, на них останавливаются только пассажирские и пригородные с открытыми выходными. Но, хочется универсальности, потому что, если выходной пассажирскому будет заблокирован, маневровый откроется.[/quote]
Была мысль ставить специальные маркеры границы станции - если путь сервиса за них не заходит, то по !enabled выдают нужный управляющий аспект. Но то же самое можно считывать с уже имеющихся светофоров, только надо думать, как... Вот твой случай как раз и показал ненадёжность всего этого.

vicente 29.10.2016 22:22

Да, это недостаток. Но, что сделано - то сделано. У меня маршрут почти 500 км, на всех станциях они стоят и работают. И сценарии только я делаю, так что эта ситуация принимается мной во внимание. Сигнализацию с того, что есть на сегодняшний день, я могу только улучшать. Не получается - будет работать так дальше.
Скрипт как-то странно работает в ОР. Придётся все функции с самого начала проверять на тестовом

КЕ 29.10.2016 22:26

Маневровый Б-С:
[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]
Буду проверять...

vicente 29.10.2016 22:44

Ух, ты!!! Поменял на тестовом проходные на 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]
работать не будет

КЕ 29.10.2016 22:44

Как выводы??? Проходные DISTANCE? И что при этом происходит???

vicente 29.10.2016 23:02

Зависимость 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
Если условия в рамке не имело место - режим маневровый

КЕ 29.10.2016 23:05

А у меня так отдельный маневровый "датчик" работает.
А не повлияет этот проходной, если манёвры в сторону перегона? Хотя вроде не должен.
------------------------------------------------------------------
Дистансы работают. Я заехал за входной, и они все дружно загорелись жёлтым - для трафика.
"Своего" БУ не имеют.
[quote]DISTANCE работают как enabled() пока следующий NORMAL enabled()[/quote]
Спасибо, про это не знал!

vicente 29.10.2016 23:30

[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]
Это старый вариант без обратно-смотрящего маркера на выходных. Писал уже, что я их сейчас меняю на вариант с маркером из-за того, что стрелка не переводится, если за сервисом по удалению идёт ещё один

КЕ 30.10.2016 00:07

Спасибо! Посмотрю ещё раз, подумаю завтра - может, какие идеи появятся (а то спать надо...).
[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, если только всё заново начинается.


Текущее время: 08:09. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim