Opened 6 лет ago

Last modified 5 лет ago

#144 assigned улучшение

Существенные недостатки алгоритма в ТЗ и баги связанные с выходом за верхний датчик — at Version 6

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

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

Обнаружены существенные недостатки алгоритма в ТЗ и баги связанные с выходом за верхний датчик...

  1. При включении при сработавшем нижнем датчике сразу осуществляется ход вверх. Это плохо , т.к. в случае залипания нижнего датчика и сбросе питания в ВМТ , которая по инерции находится выше верхнего датчика, мы получим продолжение хода вверх за верхний датчик.
  2. При продолжительном срабатывании верхнего датчика и отсутствии привод выполняет разворот и ход наверх несмотря на сработавший верхний датчик и далее за верхний датчик.
  3. При сработавшем верхнем датчике и срабатывании нижнего датчика привод начинает и продолжает ход за верхний датчик.
  4. Уставка продолжительности сработанного состояния датчиков нас не спасает ни от чего,
    1. если установить значение слишком большим, то раньше наступит одновременное срабатывание, либо упор при забеге еще выше.
    2. если установить значение слишком маленьким, то при отсутствии разрешение на работу в аварийном режиме нижнего датчика мы получим остановку по продолжительному срабатыванию нижнего датчика, привод не успеет перебрать насосные установки если вдруг он стартует с неисправной! и можем быть введены в заблуждение, т.к. вместо перебора и подключения исправной НУ мы получим стоп по долгому срабатыванию нижнего датчика...

Поэтому требуются капитальные изменения в алгоритме!

Предлагается алгоритм работы сделать следующим образом:

  1. Задать программное ограничивающее условие: запретить движение вверх при сработавшем верхнем датчике при любых условиях.

2.При одновременном срабатываний датчиков при ошибке 11.1 отображать в сообщении
"11.1 Одновременное срабатывание датчиков. ДН>ДВ" если при сработавшем нижнем при ходе вверх сработал и верхний (для различия можно задать 11.3)
"11.1 Одновременное срабатывание датчиков. ДВ>ДН" если при сработавшем верхнем при ходе вниз сработал и нижний (для различия можно задать 11.4)

  1. А далее

если ДВ>ДН - то ждем ДВ=0 с отображением "11.1(4) Одновременное срабатывание датчиков. ДВ>ДН"
если ДН>ДВ в зависимости от уставки времени хода вниз при неисправности нижнего датчика, ждем

либо ДН=0 с отображением "11.1(3) Одновременное срабатывание датчиков. ДН>ДВ"
либо "10.2 Игнорирование превышения времени сработанного ДН" и работаем в аварийном режиме с условием разворота по времени хода вниз.

  1. Стартовый ход выполнять в соответствии со следующим состоянием датчиком после включения контроллера

1)ДВ=0 и ДН=0

двигаемся вниз до изменения состояния датчика ДН=0 => ДН=1.
или в течение максимального времени хода вниз (если состояние не меняется), затем разворот и ход вверх (только если ДВ=0, см.п.1)

2)ДВ=0 и ДН=1

двигаемся вниз до изменения состояния датчика ДН=1 => ДН=0
или в течение максимального времени хода вниз (если состояние не меняется) , затем разворот и ход вверх (только если ДВ=0, см.п.1)

3) ДВ=1 и ДН=0

двигаемся вниз

до изменения состояния датчика ДН=0 => ДН=1 и

получаем либо аварию одновременного срабатывания при ДВ>ДН, либо если в течение хода вниз ДВ=1 => ДВ=0, то штатную работу

или в течение максимального времени хода вниз (если состояние не меняется, т.е. сохраняется ДВ=1),

после чего выполнить процедуру расклинивания клапанов
повторно выполнить ход вниз на том же клапане
процедуру расклинивания клапанов
выполнить ход вниз на противоположном клапане,
процедуру расклинивания клапанов
выполнить ход вниз на обоих клапанах
если состояние не изменяется в течение всего времени с момента запуска находилось в состоянии ДВ=1 и ДН=0, то привод остановить и отобразить "7. Превышение времени сработавшего верхнего датчика", ожидать ДВ=0

4) ДВ=1 и ДН=1

в зависимости от уставки времени хода при неисправности нижнего датчика:

если уставка = 0, то отображаем "11.1 Одновременное срабатывание датчиков." привод стоит и ожидает переход любого из датчиков в несработавшее состояние, после чего действует согласно 2) или 3) (ну или 1), что маловероятно, но дырку надо закрыть)

если уставка >0, то двигаемся вниз до

в течение максимального времени хода вниз
если состояние не меняется, т.е. сохраняется ДВ=1, то

