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

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

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

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

#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
(51.04 КБ) 273 скачивания
Acceleration_Overtake_Plus_v.2.15_(CODE).ubi
(67 КБ) 226 скачиваний
Acceleration_Reverse_v.3.15_(CODE).ubi
(74.21 КБ) 243 скачивания
Acceleration_Range_v.4.15_(CODE).ubi
(90.81 КБ) 213 скачиваний
Acceleration_Range_Plus_v.5.15_(CODE).ubi
(110.19 КБ) 239 скачиваний
Последний раз редактировалось Dryundel 04.10.2020{, 21:51}, всего редактировалось 4 раза.

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

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

#2

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

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

Acceleration Overtake v.1.15 (догоняющий)
Скачать блок
21.jpg
21.jpg (4.47 КБ) 3661 просмотр
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
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#3

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

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

Acceleration Overtake Plus v.2.15 (догоняющий)
Скачать блок
22.jpg
22.jpg (4.88 КБ) 3660 просмотров
Данный блок аналогичен предыдущему 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 КБ) 3627 просмотров

Этот блок имеет два входных значения 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
Лейтенант
Сообщения: 414
Зарегистрирован: 26.02.2018{, 21:27}
Репутация: 42
Откуда: Haifa
Имя: Alex

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

#4

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

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

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

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

#5

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

Brand2, В народе - рампа. Или с прибамбасами.
мой ник в нете и почте omelchuk890, если что. запомните на всякий. многие знают номер тлф.

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

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

#6

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

Acceleration Range v.4.15 (Диапазонный)
Скачать блок
24.jpg
24.jpg (7.07 КБ) 3593 просмотра
Этот блок очень похож на предыдущий 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 КБ) 3572 просмотра
Блок является развитием блока 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 КБ) 3553 просмотра
Некоторые механизмы, например обладающие большой инерцией, нельзя запускать подавая максимальную мощность что делает ПИД регулятор в момент пуска. Так же их нельзя резко останавливать если скажем используется червячный редуктор, это приведет к поломке механизма.
Вот тут то и поможет блок плавного запуска.

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

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

#7

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

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

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

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

#8

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

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

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

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

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

#9

Сообщение Di123 » 03.10.2020{, 10:52}

ничего не работает
2020-10-03_144742.png
2020-10-03_144742.png (1.32 КБ) 2251 просмотр
подключил шим
но каждый раз светодиод включается сразу же при разных настройках

написано Accel (step/s)
степ = 10
акес = 1
10/1=10 сек плавного загорания но он работает как обычный включатель

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

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

#10

Сообщение Dryundel » 04.10.2020{, 09:18}

Di123 писал(а):
03.10.2020{, 10:52}
ничего не работает
У Вас, уважаемый, всегда ничего не работает.
А все потому, что чукча не читатель, чукча писатель. И как только этот факт хоть немного изменится, все встанет на свои места и заработает.

Во первых, в описании четко сказано:
Dryundel писал(а):
09.03.2019{, 20:59}
При старте (начале работы), переменной Out присваивается значение со входа in.
.
Во вторых, Вы пишете что Accel = 1 , а на скрине я вижу 1000

В третьих, блок призван плавно изменять и передавать на выход, резко изменяющееся значение со входа in, а у Вас на входе константа. Так что же по вашему должен делать блок, если значение на входе не изменяется?

В четвертых: Если вы хотите плавно изменять значение от 0 до 255 и обратно со скоростью 1000 шагов в секунду то и полУчите изменение значения от 0 до 255 менее чем 1/4 секунды. А если еще ставите в настройках step = 10 то за один шаг значение увеличивается (уменьшается) не на 1 а на 10 и плавное включение будет происходить уже за 1/40 секунды.

Так что, прежде чем кричать "ничего не работает", попробуйте внимательно прочитать описание и вникнуть в суть.

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

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

#11

Сообщение Di123 » 24.07.2021{, 14:32}

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

СпойлерПоказать

если его отдельно расположить то он работает часами без проблем 13 вывод молчит
2021-07-24_181034.png
2021-07-24_181034.png (5.7 КБ) 1380 просмотров

даже если добавить пвм то тоже несколько часов теста всё норм
2021-07-24_181053.png
2021-07-24_181053.png (6.86 КБ) 1380 просмотров

но стоит запустить проект как через пару часов выход у аццел отваливается что и оповещает 13 вывод
2021-07-24_181446.png

думал может у меня проблемы со входом какието но уарт чотко говорит что аццел умирает через пару часов
2021-07-24_180806.png
до инцидента
2021-07-24_180706.png
после
2021-07-24_180607.png
то что выход молчит я и без уарта видел по нагрузке просто были сомнения что возможно ускорение падает в ноль какимто образом или на вход вдруг перестаёт подаваться сигнал

проект 2,0.rar
(155.91 КБ) 34 скачивания

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

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

#12

Сообщение AlexCrane » 24.07.2021{, 20:13}

Не актуально....
Последний раз редактировалось AlexCrane 27.07.2021{, 13:16}, всего редактировалось 1 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#13

Сообщение Di123 » 25.07.2021{, 05:38}

нет не помогает
так же примерно через 1:20 перестаёт выход работать
загрузил на 4 ардуины с шагом подачи на вход сигнала 5/10/30/60 минут и первые две уже сработали на последнии ещё опрос не пришол по времени

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

ну вот пока писал сработала третья плата через 1:30 как и говорил пришло время опроса значит чрез полчаса сработает четвёртая плата по опросу потомучто выход у блока уже завис 10 минут назад

