|
Алгоритм позиционирования, при использовании энкодера 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 от того значения, которое соответсвует заданной координате. Извините за доморощенные термины. Ну вот, пока вроде все.
--------------------
Выбор.
|
|
|
|
|
 |
Ответов
(120 - 134)
|
Feb 3 2009, 09:54
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455

|
Цитата(haker_fox @ Feb 3 2009, 11:24)  Но Вы все-таки использовали именно ограничение тока? Т.е. ток превысил заданный -> выкючаем двигатель, верно? Да, ограничение тока. И тоже «дергается», но я думаю, это просто руки у меня не осиляют равномерно удерживать вал. А ШИМ увеличивается, из-за компенсации рассогласования сервоконтроллером. Цитата(haker_fox @ Feb 3 2009, 12:01)  Тут, наверно, нужно дополнительные условия вводить: типа если скорость вала не соответсвует нормативной в течение некоторого времени, то выключать двигатель... У меня при рассогласование в 3 шага запускается таймер и если через 15 сек., эти три шага не «догонят», то в ServoError. Если «догоняют, то таймер сбрасывается. Про токовое ограничение я думаю надо темку открыть. Уже открыл.
Сообщение отредактировал arisov - Feb 3 2009, 10:05
|
|
|
|
|
Feb 3 2009, 10:50
|

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

|
Уф! Проблемы дребезга скорости были в пропорциональной части регулятора. Настроил его по-внимательнее и чудо! Никаких рывков! На осцилле видно как нарастает ШИМ: плавно и мягко. Правда на роботе еще не испытывал... как там себя поведен, неизвестно, но не сильно отличаться должно... Сначала настроил только И-звено, чтобы никаких перерегулирований небыло, затем по-маленьку нарастил П-составляющую. А вот Д-звено сразу дает неустойчивую работу, даже при малом коэффициенте. Нужно (ИМХО) фильтровать данные на канале скорости, сейчас я на регулятор сразу мгновенную скорость завожу.
Правда на низких угловых скоростях, если резко приложить нагрузку к валу, то вал останавливается на мгновенье (0.1 - 0.2 с на глаз), затем снова набирает обороты (скчком, благодаря П-составляющей). Наверно это нормально?
--------------------
Выбор.
|
|
|
|
|
Feb 3 2009, 11:04
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455

|
Цитата(haker_fox @ Feb 3 2009, 13:50)  Правда на низких угловых скоростях, если резко приложить нагрузку к валу, то вал останавливается на мгновенье (0.1 - 0.2 с на глаз), затем снова набирает обороты (скчком, благодаря П-составляющей). Наверно это нормально? На роботе может и нормально, но не станках с ЧПУ. Какое у Вас время обновления сервоцикла?
Сообщение отредактировал arisov - Feb 3 2009, 11:06
|
|
|
|
|
Feb 3 2009, 12:58
|

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

|
Цитата(arisov @ Feb 3 2009, 19:04)  На роботе может и нормально, но не станках с ЧПУ.  Для ЧПУ характерны ударные нагрузки? Да еще и на малых частотах подач/вращения шпинделя? Можно ли узнать, Ваш привод в этом плане как себя ведет? Цитата(arisov @ Feb 3 2009, 19:04)  Какое у Вас время обновления сервоцикла? 3 мс.
--------------------
Выбор.
|
|
|
|
|
Feb 3 2009, 13:13
|
Частый гость
 
Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455

