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

|
Цитата(haker_fox @ Nov 20 2008, 10:03)  Здравствуйте!
Требования не высокие: нужно просто перемещаться из текущей точки в заданную. Ускорение и максимальная скорость, до которой разгоняемя - задаются. Погрешность допустима.. ну сколько, даже не знаю как выразить. Ну вал двигателя может провернуться или не довернуться процентов на 20 - 40 от того значения, которое соответсвует заданной координате. Извините за доморощенные термины. Ну вот, пока вроде все. А в чем же проблема? Вы должны посчитать зависимость позиция(время).А потом придерживаться этого курса. Например, исходя из постоянной мощности, скорость будет пропорциональна корню из времени, позиция - времени в степени 3/2. Это при разгоне и торможении. В зависимости от длины перемещения возможны случаи как с участком, проходимым с постоянной скоростью, если максимальная скорость ограничена, так и без оного. Возможно, что торможение может быть более быстрым... Это зависит от механики.
|
|
|
|
|
Nov 20 2008, 08:51
|

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

|
Цитата(Tanya @ Nov 20 2008, 16:02)  А в чем же проблема? Вы должны посчитать зависимость позиция(время).А потом придерживаться этого курса. Например, исходя из постоянной мощности, скорость будет пропорциональна корню из времени, позиция - времени в степени 3/2. Это при разгоне и торможении. В зависимости от длины перемещения возможны случаи как с участком, проходимым с постоянной скоростью, если максимальная скорость ограничена, так и без оного. Возможно, что торможение может быть более быстрым... Это зависит от механики. Думаю, что в динамичной системе, не стоит уповать на какое-либо постоянство. К сожалению, практика это доказывает. Поэтому и пытаюсь прикрутить П-регулятор. Причем изобретаю велосипед: ставлю двухступенчатый. Т.к. в первой ступени будет либо недобег (низкий проп. коэффициент), либо перебег с возможными колебаниями. Вторая ступень ошибку устраняет. Может быть я Вас неверно понимаю, если что, не ругайте сильно) Я еще пока только начинающий. Цитата(_Pasha @ Nov 20 2008, 16:11)  1) Похоже, что надо PID вместо PI. Множитель дифференциальной части должен быть равен примерно 0,5 от множителя пропорциональной. Ага, прихожу к тому же. Только Вы еще Д-составляющую предлагаете. В данном случае она будет работать, если мы решим сорвать привод с установившейся точки? Цитата(_Pasha @ Nov 20 2008, 16:11)  2) В microchip были аппликухи про серваки. Они у них замечательные, но не очень приспособленные к жизни. Хотя многое я позаимствовал у них.
--------------------
Выбор.
|
|
|
|
|
Nov 20 2008, 09:03
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(haker_fox @ Nov 20 2008, 11:51)  Думаю, что в динамичной системе, не стоит уповать на какое-либо постоянство. К сожалению, практика это доказывает. Поэтому и пытаюсь прикрутить П-регулятор. Причем изобретаю велосипед: ставлю двухступенчатый. Т.к. в первой ступени будет либо недобег (низкий проп. коэффициент), либо перебег с возможными колебаниями. Вторая ступень ошибку устраняет. Может быть я Вас неверно понимаю, если что, не ругайте сильно) Я еще пока только начинающий. Да, выразилась туманно. Естественно, без регулятора не работает. Он подразумевался. Совет был в том, чтобы правильно выбрать траекторию. Ваша система эквивалентна заряду емкости до нужного значения напряжения от регулируемого источника через индуктивность и резистор. Если резистор маленький и/или меняется неконтролируемым образом (трение), то без колебаний трудно, если хочется побыстрее приехать... Добавление в систему управления дифференциального члена эквивалентно созданию искусственного трения.
|
|
|
|
|
Nov 20 2008, 14:07
|

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

|
Цитата(haker_fox @ Nov 20 2008, 12:16)  Вы выразились вполне ясно, просто мой уровень компетенции еще не вырос до нужного значения) На счет зарядки конденсатора - хорошая аналогия! Чтож, буду эксперементировать с регулятором ПИ(Д) по положению. А может стоит перед экспериментами поизучать описания и структурные схемы промышленных приводов позиционирования? Неплохая документация у Сименса (серия SIMOTION) , Омрон-Яскава, Бекхофф и многих других. На сайте Техаса http://focus.ti.com/docs/solution/folders/print/195.htmlhttp://focus.ti.com/dsp/docs/dspplatformsc...0&tabId=518 Скачайте и поставьте систему и библиотеку TIDKS для разных типов двигателей. Там есть описания и исходники и учебные работы . Есть библиотека псевдоплавающих вычислений для регуляторов. По регуляторам в журнале СТА http://www.cta.ru/ за последние два года был ряд хороших статей с практическими советами.
|
|
|
|
|
Nov 21 2008, 04:32
|

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

