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

Костя, Костя... Ты всё забыл...
Конечно, не останавливается. А зачем его рестриктом тормозить? Ты не понял задумку.
Итак.
У нас есть путь, разделённый маршрутным светофором. По трём жёлтым, согласно инструкции, "Разрешается моторвагонному поезду, одиночному локомотиву, мотовозу, дрезине следовать на свободным участок пути с особой осторожностью и со скоростью не более 20 км/ч до маршрутного светофора с красным огнем" (раньше, кстати, немного не так было). Это - раз! Второе, соответственно, поезд может прибыть на весь путь, будь то пассажирский или грузовой. Ну, и третий вариант - манёвры. Нам нужно три этих варианта "обыграть" по-максимуму и с минимумом дополнительных оговорок.
Наш путь разделён на 2 части маршрутным ЖС-КБ. При приёме на весь путь мы разобрались, вроде, так? Синий горит, аспекты согласно выходного (на 0 даёт 1, на 2 - 2, на остальные - дублирует следующий аспект), включая маневровый пропуск сервиса по пути с белым 2 на выходном. Условия обычные: путь сервиса проходит через сигнал (enabled) и блок участок свободен.
Теперь при занятости "дальней" части пути (блок не свободен). Прописываем следующее: если путь сервиса не проходит через светофор (точка разворота), на светофоре горит красный, аспект 0! Если проходит, то есть, поезд принимается на весь путь либо мы в маневровом режиме и запланирована прицепка - смотрим выше - аспект 2. Зажечь можно что угодно. У меня горит синий, для зажжения белого я использую функцию контроля приближения. Устанавливаю 50 метров, загорается в зависимости от секций пути, обычно, как только проехал предыдущий сигнал, сразу загорается, если секция длинная (250-500 метров), работает по установленному метражу. Ну, я свой маршрут "кромсаю" как мне удобно, на каждой станции делаю как мне удобно. не суть.
Надеюсь, понятно объясняю)))
Теперь входной. С ним всё просто: enabled && block_state ==# BLOCK_CLEAR, аспект согласно обстановке, показания: на следующий 3-7 - два желтых верхний мигает (обычно такие пути с отклонением, если прямо - зелёный), на следующий 1 два (один) жёлтый, на следующий 0 - три жёлтых.
Ну, и "гвоздь программы" на следующий 2 на входном 0.
Вот и вся песня!
vicente вне форума   Ответить с цитированием
Этот пользователь сказал Спасибо vicente за это полезное сообщение:
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


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