Форум 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)

vicente 30.10.2016 00:29

Я пробовал инкримент. Если блок занят, прибавляется единица. Но, как только блок освобождается -- переменная обнуляется почему-то

[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?

КЕ 30.10.2016 00:36

Да, и [I][B]dist_multi_sig_xx[/B][/I] до конца пути как проверяет? То есть как это в скрипте выглядит?

[size="1"][color="Silver"]Добавлено через 6 минут[/color][/size]
[QUOTE=vicente;539247]И что? Когда оппозит сбрасывается? Что со state?[/QUOTE]
Вот это я проверять буду, с трафиком. Посмотрю, как оно работает, но только послезавтра.

vicente 30.10.2016 00:59

[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:

КЕ 31.10.2016 12:11

Не удерживается даже в таком скрипте:
[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 - в принципе, тот же аспект.

КЕ 31.10.2016 16:57

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?

vicente 31.10.2016 17:06

[QUOTE=КЕ;539405]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?[/QUOTE]

Оппозит ловит только enabled светофор.

По 2.... Чет-ты, кажется, "мудришь" там. Работает.
Как это:[QUOTE]if (enabled && (block_state() !=# BLOCK_CLEAR) && (next_state ># SIGASP_RESTRICTING))
{
state = SIGASP_STOP;
}[/QUOTE]
Так и это:
[QUOTE] if (enabled && (block_state() !=# BLOCK_CLEAR) && (next_state ==# SIGASP_STOP))
{
state = SIGASP_RESTRICTING;
}[/QUOTE]
Моя версия 3651

КЕ 31.10.2016 17:11

[quote]Оппозит ловит только [I]enabled[/I] светофор[/quote] - вообще [I]enabled[/I], или у которого он указан в скрипте?
У меня маневровый Б-С типа SHUNTING, из-за этого и разница.

vicente 31.10.2016 17:14

Всё, что я дал [URL="http://trainsim.ru/forum/showpost.php?p=539239&postcount=282"]здесь[/URL] - работает. Просто [S]добавь воды[/S] подставь и тести :cool:

[size="1"][color="Silver"]Добавлено через 1 минуту[/color][/size]
[QUOTE=КЕ;539415]- вообще [I]enabled[/I], или у которого он указан в скрипте?[/QUOTE] Если у сигнала в скрипте прописана зависимость от оппозитной функции, эта зависимость будет проверяться только если сигнал перед поездом (enabled)

КЕ 31.10.2016 17:28

Подставил, работает! А SNCA у него какой, -1?
Что же, получается, все маневровые Б-С на NORMAL переводить...

vicente 31.10.2016 17:47

Ну, это уже я не знаю )))
Я тебе тогда сразу сказал, что буду делать их NORMAL и сделал. По-другому с манёврами трафика проблемы. Маневровые не идеальны, есть несколько ситуаций, в которых приходится ехать "по приказу" на синий SAP, а также ситуация с занятым путём и красным на выходном. Хотя, с другой стороны, трафик не прицепляется к составу с локомотивом (для этого есть специальная WP), а идёт за ним по Нодам.

[size="1"][color="Silver"]Добавлено через 1 минуту[/color][/size]
Если решишь делать NORMAL-ами, советую ставить "заглушки" - маркеры РЦ (у меня они на точках выходных бэк-фэйсами, но можно и отдельно). Скрипты я дам.

[size="1"][color="Silver"]Добавлено через 9 минут[/color][/size]
[QUOTE=КЕ;539419]А SNCA у него какой, -1?.[/QUOTE]
Да, [B]-1[/B]

КЕ 31.10.2016 17:58

А что за маркеры РЦ, для чего они?

vicente 31.10.2016 18:18

Скрипт РЦ (устанавливается на пути [B]после[/B] всех стрелок, у меня, как я уже сказал, это обратно-смотрящая голова, но можно отдельно делать)
[SPOILER]SCRIPT KRN23_RC_60
extern float block_state ();
extern float next_sig_lr ();
extern float def_draw_state ();
extern float state;
extern float draw_state;
extern float enabled;
extern float sig_feature ();
float next_state;

state = SIGASP_STOP;
next_state = next_sig_lr (SIGFN_NORMAL);
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;
}
else
{
state = SIGASP_STOP;
}
draw_state = def_draw_state (state);

[/SPOILER]
В принципе, практически то же самое, что я давал, они у меня раньше отдельными светофорами стояли, но, если несколько маневровых, надо было их по-разному делать, я сделал, но потом обнаружилась проблема с приготовлением маршрута, поэтому сегодня он только маркер :)
Маркеров несколько, отличаются только скоростью на SAP в конфиге в зависимости от пути (40 км/ч, 60... 80.... и т.д.)

Сам маневровый [SPOILER]SCRIPT KRN23_WB_k2
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))
{
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]
Этих можешь ставить сколько угодно. Они будут работать в связке и каждый отдельно (то есть, можно завести сервис за один/два/три и только они будут работать, остальные будут держать входной 0)
Всех дел :o

