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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Перемещение по декартовой СК
_lukash_
сообщение Nov 24 2007, 21:41
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



Всем привет!

Нужно перемещать головку по декартовой СК. Траектории движений всегда должны быть прямыми отрезками при равномерном разгоне и торможении.
Т.е. знаем 4 величины - x,y,x0,y0, и по ним требуется рассчитать общее время перемещения (оно будет равное и для двигателя по Х, и для двигателя по оси У), максимальную скорость каждого двигателя после разгона/перед торможением, и соответственно величину ускорения/торможения для каждого двигателя. При этом уже есть некоторые заранее известные значения - максимальное ускорение, максимальная скорость.
Существуют ли какие-то наработки по этой теме? Вроде то как ниче сложного и нет, но вот к примеру остановить двигатель в нужном месте вроде тож не оч сложно, а используется ПИД регуляция со всякими формуламиsmile.gif

Нарисовал мой вариант решения (блок-схему) этого алгоритма, возможно не совсем правильную, хотелось бы услышать по этой теме несколько советов, возможно уже где-то есть красивая реализация алгоритма?

Прикрепленное изображение
Go to the top of the page
 
+Quote Post
uriy
сообщение Nov 25 2007, 07:35
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Что-то меня смущает блок:
Определим путь ускорения/торможения
L_amax = (a_t^2)/2
Не нашел описания переменной a_t что это?
Насколько я помню из физики, растояние пройденное при равномерном ускорении определяется как L_amax = (a*t^2)/2.
Но если мы не начали движение откуда нам знать величину ускорения и время?
PS Прошу прощенья за оффтоп, но подобные картинки где мало цветов (тут их два черный и белый), тонкие линии и контрастные переходы лучше сэйвить в GIF, качество будет гораздо выше (не будет артефактов при переходе цветов), а объем меньше чем JPG.
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 25 2007, 10:26
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



Цитата(urasinov @ Nov 25 2007, 09:35) *
Что-то меня смущает блок:
Определим путь ускорения/торможения
L_amax = (a_t^2)/2
Не нашел описания переменной a_t что это?
Насколько я помню из физики, растояние пройденное при равномерном ускорении определяется как L_amax = (a*t^2)/2.
Но если мы не начали движение откуда нам знать величину ускорения и время?

Да, ошибка.
L_amax - ето перемещение за время ускорения/торможения. Получается, что мы его знаем еще до начала движения, т.к. мы знаем максимальную скорость V_max, и максимальное ускорение a_max - и это константы - они экспериментально потом находятся.

Я считал, что возможно только 2 варианта:
1- двигатель разгоняется до V_max с ускорением a_max, проходя путь L_amax, затем некоторое время движется с максимальной скоростью, и затем тормозит с тем же ускорением a_max до 0-ой скорости, также проходя путь L_amax. Торможение/ускорение будет регулироваться программно ,т.е. не сразу пытаемся крутить двигатель с 3000об/мин, а постепенно увеличивая обороны. Так и получится одинаковое ускорение при разгоне/торможении.

2- двигатель не успевает разогнаться до V_max, т.к. общее перемещение меньше, чем то, которое требуется для разгона+торможения до V_max. Поэтому в этом случае беру время на разгон такое же как и в первом случае ,но ускорение умножаю еще на koefA, чтоб не разгонятся до максимальной скорости и успеть затормозить.

Для этого я и считаю L_amax, чтоб потом сверить большую координату(ту, по которой перемещение больше) с величиной 2*L_amax. Так я узнаю какой вариант будет (успеет разогнаться до V_max или нет)

Пересчитал L_amax
t_amax=V_max/a_max
L_amax= (a_max*t_amax^2)/2

Возможно я еще чет не учел?

Цитата(urasinov @ Nov 25 2007, 09:35) *
PS Прошу прощенья за оффтоп, но подобные картинки где мало цветов (тут их два черный и белый), тонкие линии и контрастные переходы лучше сэйвить в GIF, качество будет гораздо выше (не будет артефактов при переходе цветов), а объем меньше чем JPG.

Ок, приаттачил с исправлением, только уже не картинкой, о оригинальным файлом от FCEditor. Возможно, так лучше будет (9Кб)

Прикрепленный файл  blok_cxema.rar ( 1.41 килобайт ) Кол-во скачиваний: 164


Прикрепленный файл  FCEditor.rar ( 1.88 мегабайт ) Кол-во скачиваний: 137
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 25 2007, 15:54
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(_lukash_ @ Nov 25 2007, 00:41) *
Всем привет!

Нужно перемещать головку по декартовой СК. Траектории движений всегда должны быть прямыми отрезками при равномерном разгоне и торможении.

В поставленных Вами условиях каждый отрезок будет (должен) кончаться (и начинаться с) полной остановкой - скорость=0.
Тогда в чем вопрос?
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 25 2007, 16:38
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



Вопрос заключался в том, что я хотел посмотреть на похожие уже реализованные алгоритмы, т.к. был не уверен что учел все основные моменты в своем решении.
Еще поискал, почитал, вроде нормально будет.
Всем спасибо, тему можно закрывать. Извиняйте за немного странную темуsmile.gif
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 25 2007, 16:45
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(_lukash_ @ Nov 25 2007, 13:26) *
2- двигатель не успевает разогнаться до V_max, т.к. общее перемещение меньше, чем то, которое требуется для разгона+торможения до V_max. Поэтому в этом случае беру время на разгон такое же как и в первом случае ,но ускорение умножаю еще на koefA, чтоб не разгонятся до максимальной скорости и успеть затормозить.

