#179 closed улучшение
Таймер перезапуска smarthdcd — at Version 29
Сообщил: | san | Владелец: | san |
---|---|---|---|
Приоритет: | Срочно | Этап разработки: | 1-я очередь |
Ключевые слова: | Копия: | Art_M, alx |
Описание (последним изменил )
Необходимо реализовать "функцию Ватчдога", для избежания ситуаций, когда из-за гипотетических дыр в алгоритме привод не выполняет свою основную функцию (не ездит туда-сюда), предлагается следующее :
- при переключении в авт. или запуске в авт. запускается таймер на 90 минут.
- по истечению таймера в Журнал и Лог заносятся соответствующие записи, затем либо завершаем smarthdcd либо перезапускаем (что примерно одно и тоже с разницей в 1 мин.)
Таймер сбрасывается в следующих случаях:
- при нахождении в режиме руч. или стоп
- при наличии аварии с "индикацией > 2"
- при изменении состояния ДВ
История изменений (29)
comment:2 by , 5 лет ago
Владелец: | изменён с | на
---|---|
Копия: | added |
Краткое описание: | Добавить в веб интерфейс информацию о том движется ли привод → Добавить аварию: Привод не движется |
Описание: | изменено (отличие) |
Состояние: | new → assigned |
Переформулировал тело тикета.
Забираю его себе для формулирования критериев аварии. Предлагаю высказаться по теме, причастным)
следующий: 6 comment:3 by , 5 лет ago
Артем считает, что такого быть не должно, чтоб привод не двигался и не известно почему, а если всё таки такая ситуация возникла, то кончено же стоит это отразить в журнале, а затем следует выполнить рестарт смарташдиси, чтобы, так сказать, перевести контроллер из неизвестного застрявшего состояния в известное - начальное.
Условие динамограммы нам не подходит, т.к. при неисправном датчике динамограмма не записывается, но это не значит, что привод бездействует. Над условием следует подумать.
comment:4 by , 5 лет ago
У нас вроде появилась авария на случай "не едет без аварии".
Предлагаю не ресетить smartHDC и тикет закрыть.
comment:6 by , 5 лет ago
Закончили обсуждения пока этим
Replying to andrei:
Над условием следует подумать.
Я жду уточнения условия, после смогу внести в ТЗ новую аварию, номер я уже выбрал :) Авария 2
следующий: 9 comment:8 by , 5 лет ago
Не придумал :(
Может быть Вам ребята какие то решения пришли в голову?
Я не программист, но можно ли повесить ватчдог который смотрит на:
- переключатель в положении "авт"
- красная лампа не горит
- нет сигналов на ЭК и НУ в течение минуты, ну или 10 минут...
то делает рестарт смарташдисиди?
следующий: 27 comment:9 by , 5 лет ago
Replying to Art_M:
Я не программист, но можно ли повесить ватчдог который смотрит на:
- переключатель в положении "авт"
- красная лампа не горит
- нет сигналов на ЭК и НУ в течение минуты, ну или 10 минут...
то делает рестарт смарташдисиди?
Я хоть и не программист, но могу ответить, что это сделать можно.
comment:10 by , 5 лет ago
По прежнему предлагаю не рестартовать основной процесс в любом непонятном случае, а выдать аварию. Иначе мы рискуем получить кучу дыр, запрятанных под ковёр.
comment:11 by , 5 лет ago
Вопрос лишь в условии
Вот что предложил Артём:
Авария 2. Привод не движется.
Условие: (переключатель в положении "авт")И(нет аварий с Индикацией>2)И(команды на включение ЭК и НУ не отправлялись в течении 10 минут)
Сообщение: Привод не движется.
Индикация: №2 ?
Действия: нет.
Условие снятия: (Переключатель не в АВТ) или (включение НУ) или (включение ЭК).
Действие при снятии: нет
comment:12 by , 5 лет ago
Время 10 минут с потолка?
Станция "официально" может стоять только в ВМТ и НМТ, время стояния в них контроллеру известны. Предлагаю время в условии сделать >= ((время ВМТ) и (время НМТ)) + 10с.
10 сек, чтобы гарантированно отсеять всякие задержки, таймауты и пр., но и не затягивать с аварийным сообщением.
comment:13 by , 5 лет ago
Ну вот не успел)) Андрей раньше
Думаю что выбор времени "10 минут" не корректен, т.к. привод имеет право стоять в ВМТ и НМТ в зависимости от настроек до 100 секунд. Поэтому вариант Андрея правильнее.
(время между выключением НУ и включением ЭК > времени задержки в ВМТ) или (время между выключением ЭК и включением НУ > времени задержки в НМТ)
comment:14 by , 5 лет ago
Хотел предложить подобное
Предлагаю время в условии сделать >= ((время ВМТ) и (время НМТ)) + 10с.
А теперь вопрос: время чего? что в левой части формулы?
comment:16 by , 5 лет ago
время невключенного состояния ЭД
Тогда при потере связи с ЧРП, мы не считаем частоту и будем считать что привод стоит.
следующий: 18 comment:17 by , 5 лет ago
Я не ссылался на частоту, я ссылался на включенное состояние))
Переформулирую:
Время (не подаётся команда на включение ЭД) и (не подаётся команда на включение ЭК)
comment:18 by , 5 лет ago
Replying to andrei:
(не подаётся команда на включение ЭД) и (не подаётся команда на включение ЭК)
А что ты подразумеваешь под подачей команды, например, на включение ЭК - включение соответствующего реле или включенное состоняие соответствующего реле? Аналогично, что подразумевается под подачей команды на включение ЭД - запуск остановленного ранее ЭД или каждая запись командного слова (даже если оно не изменялось)?
следующий: 20 comment:19 by , 5 лет ago
не подаётся команда
В такой формулировке тоже есть дыра: подали команду на ЭК затем едем 600 секунд(максимальное время движения вниз по настройкам), встали в НМТ и тут твой таймер сработает.
comment:20 by , 5 лет ago
Replying to alx:
Replying to andrei:
(не подаётся команда на включение ЭД) и (не подаётся команда на включение ЭК)
А что ты подразумеваешь под подачей команды, например, на включение ЭК - включение соответствующего реле или включенное состоняие соответствующего реле? Аналогично, что подразумевается под подачей команды на включение ЭД - запуск остановленного ранее ЭД или каждая запись командного слова (даже если оно не изменялось)?
Включенное состояние - состояние между включением и выключением. Т.е. начинаем отсчет с времени когда перестали подавать команду вкл.
При управлении по модбас предлагаю эту аварию не детектировать, оно само по себе уже авария.
Replying to san:
не подаётся команда
В такой формулировке тоже есть дыра: подали команду на ЭК затем едем 600 секунд(максимальное время движения вниз по настройкам), встали в НМТ и тут твой таймер сработает.
Так команду не ПОДАЛИ, а ПОДАЁМ. Иначе клапан откроется и снова закроется -> привод стоит -> сабж.
comment:21 by , 5 лет ago
При управлении по модбас предлагаю эту аварию не детектировать
Ну началось...
comment:23 by , 5 лет ago
По поводу времени я не настаивал я лишь предположил диапазон от 1 до 10 минут. Чем меньше, естественно, тем лучше. Если это будет 10 секунд, так вообще замечательно, главное все учесть... что бы не получилось, что привод чуть призадумался на каком нибудь этапе 20 аварии и тут же на тебе новая авария.
На рестарте смарташдисиди я тоже не настаиваю, я просто предложил это как самы простой способ выйти из непонятного положения. Мы шли-шли по алгоритму и попали в тупик, как из него выйти, самое простое - начать заново. Тут же смысл не в том, чтобы найти выход из лабиринта попасть в какую то определенную точку, а в том что бы не допустить остановку. Нефтянику и, как следствие, нам важно, чтобы привод все время двигался и добывал нефть не смотря ни на что, а не стоял демонстрируя дыры во всей красе. А о дырах мы и сами из логов узнаем, авария же будет отражена, а после отражения аварии в логе рестарт смарташдисиди.
Если есть другой вариант, то предлагайте, меня устроит даже просто начать со стартового хода, без ресета смарташдисиди.
comment:24 by , 5 лет ago
вариант предложен - ничего не делать при аварии
Смысл добавления аварии - проинформировать что что-то пошло не так.
comment:25 by , 5 лет ago
Ничего не делать тоже плохо, раз у нас возникают непонятные ситуации.
Как делать вроде более-менее понятно? Раз Артем не настаивает и не уверен, то делаем хорошо))
comment:26 by , 5 лет ago
Так на чем порешили то? Ну попали мы в такую дырку, аварию зафиксировали, а дальше то что?
Вариант "ничего не делать при аварии", означает продолжать стоять и отображать аварию? Так это не комильфо - ну получим мы такую аварию и у нас же за нее и спросят. А если после фиксации аварии мы ее сами и сбросим, то:
вариант 1 - никто ничего не заметит;
вариант 2 - кто-то заметит, и задаст вопрос, что это, а мы сразу и ответим, что это результат работы самодиагностики... типа сам за собой заметил что приуныл и сам себе же пендаля и дал...
Ну и третий вариант, создаем уставку, что делать при возникновении такой аварии... По умолчанию - остановить, а если кого то достанет останавливающийся без причины привод, а причину будет подловить сложно (привод далеко, связи с ним нет, заниматься некому и т.д.), то всегда можно выбрать уставку "выполнять рестарт смарташдисиди", ну или "начинать со стартового хода" и привод будет продолжать работать...
comment:27 by , 5 лет ago
Replying to alx:
Replying to Art_M:
Я не программист, но можно ли повесить ватчдог который смотрит на:
- переключатель в положении "авт"
- красная лампа не горит
- нет сигналов на ЭК и НУ в течение минуты, ну или 10 минут...
то делает рестарт смарташдисиди?
Я хоть и не программист, но могу ответить, что это сделать можно.
Итак, не смотря на то что Артем предложил, а Алексей сообщил, что сделать можно, на совещании все же выясняется, что не всех это решение устраивает.
Поэтому ватчдог теперь должен смотреть на
- переключатель в положении "авт"
- красная лампа не горит
- нет изменения сигналов от верхнего датчика на протяжении N-ого времени.
Время N выбираем исходя из следующих диапазонов уставок:
- Диапазон ЧК=0,2-10мин-1, т.е. максимальное время цикла может быть 5минут
- Максимальное время хода вниз 0,1-600сек, т.е. максимальное время цикла может быть штатно продлено еще на 10 минут.
- Максимальное время хода вверх 0,1-600сек, т.е. продление цикла еще на 10 минут.А при учете, что при неисправности НУ привод дергает клапаны и повторяет попытки хода вверх, то нужно 5 таких промежутка времени, т.к. цикл может быть "условно штатно" продлен на 50 минут, плюс подергивания то пусть 55 минут!
- Время задержки НМТ 0.0... 100.0, т.е. продление цикла еще почти на 2 минуты
- Время задержки ВМТ 0.0... 100.0, поидее в процессе не должно участвовать, но на всякий случай добавим продление цикла еще почти на 2 минуты.
- Максимальное время сработанного состояния датчика положения 10-300сек, т.к. отсчет хода в каком либо направлении начинается от отпускания датчика, то, если я не ошибаюсь, то его тоже нужно учесть, хотя бы один раз, но можно и два, т.е. продление цикла еще на 10 минут
Те задержки, которые мы не учитываем:
- Периодичность сброса питания датчиков при ошибках не участвует, т.к. если это ошибка верхнего датчика, то привод должен стоять с красной лампой, а если ошибка датчика давления, то привод должен двигаться согласно циклу.
- Задержка между АПВ не участвует, т.к. если АПВ обоих моторов, то привод должен стоять с красной лампой, а если одного, то привод двигается согласно циклу.
- Время простоя при перегреве не участвует, т.к. при этом должна гореть красная лампа.
- Останов по ЭКМ тоже не учитывается, т.к. при этом должна гореть красная лампа.
Итого: 84минуты! Соответственно, для гарантированного непопадания в этот промежуток времени выбираем большее значение к примеру 90минут. Значение, конечно же, большое! Существенно больше чем 10 минут, предполагаемых для предыдущего способа реализации. Конечно же можно это значение сделать зависимым от перечисленных уставок и плюс 5 минут, но, скорее всего, это будет сложно и не нужно.. В общем будем довольствоваться тем, что есть - 90минут до сброса смарташдисиди, это лучше, чем получать "болты" за простои... Будем рассчитывать, что это крайне маловероятное событие.
Не забываем отразить в логе эту ошибку!
Кто что может добавить? Выслушиваю возражения и предложения?
comment:28 by , 5 лет ago
У меня возражений нет, вроде итак все несколько раз обсудили.
В АВТ делаем перезапуск программы через 90 минут после последнего изменения состояния ДВ, если не горит красная лампа.
comment:29 by , 5 лет ago
Краткое описание: | Добавить аварию: Привод не движется → Таймер перезапуска smarthdcd |
---|---|
Описание: | изменено (отличие) |
Ну вот, раз без меня итог никто не подводит...
Итог:
Реализуем функцию Ватчдога:
- при переключении в авт. или запуске в авт. запускается таймер на 90 минут.
- по истечению таймера в Журнал и Лог заносятся соответствующие записи, затем либо завершаем smarthdcd либо перезапускаем (что примерно одно и тоже с разницей в 1 мин.)
Таймер сбрасывается в следующих случаях:
- при нахождении в режиме руч. или стоп
- при наличии аварии с "индикацией > 2"
- при изменении состояния ДВ
Внёс изменения в задании в тело тикета, всё правильно?
Возражаю. Все хорошо - это когда нет аварий.
Для тех состояний когда привод не желает ехать и нет явных аварий создать новую аварию.
Авария 28. Привод не движется по неизвестной причине.
Условие возникновения: (переключатель в АВТ) и (отсутствие аварий, останавливающих привод) и ((время между выключением ЭД и включением ЭК > времени задержки в ВМТ) или (время между выключением ЭК и включением ЭД > времени задержки в НМТ)).
Сообщение:
Индикация:
Действие при возникновении: Нет.
Условие снятия: (Переключатель не в АВТ) или (включение ЭД) или (включение ЭК).
Действие при снятии: Нет (продолжать работать по алгоритму).
P.S.: ЭД и ЭК в данном случае - любые.
Не снимаю аварию при появлении других аварий чтобы понимать что, например, не доехали до датчика не из-за проблем со скважиной, а из-за особенностей алгоритма.
Артем, какую индикацию добавить для описанной ситуации?