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

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


Познающий...
******

Группа: Свой
Сообщений: 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 от того значения, которое соответсвует заданной координате. Извините за доморощенные термины. Ну вот, пока вроде все.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
11 страниц V  « < 7 8 9 10 11 >  
Start new topic
Ответов (120 - 134)
_Pasha
сообщение Feb 3 2009, 08:25
Сообщение #121


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(arisov @ Feb 3 2009, 10:58) *
Я в своё время с этим токовым ограничением «помучался».

+1 Там его ограничивать надо, как бы имитируя плавкий предохранитель (т.е. с относительно долговременным I^2 *t) Чем проще это звено - тем хуже.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 3 2009, 09:01
Сообщение #122


Познающий...
******

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



Цитата(arisov @ Feb 3 2009, 15:58) *
но при «заклинивании», а такое в реальном станке может запросто произойти, из движка уже секунд через 20-30 дымок идёт. Убавляешь ток, динамика резко ухудшается.

Тут, наверно, нужно дополнительные условия вводить: типа если скорость вала не соответсвует нормативной в течение некоторого времени, то выключать двигатель...


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
arisov
сообщение Feb 3 2009, 09:54
Сообщение #123


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

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 3 2009, 10:50
Сообщение #124


Познающий...
******

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



Уф! Проблемы дребезга скорости были в пропорциональной части регулятора. Настроил его по-внимательнее и чудо! Никаких рывков! На осцилле видно как нарастает ШИМ: плавно и мягко. Правда на роботе еще не испытывал... как там себя поведен, неизвестно, но не сильно отличаться должно...
Сначала настроил только И-звено, чтобы никаких перерегулирований небыло, затем по-маленьку нарастил П-составляющую. А вот Д-звено сразу дает неустойчивую работу, даже при малом коэффициенте. Нужно (ИМХО) фильтровать данные на канале скорости, сейчас я на регулятор сразу мгновенную скорость завожу.

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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
arisov
сообщение Feb 3 2009, 11:04
Сообщение #125


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

Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455



Цитата(haker_fox @ Feb 3 2009, 13:50) *
Правда на низких угловых скоростях, если резко приложить нагрузку к валу, то вал останавливается на мгновенье (0.1 - 0.2 с на глаз), затем снова набирает обороты (скчком, благодаря П-составляющей). Наверно это нормально?

На роботе может и нормально, но не станках с ЧПУ. biggrin.gif
Какое у Вас время обновления сервоцикла?

Сообщение отредактировал arisov - Feb 3 2009, 11:06
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 3 2009, 12:58
Сообщение #126


Познающий...
******

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



Цитата(arisov @ Feb 3 2009, 19:04) *
На роботе может и нормально, но не станках с ЧПУ. biggrin.gif

Для ЧПУ характерны ударные нагрузки? Да еще и на малых частотах подач/вращения шпинделя?
Можно ли узнать, Ваш привод в этом плане как себя ведет?
Цитата(arisov @ Feb 3 2009, 19:04) *
Какое у Вас время обновления сервоцикла?

3 мс.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
arisov
сообщение Feb 3 2009, 13:13
Сообщение #127


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

Группа: Свой
Сообщений: 157
Регистрация: 17-02-07
Из: Ульяновск
Пользователь №: 25 455



Цитата(haker_fox @ Feb 3 2009, 15:58) *
Для ЧПУ характерны ударные нагрузки? Да еще и на малых частотах подач/вращения шпинделя?
Можно ли узнать, Ваш привод в этом плане как себя ведет?

Очень характерны, особенно когда около тонны туда-сюда начинают "ширкать" biggrin.gif
Шпинделя у меня нет, это для очень старой газорезательной машины (в которой раньше металл не жалели) - ездит по рельсам вместе с оператором.
Проблемы небольшие есть - из-за изношенности пары рейка-шестерня местами есть люфт и "затирания". При вращении рукой вала ощущаешь, что нагрузка переменная, усилие то возрастает, то резко падает (как бы идёт по инерции) на каждом зубе шестерни (но в разных положения относительно рейки). Так вот на малой скорости когда происходит, как бы "переваливание через зуб" привод начинает по инерции быстрее двигаться, контроллер для удержания позиции "включает" реверс, затем опять нужное направление и т.п. и появляються рывки, которые некретичны для газорезки. Но эти рывки появляются только в определённых местах относительно рейки. И это только для "лёгкой" оси, та которая около тонны движется плавно. С большим быстродействием (меньшим временем сервоцикла), возможно этого бы не было.

Сообщение отредактировал arisov - Feb 3 2009, 13:25
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Feb 3 2009, 13:24
Сообщение #128


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(haker_fox @ Feb 3 2009, 13:50) *
 Нужно (ИМХО) фильтровать данные на канале скорости, сейчас я на регулятор сразу мгновенную скорость завожу.


Есть предложение такое:


