Показать сообщение отдельно
Старый 28.08.2009, 13:08   #1
NickLon
Матёрый пользователь
 
Регистрация: 27.03.2008
Адрес: Мск
Сообщений: 603
Вы сказали Спасибо: 9
Поблагодарили 7 раз(а) в 6 сообщениях
NickLon стоит на развилке (репутация по умолчанию)
Отправить сообщение для NickLon с помощью ICQ
По умолчанию Выстраивание правил в настройках сессии. Косяк не детский!

Всем привет!.. Долго думал, как объяснить мою ситуацию и подумал, что лучшим способом будет нарисовать блок схему здесь. Итак, это в настройках сессии, правила. Используется правило 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 не работает в принципе, или я сам накосячил. Так нет же! Там работает как надо, а тут горбатого лепит к стенке.
Мож кто-нить чё подскажет, а?
NickLon вне форума   Ответить с цитированием
Старый 01.01.2007, 12:00  
Яndex
Спонсор
 
 
Регистрация: 01.01.2007
Сообщения: 500


Реклама показывается изредка по случайному принципу
По умолчанию РЕКЛАМА