Opened 6 лет ago

Closed 6 лет ago

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

Убрать из алгоритма функцию "Сброс ошибок"

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

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

r633
Контроллер на столе, к нему подключен ЭК1 и Переключатель авт/руч/стоп, все остальные датчики отсутствуют.
Эксперимент.

  • После включения контроллера сработали аварии датчиков
  • В 15:34 произведено переключение руч->авто

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

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

Вложения (2)

messages.log (318.2 KB ) - added by san 6 лет ago.
config.xml (3.9 KB ) - added by san 6 лет ago.

Download all attachments as: .zip

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

by san, 6 лет ago

Вложение: messages.log added

by san, 6 лет ago

Вложение: config.xml added

comment:1 by alx, 6 лет ago

Саша, из описания тикета я не могу понять, в чем суть ошибки.

Вот здесь написано, как сделать хороший баг-рипорт. Если кратко - в хорошем баг-рипорте есть три компонента: что делали, что ожидали получить, и что получили вместо этого. В этом тикете, к сожалению, второго из перечисленных компонентов нет. Уточни, пожалуйста, что по-твоему не так в описанном поведении привода.

Рискну предположить (как попытка телепатии), что ты считаешь неправильным, что контроллер, как ты пишешь, не обнаружил аварии датчиков. Это не так (или, как минимум, не совсем так). Аварии датчиков были обнаружены сразу после старта привода, о чем есть записи в журнале:

Nov 13 15:33:40 smarthdcd[377]: controller.cpp:4407: Авария привода: 15. Неисправность датчика давления
Nov 13 15:33:40 smarthdcd[377]: controller.cpp:4407: Авария привода: 6.1 Остановка по обрыву верхнего дат.
Nov 13 15:33:40 smarthdcd[377]: controller.cpp:4407: Авария привода: 9.1 Остановка по обрыву нижнего дат.

С этого момента состояния датчиков (сигналов, поступающих от датчиков в контроллер), насколько я понимаю, не менялись.

В 15:34:07, действительно, переключатель режима работы был переведен в положение "авто", при этом выполнился сброс аварий, о чем также есть записи в журнале:

Nov 13 15:34:07 smarthdcd[377]: controller.cpp:1319: НУ1: переключатель режима работы: авто
Nov 13 15:34:07 smarthdcd[377]: controller.cpp:2302: сброс аварий

Выполнение сброса аварий соответствует требованиям ТЗ, в котором написано:

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

Таким образом, сброс аварий был выполнен правильно.

(Убрать индикацию об авариях, записать в журнал сообщение о сбросе аварий, считать все присутствующие аварии завершенными

Именно это и выполнил контроллер - посчитал текущие аварии завершенными и убрал записи о них из списка аварий. Так как сигналы от датчиков не менялись, никаких новых аварий не возникало. Не вижу в описанном поведении нарушений каких-либо требований ТЗ. Напротив, если бы контроллер вел себя иначе, это противоречило бы требованию об очистке аварий - получилось бы, что оператор переключил переключатель, выполнив, таким образом, сброс аварий, а аварии датчиков как были в списке, так и остались (хотя, технически, это были бы новые аварии, созданные в тот же миг, что убраны старые). Я смутно помню, что ты уже когда-то говорил с Андреем по этому поводу, и Андрей подтвердил, что все правильно, так и должно быть: повернул переключатель, и никаких аварий не стало...

comment:2 by san, 6 лет ago

Телепатия сработала в верном направлении.
У нас с тобой разные интерпретации сброса аварий, поэтому тебе и не очевидно что я тут считаю багом. Завтра загляну в ТЗ и разберусь....

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

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

Копия: andrei added

Replying to san:

У нас с тобой разные интерпретации сброса аварий,

Тут не нужны никакие интерпретации. Действия, которые должны выполняться при сбросе аварий, перечислены в ТЗ:

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

Эти действия либо выполняются приводом, либо нет. Насколько я вижу, все требуемые действия в рассматриваемом случае были выполнены.

Обрати, пожалуйста, особое внимание на последний пункт. Смотрим, как же выполняется запуск привода в работу:

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

Ты, получается, жалуешься на то, что привод выполнил прямое требование ТЗ - начал выполнять стартовый ход вниз! :)

