Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

Пользовательские блоки ПИД регуляторов, прочих регуляторов и для работы с ШИМ выходами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#1

Сообщение dimalimite » 20.12.2018{, 13:12}

Добрый день.
Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом. Сделаны на классическом разностном уравнение.
Программа и блоки прикреплены к сообщению или можно скачать с диска.
Если есть желание посмотреть/послушать теорию как работают, то
Реакция на ступенчатые воздействия одновременно трех регуляторов
Диск

04.01.2019 Добавил версию регулятора c аналоговым выходом _V1. Теперь не требуется подача внешнего импульса 100 мс по фронту. Всё в одном блоке.
05.01.2019 Добавил версию регулятора c ШИМ выходом _V1. Теперь не требуется подача внешнего импульса 50 мс по фронту. Всё в одном блоке.
06.01.2019 Добавил версию регулятора c трехпозиционным выходом _V1. Теперь не требуется подача внешнего импульса 100 мс по фронту. Всё в одном блоке. См. сообщение №5 ниже.
09.01.2019 Добавил версию регулятора c аналоговым выходом _V11. Расширены ограничения на время цикла (от 0,05 сек), время исполнительного механизма (от 0,05 сек), время интегрирования Ти (от 0,05 сек). См. сообщение №11 ниже.
27.01.2019 Добавил версию регулятора с ШИМ выходом_V12. См. сообщение №28 ниже. Добавлен для информации выход текущей мощности в % (НЕ ИСПОЛЬЗОВАТЬ ДЛЯ УПРАВЛЕНИЯ АНАЛОГОВЫМИ МЕХАНИЗМАМИ!!!!) и возможность изменения мин. длительности импульса от 0 до Цикл/2 сек в режиме РЕЛЕ.
Вложения
ANALOG_PID_V1_(CODE).ubi
(88.12 КБ) 112 скачиваний
PWM_PID_(CODE).ubi
(102.14 КБ) 136 скачиваний
ANALOG_PID_(CODE).ubi
(86.49 КБ) 110 скачиваний
3_WAY_PID_(CODE).ubi
(65.25 КБ) 114 скачиваний
3_TYPE_PID.flp
(508.73 КБ) 154 скачивания
Последний раз редактировалось dimalimite 28.01.2019{, 16:39}, всего редактировалось 6 раз.

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#21

Сообщение dimalimite » 27.01.2019{, 19:31}

Phazz, А настройки какие у вас?

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#22

Сообщение dimalimite » 27.01.2019{, 19:32}

Phazz, можете 0 поставить. Там в программе автоматически подставится 9999.0. То есть влияния И практически не будет

Аватара пользователя
Phazz
Майор
Сообщения: 1031
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 61
Откуда: Сургут
Имя: Анатолий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#23

Сообщение Phazz » 27.01.2019{, 19:55}

А почему если температура выше уставки и происходит резкое понижение температуры, то тэн включается еще не достигнув уставки. Настройки вот такие.
2019-01-27_21-51-37.png
2019-01-27_21-51-37.png (8.01 КБ) 625 просмотров

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#24

Сообщение dimalimite » 27.01.2019{, 20:04}

Phazz,
Резкое понижение это как? Объясните подробнее пожалуйста.
П=100, то есть на изменение в 1 градус моментально выдаётся полная мощность. Нейтральная зона есть?
У вас не режим РЕЛЕ случайно стоит?

Аватара пользователя
Phazz
Майор
Сообщения: 1031
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 61
Откуда: Сургут
Имя: Анатолий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#25

Сообщение Phazz » 27.01.2019{, 20:15}

dimalimite, Режим реле.
Уставка 30гр., текущая 45гр., при понижении на 5гр реле уже включается. Настройки как на скриншоте.
Как я понимаю, если выставлен только Пропорциональный, то не должно включаться реле пока температура не упадет ниже уставки.

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#26

Сообщение dimalimite » 27.01.2019{, 21:29}