|
Цитата(haker_fox @ Feb 3 2009, 15:58)  Для ЧПУ характерны ударные нагрузки? Да еще и на малых частотах подач/вращения шпинделя? Можно ли узнать, Ваш привод в этом плане как себя ведет? Очень характерны, особенно когда около тонны туда-сюда начинают "ширкать" Шпинделя у меня нет, это для очень старой газорезательной машины (в которой раньше металл не жалели) - ездит по рельсам вместе с оператором. Проблемы небольшие есть - из-за изношенности пары рейка-шестерня местами есть люфт и "затирания". При вращении рукой вала ощущаешь, что нагрузка переменная, усилие то возрастает, то резко падает (как бы идёт по инерции) на каждом зубе шестерни (но в разных положения относительно рейки). Так вот на малой скорости когда происходит, как бы "переваливание через зуб" привод начинает по инерции быстрее двигаться, контроллер для удержания позиции "включает" реверс, затем опять нужное направление и т.п. и появляються рывки, которые некретичны для газорезки. Но эти рывки появляются только в определённых местах относительно рейки. И это только для "лёгкой" оси, та которая около тонны движется плавно. С большим быстродействием (меньшим временем сервоцикла), возможно этого бы не было.
Сообщение отредактировал arisov - Feb 3 2009, 13:25
|
|
|
|
|
Feb 4 2009, 06:15
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(haker_fox @ Feb 3 2009, 09:01)  Ни в одном из приводов не видел токового управления. Только его ограничение. Что же получается, все-таки возможно обойтись без управления по току? Что смотрел: http://www.cnczone.com/forums/showpost.php...amp;postcount=1http://elm-chan.org/works/smc/report_e.html (тут правда вообще контроля тока нет) Знаменитый UHU Servo... Везде толко Current Limit... Замкнутый контур тока применяется, как я уже отмечао, для компенсыции электромагнитной постоянноц времени якорной цепи двигателя (речь идет о ДТП). Его применение целесообразно и даже необходимо когда величина этой постоянной сопоставима с приведенной к валу двигателя электромеханической постоянной всей системы. В этом случае приближенная передаточная функция w(s)/Uупр(S) является звеном второго порядка с низким коэффециентом затухания. Следовательно, при отсутствии контура тока получается система с высоким коэффициентом колебательности (обозн. в литературе, например у Бесекрского, M ). Это характерно для машин 1) большой мощности, б)специальных машин с малым моментом инерции (пример полый ротор). Применение контура тока в сочетании с правильным выбором силового преобразователя позволяет повыситть устойчивость системы и упростить структуру регулятора скорости или положения (от задачи зависит) и процедуру настройки параметров регулятора.
|
|
|
|
|
Feb 4 2009, 14:11
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(haker_fox @ Feb 4 2009, 16:49)  Я верно понимаю, что для ДПМ-35-Н2-02 в следствие малой мощности можно не городить "мудренное" токовое управление, а просто ограничиться вариантом Current Limit? Вы меня поняли абсолютно правильно. Электромагнитная инерционность якорной обмотки для микромашин пренебрежимо мала. А вот Current Limit считаю необходимым, т.к. из собствееного опыта помню что в случае токовых перегрузок (читай перегрева) эти движки выходят из строя очень быстро. Обратите внимание на их параметр - продолжительность безотказной работы, какие-то сотни часов.
|
|
|
|
|
Feb 4 2009, 14:30
|

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

|
Цитата(VladimirYU @ Feb 4 2009, 22:11)  Вы меня поняли абсолютно правильно. Электромагнитная инерционность якорной обмотки для микромашин пренебрежимо мала. Ага! Теперь становится понятно, почему у UHU Servo, elm-chan только current limit. Цитата(VladimirYU @ Feb 4 2009, 22:11)  А вот Current Limit считаю необходимым, т.к. из собствееного опыта помню что в случае токовых перегрузок (читай перегрева) эти движки выходят из строя очень быстро. Он есть) Про быстрый выход из строя - поддтверждаю. У нас в свое время в институ много ДПМок пожлги по недосмотру (читайте по дурости). И дело-то всего было в том, что манипулятор упирался в ограничитель, а на двиг продолжало питание поступать. Но это простительно. СУ там была советская и дубовая. Никаких ограничений. Просто набор реле и PDP-11, в которой нужно было все управления двигами самому набить. Конечных выключателей небыло. Ужас! PUMA не в пример лучше! На каждую ось (двигатель) свой контроллер! Цитата(VladimirYU @ Feb 4 2009, 22:11)  Обратите внимание на их параметр - продолжительность безотказной работы, какие-то сотни часов. Я обратил. Вот и печально, что они стоят в манипуляторе. Не думаю, что он на сотню часов рассчитан(
--------------------
Выбор.
|
|
|
|
|
Feb 5 2009, 05:51
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(haker_fox @ Feb 4 2009, 17:30)  Ага! Теперь становится понятно, почему у UHU Servo, elm-chan только current limit.
Я обратил. Вот и печально, что они стоят в манипуляторе. Не думаю, что он на сотню часов рассчитан( Может имеет смысл рганизоватьсочетание токограничения с аврийным отключением, причем максимально тупым, например снятием питания через контакты реле? Конечно если это допустимо по условия м работы механизма.
|
|
|
|
|
  |
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|