Костя, Костя... Ты всё забыл...

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