Блоки ускорения

Серия блоков для работы с ускорением

Пользовательские блоки не подходящее под другие разделы
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Dryundel
Подполковник
Сообщения: 1248
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 377
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блоки ускорения

#1

Сообщение Dryundel » 09.03.2019{, 20:59}

Серия блоков для работы с ускорением

Описание блоков:
Acceleration Overtake v.1.15 (догоняющий)Показать
Блок изменяет переменную Out в сторону переменной in с заданной скоростью Accel. Другими словами, переменная Out плавно изменяется с положительным ускорением Accel или отрицательным ускорением (торможением) Accel, всегда стремясь к значению на входе in.
Когда (Out<in) то Out возрастает стремясь к in , со скоростью Accel (step/s) .
Когда (Out>in) то Out убывает стремясь к in, со скоростью Accel (step/s).
Поддерживаются как положительные так и отрицательные значения in и Out.
Отрицательные значения Accel не поддерживаются !!! Если на вход Accel подается отрицательное значение то принимается его модуль.
При старте (начале работы), переменной Out присваивается значение со входа in.
По умолчанию при появлении на входе En логического нуля изменение переменной на выходе Out останавливается, Out "замораживается". При появлениии на входе En логической единицы, изменение Out продолжается. Если требуется что бы при остановке блока, запрете на работу блока (En=0), значение на выходе Out не "замораживалось", а сбрасывалось до значения на входе in, следует изменить параметр Reset, установив True (в парамерах пользователя).
Параметр step задает шаг изменения переменной на выходе Out.

Входы блока:
in - входная переменная
Accel - ускорение step/s за секунду или проще step/s^2
En - Разрешение на изменение переменной Var (работу блока).

Параметры пользователя:
step - шаг изменения переменной Var.
Reset - заморозка / сброс Out в in при en=0
Acceleration Overtake Plus v.2.15 (догоняющий)Показать
Блок изменяет переменную Out в сторону переменной in с заданной скоростью Accel или Brak. Другими словами, переменная Out плавно изменяется с положительным ускорением Accel или отрицательным ускорением (торможением) Brak, всегда стремясь к значению на входе in.
Когда (Out<in) то Out возрастает стремясь к in , со скоростью Accel (step/s) .
Когда (Out>in) то Out убывает стремясь к in, со скоростью Brak (step/s).
Поддерживаются как положительные так и отрицательные значения in и Out.
Отрицательные значения Accel и Brak не поддерживаются !!! Если на вход Accel или Brak подается отрицательное значение то принимается его модуль.
При старте (начале работы), переменной Out присваивается значение со входа in.
По умолчанию при появлении на входе En логического нуля изменение переменной на выходе Out останавливается, Out "замораживается". При появлениии на входе En логической единицы, изменение Out продолжается. Если требуется что бы при остановке блока, запрете на работу блока (En=0), значение на выходе Out не "замораживалось", а сбрасывалось до значения на входе in, следует изменить параметр Reset, установив True (в парамерах пользователя).
Параметр step задает шаг изменения переменной на выходе Out.

Входы блока:
in - входная переменная
Accel - ускорение step/s за секунду или проще step/s^2
En - Разрешение на изменение переменной Var (работу блока).

Параметры пользователя:
step - шаг изменения переменной Var.
Reset - заморозка / сброс Out в in при en=0
Acceleration Reverse v.3.15 (Реверсивный)Показать
Блок изменяет переменную Var в заданных пределах MIN и MAX с заданной скоростью Accel, и в сторону зависящую от знака Accel. Если Accel имеет отрицательное значение то переменная Var уменьшается. Если Accel положитнльное то Var Увеличивается. Другими словами, переменная Var плавно изменяется с положительным ускорением Accel или отрицательным ускорением (торможением) Accel. За направление изменения переменной Var отвечает знак Accel.
Когда Accel > 0 то переменная Var всегда стремится к MAX (возрастает), с заданной скоростью Accel (step/s) за секунду.
Когда Accel < 0 то переменная Var всегда стремится к MIN (убывает), с заданной скоростью Accel (step/s) за секунду.
Когда Accel = 0 то изменение переменной Var прекращается. Var "замораживается"
Поддерживаются как положительные так и отрицательные значения пределов MIN и MAX.
В случае если MIN > MAX то возрастание является убыванием. Другими словами направление ускорения инвертируется.
В случае если Var оказалась вне диапазона MIN<->MAX то Var возвращается в этот диапазон со скоростью Accel, стремясь к MIN или MAX в зависимости от знака Accel.
При старте (начале работы), переменной Var присваивается стартовое значение VarStart.
При появлении на входе En логического нуля изменение переменной на выходе Var останавливается, Var "замораживается". При появлениии на входе En логической единицы, изменение Var продолжается.
Параметр step задает шаг изменения переменной на выходе Out.

