Opened 6 лет ago

Last modified 5 лет ago

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

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

Сообщил: Art_M Владелец: alx
Приоритет: фигня Этап разработки: 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"

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

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

Описание: изменено (отличие)

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

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

Артем считает что это чуть менее критично.

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

  1. При отсутствии чего?

Вот и мне это интересно.

никакого разворота вверх производиться не должно, привод должен остановить работу.

Алексей, это проверено? Если да, то видимо то самое "отсутствие" влияет.

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

В этом тикете ДВ=0 - несработанное состояние верхнего датчика положения.
ДН=1 - сработавшее состояние датчика нижнего положения.
ДВ=1 и ДН=0 по аналогии.

  1. Смущает слово "ждем". Что имеется в виду?

Не включаем моторы и электромагнитные клапана видимо, но да, как-то без подробностей. Артем?

in reply to:  7 ; comment:8 by alx, 6 лет ago

Replying to andrei:

никакого разворота вверх производиться не должно, привод должен остановить работу.

Алексей, это проверено?

Что "это"? Да, вчера я проверил и убедился, что в ТЗ действительно записано требование привод остановить. :)

  1. Смущает слово "ждем". Что имеется в виду?

Не включаем моторы и электромагнитные клапана видимо,

А сейчас разве не так? И сейчас при одновременном срабатывании датчиков привод останавливается, то есть моторы и клапаны выключаются и не включаются...

comment:9 by Art_M, 6 лет ago

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

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

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

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

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

Что означает "ДВ=0" (также в тексте встречается "ДВ=1", "ДН=0", "ДН=1")?
Это условные сокращения сработавшего 1 и несработавшего состояний 0, только для этого тикета...
ДН=1 - нижний датчик в сработавшем состоянии
ДН=0 - нижний датчик в несработавшем состоянии
ДВ=1 - верхний датчик в сработавшем состоянии
ДВ=0 - верхний датчик в несработавшем состоянии

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

Смущает слово "ждем". Что имеется в виду? Прекращаем выполнять все действия, например опрос датчиков и клавиш, обновление экрана и т.п. до наступления события "ДВ=0"? :)

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

  • привод остановить.
  • выполнить сброс питания датчиков в соответствии с настройкой “Продолжительность сброса питания датчиков при ошибках”.

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

Алексей, до включения контроллер, естественно, не знает состояние датчиков, поэтому я и написал, что "после включения контроллера". Не пойму, почему контроллер не может знать состояние датчиков между включением самого контроллера и началом выполнения стартового хода?

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

Да, конечно же, здесь в течение максимального времени хода вниз ДВ в сработавшем состоянии. "ДН игнорируется" - означает, что у него либо КЗ, либо обрыв, либо долгое срабатывание... т.е. контроллер его уже не ждет и может работать по уставке времени хода вниз при неисправности нижнего датчика.

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

Так это же уже реализовано, то что он должен делать, т.е. продолжать работать в автоматическом режиме осуществляя ход вниз в течение времени хода вниз при неисправном нижнем датчике.

Вот пример, только авария ошибочно выводится 11.2, вместо 10.2
https://yadi.sk/i/7u1iY21bJ819BA

comment:10 by Art_M, 6 лет ago

Описание: изменено (отличие)

comment:11 by Art_M, 6 лет ago

Описание: изменено (отличие)

in reply to:  8 comment:12 by andrei, 6 лет ago

Replying to alx:

Replying to andrei:

никакого разворота вверх производиться не должно, привод должен остановить работу.

Алексей, это проверено?

Что "это"? Да, вчера я проверил и убедился, что в ТЗ действительно записано требование привод остановить. :)

Не-не-не. Проверено что блок ведет себя так, как предписывает ТЗ.

in reply to:  9 comment:13 by alx, 6 лет ago

Replying to Art_M:

Не пойму, почему контроллер не может знать состояние датчиков между включением самого контроллера и началом выполнения стартового хода?

Я тоже этого не понимаю. Откуда информация, что не может? Я написал: "...контроллер не может знать, какое состояние у датчиков было до его включения". До, а не после. :)

Так это же уже реализовано, то что он должен делать, т.е. продолжать работать...

Тогда стоит написать: "Действия в авт. режиме: нет."...

comment:14 by Art_M, 6 лет ago

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

А я понял, ты меня типа приколол "по-программистски"... Саша, как корректор, если нужно, поправит логику :)

Конечно же фразу "Стартовый ход выполнять в соответствии со следующим состоянием датчиков после включения контроллера" следует читать "После включения контроллера стартовый ход выполнять в соответствии со следующим состоянием датчиков:" или "Стартовый ход после включения контроллера выполнять в соответствии со следующим состоянием датчиков:", что в принципе одно и тоже, т.к. до включения контроллера не только определить состояние датчиков, но и стартовый ход сделать невозможно

