Блок "Ускорение"

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блок "Ускорение"

#1

Сообщение Dryundel » 06.06.2017{, 02:38}

Моя первая работа по написанию блока зашла в тупик.

Блок "Ускорение"
Блок изменяет переменную на выходе var в заданных пределах MIN и MAX за время tAccel (ms)
При подаче 1 на вход On переменная var возрастает или убывает (в зависимости от пределов MIN и MAX) с заданной скоростью.
При наличии 0  на вход On переменная var совершает обратное действие.
Поддерживаются как положительные так и отрицательные значения пределов MIN и MAX.
Если MIN > MAX то возрастание является убыванием.

Все вроде бы работает, за исключением маленькой детали.
Если значения пределов MIN и MAX разнополярны, т.е. к примеру MIN= -10 а MAX= 15 то не получается создать условие которое при запуске или перезагрузке установит на выходе var значение MIN

ПАМАГИТЕ !!! Плиз.
Вложения
Acceleration2-C.ubi
(50.41 КБ) 56 скачиваний
Последний раз редактировалось Dryundel 06.06.2017{, 02:55}, всего редактировалось 1 раз.

Аватара пользователя
Dev1
Майор
Сообщения: 1026
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 59
Откуда: Гондурас

Блок "Ускорение"

#2

Сообщение Dev1 » 06.06.2017{, 08:47}

А блок нелинейное масштабирование не пробовали? То же как то пытался вычислять значение температуры по графику через ускорение, подсказали нелинейное масштабирование. На вход задаем время, на выход значение переменной var и в зависимости от входного значения времени получите на выходе уже вычисленную переменную. Все исходные данные можно менять налету если в точках перегиба задавать значения через вход.
Вложения
2193570.jpg
Win10-64 FLProg v7.5.2 Portable :fie:

pan
Полковник
Сообщения: 2860
Зарегистрирован: 13.04.2017{, 11:57}
Репутация: 204
Имя: noname

Блок "Ускорение"

#3

Сообщение pan » 06.06.2017{, 08:52}

поглядите этот замечательный блок https://yadi.sk/d/PF1D00rorWinT . не моё. автор Boroda.
Последний раз редактировалось pan 06.06.2017{, 08:53}, всего редактировалось 1 раз.

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

Блок "Ускорение"

#4

Сообщение Dryundel » 07.06.2017{, 17:25}

pan писал(а):поглядите этот замечательный блок https://yadi.sk/d/PF1D00rorWinT . не моё. автор Boroda.
Пробовал и оценил по достоинству. Действительно отличный блок.
Только совсем не то, что требуется. Во первых блок рассчитан управление двумя кнопками и конкретно кнопками, во вторых привязка к времени достижения переменной заданного значения не так уж проста, через время одного тика, что не позволяет изменять скорость (ускорение) "на лету". Ну и вообще идея заложенная в блок весьма отличается.

Прикладная суть использования моего блока такая:

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

Или к примеру плавный пуск/останов/смена оборотов двигателя с заданным ускорением. И все это управляется одним сигналом плюс регулировка параметров "на лету" или задание времени разгона, а так же смена минимального и максимального значения так же "на лету" в прцессе отработки.

Можно к примеру организовать плавное управление скоростью радиоуправляемой моделью с джойстика (педали) - "нажал педаль сильней" и ускорение увеличилось.

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

Но в процессе написания усмотрелась универсальность использования, вот и заморочился с отрицательными значениями и вариантами когда MAX<MIN.

Добавлено (06.06.2017, 10:23)
---------------------------------------------
Dev1 писал(а):А блок нелинейное масштабирование не пробовали?
Честно говоря не пришло в голову. Но задумки, описанной мной в предыдущем ответе, думаю добиться будет не очень просто.

В первую очередь блок задумывался для управления ускорением "на лету".

/

Добавлено (07.06.2017, 17:25)
---------------------------------------------
Блок Acceleration (Ускорение) доведен до логического завершения и протестирован.

Функционал:
Блок изменяет переменную Var в заданных пределах MIN и MAX с заданной скоростью Accel, и в сторону зависящую от сигнала на входе ON.
Когда (On = 1) то переменная Var стремится к MAX (возрастает), с заданной скоростью Accel (step/s) .
Когда (On = 0) то переменная Var стремится к MIN (убывает), с заданной скоростью Accel (step/s).
Поддерживаются как положительные так и отрицательные значения пределов MIN и MAX.
Если MIN > MAX то возрастание является убыванием.
Отрицательные значения Accel не поддерживаются !!!

Поддерживается изменение любых параметров "на лету".

Буду признателен за тестирование и комментарии.

Acceleration_v.4

Пример использования (FlProg)  Тест_v.4
Схема для тестирования (Proteus)  УскорениеТест
Последний раз редактировалось Dryundel 07.06.2017{, 22:17}, всего редактировалось 1 раз.

Ответить

Вернуться в «Спросить у знатоков»