|
Перемещение по декартовой СК |
|
|
|
Nov 24 2007, 21:41
|
Частый гость
 
Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222

|
Всем привет! Нужно перемещать головку по декартовой СК. Траектории движений всегда должны быть прямыми отрезками при равномерном разгоне и торможении. Т.е. знаем 4 величины - x,y,x0,y0, и по ним требуется рассчитать общее время перемещения (оно будет равное и для двигателя по Х, и для двигателя по оси У), максимальную скорость каждого двигателя после разгона/перед торможением, и соответственно величину ускорения/торможения для каждого двигателя. При этом уже есть некоторые заранее известные значения - максимальное ускорение, максимальная скорость. Существуют ли какие-то наработки по этой теме? Вроде то как ниче сложного и нет, но вот к примеру остановить двигатель в нужном месте вроде тож не оч сложно, а используется ПИД регуляция со всякими формулами  Нарисовал мой вариант решения (блок-схему) этого алгоритма, возможно не совсем правильную, хотелось бы услышать по этой теме несколько советов, возможно уже где-то есть красивая реализация алгоритма?
|
|
|
|
|
 |
Ответов
|
Nov 25 2007, 10:26
|
Частый гость
 
Группа: Свой
Сообщений: 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
|
|
|
|
|
Nov 25 2007, 17:13
|
Частый гость
 
Группа: Свой
Сообщений: 126
Регистрация: 1-09-07
Из: Винница
Пользователь №: 30 222

|
Цитата(Tanya @ Nov 25 2007, 18:45)  Тут ошибка. Разгоняться нужно всегда с максимальным ускорением. Ровно на середине отрезка знак ускорения меняется.... Равно, как и в первом случае. Путь (и время) ускорения = пути (времени) замедления Я тож сначала так хотел сделать, но потом чет по времени решил вычислять все величины. А посчитать время момента переключения ускорение-торможение не получилось. Значит нужно будет не по времени все считать, а по импульсах с датчиков Холла в двигателях, и делать так, как Вы написали. Тогда легче будет определить середину отрезка, и точнее будет, да?
|
|
|
|
Сообщений в этой теме
_lukash_ Перемещение по декартовой СК Nov 24 2007, 21:41    Tanya Цитата(_lukash_ @ Nov 25 2007, 20:13) Я т... Nov 25 2007, 17:28 Tanya Цитата(_lukash_ @ Nov 25 2007, 00:41) Все... Nov 25 2007, 15:54 _lukash_ Вопрос заключался в том, что я хотел посмотреть на... Nov 25 2007, 16:38 _lukash_ Ок, спасибо.
Ща про ПИД (в моем случае, наверно, т... Nov 25 2007, 18:19 TSerg Цитата(_lukash_ @ Nov 25 2007, 21:19) Ок,... Nov 26 2007, 06:58 urasinov В качестве обратной связи наверно подойдет что-то ... Nov 26 2007, 09:54 _lukash_ А чем не устраивают датчики Холла в двигателях в к... Nov 26 2007, 13:07 alexander55 Цитата(_lukash_ @ Nov 25 2007, 00:41)
Ва... Nov 26 2007, 13:50 urasinov Цитата1.Вы считываете длину пути, как корень квадр... Nov 26 2007, 15:51 alexander55 Цитата(urasinov @ Nov 26 2007, 18:51) Что... Nov 27 2007, 07:02 _lukash_ А можно немного объяснить по пункту 4 - про интерп... Nov 26 2007, 18:01 TSerg Цитата(_lukash_ @ Nov 26 2007, 21:01) А м... Nov 27 2007, 06:33  Tanya Цитата(TSerg @ Nov 27 2007, 09:33) Я бы п... Nov 27 2007, 07:50 urasinov ЦитатаКогда известна контурная (общая) скорость. У... Nov 27 2007, 09:54 alexander55 Цитата(urasinov @ Nov 27 2007, 12:54) Т.е... Nov 27 2007, 10:04 _lukash_ Значит делаю как TSerg написал:
Сначала рассчитыва... Nov 27 2007, 16:10 TSerg Цитата(_lukash_ @ Nov 27 2007, 19:10) Зна... Nov 28 2007, 08:52 _lukash_ Это понял, спасибо.
Но еще один момент - у Вас пр... Nov 28 2007, 21:32 TSerg Цитата(_lukash_ @ Nov 29 2007, 00:32) Это... Nov 29 2007, 07:33 _lukash_ Возможно, удастся сделать так, чтоб при расчетах и... Nov 29 2007, 19:56 TSerg Цитата(_lukash_ @ Nov 29 2007, 22:56) Ска... Nov 30 2007, 06:51 _artem_ посмотрите linuxcnc.org там есть сурцы для интерпо... Nov 29 2007, 23:42 alexander55 На память ЧПУшные функции:
G0 - позиционирование
G... Nov 30 2007, 06:21
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|