![]() |
Выстраивание правил в настройках сессии. Косяк не детский!
Всем привет!.. Долго думал, как объяснить мою ситуацию и подумал, что лучшим способом будет нарисовать блок схему здесь. Итак, это в настройках сессии, правила. Используется правило ChekTrackside. Страбатыват по триггерам. (для наглядности в одну ступень ставлю две точки; в ТРС - одна ступень). Четное направление.
CheckTrackside Trigger1; ..CheckTrackside Trigger2; ....Var1 = Var1+1; // до сей поры фиксируется факт для возможного встречного, что перегон занят CheckTrackside Trigger3; ..CheckTrackside Trigger4; ....Var1 = Var1-1; //здесь, перед тем, как поезду зайти на станцию прибытия, освобождается перегон ....If Var2 > 0 Then ......сборка прибытия на один из боковых; ....If Var2 = 0 Then ......сборка прибытия на любой, включая главный первым; //Var2 - это переменная встречной, нечетной схемы. Так вот, поезд выходит со станции1 на станцию2 в четном направлении, Четный поезд. Проходит Trigger1 и Trigger2, срабатывает правило и переменная Var1 принимает значение 1. Потом он проходит перед станцией2 Trigger3 и Trigger4, срабатывает правило и переменная Var1 принимает значение 0. В то время, когда он вышел со станции1, со станции3 на станцию2 в нечетном направлении тоже вышел поезд, Нечетный. Нечетный позже прибывает на станцию, следовательно Четный заходит на боковой и ждёт проследования по главному Нечетного. Нечетный проходит станцию, дальше начинает в обратном порядке проходить четные триггеры. Правила не должны срабатывать и переменная Var1 не должна меняться. В первом случае, когда Нечетный проходит сначала Trigger4 потом Trigger3 переменная Var1 не меняется. А вот во втором случае, когда он проходит сначала Trigger2, а потом Trigger3 переменная Var1... увеличивается на 1.:( Более того, уже как и на что я эту схему не тестировал и выяснил, что увеличение переменной Var1, когда это делать не надо, происходит в момент, когда поезд проезжает Trigger2!:eek: И ещё более того, в процессе теста, я сделал такую конструкцию: CheckTrackside Trigger1; ..Тест = Тест + 1; ..CheckTrackside Trigger2; ....Var1 = Var1+1; ....Тест1 = Тест1 + 1; Все переменные увеличиваются на 1 после проследования Нечетным поездом Trigger2! Во кино!!! Повторяю, Нечетный сначала наезжает на Trigger2? а потом на Trigger1! Всё бы ничего, если бы и на уменьшение была бы такая же картина, я бы плюнул и подумал бы, что такая конструкция в TRS2006 не работает в принципе, или я сам накосячил. Так нет же! Там работает как надо, а тут горбатого лепит к стенке. Мож кто-нить чё подскажет, а?:o |
Я бы предложил не городить схемы с последовательным проследованием триггеров, а дал бы четным поездам одних машинистов, а нечетным - других.
|
Отрапортовать баг в Ауран!
|
genesis, И? Ты имеешь ввду дальше использовать что? z7 DSP Rule?
(это был первый вариант вопроса). А вот второй: Так у меня он сейчас четный, а обратно будет ехать - уже нечётный. Damien Zhar, да погодь пока. Я ещё на 100% не уверен, что это не баг пользователя...:confused: |
[QUOTE=NickLon;109301]genesis, И? Ты имеешь ввду дальше использовать что? z7 DSP Rule?[/QUOTE]
Можно и твою схему с одним триггером. [QUOTE=NickLon;109301]Так у меня он сейчас четный, а обратно будет ехать - уже нечётный.[/QUOTE] И что, пусть меняют поезда тогда. |
[QUOTE=genesis;109319]Можно и твою схему с одним триггером.
И что, пусть меняют поезда тогда.[/QUOTE] Ну с одним триггером не получится. Там же нужно указать направление, что вот именно в четном направлении он едет, тогда меняем чётную переменную. А если один триггер, он и туда и сюда будет её менять. А по поводу замены поездов - гы, ты ещё не знаешь, мою схему перевозки угля. Машинисты даже не знают имени вагона, когда цепляются к груженному составу после маневрового, который их на шахте загрузил. И также и на разгрузке. Откуда я узнаю, какой именно лок в данный момент подошёл к грежёному составу, и наоборот. Не, это явно не взлетит! А по поводу этой проблемы. Уже второй день бьюсь и прихожу к выводу, что именно + глючит. - он не трогает, а + - в обе стороны. Явный глюк движка. буду тогда придумывать что-нибудь другое. Без этих переменных. |
[QUOTE=NickLon;109327]Ну с одним триггером не получится. Там же нужно указать направление, что вот именно в четном направлении он едет, тогда меняем чётную переменную. А если один триггер, он и туда и сюда будет её менять.[/QUOTE]
Разные машинисты! [QUOTE=NickLon;109327]А по поводу замены поездов - гы, ты ещё не знаешь, мою схему перевозки угля. Машинисты даже не знают имени вагона, когда цепляются к груженному составу после маневрового, который их на шахте загрузил. И также и на разгрузке. Откуда я узнаю, какой именно лок в данный момент подошёл к грежёному составу, и наоборот. Не, это явно не взлетит![/QUOTE] Уж маркеры то знаешь? [QUOTE=NickLon;109327]А по поводу этой проблемы. Уже второй день бьюсь и прихожу к выводу, что именно + глючит. - он не трогает, а + - в обе стороны. Явный глюк движка. буду тогда придумывать что-нибудь другое. Без этих переменных.[/QUOTE] Это не глюк движка, а глюк правила. Скорее всего переменная имеет только неотрицательные значения, потому и - работает. |
[QUOTE=genesis;109636]Разные машинисты!
[/QOUTE] В правиле CheckTrackmark можно указать, для какого ПС оно будет срабатывать, а вовсе не машиниста! [QUOTE] Уж маркеры то знаешь? [/QUOTE] Знаю, конечно. Но как ты себе это представляешь, может быть я чего-то не понимаю? Давай разберём блок-схему такой ситуации. Состав груженый углем пришёл на станцию разгрузки, от дал отцеп маневровому под разгрузку, а магистральный лок встал в тупик для ожидания дальнейших команд. И вот под згарузку, на противоположной стороне маршрута триггер прошёл магистральный локомотив, только что отцепившийся от порожняка. Дальнейшие команды? 1) оба локомотива заняты. Это, правда, не очень то и большая проблема. Можно "уволить" машинистов на маневровых и сажать туда тех, кто только что был на магистральном. Но простои магистральных будут ещё те. Можно, конечно, где-нить в депо поставить локомотив-посредник; 2) и самое главное. Как я определю какой именно локомотив только что прошёл триггер? Ведь в команде Move to train нужно указать конкретный лок! Хотя, по-моему, есть правило MoveToTrainAtTrackMarkList. Хотя по-моему это уже гемор. Не стоит "не искать лёгких путей". Итак список правил перегружен настолько, что даже при 12-15 fps всё равно показывает диафильмы! [QUOTE] Это не глюк движка, а глюк правила. Скорее всего переменная имеет только неотрицательные значения, потому и - работает.[/QUOTE] Ну, хрен редьки не слаще. А переменная может принимать любые значения. Эта мысль меня тоже посещала. И есть состав идёт по правилу, как задумано изначально, только вместо + ставил - переменная принимала и отрицательное значение. Резюме: как я понял, решения этого вопроса в том виде, в котором уже всё создано не существует. Ну что ж, "будем искать, такого же, но без крыльев" (с):) Спасибо всем, кто отклинулся. P.S. Это, конечно, не значит, что вопрос закрыт. Решения то как не было, так и нет. Просто нужно двигаться дальше, а то уже три дня, как остановилась разработка. Скорее всего, откажусь я от этих правил (пока по крайней мере) и пущу составы по тем путям на станциях, которые они себе сами соберут. |
Текущее время: 03:24. Часовой пояс GMT +4. |
Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
© 2001-2019, Администраторы и разработчики Клуба Trainsim