Вот так и должно работать. Завтра загляну в ТЗ и разберусь....

Разберись. Потому что ТЗ и Андрей (Андрей, подтверди) с тобой не согласны. :) Совершенно очевидно, тикет подлежит закрытию как invalid.

comment:4 by san, 6 лет ago

А где тут написано, что наличии "условия" аварии она не должна быть заново обнаружена после сброса?

comment:5 by san, 6 лет ago

Обсудили устно: нужны правки в тз.

comment:6 by san, 6 лет ago

Копия: Art_M added
Краткое описание: Не срабатывают аварии после сбросаОбнаруживать аварии после сброса
Описание: изменено (отличие)
Тип: багулучшение

comment:7 by san, 6 лет ago

Добавил в тз:
Если авария присутствующая в блоке была завершена "Сбросом аварий", а после "Сброса аварий" условие аварии выполняется - авария должна снова возникнуть.

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

Replying to san:

А где тут написано, что наличии "условия" аварии она не должна быть заново обнаружена после сброса?

Если контроллер будет так себя вести - удалив аварию из списка ваварий в тот же миг помещать ее туда заново - это будет равносильно тому, что авария просто не была удалена из списка аварий, что нарушает требование ТЗ удалить аварию из списка. Это называется "довести до абсурда". :) Как если бы при нажатии кнопки "Вверх" движение вверх не началось, потому что двигатели были включены, но в тот же миг опять остановлены, так как нигде не написано, что после включения двигателей их нельзя останавливать... :)

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

Replying to san:

Добавил в тз:
Если авария присутствующая в блоке была завершена "Сбросом аварий", а после "Сброса аварий" условие аварии выполняется - авария должна снова возникнуть.

Так как у подавляющего большинства аварий условие снятия обратно Условию, сброс аварий, как правило, не будет делать ничего...

comment:10 by san, 6 лет ago

"Сброс аварий" задуман для сброса именно тех аварий у которых условие отличается от условия снятия, но для "упрощения" его действие было обобщёно на все аварии.

in reply to:  10 comment:11 by alx, 6 лет ago

Replying to san:

но для "упрощения" его действие было обобщёно на все аварии.

Теперь это "упрощение" закончится тем, что после удаления всех аварий придется дополнительно проверять выполнение условий всех 35 возможных аварий, в то время как аварий, у которых условие снятия не обратно Условию, наверное, четырех не наберется... Идею упрощения тоже довели до абсурда. :)

comment:12 by san, 6 лет ago

Идею упрощения тоже довели до абсурда

Ну вот, это упрощение и стало причиной путаницы.

comment:13 by andrei, 6 лет ago

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

comment:14 by san, 6 лет ago

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

comment:15 by andrei, 6 лет ago

Артем говорит что нужно для подгонки уровня масла нужно чтобы авария не "маскировалась".

Ночью в 3 на монтаж, завтра запуск, если все хорошо. Осталось шток просверлить и программу обновить. Ждем)))

comment:16 by andrei, 6 лет ago

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

  1. Если выполнялась процедура расклинивания, она "забывается".
  2. Если привод остановлен по перегреву, но температура масла уже ниже температуры отключения, то тоже "забыть" что он был остановлен. Если температура больше температуры отключения, то стоим.

Может быть Артем еще вспомнит "состояния", которые нужно "забыть".
Ну и "сброс аварий" просто изначально неправильная терминология.

comment:17 by andrei, 6 лет ago

Приоритет: СрочноПолный атас

comment:18 by san, 6 лет ago

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

Андрей, имей ввиду, аварию 16.2 сейчас можно будет завершить только сбросом питания.
И ещё есть авария 19, при ней привод может быть остановлен и завершить её можно будет доехав вручную до ДВ или сбросом питания.

comment:19 by san, 6 лет ago

Краткое описание: Обнаруживать аварии после сбросаУбрать из алгоритма функцию "Сборс ошибок"

comment:20 by san, 6 лет ago

Краткое описание: Убрать из алгоритма функцию "Сборс ошибок"Убрать из алгоритма функцию "Сброс ошибок"

comment:21 by alx, 6 лет ago

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

In 635/smartHDC:

Убрана функция "Сброс аварий". Closes #126.

Note: See TracTickets for help on using tickets.