[size="1"][color="Silver"]Добавлено через 4 минуты[/color][/size]
Это[QUOTE]if (this_sig_lr (SIGFN_NORMAL) ># SIGASP_STOP)
{
draw_state = 2;
}[/QUOTE]Потому что он линкованый у меня из-за скорости. Я пока их не трогаю, они у меня расставлены на маршруте, но сегодня скорость на SAP можно не устанавливать, делать один, а скорость задавать специальным маркером типа SPEED - новый тип только для ОР

КЕ 31.10.2016 18:19

О, интересно! Что-то вроде было похожее у АРК с скоростями на SAP... Надо попробовать, потестировать вечером.
А, про ноды - если трафик идет "по ним", следующий сигнал с поездным значением отменяет это дело?

vicente 31.10.2016 18:23

Да, отменяет. На Ноды переводят RES и SAP, остальные возвращают.

КЕ 31.10.2016 18:34

Про спид-маркеры читал, даже по-английски немного понял.:) То есть можно после SAP-маневрового поставить это, чтоб заходить на станцию со ск. например, 40 км/ч при закрытом выходном? А МСТС что скажет, не пошлет меня лесом с такими маркерами?:)

[size="1"][color="Silver"]Добавлено через 7 минут[/color][/size]
Тут еще дело в том, что делается скрипт ОР для версии сигналки, уже установленной на маршруте "Павловск". То есть в расстановке светофоров и маркеров все должно оставаться как есть, без изменений. Вот и пытаюсь что-то выжать из этого.:)

vicente 31.10.2016 18:50

Естественно, в МСТС всё нужно ставить. То есть, прописывать в конфиге на МСТС-овском языке. Никаких новых функций там нет. головы надо прописывать как INFO, SuHNT и тому подобное, с "левыми" конфигами и скриптами. А как же иначе?

[size="1"][color="Silver"]Добавлено через 2 минуты[/color][/size]
Если на выходных у тебя есть "лишняя" голова, которую можно развернуть - отлично. Я на моделях Тимаса разворачивал не переставляя светофоры. У него там по 2 линка на главный путь и по 2 по неправильному с АЛСО, вот я по одной и "оттяпал" )))

КЕ 31.10.2016 18:52

У моих есть, но не у всех расставленных. И да, менял тоже, где были вторые головы.
_______________
Пробовал переводить сигналку в ручной режим по Ctrl+F9, но не понял, что же делать с этим... или это если сценарий "застрял"?:)

vicente 31.10.2016 19:01

Что это за Ctrl+F9? 0_0

[size="1"][color="Silver"]Добавлено через 2 минуты[/color][/size]
Может, Alt+F9?

КЕ 31.10.2016 19:26

Перепутал:o, вот так - Ctrl+M.

vicente 01.11.2016 05:43

[URL="http://forum.zaborin.ru/topic.php?forum=7&topic=4&postid=1428607209#1428607209"]Manual Mode[/URL],что ли? Так оно "клинит" весь сценарий! Помни, что [B]ни одна[/B] стрелка в этом режиме не переводится автодиспетчером.

[size="1"][color="Silver"]Добавлено через 1 час 3 минуты[/color][/size]
[IMG][url=http://itmages.ru/image/view/5117512/752d0fc3][img]http://storage3.static.itmages.ru/i/16/1101/h_1477961543_3299901_752d0fc3dd.png[/img][/url][/IMG]
;)

[size="1"][color="Silver"]Добавлено через 49 минут[/color][/size]
На скрине -- маневровый сигнал и "маркер РЦ". Стрелка остаётся "стерильной зоной". Когда состав на стрелке -- маневровый строго STOP, только так автодиспетчер может производить свои операции.

КЕ 01.11.2016 09:54

