PDA

Просмотр полной версии : Открытие дверей с использованием БОК (библиотеки очереди команд)



Transmitter
19.01.2015, 00:22
Данная тема вытекла из ответвления обсуждения в теме о ботомашинисте.
Насколько я понимаю, некоторые пользователи склоняются к созданию функции для открытия дверей при помощи переменных, другим же интересна её реализация с помощью БОК. Делюсь своим личным опытом.
Настройка и отладка производилась в условиях станции, имеющей 6 платформ и 11 приёмо-отправочных путей.
В параметрах редактирования сессии добавить следующие правила
RE AI Command Queuing Activator, RE AI Command Queuing Library:

На каждом пути необходимо установить триггер (обычный, зелёный). Место установки триггера должно быть выбрано с таким расчётом, чтобы поезда проезжали его при любых условиях, т.е. до остановки на станции (до или между маркерами или стоп-маркерами)
Настраивается триггер для каждого пути. Поскольку поезда на станцию прибывают с обеих сторон, то у меня они настроены дважды – для чётных и нечётных поездов соответственно.
То есть, например, для триггера 4, размещённом на 4-м пути для чётных поездов платформа окажется слева, для нечётных справа. Таким образом необходимо создать две группы, условно именуемые «Открытие дверей чётн» и «Открытие дверей нечётн.» с привязкой соответствующих команд машинисту. Редактируется библиотека (RE AI Command Queuing Library):
Далее настраиваются активаторы по похожему принципу: активатор, отвечающий за команду открытия дверей у чётных поездов и у нечётных - редактируется правило RE AI Command Queuing Activator:


В настройках выбирается соответствующая группа и очередь (то есть то, что содержит непосредственно команду открытия).

В конечном итоге в стеке для каждого чётного и нечётного пассажирского поезда или электропоезда необходимо добавить регистрацию в соответствующем активаторе.

Лично у меня регистрация в активаторе помещена в стек перед командами перед прибытием на станцию. Остановка на станции производится при помощи команды ботомашинисту «ехать до стоп-маркера «Остановка состава», однако для остановки может быть использован в т.ч. маркер.
Каждому пассажирскому поезду необходимо поставить в стек команду проверки очереди команд (Ждать появления команд -> выбрать группу -> тип состава -> тяга -> проверить наличие -> вставить

Andrey
19.01.2015, 02:05
Серега, так эту библиотеку по каждой станции создавать? А если на карте множество о. п. для "собак" так тогда как?

Transmitter
19.01.2015, 02:13
Andrey, ну тут уж... кто во что горазд, как говорится. Собственно говоря, если движение электропоездов происходит по двухпутному участку (хотя разницы нет - даже по однопутному), то для каждого о.п. открытие дверей можно прописать командами, ведь тут же известно же, на каком о.п. с какой стороны платформа. БОК и другие примочки, я так полагаю, эффективно применять на тех станциях, где заранее неизвестно что куда и когда прибудет, где много платформ и т.п.

Andrey
19.01.2015, 03:10
Да, у меня почему то не оказалось команды Open doors, как у тебя на скрине и на ДЛС нету. Пробую пока другой командой... но все таки надо придумать какой-то алгоритм чтобы на любой платформе поезда сами знали с какой стороны им открыть - закрыть.

capuy
19.01.2015, 04:27
залил бы сессию что бы можно было покопаться в оригинале, потому как нужно видеть всю логическую цепочку

NickLon
19.01.2015, 11:55
Ой, не пойму, чего вы мучаетесь? Там же всё просто. Вот схема станции на 5 путей и 3 платформы с триггерами, маркерами и стоп-маркерами:
|__________________________________| - это платформа 1.
===================================== - это 1-й путь.
===================================== - это 2-й путь.
|---------------------------------------------------| - это платформа 2 у 2-го и 3-го пути
===================================== - это 3-й путь.
==M1=O2====T1===========T2====O1==M2= - это 4-й путь.
|----------------------------------------------------| - это платформа 3 у 4-го и 5-го пути
===================================== - это 5-й путь.
На примере окучивания 4-го пути объясню.
1. Создаём группу списков очереди команд в БОК под названием "Открыть двери". В нем два списка: Открыть двери справа и Открыть двери слева.
2. Настраиваем активатор "Открытие дверей", в котором триггер 1 (Т1) привязываем к списку Открыть двери справа, а триггер Т2 привязываем к списку Открыть двери слева. Аналогично все триггеры на других путях. Там только триггеры будут другие, а привязка их к тем же самым спискам.
3. Цепочка команд машинисту будет выглядеть примерно так: Автомашинист -> Проехать маркер М1, Регистрация в активаторе "Открытие дверей", Следовать до стоп-маркера О1, Ждать появления команд->Проверить наличие/вставить из группы "Открыть двери".
Всё, поскольку после регистрации первым проехали триггер 1, то активным на момент остановки состава будет список "Открыть двери справа", его поезд и схватит. В противоположном направлении наоборот, поезд сначала наедет на Т2 и активирует список Открыть двери слева.
Другое дело, что путевые объекты Т1, О1 и Т2, О2 должны быть максимально близко друг к другу, например, на расстоянии 70-100 метров, чтобы не произошло наложения активации списка одним поездом, а схватит список другой поезд.

Andrey
19.01.2015, 12:31
NickLon: Тогда еще 2 вопроса - 1-ый зачем команда "Проехать маркер М1" после "Автомашинист" и 2-й: как будут себя вести платформы с функцией погрузки пассажиров?

NickLon
19.01.2015, 13:05
Andrey, это может быть любая другая команда, обеспечивающая движение ПС до регистрации в активаторе. Автомашинист и Проехать маркер - это одна и та же команда. Проехать маркер - это её опция. К БОК, равно как и сама БОК никакого отношения к различным функциям других объектов отношения не имеет. Они, скорее всего, будут вести себя так, как и без использования ботомашиниста или БОК.
Кстати, а что за платформы такие ты юзаешь?

Andrey
19.01.2015, 13:26
AJS

xakepok
23.01.2015, 12:37
Скрины только верни, а то без них не понятно не фига

Donate with PayPal button

New New