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

 
 
> Алгоритм позиционирования, при использовании энкодера 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  « < 5 6 7 8 9 > »   
Start new topic
Ответов (90 - 104)
evgeny_ch
сообщение Dec 5 2008, 10:50
Сообщение #91


чукчхэшаражогрмонтажник
*****

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



[color=#000000]
Цитата(dpss @ Dec 5 2008, 13:50) *
Нельзя ли по подробнее рассказать, как учитывается - компенсируется нелинейное трение в системе.
Лучше иметь хорошую механику. biggrin.gif
Компенсируют, понятно, увеличением тока (момента), учитывают программно - наблюдателем и
планировщиком траекторного движения. Статейки.
NONLINEAR FRICTION PHENOMENA IN DIRECT-DRIVE ROBOTIC ARMS.
Friction compensation.
Observer-based nonlinear Compensation of Friction.

Сообщение отредактировал evgeny_ch - Dec 5 2008, 10:53


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
alexander55
сообщение Dec 5 2008, 12:28
Сообщение #92


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

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



Цитата(evgeny_ch @ Dec 5 2008, 13:50) *
Лучше иметь хорошую механику. biggrin.gif

Точно.
Для понимания проблем нарисовал структурку одной массы.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
PhX
сообщение Dec 5 2008, 12:55
Сообщение #93


Местный
***

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



Цитата(evgeny_ch @ Dec 5 2008, 14:50) *
[color=#000000]Лучше иметь хорошую механику. biggrin.gif

Не всегда. Для придания жесткости руки роботов часто делают из монолитных болванок. Они получаются тяжеленные и момент инерции, ну сами понимаете... А машет такой робот лазером весом 1-2 кг. Если вместо болванок руку делать из алюминиевых прутов, то массово-инерционные свойства руки значительно улучшаются, но вот связи становятся гибкими... Вообщем однозначно сказать, что лучше нельзя.


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
evgeny_ch
сообщение Dec 5 2008, 14:23
Сообщение #94


чукчхэшаражогрмонтажник
*****

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



Цитата(PhX @ Dec 5 2008, 16:55) *
Не всегда. Для придания жесткости руки роботов часто делают из монолитных болванок. Они получаются тяжеленные и момент инерции, ну сами понимаете... А машет такой робот лазером весом 1-2 кг. Если вместо болванок руку делать из алюминиевых прутов, то массово-инерционные свойства руки значительно улучшаются, но вот связи становятся гибкими... Вообщем однозначно сказать, что лучше нельзя.
Можно. Удельная тяга должна быть максимально возможной.
Для манипуляторов, естественно, находят компромисс между подвижной массой, жесткостью и
тягой привода. По этой причине максимально достижимая точность у них ограничена,
особенно у тех, что в угловых координатах. Для компенсации провисов и смещения центра массы
используют алгоритмы обучения и автонастройки привода.
Высокоточные координатные системы (станочные) стремятся сделать максимально жёской конструкции.
Дискретность их перемещений достигает десятков нанометров, а у манипулаторов 0,05 - 0,1 мм.
Гдето так.


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
alexander55
сообщение Dec 5 2008, 14:35
Сообщение #95


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

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



Цитата(PhX @ Dec 5 2008, 15:55) *
Не всегда. Для придания жесткости руки роботов часто делают из монолитных болванок. Они получаются тяжеленные и момент инерции, ну сами понимаете... А машет такой робот лазером весом 1-2 кг. Если вместо болванок руку делать из алюминиевых прутов, то массово-инерционные свойства руки значительно улучшаются, но вот связи становятся гибкими... Вообщем однозначно сказать, что лучше нельзя.

У робертов параметры моментов инерции и т.д. меняются от положения в пространстве. Там хорошо использовать модель и подгонку реалий под нее.
Go to the top of the page
 
+Quote Post
_Sam_
сообщение Dec 5 2008, 17:45
Сообщение #96


Местный
***

Группа: Свой
Сообщений: 278
Регистрация: 18-01-05
Из: Санкт-Петербург
Пользователь №: 2 031



Цитата
Далее в этой точки стоим и не даем себя сдвинуть, те сопротивляемся возмущениям.

Ну дык вы упоминали, что люфты есть. Попробуйте замерить люфт в нескольких точках сразу после включения установки и после того как механику погоняете часик другой в рабочем режиме. Люфты будут разные, а значит, замкнуть обратную связь можно только двумя способами:
1. Математически, учитывая, что люфт может быть разный на разных рабочих участках и что он будет изменяться при изменении температуры механики.
2. Практически, поставив линейный датчик непосредственно на подвижные части.

Конечно если у вас все оси круговые или люфт меньше разрешающей способности вашего датчика, то это всё не актуально biggrin.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 16 2008, 07:20
Сообщение #97


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

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



Может быть Америку открою, но мне, как начинающему, нелпохо помогают следующие ресурсы в изучении Simulink (моделирование):
Очень хороший ресурс! Можно научиться моделировать динамику в Simulink + САУ.


Может быть Америку открою, но мне, как начинающему, нелпохо помогают следующие ресурсы в изучении Simulink (моделирование):
Очень хороший ресурс! Можно научиться моделировать динамику в Simulink + САУ.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
PhX
сообщение Dec 16 2008, 07:26
Сообщение #98


Местный
***

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



Цитата(haker_fox @ Dec 16 2008, 11:20) *
Может быть Америку открою, но мне, как начинающему, нелпохо помогают следующие ресурсы в изучении Simulink (моделирование):
Очень хороший ресурс! Можно научиться моделировать динамику в Simulink + САУ.

Да, стоящий ресурс! smile.gif


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 22 2008, 10:13
Сообщение #99


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

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



Цитата(PhX @ Dec 16 2008, 15:26) *
Да, стоящий ресурс! smile.gif

Ага, стоящий) Все еще по нему занимаюсь.

Цитата(alexander55 @ Nov 27 2008, 13:57) *
ЭДС (E=Ke*w) - расчетная величина. Отсюда и все проблемы.
U=E+I*R+L*dI/dt
R - меняется от температуры,
составляющую L*dI/dt учитывать достаточно сложно.
Но в контурных системах есть некоторое упрощение из-за наличия датчика положения (не требуется выдерживать точно угловую скорость двигателя, т.к. "вытягивание" производится за счет датчика положения).

Но учитывая, что такой метод все-таки встречается, хотелось бы примерно узнать, на какая максимальная погрешность может быть в измерении скорости при наихудших условиях? Я понимаю, что вопрос абстрактен и данных мало... если что, просьба сильно не ругаться. К сожалению, мало чего находится в гугле по запросу "sensorless control brushed dc motor" sad.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
evgeny_ch
сообщение Dec 22 2008, 10:39
Сообщение #100


чукчхэшаражогрмонтажник
*****

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



Цитата(haker_fox @ Dec 22 2008, 14:13) *
Ага, стоящий) Все еще по нему занимаюсь.
Но учитывая, что такой метод все-таки встречается, хотелось бы примерно узнать, на какая максимальная погрешность может быть в измерении скорости при наихудших условиях? Я понимаю, что вопрос абстрактен и данных мало... если что, просьба сильно не ругаться. К сожалению, мало чего находится в гугле по запросу "sensorless control brushed dc motor" sad.gif
График посмотрите.
Поиск попробуйте - temperature dependence back emf voltage DC brush motor.


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 22 2008, 10:40
Сообщение #101


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

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



Цитата(evgeny_ch @ Dec 22 2008, 18:39) *
График посмотрите.
Поиск попробуйте - temperature dependence back emf voltage DC brush motor.

evgeny_ch, спасибо! Вы как всегда на высоте и аргументируете свои ответы ссылками, графиками, схемами... a14.gif


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
evgeny_ch
сообщение Dec 22 2008, 10:44
Сообщение #102


чукчхэшаражогрмонтажник
*****

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



Цитата(haker_fox @ Dec 22 2008, 14:40) *
evgeny_ch, спасибо! Вы как всегда на высоте и аргументируете свои ответы ссылками, графиками, схемами... a14.gif
Константа мотора имеет сложную зависимость от температуры,
поскольку меняется несколько параметров, в вашем сл. будет критичным сопр. коллектора -
0,4% на градус.


--------------------
Quo vadis?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 23 2008, 09:13
Сообщение #103


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

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



Цитата(evgeny_ch @ Dec 22 2008, 18:44) *
Константа мотора имеет сложную зависимость от температуры,
поскольку меняется несколько параметров, в вашем сл. будет критичным сопр. коллектора -
0,4% на градус.

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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Dec 23 2008, 09:33
Сообщение #104


Гуру
******

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



Цитата(haker_fox @ Dec 23 2008, 12:13) *
Получается довольно-таки высокая погрешность, учитывая, что колебания температуры могут быть в пределах 50 градусов (в критических ситуациях). Что же делать... как контролировать скорость за минимальное время? Грубый самодельный энкодер не заменить уже... а время отклика у него довольно большое получается.

А что Вы заранее пугаетесь? Измерить самому на том самом моторе нельзя? В крайнем случае - подкорректировать.
Можно ЭДС измерять в паузах ШИМа.
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Dec 23 2008, 09:54
Сообщение #105


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

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



Цитата(Tanya @ Dec 23 2008, 17:33) *
А что Вы заранее пугаетесь? Измерить самому на том самом моторе нельзя? В крайнем случае - подкорректировать.
Можно ЭДС измерять в паузах ШИМа.

Ну я вообще-то в паузах ШИМа и хочу мерить)
Выше мне говорили, что для простой системы управления достаточно два контура: ток и положение. Скорость мы можем получить как первую производную по положению. Но с таким энкодером, боюсь только положение можно и мерить, но не скорость... Т.к. для регулятора все же нужно знать скорость (а иначе как ее стабилизировать), хочу мерить ее с помощью противоЭДС.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 22:25
Рейтинг@Mail.ru


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