Система сигнализации sU и система маршрутизации zxPath
Сигнализация, в котором отсутствуют какие-либо "автоматические" или "полуватоматические" открытия светофоров. То есть светофоры должны открываться либо вручную, либо маршрутизациями zxPath или RE sU DSP. Варианта данной сигналки под а-ля дефолтное управление реализовываться не будет.
Условие наличия кодов на стрелках при движении по горловие при приёме - "кодирование от светофора" во входном + "кодирование съездов" на выходных прямого и обратного направлений этого пути. Условие наличия кодов на стрелках при отправлении - "кодирование съездов" на выходных прямого и обратного направлений + "кодирование до светофора" на входном.
Преимущества:
1) динамический розжиг (на светофоре можно развесить практически любой набор линз в любом порядке)
2) возможность копи-паста скоростных ограничений из светофора в светофор
3) опциональная установка маршрутного указателя и стрелок короткого блок-участка (в том числе одновременно) на любой из доступных мачтовых светофоров
4) отсутствие станционных контроллеров - все настройки производятся непосредственно в светофоре
5) возможность вращать головку и её крепление на любой угол
6) регулируемое расстояние до оси пути и высоты над уровнем головки рельса (в широких пределах)
7) выкалывание любых линз у мачтовых светофоров (ограничение - в 3-линзовой головке можно выколоть только одну из линз)
8) шрифт табличек светофоров создан на основе трафаретов, приведённых в "Руководстве по эксплуатации щитков (литерных табличек)"
9) При подписывании карликовых светофоров скрипт автоматически отделяет номер пути в нижнюю строку табличек
10) высокая степень оптимизации, на порядок превосходящая таковую у z7
11) все типы комбинаций линз, указанные в "типовых проектах", добавлены в стандартные наборы розжигов светофоров
Преимущества маршрутизации zxPath
1) автоматизирует замыкание маршрута - перевод стрелок, открытие сигналов и изменение направления перегона происходят автоматически
2) возможность работы на станциях любой сложности
3) снятие некоторых ограничений, которые имела z7-xPath (например теперь возможна работа перегона на петле вокруг станции)
4) три типа поездных маршрута-
а) "стандартный" - маршрут будет замкнут как только освободятся все рельсовые цепи и установлено необходимое направление перегона, разбирается при проследовании поезда
б) "очередной" - маршрут будет замыкаться так же как и "стандартный", но только после того, как замкнётся предыдущий маршрут по этой же станции
в) "авто" - маршрут, самовозобновляющийся после проследования поезда (эмулирует "автодействие" светофоров)
5) возможность замыкания маневровых маршрутов путём ввода названий светофора начала и конца маршрута, в пределах парка станции или до ближайшего светофора соседнего парка
6) "маневровый маршрут на свободный путь" - маневровый маршрут не строится, если на пути, к которому он должен быть построен, есть ПС
7) набор правил и команд и автоматического выбора и замыкания маршрутов поездам
8) система приоритетов поездных маршрутов, позволяющая автоматически выбирать путь приёма из числа свободных с учётом категории прибывающего поезда
9) значительно более высокая, чем у z7-xPath, стабильность работы
Исходники моделей светофоров старого образца - https://yadi.sk/d/n6PSaij330Uea (автор исходных моделей - Rokky)
О настройке розжига:
В качестве примера, убирание зелёной линзы из 5-линзовика...
1) выставляем режим, наиболее близкий к необходимому (чтоб потом меньше мучаться)
2) нажимаем на "линзовый набор". Появляется строка розжига.
3) поясняю что здесь что. В строке, по порядку, задаются расположение линз:
первый символ в строке соответствует краной линзе. В данном случае этот символ - цифра 2, это значит что красную линзу надо повесить в 3е гнездо на светофоре, начиная от верха мачты (тут нумерация не с 1, а с 0, поэтому 2+1 = 3 ), что мы собственно и видим - красная линза под 3им козырьком
второй символ соответствует основной зелёной линзе. Это цифра 1, то есть линзу вешать во второе гнездо от верха мачты.
третий соответствует дополнительной зелёной линзе, используемой в сигнале "два зелёных" - в этом розжиге не вешается ни в какую ячейку, так как символ - прочерк.
четвёртый соответствует основной жёлтой линзе. Это 0, то есть линза в самом верхнем гнезде.
пятый соответствует дополнительной жёлтой линзе (нижняя для сигнала Жм-Ж). Это цифра 3, то данная линза в 4ом гнезде.
шестой соответствует второй дополнительная жёлтая линза (для сигнала три жёлтых). На светофор эта линза не вешается.
седьмой соответствует основной белой линзе (которая зажигается для маневров). Это 4, то есть линза вешается в 5ое гнездо сверху.
восьмой соответствует белой линзе повторительной головки (если используется и основная, и повторительная линзы на одном светофоре, то светофор будет давать сигнал "два белых".) Там прочерк, то есть линза не ставится.
девятый символ соответствует синему огню, на светофоре его тоже нет.
И последний, десятый символ указывает на расположение зелёной полосы (да, система могла бы повесить полосу в любое гнездо на светофоре ), но пока что светофоры для неё и она сама не готовы .
Итак, мы хотим убрать из нашего светофора зелёную линзу. Это значит в её символе строки розжига (тоесть втором) надо указать прочерк.
Указали, теперь можно подтвердить строку розжига и проверить результат (после установки розжига светофор светит всеми линзами). Зелёная линза пропала вместе со своим козырьком.
Остаётся добавить в опции галочку "выходной" и светофором можно пользоваться...
Информация
после задания нестандартного розжига заново выставляйте назначение светофора
Совмещение "выходного" и "не участвует в рельсовых цепях" используется, если нужно сделать невидимый выходной из парка с групповым светофором и повторителями.
Использование опции "не участвует в рельсовых цепях" вместе с "автооткрытие" нужно для повторительного, предупредительного, либо для светофора, в точности повторяющего показания невидимых светофоров.
Для маршрутного с синим (и жёлтым, зелёным) нужна опция "маршрутно-разделительный".
Для заградительных (кроме совмещённых маневровых с заградительными) и совмещённых предупредительных с заградительными нужны опции "не участвует в рельсовых цепях", "автомат без маневрового режима" и "заградительный".
Для маневрового с розжигом БСК нужна опция "выходной/маршрутный" либо, если это совмещение маневрового с заградительным, опции "маневровый без поездного режима" и "заградительный".
Опция заградительного "перекрывает соседние светофоры" убирается в том случае, если его закрытие не приводит к перекрытию предыдущего поездного светофора. Например, для ограждения переезда на перегоне с ПАБом.
Информация
Если светофоры расположены в слое карты, при изменении настроек перезаписывайте карту, а не сессию.
Информация
На кольцах , где нету входных и выходных светофоров (только маневровые, либо только проходные) обязательно расставлять маркеры-прерыватели автоблокировки.
Информация
Маневровые маршруты из одного парка в другой не строятся. Необходимо строить маршрут до ближайшего светофора соседнего парка и только затем от него до конечного светофора.
Информация
Для ограждения переезда в пределах горловины станции рекомендуется применять невидимые заградительные, либо совмещённые маневровые с заградительными.
Использование букв в МУ.
В маркеры с опцией MRN допустимо заносить арабские цифры и следующие значения в качестве номера пути:
Буквы:
А А
Б B
В V
Г G
Д D
Е E
Ж J
И I
К K
Л L
М M
Н N
О О
П P
Р R
С S
Т T
У U
Ф F
Х H
Ц C
Ч Q
Ш X
Э e
Ю Y
Я Z
Римские цифры:
I a
II b
III c
IV d
Положения:
\ l
/ r
| f
- h
Э e
Пример подключения обработчика проездов светофоров поездами
вариант 1
Код:
include "Trackside.gs"
include "zx_specs.gs"
class sUsniffingObject isclass Trackside, zxExtraLinkBase // унаследоваться и от класса zxExtraLinkBase
{
public void Init(Asset asset)
{
inherited(asset);
zxExtraLinkContainer contaner = new zxExtraLinkContainer();
contaner.extra_link = cast<zxExtraLinkBase>me;
GSObject[] GSO=new GSObject[1];
GSO[0] = cast<GSObject>contaner;
KUID sUcoreLibKUID = asset.LookupKUIDTable("sU_core_lib");
World.GetLibrary(sUcoreLibKUID).LibraryCall("add_extra_obj_base",null,GSO);
}
public void UpdateSignalState(zxSignal zxsign, int reason, int priority)
{
// и при проездах любых изостыков/светофоров будет вызываться аналогично вызову UpdateState() в светофоре/изостыке, сразу после исполнения этого вызова в самом светофоре + передаётся этот светофор
Interface.Print("signal "+zxsign.privateName+"@"+zxsign.stationName+" changed for "+reason+ " priority "+priority);
}
};
вариант 2
Код:
include "Trackside.gs"
include "zx_core.gs"
class sUsniffingObject2 isclass Trackside, zxExtraLinkBase // унаследоваться и от класса zxExtraLinkBase
{
public void Init(Asset asset)
{
inherited(asset);
KUID sUcoreLibKUID = asset.LookupKUIDTable("sU_core_lib");
Library lib = World.GetLibrary(sUcoreLibKUID);
lib.LibraryCall("",null,null); // для возможного запуска
(cast<zxLibruary_core>lib).AddExtraLink(cast<zxExtraLinkBase>me);
}
public void UpdateSignalState(zxSignal zxsign, int reason, int priority)
{
// и при проездах любых изостыков/светофоров будет вызываться аналогично вызову UpdateState() в светофоре/изостыке, сразу после исполнения этого вызова в самом светофоре + передаётся этот светофор
Interface.Print("signal "+zxsign.privateName+"@"+zxsign.stationName+" changed for "+reason+ " priority "+priority);
}
};
Последний раз редактировалось TRam_; 22.02.2022 в 01:40.
Потестил новую Х-систему и отметил несколько еталей. Начну наверное с вопросов, поскольку никакой инструкции не прилагалось, они, логично, и возникли (я понимаю что это ещё только тестовая версия, но тем не менее хочется разобраться). Во-первых, как работать с цифрами в новом окошке, за что они отвечают? А во-вторых — для чего есть две одинаковых галочки "подвижный БУ"? Во время тестов попробовал оставить в одном направлении только одну галку, в другом — обе. При этом если оставлять только одну — светофоры продолжают работать в обычном режиме, а при двух уже переключаются в "нерабочий" (с крестом). При этом во втором случае при сборе маршрута с бокового пути либо в неправильном направлении показание "Х" так и остаётся (понятно что светофор фактически перекрыт, но лишь "виртуально"). Так же, при включенном Х-режиме появляется защитный БУ, который не даёт прибыть на станцию, или отправиться от маршрутного к закрытому (с крестом) выходному. Ну и да, как говорилось выше, было бы интересно увидеть доработанную версию с возможностью перехода на обычный ("резервный") режим, а так же возникает еще один вопрос — как быть с разделением БУ на длинном перегоне при такой системе, ставить АЛСО/невидимки, либо вообще ничего?
Итак, по порядку.
Цифры отвечают за выбор кода АЛСН в зависимости от свободности впереди. По умолчанию там указано КЖ - 2, Ж - 5, З - 8. Это означает, что если за светофором менее 2 свободных РЦ, то кодов не будет. Если 2 и более, то появится код КЖ. Если 5 и более, то код сменится на Ж. И если 8 и более, то будет код З. Там же в 3 столбце считается контролируемая дистанция. Вообще, рекомендую посмотреть РУ-56-2018 - там про это есть.
Про галочки. Я пока не придумал, куда их расположить. По хорошему, там должна быть только первая. Это всего лишь признак того, что подвижные блок участки можно включить на этом светофоре. Сама по себе эта галочка на работу светофора не влияет. А вот вторая уже непосредственно включает режим подвижных блок участков. Но, наверно её там вообще быть не должно. Точно также, как в редакторе нет открытия светофора.
Вообще, не совсем правильно что-то делать со стрелками, когда на светофоре включен крест. Предполагается, что кресты включаются на уже собранном маршруте. И наоборот, разобрать маршрут можно только после отмены режима крестов. Ну и да, кресты можно включать только по главному пути. В скрипте есть проверка, правда, я её не тестировал.
Про переключение режима важно понимать, что это должна поддерживать и маршрутизация. Ведь после проследования поезда стрелки должны оставаться замкнутыми в маршруте. Также не принято окончательное решение, как именно должна проходить смена режима, должна это делать маршрутизация или сама сигнализация. С одной стороны, хочется сделать это в сигнализации, чтобы работало и без маршрутизации. С другой стороны, а если взрез? Сигнализация ничего не знает о трассе маршрута.
Блок участки однозначно делить! Вся эта тема ради повышения пропускной способности, а значит дискретность должна быть выше. По умолчанию предполагается, что РЦ длиной примерно по 450 метров. В РУ сказано, что при подвижных блок участках границы РЦ литерами не обозначаются, поэтому ставить невидимые светофоры.
Более того, невидимые светофоры нужны и по станции. Но они не должны мешать в режиме АБ, поэтому их следует настраивать как повторительные. Вообще, включение режима крестов имеет приоритет над другими настройками (кроме, пожалуй, галочки типовой светофор). Светофор считает, что у него есть показания красный, жёлтый, зелёный, даже если у него нет таких линз. Поэтому на станции можно это и к маневровому применить, если он в нужно месте стоит.
ТРамыч_, каким образом ты реализовал работу углов? Ты говорил, что они у тебя работают. Я тут понял, что лоханулся на них, и немного неверно делал. У меня был принцип такой, что при освобождении РЦ перед светофоров в обратную сторону построенного маршрута, происходит сверка построенных маршрутов, и если где-то идет пересечение углов, у меня дается команда на активацию команды построить/разобрать первый маршрут (у меня одна команда для этого по принципу built = !built). Но сейчас понял, что если маршрут многосекционный, и я построил новый маршрут куда-то далеко дальше через все эти секции, которые от первого уже разобралиь, но собрались обратно от новых маршрутов в обратную сторону, они у меня разбирались уже для новых маршрутов и сигналы перекрывались. Сейчас я переделал на то, что у меня разбирается только хвост, т.е. только те секции, которые останутся "непроеханными". Это, конечно, намного более верно, я изначально так и хотел сделать, но это же и дольше, поэтому решил немного обмануть судьбу, но сейчас понял, что не получилось. Но у меня есть РЦ, а у тебя нет, плюс универсальные маршруты. Как ты их умудрился реализовать?
Примерно так - "если при проследовании ПСом первой стрелки маневрового маршрута перед этой стрелкой имеется стрелка с маршрутом, собранном в противоположном направлении, и сразу за этой стрелкой нет ПС, то начиная с этой стрелки маршрут разбирается для всех стрелок, у которых тот же идентификатор маршрута, но не далее первого найденного ПС".
---------- Сообщение добавлено в 21:53 ---------- Предыдущее сообщение размещено в 21:49 ----------
Причём этот алгоритм очень старый, но на какое-то время, когда я отказался от проверки направления съезда ПС со стрелки для маневровых маршрутов, он перестал работать (т.к. стрелка "продлённой части" маршрута разбиралась раньше, чем первая стрелка маршрута в обратную сторону). Потом проверку направления вновь внедрил, алгоритм снова заработал.
Если будет интересно - ф-ция RemoveNeighbPath() в скрипте будки.
---------- Сообщение добавлено в 22:01 ---------- Предыдущее сообщение размещено в 21:53 ----------
Сообщение от B.U.G.O.R.
Но сейчас понял, что если маршрут многосекционный, и я построил новый маршрут куда-то далеко дальше через все эти секции, которые от первого уже разобралиь, но собрались обратно от новых маршрутов в обратную сторону
Как уже написал,у меня вообще при данном процессе не даётся команды на разбор маневрового маршрута - производится разбор части этого маршрута до первой занятой ПСом секции (и только если там всё свободно, и все стрелки освободятся, тогда и маршрут тоже разберётся). Ну и + у меня стрелки, которые проехал ПС, перестают как-либо относиться к маршрутам (т.к. у них меняется идентификатор текущего маршрута на значение "свободная от маршрутов стрелка")
Мне Тимас рассказывал, что таким образом отменяется только одна часть маршрута. Один маршрут - один светофор.
И вообще, они только набираются все вместе, а дальше живут каждый своей жизнью.
Получилась такая ситуация, ехал никого не трогал и на невидимой стрелке съехал и улетел в кувейт с поездом. Маршрут верно приготовлен, впереди зелёный. Что может быть?
У меня такое бывало, когда вместо тифона "Н" случайно попадал на кнопку перевода стрелки "J", иногда можно этого и не заметить даже. Переписал команду с "J" на "Shift+J".