Тут ошибка. Разгоняться нужно всегда с максимальным ускорением. Ровно на середине отрезка знак ускорения меняется....
Равно, как и в первом случае. Путь (и время) ускорения = пути (времени) замедления
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 25 2007, 17:13
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



Цитата(Tanya @ Nov 25 2007, 18:45) *
Тут ошибка. Разгоняться нужно всегда с максимальным ускорением. Ровно на середине отрезка знак ускорения меняется....
Равно, как и в первом случае. Путь (и время) ускорения = пути (времени) замедления

Я тож сначала так хотел сделать, но потом чет по времени решил вычислять все величины. А посчитать время момента переключения ускорение-торможение не получилось.
Значит нужно будет не по времени все считать, а по импульсах с датчиков Холла в двигателях, и делать так, как Вы написали. Тогда легче будет определить середину отрезка, и точнее будет, да?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 25 2007, 17:28
Сообщение #8


Гуру
******

Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883



Цитата(_lukash_ @ Nov 25 2007, 20:13) *
Я тож сначала так хотел сделать, но потом чет по времени решил вычислять все величины. А посчитать время момента переключения ускорение-торможение не получилось.
Значит нужно будет не по времени все считать, а по импульсах с датчиков Холла в двигателях, и делать так, как Вы написали. Тогда легче будет определить середину отрезка, и точнее будет, да?

Реальность сложнее наших представлений о ней (формул). Кто даст гарантию, что ускорение будет по модулю точно воспроизводиться..., и их соотношение по координатам? Возможно, что будет перебег или недобег.
Более того, ошибка в ускорении будет умножаться на время в квадрате для пересчета в ошибку в координате.
Будь у Вас шаговые двигатели, проблем было бы меньше. А в Вашем случае, действительно, надежнее следить за координатой (ведь это у Вас целевая функция?) и регулировать это дело ПИД'ом.
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 25 2007, 18:19
Сообщение #9


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



Ок, спасибо.
Ща про ПИД (в моем случае, наверно, только П-составляющая потребуется) регулирование почитаю глубже, а то только оч поверхностно знаю че это такое. А то перебег/недобег я совсем не учелsmile.gif
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Nov 26 2007, 06:58
Сообщение #10





Guests






Цитата(_lukash_ @ Nov 25 2007, 21:19) *
Ок, спасибо.
Ща про ПИД (в моем случае, наверно, только П-составляющая потребуется) регулирование почитаю глубже, а то только оч поверхностно знаю че это такое. А то перебег/недобег я совсем не учелsmile.gif



Без обратной связи по координатам все будет очень плохо.
Go to the top of the page
 
+Quote Post
uriy
сообщение Nov 26 2007, 09:54
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



В качестве обратной связи наверно подойдет что-то типа ленты с рисками как в струйном принтере. На концах сделать спошную заливку прозрачной ленты, а в рабочей области риски. И считывать все это дело оптопарой.
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 26 2007, 13:07
Сообщение #12


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



А чем не устраивают датчики Холла в двигателях в качестве датчиков обратной связи?

Там ведь еще редуктор будет, и по идее по датчикам Холла можно будет достаточно точно все это позиционировать, если считать, что если вал двигателя повернулся на некоторый угол, то _обязательно_ пропорционально этому углу переместится каретка.
Именно из-за этого и были выбраны двигатели с датчиком Холла.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 26 2007, 13:50
Сообщение #13


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(_lukash_ @ Nov 25 2007, 00:41) *

Ваша задача типовая для устройств с числовым программным управлением.
Как я решал эти задачи.
Как делается многокоординатная система.
Каждая координата имеет обратную связь по положению.
Вы имеете линейную интерполяцию, если нужно из точки А приехать в точку Б.
Подготовка.
1.Вы считываете длину пути, как корень квадратный из квадратов перемещений по координатам.
2.Высчитываете косинусы для каждой координаты.

По таймеру выполняется:
1. Расчет показаний датчиков.
2. Замыкание следящих систем.
3. Алгоритм разгона-замедления.
4. Диспетчер интерполяций.
4.1. Расчеты приращений по координатам и новые координаты.

Все.
Go to the top of the page
 
+Quote Post
uriy
сообщение Nov 26 2007, 15:51
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 429
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Цитата
1.Вы считываете длину пути, как корень квадратный из квадратов перемещений по координатам.2.Высчитываете косинусы для каждой координаты.
Что нам даст знание косинусов? По-моему гораздо удобнее знать перемещение отдельно по каждой из координат Х и У.
Go to the top of the page
 
+Quote Post
_lukash_
сообщение Nov 26 2007, 18:01
Сообщение #15


Частый гость
**

Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222



А можно немного объяснить по пункту 4 - про интерполяцию и приращение по координатам? Т.е. с самой интерполяцией я разобрался, а как ее здесь применить не оч понял.

ЗЫ Нагуглил по ЧПУ инфы, разбираюсь...
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 5th July 2025 - 17:42
Рейтинг@Mail.ru


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