#220 closed улучшение (сделано)
Изменять время хода вниз в зависимости от времени задержки в ВМТ.
Сообщил: | andrei | Владелец: | alx |
---|---|---|---|
Приоритет: | Срочно | Этап разработки: | 1-я очередь |
Ключевые слова: | Копия: | san, Art_M, alx |
Описание (последним изменил )
Артем выяснил что привод ведет себя не так как ожидалось.
Если настройка максимальное время хода вниз не намного больше времени задержки в ВМТ, то привод после задержки в ВМТ движется вверх.
Артем предлагает вот это:
Твниз := 60/ ЧК * Твнизпред / (Твнизпред+Твверх);
if Твниз < ТзадВМТ+1
then Tвниз:=ТзадВМТ+1
Вложения (7)
История изменений (30)
следующий: 4 comment:3 by , 6 лет ago
Replying to andrei:
Артем предлагает вот это:
Твниз := 60/ ЧК * Твнизпред / (Твнизпред+Твверх);
Это будет противоречить требованию ТЗ. Согласно ТЗ, таймаут хода вниз должен определяться другой формулой.
comment:4 by , 6 лет ago
Replying to alx:
Это будет противоречить требованию ТЗ. Согласно ТЗ, таймаут хода вниз должен определяться другой формулой.
А, да, верно. Там, видимо, раньше была другая формула, а потом ее поменяли на эту.
comment:5 by , 6 лет ago
Комментарии от Арртема (мнение редакции может не совпадать с мнением автора):
- Смотри сейчас у нас программа работает несколько не верно, она сейчас из полученного времени хода вниз вычитает время на задержку в вмт.... И поэтому вероятна ситуация, что задержка окажется дольше полученного времени хода вниз, тогда привод не выполнит ход вниз.... А мы ему ограничим снизу значение этой же уставкой задержки плюс одной секундой.... И тогда он обязательно выдержит паузу и даст 1 секунду на спуск.
- Артем выяснил что привод ведет себя не так как ожидалось.
Если при развороте по чк вычисленное максимальное время хода вниз равно времени задержки в ВМТ, то привод после задержки в ВМТ движется вверх.
Артем предлагает вот это:
Твниз := 60/ ЧК * Твнизпред / (Твнизпред+Твверх);
if Твниз < ТзадВМТ+1
then Tвниз:=ТзадВМТ+1
- А если при развороте по чк вычисленное максимальное время хода вниз меньше времени задержки в ВМТ, то привод даже недождавшись задержки в ВМТ по истечению расчетного времени хода вниз (которое может получаться сколь угодно малым) начинает движение вверх.
comment:6 by , 6 лет ago
Владелец: | установлено в |
---|---|
Приоритет: | средний → Срочно |
Состояние: | new → assigned |
Этап разработки: | 2-я очередь → 1-я очередь |
comment:7 by , 6 лет ago
Replying to andrei:
Артем предлагает вот это:
Твниз := 60/ ЧК * Твнизпред / (Твнизпред+Твверх);
if Твниз < ТзадВМТ+1
then Tвниз:=ТзадВМТ+1
В тексте ТЗ в разделе "Условие разворота" имеется такое требование:
При настройке “Разворот при долгом ходе вниз” в значении “По числу качаний” максимальное время хода вниз определяется так: пока не исчерпаны варианты увеличения производительности(см. Подбор числа качаний) или привод ещё не совершил ни одного полного цикла максимальное время хода вниз определяется значением “Максимальное время хода вниз”. Если же ПП уже на максимуме возможностей(включены все разрешенные НУ на максимально разрешенной частоте и т.д.) в таком случае максимальное время хода вниз=(60*Твниз_п)/(N*(Твниз_п+Tвверх))
Таким образом, в случае (Tвниз < ТзадВМТ+1) предложение Артема противоречит требованию ТЗ: ТЗ требует, чтобы Tвниз было вычислено по приведенной формуле, а Артем предлагает (ТзадВМТ+1). Таким образом, предложение Артема нельзя реализовать без изменения ТЗ.
С другой стороны, в разделе "Условие разворота" ТЗ смешаны понятия "время хода вниз" и "время движения вниз", и я не вижу точного указания на то, от какого момента отсчитывается это время. Поэтому напрашивается другой вариант решения проблемы - отсчитывать таймаут условия разворота не от момента срабатывания верхнего датчика как сейчас, а от момента начала движения вниз, то есть от момента окончания задержки в ВМТ, когда включаются ЭК. Этот вариант по-моему требованиям ТЗ не противоречит, поэтому для его реализации изменения в ТЗ вносить не придется.
Прошу высказать мнения по поводу предложенного варианта.
следующий: 9 comment:8 by , 6 лет ago
Можно сделать начало от момента начала движения, но тогда нужно установить нижнее ограничение - время движения вниз не может быть меньше 1 секунды.
comment:9 by , 6 лет ago
Replying to andrei:
время движения вниз не может быть меньше 1 секунды.
Непонятно, почему при настройке "Разворот при долгом ходе вниз" в значении "По макс. времени хода" время движения вниз может быть меньше 1 секунды (минимальное значение настройки "Максимальное время хода вниз" - 0.1 сек.), а в значении "По мин. числу качаний" - не может...
Ну если в любом случае требуется вносить изменения в ТЗ, то проще сделать так, как предлагает Артем.
comment:10 by , 6 лет ago
Внёс в ТЗ изменения
При настройке “Разворот при долгом ходе вниз” в значении “По числу качаний” максимальное время хода вниз определяется так: пока не исчерпаны варианты увеличения производительности(см. Подбор числа качаний) или привод ещё не совершил ни одного полного цикла максимальное время хода вниз определяется значением “Максимальное время хода вниз”. Если же ПП уже на максимуме возможностей(включены все разрешенные НУ на максимально разрешенной частоте и т.д.) в таком случае максимальное время хода вниз=(60*Твниз_п)/(N*(Твниз_п+Tвверх)), где Tвверх - время хода вверх в секундах измеренное в текущем цикле, Твниз_п- время хода вниз в секундах измеренное в предыдущем цикле, N- количество качаний(1/мин), при прямом указании количества качаний N= “Количество качаний”, при Интеллектуальном режиме N=”Минимальное количество качаний”.
Если вычисленное значение “максимальное время хода вниз” оказалось меньше (длительности задержки в ВМТ*+1 сек.), то “максимальное время хода вниз” следует принять равным (длительность задержки в ВМТ+1 сек.). Длительность задержки в ВМТ, в отсутствии аварии 25, равна значению настройки “Время задержки в ВМТ”.
comment:11 by , 6 лет ago
Так-же в рамках этого тикета нужно внести правку в Аварию 25. Внёс в ТЗ изменения.
Теперь в действиях при аварии 25, мы не должны уменьшать длительность задержки в ВМТ, а можем только увеличивать.
Авария 25. Аварийный температурный режим
...
Действия в авт. режиме:
...
применить другой алгоритм подбора числа качаний до снятия аварии: Число качаний должно стремится к числу заданному настройкой "Число качаний в аварийном температурном режиме", за счет увеличения задержки в верхнем положении.
...
by , 6 лет ago
Вложение: | messages 13_22 added |
---|
следующий: 20 comment:14 by , 6 лет ago
В логе в 13:22 Артем экспериментирует с условием разворота.
Вычисленное теоретически время движения вниз = 10 сек (это видимо с задержкой в ВМТ?), а привод едет вниз меньше.
Кажется это неправильно, давайте разбираться.
comment:15 by , 6 лет ago
Решение: | fixed |
---|---|
Состояние: | closed → reopened |
Судя по комментарию Андрея, таймаут условия разворота действительно вычисляется неправильно. На первый взгляд, должно быть 10 секунд, а, судя по логу, условие разворота наступает через 6 секунд после срабатывания верхнего датчика. Почему так происходит, непонятно.
Не вижу другого пути для дальнейшего исследования причины такого поведения кроме специальной прошивки с дополнительным отладочным выводом.
comment:16 by , 6 лет ago
Могу предложить еще один лог с более длительными временами эксперимента, приложеть?
Вдруг какая-то информация полезная добавится.
comment:17 by , 6 лет ago
6 секунд
Это магическое число очень похоже на 5+1 = delayTDP + 1.0
(конфиг Андрей приложил выше)
by , 6 лет ago
Вложение: | messages 14_30 added |
---|
by , 6 лет ago
Вложение: | smarthdcd 14_30 added |
---|
comment:18 by , 6 лет ago
В последнем логе время больше чем магическое +1.
Время экспериментов 14:30.
by , 6 лет ago
Вложение: | messages 15_38 added |
---|
by , 6 лет ago
Вложение: | smarthdcd 15_38 added |
---|
comment:19 by , 6 лет ago
Согласно последнему логу, рассчитанное по формуле время получается меньше 6 секунд: 5.7, 1.7 и т.д....
следующий: 21 comment:20 by , 6 лет ago
Решение: | → сделано |
---|---|
Состояние: | reopened → closed |
Replying to andrei:
В логе в 13:22 Артем экспериментирует с условием разворота.
Вычисленное теоретически время движения вниз = 10 сек (это видимо с задержкой в ВМТ?), а привод едет вниз меньше.
Кажется это неправильно, давайте разбираться.
Разобрался. Вот что я вижу в приложенном логе в указанное время:
- 13:22:01 Сработал верхний датчик. Начали останов двигателя. Запустили таймаут ВМТ (5 сек.).
- 13:22:06 Истек таймаут ВМТ. Включили ЭК. Начался отсчет времени спуска.
- 13:22:07 Наступило условие разворота. Закончили спуск, выключили ЭК, включили двигатель. Закончился отсчет времени спуска. Начался отсчет времени подъема.
- 13:22:10 Сработал верхний датчик. Начали останов двигателя. Запустили таймаут ВМТ (5 сек.).
- 13:22:15 Истек таймаут ВМТ. Включили ЭК. Закончился отсчет времени подъема.
Далее циклы повторяются без существенных изменений. Теперь давайте посчитаем времена подъема и спуска и вычислим таймаут условия разворота.
Спуск начался в 13:22:06 и закончился в 13:22:07. Время спуска составило 1 сек.
Подъем начался в 13:22:07 и закончился в 13:22:15. Время подъема составило 8 сек.
Таймаут условия разворота составил: 60 * Tвниз / (N * (Tвверх + Tвниз)) = 60 * 1 / (4 * (1 + 8)) = 1.66 сек.
Таким образом, указанное теоретическое значение (10 сек.) было вычислено неверно. Верное значние 1.7 сек., что совпадает с значением в повторном эксперименте с добавленным отладочным логом (см. лог в 15:38:37, 15:38:54 и т.д.).
Так как вычисленное значение таймаута (1.7 сек.) меньше значения (TзадержкиВМТ + 1) = (5 + 1) = 6 сек., в условии разворота использовалось значение 6 сек., что соответствует условию в описании этого тикета и требованию ТЗ.
Вывод - ошибки в работе контроллера нет.
следующий: 23 comment:21 by , 6 лет ago
Replying to alx:
Вот тут ошибка в твоем расчете:
Подъем начался в 13:22:07 и закончился в 13:22:15. Время подъема составило 8 сек.
Обрати внимание на
13:22:07 Наступило условие разворота. Закончили спуск, выключили ЭК, включили двигатель. Закончился отсчет времени спуска. Начался отсчет времени подъема.
13:22:10 Сработал верхний датчик.
Соответственно подъем длится не 8, а 3 секунды. Я этот промежуток намеренно делал 3 сек. путем включения датчика в нужный момент! Алексей, если пересчитаешь повторно, то обнаружишь ошибку.
Ошибка заключается в том, что формула в ТЗ не учитывает задержку в верхней точке. Иными словами она действует пока задержка в ВМТ=0, в противном случае она дает ошибку, следствия которой мы и наблюдаем.
Теперь о решении!
В настоящий момент, действительно, есть ошибка в определении точки отсчета времени хода вниз. На динамограмме отображается время хода вниз как сумма расчетного времени и времени задержки в ВМТ. А также замечено, что до внесения if Твниз < ТзадВМТ+1 then Tвниз:=ТзадВМТ+1 условие разворота могло наступить раньше чем закончится задержка в ВМТ. И было бы правильным, как заметил Алексей, считать его с момента включения клапанов, но такое решение, наверное, будет слишком долгореализуемым. Поэтому предлагаю два варианта решения, быстрый и правильный:
Вариант 1 - быстрый, хоть и чуть неправильный (но пока закроем на это глаза):
- Исправить формулу на
Твниз=(60 * Tвниз_пред / (N * Тцикла)) + TзадВМТ(+ТзадНМТ)
Алексей, вот тут нужно уточнить, задержка в нижней точке, как и задержка в верхней точке входит во время вниз или нет? Если входит, то нужно прибавить и ее тоже.
- Все остальное оставляем как есть (т.е. условие так и остается "if Твниз < ТзадВМТ+1 then Tвниз:=ТзадВМТ+1").
Вариант 2 - правильный
- Исправить формулу на:
Твниз=60 * Tвниз_пред / (N * Тцикла)
- Сделать Твниз отсчитываемым от включения ЭК, а не от срабатывания в датчика верхнего положения.
- Изменить условие из имеющегося на
if Твниз < 1 then Tвниз:=1
Я не знаю насколько сложно сейчас в сжатые сроки сделать правильно по варианту 2, но сейчас для исключения имеющейся ошибки меня устраивает наибыстрейший вариант 1.
Теперь про Тцикла=Твверх+Твнизпред+ТзадВМТ(+ТзадНМТ).
Алексей, хотелось бы уточнить, действует ли в настоящий момент задержка в НМТ при развороте по числу качаний? Если нет, то в формуле ТзадНМТ не нужно учитывать.
comment:23 by , 6 лет ago
Replying to Art_M:
Обрати внимание на
13:22:07 Наступило условие разворота. Закончили спуск, выключили ЭК, включили двигатель. Закончился отсчет времени спуска. Начался отсчет времени подъема.
13:22:10 Сработал верхний датчик.
Соответственно подъем длится не 8, а 3 секунды.
А, да. Ты прав, здесь я ошибся. Окончанием времени хода вверх считается срабатывание верхнего датчика.
Я этот промежуток намеренно делал 3 сек. путем включения датчика в нужный момент! Алексей, если пересчитаешь повторно, то обнаружишь ошибку.
Пересчитал. Вычисленное по формуле время получается не 1.7 сек., а 3.75 сек. Однако 3.75 сек. все равно меньше чем 6 сек. (время задержки в ВМТ плюс один), поэтому контроллер устанавливает таймаут условия разворота в 6 сек.
Теперь про Тцикла=Твверх+Твнизпред+ТзадВМТ(+ТзадНМТ).
Алексей, хотелось бы уточнить, действует ли в настоящий момент задержка в НМТ при развороте по числу качаний?
Задержка в НМТ сейчас действует всегда.
Первое - форумала из тз , только в тз вместо чк - N....
А в условии ТзадВМТ - уставка задержки в ВМТ