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

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

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

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

#1

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

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

Описание блоков:
Acceleration Overtake v.1.15 (догоняющий)Показать
Блок изменяет переменную Out в сторону переменной in с заданной скоростью Accel. Другими словами, переменная Var плавно изменяется с положительным ускорением 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. Другими словами, переменная Var плавно изменяется с положительным ускорением 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
(51.04 КБ) 19 скачиваний
Acceleration_Overtake_Plus_v.2.15_(CODE).ubi
(67 КБ) 16 скачиваний
Acceleration_Reverse_v.3.15_(CODE).ubi
(74.21 КБ) 17 скачиваний
Acceleration_Range_v.4.15_(CODE).ubi
(90.81 КБ) 15 скачиваний
Acceleration_Range_Plus_v.5.15_(CODE).ubi
(110.19 КБ) 16 скачиваний
Последний раз редактировалось Dryundel 10.03.2019{, 08:37}, всего редактировалось 1 раз.

Dryundel
Рядовой
Сообщения: 62
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 21
Откуда: Ярославль

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

#2

Сообщение Dryundel » 09.03.2019{, 21:18}

2019-03-08_201328.jpg
Описание работы блоков:

Acceleration Overtake v.1.15 (догоняющий)
Скачать блок
21.jpg
21.jpg (4.47 КБ) 279 просмотров
1.jpg
In – входное значение Out – выходное значение
На схеме видно как значение на выходе Out плавно «догоняет» значение на входе in.
2.jpg
En – сигнал на входе разрешения на работу блока. Как видно из графика в момент снятия сигнала En, ускорение прекращается и возрастание переменной на выходе Out замораживается. Изменения на входе in игнорируются. При возобновлении сигнала на входе En, возрастание Out продолжается, блок продолжает работу с уровня «заморозки». Такое поведение установлено по умолчанию.
3.jpg
С помощью изменения параметра Reset с False на True в параметрах пользователя поведение блока при запрете работы изменяется. Блок начинает работать в режиме сброса ускорения и при запрете работы. В момент снятия сигнала En значение на выходе моментально становится равно значению на входе in. Другими словами значение Out моментально догоняет in. При возобновлении сигнала на En, блок также возобновляет работу со значения на выходе.
Последний раз редактировалось Dryundel 10.03.2019{, 08:43}, всего редактировалось 2 раза.

Dryundel
Рядовой
Сообщения: 62
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 21
Откуда: Ярославль

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

#3

Сообщение Dryundel » 09.03.2019{, 21:25}

4.jpg
Благодаря плавному изменению значения на выходе блок может служить фильтром нежелательных скачков значения на входе.

Acceleration Overtake Plus v.2.15 (догоняющий)
Скачать блок
22.jpg
22.jpg (4.88 КБ) 278 просмотров
Данный блок аналогичен предыдущему Acceleration Overtake Plus v.1.15 и имеет всего одно отличие, это дополнительный вход Brak – торможение. Brak аналогичен входу ускорения Accel но воздействует на переменную Out только при убывании, в то время как Accel воздействует только на возрастание. Благодаря наличию двух значений ускорения возможно задать разные параметры разгона и торможения.

Отправлено спустя 2 часа 8 минут 14 секунд:
Acceleration Reverse v.3.15 (Реверсивный)
Скачать блок
23.jpg
23.jpg (6.61 КБ) 245 просмотров

Этот блок имеет два входных значения MIN и MAX. Переменная Var на выходе изменяется в диапазоне MIN<>MAX. По сути это регулятор оборотов с плавным пуском и стопом и реверсом. Выходное значение Var устанавливается значениями MIN и MAX, а ускорение Accel отвечает за то, как быстро, точней с каким ускорением переменная Var достигнет значения MIN или MAX. Если ускорение Accel положительное значение, то переменная Var стремится к MAX со скоростью Accel. Другими словами, Var плавно изменяется в сторону MAX с ускорением Var. И наоборот, если ускорение Accel отрицательное значение то Var плавно догоняет MIN. Вход VarStatr это стартовое значение переменной Var.

На примере это выглядит так: Предположим MIN и MAX это минимальная и максимальная скорость автомобиля. Значит MIN=0 а MAX=280 (км/ч). Accel педаль газа и тормоза в одном лице, такой вот джойстик. При запуске двигателя скорость автомобиля равна нулю. Значит стартовое значение VarStart устанавливаем «0». Пока Джойстик находится в нейтрале – Accel = 0 и автомобиль стоит, текущая скорость Var = 0. Толкнув джойстик вперед, мы обозначим ускорение Accel = 10 (км/с^2). Текущая скорость Var начнет возрастать с ускорением Accel пока не достигнет максимальной – 280 км/ч. Если на скорости 100 км мы вернем джойстик в нейтраль т.е. установим ускорение Accel = 0, переменная Var = 100 «заморозится» и автомобиль будет двигаться накатом со скоростью 100 км/ч. Для того что бы затормозить необходимо двинуть джойстик в обратную сторону т.е. задать отрицательное ускорение Accel = -20 (км/с^2), в этом случае текущая скорость Var начнет уменьшаться с ускорением -20 (км/с^2) до тех пор пока не достигнет MIN=0 или пока джойстик не вернется в нейтраль.

