28.08.2009, 13:08 | #1 |
Матёрый пользователь
|
Выстраивание правил в настройках сессии. Косяк не детский!
Всем привет!.. Долго думал, как объяснить мою ситуацию и подумал, что лучшим способом будет нарисовать блок схему здесь. Итак, это в настройках сессии, правила. Используется правило 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! И ещё более того, в процессе теста, я сделал такую конструкцию: CheckTrackside Trigger1; ..Тест = Тест + 1; ..CheckTrackside Trigger2; ....Var1 = Var1+1; ....Тест1 = Тест1 + 1; Все переменные увеличиваются на 1 после проследования Нечетным поездом Trigger2! Во кино!!! Повторяю, Нечетный сначала наезжает на Trigger2? а потом на Trigger1! Всё бы ничего, если бы и на уменьшение была бы такая же картина, я бы плюнул и подумал бы, что такая конструкция в TRS2006 не работает в принципе, или я сам накосячил. Так нет же! Там работает как надо, а тут горбатого лепит к стенке. Мож кто-нить чё подскажет, а? |
01.01.2007, 12:00 | |
Яndex
Спонсор
Регистрация: 01.01.2007
Сообщения: 500
Реклама показывается изредка по случайному принципу |
РЕКЛАМА
|
28.08.2009, 14:05 | #2 |
Матёрый пользователь
|
Я бы предложил не городить схемы с последовательным проследованием триггеров, а дал бы четным поездам одних машинистов, а нечетным - других.
|
28.08.2009, 14:24 | #3 |
Матёрый пользователь
|
Отрапортовать баг в Ауран!
__________________
Мышцу потянул, купил в аптеке мазь.. Каждый раз когда читаю название "Вольтарен Эмульгель" мне кажется, что если произнести его громко и с правильной интонацией, то можно кастануть файрболл.. |
28.08.2009, 14:24 | #4 |
Матёрый пользователь
|
genesis, И? Ты имеешь ввду дальше использовать что? z7 DSP Rule?
(это был первый вариант вопроса). А вот второй: Так у меня он сейчас четный, а обратно будет ехать - уже нечётный. Damien Zhar, да погодь пока. Я ещё на 100% не уверен, что это не баг пользователя... Последний раз редактировалось NickLon; 28.08.2009 в 14:28. |
28.08.2009, 16:26 | #5 |
Матёрый пользователь
|
|
28.08.2009, 17:16 | #6 | |
Матёрый пользователь
|
Цитата:
А по поводу замены поездов - гы, ты ещё не знаешь, мою схему перевозки угля. Машинисты даже не знают имени вагона, когда цепляются к груженному составу после маневрового, который их на шахте загрузил. И также и на разгрузке. Откуда я узнаю, какой именно лок в данный момент подошёл к грежёному составу, и наоборот. Не, это явно не взлетит! А по поводу этой проблемы. Уже второй день бьюсь и прихожу к выводу, что именно + глючит. - он не трогает, а + - в обе стороны. Явный глюк движка. буду тогда придумывать что-нибудь другое. Без этих переменных. |
|
29.08.2009, 20:50 | #7 | ||
Матёрый пользователь
|
Цитата:
Цитата:
Это не глюк движка, а глюк правила. Скорее всего переменная имеет только неотрицательные значения, потому и - работает. |
||
31.08.2009, 11:27 | #8 | ||
Матёрый пользователь
|
[QUOTE=genesis;109636]Разные машинисты!
[/QOUTE] В правиле CheckTrackmark можно указать, для какого ПС оно будет срабатывать, а вовсе не машиниста! Цитата:
не понимаю? Давай разберём блок-схему такой ситуации. Состав груженый углем пришёл на станцию разгрузки, от дал отцеп маневровому под разгрузку, а магистральный лок встал в тупик для ожидания дальнейших команд. И вот под згарузку, на противоположной стороне маршрута триггер прошёл магистральный локомотив, только что отцепившийся от порожняка. Дальнейшие команды? 1) оба локомотива заняты. Это, правда, не очень то и большая проблема. Можно "уволить" машинистов на маневровых и сажать туда тех, кто только что был на магистральном. Но простои магистральных будут ещё те. Можно, конечно, где-нить в депо поставить локомотив-посредник; 2) и самое главное. Как я определю какой именно локомотив только что прошёл триггер? Ведь в команде Move to train нужно указать конкретный лок! Хотя, по-моему, есть правило MoveToTrainAtTrackMarkList. Хотя по-моему это уже гемор. Не стоит "не искать лёгких путей". Итак список правил перегружен настолько, что даже при 12-15 fps всё равно показывает диафильмы! Цитата:
Резюме: как я понял, решения этого вопроса в том виде, в котором уже всё создано не существует. Ну что ж, "будем искать, такого же, но без крыльев" (с) Спасибо всем, кто отклинулся. P.S. Это, конечно, не значит, что вопрос закрыт. Решения то как не было, так и нет. Просто нужно двигаться дальше, а то уже три дня, как остановилась разработка. Скорее всего, откажусь я от этих правил (пока по крайней мере) и пущу составы по тем путям на станциях, которые они себе сами соберут. |
||
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|
Что это? |