Входы блока:
MIN - ограничение минимального значения переменной (минимальной скорости)
MAX - ограничение максимального значения переменной (максимальной скорости)
Accel - ускорение step/s за секунду или проще step/s^2 (Может быть как положительным так и отрицательным)
VarStart - стартовое значение переменной Var
En - Разрешение на изменение переменной Var (работу блока). При появлении на входе En логического нуля изменение переменной на выходе Var останавливается, Var "замораживается". При появлениии на входе En логической единицы, изменение Var продолжается.

Параметры пользователя:
step - шаг изменения переменной Var.
Acceleration Range v.4.15 (Диапазонный)Показать
Блок изменяет переменную Var в заданных пределах MIN и MAX с заданной скоростью Accel, и в сторону зависящую от сигнала на входе Dir. Другими словами, переменная Var плавно изменяется с положительным ускорением Accel или отрицательным ускорением (торможением) Accel. За направление изменения переменной Var отвечает параметр Dir.
Когда Dir = True(1) (включено ускорение) то переменная Var всегда стремится к MAX (возрастает), с заданной скоростью Accel (step/s) за секунду.
Когда Dir = False(0) (включено торможение) то переменная Var всегда стремится к MIN (убывает), с заданной скоростью Accel (step/s) за секунду.
Поддерживаются как положительные так и отрицательные значения пределов MIN и MAX.
В случае если MIN > MAX то возрастание является убыванием. Другими словами направление ускорения инвертируется.
Отрицательные значения Accel не поддерживаются !!! Если на вход Accel подается отрицательное значение то принимается его модуль.
При старте (начале работы), переменной Var присваивается стартовое значение VarStart.
При появлении на входе En логического нуля изменение переменной на выходе Var останавливается, Var "замораживается". При появлениии на входе En логической единицы, изменение Var продолжается.
Параметр step задает шаг изменения переменной на выходе Out.

Входы блока:
MIN - ограничение минимального значения переменной (минимальной скорости)
MAX - ограничение максимального значения переменной (максимальной скорости)
Accel - ускорение step/s за секунду или проще step/s^2
Dir - направление изменения переменной Var. Если Dir=1 то задействуется ускорение и переменная Var увеличивается с ускорением Accel. Если же Dir=0 то задействуется торможение и переменная Var уменьшается с ускорением Accel.
VarStart - стартовое значение переменной Var (работает при включенном параметре MyStart (True) в параметрах пользователя)
En - Разрешение на изменение переменной Var (работу блока). При появлении на входе En логического нуля изменение переменной на выходе Var останавливается, Var "замораживается". При появлениии на входе En логической единицы изменение Var продолжается.

Параметры пользователя:
step - шаг изменения переменной Var.
Acceleration Range Plus v.5.15 (Диапазонный)Показать
Блок изменяет переменную Var в заданных пределах MIN и MAX с заданной скоростью Accel или Brak, и в сторону зависящую от сигнала на входе Dir. Другими словами, переменная Var плавно изменяется с положительным ускорением Accel или отрицательным ускорением (торможением) Brak. За направление изменения переменной Var отвечает параметр Dir.
Когда Dir = True(1) (включено ускорение) то переменная Var всегда стремится к MAX (возрастает), с заданной скоростью Accel (step/s) за секунду.
Когда Dir = False(0) (включено торможение) то переменная Var всегда стремится к MIN (убывает), с заданной скоростью Accel (step/s) за секунду.
Поддерживаются как положительные так и отрицательные значения пределов MIN и MAX.
В случае если MIN > MAX то возрастание является убыванием. Другими словами направление ускорения инвертируется.
Отрицательные значения Accel не поддерживаются !!! Если на вход Accel подается отрицательное значение то принимается его модуль.
При старте (начале работы), переменной Var присваивается стартовое значение VarStart.
При появлении на входе En логического нуля изменение переменной на выходе Var останавливается, Var "замораживается". При появлениии на входе En логической единицы, изменение Var продолжается.
Параметр step задает шаг изменения переменной на выходе Out.

Входы блока:
MIN - ограничение минимального значения переменной (минимальной скорости)
MAX - ограничение максимального значения переменной (максимальной скорости)
Accel - ускорение step/s за секунду или проще step/s^2
Brak - торможение (отрицательное ускорение) step/s за секунду или проще |step/s^2|
Dir - направление изменения переменной Var. Если Dir=1 то задействуется ускорение и переменная Var увеличивается с ускорением Accel. Если же Dir=0 то задействуется торможение и переменная Var уменьшается с ускорением Brak.
VarStart - стартовое значение переменной Var (работает при включенном параметре MyStart (True) в параметрах пользователя)
En - Разрешение на изменение переменной Var (работу блока). При появлении на входе En логического нуля изменение переменной на выходе Var останавливается, Var "замораживается". При появлениии на входе En логической единицы изменение Var продолжается.
Параметр step задает шаг изменения переменной на выходе Out.

Параметры пользователя:
step - шаг изменения переменной Var.
Acceleration_Overtake_v.1.15_(CODE).ubi
Acceleration_Overtake_Plus_v.2.15_(CODE).ubi
Acceleration_Reverse_v.3.15_(CODE).ubi
Acceleration_Range_v.4.15_(CODE).ubi
Acceleration_Range_Plus_v.5.15_(CODE).ubi
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось Dryundel 04.10.2020{, 21:51}, всего редактировалось 4 раза.
Пользовательские блоки на сайте FLPROG - BLOCK

Аватара пользователя
Di123
Лейтенант
Сообщения: 615
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 9
Имя: Дмитрий

Блоки ускорения

#21

Сообщение Di123 » 25.07.2021{, 13:37}

ecoins писал(а):
25.07.2021{, 12:54}
6.4095/ вкл/выкл -плохая идея делить на 0, лучше заменить на SWITCH. =4095.
нет там при прошивке в епром пишется 1 и далее через счётчик она не может опустится ниже 1 и можно выбирать 1-10 по кругу не выходя за рамки диапазона
ecoins писал(а):
25.07.2021{, 12:54}
7.Вход in - синим на рисунке. Было 4095, стало 0.
ну как бы да - было 0 потомучто на входе 0 по 9 столбцу ... далее пришла 1 и на входе появилось 4095 ... а далее снова 0 в 9 столбце и на входе 0
ecoins писал(а):
25.07.2021{, 12:54}
8.Выход Accel - было 4095->2032,232,0....
опрос уарта 1 сек вот он и выдернул что увидел

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

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

вот спецально для вас собрал как просили самое простое что можно
генератор 30/30 сек
ускорение 1 сек
уарт шаг 1 сек
2021-07-25_173235.png

на видео чотко видно как график останавливается примерно после 4300 сек = 71 мин
Video_2021-07-25_173119.wmv
Отправлено спустя 2 минуты 35 секунд:
не останавливается а перестаёт рисовать выход
Для скачивания вложений Вы должны быть зарегистрированы.

ecoins
Подполковник
Сообщения: 1264
Зарегистрирован: 12.02.2016{, 11:40}
Репутация: 216
Откуда: Шатура
Имя: Энвер

Блоки ускорения

#22

Сообщение ecoins » 25.07.2021{, 13:47}

Di123 писал(а):
25.07.2021{, 13:39}
вот спецально для вас собрал как просили самое простое что можно
генератор 30/30 сек
ускорение 1 сек
уарт шаг 1 сек
Спасибо. Похоже это из-за таймера.
Попозже реализуем что-то похожее - сейчас много работаем с сенсорами, прямо сейчас конкретно BME280 с тремя интерфейсами.

Аватара пользователя
AlexCrane
Лейтенант
Сообщения: 629
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 170
Откуда: Ульяновск
Имя: Александр

Блоки ускорения

#23

Сообщение AlexCrane » 27.07.2021{, 07:20}

Dryundel, Di123, ecoins, Теперь таймер не будет переполнятся
Acceleration_Overtake_v.1.16fix_(Code_-_Basic).ubi
Для скачивания вложений Вы должны быть зарегистрированы.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Labu559
Лейтенант
Сообщения: 342
Зарегистрирован: 25.01.2018{, 22:23}
Репутация: 86
Откуда: Bukovyna
Имя: Василий

Блоки ускорения

#24

Сообщение Labu559 » 27.07.2021{, 16:02}

AlexCrane писал(а):
27.07.2021{, 07:20}
Dryundel, Di123, ecoins, Теперь таймер не будет переполнятся
Ув. сообщество, гляньте пж. тему "_isTimer нежданчики", где ув. Sancho дал развёрнутый ответ на такого рода, довольно распространённыё проблемы. Попробовал накидать визуализацию:
демонстрационный скетч проблемыПоказать
Overflow_micros3.ino
Overflow_micros(is_Timer).png
добавил скрин симуляции. Замена (по демо-скетчу) 8-битной переменной uint8_t _micros, 32 - битным unsigned long micros() , ничего существенно не изменит- просто отсрочит неизбежное переполнение. Смотрите, анализируйте, если найдёте ошибку- поправляйте, но обе функции (условия) из блоков if((micros() >= (loopTime + time)) и также if (((micros()-loopTime) >= time ) прекращают работать до переполнения (в демоскетче) 8-битных переменных массива loopTime[], (в оригинале) 32-битной переменной unsigned long loopTime, когда loopTime >= (0xFFFFFFFF - time). 0xFFFFFFFF/1000 мкс/1000 мс/60 сек= 71мин 34мс.
Di123 писал(а):
25.07.2021{, 13:39}
...останавливается примерно после 4300 сек = 71 мин
Да ув.Дмитрий Di123, хотя Ваш проект пока трудно назвать образцом для подражания, но Вы правы, и действительно нашли глубоко спрятанную проблему преобладающего колличества блоков использующих ф-и времени millis() и micros().
Для скачивания вложений Вы должны быть зарегистрированы.
Последний раз редактировалось Labu559 28.07.2021{, 08:05}, всего редактировалось 1 раз.

Аватара пользователя
Di123
Лейтенант
Сообщения: 615
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 9
Имя: Дмитрий

Блоки ускорения

#25

Сообщение Di123 » 28.07.2021{, 02:58}

Labu559, с новым блоком покрайне мере работает без проблем два дня
на крайний случай я придумал под этот проект свой блок ускорения

Аватара пользователя
Di123
Лейтенант
Сообщения: 615
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 9
Имя: Дмитрий

Блоки ускорения

#26

Сообщение Di123 » 12.10.2021{, 05:13}

AlexCrane, два месяца без проблем ваша версия отработала
а можно ли её подружить с ремоте ху на ЕСП8266 ?
а то блок вытаскиваю вайфай не работает
убираю работает

Аватара пользователя
AlexCrane
Лейтенант
Сообщения: 629
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 170
Откуда: Ульяновск
Имя: Александр

Блоки ускорения

#27

Сообщение AlexCrane » 12.10.2021{, 07:24}

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

Аватара пользователя
Di123
Лейтенант
Сообщения: 615
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 9
Имя: Дмитрий

Блоки ускорения

#28

Сообщение Di123 » 12.10.2021{, 19:06}

он загружается но к телефону не подключается и на вемосе постоянно моргает светодиод а в уарте какой то мусор хотя он не подключен
2021-10-12_223822.png
удаляю блок ускорения и всё норм загружается и подключается к телефону
тест.flp
Для скачивания вложений Вы должны быть зарегистрированы.

Аватара пользователя
AlexCrane
Лейтенант
Сообщения: 629
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 170
Откуда: Ульяновск
Имя: Александр

Блоки ускорения

#29

Сообщение AlexCrane » 12.10.2021{, 21:26}

Di123, Возможно деление на ноль (там где 4095/сек)
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
Di123
Лейтенант
Сообщения: 615
Зарегистрирован: 03.11.2018{, 19:38}
Репутация: 9
Имя: Дмитрий

Блоки ускорения

#30

Сообщение Di123 » 13.10.2021{, 05:35}

AlexCrane, спасибо теперь заработало всё

Ответить

Вернуться в «Другое»