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

 
 
> Алгоритм позиционирования, при использовании энкодера 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  < 1 2 3 4 > »   
Start new topic
Ответов (15 - 29)
Tanya
сообщение Nov 21 2008, 07:15
Сообщение #16


Гуру
******

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



Цитата(alexander55 @ Nov 21 2008, 09:52) *
ПИ-регулятор принципиально дает перерегулирование.
Добавление скоростной компенсации к П-регулятору тоже дает перерегулирование.


ПИ-регулятор не дает принципиально перерегулирования.
Добавление скоростной компенсации к П-регулятору тоже не дает перерегулирование.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 21 2008, 07:23
Сообщение #17


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

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



Цитата(PhX @ Nov 21 2008, 07:32) *
Попробуйте так:
В контур скорости поставьте ПИ регулятор, а в контур положения П.
Должно заработать нормально.

Правильное решение.
При наличии люфта в механике ПИ-регулятор в контуре положения будет качать.
При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически.
Это возможно только с П-регулятом в контуре положения.

Цитата(Tanya @ Nov 21 2008, 10:15) *
ПИ-регулятор не дает принципиально перерегулирования.
Добавление скоростной компенсации к П-регулятору тоже не дает перерегулирование.

biggrin.gif
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 21 2008, 07:36
Сообщение #18


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

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



Цитата(alexander55 @ Nov 21 2008, 15:23) *
Правильное решение.
При наличии люфта в механике ПИ-регулятор в контуре положения будет качать.
При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически.
Это возможно только с П-регулятом в контуре положения.
biggrin.gif

Если привод "пришел" в нужную точку и застабилизировлся в ней, то при попытки отклонить его от этой точки, будет ли он "сопротивляться", те создавать момент на валу, противостоящий отклонению? Ведь ошибка будет не очень большой в этом случае и понадобиться большой П-коэффициент, чтобы усилить ошибку и создать достаточный для сопротивления момент. Вместе с тем, такой большой коэффициент будет приводить к колебаниям, относительно заданной координаты, когда привод "приходит" в нее "издалека", по инерции проскакивает, затем возвращается, а большой П-коэффициент будет только способствовать автоколебаниям. Снвоа напрашивается двуступенчатый контур П-регулятора по положению. Один с относительно небольшим коэффициентом, призван привести привод в заданную точку с 1 - 2 колебаниями. Второй влкючается в работу, когда ошибка позиционирования станет приемлимой после работы первой ступени, и призван обеспечить многократное увеличение момента при попытке дистабилизировать привод...
Уф... простите за туманное изложение мысле... просто с приводами раньше не работал... год назад начал, но, как видите, пока еще не много достиг...
Спасибо Вам за все советы!!!


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 21 2008, 07:43
Сообщение #19


Гуру
******

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



Цитата(alexander55 @ Nov 21 2008, 10:23) *
Правильное решение.
При наличии люфта в механике ПИ-регулятор в контуре положения будет качать.
При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически.
Это возможно только с П-регулятом в контуре положения.


biggrin.gif

Тогда уж и без люфта будет качать...
Все, что Вы пишите справедливо только для случая, когда стационарное выходное воздействие строго равно нулю, что бывает... иногда... не спорю. А в общем случае нет.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 21 2008, 07:50
Сообщение #20


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

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



Цитата(Tanya @ Nov 21 2008, 10:43) *
Тогда уж и без люфта будет качать...

Затухающе, а с люфтом постоянно - устойчивые незатухающие колебания.

Цитата(Tanya @ Nov 21 2008, 10:43) *
Все, что Вы пишите справедливо только для случая, когда стационарное выходное воздействие строго равно нулю, что бывает... иногда... не спорю. А в общем случае нет.

Введением ПИ-регулятора астатизм разомкнутой системы становится равным 2,
с П-регулятором - 1.
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 21 2008, 07:51
Сообщение #21


Местный
***

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



Такой вопрос:
Вы пока отдельно движком крутите или с подключенной механикой?


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 21 2008, 07:53
Сообщение #22


Гуру
******

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



Цитата(haker_fox @ Nov 21 2008, 10:36) *
Если привод "пришел" в нужную точку и застабилизировлся в ней, то при попытки отклонить его от этой точки, будет ли он "сопротивляться", те создавать момент на валу, противостоящий отклонению? Ведь ошибка будет не очень большой в этом случае и понадобиться большой П-коэффициент, чтобы усилить ошибку и создать достаточный для сопротивления момент. Вместе с тем, такой большой коэффициент будет приводить к колебаниям, относительно заданной координаты, когда привод "приходит" в нее "издалека", по инерции проскакивает, затем возвращается, а большой П-коэффициент будет только способствовать автоколебаниям. Снвоа напрашивается двуступенчатый контур П-регулятора по положению. Один с относительно небольшим коэффициентом, призван привести привод в заданную точку с 1 - 2 колебаниями. Второй влкючается в работу, когда ошибка позиционирования станет приемлимой после работы первой ступени, и призван обеспечить многократное увеличение момента при попытке дистабилизировать привод...
Уф... простите за туманное изложение мысле... просто с приводами раньше не работал... год назад начал, но, как видите, пока еще не много достиг...
Спасибо Вам за все советы!!!

Нет, ТАК ничего не нужно перестраивать, - правильно настроенный регулятор предназначен для устранения малых отклонений в квазистационарном режиме. Поэтому-то проще всего "вести" систему по правильной фазовой траектории...плавненько так... и не перестраивать ничего. То, что пишет alexander55 применимо в некотрых случаях... Например, если червячная передача, или система перемещается строго горизонтально...
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 21 2008, 07:55
Сообщение #23


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

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



Цитата(PhX @ Nov 21 2008, 10:51) *
Такой вопрос:
Вы пока отдельно движком крутите или с подключенной механикой?

Уточню вопрос.
Где стоит датчик положения на валу двигателя или на валу механизма ?
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 21 2008, 07:58
Сообщение #24


Гуру
******

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



Цитата(alexander55 @ Nov 21 2008, 10:50) *
Затухающе, а с люфтом постоянно - устойчивые незатухающие колебания.


Введением ПИ-регулятора астатизм разомкнутой системы становится равным 2,
с П-регулятором - 1.

Нет, не всегда будут колебания. И даже с люфтом...
А зачем нам управлять разомкнутой системой?
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Nov 21 2008, 08:41
Сообщение #25


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

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



Цитата(PhX @ Nov 21 2008, 15:51) *
Такой вопрос:
Вы пока отдельно движком крутите или с подключенной механикой?

И так и так. Но в основном отлаживаюсь на отдельном двигателе. Когда есть результаты, подключаю привод к манипулятору.

Цитата(Tanya @ Nov 21 2008, 15:53) *
Нет, ТАК ничего не нужно перестраивать, - правильно настроенный регулятор предназначен для устранения малых отклонений в квазистационарном режиме. Поэтому-то проще всего "вести" систему по правильной фазовой траектории...плавненько так... и не перестраивать ничего. То, что пишет alexander55 применимо в некотрых случаях... Например, если червячная передача, или система перемещается строго горизонтально...

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

Цитата(alexander55 @ Nov 21 2008, 15:55) *
Уточню вопрос.
Где стоит датчик положения на валу двигателя или на валу механизма ?

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


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Nov 21 2008, 08:44
Сообщение #26


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

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



Цитата(Tanya @ Nov 21 2008, 10:58) *

Потому что в замкнутой системе получится ПФ
- с ПИ - колебательное звено
- с П - апериодическое звено.
Извините, срочно надо выезжать на объект.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 21 2008, 09:02
Сообщение #27


Гуру
******

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



Цитата(haker_fox @ Nov 21 2008, 11:39) *
К сожалению, не совсем понял, о чем говорится( Как вести систему, да еще плавно, если рассогласование координат по мере приближения к заданной точке уменьшается, следовательно и уменьшается выходной сигнал с П-регулятора, в точку привод выйдет на почти нулевой скорости. И, если даже погрешность будет нулевой, то что его заставит противостоять попытке вывести привод из заданной точки? Ведь по какой причине он плавно (на небольой скорости) пришел в эту точку, также плавно он и будет сопротивляться, что не приемлимо...

Поясню. Регулятор не должен знать, что мы плавно-плавно движемся. Для него все должно быть квазистационарно.
Представьте себе график - по одной оси координата, по другой - скорость. Это и будет фазовое пространство. Линия, выходящая из некоторой точки на оси абсцисс (положение) и приходящая на эту же ось, будет задавать движение из одной точки в другую с нулевой начальной и конечной скоростями.
Если правильно вести систему по такой правильной (допустимой) траектории, то мы не превысим максимальной скорости, ускорения... и все нам с рук сойдет... гладко. Для этого мы должны запрограммировать задатчики перемещения и, возможно, скорости. Т.е. регулятор должен отрабатывать отклонения текущих значений от заданных... тоже текущих... по программе.



Цитата(alexander55 @ Nov 21 2008, 11:44) *
Потому что в замкнутой системе получится ПФ
- с ПИ - колебательное звено
- с П - апериодическое звено.
Извините, срочно надо выезжать на объект.

В замкнутой системе получится произведение... И какое оно будет? Зависит от управляемого объекта ....
Осторожнее там... на объекте.... берегите себя...
Go to the top of the page
 
+Quote Post
PhX
сообщение Nov 21 2008, 09:08
Сообщение #28


Местный
***

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



Цитата(haker_fox @ Nov 21 2008, 12:41) *

Существенно ли меняется момент инеции приведенный к валу исполнительного двигателя в завичимости от углов поворота остальных осей?
Если существенно, то вам придется усложнять систему управления или снижать требования по скорости.
Вообще в манипуляторах рацональнее использовать систему управления, которая позволяет реализовать трапецеидальный закон изменения скорости с ограничением рывка и ускорения.


--------------------
Если все, то не я...
Go to the top of the page
 
+Quote Post
dpss
сообщение Nov 21 2008, 09:47
Сообщение #29


Знающий
****

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



Типовая система позиционирования обычно содержит три контура управления - по скорости , по полoжению, по току вложенные один в другой. Крутящий момент мотора зависит только от тока в обмотке.
Без контура управления по току привод будет с плохой устойчивостью и никакое шаманство с регуляторами не поможет. Разрешение энкодера должно быть как минимум в 10 раз выше разрешения привода.
Go to the top of the page
 
+Quote Post
Tanya
сообщение Nov 21 2008, 10:09
Сообщение #30


Гуру
******

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



Цитата(dpss @ Nov 21 2008, 12:47) *
Типовая система позиционирования обычно содержит три контура управления - по скорости , по полoжению, по току вложенные один в другой. Крутящий момент мотора зависит только от тока в обмотке.
Без контура управления по току привод будет с плохой устойчивостью и никакое шаманство с регуляторами не поможет. Разрешение энкодера должно быть как минимум в 10 раз выше разрешения привода.

Можно током и не сильно управлять (только ограничить), а его значение использовать как дифференциальный член в контуре скорости. Это если момент пропорционален току.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 06:39
Рейтинг@Mail.ru


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