Маркеры РЦ - обратнонаправленные головы у выходных, так? Стоп перед стрелкой - как только голова ПС дойдет до маневрового сигнала.
Вчера гонял свои маневровые светофоры SHUNTING, они оппозиты то видят, то не видят - не пойму, от чего зависимость...

vicente 01.11.2016 15:59

[QUOTE=КЕ;539433]Про спид-маркеры читал, даже по-английски немного понял.:) То есть можно после SAP-маневрового поставить это, чтоб заходить на станцию со ск. например, 40 км/ч при закрытом выходном[/QUOTE]
Не забывать заявлять специальный флажок в конфигурации
[QUOTE]SignalAspect ( STOP_AND_PROCEED "No" SpeedKPH ( 60) signalflags (OR_NOSPEEDREDUCTION) )
SignalAspect ( RESTRICTING "No" SpeedKPH ( 20 ) signalflags (OR_NOSPEEDREDUCTION) )
[/QUOTE]
...чтобы трафики не притормаживали (до 5 миль/час)
[QUOTE=КЕ;539433]Тут еще дело в том, что делается скрипт ОР для версии сигналки, уже установленной на маршруте "Павловск". То есть в расстановке светофоров и маркеров все должно оставаться как есть, без изменений. Вот и пытаюсь что-то выжать из этого.:)[/QUOTE]
ИМХО... Маршрут вышел? Ариведерчи! Будут патчить - переставишь сигналы. Если кроме них *.tdb не будет изменён, сценарии пойдут, максимум - пересохранить сцену в редакторе без изменений.

[size="1"][color="Silver"]Добавлено через 4 минуты[/color][/size]
[QUOTE=КЕ;539480]Маркеры РЦ - обратнонаправленные головы у выходных, так? [/QUOTE]
Эгэж :crazy:
Но, можно и отдельным маркером делать - не принципиально.
[QUOTE=КЕ;539480]Стоп перед стрелкой - как только голова ПС дойдет до маневрового сигнала [/QUOTE] Конечно! По [I][B]block_state()[/B][/I], как обычный NORMAL.
[QUOTE=КЕ;539480]Вчера гонял свои маневровые светофоры SHUNTING, они оппозиты то видят, то не видят - не пойму, от чего зависимость...[/QUOTE] Не игрался с ними. Они не влияют на сервис, а посему неинтересны мне. С DISTANCE работаю на ПАБ и INFO на указателях, повторительных головках и т.д.

[size="1"][color="Silver"]Добавлено через 1 час 22 минуты[/color][/size]
[IMG][url=http://itmages.ru/image/view/5119838/a18df003][img]http://storage8.static.itmages.ru/i/16/1101/h_1478000417_3558211_a18df00398.png[/img][/url][/IMG]

КЕ 01.11.2016 16:23

Тоже выходные с обратными головами? Малахитовка вроде...:)

vicente 02.11.2016 00:30

Она самая :D

vicente 03.11.2016 23:51

SignalNumClearAhead
 
Отказался от [B]-1[/B] на маневровых. Не очень хорошо получается. Он не учитывается, если поезд едет к нему. А, вот, после точки разворота на маневровом, светофор не "энэйблит" уже второй по ходу сигнал. [B]-1[/B], пока остаётся на светофорах прикрытия. Пока всё.

КЕ 04.11.2016 11:15

Ага, похоже вот и причина неработающих сигналов и у меня. Спасибо! Похожее было - не открывался Б-С маневрик с SNCA=-1 у точки разворота перед входной стрелкой.

vicente 04.11.2016 17:36

Ну, отерываться-то он -- открывается. Только SAP по скрипту. Естественно, остаётся синим, но траф едет. Не айс, тем более, что ситуация вполне на RES и белый. Так что... входной надо расчитать, чтобы хватало на всё (у меня вообще предвходные этим делом заняты. Я их размножил и теперь имеются клоны на SNCA 2, 3, 4 и 5.)

КЕ 04.11.2016 19:21

А если поставить 2 подряд перед узлом, и один закопать?:D

vicente 04.11.2016 21:07

Маневровых два?? Зачем?

КЕ 04.11.2016 21:48

Посмотреть, как будут работать...

КЕ 05.11.2016 22:19

А что, "ApproachControlSettings" только с NORMAL-ами работает?

vicente 06.11.2016 01:06

не проверял

КЕ 06.11.2016 01:49

Да так и есть - нормалы срабатывают, а "шунты" - нет.