|
Попробуйте так: В контур скорости поставьте ПИ регулятор, а в контур положения П. Должно заработать нормально. Цитата Блин!) Еще одна неприятность выяснилась: появляются лишние импульсы от энкодера, если его резко повращать "туда-сюда". Если вращение идет плавно, все ок! Ну не дают денег на промышленный энкодер, пришлось ставить оптрон из мышки..., а они там, видимо, не очень по точности... А у Вас не те же проблемы что и у меня были =)
Эскизы прикрепленных изображений
--------------------
Если все, то не я...
|
|
|
|
|
Nov 21 2008, 05:06
|

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

|
Цитата(PhX @ Nov 21 2008, 12:32)  Попробуйте так: В контур скорости поставьте ПИ регулятор, а в контур положения П. Должно заработать нормально. Я именно так вчера и проэксперементировал! Да. работает, 1 колебание есть и затихает. Но скорость позиционирования не удовлетворяет. Да и при рывке привода с установившейся координаты проходит достаточно много времени (2 сек примерно), пока он вернет все на свои места. Цитата(PhX @ Nov 21 2008, 12:32)  А у Вас не те же проблемы что и у меня были =) Да похоже, что нет. Ведь у меня аппаратная обработка фаз энкодера на триггерах... Нда... нужно смотреть....
--------------------
Выбор.
|
|
|
|
|
Nov 21 2008, 05:45
|

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

|
Цитата(haker_fox @ Nov 21 2008, 09:06)  Но скорость позиционирования не удовлетворяет. А что предпологается позиционировать-то (крутить двигателем). Есть такие важные понятия как приведенный момент инерции и жескость механических связей... от них многое зависит...  А еще есть такой параметр kФ, который также во многом определяет быстродействие. А еще есть максимальный ток якоря... Который лучше бы не превышать... Если хочется не просто позиционировать, а позиционировать быстро ИМХО эти праметры нужно знать.
--------------------
Если все, то не я...
|
|
|
|
|
Nov 21 2008, 06:52
|
Бывалый
    
Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615

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

|
Цитата(alexander55 @ Nov 21 2008, 09:52)  ПИ-регулятор принципиально дает перерегулирование. Добавление скоростной компенсации к П-регулятору тоже дает перерегулирование. ПИ-регулятор не дает принципиально перерегулирования. Добавление скоростной компенсации к П-регулятору тоже не дает перерегулирование.
|
|
|
|
Сообщений в этой теме
haker_fox Алгоритм позиционирования Nov 20 2008, 07:03      alexander55 Цитата(PhX @ Nov 21 2008, 07:32) Попробуй... Nov 21 2008, 07:23       haker_fox Цитата(alexander55 @ Nov 21 2008, 15:23) ... Nov 21 2008, 07:36        PhX Такой вопрос:
Вы пока отдельно движком крутите или... Nov 21 2008, 07:51         alexander55 Цитата(PhX @ Nov 21 2008, 10:51) Такой во... Nov 21 2008, 07:55         haker_fox Цитата(PhX @ Nov 21 2008, 15:51) Такой во... Nov 21 2008, 08:41          Tanya Цитата(haker_fox @ Nov 21 2008, 11:39) К ... Nov 21 2008, 09:02          PhX Цитата(haker_fox @ Nov 21 2008, 12:41)
С... Nov 21 2008, 09:08           dpss Типовая система позиционирования обычно содержит т... Nov 21 2008, 09:47            Tanya Цитата(dpss @ Nov 21 2008, 12:47) Типовая... Nov 21 2008, 10:09            alexander55 Цитата(dpss @ Nov 21 2008, 12:47) Типовая... Nov 24 2008, 06:05          dpss На двух звеньях датчик стоит на ходовом валу механ... Nov 21 2008, 10:11        Tanya Цитата(haker_fox @ Nov 21 2008, 10:36) Ес... Nov 21 2008, 07:53       Tanya Цитата(alexander55 @ Nov 21 2008, 10:23) ... Nov 21 2008, 07:43        alexander55 Цитата(Tanya @ Nov 21 2008, 10:43) Тогда ... Nov 21 2008, 07:50         Tanya Цитата(alexander55 @ Nov 21 2008, 10:50) ... Nov 21 2008, 07:58          alexander55 Цитата(Tanya @ Nov 21 2008, 10:58)
Потом... Nov 21 2008, 08:44 _Pasha Цитата(haker_fox @ Nov 20 2008, 11:03) Вт... Nov 20 2008, 08:11 haker_fox Блин!) Еще одна неприятность выяснилась: появл... Nov 21 2008, 04:31 MaslovVG Цитата(haker_fox @ Nov 20 2008, 10:03) В ... Nov 21 2008, 06:41 PhX ЦитатаПозиционировать нужно манипулятор. Три оси..... Nov 21 2008, 06:56 haker_fox Как все сложно для меня. Может быть и вправду, исп... Nov 21 2008, 10:23 Tanya Цитата(haker_fox @ Nov 21 2008, 13:23) Ка... Nov 21 2008, 10:29  haker_fox Цитата(Tanya @ Nov 21 2008, 18:29) Тут Ва... Nov 21 2008, 10:41   Tanya Цитата(haker_fox @ Nov 21 2008, 13:41) На... Nov 21 2008, 10:57    PhX Цитата(Tanya @ Nov 21 2008, 14:57) Почита... Nov 21 2008, 11:17     dpss Цитата(PhX @ Nov 21 2008, 14:17) +1
Как б... Nov 21 2008, 13:37 MaslovVG Цитата(haker_fox @ Nov 21 2008, 13:23) Ка... Nov 21 2008, 11:53 _Sam_ ЦитатаЧем ступенчатое проще бесступенчатого? На са... Nov 21 2008, 15:45 haker_fox Всем ответившим за последние 12 часов огромное спа... Nov 22 2008, 04:57 evgeny_ch Цитата(haker_fox @ Nov 22 2008, 08:57) ..... Nov 22 2008, 06:25 haker_fox Я вот задумался, а может быть реализовать измерени... Nov 26 2008, 14:30 alexander55 Цитата(haker_fox @ Nov 26 2008, 17:30) Ка... Nov 27 2008, 05:57  haker_fox Цитата(alexander55 @ Nov 27 2008, 13:57) ... Nov 27 2008, 06:43   Tanya Цитата(haker_fox @ Nov 27 2008, 09:43) З.... Nov 27 2008, 09:47    haker_fox Цитата(Tanya @ Nov 27 2008, 17:47) Еще бе... Nov 27 2008, 10:34     Tanya Цитата(haker_fox @ Nov 27 2008, 13:34) Чт... Nov 27 2008, 11:00 Jurenja haker_fox, для понимания "почему так все рабо... Nov 26 2008, 16:12 haker_fox Выкладываю пару графиков.
Каждый график иллюстриру... Nov 29 2008, 07:37 PhX Цитата(haker_fox @ Nov 29 2008, 11:37) Вы... Nov 29 2008, 08:18  haker_fox Цитата(PhX @ Nov 29 2008, 16:18) Это зави... Nov 29 2008, 09:56   Tanya Цитата(haker_fox @ Nov 29 2008, 12:56) Ос... Nov 29 2008, 10:12    haker_fox Цитата(Tanya @ Nov 29 2008, 18:12) Какая ... Nov 29 2008, 10:21    PhX 1. Управляйте ТОКОМ. Заведите ос. по току и регули... Nov 29 2008, 10:23 haker_fox Гм, теперь, наверно только уже в понедельник смогу... Nov 29 2008, 10:28 Tanya Цитата(haker_fox @ Nov 29 2008, 13:28) З.... Nov 29 2008, 11:24  PhX Залез в свой архив. Авторы лучших, ИМХО, учебников... Nov 29 2008, 18:11   Iptash "Жесткость" или точность привода зависит... Dec 1 2008, 11:37    haker_fox Цитата(Iptash @ Dec 1 2008, 19:37) Я дела... Dec 2 2008, 01:03     Iptash Цитата(haker_fox @ Dec 2 2008, 04:03) У м... Dec 2 2008, 05:33      Iptash Цитата(Iptash @ Dec 2 2008, 08:33) А схем... Dec 2 2008, 11:17 haker_fox Iptash, спасибо за информацию!
2 all:
увеличил... Dec 2 2008, 10:40 Iptash Цитата(haker_fox @ Dec 2 2008, 13:40) уве... Dec 2 2008, 11:12 _Pasha Цитата(haker_fox @ Dec 2 2008, 14:40) 2 a... Dec 2 2008, 11:13 haker_fox _Pasha, спасибо! Верну назад) Блин, все-таки к... Dec 2 2008, 11:19 evgeny_ch DSP Servo Control With the MC68HC16Z1.
Algorithms... Dec 2 2008, 12:54 _Pasha Цитата(evgeny_ch @ Dec 2 2008, 16:54)
А ... Dec 2 2008, 13:11  Iptash Цитата(_Pasha @ Dec 2 2008, 16:11) А чего... Dec 2 2008, 13:35   PhX Обратите внимание, интегральная составляющая регул... Dec 2 2008, 14:16  evgeny_ch Цитата(Pasha @ Dec 2 2008, 17:11) А чего ... Dec 2 2008, 14:31   haker_fox Цитата(evgeny_ch @ Dec 2 2008, 22:31) На ... Dec 3 2008, 01:58    evgeny_ch Цитата(haker_fox @ Dec 3 2008, 05:58) Не ... Dec 3 2008, 03:33     haker_fox Цитата(evgeny_ch @ Dec 3 2008, 11:33) Вам... Dec 3 2008, 05:35    PhX Цитата(haker_fox @ Dec 3 2008, 05:58) Не ... Dec 3 2008, 04:11    alexander55 Цитата(haker_fox @ Dec 3 2008, 04:58) Дан... Dec 3 2008, 05:45     PhX Цитата(alexander55 @ Dec 3 2008, 09:45) Д... Dec 3 2008, 06:05      alexander55 Цитата(PhX @ Dec 3 2008, 09:05) Ну если и... Dec 3 2008, 06:33      dpss Цитата(PhX @ Dec 3 2008, 09:05) Механика,... Dec 5 2008, 09:50       evgeny_ch [color=#000000]Цитата(dpss @ Dec 5 2008, 13... Dec 5 2008, 10:50        alexander55 Цитата(evgeny_ch @ Dec 5 2008, 13:50) Луч... Dec 5 2008, 12:28        PhX Цитата(evgeny_ch @ Dec 5 2008, 14:50) [co... Dec 5 2008, 12:55         evgeny_ch Цитата(PhX @ Dec 5 2008, 16:55) Не всегда... Dec 5 2008, 14:23         alexander55 Цитата(PhX @ Dec 5 2008, 15:55) Не всегда... Dec 5 2008, 14:35 haker_fox Могу ли я применить для контроля тока (момента) сх... Dec 5 2008, 07:08 alexander55 Цитата(haker_fox @ Dec 5 2008, 10:08)
Мо... Dec 5 2008, 07:33  dpss Цитата(alexander55 @ Dec 5 2008, 10:33) М... Dec 5 2008, 09:17   haker_fox Цитата(dpss @ Dec 5 2008, 17:17) Развязки... Dec 5 2008, 09:20 evgeny_ch Цитата(haker_fox @ Dec 5 2008, 11:08) Мог... Dec 5 2008, 08:27  haker_fox Цитата(evgeny_ch @ Dec 5 2008, 16:27) У L... Dec 5 2008, 09:00 dpss Цитата(haker_fox @ Dec 5 2008, 10:08) Мог... Dec 5 2008, 08:29 Iptash Цитата(haker_fox @ Dec 5 2008, 10:08) Мог... Dec 5 2008, 10:35 haker_fox Как и обещал, формулирую требования к приводу: хот... Dec 5 2008, 07:38 _Pasha А какие преимущества у дифусилителя перед схемой и... Dec 5 2008, 08:32 evgeny_ch Цитата(_Pasha @ Dec 5 2008, 12:32) А каки... Dec 5 2008, 09:49 _Sam_ ЦитатаДалее в этой точки стоим и не даем себя сдви... Dec 5 2008, 17:45 haker_fox Может быть Америку открою, но мне, как начинающему... Dec 16 2008, 07:20 PhX Цитата(haker_fox @ Dec 16 2008, 11:20) Мо... Dec 16 2008, 07:26  haker_fox Цитата(PhX @ Dec 16 2008, 15:26) Да, стоя... Dec 22 2008, 10:13   evgeny_ch Цитата(haker_fox @ Dec 22 2008, 14:13) Аг... Dec 22 2008, 10:39
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|