in reply to:  14 comment:15 by alx, 6 лет ago

Replying to Art_M:

А я понял, ты меня типа приколол "по-программистски"...

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

Саша, как корректор, если нужно, поправит логику :)

Тогда я подожду, когда Саша поправит логику, и буду читать уже поправленную. :)

comment:16 by alx, 6 лет ago

Владелец: установлено в alx
Состояние: newaccepted

in reply to:  description comment:17 by alx, 6 лет ago

Replying to Art_M:

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

Это предложение противоречит требованию ТЗ в разделе 4.2 "Автоматический режим":

"Время задержки в ВМТ” < 0 : При движении вверх, после срабатывания ДВ, открывает включенные ЭК, отсчитывает время задержки, затем останавливает включенные НУ.

То есть ТЗ требует, чтобы при отрицательном значении настройки "Время задержки в ВМТ” в течение времени, равного абсолютному значению настройки, движение вверх продолжалось (двигатели продолжали работу) несмотря на сработавший верхний датчик.

in reply to:  description ; comment:18 by alx, 6 лет ago

Replying to Art_M:

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

А что делать, если ДВ=1?

in reply to:  18 ; comment:19 by Art_M, 6 лет ago

Replying to alx:

Replying to Art_M:

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

Это предложение противоречит требованию ТЗ в разделе 4.2 "Автоматический режим":

"Время задержки в ВМТ” < 0 : При движении вверх, после срабатывания ДВ, открывает включенные ЭК, отсчитывает время задержки, затем останавливает включенные НУ.

То есть ТЗ требует, чтобы при отрицательном значении настройки "Время задержки в ВМТ” в течение времени, равного абсолютному значению настройки, движение вверх продолжалось (двигатели продолжали работу) несмотря на сработавший верхний датчик.

Согласен, как показал опыт, отрицательное значение не дало никаких плюсов. В таком случае наиболее простое решение - запретить ввод отрицательных значений задержек в ВМТ и НМТ.

Replying to alx:

Replying to Art_M:

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

А что делать, если ДВ=1?

То тут два варианта:

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

Вариант 2:
Авария 11.4 Одновременное срабатывание датчиков на ходе вниз
Условие: (контроллер обнаруживает сработавшее состояние датчиков в процессе хода вниз) и (при сработавшем верхнем датчике срабатывает нижний).

in reply to:  19 ; comment:20 by alx, 6 лет ago

Replying to Art_M:

Согласен, как показал опыт, отрицательное значение не дало никаких плюсов. В таком случае наиболее простое решение - запретить ввод отрицательных значений задержек в ВМТ и НМТ.

Тогда ждем изменения в ТЗ?

in reply to:  19 ; comment:21 by alx, 6 лет ago

Replying to Art_M:

А что делать, если ДВ=1?

То тут два варианта:

Почему же только два? Я вижу, как минимум, три...

Вариант 1:

Вариант 2:

Вариант 3:
Выполняется движение вниз в течение максимального времени хода вниз. За миллисекунду до истечения этого времени срабатывает верхний датчик. Аварии 7 нет, так как верхний датчик находится в активном состоянии всего миллисекунду. Одновременного срабатывания датчиков также нет, так как нижний датчик не сработал. Двигаться вверх не можем, так как верхний датчик сработал.

in reply to:  20 comment:22 by andrei, 6 лет ago

Replying to alx:

Replying to Art_M:
Тогда ждем изменения в ТЗ?

Артем, внеси изменения, Саша в среду ознакомится и примет.

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

Replying to alx:

Replying to Art_M:

А что делать, если ДВ=1?

То тут два варианта:

Почему же только два? Я вижу, как минимум, три...

Вариант 1:

Вариант 2:

Вариант 3:
Выполняется движение вниз в течение максимального времени хода вниз. За миллисекунду до истечения этого времени срабатывает верхний датчик. Аварии 7 нет, так как верхний датчик находится в активном состоянии всего миллисекунду. Одновременного срабатывания датчиков также нет, так как нижний датчик не сработал. Двигаться вверх не можем, так как верхний датчик сработал.

Ну что ж вариант, интересный! Для такого случая следует изменить условие аварии 7 следующим образом!

Авария 7. Превышение времени сработавшего состояния верхнего датчика
Условие: (к концу максимального времени хода вниз оказывается ДВ=1) и (ДН=0 не изменился на ДН=1 или ДН игнорируется).

comment:24 by Art_M, 6 лет ago

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