PID-регулятор

PID для ИМ с дискретным и аналоговым управлением

Пользовательские блоки ПИД регуляторов, прочих регуляторов и для работы с ШИМ выходами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 36
Откуда: Коломна
Имя: Станислав
Контактная информация:

PID-регулятор

#1

Сообщение Boroda » 24.01.2018{, 12:51}

Данный самописный PID-регулятор с успехом используется в системах на ПЛК известного Российского производителя на промышленных объектах. Регулирует температуру и давление в трубопроводах посредством дискретных и аналоговых трехходовых кранов. Также управляет частотными преобразователями трехфазных двигателей по интерфейсу 0-5В (0-10В и 4-20мА с внешними блоками преобразования на ОУ).

Представлено 2 вида регуляторов ПИД и ПД.

*******************************************************************************************
ПИД имеет 2 выхода для работы с аналоговыми исполнительными механизмами (ИМ) или ТЭНами.
Структурная схемаПоказать
Shema_PID.PNG
Структурная схема ПИД
Shema_PID.PNG (16.72 КБ) 5031 просмотр
Входы:
1.Value - текущее значение
2. Set - уставка (задатчик)
3. Kp - коэфф пропорциональной составляющей
4. Ki - коэфф интегральной составляющей
5. Kd - коэфф дифф составляющей
6. MaxPow - максимальная мощность на выходе
7. MinPow - минимальная мощность на выходе
8. MinPulse - минимальная разрешенная длительность импульса на выходе PWM
Выходы:
1. pwm (медленный ШИМ) - дискретный выход для подключения нагревателя/холодильника.
2. PWR - аналоговый выход, показывающий текущую мощность (0..1000).
Расчет мощности по формуле PWR = Kp*E(t)+Σ(E(t)/Ki)+Kd*∆E(t).
E(t) - рассогласование (уставка - вход),
∆E(t)- дельта рассогласования по сравнению с предыдущим измерением,
Kp,Ki,Kd - коэфф ПИД.

*******************************************************************************************
У ПД 3 выхода для работы с дискретными ИМ.
Структурная схемаПоказать
Shema_PD.png
Структурная схема ПД
Shema_PD.png (16.29 КБ) 5031 просмотр
Входы:
1.Value - текущее значение
2. Set - уставка (задатчик)
3. Kp - коэфф пропорциональной составляющей
4. Kd - коэфф дифф составляющей
5. MaxPow - максимальная мощность на выходе
6. MinPulse - минимальная разрешенная длительность импульса на выходе PWM
Выходы:
1. open (открыть, медленный ШИМ) - дискретный выход для открытия крана.
2. close (закрыть, медленный ШИМ) - дискретный выход для закрытия крана.
3. dPWR - аналоговый выход, показывающий текущее изменение мощности (-1000..+1000).
Расчет изменения мощности идет по формуле dPWR = Kp*E(t)+Kd*∆E(t).
E(t) - рассогласование (уставка - вход),
∆E(t)- дельта рассогласования по сравнению с предыдущим измерением,
Kp,Kd - коэфф ПД.

*******************************************************************************************

Просто о составляющих ПИД (для простоты в качестве регулируемого параметра возьмем температуру):

Ошибка регулирования = ("уставка" - "текущая температура").

Пропорциональная составляющая - мощность на выходе равна ("ошибка регулирования") * Kp,
чем больше коэфф. Kp, тем больше мощность. Если уставка = 40, температура = 30, Kp = 2, то мощность = 20%.
Если температура = уставке, то Пропорц = 0.

Интегральная составляющая - каждый период работы регулятора мощность на выходе будет увеличиваться
или уменьшаться на величину ("ошибка регулирования") / Ki, можно сказать, что интегр. составл. это
накопитель мощности и чем меньше коэфф. Ki, тем быстрее мощность будет возрастать или уменьшаться.
Если уставка = 40, температура = 30, Ki = 5, то мощность будет прибавляться на 2% каждый период.
Если температура = уставке, то мощность не меняется.

Дифференциальная составляющая - мощность на выходе равна:
("ошибка регулирования сейчас" - "ошибка регулирования в прошлом периоде") * Kd.
Этот параметр следит за скоростью изменения температуры. Если коэфф Kd = 6, сейчас ошибка регулирования = 5,
а в предыдущий период была = 10 (т.е. температура возросла на 5 градусов), то мощность на выходе будет
равна (-5*6) = -30%. Дифф составляющая уменьшила мощность, потому как температура очень сильно начала
подниматься. Если температура стабильна, то Дифф = 0.

Полная мощность ПИД-регулятора считается по формуле PWR = (пропорц + интегр + дифф).
Допустим мощность, накопленная в интегральной составляющей = 42%, тогда в нашем случае
PWR = 20+42-30 = 32%. Из этого примера видно, как "П" и "Д" оперативно помогают медленно меняющейся "И"
корректировать выходную мощность в зависимости от текущего состояния объекта регулирования.

Дискретные выходы pwm/open/close.
На данных выходах организован медленный ШИМ. Период ШИМа равен периоду работы ПИД(ПД) регулятора.
Пусть период ПИД и ШИМ равен 10 секунд, тогда длительности импульсов на выходе будут такими:
Мощность = 0%, выход отключен.
Мощность = 10%, импульс 1 секунда, пауза 9 секунд.
Мощность = 30%, импульс 3 секунды, пауза 7 секунд.
Мощность = 50%, импульс 5 секунд, пауза 5 секунд.
Мощность = 90%, импульс 9 секунд, пауза 1 секунда.
Мощность = 100%, выход включен.

*******************************************************************************************

Во всех регуляторах задается период работы медленных ШИМ (выходов pwm/open/close), он же является периодом измерения входного сигнала.

Для тестирования собрал схему из реле, нагрузочного резистора 10W и термодатчика DS18B20 - температуру держит хорошо!
Фото процесса тестированияПоказать
Тест ПИД-регулятора.png
Фото процесса тестирования
В архиве блоки пользователя PID_V2, PD_V2, примеры проектов на Pro Mini и график работы ПИД-регулятора при поддержании температуры нагревателя.

Архив обновлен 12.04.2017

Test_PID.rar
Блоки ПИД
(282.87 КБ) 498 скачиваний

Serg_Grn
Лейтенант
Сообщения: 330
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 33
Откуда: Одесса
Имя: Сергей

PID-регулятор

#21

Сообщение Serg_Grn » 01.05.2018{, 17:12}

Boroda писал(а):
01.05.2018{, 11:09}
Очень быстро набирается мощность и происходит выбег? Значит снижайте Кп.
Это у меня была ошибка, уже исправил.

Shurik2975
Рядовой
Сообщения: 78
Зарегистрирован: 29.04.2018{, 22:59}
Репутация: 1
Имя: Александр

PID-регулятор

#22

Сообщение Shurik2975 » 23.12.2018{, 00:30}

Здравствуйте. Уважаемый
Boroda
объясните пожалуйста я не могу понять У вас на блоках есть выход ОК но ни в описании ни здесь на странице ни в примерах я не понял зачем он (в примерах выход есть, переменная на нём есть а куда ту переменную можно пристроить не понятно, в каких случаях и какой сигнал на этом выходе?).

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 36
Откуда: Коломна
Имя: Станислав
Контактная информация:

PID-регулятор

#23

Сообщение Boroda » 23.12.2018{, 02:26}

Shurik2975 писал(а):
23.12.2018{, 00:30}
У вас на блоках есть выход ОК
Ну как бы вот. ПИД посчитал очередную итерацию, выход ОК выставился в единицу на один цикл. Иногда бывает нужно... Данные на дисплее, например, обновить.

Снимок1.JPG

Shurik2975
Рядовой
Сообщения: 78
Зарегистрирован: 29.04.2018{, 22:59}
Репутация: 1
Имя: Александр

PID-регулятор

#24

Сообщение Shurik2975 » 23.12.2018{, 07:19}

Теперь понятно спасибо.

dimdi
Рядовой
Сообщения: 3
Зарегистрирован: 05.05.2021{, 18:38}
Репутация: 0
Имя: дмитрий

PID-регулятор

#25

Сообщение dimdi » 20.06.2022{, 20:58}

Здравствуйте Boroda . просьба к вам -в pd_v3, вынести из "параметры блока" МАКСИМАЛЬНУЮ МОЩНОСТЬ НА ВЫХОДЕ на внешний вход. буду признателен.

Аватара пользователя
Dryundel
Полковник
Сообщения: 1759
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 542
Откуда: Ярославль
Имя: Андрей
Контактная информация:

PID-регулятор

#26

Сообщение Dryundel » 21.06.2022{, 08:49}

dimdi писал(а):
20.06.2022{, 20:58}
Здравствуйте Boroda
Boroda уже пару лет на форум не заходил. :)
dimdi писал(а):
20.06.2022{, 20:58}
вынести из "параметры блока" МАКСИМАЛЬНУЮ МОЩНОСТЬ НА ВЫХОДЕ на внешний вход
Вообще, это же элементарная операция. Немного усердия и все получится.
viewtopic.php?f=187&t=5683
Пользовательские блоки на сайте FLPROG - BLOCK
Выразить благодарность

dimdi
Рядовой
Сообщения: 3
Зарегистрирован: 05.05.2021{, 18:38}
Репутация: 0
Имя: дмитрий

PID-регулятор

#27

Сообщение dimdi » 21.06.2022{, 18:43}

Благодарю за ответ. Пробежался по ссылке- конечно же именно так я и сделал-эти действия логически и интуитивно напрашиваются. НО после ввода данных уже со входа почему-то нет реакции. Но приеду попробую ещё раз . спасибо.
ПОПРОБОВАЛ ЕЩЁ РАЗ -ПОЛУЧИЛОСЬ. БЛАГОДАРЮ.

Ответить

Вернуться в «ПИД регуляторы (PID), блоки для ШИМ»