выполнить процедуру расклинивания клапанов
повторно выполнить ход вниз на том же клапане, ожидая ДВ=0
процедуру расклинивания клапанов
выполнить ход вниз на противоположном клапане, ожидая ДВ=0
процедуру расклинивания клапанов
выполнить ход вниз на обоих клапанах, ожидая ДВ=0
если состояние не изменяется (ДВ=1 и ДН=1), то привод остановить и отобразить две ошибки "7. Превышение времени сработавшего верхнего датчика" и
10.2 Игнорирование превышения времени сработанного ДН", ожидать ДВ=0, после чего продолжить работу в аварийном режиме с отображением "10.2 Игнорирование превышения времени сработанного ДН", до перехода ДН=0

У нас удаляются (а лучше чтобы вспоминать пусть пока закомментируются,) в ТЗ авария 10.1 "Превышение времени сработанного ДН" (авария 10.2 можно перевести в 10.1 или просто в 10), авария 11.2 Игнорирование одновременного срабатывания датчиков, уставка "максимального времени срабатывания датчиков"
Условие функции "Время хода вниз при неисправном нижнем датчике" время отсчитывается от перехода ДВ в несработавшее состояние! Если при ходе вниз датчик не переходит в несработавшее состояние, при условии неисправности нижнего или отсутствия срабатывания нижнего датчика, в течение максимального времени хода вниз, то провести процедуру расклинивания клапанов с увеличением производительности при спуске (по аналогии со случаем когда ДВ=1 и ДН=1 в при включении). При отсутствии изменений после указанной процедуры привод останавливается по ошибке 7.

Авария 7. Превышение времени сработавшего состояния верхнего датчика
Условие: (в максимального времени хода вниз ДВ=1) и (ДН=0 не изменился на ДН=1 или ДН игнорируется).
Сообщение: "7. Превышение времени сработавшего верхнего датчика".
Индикация: №3.
Действия в авт. режиме: выполнить процедуру расклинивания клапанов с поэтапным повышением производительности, при отсутствии изменений привод остановить с отображением сообщения.
Условие снятия: ДВ в несработанном состоянии
Действия при снятии в авт. режиме: аналогично 5.

Авария 10 Игнорирование превышения времени сработанного ДН
Условие: (контроллер обнаруживает сработавшее состояние датчиков в процессе хода вверх) и (при сработавшем нижнем датчике срабатывает верхний) и (уставка времени хода вниз при несправном нижнем датчике > 0) .
Сообщение: "10 Игнорирование превышения времени сработавшего нижнего датчика".
Индикация: №2.
Действия: работа в аварийном режиме при котором время спуска от верхнего датчика определяется уставкой времени хода вниз при несправном нижнем датчике
Условие снятия: ДН в несработавшем состоянии
Действия при снятии: автоматический режим, поиск других аварий?

Авария 11.1 Одновременное срабатывание датчиков
Условие: контроллер обнаруживает сработавшее состояние датчиков при включении до стартового хода и уставка времени хода вниз при несправном нижнем датчике = 0.
Сообщение: "11.1 Одновременное срабатывание датчиков".
Индикация №3.
Действия в авт. режиме: аналогично 5.
Условие снятия: любой из датчиков переходит в несработавшее состояние
Действия при снятии в авт. режиме: перезапуск "smarthdc" или ресет или как там еще это можно назвать это состояние, когда контроллер только что включился и проверяет все ошибки заново на возможность запуститься / (чтобы я не слышал, что у Макарова в ТЗ же написано "запустить привод", вот контроллер и запустил, а то что масла не было, так извиняйте)

Авария 11.3 Одновременное срабатывание датчиков на ходе вверх
Условие: (контроллер обнаруживает сработавшее состояние датчиков в процессе хода вверх) и (при сработавшем нижнем датчике срабатывает верхний) и (уставка времени хода вниз при несправном нижнем датчике = 0).
Сообщение: "11.3 Одновременное срабатывание датчиков. ДН>ДВ".
Индикация №3.
Действия в авт. режиме: аналогично 5.
Условие снятия: нижний датчик переходит в несработавшее состояние
Действия при снятии в авт. режиме: ресет ил перезапуск "smarthdc"

Авария 11.4 Одновременное срабатывание датчиков на ходе вниз
Условие: (контроллер обнаруживает сработавшее состояние датчиков в процессе хода вниз) и (при сработавшем верхнем датчике срабатывает нижний).
Сообщение: "11.4 Одновременное срабатывание датчиков. ДВ>ДН".
Индикация №3.
Действия в авт. режиме: аналогично 5.
Условие снятия: верхний датчик переходит в несработавшее состояние
Действия при снятии в авт. режиме: ресет или перезапуск "smarthdc"

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

in reply to:  description ; comment:1 by andrei, 6 лет ago

Копия: andrei alx added

Replying to Art_M:

  1. При включении при сработавшем нижнем датчике сразу осуществляется ход вверх. Это плохо , т.к. в случае залипания нижнего датчика и сбросе питания в ВМТ , которая по инерции находится выше верхнего датчика, мы получим продолжение хода вверх за верхний датчик.

