|
Алгоритм позиционирования, при использовании энкодера 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 от того значения, которое соответсвует заданной координате. Извините за доморощенные термины. Ну вот, пока вроде все.
--------------------
Выбор.
|
|
|
|
|
 |
Ответов
(15 - 29)
|
Nov 21 2008, 07:15
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(alexander55 @ Nov 21 2008, 09:52)  ПИ-регулятор принципиально дает перерегулирование. Добавление скоростной компенсации к П-регулятору тоже дает перерегулирование. ПИ-регулятор не дает принципиально перерегулирования. Добавление скоростной компенсации к П-регулятору тоже не дает перерегулирование.
|
|
|
|
|
Nov 21 2008, 07:23
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(PhX @ Nov 21 2008, 07:32)  Попробуйте так: В контур скорости поставьте ПИ регулятор, а в контур положения П. Должно заработать нормально. Правильное решение. При наличии люфта в механике ПИ-регулятор в контуре положения будет качать. При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически. Это возможно только с П-регулятом в контуре положения. Цитата(Tanya @ Nov 21 2008, 10:15)  ПИ-регулятор не дает принципиально перерегулирования. Добавление скоростной компенсации к П-регулятору тоже не дает перерегулирование.
|
|
|
|
|
Nov 21 2008, 07:36
|

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

|
Цитата(alexander55 @ Nov 21 2008, 15:23)  Правильное решение. При наличии люфта в механике ПИ-регулятор в контуре положения будет качать. При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически. Это возможно только с П-регулятом в контуре положения.  Если привод "пришел" в нужную точку и застабилизировлся в ней, то при попытки отклонить его от этой точки, будет ли он "сопротивляться", те создавать момент на валу, противостоящий отклонению? Ведь ошибка будет не очень большой в этом случае и понадобиться большой П-коэффициент, чтобы усилить ошибку и создать достаточный для сопротивления момент. Вместе с тем, такой большой коэффициент будет приводить к колебаниям, относительно заданной координаты, когда привод "приходит" в нее "издалека", по инерции проскакивает, затем возвращается, а большой П-коэффициент будет только способствовать автоколебаниям. Снвоа напрашивается двуступенчатый контур П-регулятора по положению. Один с относительно небольшим коэффициентом, призван привести привод в заданную точку с 1 - 2 колебаниями. Второй влкючается в работу, когда ошибка позиционирования станет приемлимой после работы первой ступени, и призван обеспечить многократное увеличение момента при попытке дистабилизировать привод... Уф... простите за туманное изложение мысле... просто с приводами раньше не работал... год назад начал, но, как видите, пока еще не много достиг... Спасибо Вам за все советы!!!
--------------------
Выбор.
|
|
|
|
|
Nov 21 2008, 07:43
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(alexander55 @ Nov 21 2008, 10:23)  Правильное решение. При наличии люфта в механике ПИ-регулятор в контуре положения будет качать. При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически. Это возможно только с П-регулятом в контуре положения.  Тогда уж и без люфта будет качать... Все, что Вы пишите справедливо только для случая, когда стационарное выходное воздействие строго равно нулю, что бывает... иногда... не спорю. А в общем случае нет.
|
|
|
|
|
Nov 21 2008, 07:50
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Tanya @ Nov 21 2008, 10:43)  Тогда уж и без люфта будет качать... Затухающе, а с люфтом постоянно - устойчивые незатухающие колебания. Цитата(Tanya @ Nov 21 2008, 10:43)  Все, что Вы пишите справедливо только для случая, когда стационарное выходное воздействие строго равно нулю, что бывает... иногда... не спорю. А в общем случае нет. Введением ПИ-регулятора астатизм разомкнутой системы становится равным 2, с П-регулятором - 1.
|
|
|
|
|
Nov 21 2008, 07:53
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

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

Познающий...
     
Группа: Свой
Сообщений: 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. На одном звене вал двигателя через шестерню передает движение ходовому валу, и через еще одну шестерню от двигателя на датчик.
--------------------
Выбор.
|
|
|
|
|
Nov 21 2008, 08:44
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

|
Цитата(Tanya @ Nov 21 2008, 10:58)  Потому что в замкнутой системе получится ПФ - с ПИ - колебательное звено - с П - апериодическое звено. Извините, срочно надо выезжать на объект.
|
|
|
|
|
Nov 21 2008, 09:02
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(haker_fox @ Nov 21 2008, 11:39)  К сожалению, не совсем понял, о чем говорится( Как вести систему, да еще плавно, если рассогласование координат по мере приближения к заданной точке уменьшается, следовательно и уменьшается выходной сигнал с П-регулятора, в точку привод выйдет на почти нулевой скорости. И, если даже погрешность будет нулевой, то что его заставит противостоять попытке вывести привод из заданной точки? Ведь по какой причине он плавно (на небольой скорости) пришел в эту точку, также плавно он и будет сопротивляться, что не приемлимо... Поясню. Регулятор не должен знать, что мы плавно-плавно движемся. Для него все должно быть квазистационарно. Представьте себе график - по одной оси координата, по другой - скорость. Это и будет фазовое пространство. Линия, выходящая из некоторой точки на оси абсцисс (положение) и приходящая на эту же ось, будет задавать движение из одной точки в другую с нулевой начальной и конечной скоростями. Если правильно вести систему по такой правильной (допустимой) траектории, то мы не превысим максимальной скорости, ускорения... и все нам с рук сойдет... гладко. Для этого мы должны запрограммировать задатчики перемещения и, возможно, скорости. Т.е. регулятор должен отрабатывать отклонения текущих значений от заданных... тоже текущих... по программе. Цитата(alexander55 @ Nov 21 2008, 11:44)  Потому что в замкнутой системе получится ПФ - с ПИ - колебательное звено - с П - апериодическое звено. Извините, срочно надо выезжать на объект. В замкнутой системе получится произведение... И какое оно будет? Зависит от управляемого объекта .... Осторожнее там... на объекте.... берегите себя...
|
|
|
|
|
Nov 21 2008, 09:08
|

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

|
Цитата(haker_fox @ Nov 21 2008, 12:41)  Существенно ли меняется момент инеции приведенный к валу исполнительного двигателя в завичимости от углов поворота остальных осей? Если существенно, то вам придется усложнять систему управления или снижать требования по скорости. Вообще в манипуляторах рацональнее использовать систему управления, которая позволяет реализовать трапецеидальный закон изменения скорости с ограничением рывка и ускорения.
--------------------
Если все, то не я...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|