6.jpg
7.jpg
Последний раз редактировалось Dryundel 10.03.2019{, 11:14}, всего редактировалось 4 раза.

Brand2
Сержант
Сообщения: 159
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 13
Откуда: Haifa
Имя: Alex

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

#4

Сообщение Brand2 » 10.03.2019{, 00:05}

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

Аватара пользователя
Sancho
Полковник
Сообщения: 2509
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 278
Откуда: Ярославль.
Имя: Александр
Контактная информация:

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

#5

Сообщение Sancho » 10.03.2019{, 00:52}

Brand2, В народе - рампа. Или с прибамбасами.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Dryundel
Рядовой
Сообщения: 62
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 21
Откуда: Ярославль

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

#6

Сообщение Dryundel » 10.03.2019{, 08:32}

Acceleration Range v.4.15 (Диапазонный)
Скачать блок
24.jpg
24.jpg (7.07 КБ) 211 просмотров
Этот блок очень похож на предыдущий Acceleration Reverse v.3.15 (Реверсивный), с одной лишь разницей за направление ускорения "+" или "-" отвечает не знак значения на входе Accel, а вход Dir. Если Dir=1 то ускорение положительное (разгоняемся), Если Dir=0 ускорение отрицательное (тормозим). При Accel=0 ускорение отсутствует и переменная Var не изменяется (двигаемся накатом на нейтралке). Так же "нейтралку можно включить", сняв сигнал со входа разрешения работы блока En, тогда изменение переменной Var остановится, при этом не важно какое в этот момент значение ускорения Accel. По аналогии с выжимом сцепления, педаль газа нажата, однако ускорения нет, выжато сцепление. Этот вариант блока бывает очень удобен при создании программ управления разгоном электродвигателя.

Отправлено спустя 1 час 40 минут 59 секунд:
Acceleration Range Plus v.5.15 (Диапазонный)
Скачать блок
25.jpg
25.jpg (7.51 КБ) 190 просмотров
Блок является развитием блока Acceleration Range v.4.15 (Диапазонный) и отличается наличием входа Brak (торможение). Благодаря чему можно задать два различных параметра ускорения. Accel - разгон (положительное ускорение) и Brak торможение (отрицательное ускорение)

Отправлено спустя 17 минут 43 секунды:
Возникает резонный вопрос: А что будет если переменная Var (в блоках 3.15 4.15, 5.15) окажется вне диапазона MIN-MAX. Ну например при старте когда заданы MIN = 500 , MAX = 1000 , а VarStart = 0. Соответственно при старте Var = VarStart = 0.
В этом случае Var всегда будет стремиться вернуться в рабочий диапазон с заданным в этот момент ускорением.
5.jpg
Отправлено спустя 35 минут 28 секунд:
Благодаря стремлению переменной Var вернуться в диапазон MIN-MAX можно организовать пуск двигателя и его работу на двух предустановленных скоростях с плавным переходом разгоном и переходом межу скоростями всего двумя тумблерами.
Для этого достаточно предустановить (вбить константы) первую скорость MIN , вторую скорость MAX , разгон и торможение Accel и Brak и стартовое значение скорости VarStart=0.

Теперь для пуска двигателя включаем тумблер En и двигатель разгоняется до одной из двух скоростей в зависимости от положения тумблера Dir. Если Dir=0 то Var стремится к MIN и разгон продолжается до первой скорости, если же переключить Dir=1 то разоняемся до второй скорости MAX.
Если же двигатель набрал по нашему усмотрению достаточные обороты мы можем зафиксировать ее отключив тумблер во время разгона или торможения. В этом случае переменная Var "заморозится" и двигатель будет работать на зафиксированных в этот момент оборотах.

Конечно же все примеры условные и не включают такие параметры как инерция и скорость реакции исполнительных механизмов.

Отправлено спустя 27 минут 43 секунды:
Представленные блоки ускорения могут с успехом дополнить работу ПИД регуляторов.
8.jpg
8.jpg (7.26 КБ) 171 просмотр
Некоторые механизмы, например обладающие большой инерцией, нельзя запускать подавая максимальную мощность что делает ПИД регулятор в момент пуска. Так же их нельзя резко останавливать если скажем используется червячный редуктор, это приведет к поломке механизма.
Вот тут то и поможет блок плавного запуска.

Brand2
Сержант
Сообщения: 159
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 13
Откуда: Haifa
Имя: Alex

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

#7

Сообщение Brand2 » 10.03.2019{, 11:49}

Тут на форуме была тема про разгон и торможение ШД,интересно, можно ли использовать там эти блоки?

Dryundel
Рядовой
Сообщения: 62
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 21
Откуда: Ярославль

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

#8

Сообщение Dryundel » 10.03.2019{, 14:32}

Brand2 писал(а):
10.03.2019{, 11:49}
Тут на форуме была тема про разгон и торможение ШД,интересно, можно ли использовать там эти блоки?
Если требуется заставить ШД просто крутиться плавно ускоряясь и замедляясь то можно. Но как правило задача ШД (в станках с ЧПУ) стартовать в одной координате и остановиться в другой сделав при этом конкретное количество шагов. А вот для того что бы тормозить при этом с определенным ускорением и пишутся серьезные библиотеки или вообще создаются контроллеры со своим ПО. Которые стоят совсем не дешево и совсем не по причине наличия золота на контактах.

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

Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость