Показать сообщение отдельно
Старый 31.10.2016, 18:18   #8
vicente
Заблокирован
 
Регистрация: 06.10.2007
Сообщений: 1,764
Вы сказали Спасибо: 899
Поблагодарили 1,214 раз(а) в 730 сообщениях
vicente стоит на развилке (репутация по умолчанию)
По умолчанию

Скрипт РЦ (устанавливается на пути после всех стрелок, у меня, как я уже сказал, это обратно-смотрящая голова, но можно отдельно делать)
Скрытый текст:
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);


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

Сам маневровый
Скрытый текст:
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;
}
}

Этих можешь ставить сколько угодно. Они будут работать в связке и каждый отдельно (то есть, можно завести сервис за один/два/три и только они будут работать, остальные будут держать входной 0)
Всех дел

Добавлено через 4 минуты
Это
Цитата:
if (this_sig_lr (SIGFN_NORMAL) ># SIGASP_STOP)
{
draw_state = 2;
}
Потому что он линкованый у меня из-за скорости. Я пока их не трогаю, они у меня расставлены на маршруте, но сегодня скорость на SAP можно не устанавливать, делать один, а скорость задавать специальным маркером типа SPEED - новый тип только для ОР
vicente вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо vicente за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА