Opened 5 лет ago

Closed 5 лет ago

Last modified 5 лет ago

#200 closed улучшение (fixed)

При сбросе аварий ЧРП очищать прочитанные ранее флаги аварий

Сообщил: san Владелец: alx
Приоритет: средний Этап разработки: 1-я очередь
Ключевые слова: Копия: andrei, Art_M

Описание (последним изменил alx)

(Описание изменил alx)

Для уменьшения вероятности возникновения аварий, основанных на устаревших данных (сохраненного в памяти контроллера срдержимого регистров аварий ЧРП) предлагается при выполнении сброса аварий ЧРП очищать сохраненное значение регистра аварий.

История изменений (14)

comment:1 by alx, 5 лет ago

Решение: invalid
Состояние: newclosed

Я проанализировал приведенный журнал. Вот какие события возникали в станции:

  • В 10:20:03 из ЧРП НУ1 прочитан флаг аварии "Перегруз по току" (об этом говорит запись "Авария привода: 1.НУ1A25"). По факту наличия данного флага в регистре аварий формируется уже упомянутая авария "1.НУ1A25" и авария "20.1 Перегруз по току ЧРП НУ1", так как выполнилось условие аварии 20.1. Начали выполнять действия аварии 20.1: запомнена частота, НУ1 помечена как неисправная, запущен таймер АПВ_НУ1.
  • Затем из ЧРП НУ2 также был прочитан флаг аварии "Перегруз по току" (об этом говорит запись "Изменен текст аварии: '1.НУ1A25' -> '1.НУ1A25,НУ2A25'"). В результате выполнилось условие аварии 20.2. По факту выполнения этого условия была сформирована авария "20.2 Перегруз по току ЧРП НУ1 и НУ2. АПВ №0/0". Выполнены действия аварии 20.2: запомнены частоты, остановлен привод, НУ2 помечена как неисправная, запущены таймеры АПВ_НУ1 и АПВ_НУ2. В результате появления аварии 20.2 выполнилось условие снятия аварии 20.1.
  • В 10:31:03 сработал таймер АПВ_НУ<x>. Выполнилось условие снятия аварии 20.2. Начато выполнение действий при снятии аварии 20.2: сняты пометки неисправности НУ1 и НУ2, увеличены счетчики АПВ_НУ1 и АПВ_НУ2, выполнен сброс аварий ЧРП НУ1 и НУ2, установлены минимальные частоты НУ1 и НУ2. Далее ТЗ требует запустить привод. Это невозможно сделать, пока присутствует авария 20.2, поэтому в этот момент авария 20.2 снимается и выполняется запуск привода.
  • В 10:31:04 из ЧРП НУ1 прочитан регистр аварий, в котором флаг "перегруз по току" не установлен (об этом свидетельствует запись "Изменен текст аварии: '1.НУ1A25,НУ2A25' -> '1.НУ2A25'"). В результате выполнилось условие аварии 20.1 и была сформирована авария "20.1 Перегруз по току ЧРП НУ2" с выполнением всех положенных действий.

Таким образом, я не вижу оснований считать аварию 20.1 ложной - в обоих случаях условие аварии было выполнено (имелся флаг аварии "перегруз по току" только одной из двух разрешенных ЧРП).

comment:2 by san, 5 лет ago

Таким образом, я не вижу оснований считать аварию 20.1 ложной

Формально может быть и так, контроллер согласно тз действует, но с точки зрения пользователя это баг - т.к. сброс аварий ЧРП прошёл, а привод детектировал 20.1.
Можно обратить внимание, что авария ЧРП вызвавшая 20.1 была снята в ту-же секунду.

10:31:04 Снятие аварии: 1.НУ2A25

Подозреваю, что после сброса аварий ЧРП, контроллер ещё не опросил аварии ЧРП НУ2, на момент принятия решения, и принял решение об аварии 20.1 основываясь уже на устаревшей информации.
Считаю, что мы должны принять какие-то меры для избежания таких случаев.

in reply to:  2 comment:3 by alx, 5 лет ago

Replying to san:

Подозреваю, что после сброса аварий ЧРП, контроллер ещё не опросил аварии ЧРП НУ2, на момент принятия решения, и принял решение об аварии 20.1 основываясь уже на устаревшей информации.

Вероятно, что так. Но я, во-первых, не вижу особой проблемы даже сточки зрения пользователя: два ЧРП - это два разных устройства, и аварии в них не обязаны возникать и пропадать строго синхронно. Не вижу проблемы в такой последовательности событий:

  • нет аварий ЧРП;
  • авария только ЧРП 1 (здесь имеем аварию 20.1);
  • авария ЧРП 1 и ЧРП 2 (имеем аварию 20.2);
  • авария только ЧРП 2 (опять имеем аварию 20.1);
  • нет аварий.

Во-вторых, аварии ЧРП мы можем получать только методом периодического опроса, поэтому всегда есть вероятность запаздывания реакции на изменение состояния.

Считаю, что мы должны принять какие-то меры для избежания таких случаев.

Предлагай меры.

comment:4 by san, 5 лет ago

два ЧРП - это два разных устройства

Это так, но суть аварии 20.2 в том что оба ЧРП получают аварию одновременно (т.е. причина возникновения аварии у них общая) и решать эту проблему они должны вместе.

Предлагай меры.

Пока в голову приходит что-то вроде искусственной задержки после сброса аварий ЧРП - некоторое время после сброса не детектировать аварии ЧРП.

comment:5 by san, 5 лет ago

решать эту проблему они должны вместе.

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

in reply to:  4 comment:6 by alx, 5 лет ago

Replying to san:

два ЧРП - это два разных устройства

Это так, но суть аварии 20.2 в том что оба ЧРП получают аварию одновременно

Тогда в ТЗ неверно сформулировано условие аварии 20.2 - там нет никакого требования одновременности. Если, например, авария "перегруз по току" сначала возникнет только в ЧРП 1, а через пол-часа возникнет на ЧРП 2, то условие аварии все равно выполнится, хотя никакой одновременности и близко нет...

Предлагай меры.

Пока в голову приходит что-то вроде искусственной задержки после сброса аварий ЧРП - некоторое время после сброса не детектировать аварии ЧРП.

Может быть просто производить сброс аварий ЧРП при возникновении аварии, а не при снятии? Тогда задержка АПВ будет той самой "искусственной задержкой", о которой ты говоришь выше...

comment:7 by alx, 5 лет ago

Еще один вариант - по факту выполнения сброса аварий ЧРП сбрасывать и флаги аварий у себя в памяти (которые были получены при последнем опросе), так как и без нового опроса понятно, что в этот момент аварий там быть не должно. Это, наверное, самый простой вариант, не требующий внесения изменений в ТЗ.

in reply to:  7 ; comment:8 by andrei, 5 лет ago

Replying to alx:

Еще один вариант - по факту выполнения сброса аварий ЧРП сбрасывать и флаги аварий у себя в памяти (которые были получены при последнем опросе), так как и без нового опроса понятно, что в этот момент аварий там быть не должно. Это, наверное, самый простой вариант, не требующий внесения изменений в ТЗ.

А сейчас программа берет информацию из этих флагов, при том что в ЧРП аварии уже нет?

Офтоп: предлагаю всем ознакомиться и высказаться в тикете #201

in reply to:  8 comment:9 by alx, 5 лет ago

Replying to andrei:

А сейчас программа берет информацию из этих флагов, при том что в ЧРП аварии уже нет?

Сейчас программа при анализе наличия аварий ЧРП использует последние полученные от него значения рагистра(ов) аварий.

Офтоп: предлагаю всем ознакомиться и высказаться в тикете #201

Уже. :)

in reply to:  7 comment:10 by san, 5 лет ago

Replying to alx:

Еще один вариант - по факту выполнения сброса аварий ЧРП сбрасывать и флаги аварий у себя в памяти (которые были получены при последнем опросе), так как и без нового опроса понятно, что в этот момент аварий там быть не должно. Это, наверное, самый простой вариант, не требующий внесения изменений в ТЗ.

Согласен с таким вариантом.

comment:11 by alx, 5 лет ago

Краткое описание: При снятии аварии 20.2 ложно регистрируется авария 20.1При сбросе аварий ЧРП очищать прочитанные ранее флаги аварий
Описание: изменено (отличие)
Приоритет: Срочносредний
Решение: invalid
Состояние: closedreopened
Тип: багулучшение

Раз достигнуто согласие, переоткрою тикет.

comment:12 by alx, 5 лет ago

Решение: fixed
Состояние: reopenedclosed

In 742/smartHDC:

При сбросе аварий ЧРП очищаются сохраненные ранее флаги аварий ЧРП. Closes #200.

comment:13 by Art_M, 5 лет ago

Replying to san:

два ЧРП - это два разных устройства

Это так, но суть аварии 20.2 в том что оба ЧРП получают аварию одновременно (т.е. причина возникновения аварии у них общая) и решать эту проблему они должны вместе.

На самом деле задумывалось это не так, как я уже писал ранее в отложенном тикете:
20.1. Привод работает, но на одной из НУ, пока вторая ожидает АПВ.
20.2. Привод не работает, т.к. обе НУ после перегруза ожидают АПВ.
20.3. Не работает и НУ исчерпали все АПВ.

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

Мне видится, что проще и понятнее выходить одномоментно. И если я правильно понял, то в последней прошивке так и сделано, я правильно понял?

Version 0, edited 5 лет ago by Art_M (следующий)

comment:14 by san, 5 лет ago

И так же не принципиально, как мы будем выходить из нее

А не может получиться такая ситуация, что если оба ЧРП будут выходить из аварии по очереди - в результате они установят каждый себе меньшие значения настроек диапазона, чем если бы они синхронно выходили из аварии?

Note: See TracTickets for help on using tickets.