Случай ну очень маловероятный. А вниз до упора падать тоже ничего хорошего. Как вариант в таких ситуациях предлагаю спускаться вниз до выключения ДН, потом сразу вверх.

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

Отсутствие чего?
При (сработавший ДВ + долгий ход вниз) останавливаем установку?

  1. При сработавшем верхнем датчике и срабатывании нижнего датчика привод начинает и продолжает ход за верхний датчик.

Т.е. не соответствует действиям по аварии 11?

comment:2 by andrei, 6 лет ago

Копия: san added

Артем, вроде договаривались для отдельной проблемы отдельный тикет. С авариями давай также делать.

in reply to:  1 ; comment:3 by Art_M, 6 лет ago

  1. "Как вариант в таких ситуациях предлагаю спускаться вниз до выключения ДН, потом сразу вверх."

Андрей, я именно это и написал ниже в 4-м пункте

  1. При продолжительном срабатывании верхнего датчика и при отсутствии срабатывания нижнего датчика привод выполняет разворот и ход наверх несмотря на сработавший верхний датчик и далее за верхний датчик. Потом, не смотря что он и так стоит на датчике, посчитав, что привод так и не достигнул верхнего датчика проходит процедуру расклинивания клапанов и повышает производительность (мало того, что за датчик убегает, так еще при этом и ускоряется, этож возмутительно)...
  1. При включенной функции "максимального времени хода при неисправном нижнем датчике", при сработанном верхнем при срабатывании нижнего привод тут же идет наверх за верхний датчик отображая 11.2 игнорирование одновременного срабатывания датчиков.

Саша я думаю здесь можно держать в одном тикете... это же не отдельный баг, а комплексная мера, которую нужно делать в одном ключе!

in reply to:  3 ; comment:4 by andrei, 6 лет ago

Андрей, я именно это и написал ниже в 4-м пункте

Да, я уже все прочел и увидел подробности. Ждем прочтения Алексеем и Александром.
Если вопросов не будет, будем внедрять когда-нибудь.

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

Replying to andrei:

Ждем прочтения Алексеем и Александром.
Если вопросов не будет, будем внедрять когда-нибудь.

У меня есть вопросы.

При включении при сработавшем нижнем датчике сразу осуществляется ход вверх. Это плохо , т.к. в случае залипания нижнего датчика и сбросе питания в ВМТ , которая по инерции находится выше верхнего датчика, мы получим продолжение хода вверх за верхний датчик.

Рассмотрим симметричную ситуацию: питание включено при нахождении ниже нижнего датчика. Мы получим продолжение хода вниз за нижний датчик - это не плохо? Предложенные улучшения, как мне кажется, эту проблему не решают...

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

  1. При отсутствии чего?
  2. Что значит "продолжительном"? Если под "продолжительным срабатыванием" подразумевается превышение времени сработанного состояния верхнего датчика настройки “Максимальное время сработанного состояния датчика положения”, то никакого разворота вверх производиться не должно, привод должен остановить работу.

если ДВ>ДН - то ждем ДВ=0

  1. Что означает "ДВ=0" (также в тексте встречается "ДВ=1", "ДН=0", "ДН=1")? По тексту далее я понял, что это какое-то состояния датчиков положения. Какие? Сейчас датчики положения могут иметь следующие состояния:
    • 0 - обрыв датчика;
    • 1 - активное (датчик сработал);
    • 2 - неактивное (датчик не сработал);
    • 3 - КЗ датчика.
  2. Смущает слово "ждем". Что имеется в виду? Прекращаем выполнять все действия, например опрос датчиков и клавиш, обновление экрана и т.п. до наступления события "ДВ=0"? :) Очевидно, нет. Предполагаю, что привод продолжает работать в соответствии со своим алгоритмом, а при возникновении события ДВ=0 (при переходе ДВ в состояние 0, что бы это ни было) должен выполнить какие-то действия. Вот эти действия и стоит описать...

Стартовый ход выполнять в соответствии со следующим состоянием датчиком после включения контроллера

Смущает уточнение "после включения контроллера". Оно бессмысленно, так как контроллер не может знать, какое состояние у датчиков было до его включения, когда он был выключен. Вероятно, имелось в виду что-то другое?

Условие: (в максимального времени хода вниз ДВ=1) и (ДН=0 не изменился на ДН=1 или ДН игнорируется).

??? Непонятное условие. Похоже, пропущено слово "течение", и что значит "ДН игнорируется"? Вроде бы нижний датчик у нас никогда не игнорируется...

Действия: работа в аварийном режиме при котором время спуска от верхнего датчика определяется уставкой времени хода вниз при несправном нижнем датчике

Непонятная формулировка действий. Из этой формулировки непонятно, что конкретно должен сделать контроллер в момент возникновения аварии. Тот факт, что время спуска зависит от наличия или отсутствия этой аварии, действием по возникновению аварии не является - это должно быть в описании алгоритма работы привода.

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

Описание: изменено (отличие)
Note: See TracTickets for help on using tickets.