Phazz,
Прочитайте пожалуйста сообщение №14 про режим РЕЛЕ и Цикл=1 секунда. Вот у вас ровно так и работает или 0, или 50, или 100%.
В режиме РЕЛЕ регулятор "пытается" беречь ресурс вашего реле и мин. включение 0,5 сек и мин. перерыв между включения 0,5 сек или вообще не выключается.
Если у вас реле, то как минимум цикл 2 сек. и более. Для получения более-менее качественного регулирования. Поставьте для начала 5 секунд, так у вас будет мощность или 0, или от 10 до 90, или 100%.
П=100 %/С это вообще максимальное усиление для этого регулятора. Если хотите только П, то начните хотя бы с 10 %/С и если будет сильно не доходить до вашей уставки, то тогда уже увеличивайте.
Phazz писал(а):
27.01.2019{, 20:15}
Как я понимаю, если выставлен только Пропорциональный, то не должно включаться реле пока температура не упадет ниже уставки.
Нет всё совсем не так. Регуляторы П, ПИ, ПД, ПИД не так работают.
Рассмотрим только П регулятор, как у вас с П=100%/С:
Уставка SP=30, текущая PV=45, рассогласование Етек=SP-PV, приращение мощности на текущем шаге dPower=П*(Етек-Етек-1), итоговая мощность Powerтек=Powerтек-1 + dPower.
Вот у вас допустим была Powerтек=0. И установившейся режим
Шаг 1 (установившейся режим) : dPower=100*(-15-(-15))=0% Powerтек=0+0=0%
Шаг 2 (ваше резкое изменение с 45 на 40 градусов) : dPower=100*(-10-(-15))=500%!!!!!Powerтек=0+500=500% Программа лимитирует до Powerтек=100%.
и т.д.
Если бы П был = 1%/С, то dPower=1*(-10-(-15))=5%, Powerтек=0+5=5%.
Если у вас есть время, то посмотрите видео ссылка на которые есть в сообщение №1.

Аватара пользователя
Phazz
Майор
Сообщения: 1031
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 61
Откуда: Сургут
Имя: Анатолий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#27

Сообщение Phazz » 27.01.2019{, 21:57}

dimalimite, Смотрел, посмотрю еще раз видимо что-то пропустил ).
Штатный блок пид работает немного по-другому. Если температура выше уставки, то пид не реагирует пока температура не упадет ниже.

Отправлено спустя 9 минут 50 секунд:
Завтра погоняю на реальном ТЭНе. А еще есть возможность добавить вход для изменения этого параметра
dimalimite писал(а):
27.01.2019{, 21:29}
включение 0,5 сек и мин. перерыв между включения 0,5 сек

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#28

Сообщение dimalimite » 27.01.2019{, 22:12}

Phazz, поставьте цикл=5 секунд и П=10 %/С для начала, а уже от этого скорректируете (100%/С - это незатухающие колебания гарантированные).
Я сомневаюсь, что он иначе работает. Особенно в П части. Там другого не дано.

Отправлено спустя 44 минуты 51 секунду:
Phazz,
Phazz писал(а):
27.01.2019{, 22:07}
Завтра погоняю на реальном ТЭНе. А еще есть возможность добавить вход для изменения этого параметра
см. Приложение
MIN_PULSE_RELAY = constrain( MIN_PULSE_RELAY, (0.0), (CYCLE / 2.0) ); // Минимальное время включение/выключение РЕЛЕ 0...CYCLE/2 сек
То есть 0 сек до CYCLE/2 сек.
Категорически не рекомендую вам цикл 1 сек в режиме РЕЛЕ (тем более скорее всего 1 сек. цикл опроса датчика температурного). Начните с 5 сек.
Вложения
PWM_PID_V12_(CODE).ubi
(149.56 КБ) 59 скачиваний

Аватара пользователя
Phazz
Майор
Сообщения: 1031
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 61
Откуда: Сургут
Имя: Анатолий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#29

Сообщение Phazz » 28.01.2019{, 13:49}

У меня твердотельное реле поэтому износа не будет. А длинный ШИМ нужен чтобы не было частого мигания ламп освещения в такт ТЭНу.
Мигание конечно всё равно есть, но оно хоть не такое раздражающее.

Отправлено спустя 15 минут 50 секунд:
dimalimite,
Проверил, работает.
Настройки для чайника получились такие:
Цикл - 5 сек
П - 20
И - 150
Д - 0
мин. импульс 0.1 сек

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#30

Сообщение dimalimite » 28.01.2019{, 15:10}

Phazz, получается не отслеживает переключение через ноль ваша твердотелка?
Я рад, что всё получилось:).

Аватара пользователя
Phazz
Майор
Сообщения: 1031
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 61
Откуда: Сургут
Имя: Анатолий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#31

Сообщение Phazz » 28.01.2019{, 15:23}

dimalimite, Отслеживает, но просадки напряжения всё равно есть и частые пульсации раздражают.
Но штатный блок ПИД всё же почему-то совсем не так работает. Там мне хватило только П кофициента но на снижение температуры реакции не было пока не перейдет температуру уставки. Может от того что не понятно в каких единицах там задаются коофиценты. Понятно только что время в миллисекундах.

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#32

Сообщение dimalimite » 28.01.2019{, 15:41}

Phazz,
Phazz писал(а):
28.01.2019{, 15:23}
Отслеживает, но просадки напряжения всё равно есть и частые пульсации раздражают.
Но штатный блок ПИД всё же почему-то совсем не так работает. Там мне хватило только П кофициента но на снижение температуры реакции не было пока не перейдет температуру уставки. Может от того что не понятно в каких единицах там задаются коофиценты. Понятно только что время в миллисекундах.
Бог его знает. Вообще чудес не бывает). А есть возможность посмотреть что внутри блока? Или описание развернутое?
А как он на неизменное ступенчатое воздействие отрабатывает? Изменяет выход постоянно или только 1 раз при возмущение?

Аватара пользователя
Phazz
Майор
Сообщения: 1031
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 61
Откуда: Сургут
Имя: Анатолий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#33

Сообщение Phazz » 28.01.2019{, 16:12}

Только код который формируется в ide

Отправлено спустя 3 минуты 10 секунд:
Описание есть в справке. Но я думаю нет необходимости заморачиваться. Ваши блоки покрывают все потребности. Спасибо.

Отправлено спустя 7 минут 46 секунд:
Еще не плохо бы поместить эту информацию в описание блока. А то заходить в редактирование блока, чтобы посмотреть назначение и допустимые значения входов как-то не сразу в голову приходит )
СпойлерПоказать
2019-01-28_18-18-14.png

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#34

Сообщение dimalimite » 28.01.2019{, 17:00}

Phazz,
Phazz писал(а):
28.01.2019{, 16:23}
Еще не плохо бы поместить эту информацию в описание блока. А то заходить в редактирование блока, чтобы посмотреть назначение и допустимые значения входов как-то не сразу в голову приходит )
Будет время сделаю. Было бы классно если бы можно было скопировать всё разом, а не получается:((((.
Phazz писал(а):
28.01.2019{, 16:23}
Только код который формируется в ide
Там просто библиотека вызывается. В справке у меня его кстати почему-то нет:(
Посмотреть бы формулу и сразу бы всё прояснилось. Я как будет время, ради интереса, подам на него ступеньку в П-режиме только и посмотрю как он отрабатывает.
Просто у меня именно классика ПИД сделана. И работает как классика из учебника.
А есть куча разных других реализаций и они тоже работают без проблем. Например, в соседней ветке Boroda регуляторы. Формула другая и кстати если в П-режиме и выше уставки, тоже не будет изменять выход увеличивать пока ниже не опустится (будет только уменьшать на 0 сразу). Но это не классический ПИД и если снять характеристики работы, то не будет как ПИД себя вести.
Последний раз редактировалось dimalimite 04.02.2019{, 02:42}, всего редактировалось 1 раз.

Аватара пользователя
Phazz
Майор
Сообщения: 1031
Зарегистрирован: 17.10.2016{, 15:38}
Репутация: 61
Откуда: Сургут
Имя: Анатолий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#35

Сообщение Phazz » 28.01.2019{, 17:13}

dimalimite писал(а):
28.01.2019{, 17:00}
В справке у меня его кстати почему-то нет:(
https://flprog.ru/bez-rubriki/helppage/ ... e=PIDBlock

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#36

Сообщение dimalimite » 05.06.2019{, 04:09}

Добрый день.
Если кому-нибудь будет интересно - видео с разбором кода этих функциональных блоков

JORA555
Рядовой
Сообщения: 37
Зарегистрирован: 16.02.2017{, 05:09}
Репутация: 0
Откуда: Барнаул

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#37

Сообщение JORA555 » 23.09.2019{, 14:32}

Подскажите, а накопленная ошибка обнуляется при остановке регулятора. Если нет, то как можно это реализовать. Нужно для того, чтобы при резком изменении уставки или коэффициентов ПИД расчет ошибки начинался заново.

dimalimite
Рядовой
Сообщения: 51
Зарегистрирован: 03.12.2018{, 00:26}
Репутация: 14
Имя: Дмитрий

Цифровой ПИД регулятор с аналоговым, трехпозиционным и ШИМ выходом

#38

Сообщение dimalimite » 11.10.2019{, 11:28}

JORA555 писал(а):
23.09.2019{, 14:32}
Подскажите, а накопленная ошибка обнуляется при остановке регулятора. Если нет, то как можно это реализовать. Нужно для того, чтобы при резком изменении уставки или коэффициентов ПИД расчет ошибки начинался заново.
День добрый.
Регулятор рассчитывает приращение в пределах одного шага.
Если выключать сигналом ON_OFF то на выходе будет 0. И всё начнется заново от нулевого выхода.
Если происходит переключение AUTO_HAND из ручного в автоматический режим, то происходит это безударно, т.к. на время ручного режима Е3=Е1 и Е2=Е1. То есть производная "не выстрелит вверх" и т.п.
Резкое изменение уставки это самое сильное возмущающее воздействие для регулятора, т.к. это приведет к скачку производной (Д см. формулу расчета, если есть время, то видео можете посмотреть из этой темы с графиками работы). Так не следует делать в принципе :). Если изменяете уставку скачком, то будьте готовы получить скачок производной. Если требуется серьёзное изменение уставки, то делайте изменение по рампе.
Вот как-то так.

Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость