|
Настройка хитрого ПИД регулятора, для электронного дросселя |
|
|
|
Dec 5 2011, 19:50
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 5-12-11
Из: Россия, Москва
Пользователь №: 68 694

|
Здравствуйте! Возможно, кто-нибудь из вас сталкивался с подобной проблемой. Проблема вот в чем. Делаю блок управления электронным дросселем автомобиля. По сути это сервопривод с коллекторным мотором, понижающим редуктором и датчиком (переменный резистор) на выходном валу. Конструкция, аналогичная авиамодельной сервомашинке - только в 10 раз мощнее. Соответственно, мотор заслонки управляется с микроконтроллера при помощи ШИМ сигнала. Реализован "классический" алгоритм ПИД-регулятора, вот кусок си-кода: Код en0=angle - servo_pos; integral_term = SumE / 73.5; // Divide by the sampling frequency derivative_term = en0 - en1; integral_term = integral_term * ki; // Ki derivative_term = derivative_term * kd; // Kd Cn = en0 + integral_term + derivative_term; // Sum the terms Cn = (Cn * kp); //Kp en1 = en0; Где, angle - требуемое положение, servo_pos - фактическое положение сервы сооветственно Cn - выход на ШИМ, ki kd kp - коэффициента ПИДа. Алгоритм работоспособен, заслонка поворачивается и с хорошей точностью попадает на заданное положение. НО. У нее есть как-бы люфт. То есть, если нажать на заслонку пальцем - она сначала поворачивается, потом из-за накопления ошибки I-звена плавно возвращается на заданное положение. Такое ощущение что недостаточно большой коэффициент P. Но проблема в том, что любое дальнейшее увеличение любого коэффициента приводит к "раскачке" системы - возникает довольно длительный переходный процесс, или вообще незатухающие колебания. Так же был опробован "частотный" метод подбора коэффициентов ПИДа - безрезультатно. Заслонка работает, но есть "люфт". Проблема не в "механике". Точно на той же плате и заслонке абсолютно нормально работает "заводской" софт, у заслонки "люфта" нет вообще. То есть, проблема явно в реализации алгоритма. Подскажите, пожалуйста - в какую сторону копать... Вообще, применим ли пид в подобных системах?
|
|
|
|
|
 |
Ответов
|
Dec 6 2011, 07:17
|
Участник

Группа: Участник
Сообщений: 28
Регистрация: 5-12-11
Из: Россия, Москва
Пользователь №: 68 694

|
Сдаётся мне никто не будет разбираться с вашим замечательным кодом.Это обычный PID. В коде ошибок нет, т.к. на нем нормально работают несколько других алгоритмов - например, положение регулятора холостого хода, стабилизация давления наддува и т.п. То есть в работоспособности кода сомнений нет. Вопрос в том, применим ли "классический" пид для такого сервопривода. попробуйте добавлять шумы к servo_pos, когда заслонка почти закрыласьСпасибо, сегодня попробую! Вот попробуйте приложить постоянную силу к заслонке... Или пружинку. Или током...В заслонке уже стоит пружина, довольно мощная. При снятии питания заслонка принудительно закрывается на угол, соответствующий оборотам при 30кмч на второй передаче. 3. Скорость лучше извлекать из противоЭДС двигателя.Нереально. Стоит задача повторить "заводской" алгоритм управления, используемый в серийных авто. Там аппаратная часть вполне определенная, и не подразумевает измерение противо-ЭДС. Попробуйте сначала убрать интегральный член. Почитайте у Microchip application note по поводу управления перевернутым маятником...Без интегрального члена возникает ошибка, связанная с наличием пружины. То есть переходный процесс при закрытии заслонки имеет другую форму чем при открытии. С интегралом все одинаково. Собственно, кусочек кода в первом сообщение это и есть микрочиповский код
|
|
|
|
|
Dec 6 2011, 08:08
|
Местный
  
Группа: Участник
Сообщений: 475
Регистрация: 6-02-10
Из: Москва
Пользователь №: 55 343

|
Цитата(K.Viktor @ Dec 6 2011, 11:17)  Это обычный PID. В коде ошибок нет, т.к. на нем нормально работают несколько других алгоритмов - например, положение регулятора холостого хода, стабилизация давления наддува и т.п. То есть в работоспособности кода сомнений нет. Вопрос в том, применим ли "классический" пид для такого сервопривода. Так я не сомневаюсь что сама программа рабочая, я сомневаюсь в том что параметры "обычного" пида выбраны верно.
|
|
|
|
|
Dec 7 2011, 10:30
|
Частый гость
 
Группа: Участник
Сообщений: 168
Регистрация: 22-05-09
Из: Киев
Пользователь №: 49 392

|
Цитата(SergCh @ Dec 6 2011, 11:08)  Так я не сомневаюсь что сама программа рабочая, я сомневаюсь в том что параметры "обычного" пида выбраны верно. Совершенно верно. Прежде, чем бросаться крутить ручки втёмную желательно познакомиться с объектом управления. Нужно узнать его Ке, электрическую и электромеханическую постоянные. По ходу ознакомления нарисуются Lя – индуктивность якоря, Rя – сопротивление якоря. Если механическая и электрическая постоянные разнесены на порядок, то объект управления можно условно считать звеном первого порядка, при условии, что влияние электрической постоянной будет глубоко закопано на (-12 – (-20))дБ полосы авторегулирования. Естественно, я надеюсь, туда уже закопана и частота ШИМ. Тогда мы имеем дело только с электромеханической постоянной, звеном первого порядка, для которого применяем корректирующее ПИ – звено. Не ПИД! Д – может сбить Вас с толку, запутать, причём с Вашим счастьем, это сделается легко. Тут Вам советовали завести дополнительную верёвку по ЭДС, хотя это и не предусмотрено в «оригинале». Хочу напомнить, что ОС по ЭДС вращения для коллекторных машин может быть замечена, когда её значение превышает падение напряжения на щётках. U = E + I*Rя + Uщ. U – напряжене, приложенное к машине. E – ЭДС. I – ток. Rя – сопротивление якоря. Uщ – дифференциальное падение напряжения на щётках. Совершенно очевидно, что при определённых моментах (токах) нагрузки и «малых или ползучих» оборотах вала, ЭДС «прячется» за падением напряжения на щётках. Начиная с каких-то «эффективных» оборотов вала и дружественных токов нагрузки, ЭДС «выходит из тени», но погрешность её измерения столь велика, что сводит на пшик все потуги измерения. ОС по ЭДС эффективно применять для скоростей средних и выше. При этом погрешность измерения, в любом случае, оставляет желать лучшего, да и сам метод измерения скорости вращения вала по ЭДС есть дерьмо, в сравнении с классическим методом измерения по специализированным для этого случая датчикам (тах, импульсный датчик и т.д.) Не забываем, что задача про сервак, то есть – основная работа в районе «ползучих» скоростей, где ЭДС не сыскать и днём с огнём. Теперь про пружину. Ту её так хвалили, что пройти мимо этих од сложно. Смотрите, пружина как нагрузка есть колебательное звено, звено второго порядка. Об этом не следует забывать. Если её резонансная частота (не дай бох) попадает в полосу авторегулирования, то с этим нужно, что-то делать, это нужно обязательно учесть. Либо сузить полосу, так чтобы закопать резонанс пружины глубоко под 0дБ, либо вводить корректирующее Д-звено (вот оно – то самое счастье), так чтобы наклон разомкнутой ЛАЧХ пересекал 0дБ усиления под углом -20дБ/дек. Тут Вам крепко «повезло», ибо не во всех случаях удаётся справиться с норовистыми пружинами с помощью простого ПИДа. Но будем надеяться, что редуктор ослабит её дурное влияние.
|
|
|
|
|
Dec 7 2011, 11:06
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Andron55 @ Dec 7 2011, 14:30)  Тут Вам советовали завести дополнительную верёвку по ЭДС, хотя это и не предусмотрено в «оригинале». Хочу напомнить, что ОС по ЭДС вращения для коллекторных машин может быть замечена, когда её значение превышает падение напряжения на щётках.
Теперь про пружину. Ту её так хвалили, что пройти мимо этих од сложно. Почти во всем с Вами согласна. Но... не могу молчать... ЭДС можно и нужно измерять при нулевом токе - в паузах ШИМа. Пружина же (не зря ее там поставили) приводит к тому, что момент и ток в равновесии не равен нулю. Более того, он может быть заранее приблизительно известен. Поэтому при больших скачках... мы заранее примерно знаем финальное значение тока, и можем включать И-компоненту с этим значением вблизи точки равновесия на фазовой плоскости. Что до собственных колебаний пружины, то согласна с Вами. Но колебания всей механической системы - не повод для расстройства. Трение придает оптимизм. И превращает окружность (эллипс) на фазовой плоскости в спираль... Еще можно вспомнить, что можно (и нужно) тормозить двигателем в паузах ЩИМа вблизи точки равновесия. Стандартные драйверы это предусматривают.
|
|
|
|
|
Dec 7 2011, 13:03
|
Частый гость
 
Группа: Участник
Сообщений: 168
Регистрация: 22-05-09
Из: Киев
Пользователь №: 49 392

|
Цитата(Tanya @ Dec 7 2011, 14:06)  Еще можно вспомнить, что можно (и нужно) тормозить двигателем в паузах ЩИМа вблизи точки равновесия. Стандартные драйверы это предусматривают. Динамическое торможение может быть полезно, как один из видов торможения. Но торможения и только, а не как вмешательство в функцию авторегулирования, дабы облегчить себе жизнь. Такое облегчение мнимое. По моему скромному мнению, машину нельзя душить синхронным выпрямителем, даже если её индуктивность помогает машине не делать резких реверансов во время пассивного (дин. торм.) такта ШИМ Мы так старались, разгоняли машину в активном такте ШИМ, а в пассивном взяли и тормознули, тем самым введя дополнительные потери. Конечно, авторегулятор увидит нашу глупость, и скомпенсирует её. При этом система вынуждена будет тратить запас своей энергии и интеллекта на компенсацию нашей «гениальности». Естественно, она (система) заметно потеряет жесткость и точность. Станет более вялой, нежели была при классическом ШИМе (ключ/диод). Цитата(Tanya @ Dec 7 2011, 15:19)  Не болтается, а лежит на механическом упоре (опоре).
Очень просто - если ШИМ выдает (в среднем) напряжение, то движение (скорость) дает противоЭДС, уменьшая ток и момент. Все это пересчитывается в силу, пропорциональную и противоположную скорости - жидкое терние. Тут опять пружина помогает косвенно. Нет, как раз болтается, потому как управляется, а не стоит, как истукан. Момент в двигателе зависит только от тока, протекающего через него, и больше ни от чего не зависит. Это справедливо для всех случаев, от ХХ до "КЗ" (перегруза) по моменту. Даже если двигатель остановить за вал насильно, всё напряжение питания приложится к Rя, за вычетом щёток, при этом двигатель будет развивать момент М = Км*I. Заметьте, ЭДС в этом случае = 0. Не в целях поехидничать, - уверен, Вы это хорошо знаете и без меня, но напомню: U = E + I*Rя + Uщ. U – напряжене, приложенное к машине. E – ЭДС. I – ток. Rя – сопротивление якоря. Uщ – дифференциальное падение напряжения на щётках.
Сообщение отредактировал Andron55 - Dec 7 2011, 13:05
|
|
|
|
|
Dec 7 2011, 13:23
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Andron55 @ Dec 7 2011, 17:03)  Динамическое торможение может быть полезно, как один из видов торможения. Но торможения и только, а не как вмешательство в функцию авторегулирования, дабы облегчить себе жизнь. Такое облегчение мнимое. По моему скромному мнению, машину нельзя душить синхронным выпрямителем, даже если её индуктивность помогает машине не делать резких реверансов во время пассивного (дин. торм.) такта ШИМ Мы так старались, разгоняли машину в активном такте ШИМ, а в пассивном взяли и тормознули, тем самым введя дополнительные потери. Конечно, авторегулятор увидит нашу глупость, и скомпенсирует её. При этом система вынуждена будет тратить запас своей энергии и интеллекта на компенсацию нашей «гениальности». Естественно, она (система) заметно потеряет жесткость и точность. Станет более вялой, нежели была при классическом ШИМе (ключ/диод). Вот несогласна. Со всем. Совсем. Но могу даже поиграть немного на Вашей стороне - такое торможение нагреет двигатель и драйвер. Я, однако, предлагала включать такое торможение только вблизи равновесия. А по Вашему тексту... Ранее Вы сетовали на осцилляторный характер механической нагрузки, а теперь Вам трение не нравится. А если бы там механический демпфер стоял, тоже было бы плохо? Про энергию... Ее в любом случае нужно терять - чтобы привести маятник в новое положение и остановить там, нужно прикладывать "отрицательную" силу. Если драйвер может крутить в обе стороны, то можно не тормозить "тупой" диссипацией, но все равно - в конечном итоге придется скорость погасить, если мы хотим быстро доехать... У Вас есть машина? Пользуетесь тормозами, или рассчитываете импульс очень точно и включаете задний ход с рекуперацией - будем думать, что у Вас электромобиль, а трением пренебрежем. Думается, что у ТС драйвер может только в одну сторону крутить... Тут еще такое дело - какая у нас целевая функция - энергию экономим, или время. Или очень точно хотим. Или некоторую комбинацию. От этого-то все и тянется. Цитата(Andron55 @ Dec 7 2011, 17:03)  Не в целях поехидничать, - уверен, Вы это хорошо знаете и без меня, но напомню: Не пойму тогда, зачем Вы это все пишите. И еще второй раз. Думаю, что не управляется - ток там, наверняка, только в одну сторону может течь.
|
|
|
|
|
Dec 7 2011, 14:18
|
Частый гость
 
