Форум Trainsim

Форум Trainsim (http://www.trainsim.ru/forum/index.php)
-   TrainZ - Маршруты и сценарии (http://www.trainsim.ru/forum/forumdisplay.php?f=24)
-   -   Система маршрутизации z7-xPath (Система расчёта поездных маршрутов стрелочная будка) (http://www.trainsim.ru/forum/showthread.php?t=11836)

NickLon 02.11.2010 16:46

TRam, я проверил тот самый злополучный "... или по главному(0)" Увы, ничего он не злополучный. Поменял приоритеты на той трехпутной станции от 1 до 3-х в обоих направлениях, и задавал сборку маршрута с приоритетом от 1 до 3х. Один фиг, когда на главный собран маршрут, и на нем ещё нет поезда (стрелки противоположные заняты), то с противоположной стороны состав не понимает, что главный (1-й в данном случае приоритет) уже занят. То есть, вообще разъезд невозможен :(

TRam_ 02.11.2010 17:04

[QUOTE]Один фиг, когда на главный собран маршрут, и на нем ещё нет поезда (стрелки противоположные заняты), то с противоположной стороны состав не понимает, что главный (1-й в данном случае приоритет) уже занят.[/QUOTE] перепроверю...

[QUOTE]То есть, вообще разъезд невозможен[/QUOTE]безостановочный разъезд невозможен. С остановками багов нету.

[QUOTE]TRam, а как влияет на маневровую работу xpath наличие соседней станции?[/QUOTE]положительно. Если между станциями нет проходных светофоров, то система при расчёте манёвров считает считает эти станции парками одной станции (иначе сделать работу многопарковой станции сложно). При этом если имеется 3 таких последовательных станции, то до третьей ничего построить нельзя.


[QUOTE]При задании маневрового маршрута от Ч4 за М3 генерируется маршрут за М1. Чего только не делал, и леверы стрелок двигал, а маневровые на большее расстояние отодвигал, не хочет маршрут идти за М3[/QUOTE] более чем уверен, что у тебя собрался маршрут до М1 следующей станции (можешь проверить по положениям стрелок)

[QUOTE]и всё равно маршруты от светофора Ч2 не просчитываются[/QUOTE]решение - один из леверов стрелок оказался перед точкой стрелки

[QUOTE]там тоже всё просчитывалось только до входного светофора следующей станции.[/QUOTE]в случае, если пропускается светофор, перед ним надо поставить триггер.


[QUOTE]И чтобы они обгоняли друг друга в нужных приоритетах, то это вообще долбануться можно.[/QUOTE]пассажирские и МВПС ходят по расписанию (иначе никто на них ездить не будет). А грузовые... Так что в простейшем случае у нас есть 2 типа поездов - "с расписанием" (приоритет 1) и без расписания (приоритет 2). Организовать обработку первых и вторых я могу, а вот сделать что-то большее - вряд-ли...

TCH39 02.11.2010 17:52

[QUOTE=TRam_;214563]положительно. Если между станциями нет проходных светофоров, то система при расчёте манёвров считает считает эти станции парками одной станции (иначе сделать работу многопарковой станции сложно).[/QUOTE]

То есть, решением проблемы может быть постановка pab repeter'ов, и создание перегона без проходных? Если, конечно, не предусмотренна маневровая работа между парками (станциями).:)

[QUOTE=TRam_;214563] более чем уверен, что у тебя собрался маршрут до М1 следующей станции (можешь проверить по положениям стрелок[/QUOTE]

Иногда да, но в некоторых случаях до того который мне нужен, но только через др. станцию. Просто у меня они так сделаны, что из-за соединительных ветвей есть возможность "закольцевать" маршрут.

NickLon 02.11.2010 18:25

[QUOTE=TRam_;214563]перепроверю...
безостановочный разъезд невозможен. С остановками багов нету.
[/QUOTE]
Ещё раз обращаю твое внимание, что речь идет о том, когда два поезда [b]одновременно с разных сторон станции[/b] пытаются собрать себе входной маршрут!!! О каком остановочном разъезде может идти речь, когда первый поезд собрал себе входной маршрут, [b]но ещё не заехал на станцию[/b] (стрелки перед ним заняты для него!),а второй поезд, встречный, собирает уже себе входной маршрут!? Хоть остановочный, хоть безостановочный, но в этой ситуации не собирается правильно даже входной маршрут для второго поезда! (см. скрин). Да, если один поезд собрал себе вход, и до того, как встречный пытается [b]себе[/b] собрать вход, уже прибыл на станцию, то запросто разъезжаются хоть остановочно, хоть безостановочно!
P.S. Подумал, что станция глючная, ну, там маршруты не посчитались правильно etc. На двух других - та же картина!

DonCapone 02.11.2010 18:27

[QUOTE]пассажирские и МВПС ходят по расписанию (иначе никто на них ездить не будет).[/QUOTE]
Тут не всё так просто. Я просто решил сделать траффик электричек по реальнмоу расписанию, так вот там есть обычные электрички, а есть экспрессы, которые за время следования обгоняют несколько обычных электричек. Также и с пассажирскими поездами.
[QUOTE]Организовать обработку первых и вторых я могу, а вот сделать что-то большее - вряд-ли...[/QUOTE]
Ну тебе не надо разбивать их по приоритетам, главное сделать, чтобы поезд А можно было ставить под обгон поезда Б, и было бы неплохо чтобы можно было задать тип локомотива, как, например, в trigger check.

TRam_ 02.11.2010 19:48

[QUOTE]до того который мне нужен, но только через др. станцию.[/QUOTE]в этом случае решение следующее - относишь М1 и М3 к отдельному станционному контроллеру. В этом случае можно будет строить маршруты до них, но нельзя будет строить маршруты через них до следующей станции.

[QUOTE]Ещё раз обращаю твое внимание, что речь идет о том, когда два поезда одновременно с разных сторон станции пытаются собрать себе входной маршрут!!![/QUOTE]проверю. Если пойму, в чём дело, отпишусь.

varz 02.11.2010 19:55

Tram_, [QUOTE]а зачем их использовать, если можно Sniff на них вешать?

Вот если можно было бы сказать светофору "слыш, тут лок третьего(второго) приоритета подъехал... Ты его не видишь, но перед ним тебя открыть надо" - вот тогда бы я бы прыгал от счастья...[/QUOTE]

ну хотя бы, чтобы sniff вешать... больше идеи никакие не приходят? (прочти еще раз свой пост)

NickLon, [QUOTE]А разве "следовать к красному с подтяжкой в 8 метров" не использует именно возможность проверки "заступа"? Хотя нет, так как раз, наверное, просто расстояние до светофора берется. Ну, думаю это весьма полезная новость. А есть только заступ/отступ? Это перед светофором, а заезд за зону светофора? То есть оказаться сначала в зоне, а потом выйти из неё, есть такое?[/QUOTE]
как раз это и есть...

[QUOTE][QUOTE]И ещё, хорошо бы было, если бы не до Trigger хххххх а до, М21 например.[/QUOTE]
Остальное попробую довести.[/QUOTE]
что мешает использовать имена светофоров без разыменования класса?
там все просто, Александр спецификации уже давно выложил...

TCH39 02.11.2010 19:55

[QUOTE=TRam_;214601]в этом случае решение следующее - относишь М1 и М3 к отдельному станционному контроллеру. В этом случае можно будет строить маршруты до них, но нельзя будет строить маршруты через них до следующей станции.[/QUOTE]

То есть на обоих станциях необходимо все маневровые отнести к одному контроллеру, а поездные оставить на своих контроллерах?

NickLon 02.11.2010 20:29

[QUOTE=TCH39;214603]То есть на обоих станциях необходимо все маневровые отнести к одному контроллеру, а поездные оставить на своих контроллерах?[/QUOTE]
Я, кстати, и поездные разных парков отнес к одному контроллеру, а то вот xPath не может понять, как мне объяснял TRam, что маршрут можно строить между разными станциями и без входного, ему обязательно нужен перегон между станциями. То бишь, если разные контроллеры (станции) то до входного строим маршрут.

TRam_ 02.11.2010 20:37

[QUOTE]То есть на обоих станциях необходимо все маневровые отнести к одному контроллеру, а поездные оставить на своих контроллерах?[/QUOTE]надо относить маневровые, отделяющие станцию от перегонов.

[QUOTE]когда два поезда одновременно с разных сторон станции пытаются собрать себе входной маршрут!!![/QUOTE]в общем, тут дело обстоит намного веселее, чем я ожидал.

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

НО! После того, как я решил узнать, что там в моём скрипте не так работает, добавил вывод имён стрелок в jetlog, поезда ни с того, ни с сего начали правильно разъезжаться... Я в недоумении... (баг испарился так же быстро как и появился ?)


[QUOTE]что мешает использовать имена светофоров без разыменования класса?[/QUOTE]именами светофоров неудобно пользоваться, когда мы знаем только их количество в соупе, а нам надо показать их все (в различных списках, менюшках и т.п.). Вот я и сделал индексацию светофоров по номерам.

Не, я конечно мог сделать двойную индексацию (и по имени, и по номеру, как сделал для имён станционных контроллеров), но посчитал это лишним.

В результате для поиска светофора по базе надо перебрать все номера светофоров в базе, пока не дойдём до совпадающего имени. Делать это извращение в ПОДПИСИ К КОМАНДЕ, извольте, я делать не буду.

NickLon 02.11.2010 20:47

[QUOTE=TRam_;214614]
добавил вывод имён стрелок в jetlog, поезда ни с того, ни с сего начали правильно разъезжаться... Я в недоумении... (баг испарился так же быстро как и появился ?)[/QUOTE]
А когда ты убрал вывод имен стрелок в jetlog, что потом стало?

TRam_ 02.11.2010 20:54

[QUOTE] все номера светофоров в базе[/QUOTE] все номера светофоров данного станционного контроллера в базе
[QUOTE]А когда ты убрал вывод имен стрелок в jetlog, что потом стало?[/QUOTE]сейчас коммитирую, посмотрим что будет...

TRam_ 02.11.2010 21:10

нет, после убирания поезда всё равно разъезжаются... (типа анекдот - программист кричит "Ошибка, ошибка ! Куда ты подевалась? ")

[QUOTE][QUOTE]И ещё, хорошо бы было, если бы не до Trigger хххххх а до, М21 например.[/QUOTE]что мешает использовать имена светофоров без разыменования класса?[/QUOTE]а, въехал... Совсем забыл, что тут можно применить Router.GetGameObject() . Всюду им пользовался, а тут не просёк :)

TRam_ 02.11.2010 22:17

[QUOTE]Это-то понятно, но можно ли таким способом ставить поезда под обгон автоматом, в зависимости от расстояния до обгоняющего поезда?[/QUOTE]в общем, предлагаемая реализация:

указывается триггер срабатывания
указывается минимальная дистанция между поездами, начиная с которой возможен обгон.
указывается "срабатывать при необходимости обгона" и "срабатывать когда нет необходимости обгона".

Алгоритм - при наезде поезда на триггер определяется расстояние между головным вагоном этого поезда и головным вагоном следующего поезда. Если приоритет наехавшего второй, а не едущего за ним - первый, то будет срабатывать необходимость обгона. В остальных случаях будет срабатывать отсутствие необходимости обгона.

(возможно, будет ссылка "не срабатывать, если поезд первого приоритета")

Применять с дочерней командой shedule at trackmark.

TRam_ 02.11.2010 22:42

[QUOTE]открою страшную тайну (а может и не открою, может все уже знают): светофоры z7 генерят служебные события заступа/отсупа в/из зоны светофора... только чета никто не программит эту фитчу[/QUOTE]

я заметил только сообщения типа


? 0:42.3 : ScriptLog> router message from 0032 '' to 0000 '', message ST_TRAIN.Enter, Н@Сидорово

системе маршрутизации на них ******, так как она завязана на стрелках, а не на светофорах :). В этом вся соль - вначале определяются направление перегонов по алгоритму наподобие

? 0:51.7 : ScriptLog> router message from 0034 'z7-xPath MainBase 1' to 0000 '', message SetSpanDirection, Н@Сидорово
? 0:51.7 : ScriptLog> router message from 0307 'Trigger 170' to 0000 '', message CTRL3, SpanDirectionChanged^Сух-Сид^Н@Сидорово

(предварительно тег privateStateEx через GetProperties() на неравность 1000, иначе, когда 0, переводить перегон не нужно )

затем рассматриваются узлы пересечений линий между светофорами (т.е. стрелки, у которых в базе есть поле "занят маршрутом №*", а все задаваемые маршруты имеют этот самый № (уникальный для всех маршрутов, поездных и маневровых))


Текущее время: 14:42. Часовой пояс GMT +4.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim