Поискал я статьи на данном ресурсе на тему ПИД-регуляторов. Много статей. И с объяснением принципов работы таких регуляторов. И с алгоритмами подбора параметров. И с реализацией на конкретных железках и программах. Не увидел одного — симуляции ПИД-регуляторов на моделях, с тем, чтобы пользователь без использования без всякого железа мог «пощупать» работу ПИД-регулятора.
Для этого создана матмодель нагревательного элемента с датчиком температуры и ПИД-регулятором (разумеется, с кучей упрощений, но без ущерба для реалистичности). Реализовано это на обычном Excel. С тем, чтобы любой пользователь мог сам «покрутить» виртуальные параметры, и посмотреть, что из этого выходит. Собственно, я эту модель в своё время и сделал как раз для того, чтобы «потрогать» своими руками процесс ПИД-регулирования.
Сама модель имеет следующие параметры:
ПИД-регулятор имеет параметры:
Дальше много картинок.
1. Сначала выключим ПИД-регулирование и убедимся, что модель адекватная.
Устанавливаем равную температуру тела и окружающей среды и убеждаемся на графике, что температура стабильна:
Теперь устанавливаем температуру тела выше температуры окружающей среды, график перестроился и видим, что температура тела по экспоненциальному закону стремится к температуре окружающей среды.
То же самое, но теперь температура тела ниже температуры окружающей среды.
Уменьшаем коэффициент инерционности, и видим, что температура тела быстрее стремится к окружающей среде.
Увеличиваем коэффициент инерционности, и видим, что температура тела медленнее стремится к окружающей среде.
Теперь включаем нагрев (но не ПИД-регулятор!). Для этого в колонке управления «включаем» 2 раза «нагрев» — с 0 по 2 единицу времени на «мощность» =20, и с 11 по 12 единицу времени на «мощность» =10. На графике наблюдаем адекватную реакцию.
Теперь «включаем» постоянный «нагрев» на «мощность» 10. Видим, что температура тела растёт, но до определенного предела — «мощности» не хватает.
2. Теперь «включим» ПИД-регулятор, и посмотрим, как он будет регулировать температуру.
Установим целевую температуру в 100°С и Kp=1,Kd=1,Ki=0.1
Увеличим Ki до 1, и увидим, что это не совсем полезно в данном случае.
Теперь уберем интегральную составляющую Ki и посмотрим — теперь регулировка не дотягивает до 100 градусов — мало «мощности» без интегральной составляющей.
Увеличим K и/или Kp — теперь «мощности» хватило, но без интегральной составляющей возникли высокочастотные колебания.
Ну и так далее.
Ссылка на файл. Кому интересно — поиграйтесь.
Для этого создана матмодель нагревательного элемента с датчиком температуры и ПИД-регулятором (разумеется, с кучей упрощений, но без ущерба для реалистичности). Реализовано это на обычном Excel. С тем, чтобы любой пользователь мог сам «покрутить» виртуальные параметры, и посмотреть, что из этого выходит. Собственно, я эту модель в своё время и сделал как раз для того, чтобы «потрогать» своими руками процесс ПИД-регулирования.
Сама модель имеет следующие параметры:
- Кf инерционности нагреваемого тела (масса, уд. теплоёмкость, изоляция)
- Температура окружающей среды °С
- Начальная температура тела °С
ПИД-регулятор имеет параметры:
- Целевая температура °С
- Коэфф. пропорционального воздействия
- Коэфф. дифференциального воздействия
- Коэфф. интегрального воздействия
- Максимальное значение управляющего воздействия
- Общий коэффициент усиления (если 0, то регулятор и нагреватель не работают)
Дальше много картинок.
1. Сначала выключим ПИД-регулирование и убедимся, что модель адекватная.
Устанавливаем равную температуру тела и окружающей среды и убеждаемся на графике, что температура стабильна:
Теперь устанавливаем температуру тела выше температуры окружающей среды, график перестроился и видим, что температура тела по экспоненциальному закону стремится к температуре окружающей среды.
То же самое, но теперь температура тела ниже температуры окружающей среды.
Уменьшаем коэффициент инерционности, и видим, что температура тела быстрее стремится к окружающей среде.
Увеличиваем коэффициент инерционности, и видим, что температура тела медленнее стремится к окружающей среде.
Теперь включаем нагрев (но не ПИД-регулятор!). Для этого в колонке управления «включаем» 2 раза «нагрев» — с 0 по 2 единицу времени на «мощность» =20, и с 11 по 12 единицу времени на «мощность» =10. На графике наблюдаем адекватную реакцию.
Теперь «включаем» постоянный «нагрев» на «мощность» 10. Видим, что температура тела растёт, но до определенного предела — «мощности» не хватает.
2. Теперь «включим» ПИД-регулятор, и посмотрим, как он будет регулировать температуру.
Установим целевую температуру в 100°С и Kp=1,Kd=1,Ki=0.1
Увеличим Ki до 1, и увидим, что это не совсем полезно в данном случае.
Теперь уберем интегральную составляющую Ki и посмотрим — теперь регулировка не дотягивает до 100 градусов — мало «мощности» без интегральной составляющей.
Увеличим K и/или Kp — теперь «мощности» хватило, но без интегральной составляющей возникли высокочастотные колебания.
Ну и так далее.
Ссылка на файл. Кому интересно — поиграйтесь.