Группа: Участник
Сообщений: 168
Регистрация: 22-05-09
Из: Киев
Пользователь №: 49 392

|
Цитата(Tanya @ Dec 7 2011, 16:23)  Думаю, что не управляется - ток там, наверняка, только в одну сторону может течь. Вы не поняли, «ноль» означает достигнутый результат, т.е. – ошибка равна нолю, но «ноль» - понятие относительное, - «задание» 3В = «ОС» 3В, «задание» 5В = «ОС» 5В. Видим достигнутый результат – ошибка = 0. То есть, ноль может бать достигнут при любом положении заслонки. Абсолютных нолей не бывает, ПИ звено всегда найдёт повод «поискать» «ноль», даже выполнив наше задание, оно будет выдавать ошибку либо +, либо - , балансируя вокруг ноля (абсолютного).
|
|
|
|
Сообщений в этой теме
K.Viktor Настройка хитрого ПИД регулятора Dec 5 2011, 19:50 SergCh Сдаётся мне никто не будет разбираться с вашим зам... Dec 6 2011, 05:29 Fast попробуйте добавлять шумы к servo_pos, когда засло... Dec 6 2011, 05:38 Tanya Цитата(K.Viktor @ Dec 5 2011, 23:50) Здра... Dec 6 2011, 06:49 Tanya Цитата(K.Viktor @ Dec 6 2011, 11:17) В за... Dec 6 2011, 07:37    Andron55 Цитата(Tanya @ Dec 7 2011, 14:06) Почти в... Dec 7 2011, 12:01     Tanya Цитата(Andron55 @ Dec 7 2011, 16:01) Да, ... Dec 7 2011, 12:19      Andron55 Цитата(Tanya @ Dec 7 2011, 16:23) Вот нес... Dec 7 2011, 13:58       Tanya Цитата(Andron55 @ Dec 7 2011, 17:58) Есть... Dec 7 2011, 14:14       Tanya Цитата(Andron55 @ Dec 7 2011, 18:18) Вы н... Dec 7 2011, 14:28        Andron55 Цитата(Tanya @ Dec 7 2011, 17:28) Ну... н... Dec 7 2011, 15:29         Tanya Цитата(Andron55 @ Dec 7 2011, 19:29) Очен... Dec 7 2011, 15:49          Andron55 Цитата(Tanya @ Dec 7 2011, 18:49) Я обычн... Dec 7 2011, 16:42           Tanya Цитата(Andron55 @ Dec 7 2011, 20:42) В ос... Dec 7 2011, 16:57            Andron55 Цитата(Tanya @ Dec 7 2011, 19:57) Все Вы ... Dec 7 2011, 18:11             Tanya Цитата(Andron55 @ Dec 7 2011, 22:11) Нет,... Dec 7 2011, 18:46              Andron55 Цитата(Tanya @ Dec 7 2011, 21:46) Разницу... Dec 7 2011, 19:30               Tanya Цитата(Andron55 @ Dec 7 2011, 23:30) И эт... Dec 7 2011, 20:08                Andron55 Цитата(Tanya @ Dec 7 2011, 23:08) Скорост... Dec 7 2011, 20:30                 Tanya Цитата(Andron55 @ Dec 8 2011, 00:30) Повт... Dec 8 2011, 04:06                  SergCh Цитата(Tanya @ Dec 8 2011, 08:06) Вы забл... Dec 8 2011, 07:54                   Tanya Цитата(SergCh @ Dec 8 2011, 11:54) Приятн... Dec 8 2011, 08:30                  Andron55 Цитата(Tanya @ Dec 8 2011, 07:06) Вы забл... Dec 8 2011, 09:59                   Tanya Цитата(Andron55 @ Dec 8 2011, 13:59) Как ... Dec 8 2011, 11:36   Andron55 PS
Забыл сказать про редуктор.
Не доведи хоспадя, ... Dec 7 2011, 11:26    Tanya Цитата(Andron55 @ Dec 7 2011, 15:26) PS
З... Dec 7 2011, 11:42 K.Viktor По противо эдс уверен. Схема очень примитивна, я е... Dec 6 2011, 08:03 Tanya Цитата(K.Viktor @ Dec 6 2011, 12:03) По п... Dec 6 2011, 08:16 demiurg_spb Цитата(K.Viktor @ Dec 6 2011, 12:03) То е... Dec 6 2011, 09:28 K.Viktor Огромное спасибо всем за советы по теме!
Попр... Dec 7 2011, 21:09 SNGNL Цитата(K.Viktor @ Dec 5 2011, 23:50) Но п... Dec 7 2011, 21:36 Andron55 Цитата(SNGNL @ Dec 8 2011, 00:36) Сдается... Dec 7 2011, 21:52 TSerg >А вот на результат таки да.
Приветствую приво... Dec 8 2011, 12:53 Tanya Цитата(TSerg @ Dec 8 2011, 16:53) >А в... Dec 8 2011, 13:07  Andron55 Цитата(Tanya @ Dec 8 2011, 16:07) Вы про ... Dec 8 2011, 20:50   Tanya Цитата(Andron55 @ Dec 9 2011, 00:50) Ну, ... Dec 9 2011, 04:04    SergCh Цитата(Tanya @ Dec 9 2011, 08:04) Вот я н... Dec 9 2011, 06:44    Andron55 Цитата(Tanya @ Dec 9 2011, 07:04) Вот я н... Dec 9 2011, 09:00     Tanya Цитата(Andron55 @ Dec 9 2011, 13:00) Что ... Dec 9 2011, 10:06      Andron55 Цитата(Tanya @ Dec 9 2011, 13:06) Не знаю... Dec 9 2011, 11:16       Tanya Цитата(Andron55 @ Dec 9 2011, 15:16) Если... Dec 9 2011, 11:21        Andron55 Цитата(Tanya @ Dec 9 2011, 14:21) Они тут... Dec 9 2011, 12:08  TSerg Цитата(Tanya @ Dec 8 2011, 17:07) Не нужн... Dec 10 2011, 18:53 _gari В задаче ТС почти "темный лес " с кинема... Dec 8 2011, 19:53 _gari Угу, пружинка тут очень странная даже с т.з. прост... Dec 10 2011, 19:36 K.Viktor Цитата(_gari @ Dec 10 2011, 22:36) Угу, п... Dec 12 2011, 07:27 Tanya Цитата(K.Viktor @ Dec 12 2011, 11:27) Топ... Dec 12 2011, 08:30 TSerg Цитата(K.Viktor @ Dec 12 2011, 11:27) Это... Dec 12 2011, 09:40 _gari Цитата(K.Viktor @ Dec 12 2011, 10:27) И к... Dec 12 2011, 18:31 K.Viktor Цитата(Tanya @ Dec 12 2011, 11:30) Совет ... Dec 12 2011, 19:15 _gari Цитата(K.Viktor @ Dec 12 2011, 22:15) И в... Dec 12 2011, 21:12 K.Viktor Цитата(_gari @ Dec 13 2011, 00:12) Так чт... Dec 13 2011, 06:32 TSerg >Речь про управление САМОЙ ЗАСЛОНКОЙ (электро).... Dec 13 2011, 14:26 K.Viktor Всем спасибо, проблема решена. Была недостаточно в... Dec 17 2011, 08:42 Tanya Цитата(K.Viktor @ Dec 17 2011, 12:42) Все... Dec 17 2011, 10:17 Herz А что такое однобитный ШИМ? Dec 17 2011, 10:25 Tanya Цитата(Herz @ Dec 17 2011, 14:25) А что т... Dec 17 2011, 12:01 TSerg Цитата(Herz @ Dec 17 2011, 14:25) А что т... Dec 17 2011, 18:19 Tanya Цитата(TSerg @ Dec 17 2011, 22:19) Релейн... Dec 17 2011, 18:47  monos Цитата(Tanya @ Dec 17 2011, 21:47) Обясни... Dec 17 2011, 20:09 _gari Принимайте поздравления, K.Viktor!
Так софтовы... Dec 18 2011, 02:31 K.Viktor Цитата(TSerg @ Dec 17 2011, 21:19) Порой ... Dec 18 2011, 08:46 Tanya Цитата(K.Viktor @ Dec 18 2011, 11:46) Но ... Dec 18 2011, 11:38 _gari Спасибо, K.Viktor, теперь все ясно. Dec 18 2011, 10:39 K.Viktor I звено в пиде имеет ограничитель, других нет.
Ре... Dec 18 2011, 16:29
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|