реклама на сайте
подробности

 
 
> Алгоритм линейного ускорения-торможения ШД, Есть элегантное решение?
dinam
сообщение May 4 2009, 04:53
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Сваял плату управления четырьмя ШД. В известной статье , авторства Л.Pидико есть формула: T = T0/(1+T0At), где T – длительность шага, T0 – начальная длительность шага, A – ускорение, t – текущее время. У меня управление ШД сделано на самом хилом Cyclone II. При попытке в лоб реализовать эту формулу съедаются все ресурсы FPGA даже при управлении одного ШД. Может быть есть более элегантное решение позволяющее вычислить период следующего шага при линейном ускорении-торможении?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Methane
сообщение May 4 2009, 05:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(dinam @ May 4 2009, 07:53) *
Сваял плату управления четырьмя ШД. В известной статье , авторства Л.Pидико есть формула: T = T0/(1+T0At), где T – длительность шага, T0 – начальная длительность шага, A – ускорение, t – текущее время. У меня управление ШД сделано на самом хилом Cyclone II. При попытке в лоб реализовать эту формулу съедаются все ресурсы FPGA даже при управлении одного ШД. Может быть есть более элегантное решение позволяющее вычислить период следующего шага при линейном ускорении-торможении?

Там же есть макрофункция ROM. В нее и запишите значения. А потом просто инкрементируйте адресс, с данных получайте время шага. Хотя что-то сомнительно что одно умножение на константу у вас циклон второй съело.
Go to the top of the page
 
+Quote Post
dinam
сообщение May 4 2009, 06:04
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Не совсем понял про какую вы таблицу говорите. Ведь у меня в этой формуле есть три переменные. T0 и А задаются с компьютера и t берется со счетчика в FPGA. Умножение практические не съедает ресурсов, используются аппаратные умножители. Основная проблема в делениии.
Go to the top of the page
 
+Quote Post
Methane
сообщение May 4 2009, 06:29
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(dinam @ May 4 2009, 09:04) *
Не совсем понял про какую вы таблицу говорите. Ведь у меня в этой формуле есть три переменные. T0 и А задаются с компьютера и t берется со счетчика в FPGA. Умножение практические не съедает ресурсов, используются аппаратные умножители. Основная проблема в делениии.

Ну так замените деление умножением. Если не можете формулу упростить.
Go to the top of the page
 
+Quote Post
dinam
сообщение May 4 2009, 07:38
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Цитата(Methane @ May 4 2009, 13:29) *
Ну так замените деление умножением. Если не можете формулу упростить.
А поконкретнее можно?
Цитата(evgeny_ch @ May 4 2009, 14:14) *
Не совсем верный заголовок в части формулировки линейное ускорение/торможение.
Ускорение ШД (точнее механизма с ШД) принимается равным константе, а изменяется лишь скорость (частота вращения).
Правильно говорить разгон/торможение как закон изменения скорости, который может быть и нелинейным.
Возможно вы и правы cheers.gif . Сейчас у меня реализован нелинейный закон изменения скорости при разгоне и торможении. К тому же ещё и можно задавать разные значения при разгоне/торможении. И всё это хозяйство немного ресурсов требует. А вот линейное изменение скорости у меня пока не получается.
Go to the top of the page
 
+Quote Post
Methane
сообщение May 4 2009, 07:51
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230



Цитата(dinam @ May 4 2009, 10:38) *
А поконкретнее можно?

Ну вынесите в таблицу значения

Y[i]=T0/(1+T0*A*t[i])

Или вообще сделайте обратную связь по перемещению шагового двигателя.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение May 4 2009, 08:06
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782



Цитата(Methane @ May 4 2009, 11:51) *
Ну вынесите в таблицу значения

Y[i]=T0/(1+T0*A*t[i])

Или вообще сделайте обратную связь по перемещению шагового двигателя.

А без обратной связи по скорости ИМХО задача для произвольной нагрузки вообще не решается.
Go to the top of the page
 
+Quote Post
dinam
сообщение May 4 2009, 08:13
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 415
Регистрация: 10-06-05
Из: Наукоград Кольцово(Новосибирск)
Пользователь №: 5 898



Цитата(VladimirYU @ May 4 2009, 15:06) *
А без обратной связи по скорости ИМХО задача для произвольной нагрузки вообще не решается.
Ну такая задача не стоит. Т.к. предполагается что при любых заданных движениях пропусков шагов или другой бяки не происходит smile.gif . На всякий случай на исполнительном механизме стоит абсолютный датчик угловых перемещений.
Цитата(Methane @ May 4 2009, 15:11) *
Не по скорости а по перемещению. И решается. Если забивать в программу момент который эта нагрузка создает. Но это в теории. А на практике, лучше повесить на двигатель енкодер с дырками, и по этому енкодеру смотреть, шагнул двигатель или еще нет.
Да и тяжеловато это будет сделать. Сейчас у меня происходит управление по микрошагам. В каждом шаге 16 микрошагов. Двигатель с нагрузкой в виде абсолютного энкодера отрабатывает сейчас более 10 тыс. шагов в секуду. И это ещё не предел по силовой части. В общем хочется реализовать линейность именно в математике алгоритма, без всяких внешних датчиков.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- dinam   Алгоритм линейного ускорения-торможения ШД   May 4 2009, 04:53
- - LessNik   С Cyclone II не работал. Но думаю, можешь сгенерит...   May 4 2009, 05:18
||- - dinam   Цитата(Methane @ May 4 2009, 14:51) Ну вы...   May 4 2009, 08:03
|||- - Methane   Цитата(dinam @ May 4 2009, 11:03) Если б ...   May 4 2009, 08:09
||- - Methane   Цитата(VladimirYU @ May 4 2009, 11:06) А ...   May 4 2009, 08:11
|||- - VladimirYU   Цитата(Methane @ May 4 2009, 12:11) Не по...   May 4 2009, 08:21
|||- - evgeny_ch   Цитата(Methane @ May 4 2009, 11:11) Не по...   May 4 2009, 08:23
|||- - Methane   Цитата(evgeny_ch @ May 4 2009, 11:23) Не ...   May 4 2009, 08:26
|||- - evgeny_ch   Цитата(Methane @ May 4 2009, 11:26) Ну? Н...   May 4 2009, 10:44
|- - evgeny_ch   Цитата(dinam @ May 4 2009, 10:38) А покон...   May 4 2009, 08:11
- - evgeny_ch   Цитата(dinam @ May 4 2009, 07:53) Сваял п...   May 4 2009, 07:14
- - _Pasha   Я тут подумал: раз у нас все сводится к конечным з...   May 4 2009, 08:53
|- - Огурцов   Поставьте датчик ускорения - будет красиво   May 4 2009, 09:38
- - khach   "Красиво" управлять шаговиком- это тольк...   May 4 2009, 10:22
|- - Methane   Цитата(khach @ May 4 2009, 13:22) По обра...   May 4 2009, 10:41
|- - khach   Цитата(Methane @ May 4 2009, 12:41) Зачем...   May 4 2009, 11:56
|- - dpss   Цитата(khach @ May 4 2009, 15:56) При пла...   May 5 2009, 15:51
|- - _Pasha   Цитата(dpss @ May 5 2009, 18:51) При S об...   May 5 2009, 17:13
- - Skywolf   а самый младший Cyclone II это 5 тыс. который что ...   May 7 2009, 07:01
- - dinam   Да это на 4600 LEs. По поводу разрядности делителя...   May 8 2009, 06:55


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 07:28
Рейтинг@Mail.ru


Страница сгенерированна за 0.01476 секунд с 7
ELECTRONIX ©2004-2016