Алгоритм управления следящим приводом
Re: Алгоритм управления следящим приводом
Что-то мне не нравится последний график (с теоретической точки зрения). У тебя статическая ошибка не убралась. Как так? Ki надо увеличивать, Kp может быть уменьшать. И непонятно, почему в конце процесса, когда H_new уже константа, H_act не стремится к этой константе. Ошибка регулирования не равна нулю, но выход ПИ-регулятора (=задание скорости) почему-то стабилизировался. Либо Ki сильно занижено каким-то масштабированием, либо что-то еще, ошибка в алгоритме, например.
График H_new немного дрожит, можно слегка зафильтровать миллисекундным фильтром.
Кстати, настройка Kp в случае П-регулятора слабо коррелирует с правильной настройкой Kp в случае ПИ-регулятора, т.е. надо заново подбирать коэффициенты. И еще: рекомендации для ПИ-регулятора скорости в принципе справедливы для ПИ-регулятора положения.
График H_new немного дрожит, можно слегка зафильтровать миллисекундным фильтром.
Кстати, настройка Kp в случае П-регулятора слабо коррелирует с правильной настройкой Kp в случае ПИ-регулятора, т.е. надо заново подбирать коэффициенты. И еще: рекомендации для ПИ-регулятора скорости в принципе справедливы для ПИ-регулятора положения.
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Мне тоже не нравится.Михайло писал(а):Что-то мне не нравится последний график (с теоретической точки зрения).
Убралась в центральной части, но осталась по краям.Михайло писал(а):У тебя статическая ошибка не убралась.
Я уже приводил теоретический график расчета задания положения
Вот более точный.
Может в ПЧ настроена минимально допустимая скорость?Михайло писал(а):И непонятно, почему в конце процесса, когда H_new уже константа, H_act не стремится к этой константе. Ошибка регулирования не равна нулю, но выход ПИ-регулятора (=задание скорости) почему-то стабилизировался.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
В алгоритме из википедии все просто. Могу выложить. Там три строчки.Михайло писал(а):ошибка в алгоритме, например
Может сам подход корявый?
Re: Алгоритм управления следящим приводом
Не похоже. Глянь еще раз вчерашний график: там скорость изменяется от -50, переходит через 0 и уходит до +250 без проблем и ограничений.Автоматизатор писал(а):Может в ПЧ настроена минимально допустимая скорость?
Похоже он реализован не совсем правильно. Объясни мне, почему в момент времени 229 скорость перестает расти при наличии заметной ошибки (H_new-H_act)? Иначе бы красная линия догнала синюю. Что-то сдерживает регулятор.Автоматизатор писал(а):Может сам подход корявый?
Кстати, да. Я вспомнил один момент, который не упоминается ни в каких википедиях. На выходе ПИ-регулятора должен быть не просто ограничение (лимитер, сатуратор). Нужно ограничивать каждую из компонент ПИД-регулятора + еще ограничение суммы П+И+Д. Иначе получается И-составляющая может наинтегрировать довольно большое число (положительное или отрицательное), регулятор уходит в глубокое насыщение, из которого потом не может долго выйти, даже если ошибка регулирования стала нулевой и даже сменила знак. Ограничение интегральной составляющей должно работать так: если значение выхода регулятора очень большое по модулю, то приращение (интегрирование) должно обнулиться (прекратиться).
Может у тебя из-за этого проблемы? Очень похоже, но не совсем. Выведи график И-составляющей, он не должен зашкаливать, должен быть сопоставим с выходом регулятора (=скоростью).
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Ты не ту ось смотришь: там где 250 - это перемещение, а справа ось - это скорость. Она меняется от 0 до 60 мм/с . Максимальная скорость ограничена после регулятора значением 100 мм/с, но в процессе работы нигде не превышает значения 70-80 мм/с.Михайло писал(а):Глянь еще раз вчерашний график: там скорость изменяется от -50, переходит через 0 и уходит до +250 без проблем и ограничений.
Почему то на приводе идет задержка отработки задания. Примерно на 0,1 с, что очень много. Это еще раньше замечали. Красная линяя - задание, синяя - фактическая скорость.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Ограничение И в регуляторе привода выглядит так:
Значения по умолчанию:
Кр = 20
Кi = 0.5
Ограничение И = 400 %
Интегрирующее звено стоит после пропорционального.
Как ограничение И сделать правильно?
Значения по умолчанию:
Кр = 20
Кi = 0.5
Ограничение И = 400 %
Интегрирующее звено стоит после пропорционального.
Как ограничение И сделать правильно?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: Алгоритм управления следящим приводом
Это нормально. Нужно рассматривать коэффициент интегральной части как Ki1 = Kp * Ki и все встает на свои места.Автоматизатор писал(а):Интегрирующее звено стоит после пропорционального.
Попробуй Ki = 0.1 для регулятора скорости.Автоматизатор писал(а):Значения по умолчанию:
Кр = 20
Кi = 0.5
Ограничение И = 400 %
Как у КЕБа: если выход И-компоненты по модулю превышает лимит, то нужно перестать прибавлять И-прибавку в рекурсивной формуле. Для этого нужно по отдельности вычислять П, И и Д по отдельным формулам.Автоматизатор писал(а):Как ограничение И сделать правильно?
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Вот сам код регулятора и полученные результаты.
В начале работы: начинает вращаться оправка, скорость маленькая, регулятор ждет, пока накопится ошибка. Даже когда на преобразователь придет задание, двигатель начнет крутится только с 0,5 Гц. Отсюда большая (недопустимая!) ошибка на участке 0...0,1 об. Необходимо стартовать с минимальной скоростью V_PID_min. Тогда регулятор начинает регулировать в минус. Надо как то стыковать.
Регулятор в прерываниях с периодом 10 мс
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Re: Алгоритм управления следящим приводом
Может в начале просто быстрее крутить оправку?Автоматизатор писал(а):В начале работы: начинает вращаться оправка, скорость маленькая, регулятор ждет, пока накопится ошибка. Даже когда на преобразователь придет задание, двигатель начнет крутится только с 0,5 Гц. Отсюда большая (недопустимая!) ошибка на участке 0...0,1 об. Необходимо стартовать с минимальной скоростью V_PID_min. Тогда регулятор начинает регулировать в минус. Надо как то стыковать.
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Как оказалось, именно к первому витку (и последнему) предъявляются высокие требования. Надо все делать точно, быстро можно не успеть.
Вопрос: как влияет период обсчета на точность? Мне попадалась информация, что Кр должен быть выше 10 для хорошей системы. А у меня колебания начинаются с Кр = 3...5. Если период уменьшить до 5 мс, то это улучшит процесс?
Вопрос: как влияет период обсчета на точность? Мне попадалась информация, что Кр должен быть выше 10 для хорошей системы. А у меня колебания начинаются с Кр = 3...5. Если период уменьшить до 5 мс, то это улучшит процесс?
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Изменили момент инерции ротора двигателя с 0.0026 (по умолчанию) до 0.0046 кг*м2 (по документам). Вроде получше стало.Михайло писал(а):Попробуй Ki = 0.1 для регулятора скорости.
Re: Алгоритм управления следящим приводом
Кстати, формулы из википедии работают правильно при условии, что постоянный период (10 мс) между пересчетами действительно соблюдается. Может 10 мс слишком мало и происходит отставание?
Взял за основу следующие данные из таблицы: Kp, Ki и столбец E. По этим данным рассчитал столбцы PID_P и PID_I, затем рассчитал столбец V_PPO_PID по формуле из твоей программы. Получил совершенно другой результат. Построил график, обнаружил, что причиной краха всех расчетов является принудительное обнуление выхода ПИ-регулятора в тот момент, когда высота H резко изменяется от 250 до 0. В итоге, когда отпускаешь ПИ-регулятор в свободный расчет, у него оказывается неправильное накопленное значение V_PPO_PID. Меньше на 18 попугаев от правильного значения и это отставание по скорости сохраняется все оставшееся время навивки!
Взял за основу следующие данные из таблицы: Kp, Ki и столбец E. По этим данным рассчитал столбцы PID_P и PID_I, затем рассчитал столбец V_PPO_PID по формуле из твоей программы. Получил совершенно другой результат. Построил график, обнаружил, что причиной краха всех расчетов является принудительное обнуление выхода ПИ-регулятора в тот момент, когда высота H резко изменяется от 250 до 0. В итоге, когда отпускаешь ПИ-регулятор в свободный расчет, у него оказывается неправильное накопленное значение V_PPO_PID. Меньше на 18 попугаев от правильного значения и это отставание по скорости сохраняется все оставшееся время навивки!
Re: Алгоритм управления следящим приводом
Еще есть претензия к строчке:
Нельзя регулятору запрещать отрицательные скорости, ведь вполне возможны небольшие допустимые перерегулирования, в этом случае регулятор должен командовать отъезжать назад. Это важно, например, в конце процесса навивки.Автоматизатор писал(а):Код: Выделить всё
IF "FB_POS_PPO_DB".V_Synh_r < 0 THEN "FB_POS_PPO_DB".V_Synh_r := "DB_MAIN".V_PID_min; END_IF;
Re: Алгоритм управления следящим приводом
И до сих пор непонятно, почему Vppo не догоняет V_PID. Надо настраивать регулятор скорости. У тебя разве привод не с обратной связью по скорости? Скалярное управление U/f? Видно, что как будто бы под нагрузкой привод проваливается по оборотам.
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Это верно, из-за этого провал в скорости. Это еще правленный вариант, еще не испробованный. На графике виден результат обнуления, который был раньше.Михайло писал(а):есть претензия к строчке:
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Михайло писал(а):когда высота H резко изменяется от 250 до 0.
В этот момент сбрасываются старые значения, оставшиеся с прошлого раза, и начинается процесс. Просто в протокол записываются
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
С ней, особо не настраивали, т.к. едет достаточно точно, на первый взгляд.Михайло писал(а):У тебя разве привод не с обратной связью по скорости
Re: Алгоритм управления следящим приводом
Ну настрой хотя бы бездатчиковое векторное управление (SLVC).
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Ты не так понял: "с ней" - это с ОСС. Настроен привод на закрытый вектор CLV.Михайло писал(а):Ну настрой хотя бы бездатчиковое векторное управление (SLVC).
Я думаю, что из-за медленного старта интегратор накапливает погрешность, которая накладывается на переходный процесс. Думаю сделать ручной старт, а потом включать регулятор (с какого места еще не решил).
- Автоматизатор
- Профессионал
- Сообщения: 993
- Зарегистрирован: 09 окт 2012, 05:18
Re: Алгоритм управления следящим приводом
Правильно ли выполнено ограничение:
- интегральной составляющей?
- рассчитанного регулятором значения (ограничение задания приводу, а не самого регулятора)?
- надо ли ограничивать диф. составляющую и как?
- интегральной составляющей?
- рассчитанного регулятором значения (ограничение задания приводу, а не самого регулятора)?
- надо ли ограничивать диф. составляющую и как?
Код: Выделить всё
"PID_P" := "DB_MAIN".Kp * (#E - "E_1"); // Пропорциональная составляющая ПИД-регулятора
IF "V_PPO_PID" <= "DB_MAIN".V_PID_max THEN // Интегрирование только при отсутствии насыщения
"PID_I" := "DB_MAIN".Ki * #E; // Интегральная составляющая ПИД-регулятора
END_IF;
"PID_D" := "DB_MAIN".Kd * (#E - 2 * "E_1" + "E_2"); // Дифференциальная составляющая ПИД-регулятора
// Требуемя скорость ППО для синхронизации с ПВО, мм/с [см. П-регулятор]
"V_PPO_PID" := "V_PPO_PID" + "PID_P" + "PID_I" + "PID_D";
"FB_POS_PPO_DB".V_Synh_r := "V_PPO_PID"; // Вычисленное ПИД-регулятором значение скорости присваивается заднию преобразователю
// Ограничение скорости
IF "FB_POS_PPO_DB".V_Synh_r > "DB_MAIN".V_PID_max THEN
// максимальная частота 150 Гц
// при передаточном отношении редуктора 4,91 и шаге ШВП 10 мм
// максимальная скорость 100 мм/сек
"FB_POS_PPO_DB".V_Synh_r := "DB_MAIN".V_PID_max ;
END_IF;