Opened 6 лет ago

Closed 6 лет ago

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

Инвалидировать динамограмму, если направление движения менялось не в крайней точке

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

Описание

Сейчас при формировании динамограммы никак не проверяется, изменилось направление движения в крайней (верхней или нижней) точке, или нет. Однако согласно ТЗ, в динамограмма должна содержать движение от нижней точки к верхней точке и обратно.

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

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

comment:1 by alx, 6 лет ago

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

comment:2 by alx, 6 лет ago

In 418/smartHDC:

Динамограммам добавлен флаг invalid, устанавливаемый при превышении
максимального числа отсчетов. Динамограммы с установленным флагом
игнорируются. See #6.

comment:3 by alx, 6 лет ago

Судя по комментарию в таблице формата динамограммы, записи в динамограмму подлежат только нагрузки во время движения (вверх и/или вниз). Критерии движения следующие:

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

comment:4 by alx, 6 лет ago

In 426/smartHDC:

Реализованы проверки условий движения вверх и движения вниз (See #6).
Значения нагрузки добавляются в динамограмму только во время движения.

comment:5 by alx, 6 лет ago

Копия: san added

Саша, я что-то никак не могу формализовать критерии, по которым можно было бы принять решение о том, что изменение направления произошло не в крайней точке. Если можешь, помоги, пожалуйста.

С определением факта изменения направления вроде бы проблем нет - мы можем хранить последнее зафиксированное направление движения, которое определяем по критериям, описанным выше, и, сравнивая текущее определенное направление движения с предыдущим, определить факт изменения направления. Непонятно, как определить, в крайней ли точке это произошло или нет...

comment:6 by alx, 6 лет ago

Попробую сформулировать критерии сам. :)

Пусть у нас есть флаг F. Как я уже писал выше, с определением факта изменения направления движения проблемы нет. В таком случае, мы будем сбрасывать этот флаг каждый раз, когда направление движения меняется с "вниз" на "вверх". А устанавливать этот флаг мы будем при достижении верхней точки (при срабатывании ДВ или условии разворота вниз). В таком случае, если на момент изменения направления движения с "вверх" на "вниз" флаг F установлен, значит во время движения вверх верхняя точка была достигнута. Если не установлен - значит не была.

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

comment:7 by alx, 6 лет ago

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

In 444/smartHDC:

Инвалидируем динамограмму если изменение направления движения произошло
без достижения верхней или нижней точки. Closes #6.

Note: See TracTickets for help on using tickets.