Насчет появления призрака только по событию enter - не знал, спасибо!
уже писал сообщение ниже на другом форуме, но может быть и здесь кто-то заинтересуется...
------------------------------------------------------------------------------------------------
сразу прошу прощения за "многа букофф", грамматические и другие ошибки ))
возникало смутное очертания идеи: что если хочется маневров - то придется это делать в расчете на один-два лока и все маневры переносить на отдельной ветку, куда не может забрести "чужой" лок. а само управление блоком с расцепкой реализовать на Ардуине (на которой собран токовый детектор занятости), далее Контролллер. управление этим блоком сделать через Выводы (outputs) + хитрое рассписание. Контроллер будет посылать в Центральную Станцию(далее "ЦС") такие сигналы занятосяти датчиков(блоков), которое нужны по ситуации, а ЦС через Output будет сообщать Контролллеру - какой от него требуется режим в данный момент.
Основные положения:
1. Расписание управляет отправкой лока по блокам, а также выставляет на нужный Ouput сигнал - какой сейчас режим расцепка или сцепка и просто катаемся.
2. Контроллер принимает Output, и интерпретируя его, посылает сигнал занятости блоков не как есть, а после обработки, в соответствии со значением сигнала Output
3. На колпарах всех вагонов резисторы или потребители тока, например, декторы освещения (резисторы хотя бы на крайних колпарах)
Например, такой сценарий - расписание:
1. состав сдает обратным ходом в тупик.
2. Отцеплются вагоны, лок уезжает в любой блок.
3. Лок возвращается в блок расцепки, цепляет состав
4. Лок с составом уезжает куда угодно
Алгоритм:
1. состав сдает обратным ходом в тупик.
- Output=0.
- Контролллер посылает в ЦС сигналы от Begin, Uncoupler, End без обработки, как есть. Begin = enter, Uncoupler = pre2in, End = in.
- Внимание! Состав должен уместиться целиком на участках Uncoupler и End.
2. Отцеплются вагоны, лок уезжает.
- Output=1.
- Контроллер получает Output=1. Контроллер включает расцепку (для расцепления надо провезти сцепку над расцепным устройством) при срабатывании участка Check и ждет занятости блока Begin. После этого отключает расцепку и отправляет в ЦС, что датчики Uncoupler и End свободны и также запоминает, что находится в режиме "состав без лока на пути". Т.е. ЦС не "видит", что в тупике остался состав без лок, никаких "призраков" ))
3. Лок возвращается, цепляет состав.
- Output=2.
- Контроллер находится в режиме "состав без лока на пути". Ожидает срабатывания датчика Begin (помним, что Uncoupler и End уже заняты вагонами, а сами вагоны начинаются где-то над расцепным устройством). Как только Begin = занят, то Контроллер сразу же посылает в ЦС, что датчик тоже Uncoupler занят (чтобы вызвать pre2in, сброс скорости до минимума). После, Контролллер ожидает освобождения Begin (лок и вагоны сцепились), отправляет End = занят и уходит из режима "состав без лока на пути", т.е. дачики Uncoupler и End отправляются в ЦС без обработки. Состав останавливается.
4. Лок уезжает куда угодно
- Output = 0.
критика и предложения категорически приветствуются! )))