|
Алгоритм позиционирования, при использовании энкодера 45 имп/об |
|
|
|
Nov 20 2008, 07:03
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Здравствуйте! Тема перекочевала отсюда.В моем приводе это вопрос позиционирования встал ребром. По началу я не считал эту задачу сложной, но теперь понял, что все не так просто... Застабилизировать скорость, когда вал должен просто вращаться, оказалось делом не сложным. PI регулятор работает. Но вот вопрос позиционирования раскусить не могу... то, что смог реализовать работает с затухающими колебаниями относительно точки, в которую приводу нужно уйти. Привожу код, который сможет пояснить суть алгоритма. Но общий принцип такой: берется рассогласованиее по координатам, которое домножается на некоторой коэффициент posTolPGain (пропорциональная часть), получаем скорость, на которой приказываем приводу двигаться. По мере приближения к заданной точке, рассогласование будет уменьшаться, пока не достигнет того минимума, при котором привод останавливается. Остается некоторая ошибка. Эта ошибка (ее величина определяется переменной posTolerance), компенсируется следующей ступенью пропорционального регулятора, у которого коэффициент posTolPGain1, который много больше, чем posTolPGain, в силу малости ошибки. Перввая ступень регулятора работает великолепно, но всегда остается ошибка. Вторая ступень дает колебания. Будут ли они затухающими, или нет, зависит от posTolPGain1, но они есть всегда... Мне не приходит идея, что делать? Использовать еще и интегральную составляющую для устранения ошибки позиционирования? Но это уже будет целых два ПИ-регулятора со своими коэффициентами... многовато их получается... Есть ли какие-нибудь идей у уважаемых профессионалов? Спасибо! Да, датчик обратной связи - энкодер. Больше ничего нет..., и добалять нельзя. Привода аппаратно готов и какой бы ущербный он не был, придется придумывать, как реализовать позиционирование на энкодере. Код /* This function must be called every 5 ms in Position Mode IN: pos - desired position OUT: servo result codes */ uint8_t TServoControl::positionModeProcess(int16_t pos) { int32_t pos_tolerance = pos - getPosition(); int32_t dp = pos_tolerance; if(dp < 0) dp*= -1L; if(dp > posTolerance) { int32_t vel = ((pos - getPosition()) * posTolPGain) / 128L; if(vel > 0) { if(vel > velocityLimit) vel = velocityLimit; } else if(vel < 0) { if(vel < -velocityLimit) vel = -velocityLimit; } velocityModeProcess(vel); } else { int16_t s_pwm = pos_tolerance * posTolPGain1 / 128L; if(s_pwm > 0) setServoMode(SERVO_POS_VELOCITY_MODE); else if(s_pwm < 0) { setServoMode(SERVO_NEG_VELOCITY_MODE); s_pwm*= -1; } if(s_pwm > 250L) s_pwm = 250; if(s_pwm) setPWM((uint8_t)s_pwm); else setServoMode(SERVO_FAST_STOP_MODE); } return SERVO_OK_RESULT; } Требования не высокие: нужно просто перемещаться из текущей точки в заданную. Ускорение и максимальная скорость, до которой разгоняемя - задаются. Погрешность допустима.. ну сколько, даже не знаю как выразить. Ну вал двигателя может провернуться или не довернуться процентов на 20 - 40 от того значения, которое соответсвует заданной координате. Извините за доморощенные термины. Ну вот, пока вроде все.
--------------------
Выбор.
|
|
|
|
|
 |
Ответов
(75 - 89)
|
Dec 3 2008, 05:45
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(haker_fox @ Dec 3 2008, 04:58)  Данных для расчета практически нет. Ну двигатель известен. А звенья манипулятора уже готовые. На них нет ни чертежей, ни какой другой документации. А без этих данных не приведенный момент инерции посчитать, ничего не сделать... Брать штангель, весы и вручную мерить?  Для определения электромагнитной постоянной (L/R) (лучший метод экспериментальный)- двигатель зажимают (чтобы не ерзал). Подают ступеньки и по осцилоскопу смотрят переходный процесс. Время до 0.65 от установившегося значения тока и есть постоянная времени. Электромеханическую постоянную можно посчитать, но это не очень актуально, т.к. настройка привода будет компромисной с учетом механики (люфты, ограниченная жесткость). Дело в том, что механика - это не просто интегратор от скорости в положение, а гораздо круче, чем даже модель двигателя.
|
|
|
|
|
Dec 3 2008, 06:05
|

Местный
  
Группа: Свой
Сообщений: 473
Регистрация: 10-09-06
Из: Тольятти. Самарская обл.
Пользователь №: 20 249

|
Цитата(alexander55 @ Dec 3 2008, 09:45)  Для определения электромагнитной постоянной (L/R) (лучший метод экспериментальный)- двигатель зажимают (чтобы не ерзал). Подают ступеньки и по осцилоскопу смотрят переходный процесс. Время до 0.65 от установившегося значения тока и есть постоянная времени. Ну если использовать замкнутый контур тока, с достаточно большим коэффициентом усиления, задумоваться о электромагнитной постоянной практически не придется. Цитата(alexander55 @ Dec 3 2008, 09:45)  Электромеханическую постоянную можно посчитать, но это не очень актуально, т.к. настройка привода будет компромисной с учетом механики (люфты, ограниченная жесткость). Дело в том, что механика - это не просто интегратор от скорости в положение, а гораздо круче, чем даже модель двигателя.  Механика, это в первом приближении, тупо J(dw/dt), для многих случаев. Для других случаев это две массы с упругой связью. Далее добавляем гистерезис... Для очень точных систем нелинейное трение... А если сложнее, то проще механику поменять, чтобы описывалать первым или вторым случаем. Тут пока нужно рассматривать первый случай.
--------------------
Если все, то не я...
|
|
|
|
|
Dec 3 2008, 06:33
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(PhX @ Dec 3 2008, 09:05)  Ну если использовать замкнутый контур тока, с достаточно большим коэффициентом усиления, задумоваться о электромагнитной постоянной практически не придется. Это так, но с устойчивостью контура тока могут быть проблемы (например, из-за нелинейностей в режиме прерывистых токов меняется передаточная функция с апериодической на пропорциональное звено). Не забываем про противоэдс, если ее не компенсируем. Цитата(PhX @ Dec 3 2008, 09:05)  Механика, это в первом приближении, тупо J(dw/dt), для многих случаев. Так. Цитата(PhX @ Dec 3 2008, 09:05)  Для других случаев это две массы с упругой связью. Могут быть и 3-х массовые и т.д. Цитата(PhX @ Dec 3 2008, 09:05)  Для других случаев это две массы с упругой связью. Далее добавляем гистерезис... Для очень точных систем нелинейное трение... А если сложнее, то проще механику поменять, чтобы описывалать первым или вторым случаем. Тут пока нужно рассматривать первый случай. Если интересно, могу накидать структуру.
|
|
|
|
|
Dec 5 2008, 07:38
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Как и обещал, формулирую требования к приводу: хотелось бы, чтобы привода работал в двух независимых друг от друга режимах, конечно только в одном из них в один момент времени. Режимы: 1. Только стабилизация угловой скорости, без привязки к координатам, например для стабилизации вращения шпиндельной головки. Там не нужно знать, сколько прошли, нужно поддерживать определенную угловую скорость. В этом режим должно задаваться желаемое ускорение (профиль трапезоидальный, как один из простых), и стабилизируемая скорость (ну это само собой). 2. Режим позиционирования. При вращении вала двигателя для достижения заданной координаты используется также режим 1 внутри этого (2) режима. Т.е. при перемещении в точку разгоняемся с заданным ускорением, достигаем какой-то заданной скорости, плавно тормозим и приходим в желаемую точку. Далее в этой точки стоим и не даем себя сдвинуть, те сопротивляемся возмущениям.
Ну вот примерно и все...
--------------------
Выбор.
|
|
|
|
|
Dec 5 2008, 08:27
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(haker_fox @ Dec 5 2008, 11:08)  Могу ли я применить для контроля тока (момента) схему дифференциального усилителя? Вот примерно, как на рисунке. Выход усилителя буду заводить на АЦП ATmega168. У Linear Technology есть более интересная схема, даёт больше функциональных возможностей. Ваша схема не позволит диагностировать состояние плеч моста.
--------------------
Quo vadis?
|
|
|
|
|
Dec 5 2008, 08:29
|

Знающий
   
Группа: Свой
Сообщений: 540
Регистрация: 19-04-08
Из: Москва
Пользователь №: 36 913

|
Цитата(haker_fox @ Dec 5 2008, 10:08)  Могу ли я применить для контроля тока (момента) схему дифференциального усилителя? Вот примерно, как на рисунке. Выход усилителя буду заводить на АЦП ATmega168. Можно использовать готовые микросхемы усилители тока , например Analog Devices Если делать на "россыпи" ,то будет примерно так http://www.awenwen.com/gb/doc/DMC550.pdf
|
|
|
|
|
Dec 5 2008, 09:00
|

Познающий...
     
Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125

|
Цитата(evgeny_ch @ Dec 5 2008, 16:27)  У Linear Technology есть более интересная схема, даёт больше функциональных возможностей. Ваша схема не позволит диагностировать состояние плеч моста. У меня монолитная L298. Не получится вклиниться в плечи мостов. Цитата(alexander55 @ Dec 5 2008, 15:33)  Можно. Подумайте насчет гальванических развязок (может они не нужны, а может нужны). Я думаю, что желательны.
--------------------
Выбор.
|
|
|
|
|
Dec 5 2008, 09:49
|

чукчхэшаражогрмонтажник
    
Группа: Участник
Сообщений: 1 852
Регистрация: 13-07-07
Из: Minsk
Пользователь №: 29 094

|
Цитата(_Pasha @ Dec 5 2008, 12:32)  А какие преимущества у дифусилителя перед схемой измерения тока истока нижних транзисторов? упс, evgeny_ch опередил. PS: или перед ir2172Больше не буду. Токовые мониторы от TI. Products Tagged with current sensing. Должна быть возможность мерять ток, протекающий в источник, при работе двигателя в генераторном режиме . Что не исключает измерения тока в цепи "земли".
Сообщение отредактировал evgeny_ch - Dec 5 2008, 09:54
--------------------
Quo vadis?
|
|
|
|
|
Dec 5 2008, 10:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 613
Регистрация: 2-09-08
Из: г.Набережные Челны
Пользователь №: 39 936

|
Цитата(haker_fox @ Dec 5 2008, 10:08)  Могу ли я применить для контроля тока (момента) схему дифференциального усилителя? Вот примерно, как на рисунке. Выход усилителя буду заводить на АЦП ATmega168. Мне кажется лучше ток "снимать" с шунта включенный по питанию, обычно в GND, во первых ты сразу контролируешь сквозной ток во вторых полярность выходного тока у тебя постоянный, независимо от вращения.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|