Отправлено спустя 4 минуты 39 секунд:
может блок нельзя держать включенным дольше примерно 80 минут что возможно он переполняет какой то буфер памяти

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

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

#14

Сообщение ecoins » 25.07.2021{, 08:57}

Di123 писал(а):
25.07.2021{, 05:43}
Отправлено спустя 4 минуты 39 секунд:
может блок нельзя держать включенным дольше примерно 80 минут что возможно он переполняет какой то буфер памяти
Посмотрел один из блоков.
Зависание - это перестает работать один из двигателей, а все остальное работает?
Если так, то это возможно из-за не очень аккуратной работы в блоках с временами в mcs - так называемое "переполнение таймера".
Если выложите упрощенный пример(проект) с "зависанием", то мы его посмотрим и возможно что-то обнаружим.

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

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

#15

Сообщение Di123 » 25.07.2021{, 09:24}

ecoins, это подсветка
да кнопки , епром , 13 пин , и уарт всё работает только шим отваливается со временем

проект 2,0.rar
(155.91 КБ) 35 скачиваний

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

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

#16

Сообщение AlexCrane » 25.07.2021{, 09:29}

Di123, ecoins, micros переполняется, если мне не изменяет память, через 71,5 минуты. Выше пытался убрать не помогло видимо....
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

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

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

#17

Сообщение Di123 » 25.07.2021{, 09:29}

тест 1,15.rar
(168.62 КБ) 33 скачивания
это проверочный
если запустить то примерно через 80 минут загорится 13 вывод

Отправлено спустя 1 час 48 минут 58 секунд:
попробывал выцепить время глюка и да оно примерно через 75 минут +/- 5 минут по опросу входа генератором
а дальше он каждые 5 минут стучится в уарт пока не отвиснет выход и мне что то припоминается что он вроде самоотвисал но потом снова зависал
оставлю на ночь посмотрим
2021-07-25_151309.png

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

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

#18

Сообщение ecoins » 25.07.2021{, 11:34}

Di123 писал(а):
25.07.2021{, 09:24}
ecoins, это подсветка
да кнопки , епром , 13 пин , и уарт всё работает только шим отваливается со временем
Не вполне понятно про пин.13:
1.вывод на пин.13 выполняется на плате.5. Если контакт.13 =1, то и пин.13 будет=1.
2.контакт.13 формируется на первой плате через триггер SR. Если он защелкнется, то уже не отключиться до отключения питания (так как вход R=false).
контакт.13 будет =1 после того как выход блока >0. После этого защелкнется триггер, контакт.13=пин.13=1.
3.Не понятно назначение на плате.1 цепочки G-AM->RTrig->TOF(10сек)->FTrig->AND. Наверное не влияет на результат, но... вроде и лишнее.
4.Из поста #11 вроде следует, что следствием прекращения работы является то, что входной сигнал Accel.in=0, соответственно на выходе блока 0.
-----
Вывод - проблема не в блоке Accel.
-----
Возможно это проект компиляция разных идей от разных авторов - очень громоздко и сложно.
Может бы Вы изложить требование к проекту (чего хочется, по пунктам) и проблема сама рассосется, и помочь будет проще.

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

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

#19

Сообщение Di123 » 25.07.2021{, 11:50}

1 - это понятно и я его просто использую как сигнализатор неисправности
2 - всё верно как он сработает значит что то не так
3 - да верно она не влияет на результат потомучто я её добавил потом для отслеживания входного сигнала и сравнения его с выходным и если за 10 сек там непоявился на выходе ничего то загорается 13 светодиод в принципи там и 2 сек хватило бы ибо скорость нарастания выхода блока равна 1 сек
4 - нет как раз то таки он равен 4095 я там и выделил его в компорте от начало до конца а вот выход у него молчит в это время
2021-07-24_180607.png
Отправлено спустя 7 минут 34 секунды:
2021-07-24_180706.png
низнаю как ещё понятне доходчеве обьяснить

Отправлено спустя 4 минуты 55 секунд:
сейчас заместо тригера и 13 пин я поставил уарт
было идеально до 75 минут работы
дальше через 1 час и 15 минут перестал работать выход
в уарт досих пор отправляет данные через каждые 5 минут на генераторе
как только выход отвиснет то уарт замолчит
если отвиснет конечно
Вложения
2021-07-25_155950.png

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

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

#20

Сообщение ecoins » 25.07.2021{, 12:54}

Di123 писал(а):
25.07.2021{, 12:03}
4 - нет как раз то таки он равен 4095 я там и выделил его в компорте от начало до конца а вот выход у него молчит в это время
Возможно Вы правы и не там посмотрел. Но если выход на UART реализован как в #11,
то там параметры в следующей последовательности:
1.вкл/выкл (bool);
2.удержание (bool);
3.ночник(bool);
4.удержание (int)=30000;
5. 30*ночник=0;
6.4095/ вкл/выкл -плохая идея делить на 0, лучше заменить на SWITCH. =4095.
7.Вход in - синим на рисунке. Было 4095, стало 0.
8.Выход Accel - было 4095->2032,232,0....
9.bool
-----
Вроде как in=0.
-----
Как мог, поучаствовал.
Думаю, что блок Accel здесь не очень уместен.
Проект сделал бы иначе, на блоках ecoins. И проще был бы, и тестировать было бы проще.
Предложение по формулированию требования к проекту видимо оказалось не интересным.
------
Успехов.

Ответить

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