Как только скорость обновляется чаще, чем длительность цикла управления, брать среднее, иначе - мгновенное значение. Реализуется через 1-байт счетчик, например инкремент в канале скорости, декремент - в конце цикла управления. Получится что-то типа фазового детектора ФАПЧ.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 3 2009, 14:17
Сообщение #129


Познающий...
******

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



Цитата(arisov @ Feb 3 2009, 21:13) *
Но эти рывки появляются только в определённых местах относительно рейки. И это только для "лёгкой" оси

Ну примерно понятно: объект легкий - момент инерции невысокий, сервоцикл не очень короткий - все это способствует рывкам при переменной нагрузке. У меня, как я думаю, тоже самое.
Цитата(arisov @ Feb 3 2009, 21:13) *
та которая около тонны движется плавно.

Я думаю, что ее инертность (это при тонне-то веса) дает ей некоторые приоритеты rolleyes.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 4 2009, 04:37
Сообщение #130


Познающий...
******

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



Цитата(_Pasha @ Feb 3 2009, 21:24) *
Как только скорость обновляется чаще, чем длительность цикла управления, брать среднее

Тут, наверно, имелось ввиду не длительность цикла управления, а период, с которым он вызывается?
Т.е. если у меня сервоцикл выполняется каждые N мс, то паузу в N мс я могу заполнить вычислением средней скорости за время N?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Feb 4 2009, 06:15
Сообщение #131


Местный
***

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



Цитата(haker_fox @ Feb 3 2009, 09:01) *
Ни в одном из приводов не видел токового управления. Только его ограничение. Что же получается, все-таки возможно обойтись без управления по току?
Что смотрел:
http://www.cnczone.com/forums/showpost.php...amp;postcount=1
http://elm-chan.org/works/smc/report_e.html (тут правда вообще контроля тока нет)
Знаменитый UHU Servo...
Везде толко Current Limit...

Замкнутый контур тока применяется, как я уже отмечао, для компенсыции электромагнитной постоянноц времени якорной цепи двигателя (речь идет о ДТП). Его применение целесообразно и даже необходимо когда величина этой постоянной сопоставима с приведенной к валу двигателя электромеханической постоянной всей системы. В этом случае приближенная передаточная функция w(s)/Uупр(S) является звеном второго порядка с низким коэффециентом затухания. Следовательно, при отсутствии контура тока получается система с высоким коэффициентом колебательности (обозн. в литературе, например у Бесекрского, M ). Это характерно для машин
1) большой мощности, б)специальных машин с малым моментом инерции (пример полый ротор). Применение контура тока в сочетании с правильным выбором силового преобразователя позволяет повыситть устойчивость системы и упростить структуру регулятора скорости или положения (от задачи зависит) и процедуру настройки параметров регулятора.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 4 2009, 13:49
Сообщение #132


Познающий...
******

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



Цитата(VladimirYU @ Feb 4 2009, 14:15) *
это характерно для машин
1) большой мощности, б)специальных машин с малым моментом инерции (пример полый ротор). Применение контура тока в сочетании с правильным выбором силового преобразователя позволяет повыситть устойчивость системы и упростить структуру регулятора скорости или положения (от задачи зависит) и процедуру настройки параметров регулятора.

Я верно понимаю, что для ДПМ-35-Н2-02 в следствие малой мощности можно не городить "мудренное" токовое управление, а просто ограничиться вариантом Current Limit?


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Feb 4 2009, 14:11
Сообщение #133


Местный
***

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



Цитата(haker_fox @ Feb 4 2009, 16:49) *
Я верно понимаю, что для ДПМ-35-Н2-02 в следствие малой мощности можно не городить "мудренное" токовое управление, а просто ограничиться вариантом Current Limit?

Вы меня поняли абсолютно правильно. Электромагнитная инерционность якорной обмотки для микромашин пренебрежимо мала.
А вот Current Limit считаю необходимым, т.к. из собствееного опыта помню что в случае токовых перегрузок (читай перегрева) эти движки выходят из строя очень быстро. Обратите внимание на их параметр - продолжительность безотказной работы, какие-то сотни часов.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Feb 4 2009, 14:30
Сообщение #134


Познающий...
******

Группа: Свой
Сообщений: 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) *
Обратите внимание на их параметр - продолжительность безотказной работы, какие-то сотни часов.

Я обратил. Вот и печально, что они стоят в манипуляторе. Не думаю, что он на сотню часов рассчитан(


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
VladimirYU
сообщение Feb 5 2009, 05:51
Сообщение #135


Местный
***

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



Цитата(haker_fox @ Feb 4 2009, 17:30) *
Ага! Теперь становится понятно, почему у UHU Servo, elm-chan только current limit.


Я обратил. Вот и печально, что они стоят в манипуляторе. Не думаю, что он на сотню часов рассчитан(


Может имеет смысл рганизоватьсочетание токограничения с аврийным отключением, причем максимально тупым, например снятием питания через контакты реле? Конечно если это допустимо по условия м работы механизма.
Go to the top of the page
 
+Quote Post

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

 


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


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