FLProg
Вход на сайт
Логин:
Пароль:
Категории раздела
Документация [18]
Блоки пользователей [162]
Цветовые темы [0]
Цветовые темы для программы FLProg предоставленные пользователями
Архив версий программы [188]
Поиск
...
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Четверг, 13.12.2018, 03:53
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Внимание всем пользователям программы FLProg! В течении ближайших двух дней будет осуществляться переход на новую платформу
Чтобы продолжить общение на форуме вы можете перейти сюда
Сообщения оставленные на старом форуме будут утеряны безвозвратно
Приятного Вам Нового года и до встречи в новом 2018 году
С уважением Администрация flprog.ru
Каталог файлов
Главная » Файлы » Блоки пользователей

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

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

*******************************************************************************************
ПИД имеет 2 выхода для работы с аналоговыми исполнительными механизмами (ИМ) или ТЭНами.
Структурная схема.
1. pwm (медленный ШИМ) - дискретный выход для подключения нагревателя/холодильника.
2. PWR - аналоговый выход, показывающий текущую мощность (0..1000).
Расчет мощности по формуле PWR = Kp*E(t)+Σ(E(t)/Ki)+Kd*∆E(t).
E(t) - рассогласование (уставка - вход),
∆E(t)- дельта рассогласования по сравнению с предыдущим измерением,
Kp,Ki,Kd - коэфф ПИД.

*******************************************************************************************
У ПД 3 выхода для работы с дискретными ИМ.
Структурная схема.
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 - температуру держит хорошо!

Фото процесса тестирования.

В архиве блоки пользователя PID_V2, PD_V2, примеры проектов на Pro Mini и график работы ПИД-регулятора при поддержании температуры нагревателя.

Архив обновлен 12.04.2017
Категория: Блоки пользователей | Добавил: Boroda | Теги: Pid
Просмотров: 8694 | Загрузок: 2331 | Комментарии: 52 | Рейтинг: 5.0/5
Всего комментариев: 521 2 3 4 5 »
avatar
2
1 Boroda • 13:45, 03.05.2016
Обновил архив. PID+ШИМ нагревателя+ШИМ трехходового крана.
avatar
1
2 Boroda • 04:04, 07.05.2016
Обновил архив. Переписал все на СИ, объединил блоки ПИД и ШИМ.
avatar
2
3 Boroda • 17:19, 08.05.2016
Вот графики работы "гибридного" ПД-регулятора и обычного ПИД-регулятора в режиме управления нагревателем с выхода PWM. Реле, подключенное на выход PWM, включает нагрузочный резистор на 5ом/10W, датчик MCP9700A измеряет его температуру. Реакция на изменение уставки и внешнее воздействие на объект регулирования.

Графики
avatar
2
4 Boroda • 12:05, 15.05.2016
Т.к. Ардуино плохо относится к типу данных Float, было принято решение перевести регуляторы с формата Float на Int и Long. Все входные параметры должны быть в 10 раз больше, чтоб получить шаг 0,1. Блоки добавил в архив.
avatar
0
5 kondrat • 16:32, 06.06.2016
Просьба подробно объяснить принцип работы схем.Куда вводить константу нужной температуры и т.д.(не особо понимаю) Хочу переоборудовать тепловой пункт многоквартирного дома. можно ли управлять по температурному графику(пища для размышления)?
avatar
0
6 Boroda • 20:17, 06.06.2016
Ну там же все есть, просто в версии FLProg 1,11,1 описание пользователя не показывается. Добавьте блок в библиотеку и нажмите редактировать, внутри есть описание работы и описание всех входов/выходов.
График уставки задается с помощью стандартного блока Scale или "Нелинейное масштабирование".
А лучше взять ТРМ32 и не мучиться. Надежнее будет. Да 10 т.р., но если зимой промерзнут трубы во всем доме, то...
avatar
0
7 igee • 12:52, 08.11.2016
Подскажите пожалуйста, а возможно ли как то сбросить процесс расчета вашего ПИД и снова заставить считать с нуля, будто бы он только запущен?
avatar
0
8 Boroda • 22:16, 08.11.2016
А зачем сбрасывать составляющие ПИД? Набегает интеграл?
avatar
0
9 igee • 17:25, 09.11.2016
Например в системе 2 мотора, если в процессе регулирования один выходит из строя, мне нужно запустить второй и при этом начать расчет регулирования сначала, а не продолжить с того момента на котором сломался первый.
avatar
1
10 Boroda • 19:57, 09.11.2016
Т.е. частотник один, после него два пускателя и два мотора. И частотник используется для регулировки и одновременно как плавный пуск?

Регулируете посредством П или И составляющей?
Если И сделать достаточно динамичную (маленький коэффициент Ки), то пяти секунд должно хватить на следующие действия: произошла авария мотора, мы заметили ее, отключили контактор и сразу же обнулили уставку. Далее ждем 5 секунд, для успокоения процессов, которыми управлял мотор, за это время ПИД упадет в 0 или около того. Далее включаем контактор резервного мотора и увеличиваем уставку до прежнего уровня. Все просто: уставка = 0, когда все контакторы отключены!

П.С. нам в котельных надо ждать секунд 10 между переключениями насосов, а иначе обратные клапана очень сильно хлопают.

П.П.С. можно еще обнулить вход Max_I (ограничение максимума интеграла), если мощность накапливается в нем, а после пуска контактора Max_I обратно приравнять к максимальной мощности.
avatar
0
11 igee • 13:40, 12.11.2016
В общем в результате все таки решил использовать ПИД, который на базе ардуиновской библиотеки сделан. Где то на форуме его блок даже есть. Там вместо того, чтобы колдовать с параметрами регулятора, можно четко задать параметр Output, когда ПИД переведен в ручной режим. В итоге перевел в ручной - сбросил на то значение, какое нужно, снова включил и регулируем дальше.
avatar
1
12 Boroda • 15:18, 16.11.2016
Ну мы такое хренью не занимаемся, если есть резервирование моторов, то резервируется вся цепь. Контактор, частотник, мотор. Да и частотники имеют функцию плавного пуска до уставки.
Отключил контактор и снял сигнал управления с частотника. При повторном разрешении работы, частотник плавно выходит на уставку. Надо только в мозгах его поковыряться.
avatar
0
13 CraCk • 03:37, 01.01.2017
Можете создать блок пользователя на библиотеке PID_v1.h? Просто есть на С код. Хочу в FLprog перенести, но там используется PID_v1 регулятор. Даже если он будет хуже ваших регуляторов нестрашно. Для автора программы мой опыт станет полезным при добавление в программу ПИД регулятрора.
http://bigbarrel.ru/arduino_pid/
https://github.com/br3ttb/Arduino-PID-Library/blob/master/README.txt
http://brettbeauregard.com/blog....duction
avatar
0
14 Alessan • 22:50, 29.01.2017
А как в Int версии PID регулятора коэфициенты Kp, Ki, Kd водить, они же должны быть с запятой все?  А у блока входы подсвечивает как Int
1-10 11-20 21-30 31-40 41-43
avatar
FLProg © 2018
uCozЯндекс.Метрика