vicente 06.11.2016 01:55

A DISTANCE?;)

КЕ 06.11.2016 02:51

Как и ШУНТИНГ - тоже не работают с этим. Надо к разрабам идтить челом бить...:)

vicente 06.11.2016 09:08

Сходи-сходи! :D
Я никак не соберусь сходить и побить [S]по челу[/S] челом за функции [I]block_state ()[/I] и [I]next_sig_xx ()[/I] , которые на выходных работают по какому -то аЦкому алгоритму и совершенно не предсказуемы... Что-то мне подсказывает, что буду послан. Разработка заигрались "неосигналенными" маршрутами и [B]Timetable Mode[/B], все в данный момент скандалят, а автор всего, что касается организации движения просто непробиваем...

КЕ 06.11.2016 10:38

Я б сходил бы, да в аглицкой мове не умён...:crazy:
А сколько там всего народу участвует в ORTS?
---
[I]block_state () и next_sig_xx ()[/I] непонятно как срабатывают, когда выходишь со станции по удалению. Получается, что первый проходной какое-то время !enabled, но непонятно - как именно это время рассчитано в движке.
Выходные, как я понял пока - даже если путь сервису не доходит до след. сигнала, и тот не виден на мониторе пути - скриптом его всё равно можно проверить, иначе бы маневровый на выходном по зависимости от [I]next_sig_lr(SIGFN_NORMAL) == 1;[/I] (state=1; у проходного по !enabled) не открывался бы.

vicente 06.11.2016 12:41

Уверен, что проблема с [I]enabled()[/I]? У меня другие выводы. Я "грешу" именно на функции [I]block_state ()[/I] и [I]next_sig_xx ()[/I]. Если ещё точнее, на то, как они взаимодействуют. Писать разрабу сигнализации никак не соберусь (с лета ещё). Сначала хочу проверить свои скрипты. Вдруг проблема там? Пока занят сценариями.
Насчет выходных, у меня, тогда, противоположная проблема: он должен давать RES на след RES, проходные по [I]!enabled()[/I] - RES. Если вывести путь сервиса за последнюю стрелку на главный ход, всё работает "на ура". Проблемы начинаются, когда манёвры идут внутри станции. Предварительно - блок высчитывается до первой стрелки за путём, она же даёт 0 по цепи. И всё! Арр... (ррр) - поездной аспект!
Был вообще дикий случай: с одного пути в депо заходили один за другим 3 тепловоза "Из-под составов". Первый и третий уходили по маневровому аспекту, а средний - по поездному.

КЕ 06.11.2016 13:38

Олег, ты на мониторе пути ничего странного не замечал? "Лишние" светофоры там показывались...:eek: На месте одного - два рядом.
Я сделал себе [URL="https://yadi.sk/i/bb4876-Ty9n7A"]вот такую текстуру[/URL] для него - с тонкими линиями вместо кружков, и сразу видно, что что-то здесь не так...
[QUOTE=vicente;539891]Ну, о тестовой версии мог бы спросить! :confused:
Я [URL="http://trainsim.ru/forum/showpost.php?p=537688&postcount=19"]пытался[/URL] :). А, вот, новости о версии 1.1 разочаровали. Я, если честно, хотел на неё "откатиться".[/QUOTE]
Что наделали?

vicente 06.11.2016 14:18

[QUOTE=КЕ;539895]Что наделали?[/QUOTE]
Ну, вот, об этом самом и хотел сказать. Глюки внешних функций влияют на сигналы. Я когда-то писал, что на 0.9 до какого-то момента работало по-другому. На 1.1 пришлось переписывать логику, но, где-то я упустил момент начала этих глюков. Всё невозможно сразу проверить. Блокировки работают, трафики гоняют, на дисплее диспетчера не всегда отчетливо видно что именно там открывается и кому. Потом заметил в одном месте, потом в другом... и пошло-поехало...
[QUOTE=КЕ;539895]Олег, ты на мониторе пути ничего странного не замечал? "Лишние" светофоры там показывались...:eek: На месте одного - два рядом... что-то здесь не так... [/QUOTE]
Вижу давно это на Ctrl+Alt+F11. "Списывал" на "многоголовость" сигнальных точек, потому как проверил, что все они работают по SNCA четко. В поездном режиме вообще никаких проблем нет. Геморр начинается когда есть точки разворота... возможно и точки ожидания влияют перед окончанием трэка


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

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