FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Вторник, 27.06.2017, 20:18
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Блок "Ускорение" (Помогите застрял !!!)
Блок "Ускорение"
Dryundel Дата: Вторник, 06.06.2017, 02:38 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
Моя первая работа по написанию блока зашла в тупик.

Блок "Ускорение"
Блок изменяет переменную на выходе 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(50Kb)


Сообщение отредактировал Dryundel - Вторник, 06.06.2017, 02:55
 
Dev1 Дата: Вторник, 06.06.2017, 08:47 | Сообщение # 2
Полковник
Группа: Проверенные
Сообщений: 326
Награды: 7
Репутация: 8
Статус: Offline
А блок нелинейное масштабирование не пробовали? То же как то пытался вычислять значение температуры по графику через ускорение, подсказали нелинейное масштабирование. На вход задаем время, на выход значение переменной var и в зависимости от входного значения времени получите на выходе уже вычисленную переменную. Все исходные данные можно менять налету если в точках перегиба задавать значения через вход.
Прикрепления: 2193570.jpg(56Kb)


Win7/10-64 FLProg v2.5.1 external IDE 1.8.3

 
pan Дата: Вторник, 06.06.2017, 08:52 | Сообщение # 3
Полковник
Группа: Проверенные
Сообщений: 330
Награды: 12
Репутация: 7
Статус: Offline
поглядите этот замечательный блок https://yadi.sk/d/PF1D00rorWinT . не моё. автор Boroda.

Сообщение отредактировал pan - Вторник, 06.06.2017, 08:53
 
Dryundel Дата: Среда, 07.06.2017, 17:25 | Сообщение # 4
Рядовой
Группа: Проверенные
Сообщений: 16
Награды: 0
Репутация: 0
Статус: Offline
Цитата pan ()
поглядите этот замечательный блок https://yadi.sk/d/PF1D00rorWinT . не моё. автор Boroda.

Пробовал и оценил по достоинству. Действительно отличный блок.
Только совсем не то, что требуется. Во первых блок рассчитан управление двумя кнопками и конкретно кнопками, во вторых привязка к времени достижения переменной заданного значения не так уж проста, через время одного тика, что не позволяет изменять скорость (ускорение) "на лету". Ну и вообще идея заложенная в блок весьма отличается.

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

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

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

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

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

Но в процессе написания усмотрелась универсальность использования, вот и заморочился с отрицательными значениями и вариантами когда 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 из 11
Поиск:

FLProg © 2017
Яндекс.Метрика