Это наверное лучшее объяснение работы ПИД регулятора, что я посмотрел. Теперь мне многое стало понятно. Еще бы видео о настройке на конкретном примере.
Спасибо! По настройке тут как вам сказать.....все методы настройки вилами на воде писаны:). На бумаге и в симуляторах всё красиво выглядит, но в реальной жизни что-то результаты очень круто не бьются с теорией (или может быть конкретно у меня какие-то проблемы). Вообще чем меньше запаздывание и инерция объекта, тем проще настроить регулятор. Например, вода-несжимаемая жидкость и изменения давления практически мгновенно распространяются в системе, а вот температура уже другое дело тут и инерция и транспортное запаздывание. Какая у вас стоит задача? Вы настраивали когда-нибудь регулятор (если да, то какой)?
@@dimalimite Дима Лимите настраивал трм10 и в flprog. В первом случае настроил совершенно случайно :). Совершенно не понимая как оно работает. А во втором нагрев воды в сусловарочном котле, никак не мог понять почему при вводе пропорциональной составляющей у меня он вел себя вроде предсказуемо. А при изменении интегральной, начиналась всякая ерунда. Только из вашего видео я понял, что интегральная должна быть как можно больше в начале настройки, а у меня был выставлен 0.
В самую суть!!! Вы всё абсолютно верно поняли. Первоначальная настройка Кр-меньше (или больше если это полоса пропорциональности), Ти-больше. На Ти=0 разные контроллеры по разному реагируют. Формально это деление на 0, по этому в программе, как правило, подставляется какое-то большое число типа 9999 и И часть становится пренебрежимо маленькой (остается только П часть, а это при больших значениях Кр приведет к незатухающим колебаниям где-то ниже уставки). Буржуйские регуляторы иногда используют метод Цигера Николса (могу неправильно написать) в качестве автонастройки. Вот там как раз убирается И часть (Ти=9999), а П приравнивается максимуму (Кр=100 например). Система начинает колебаться, замеряют амплитуду и период колебаний. Далее по формулам пересчитывают амплитуду в Кр, а период в Ти...А далее допилить напильником))) Или как повезёт.
Дима Лимите спасибо за видео. Стали понятны числа в диапазонах регулирования времени интегрирования и дифференцирования у ПИД регулятора частотника данфос
Просмотрел кучу видео на Ютубе, понял процентов 5, до того как наткнулся на ваше видео. Теперь понял примерно 20% Думаю ещё пару раз если просмотреть то уже лучше буду понимать. Спасибо вам. Готовлюсь к аттестации
Алгоритм работы вашего блока PWM_PID_V1_(CODE).ubi хорошо объяснён. Поэтому вызывает больше доверия, и более фукциональней чем блок Сергея Глушенко flprog.ru/uchebnyj-centr/keyforarduino/blok-pid-reguljatora-v-programme-flprog/ (чёрный ящик). Хотя я смакетировал нагреватель с ПИД-регулятором с блоком Сергея Глушенко - блок работает. Теперь попробую перепрошить Ардуино на ваш блок
@@dimalimite это выражение такое )) знал что есть такое управление в контроллерах,но как реализовано -нет )))Спасибо,Дмитрий ,интересный канал и интересные темы с понятными обьснениями.
Спасибо за видео. Очень близко к пониманию. Если бы пример был наглядней, например задана скорость двигателя 3000 об/м, имеем 2000об/м, регулируем ШИМом от 10 до 100%, 10% это 500 об/м, 100% это 6000об/м без нагрузки. А изменять температуру на 1 градус за 2 сек и почему дельта интегрирования и диференцирования 4 сек, почему в 2 раза больше.
День добрый! Я показываю как регулятор реагирует на отклонение, которое не может устранить. Это помогает понять как он работает и в чём отличие П, ПИ и ПИД. Температура не изменяется на 1 градус за 2 секунды она остаётся прежней, а меняется управляющее воздействие, которое формирует регулятор. Принцип одинаковый хоть в обороты двигателя, хоть температура, хоть кирпичи в кладке :).
У нас возник спор в отделе является ли ваше 3х позиционное управление частным случаем шим управления, ведь в случае 3 позиционного тоже наблюдается широтно импульсная картинка, где мы при одинаковом длиннее цикла подаем условно напряжение на привод клапана с определённой скважностью , равному приращению , просто в случае с приводом мы можем иметь отрицательное приращение , в в классическом Шим минимум нулевой сигнал
Вечер добрый! На мой вкус-это не ШИМ. Да похоже по принципу. Но в ШИМ мы же именно пропорционально заполняем "период", а тут мы именно получаем время импульса и пытаемся повернуть клапан на требуемый регулятором процент.
18:30 говорите, что в формуле нет обратной связи. В то время как "e" содержит текущее состояние системы (Температуру, давление etc...), что и будет ОС и применяется в этой формуле повсеместно.
Спасибо огромное за урок!!! Посмотрел приложенный код программы, но пока не смог понять одного условия в ней. В строке: UP = ((((SUM_D_T >= TIMER_PID & SUM_D_T >= 0.5) || D_T >= CYCLE - 0.5 || TIMER_PID_UP >= VALVE) & AUTO_HAND) || (HAND_UP & ! AUTO_HAND)) & ON_OFF & ! DOWN; // Открытие клапана мне не понятно условие: TIMER_PID_UP >= VALVE, это не опечатка? По смыслу получается что если накопленное время открытия клапана превысило время полного открытия клапана, то даем команду на открытие?
Вечер добрый! Спасибо. В целом моё отношение к этим формулам очень-очень неоднозначное. Посмотрите в комментариях с Anatoliy Bibikov обсуждали. Если у вас есть какой-то положительный опыт, то расскажите. Будет интересно.
@@dimalimite Пробовал настроить симулятор расхода пара по методу максимального коффициента усиления (постепенное увеличение Кп до автоколебаний одной амлитуды и замеряем период цикла, в итоге имеем Кмакс и Тс, подставляем это в формулы и получаем Кп , Ти и если надо Тд) результатом остался не доволен. Кривая далеко не идеальная (колебательный, затухающий процесс с выходом на задание, но после изменения задания уже не выходит на него точно) и это учитывая, что это регулятор расхода (а не уровня и температуры). Думаю в реальном ТП будет ещё хуже. И не понятно как дорабатывать напильником. Интересно Ваше мнение.
@@impost842 вот всё примерно так и происходит как вы описали :). По-этому и нет такого видео на канале и не будет скорее всего :). В целом при колебаниях надо увеличивать Ти и уменьшать Кп (а если это полоса пропорциональности то увеличивать). По "характеру" кривой хорошо видно. Если в самом начале сильный перелёт, а потом более-менее затухает, то это большой Кп. (и наоборот если еле-еле ползёт к уставке, то маленький) Если первая волна более-менее нормальная, а дальше очень плохо затухающие колебания, то это маленький Ти... Тд отключите пока - это в конце чуток "подрихтовать" им можно. Вот как-то так. Попробуйте.
@@dimalimite Спасибо, попробую. Я так понимаю, что в целом надо все таки пользоваться формулами, а потом эмпирически но логически подстраивать? Продолжайте снимать обучающие видео, у Вас хорошо получается. Не каждый может грамотно, последовательно и структурировано подать материал.
Спасибо! На большинстве объектах и процессах это просто нереально (ни кто не будет, да и не дадут, "раскачивать" котёл или ступенчатое воздействие нормальное дать и т.п. на подобные объекты). Плюсе регулируемая величина зависит от множества параметров, а не только от управляющего воздействия. А чтобы формулами пользоваться нужно грубо говоря изолировать объект от всего, а это в большинстве случаев сложновато как-то. Стандартный подход для регулирования температуры: Кр-поменьше (условно 0,5 %/рег. величину), Ти-побольше (150-200 сек), а дальше уже смотрите как реагирует система.
Здравствуйте Дмитрий. У меня маломощный dc моторчик и задача максимально быстро ставить его в заданное положение. Из опытов: при 100% шиме инерционный переезд ~63....64 точки (это оцифрованное значение с аналогового датчика положения, потенциометра) ...... при 50% шиме переезд ~30 точек.......итд. Нужен ли, уместен ли в данном случае пид-регулятор? Что он должен делать и знать? С одной стороны вроде как это как раз задача для "пид", но с другой стороны здесь как бы нужно два управляющих воздействия...... то есть, не только вычислять и устанавливать текущую скорость (воздействие) в каждый момент времени в зависимости от остатка пути, но и в какой-то момент начинать тормозить (противодействие)........ и вот тут я как бы сливаюсь (умственно)........
День добрый. Я решал примерно такую задачу так: изначально подъезжаете к заданной точке на макс скорости, при подъезде на некоторое расстояние (настраивается) снижает скорость до минимума и едите дальше, а потом выключаете не доезжая точки на некоторое расстояние (настраивается) и механизм по инерции сам доезжает с достаточно высокой точностью. Примерно так работают простые сервосистемы.
Всем Доброго времени . Я в этом новичок интересно создать и сконструировать небольшую печь инкубатор. Интересно можно ли как то посчитать по формулам к примеру что бы отклонение было в час или , сутки не более 2 градусов и это регулировать? Пример включили посчитал текущую температуру и посчитал на сколько за час можно нагреть что бы температура не превышала больше заданного в градусах в отношении заданного времени .
@@dimalimite Конечно можно вот только бы понять как подружить формулу с взаимодействием по времени это ведь нужно что бы время сдвигалось и была какая то зависимость которая пересчитывается и не может больше прибавиться что бы сохранить заданные значения температуры во времени .
@@ЕвгенийАлександрович-х1ц вот этого я уже не знаю. Тут весь смысл какой: если вы представляете как это должно работать и это не противоречит физике, то сделать сможете!
не хватает только добавить, что говорить о регулятора можно только при известной структуре объекта. Задача регулирования уровня в баке или расхода воды совершенно не одинаковые задачи. Да, и там и там будет регулятор, но какой структуры? - верно, разной и все зависит от задач. Причем для одного и того же объекта, но при разных требованиях к системе управления структура регулятора будет разной...например, система регулирования уровня воды в баке (при некоторых упрощениях) при использовании П регулятора по каналу управления будет нулевая статическая ошибка, а возмущению - отличная от нуля (естественно это плохо). ПИ регулятор поможет исправить статическую ошибку по возмущению. Поэтому регулятор нужно рассматривать только в связке исполнительный механизм+объект+датчик с учетом имеющихся возмущений с поправкой на вычислительное устройство. Вы верно говорите, что сейчас почти нет аналоговых регуляторов все цифровые, но синтезе цифровых систем управления нужно говорить только тогда, когда шаг квантования по времени вычислительного устройства одного порядка с постоянной времени объекта управления, в противном случае можно рассматривать систему как аналоговую, а при реализации так же перейти к разностному уравнению
День добрый, Андрей! Не уверен, что я до конца понял, что вы имели ввиду :). Что могу сказать про синтез регулятора: Для синтеза нужно знать модель объекта. А в реальной жизни получить модель объекта это на много порядков сложнее задача, чем этот синтез некого идеального для данной системы. Ни разу не встречал синтезированного регулятора (возможно я конечно не так много их и видел). Если система действительно сложная, то обычно делается несколько контуров регулирования (каскадный регулятор) и всё. Буду благодарен если расскажете как вы это делаете и т.д. и т.п. Интересно!
@@dimalimite я планирую записать цикл видео как раз по регуляторам. Как и у всех будет сначала лампочка (потом все тоже самое совершенно на другом стенде буду регулировать температуру, влажность и расход воздуха), которой буду управлять БУСТом, ТТР или контактором. Там рассмотрю все сопутствующие вопросы по теории и практике применения регуляторов. Но это будет не скоро, в сентябре дособираю стенд и по тихому буду готовить материал, а там как пойдет,В УЗ скорее всего будет на дистанционном обучении..посмотрим.
@@dimalimite модель объекта можно прикинуть по переходным характеристикам, если только можно активный эксперимент провести...ну или исходя из физики накидать модель, а потом провести идентификацию параметров модели. Понятно, что не всегда это возможно, если присутствуют явные нелинейности, то можно нагородить адаптивный регулятор или регулятор с переменной структурой, вариантов масса, только это уже совсем узкие вопросы
почему предельное значение Тс = времени цикла? В контроллерах же есть внутренний таймер, да и 2 секунды для контроллера это целая жизнь. Или я что то не понял? Я начинающий асу тпшник, просто интересуюсь.
Там есть параметр Ar - предел операции интегрирования : 1 - 100% может подскажите , что он значит ? ruclips.net/video/LNMhJrYonRU/видео.html . Rex C -100 .
Плохо, что там нет вообще какой-либо информации по какой формуле это всё работает. Может быть там отдельно рассчитывается 3 составляющие и потом складываются П+И+Д. И вот этот Ar ограничивает в этой сумме величину И, т.к. интеграл может вечно нарастать. Вообще если у вас есть желание, то можно понять как он работает если подать ему на вход неизменное ступенчатое воздействие. Если у вас нет имитаторов сигналов, то можно датчик температуры положить в место с неизменной температурой (просто на пол помещения), задать уставку равную показанию этого датчика, а потом изменить уставку допустим на +5 от температуры датчика. Изолировать параметры (по очереди присваивать нули, по аналогии с видео этим моим) и посмотреть как будет меняться аналоговый выход регулятора.
Поясните пожалуйста. Как понял, в данной формуле в интегральной составляющей рассчитывается ускорение. Кто-то использует через скорость (En - En-1). Вопрос: в чем разница?
@@dimalimite Сори, описался - дифференцальную составляющую. (E-E0) - скорость ед/сек. td*(E-2*E0+E1) - ускорение м/сек^2 Поправьте, если не прав - где-то прочитал в комментариях.
@@mihail_redov Вот такую формулу вы имеете ввиду П+И+Д, где: П=Kp*E; И=И+(E(-1)/Ki); Д=Kd*(E-E(-1)). ? Уже десятки раз обсуждал в комментариях. Больше сил нет обсуждать :). Вариаций есть десяток. Можно использовать ЛЮБУЮ какая нравится. Работать будет +/- одинаково.
@@dimalimite Да, она самая. Комментарии все перечитал, точного ответа не нашел. Понимаю что это примерно одно и тоже, но хотелось бы поточнее узнать какие есть различия, ведь не зря ее постоянно упоминают, иначе смысл тогда использовать 3 состояния ошибки в диф составляющей. Буду использовать Вашу формулу, но всё же думал, может для каких-то особенных случаев другая более предпочтительней
@@mihail_redov может где-то и лучше - я честно не знаю. Лично на мой вкус она сложнее (чисто в программной реализации), ну и с 3-ех позиционными механизмами "в лоб" работать не будет.
Дмитрий спасибо за работу! Следуя Вашей рекомендации, посидел с тетрадкой и ручкой, подставляя разные значения. Назрел вопрос ) Давайте возьмем для простоты ПИ составляющие без Д. Предположим, мы нагреваем бак с водой и разница Е у нас постоянно уменьшается. Например, Е(n-1)=10, потом мы подогрели и En=9 Kp=12, например, а Ти=4 и Тс=2 как в вашем примере. deltaYn=12*((9-10)+2/4*10)= 12*(-1)+12*5 Получается, что вклад П составляющей = -12, а вклад И составляющей 60. Это не совсем понятно? По классике вклад П основной, а И маленький, чтоб дотянуть до задного значения. Не понятно почему все три составляющие умножаются на один и тот же коефициент Кр? Меня когда то учили, что коефициенты Кр, Ки, Кд - это три разных коефициента и по своему номиналу они очень сильно отличаються. И при настройке регулятора, вклад каждой составляющей регулируют своим коефициентом. А как это делать если коефициент один на всех? )
День добрый! Была дельта 10 стала 9. Изменение на цикле 1. П-часть и отрабатывает изменение на 1 цикле в 1 градус :). Я понимаю, что "хочется" чтобы П-часть была 12*9=108, но... П-часть работает с текущем рассогласование в рамках одного цикла, И-часть работает уже с текущем рассогласованием от уставки в целом. От сюда и такая разница. Тоже самое если бы Е не изменялась, то работала бы только И-часть. Вы увидите всё тоже самое если откроете учебник ТАУ, но только раздел Цифровые регуляторы, а не аналоговые. Не понимаю, а какой классике вы (и не только вы) говорите :)))). Ки и Кд - безразмерные коэффициенты и могут быть выражены через Кр, которое можно вынести за скобки. Я тут в комментах давал ссылки на вывод этой формулы - если реально интересно, то можете самостоятельно её вывести.
@@dimalimite Благодарю что ответили. Вывод формулы хотелось бы посмотреть. Ссылку в коментах не нашел. Можете продублировать или закрепить под видео? Классика - это в юности учил ТАУ в институте. Теперь пробую реализовать на пратике и понимаю, что я мало что понимаю ))).
Дмитрий, здравствуйте. Из видео следует, что приращение управляющего воздействия генерируется с заданной периодичностью. Допустим зададим периодичность 30 сек. Также допустим, что в первый момент времени рассогласование на входе было незначительным и на выходе получим незначительное приращение dY. В следующее мгновение рассогласование изменилось быстро, практически скачкообразно, но период для следующей итерации расчета еще не прошел, следовательно регулятор находится в состоянии ожидания. Как можно растолковать параметр "чувствительности" регулятора применительно к рассмотренному алгоритму и логике регулятора?
День добрый! Любой цифровой регулятор работает с каким-то периодом. Минимальный период это 1 цикл контроллера (несколько микросекунд), но не меньше чем время опроса датчика обратной связи. Естественно, что период зависит от скорости процесса, времени исполнительного механизма и т.д. Есть просто так "с потолка" установить этот параметр, то будет всё работать как вы и описываете. Температура не может измениться скачком (если это только не ядерный взрыв или типо того), а давление или скорость может. Опять же если мы регулируем температуру в потоке с периодом 30 сек, то это очень много, т.к. процесс идёт быстрее, а вот если это воздух в комнате, то это уже нормально. Я лично использую для регулирования температуры в потоке 3 сек, для давления 2 сек, для перемещения 0,1 сек.
Здравствуйте, расскажите пожалуйста про интегральную накрутку(переполнение), как её избегать, по каким причинам может возникать, это не доработка прибора или не правильно подобранный прибор?
Вечер добрый, Александр! 1. Когда возникает? Пока есть рассогласование на входе регулятора (SV-PV), то будет накапливаться интеграл. То есть если рассмотреть, как в этом видео ступенчатое воздействие 1, которое не уходит, то "И ступеньки" так и будут дальше уходить в бесконечность (или - бесконечность если рассогласование отрицательное). Это вообще нормально. 2. Как избегать? Устанавливается ограничение на выход регулятора. Обычно оно равно реальному диапазону регулирования исполнительного механизма. Например от 0 до 100 %, то есть всё что 100=100. Вот и всё. 3. Про правильно/не правильно? Это нормально. Если не ограничивать выход, то может получиться ерунда. Если говорить про готовые устройства, то обычно это ограничение уже "прошито" с завода. Если про ПЛК (тем более самописные регуляторы), то могут быть различные варианты, но в любом случае ограничение должно в какой-то форме быть. Вот как-то так.
Добрый день! Спасибо за информацию. Пытаюсь повторитьВаш пример с погодным регулятором, только на ПЛК Schneider Electric M221. Скачал библиотеку на ардуино и переписал блок регулятора в своем софте. что то непонятное получилопь. Релейный выход регулятора тарабанит как пулемет. Наверное 500 раз в секунду. При пересчете руками вроде все сходится. импульс получается 0,3-0,5 сек. время цикла 2 сек. Но выход почему то нифига совпадает с расчетным. Не подскажите , что может быть. Можно олее подробно про привязку расчетного времени к релейному выходу. Насколько я понял там на прямой логике собрано.
День добрый, Юрий! Судя по вашему описанию у вас вся эта конструкция работает с временем цикла контроллера, а не с заданным 2 сек. Покажите ваш код - постараюсь прокомментировать (ссылку скиньте на скриншот). Алгоритм должен срабатывать строго 1 раз за заданный цикл. У меня есть на канале видео где я этот код комментирую.
@@dimalimite Блок у меня вызывается раз в 100мс. но вход Pulse_100ms. я подвязал тактовому импульсу 100мс. Я правильно понял, что формула должна пересчитываться каждые 2сек(время цикла)? И еще момент, выходы UP и DOWN обрабатываютяся в том же цикле (2 сек) или же каждый рахз при выхове блока? Скрин, сложно сделать на шнайдере. Перепишу на Siemens S7-1200 и пришлю, там читабельней будет
@@Yuri_Vtornikov да 1 раз в 2 секунды (если цикл 2 секунды) вы получили время на которое надо замкнуть UP/DOWN и вот пока идут эти 2 секунды они обрабатываются. Через 2 секунды получаете новые данные и т.д.
Если такты считаете, то на нулевом такте делаете вычисления. Причём этот ваш такт должен строго по фронту быть (возможно в этом у вас проблема), а то если просто взять тактовый импульс 100 мс, то он 50 мс вкл и 50 мс выкл и вот в эти 50 мс у вас эта конструкция может выполняться с циклом контроллера.
Дмитрий, подскажите пожалуйста, в вашей формуле Кр - кэф. усиления. В ОВЕНЕ в регуляторах в формуле 1/Хр (где Хр- полоса пропорциональности) Объясните что такое Хр. спасибо!
Вечер добрый! Это обратная величина. Как правило соотносится со 100% (или с максимальным управляющим воздействием). На простом примере, при максимальном управляющем воздействие 100%: Если Кр=1%/градус, то при изменение на 1 градус получаем 1%/градус*1градус=1% приращения (то есть регулятор бы выдал 100% при изменение на 100 градусов, вот эти 100 градусов и есть полоса пропорциональности). Тоже самое если Хр=100 градусов, то при изменение на 1 градус получаем 100%/100градусов*1градус=1% приращения. Если Кр=100%/градус, то при изменение на 1 градус получаем 100%/градус*1градус=100% приращения (то есть регулятор выдаёт 100% при изменение на 1 градус, вот этот 1 градус и есть полоса пропорциональности). Тоже самое если Хр=1 градус, то при изменение на 1 градус получаем 100%/1градус*1градус=100% приращения. Если Кр=20%/градус, то Хр=5 градусов; Кр=40%/градус, то Хр=2,5 градусов. То есть физический смысл Хр - это диапазон отклонения от заданного значения, в котором П-составляющая регулятора выдаст от 0 до максимума при отклонение равном Хр. Понятно получилось?
@@dimalimite да, вы открыли мне глаза, спасибо. вбил формулу в эксель, поигрался с коэффициентами, визуально посмотрел что как меняется при изменении того или иного параметра. Еще раз спасибо за бесплатный совет.
Дмитрий здравствуйте. Спасибо за все ваши видео. . 8:48 -"регулятор что-то сделал но эффект нулевой" . Почему? Он воздействовал и на следующих шагах будет не 1(1-1) а например 1(0,9-1)....1(0,8-0,9) Пропорциональная составляющая как я понимаю будет уменьшаться.
День добрый, Леонид! Это я "объясняю", что такое ступенчатое воздействие. То есть на вход регулятора подаётся "неустранимое " рассогласование, с которым он справиться не может. Это стандартный сигнал для оценки работы. То есть он как-то повоздействовал на исполнительный механизм, а эффекта нет. Например мы температуру пытаемся в трубе поддерживать, а датчик при этом вытащили :). А так то вы всё правильно рассуждаете и так оно и было бы в реальной системе (только в случае просто П до уставки бы не дошли всё равно как раз из-за этого).
Спасибо за пояснение. По возможности прошу еще пояснить как учитывается интегральная составляющая при трехпозиционном ИМ? Ведь если ошибка стабилизировалась и стала равна нулю то П и Д составляющие равны нулю, а вот состаляющая И нет. Она накопилась и есть. Она как-то обнуляется или учитывается с небольшим временным интервалом? Не могу понять.
@@zarus1122 вечером по возможности подробно прокомментирую. Пока если время есть, то на бумаге проделайте эти расчёты. Посмотрите где? там накопление И составляющей и есть ли оно вообще. Для трехпозиционного выхода приращение на шаге переводится в сек (или какое-то время) и подаётся на выход импульсом и так каждый шаг (я вроде в видео это подробно объясняю...уже точно не помню). То есть если приращение 0, то и выход 0 для трехпоз.
@@dimalimite спасибо большое . Нашел ссылки, вывел. Вопрос по выражению Yn=Yn-1 + dYn - то есть- мы в каждом следущем шаге пытаемся регулировать приращение управляющего воздействия ?!
@@МейржанБакиров на каждом шаге рассчитывается приращение регулирующего воздействия относительно текущего состояния, которое позволит нам компенсировать рассогласование уставки от текущего значения регулируемого параметра. То есть цель свести Е к нулю.
Спасибо за работу! Возник вопрос. Мне кажется, что Ошибка En должна расмотриваться со знаком +или-, просто у вас рассмотрено часстный случай. Думаю вопрос возник в следстви того, что на графике отсутствует значение уставки.
День добрый! В отрицательную сторону всё тоже самое будет. Если интересно то можете вот это посмотреть ruclips.net/video/wOkgx-CpU2E/видео.html там есть отрицательное рассогласование.
Добрый! Спасибо огромное за разъяснение. Подскажите, почему при расчете П на втором шаге не поменялось Еn, мы же дали приращение регулировке 1%, значит температура по идее должна чуть подняться и чуть уменьшить En? Я так понимаю Еп должно стать =0, тогда система начнет остывать и En опять станет 1, а Yn =1% и система будет колебаться между 50 и 49 градусами. Разъясните, пожалуйста.
@@Ильязямзин-ф1зэто ступенчатое воздействие показывает поведение регулятора в ситуации когда "ему не удаётся убрать" это рассогласование в 1 градус (у меня в примере). Обратная связь есть. Всё ок. Но он что-то сделал, а эффекта нет. Я там вроде про это говорю. Это позволяет нам оценить как ведёт себя регулятор в такой ситуации. И вот наглядно видно, что П-регулятор отрабатывает изначальное отклонение и всё, а если этого не достаточно, то ни чего он уже сделать не может. Отсюда возникает остаточное отклонение. А вот ПИ-регулятор уже "старается" как может убрать это отклонение за счёт увеличение регулирующего воздействия.
Здравствуйте! А я хочу спросить про статическую настройку трех импульсного регулятора котла и внешнего задатчика,получается 4 входа в регулятор минитерм 450, как рассчитать и какие формулы,буду просто очень благодарен,а если хотя бы с какими нибудь цифрами для примера, то вообще было бы! У нас ещё р-25 и р-29 регуляторы стоят и работают и работают
День добрый! Самое простое в вашем случае это включить автонастройку в минитерме 450 (она там есть). Посмотреть какой процесс будет получаться и, при необходимости, допилить напильником (если слишком медленно, то П увеличить И-уменьшить; если сильные выбросы от уставки, то наоборот). р-25 и р-29 - если всё с ними ок, то и не надо их трогать! Пусть живут :).
Автор, правильно ли я понял. если у меня ошибка составляет 5% то мой регулятор должен выдать управляющий сигнал 5, при условиии что я ограничил нижний и верхний предел от 0 до 100 и отключил интегральную и дифференциальную составляющую. использую FB41 в step7, PLC Siemens
Дмитрий, скажите, почему у вас в формуле у интегральной составляющей стоит предыдущая ошибка En-1, хотя на википедии в формуле ПИД-регулятора указана текущая ошибка En? Я думаю, что у вас неправильно, потому что член En-1 у интегральной составляющей учитывается в Yn-1 и поэтому в формуле приращения дельтаY должна быть текущая ошибка En. Я прав?
День добрый, Александр! Вы не правы. По поводу ссылок из википедии и т.п. здесь достаточно много в комментариях это обсуждалось - если есть желание, то можете почитать/посмотреть.
@@dimalimite Спасибо, конечно у меня есть желание. Первая же ссылка, которую вы там приводите studopedia.org/13-78812.html показывает, что правильно En писать, у них это E(i). Я сделал свои расчеты через Z-преобразование и тоже получается En, если интересно, могу привести их. Я не веду речь про различия в формулах касающихся времени цикла Tc или почему у них коэффициенты другие (могут включать в себя Ti и Td). Только про En и En-1
Здравствуйте. А почему И-составляющая и Д-составляющая находятся в скобках после П-коэффициента? Получается П-коэффициент рулит всеми тремя составляющими? Обычная формула выглядит по другому где Yn=сумма составляющих. Наверное вы неправильно поставили скобку, должно быть deltaYn=Kp*(En-En-1) + Tc/Ti*En-1 + Td/Tc*(En-2 * En-1 + En-2)?
@@dimalimite Что-то прочел я все комментарии и не нашел что такая тема подымалась. Вы выкладывали ссылки на лекцию "Цифровые регуляторы" и "Получение разностного уравнения на основе интегро-дифференциального", но и там есть эта же ошибка где пропорциональный коэффициент влияет на все составляющие. В других русско и англо-язычных источниках этого нет. Выходной сигнал = сумма каждой составляющей, и каждый коэффициент влияет только на свою составляющую что логично.
@@dimalimite С Kp вне скобок Углублёнее погуглил и есть два варианта: С Kp вне скобок PID without PhD (25стр) robofob.ru/materials/articles/pages/Karpov_mobline1.pdf (19стр) www.cta.ru/cms/f/364276.pdf (12стр) С Kp в скобках www.cds.caltech.edu/~murray/courses/cds101/fa02/caltech/astrom-ch6.pdf (2стр) engineering.ju.edu.jo/Laboratories/07-PID%20Controller.pdf (13стр) cyxtp.ucoz.ru/pdf/Aidan_O_Dwyer_Handbook_of_PI_and_PID_Controller_Tuning_Rules.pdf (19стр) Википедия говорит: Большинство методов настройки ПИД-регуляторов используют несколько иную формулу для выходного сигнала, в которой на пропорциональный коэффициент усиления умножены также интегрирующая и дифференцирующая составляющие. Видимо оба варианта приемлимы.
Добрый день, хочу спросить, у вас при обсчете интегральной составляющей указано *En-1. А в других интернет источниках приводят формулу где *En. Например: Есть рекуррентная форма: Yn = Yn-1 + Kp(En - En-1) + Ki En + Kd(En - 2En-1 + En-2), где Kp(En - En-1) + Ki En + Kd(En - 2En-1 + En-2) это и есть дельтаY, то есть приращение на шаге квантования. Вот у этой формулы перед Ki стоит En, что означает на текущем шаге квантования, а у вас в формуле En-1, на предыдущем. Объясните пожалуйста, почему так, и если можно еще как связаны Ki, Kd с Ti и Td соответственно?
День добрый! В формуле, которую вы привели отсутствует привязка к интервалу квантования. Но тут надо знать, что они подразумевают под Kи и Кд, возможно оно где-то там сидит. Формул много разных всяких есть. Надо смотреть как они выводятся и что это вообще такое. Какая размерность на выходе получается. Если брать Ен, а не Ен-1, то регулятор не будет работать как классический. Если рассмотреть вариант без Д составляющей например для простоты, то вы увидите что на первом шаге приращение не будет равно Кр*Ен, а через время Ти не произойдёт удвоения. Это что-то уже другое будет. Видел несколько раз в сети и даже один раз в мануале на софт для ПЛК Ен вместо Ен-1, но при этом остальная формула правильная (с квантованием и т.д.) и графики правильные. Возможно описка, возможно злой умысел :). Так же не стоит забывать, что в сети очень много именно копирайтинга, то есть статей написанных людьми далёких от этого вообще. У меня тут самый простой регулятор на разном уравнение (как в большинстве блоков производителей ПЛК и преобразован он в такую же форму). Если есть желание, то можете самостоятельно вывести это уравнение (первые попавшиеся ссылки или можете учебник по тау взять): studopedia.org/13-78812.html www.ets.ifmo.ru/denisov/dsp/lec13.htm studopedia.info/3-23202.html Кр за скобки потом выносите.
Благодарю за подробный и оперативный ответ! Я просто думал что Ki и Kd это выведенные из формулы с википедии например: Ki_discr=Kp*Kip*T; Kd_discr= (Kp*Kdp)/T, где, если я правильно понял, Kip = Ki*Kp и Kdp = Kd*Kp. Поэтому думал что привязка к времени квантования именно тут по T, и почему там E(n) вместо E(n-1) понять не могу, возможно злой умысел добрался и до википедии :) В википедии твердят, что "Большинство методов настройки ПИД-регуляторов используют несколько иную формулу для выходного сигнала, в которой на пропорциональный коэффициент усиления умножены также интегрирующая и дифференцирующая составляющие", то есть, Kp помимо как за скобками в большинстве регуляторов еще и в скобках есть, то есть перед слагаемыми в скобках стоят коэффициенты не 1, Ki, Kd, а 1, KpKi, KpKd. Что порождает вообще кашу в голове :(
@@smersh7543 на википедии каша какая-то написана и очень скудно :). Kip = Ki*Kp и Kdp = Kd*Kp вот это вообще хз что такое :))). Это писал какой-нибудь копирайтер, который возможно понятия вообще не имеет о чём пишет. В каких единицах измерения это вообще всё там :))). Не зацикливайтесь на всякой ерунде. Если хотите реально разобраться: 1. Сами выведите эту формулу. Это не сложно. 2. Разберитесь в реализации готовых блоков ПИД-регуляторов от производителей ПЛК. Там будет в большинстве случаев два варианта по сути одной и той же формулы. Увидите сами. 3. Реализуйте самостоятельно и тогда всё окончательно сложится в голове.
@@dimalimite Пишу со 2 аккаунта, с телефона, благодарю за ответ! А два вида одной и той же формулы, это вы имеете ввиду апроксимация интеграла через прямоугольники и трапеции? Готовлюсь к сдаче экзамена нп сл. КИПиА 6р. вот и захотелось разобраться.
Скажите: можно ли на ОВЕНовском ПР 200 организовать 3-х позиционное регулирование? У меня не получилось. У ОВЕН лоджик нет массивов и структур, т.е. некуда записать вычисленное значения, а по сути в блок "Импульс на заданное время" надо записать вычисленное значение и зафиксировать его пока привод его не отработает. А по сути происходит перезапись в каждом цикле и в результате ничего не работает. Может я чего то не понимаю, или не правильно делаю?
День добрый! Я сильно не знаком с ПР200 и софтом для его программирования, но похоже это что-то типо Siemens Logo, а на нём это можно сделать (я лет 10 назад делал). Не пробовали на ОВЕНовском форуме посмотреть кстати? Там много всякой информации. Сложно судить о правильности не видя проект. Начните с простого, а когда получится, то уже можете добавить накопление мелких импульсов и т.д.: Вам надо самому "задавать" этот цикл. Я не знаю, какие там конкретно блоки есть, но например берете симметричный генератор на 1 сек вкл/1 сек вык и получаете 2 сек цикл. Далее ВСЕ операции делаете по фронту импульса этого генератора. То есть прилетает фронт, по этому фронту считается приращение, ограничивается временем цикла и , в зависимости от знака, подаётся в блок "Импульс на заданное время" для открытия или закрытия, записывается рассогласование измеряемой величины на этом шаге в переменную (если Д-часть нужна, то записывайте 2 значения), чтобы в следующем цикле использовать это значение. Вот как-то так).
Ок. Отпишитесь тогда по результату. Да весь софт для контроллеров, который на языках МЭК базируется он +/- одинаковый. Если вы видели мою реализацию для регулятора такого на FLProg, то попробуйте её на FBD переложить. Там просто блоки же можно на Си делать и я его так и сделал, блок можно открыть на редактирование и посмотреть что внутри. А вообще я лично 90% проектов делаю на Mitsubishi контроллерах и использую язык ST. Вот и говорю, что всё одно и тоже:).
@@dimalimite Мне тоже приходилось на разных ПР делать различную автоматику (Мюллер, Шнайдер, и.т.д). Да, в принципе все одно и тоже. Но ПИДы как то не приходилось использовать, обычно для этих целей готовые приборы ставили, чаще всего ОВЕНы. В ПР ОВЕН проблема на мой взгляд даже не в ПИД 3-х позиционном, а вообще во временном хранении данных, т.е. нет инструмента >>по команде запись данных, хранение, по команде чтение этих данных. Не знаю как в других контролерах ПР т.к. не сталкивался с такими задачами ранее. В С++ и соответственно в ФЛПрог эти инструменты "Массив", "Структура", соответственно таких проблем нет.
А зачем вам эти массивы и структуры? Скачал софт этот ради интереса. Там же есть создать блок входной переменной, создать блок выходной переменной. На примере рассогласования: вам нужно рассогласование текущее (Ет), рассогласование на прошлом шаге (Ет-1) и, если Д хотите, то на позапрошлом шаге (Ет-2). Далее (только функциональными блоками это накидать и выполнять по фронту вашего цикла): Ет=SP-PV (блок разности) Ет-2=Ет-1 (входная переменная-выходная переменная) Ет-1=Ет (входная переменная-выходная переменная) Вот и всё.
Дмитр у, очень вас Прошу объясните. В ПИД расчетах мне не понятно уже голову сломал, откуда вы берете значение Ен-1. Ен - понятно заданное значение минус действительное но Ее-1 это ошибка регулирования предыдущего цикла скажем у меня заданная 50 текущая 23 значит ошибка равна 27 градусов. В нулевом цикле Ее-1 будет равна 0 а в первом цикле сколько ? Или в Ен-2 это двойное значение 2х27 или это значение на два цикла ниже. Скажем у нас 3 цикл значит Ен-2 будет равна 1 циклу? ПОМОГИТЕ. Спасибо
Вечер добрый! Вы главное себя не перемудрите :). Всё верно Ен=Уставка-Текущее. Ваш случай Уставка=50, Текущее=23, Ен=27. Если температура не растёт (идеальное ступенчатое воздействие как у меня на доске), то: 0 цикл: Ен=27, Ен-1=0, Ен-2=0; 1 цикл: Ен=27, Ен-1=27, Ен-2=0; 2 цикл: Ен=27, Ен-1=27, Ен-2=27; и т.д. Если допустим растёт на 1 градус на цикле, то: 0 цикл: Ен=27, Ен-1=0, Ен-2=0; 1 цикл: Ен=26, Ен-1=27, Ен-2=0; 2 цикл: Ен=25, Ен-1=26, Ен-2=27; 3 цикл: Ен=24, Ен-1=25, Ен-2=26; 4 цикл: Ен=23, Ен-1=24, Ен-2=25; и т.д.
@@dimalimite большое спасибо за ответ. У меня случай вот какой, я буквально в крации. Хр (полоса пропорциональности) =36 - противодействующий сигнал. Ти (интегральная составляющая) = 20 Тд (дифференциальная составляющая) = 2 Стартовая температура = 23 градуса по Ц Уставка 50 градуса по Ц Необходимо найти выходную мощность регулятора после включения. Еще раз ОГРОМНОЕ СПАСИБО ВАМ ЩА ОТВЕТ. !!!
Здравствуйте, Дмитрий. Как Вы думаете, для ПИД-регулятора для 3х ходового клапана, который регулирует температуру теплоносителя на подаче требуется ли учитывать такие физические параметры задвижки, как время задержки старта механизма, время люфта при смене направления регулирования, время движения задвижки по инерции?
@@dimalimite Спасибо за ответ! Допустим задвижка массой 100 кг. При изменении направления без компенсации времени ее остановки, в обмотке привода будет перегруз по току, что сократит жизнь привода. Как считаете?
Что думаю: 1. Если привод аналоговый (0-10 в, 4-20 мА управление), то вы вообще это ни как проконтролировать не сможете. 2. Если трехпозиционный и после импульса на открытие сразу идёт импульс на закрытие без паузы, то что-то явно не так с регулированием. 3. Если вы переживаете, то, в случае трехпозиционного привода, легко можно добавить принудительную задержку между импульсами именно разнонаправленными. 4. 100 кг для трехходового это порядка ду150 или типо того. Сам регулирующий орган весит гораздо меньше + он наверняка разгружен по давлению + большая редукция на приводе и может быть необратимый редуктор. Если обращали внимание, то обычно на большой арматуре стоит малюсенький (относительно её габаритов) привод. Так что он просто не чувствует. 5. Возможно я не сталкивался с такого рода проблемами. Самый большой диаметр арматуры с приводом какой я ставил был ду630 при весе самой арматуры около 2,5 тонн. Я не заморачивался на такие вещи, но у меня и нет ситуаций резкой смены направления вращения на трехпозиционной арматуре. А вот на аналоговый приводах такое однозначно бывает, т.к. они проскакивают положение заданное и встроенный в привод позиционер делает реверс в обратную сторону. С точки зрения именно регулирования эти люфты, выбеги и т.п. не важны. Для этого и есть регулятор, чтобы это всё скомпенсировать. Но вопрос интересный и стоит проконсультироваться дополнительно с производителями арматуры
Ещё такой момент забыл написать - если посмотреть на готовые общепром. регуляторы для задвижек, клапанов и т.п., то я так слёту не смогу сказать где такой функционал реализован.
@@dimalimite Спасибо. Теперь есть о чем подумать, чтобы не городить лишнего. Собственно поэтому и написал Вам. Постараюсь сделать как можно оптимальнее и проще. Благодарю.
День добрый. В инструкции ТРМ32 подробно достатточно написано про настройки и приведена формула по которой он работает. На почту можете вопрос написать или сюда. Я по возможности стараюсь отвечать.
Здравствуйте, Дима! Спасибо за видео и ответы на вопросы. Я внимательно прочитал все комментарии, и вас несколько раз спрашивали о том, почему пропорциональный коэффициент (у вас - коэффициент усиления) вынесен за скобки. К сожалению, так и осталось непонятным, какой в этом смысл. Ведь при настройке регулятора мы, выходит, не сможем независимо регулировать П-составляющую, изменение Кр затронет и две другие. Если не затруднит, поясните этот момент ещё раз.
День добрый. Я десяток раз уже в комментариях отвечал на этот вопрос :))). И давал ссылки на формулы для самостоятельного вывода. Всё зависит от структуры регулятора, его формулы и размерности коэффициентов. Простой пример где сидит Кр, когда он не вынесен за скобку: вместо ВРЕМЕНИ инт. Ти и диф. Тд используются КОЭФФИЦИЕНТЫ инт. Ки и диф. Кд, которые равны Ки=Ти/Кр и Кд=Тд/Кр (есть различные вариации, но суть такая).
@@dimalimite Спасибо ещё раз. Я понимаю - это раздражает, когда одно и то же спрашивают в десятый раз. Да, и отвечали, и ссылки давали. Но! Поверьте, я просмотрел много материалов, и сам когда-то учил эту тему в институте. Но не всё понятно в вашем ролике до сих пор. Вот вы говорите: "Всё зависит от структуры регулятора, его формулы..." Но, во-первых, вы ведь говорите не о какой-то конкретной структуре, обычном ПИДе, разве нет? Во-вторых, в обычной, "классической" структуре ПИДа мы видим три параллельных звена, независимых друг от друга. У каждого звена свой коэффициент пропорциональности. И это логично. Коэффициенты (все!) - безразмерные величины, и неважно, где в формуле они стоят: перед величиной ошибки или ВРЕМЕНЕМ. Суть в том, что НЕТ связи между коэффициентами, и это важно. А у вас вот снова: Ки=Ти/Кр... Разве в "классическом" ПИДе есть ОБЩИЙ коэффициент усиления? Зачем он, если ещё у каждого звена свой коэффициент пропорциональности? Вот это, простите, никак до меня не доходит.
@@Evgeny_Miroshnichenko нет просто больше возможности уже в 100 раз объяснять. Посмотрите свои лекции (если они остались у вас) по теме цифровые регуляторы (могут называться дискретные). Это же касается и Ки=Ти/Кр...и размерности Кр. Есть 2 основные (и десятки вариаций) модификации формулы, которые можно встретить в ПЛК. Одна из основных написана у меня на доске. Есть ещё второй вариант, где 3 составляющих считается отдельно с заданным временем цикла, примерно такого вида выглядит (есть разные вариации): П=Kp*E; И=И+(E(-1)/Ki); Д=Kd*(E-E(-1)). Надо ограничивать как в целом сумму так и каждое значение отдельно, а то возникает переполнение. Без понимания размерностей этой конструкции получается каша... Если хотите разобраться, тогда ответьте на вопросы: - в каких единицах у вас получается выход регулятора? - каким образом можно складывать/вычитать/делить "безразмерные" единицы с "размерными" (температурой С, давлением бар, процентами %)?
@@dimalimite Ясно, благодарю вас за обратную связь. Вот "второй вариант" мне более понятен, странно, что он - второй :)) Про ограничение - само собой, только я думаю, что достаточно ограничивать общую сумму для предотвращения аварийной ситуации. А уж со слагаемыми надо разбираться на этапе настройки. Речь не о том. На вопросы мне ответить легко: - в любых нужных единицах. Зависит от того, в каких единицах задаётся ошибка. - нет, не складывать/вычитать безразмерные с размерными, а только делить/умножать, то есть, масштабировать. Для этого и предназначен безразмерный коэффициент, стоящий перед каждым слагаемым. Совсем как у вас общий Кр - он же безразмерный? Я больше не стану здесь разводить дискуссию, и так отнял у вас время. Но могу я обратиться к вам по мэйлу за советом в решении конкретной задачи? Где-то видел здесь адрес. А пока надеюсь разобраться сам. Я пробовал алгоритм, предложенный Алексом Гайвером для реализации на Ардуино (ruclips.net/video/rIbWnB26dp0/видео.html). Но работает из рук вон плохо. Что вы о нём думаете?
@@Evgeny_Miroshnichenko там большое видео. Будет если время, то посмотрю. На 34 секунде там формула, которой я пользуюсь. Думаю там всё нормально наверное дальше, а проблема в настройке. "Про ограничение - само собой, только я думаю, что достаточно ограничивать общую сумму для предотвращения аварийной ситуации. " - так работать будет очень-очень не долго и уйдёт в максимальный/минимальный выход, т.к. переполнится И-часть. Эта реализация сложнее, чем кажется на первый взгляд :(((. По поводу вопросов: Е имеет размерность управляемого параметра (градусы, бары и т.п.). Все коэф. по вашему мнению безразмерные. Значит выход регулятора будет в градусах, барах и т.п. ? :) Всё верно? По поводу размерности Кр: Вы говорили что несколько раз посмотрели моё видео. Там безразмерный Кр? Вы на бумаге записали своей рукой как в видео прошу сделать?:) Я там несколько раз на это обращаю внимание, т.к. это самое важное для понимания как работает регулятор. Если хотите разобраться с регулятором, то разберитесь в размерностях из первой (моё видео) и второй формулы. Разберитесь что делает размерность Кр и где Кр "сидит" в Ки и Кд. Просто мне каждый второй пишет, что он всё понимает, знает и т.п., но при этом мне достаточно прочитать несколько фраз (см. начало сообщения) чтобы понять понимает о чём речь человек или нет :). Пишите на dimalimite@gmail.com
сделать устройство чтобы понять как оно работает это круто братан)) я сам конструирую электронику давно , ни разу до такого не додумался...... правда я без вышки. прикинь сначала нужно понимать что ты хочешь получить , а потом уже работать на результат. но у вас видимо уже наоборот... нужно изготовить автомобиль чтобы изучить как он работает..... акуеть
Вечер добрый, Владимир! Если есть желание, то можете самостоятельно вывести это уравнение (первые попавшиеся ссылки или можете учебник по тау взять): studopedia.org/13-78812.html www.ets.ifmo.ru/denisov/dsp/lec13.htm studopedia.info/3-23202.html Кр за скобки потом выносите.
@@dimalimite спасибо. Я сделал по вашему видео ПИД регулятор для паяльника. Применил PWM 18bit а это значит, что нулевой мощности на нагреватель соотв 0, а максимальной 2^18. Время цикла у меня 7ms. Все работает нормально, но перестройка с уставки на уставку происходит крайне медленно да еще и со значительным перерегулированием. Это потому наверное, что я вообще не сделал маштабирование под эту свою задачу. Подскажите, как в моем случае масштабировать для PWM вычисленное приращение dYn по формуле. Именно эту часть из видео я не совсем понял. Если формула дает проценты от 0 до 100, то зачем в итоге умножать на Tc? Получается PWM измеряется в ms?
@@vladimirivanov4761выложите сюда свой код и посмотрим. В случае МЕДЛЕННОГО ШИМ выход в секундах, то есть при цикле 7 мс и 50% мощности это 3.5 мс импульс и 3.5 мс пауза. При этом Ти Тд тоже должны быть в мс. А если мы говорим про АППАРАТНЫЙ ШИМ, то он уже должен дыдаваться в соотв единицах (0-255 для ардкино например). У вас какой? И в чём Ти Тд задаються? Перерегулирование может быть из-за неверных настроек и размерностей.
Вечер добрый! Ошибка регулирования (Е) это Заданное значение (SV) - Текущее значение (PV). - Текущее значение (PV) - вот это отрицательная обратная связь. Не очень понял вашу иронию? Объясните.
Да. По положению исполнительного механизма. Я вроде достаточно чётко это говорю. Просто частенько попадаются люди, которые начинают рассказывать, что им нужен обратный сигнал по положению и без этого трехпозиционный регулятор не работает и т.д. и т.п. Вот я специально для них объясняю, что регулятору без разницы где стоит ваш механизм, он рассчитывает куда ему переместиться от текущего положения...
Не знаю что тут сложного? Я в одну строчку написал формулу и корректировку на статическую ошибку. Не зная теории: ошибка на коэффициент и всё. И регулятор держит с точностью до 0,1 градуса.
День добрый! Сложного ни чего. Отлично, что у вас всё работает! Вкл/выкл тоже работает отлично (в рамках паяльника например). Регулятор может быть вообще в любой форме. Именно ПИД не панацея. Выложите сюда код вашего регулятора - возможно кому-то (и мне) будет интересно.
@@dimalimite Это простой пропорциональный регулятор с ручным подбором и ограничением мощности ШИМ. int ust = 38.0; //считаем ШИМ float dt = ust-t0; //t0 - температура int PWM = 22+(dt*40); // float integral += (float)dt * 0.5; PWM += integral; //инт. коэфф. // PWM += (ht-t0)*10; //дифф. коэфф. if (PWM255) PWM=255; analogWrite(nagrev, PWM); float ht = t0; Коэффициенты здесь привязаны к конкретному нагревателю и температуре и не будут работать в другом случае. Объяснять долго... Щас занялся обдумыванием нагрева инкубатора, там посложнее из за инерционности. Нужно два термодатчика и расчет потребной мин/мах мощности и времени инерционности. Как модель может служить двух литровая кастрюля с двумя термодатчиками. Один датчик ограничивает максимум мощности другой минимум. Наверно возьму обычный ПИД алгоритм и подберу его параметры вручную зная ограничения и характеристики объекта.
@@sergeyrink3003 вы уже 2-ой или 3-ий раз изменяете сообщение и из одной строчки код уже потихонечку превращается в несколько :))). ПЕРВЫЙ ВАРИАНТ у вас был такой:"" Это простой пропорциональный регулятор с ручным подбором и ограничением мощности ШИМ. ust = 38.0; //считаем ШИМ dt = ust-t0/10; //t0 - температура Shm = 22+(dt*40); if (Shm255) Shm=255; analogWrite(11, Shm);""... Да это был обычный П регулятор с коэф. усиления 40. И безусловно у вас было приличное остаточное отклонение и вы его убирали добавкой 22. То есть когда у вас нулевое отклонение от задания, то выход ШИМ и был эти 22. Добавка эта будет постоянно разной в зависимости от внешних факторов и уставки, которую вы хотите поддерживать. Если эту банку в холодильник поставить, то всё "развалится". Это всё понятно. ПОСЛЕДНИЙ вариант: ""int ust = 38.0; //считаем ШИМ float dt = ust-t0; //t0 - температура int PWM = 22+(dt*40); // float integral += (float)dt * 0.5; PWM += integral; //инт. коэфф. // PWM += (ht-t0)*10; //дифф. коэфф. if (PWM255) PWM=255; analogWrite(nagrev, PWM); float ht = t0; ""... Это что-то среднее между обычным регулятором и чем-то непонятным. Как-то работать будет, но шаг вправо или влево и опять всё "развалится". Если вы уже пришли на это моё видео, то наверное хотите сделать обычный работающий ПИД-регулятор, который не зависит от внешних условий и изменения уставки. Так сделайте его и всё! :))) Вы 100% разберётесь. А если нет, то можете мой готовый взять (или какой-то иной).
@@dimalimite Вы наверно не понимаете сути проблемы. ПИД регулятор это только маленький инструмент, который еще нужно настроить и это очень сильно зависит от управляемого объекта. Если вы это понимаете то давайте объясните ИИ алгоритм автоматической настройки параметров регулятора независимо от объекта управления. :))))) И я там ничего не изменил, I и D коэффициенты закомментированы и без них всё работает.
drive.google.com/file/d/1rQIXjpxf7mdbuFWWGRUIfEx4trUxMYNC/view?usp=sharing Метод автоматической настройки Кузищина В.Ф. Но он подойдёт только для регуляторов стандартного вида.
Прошу прощения, конечно, но данная интерпретация ПИД регулятора - просто ужасна. Она только еще больше запутывает... Это интерпретация видимо, по типу, старых регуляторов РП или чего-то похожего. Которые работают так, не потому что так надо, а потому что раньше по другому не могли сделать. Сейчас контроллеры могут дать гораздо больше и гораздо понятнее и ближе к теории и по настройке проще. Например зачем рассчитывать En - E(n-1) что будет по сути операцией дифференцирования, а затем выход Y(n-1) + dYn то есть операция интегрирования. Эти две операции противоположны... Не знаю кто и зачем так научил но это все равно что чесать нос ногой... То есть это типа, мы не можем посчитать дифференциал и интеграл напрямую поэтому будем считать через .... Сейчас все составляющие ПИД можно посчитать в контроллере без всяких этих заморочек, с периодом хоть в 1 мс, плюс фильтрация и т.п. Но за старания и попытку популяризации, и за весь канал - плюс, конечно.
@@dimalimite Главное программа, а не тип контроллера. Суть в том что большинство современных контроллеров, по вычислительной мощности позволяют написать программу регулятора с периодом в 1мс и даже менее. И можно например использовать Z преобразование для расчета функции (формулы расчета) регулятора. Но дело даже не в этом, вот у вас в алгоритме, например, расчет идет через dY дельту. То есть рассчитывается dX = E(n) - E(n-1) затем на его основе (за исключением интегральной части) рассчитывается dY. А потом происходит обратный процесс Y(n) = Y(n-1) + dY Зачем? Получается вы пропорциональную и дифференциальную части сначала дифференцируете (дифференциальную два раза) а потом наоборот интегрируете. Зачем ? Вы этим всех только путаете. Не проще взять все как есть, пропорциональную как есть пропорциональную, дифференциальную как дифференциальную, и проинтегрировать только интегральную. Тогда вы и отдельные составляющие сможете поглядеть, отдельно на графике. А если вам нужен будет не ПИД регулятор, а например ПДД2 ? Как будете эту формулу переделывать ? Кроме того, у вас время цикла Тс = 2 секунды, для регулятора температуры этого еще хватит, а для регулятора например разрежения ? Это уже будет много. Время реакции регулятора в 2 секунды это много. Зачем, если можно сделать время цикла минимальным, и поставить фильтр. Обычный фильтр нижних частот даже с временем фильтра 2с все равно будет быстрее реагировать. Время реакции будет меньше чем в вашем случае. В общем то все.
@@dimalimite Да, со стороны писать проще чем сделать свой канал :) В этом я с вами согласен :) Примите мои слова, пожалуйста, не как поучение, а скорее как повод присмотреться, подумать, как пожелание к совершенствованию...Тем более что регуляторы лишь часть вашей деятельности и полезной информации на нем. Ваш канал, на мой взгляд весьма полезен и познавателен.
@@dimalimite да пробывал малехо не въежаю в тему,видео супер лучшего объяснения мне не удалось найти,но пока для меня это трудно,я хочу сам термопрофили для пайки сделать вот и пришлось понять что такое ПИД.Буду еще раз смотреть видео
@@dimalimite смотрите мне нужно настроить rex c100 китайский выставляю температуру допустим 100град он пролетает эту температуру,пробывал по гистерезису выставить тоже каша получается,нашел инфу что нужно все выставить в 0 и по тихоньку поднимать p потом i далее d ну это метод тыка, неужели нельзя настроить этот контролер.Буду благодарен Вам если хоть что то подскажите как быть в моей ситуаций
@@dimalimite Я почти доделал свой терморегулятор и как оказалось самое главное правильное время между отсчетами поставить 0,5-1сек. Время похоже связано с инерционностью самого объекта регулирования. Где то видел 0,1 от периода колебаний. Есть, что то на этот счет?
@@sergeyrink3003 день добрый. Я бы не сказал что это главное. Оно (время) просто должно быть "адекватное". Мин возможное время цикла должно быть больше или равно цикла считывания показания с датчика обратной связи. Про 0.1 - это бывают пишут в инструкциях относительно времени хода исполнительного механизма (типо время привода 60 сек, значит цикл брать 6 секунд...в реальной жизни это многовато). Если вы регулируете температуру, то 3 секунды оптимальное значение, т.к. быстрее она всё равно не изменяется (если мы говорим о теплотехнике, а не каком-нибудь жале паяльника). Для давления 2 сек и меньше, т.к. изменения давления быстрый процесс (если мы говорим о несжимаемых жидкостях).
Это наверное лучшее объяснение работы ПИД регулятора, что я посмотрел. Теперь мне многое стало понятно. Еще бы видео о настройке на конкретном примере.
Спасибо!
По настройке тут как вам сказать.....все методы настройки вилами на воде писаны:). На бумаге и в симуляторах всё красиво выглядит, но в реальной жизни что-то результаты очень круто не бьются с теорией (или может быть конкретно у меня какие-то проблемы).
Вообще чем меньше запаздывание и инерция объекта, тем проще настроить регулятор. Например, вода-несжимаемая жидкость и изменения давления практически мгновенно распространяются в системе, а вот температура уже другое дело тут и инерция и транспортное запаздывание.
Какая у вас стоит задача? Вы настраивали когда-нибудь регулятор (если да, то какой)?
@@dimalimite Дима Лимите настраивал трм10 и в flprog. В первом случае настроил совершенно случайно :). Совершенно не понимая как оно работает. А во втором нагрев воды в сусловарочном котле, никак не мог понять почему при вводе пропорциональной составляющей у меня он вел себя вроде предсказуемо. А при изменении интегральной, начиналась всякая ерунда. Только из вашего видео я понял, что интегральная должна быть как можно больше в начале настройки, а у меня был выставлен 0.
В самую суть!!! Вы всё абсолютно верно поняли. Первоначальная настройка Кр-меньше (или больше если это полоса пропорциональности), Ти-больше.
На Ти=0 разные контроллеры по разному реагируют. Формально это деление на 0, по этому в программе, как правило, подставляется какое-то большое число типа 9999 и И часть становится пренебрежимо маленькой (остается только П часть, а это при больших значениях Кр приведет к незатухающим колебаниям где-то ниже уставки).
Буржуйские регуляторы иногда используют метод Цигера Николса (могу неправильно написать) в качестве автонастройки. Вот там как раз убирается И часть (Ти=9999), а П приравнивается максимуму (Кр=100 например). Система начинает колебаться, замеряют амплитуду и период колебаний. Далее по формулам пересчитывают амплитуду в Кр, а период в Ти...А далее допилить напильником))) Или как повезёт.
Дима Лимите спасибо за видео. Стали понятны числа в диапазонах регулирования времени интегрирования и дифференцирования у ПИД регулятора частотника данфос
Спасибо Вам огромное, посмотрел видео и смог таки настроить систему охлаждения, теперь очень точно держит температуру!)
Спасибо, стало понятно на 20% от текущего понимания. На данный момент надо пересмотреть еще 4 раза за 2 минуты.
Просмотрел кучу видео на Ютубе, понял процентов 5, до того как наткнулся на ваше видео. Теперь понял примерно 20% Думаю ещё пару раз если просмотреть то уже лучше буду понимать. Спасибо вам. Готовлюсь к аттестации
Понять это значит уметь объяснить другому, все просто! )
Дмитрию большая благодарнасть! Прийдётся раз 5 просмотреть(т.к. новичёк, а проф.деятельность требует данного навыка)🤝🤝🤝
Спасибо что делитесь опытом со всеми👍
Спасибо, за толковое изложение. Сколько не бралься понять, никак не получалось, куча формул убивало все желания понять.
Спасибо!
Алгоритм работы вашего блока PWM_PID_V1_(CODE).ubi хорошо объяснён. Поэтому вызывает больше доверия, и более фукциональней чем блок Сергея Глушенко flprog.ru/uchebnyj-centr/keyforarduino/blok-pid-reguljatora-v-programme-flprog/ (чёрный ящик). Хотя я смакетировал нагреватель с ПИД-регулятором с блоком Сергея Глушенко - блок работает. Теперь попробую перепрошить Ардуино на ваш блок
Спасибо огромное ещё раз! Собрал ваш регулятор в Экселе и на Ардуино, буду применять в проектах.
Ничего не понятно,но очень интересно 👍
День добрый, Дмитрий!
Спасибо!
А что непонятно?:) Могу попробовать разъяснить
@@dimalimite это выражение такое )) знал что есть такое управление в контроллерах,но как реализовано -нет )))Спасибо,Дмитрий ,интересный канал и интересные темы с понятными обьснениями.
Еще раз спасибо за помощь. Вы гений. Спасибо. Век живи, век учись.
Это я удачно зашел через "Тепло и вода"!
День добрый! Полезно было для вас?
Чётко!) Не молодец, правда чётко!) (пишу это как инженер АСУТП 1-й категории)
Спасибо!
Долой ПИДофобию! )) Спасибо за обстоятельный расклад материала.
100%). Всё не так страшно!
Спасибо за видео. Очень близко к пониманию. Если бы пример был наглядней, например задана скорость двигателя 3000 об/м, имеем 2000об/м, регулируем ШИМом от 10 до 100%, 10% это 500 об/м, 100% это 6000об/м без нагрузки.
А изменять температуру на 1 градус за 2 сек и почему дельта интегрирования и диференцирования 4 сек, почему в 2 раза больше.
День добрый!
Я показываю как регулятор реагирует на отклонение, которое не может устранить. Это помогает понять как он работает и в чём отличие П, ПИ и ПИД. Температура не изменяется на 1 градус за 2 секунды она остаётся прежней, а меняется управляющее воздействие, которое формирует регулятор.
Принцип одинаковый хоть в обороты двигателя, хоть температура, хоть кирпичи в кладке :).
Дмитрий СПАСИБО большое за выделенное и объяснение!
Супер. Большое спасибо! Очень доходчиво.
Наверное самое понятное объяснение!
У нас возник спор в отделе является ли ваше 3х позиционное управление частным случаем шим управления, ведь в случае 3 позиционного тоже наблюдается широтно импульсная картинка, где мы при одинаковом длиннее цикла подаем условно напряжение на привод клапана с определённой скважностью , равному приращению , просто в случае с приводом мы можем иметь отрицательное приращение , в в классическом Шим минимум нулевой сигнал
Вечер добрый! На мой вкус-это не ШИМ. Да похоже по принципу. Но в ШИМ мы же именно пропорционально заполняем "период", а тут мы именно получаем время импульса и пытаемся повернуть клапан на требуемый регулятором процент.
18:30 говорите, что в формуле нет обратной связи. В то время как "e" содержит текущее состояние системы (Температуру, давление etc...), что и будет ОС и применяется в этой формуле повсеместно.
Обратной связи по положению регулирующего органа
Спасибо огромное за урок!!!
Посмотрел приложенный код программы, но пока не смог понять одного условия в ней.
В строке:
UP = ((((SUM_D_T >= TIMER_PID & SUM_D_T >= 0.5) || D_T >= CYCLE - 0.5 || TIMER_PID_UP >= VALVE) & AUTO_HAND) || (HAND_UP & ! AUTO_HAND)) & ON_OFF & ! DOWN; // Открытие клапана
мне не понятно условие: TIMER_PID_UP >= VALVE, это не опечатка? По смыслу получается что если накопленное время открытия клапана превысило время полного открытия клапана, то даем команду на открытие?
@@rvpertse5066 Чтобы больше не дёргался. Всё нормально
@@dimalimite Я разобрался :) спасибо. Отлично придумано.
Спасибо, очень доступно и понятно рассказано. Только не затронута тема самой настройки ПИД регулятора, формулы настройки.
Вечер добрый!
Спасибо.
В целом моё отношение к этим формулам очень-очень неоднозначное. Посмотрите в комментариях с Anatoliy Bibikov обсуждали.
Если у вас есть какой-то положительный опыт, то расскажите. Будет интересно.
@@dimalimite Пробовал настроить симулятор расхода пара по методу максимального коффициента усиления (постепенное увеличение Кп до автоколебаний одной амлитуды и замеряем период цикла, в итоге имеем Кмакс и Тс, подставляем это в формулы и получаем Кп , Ти и если надо Тд) результатом остался не доволен. Кривая далеко не идеальная (колебательный, затухающий процесс с выходом на задание, но после изменения задания уже не выходит на него точно) и это учитывая, что это регулятор расхода (а не уровня и температуры). Думаю в реальном ТП будет ещё хуже. И не понятно как дорабатывать напильником. Интересно Ваше мнение.
@@impost842 вот всё примерно так и происходит как вы описали :). По-этому и нет такого видео на канале и не будет скорее всего :).
В целом при колебаниях надо увеличивать Ти и уменьшать Кп (а если это полоса пропорциональности то увеличивать). По "характеру" кривой хорошо видно.
Если в самом начале сильный перелёт, а потом более-менее затухает, то это большой Кп. (и наоборот если еле-еле ползёт к уставке, то маленький) Если первая волна более-менее нормальная, а дальше очень плохо затухающие колебания, то это маленький Ти...
Тд отключите пока - это в конце чуток "подрихтовать" им можно.
Вот как-то так.
Попробуйте.
@@dimalimite Спасибо, попробую. Я так понимаю, что в целом надо все таки пользоваться формулами, а потом эмпирически но логически подстраивать? Продолжайте снимать обучающие видео, у Вас хорошо получается. Не каждый может грамотно, последовательно и структурировано подать материал.
Спасибо!
На большинстве объектах и процессах это просто нереально (ни кто не будет, да и не дадут, "раскачивать" котёл или ступенчатое воздействие нормальное дать и т.п. на подобные объекты). Плюсе регулируемая величина зависит от множества параметров, а не только от управляющего воздействия. А чтобы формулами пользоваться нужно грубо говоря изолировать объект от всего, а это в большинстве случаев сложновато как-то.
Стандартный подход для регулирования температуры: Кр-поменьше (условно 0,5 %/рег. величину), Ти-побольше (150-200 сек), а дальше уже смотрите как реагирует система.
Видео классное и полезное. Но я не понял что такое Ti и Td и откуда их брать(
Здравствуйте Дмитрий. У меня маломощный dc моторчик и задача максимально быстро ставить его в заданное положение. Из опытов: при 100% шиме инерционный переезд ~63....64 точки (это оцифрованное значение с аналогового датчика положения, потенциометра) ...... при 50% шиме переезд ~30 точек.......итд. Нужен ли, уместен ли в данном случае пид-регулятор? Что он должен делать и знать? С одной стороны вроде как это как раз задача для "пид", но с другой стороны здесь как бы нужно два управляющих воздействия...... то есть, не только вычислять и устанавливать текущую скорость (воздействие) в каждый момент времени в зависимости от остатка пути, но и в какой-то момент начинать тормозить (противодействие)........ и вот тут я как бы сливаюсь (умственно)........
День добрый.
Я решал примерно такую задачу так: изначально подъезжаете к заданной точке на макс скорости, при подъезде на некоторое расстояние (настраивается) снижает скорость до минимума и едите дальше, а потом выключаете не доезжая точки на некоторое расстояние (настраивается) и механизм по инерции сам доезжает с достаточно высокой точностью. Примерно так работают простые сервосистемы.
Всем Доброго времени . Я в этом новичок интересно создать и сконструировать небольшую печь инкубатор. Интересно можно ли как то посчитать по формулам к примеру что бы отклонение было в час или , сутки не более 2 градусов и это регулировать? Пример включили посчитал текущую температуру и посчитал на сколько за час можно нагреть что бы температура не превышала больше заданного в градусах в отношении заданного времени .
@@ЕвгенийАлександрович-х1ц наверное можно
@@dimalimite Конечно можно вот только бы понять как подружить формулу с взаимодействием по времени это ведь нужно что бы время сдвигалось и была какая то зависимость которая пересчитывается и не может больше прибавиться что бы сохранить заданные значения температуры во времени .
@@ЕвгенийАлександрович-х1ц вот этого я уже не знаю. Тут весь смысл какой: если вы представляете как это должно работать и это не противоречит физике, то сделать сможете!
не хватает только добавить, что говорить о регулятора можно только при известной структуре объекта. Задача регулирования уровня в баке или расхода воды совершенно не одинаковые задачи. Да, и там и там будет регулятор, но какой структуры? - верно, разной и все зависит от задач. Причем для одного и того же объекта, но при разных требованиях к системе управления структура регулятора будет разной...например, система регулирования уровня воды в баке (при некоторых упрощениях) при использовании П регулятора по каналу управления будет нулевая статическая ошибка, а возмущению - отличная от нуля (естественно это плохо). ПИ регулятор поможет исправить статическую ошибку по возмущению. Поэтому регулятор нужно рассматривать только в связке исполнительный механизм+объект+датчик с учетом имеющихся возмущений с поправкой на вычислительное устройство. Вы верно говорите, что сейчас почти нет аналоговых регуляторов все цифровые, но синтезе цифровых систем управления нужно говорить только тогда, когда шаг квантования по времени вычислительного устройства одного порядка с постоянной времени объекта управления, в противном случае можно рассматривать систему как аналоговую, а при реализации так же перейти к разностному уравнению
День добрый, Андрей!
Не уверен, что я до конца понял, что вы имели ввиду :).
Что могу сказать про синтез регулятора:
Для синтеза нужно знать модель объекта. А в реальной жизни получить модель объекта это на много порядков сложнее задача, чем этот синтез некого идеального для данной системы. Ни разу не встречал синтезированного регулятора (возможно я конечно не так много их и видел).
Если система действительно сложная, то обычно делается несколько контуров регулирования (каскадный регулятор) и всё.
Буду благодарен если расскажете как вы это делаете и т.д. и т.п. Интересно!
@@dimalimite я планирую записать цикл видео как раз по регуляторам. Как и у всех будет сначала лампочка (потом все тоже самое совершенно на другом стенде буду регулировать температуру, влажность и расход воздуха), которой буду управлять БУСТом, ТТР или контактором. Там рассмотрю все сопутствующие вопросы по теории и практике применения регуляторов. Но это будет не скоро, в сентябре дособираю стенд и по тихому буду готовить материал, а там как пойдет,В УЗ скорее всего будет на дистанционном обучении..посмотрим.
@@dimalimite модель объекта можно прикинуть по переходным характеристикам, если только можно активный эксперимент провести...ну или исходя из физики накидать модель, а потом провести идентификацию параметров модели. Понятно, что не всегда это возможно, если присутствуют явные нелинейности, то можно нагородить адаптивный регулятор или регулятор с переменной структурой, вариантов масса, только это уже совсем узкие вопросы
@@andrewmandra311 удачи! Скидывайте ссылку как выйдут видео!
почему предельное значение Тс = времени цикла? В контроллерах же есть внутренний таймер, да и 2 секунды для контроллера это целая жизнь. Или я что то не понял? Я начинающий асу тпшник, просто интересуюсь.
Наверное что-то не поняли
Спасибо вам за пояснения . Сам в этом полный ,, ноль" , но после вашего видео у меня даже китайское говно , извиняюсь за выражение сносно заработало .
Там есть параметр Ar - предел операции интегрирования : 1 - 100% может подскажите , что он значит ? ruclips.net/video/LNMhJrYonRU/видео.html . Rex C -100 .
Скиньте ссылку на мануал вашей железки.
@@dimalimite drive.google.com/file/d/1_vmS6Ey87i2vG8WWtWcExgLN-tRBOOtu/view?usp=drivesdk
Плохо, что там нет вообще какой-либо информации по какой формуле это всё работает. Может быть там отдельно рассчитывается 3 составляющие и потом складываются П+И+Д. И вот этот Ar ограничивает в этой сумме величину И, т.к. интеграл может вечно нарастать.
Вообще если у вас есть желание, то можно понять как он работает если подать ему на вход неизменное ступенчатое воздействие. Если у вас нет имитаторов сигналов, то можно датчик температуры положить в место с неизменной температурой (просто на пол помещения), задать уставку равную показанию этого датчика, а потом изменить уставку допустим на +5 от температуры датчика. Изолировать параметры (по очереди присваивать нули, по аналогии с видео этим моим) и посмотреть как будет меняться аналоговый выход регулятора.
@@dimalimite Больше спасибо , за подсказку .
Поясните пожалуйста. Как понял, в данной формуле в интегральной составляющей рассчитывается ускорение. Кто-то использует через скорость (En - En-1). Вопрос: в чем разница?
День добрый. Напишите формулу конкретную. Так не понятно о чём идёт речь.
@@dimalimite Сори, описался - дифференцальную составляющую. (E-E0) - скорость ед/сек. td*(E-2*E0+E1) - ускорение м/сек^2 Поправьте, если не прав - где-то прочитал в комментариях.
@@mihail_redov
Вот такую формулу вы имеете ввиду П+И+Д, где:
П=Kp*E;
И=И+(E(-1)/Ki);
Д=Kd*(E-E(-1)).
?
Уже десятки раз обсуждал в комментариях. Больше сил нет обсуждать :).
Вариаций есть десяток. Можно использовать ЛЮБУЮ какая нравится. Работать будет +/- одинаково.
@@dimalimite Да, она самая. Комментарии все перечитал, точного ответа не нашел. Понимаю что это примерно одно и тоже, но хотелось бы поточнее узнать какие есть различия, ведь не зря ее постоянно упоминают, иначе смысл тогда использовать 3 состояния ошибки в диф составляющей. Буду использовать Вашу формулу, но всё же думал, может для каких-то особенных случаев другая более предпочтительней
@@mihail_redov может где-то и лучше - я честно не знаю. Лично на мой вкус она сложнее (чисто в программной реализации), ну и с 3-ех позиционными механизмами "в лоб" работать не будет.
Дмитрий спасибо за работу! Следуя Вашей рекомендации, посидел с тетрадкой и ручкой, подставляя разные значения. Назрел вопрос )
Давайте возьмем для простоты ПИ составляющие без Д. Предположим, мы нагреваем бак с водой и разница Е у нас постоянно уменьшается. Например, Е(n-1)=10, потом мы подогрели и En=9
Kp=12, например, а Ти=4 и Тс=2 как в вашем примере. deltaYn=12*((9-10)+2/4*10)= 12*(-1)+12*5
Получается, что вклад П составляющей = -12, а вклад И составляющей 60.
Это не совсем понятно? По классике вклад П основной, а И маленький, чтоб дотянуть до задного значения.
Не понятно почему все три составляющие умножаются на один и тот же коефициент Кр?
Меня когда то учили, что коефициенты Кр, Ки, Кд - это три разных коефициента и по своему номиналу они очень сильно отличаються. И при настройке регулятора, вклад каждой составляющей регулируют своим коефициентом. А как это делать если коефициент один на всех? )
День добрый!
Была дельта 10 стала 9. Изменение на цикле 1. П-часть и отрабатывает изменение на 1 цикле в 1 градус :). Я понимаю, что "хочется" чтобы П-часть была 12*9=108, но...
П-часть работает с текущем рассогласование в рамках одного цикла, И-часть работает уже с текущем рассогласованием от уставки в целом. От сюда и такая разница. Тоже самое если бы Е не изменялась, то работала бы только И-часть.
Вы увидите всё тоже самое если откроете учебник ТАУ, но только раздел Цифровые регуляторы, а не аналоговые. Не понимаю, а какой классике вы (и не только вы) говорите :)))).
Ки и Кд - безразмерные коэффициенты и могут быть выражены через Кр, которое можно вынести за скобки. Я тут в комментах давал ссылки на вывод этой формулы - если реально интересно, то можете самостоятельно её вывести.
@@dimalimite Благодарю что ответили. Вывод формулы хотелось бы посмотреть. Ссылку в коментах не нашел. Можете продублировать или закрепить под видео?
Классика - это в юности учил ТАУ в институте. Теперь пробую реализовать на пратике и понимаю, что я мало что понимаю ))).
Ti & Td всегда принимать в два раза больше Tc?
День добрый! Я вообще не понял комментарий. Напишите подробнее.
@@dimalimite в начале видео вы приняли Tc 2 сек. , а Ti и Td по 4сек. Без объяснения почему в два раза больше.
@@voron_aka_chon чтобы было удобнее по клеточкам рисовать и всё. Это просто как пример и не более того
@@dimalimite а есть какое то правило? Теория )?
@@voron_aka_chon есть теория конечно. Если интересно ознакомится, то вот хорошая книга Ротач В.Я. Теория автоматического управления
Дмитрий, здравствуйте. Из видео следует, что приращение управляющего воздействия генерируется с заданной периодичностью. Допустим зададим периодичность 30 сек. Также допустим, что в первый момент времени рассогласование на входе было незначительным и на выходе получим незначительное приращение dY. В следующее мгновение рассогласование изменилось быстро, практически скачкообразно, но период для следующей итерации расчета еще не прошел, следовательно регулятор находится в состоянии ожидания. Как можно растолковать параметр "чувствительности" регулятора применительно к рассмотренному алгоритму и логике регулятора?
День добрый!
Любой цифровой регулятор работает с каким-то периодом. Минимальный период это 1 цикл контроллера (несколько микросекунд), но не меньше чем время опроса датчика обратной связи.
Естественно, что период зависит от скорости процесса, времени исполнительного механизма и т.д. Есть просто так "с потолка" установить этот параметр, то будет всё работать как вы и описываете.
Температура не может измениться скачком (если это только не ядерный взрыв или типо того), а давление или скорость может. Опять же если мы регулируем температуру в потоке с периодом 30 сек, то это очень много, т.к. процесс идёт быстрее, а вот если это воздух в комнате, то это уже нормально. Я лично использую для регулирования температуры в потоке 3 сек, для давления 2 сек, для перемещения 0,1 сек.
Здравствуйте, расскажите пожалуйста про интегральную накрутку(переполнение), как её избегать, по каким причинам может возникать, это не доработка прибора или не правильно подобранный прибор?
Вечер добрый, Александр!
1. Когда возникает? Пока есть рассогласование на входе регулятора (SV-PV), то будет накапливаться интеграл. То есть если рассмотреть, как в этом видео ступенчатое воздействие 1, которое не уходит, то "И ступеньки" так и будут дальше уходить в бесконечность (или - бесконечность если рассогласование отрицательное). Это вообще нормально.
2. Как избегать? Устанавливается ограничение на выход регулятора. Обычно оно равно реальному диапазону регулирования исполнительного механизма. Например от 0 до 100 %, то есть всё что 100=100. Вот и всё.
3. Про правильно/не правильно? Это нормально. Если не ограничивать выход, то может получиться ерунда. Если говорить про готовые устройства, то обычно это ограничение уже "прошито" с завода. Если про ПЛК (тем более самописные регуляторы), то могут быть различные варианты, но в любом случае ограничение должно в какой-то форме быть.
Вот как-то так.
Добрый день! Спасибо за информацию. Пытаюсь повторитьВаш пример с погодным регулятором, только на ПЛК Schneider Electric M221. Скачал библиотеку на ардуино и переписал блок регулятора в своем софте. что то непонятное получилопь. Релейный выход регулятора тарабанит как пулемет. Наверное 500 раз в секунду. При пересчете руками вроде все сходится. импульс получается 0,3-0,5 сек. время цикла 2 сек. Но выход почему то нифига совпадает с расчетным. Не подскажите , что может быть. Можно олее подробно про привязку расчетного времени к релейному выходу. Насколько я понял там на прямой логике собрано.
День добрый, Юрий!
Судя по вашему описанию у вас вся эта конструкция работает с временем цикла контроллера, а не с заданным 2 сек. Покажите ваш код - постараюсь прокомментировать (ссылку скиньте на скриншот). Алгоритм должен срабатывать строго 1 раз за заданный цикл.
У меня есть на канале видео где я этот код комментирую.
@@dimalimite Блок у меня вызывается раз в 100мс. но вход Pulse_100ms. я подвязал тактовому импульсу 100мс. Я правильно понял, что формула должна пересчитываться каждые 2сек(время цикла)? И еще момент, выходы UP и DOWN обрабатываютяся в том же цикле (2 сек) или же каждый рахз при выхове блока? Скрин, сложно сделать на шнайдере. Перепишу на Siemens S7-1200 и пришлю, там читабельней будет
@@Yuri_Vtornikov да 1 раз в 2 секунды (если цикл 2 секунды) вы получили время на которое надо замкнуть UP/DOWN и вот пока идут эти 2 секунды они обрабатываются. Через 2 секунды получаете новые данные и т.д.
Если такты считаете, то на нулевом такте делаете вычисления. Причём этот ваш такт должен строго по фронту быть (возможно в этом у вас проблема), а то если просто взять тактовый импульс 100 мс, то он 50 мс вкл и 50 мс выкл и вот в эти 50 мс у вас эта конструкция может выполняться с циклом контроллера.
@@dimalimite Ого, спасибо. Попробую переосмыслить)) А пока вот что получается ruclips.net/video/fyBYcZuXEqQ/видео.html&ab_channel=Solomon
Дмитрий, подскажите пожалуйста, в вашей формуле Кр - кэф. усиления.
В ОВЕНЕ в регуляторах в формуле 1/Хр (где Хр- полоса пропорциональности)
Объясните что такое Хр.
спасибо!
Вечер добрый!
Это обратная величина. Как правило соотносится со 100% (или с максимальным управляющим воздействием).
На простом примере, при максимальном управляющем воздействие 100%:
Если Кр=1%/градус, то при изменение на 1 градус получаем 1%/градус*1градус=1% приращения (то есть регулятор бы выдал 100% при изменение на 100 градусов, вот эти 100 градусов и есть полоса пропорциональности). Тоже самое если Хр=100 градусов, то при изменение на 1 градус получаем 100%/100градусов*1градус=1% приращения.
Если Кр=100%/градус, то при изменение на 1 градус получаем 100%/градус*1градус=100% приращения (то есть регулятор выдаёт 100% при изменение на 1 градус, вот этот 1 градус и есть полоса пропорциональности). Тоже самое если Хр=1 градус, то при изменение на 1 градус получаем 100%/1градус*1градус=100% приращения.
Если Кр=20%/градус, то Хр=5 градусов; Кр=40%/градус, то Хр=2,5 градусов.
То есть физический смысл Хр - это диапазон отклонения от заданного значения, в котором П-составляющая регулятора выдаст от 0 до максимума при отклонение равном Хр.
Понятно получилось?
@@dimalimite да, вы открыли мне глаза, спасибо. вбил формулу в эксель, поигрался с коэффициентами, визуально посмотрел что как меняется при изменении того или иного параметра. Еще раз спасибо за бесплатный совет.
Дмитрий здравствуйте. Спасибо за все ваши видео. . 8:48 -"регулятор что-то сделал но эффект нулевой" . Почему? Он воздействовал и на следующих шагах будет не 1(1-1) а например 1(0,9-1)....1(0,8-0,9) Пропорциональная составляющая как я понимаю будет уменьшаться.
День добрый, Леонид!
Это я "объясняю", что такое ступенчатое воздействие. То есть на вход регулятора подаётся "неустранимое " рассогласование, с которым он справиться не может. Это стандартный сигнал для оценки работы. То есть он как-то повоздействовал на исполнительный механизм, а эффекта нет. Например мы температуру пытаемся в трубе поддерживать, а датчик при этом вытащили :). А так то вы всё правильно рассуждаете и так оно и было бы в реальной системе (только в случае просто П до уставки бы не дошли всё равно как раз из-за этого).
Спасибо за пояснение. По возможности прошу еще пояснить как учитывается интегральная составляющая при трехпозиционном ИМ? Ведь если ошибка стабилизировалась и стала равна нулю то П и Д составляющие равны нулю, а вот состаляющая И нет. Она накопилась и есть. Она как-то обнуляется или учитывается с небольшим временным интервалом? Не могу понять.
@@zarus1122 вечером по возможности подробно прокомментирую. Пока если время есть, то на бумаге проделайте эти расчёты. Посмотрите где? там накопление И составляющей и есть ли оно вообще. Для трехпозиционного выхода приращение на шаге переводится в сек (или какое-то время) и подаётся на выход импульсом и так каждый шаг (я вроде в видео это подробно объясняю...уже точно не помню). То есть если приращение 0, то и выход 0 для трехпоз.
В дифференциальной составляющей на 2 шаге в общей формуле стоит 2. Это правильно????
День добрый!
Да всё ок. Вы можете самостоятельно вывести эту формулу для проверки (тут в комментах ссылку кому-то давал на исходное ввражение).
@@dimalimite спасибо большое . Нашел ссылки, вывел. Вопрос по выражению Yn=Yn-1 + dYn - то есть- мы в каждом следущем шаге пытаемся регулировать приращение управляющего воздействия ?!
@@МейржанБакиров на каждом шаге рассчитывается приращение регулирующего воздействия относительно текущего состояния, которое позволит нам компенсировать рассогласование уставки от текущего значения регулируемого параметра. То есть цель свести Е к нулю.
Спасибо за работу! Возник вопрос. Мне кажется, что Ошибка En должна расмотриваться со знаком +или-, просто у вас рассмотрено часстный случай. Думаю вопрос возник в следстви того, что на графике отсутствует значение уставки.
День добрый!
В отрицательную сторону всё тоже самое будет.
Если интересно то можете вот это посмотреть ruclips.net/video/wOkgx-CpU2E/видео.html там есть отрицательное рассогласование.
Понял, спасибо
А вот как понять Siemens sipart dr21 - аналоговый или цифровой. Вроде программируется ( но возможности нет)
Похоже что цифровой.
Добрый! Спасибо огромное за разъяснение. Подскажите, почему при расчете П на втором шаге не поменялось Еn, мы же дали приращение регулировке 1%, значит температура по идее должна чуть подняться и чуть уменьшить En?
Я так понимаю Еп должно стать =0, тогда система начнет остывать и En опять станет 1, а Yn =1% и система будет колебаться между 50 и 49 градусами. Разъясните, пожалуйста.
Похоже понял. Мы делали расчет для регулятора без обратной связи?
@@Ильязямзин-ф1зэто ступенчатое воздействие показывает поведение регулятора в ситуации когда "ему не удаётся убрать" это рассогласование в 1 градус (у меня в примере). Обратная связь есть. Всё ок. Но он что-то сделал, а эффекта нет. Я там вроде про это говорю.
Это позволяет нам оценить как ведёт себя регулятор в такой ситуации. И вот наглядно видно, что П-регулятор отрабатывает изначальное отклонение и всё, а если этого не достаточно, то ни чего он уже сделать не может. Отсюда возникает остаточное отклонение. А вот ПИ-регулятор уже "старается" как может убрать это отклонение за счёт увеличение регулирующего воздействия.
@@Ильязямзин-ф1з вот тут вначале посмотрите как будет работать только П-регулятор ruclips.net/video/CgKPvyRrpzo/видео.html
Жаль нельзя 2 лайка поставить )) или 42)) спасибо!!!
Здравствуйте! А я хочу спросить про статическую настройку трех импульсного регулятора котла и внешнего задатчика,получается 4 входа в регулятор минитерм 450, как рассчитать и какие формулы,буду просто очень благодарен,а если хотя бы с какими нибудь цифрами для примера, то вообще было бы! У нас ещё р-25 и р-29 регуляторы стоят и работают и работают
День добрый!
Самое простое в вашем случае это включить автонастройку в минитерме 450 (она там есть). Посмотреть какой процесс будет получаться и, при необходимости, допилить напильником (если слишком медленно, то П увеличить И-уменьшить; если сильные выбросы от уставки, то наоборот).
р-25 и р-29 - если всё с ними ок, то и не надо их трогать! Пусть живут :).
Автор, правильно ли я понял.
если у меня ошибка составляет 5% то мой регулятор должен выдать управляющий сигнал 5, при условиии что я ограничил нижний и верхний предел от 0 до 100 и отключил интегральную и дифференциальную составляющую.
использую FB41 в step7, PLC Siemens
Если коэф. усиления равен 1, то видимо да. (Я не сильно знаком с сименсом)
Дмитрий, скажите, почему у вас в формуле у интегральной составляющей стоит предыдущая ошибка En-1, хотя на википедии в формуле ПИД-регулятора указана текущая ошибка En? Я думаю, что у вас неправильно, потому что член En-1 у интегральной составляющей учитывается в Yn-1 и поэтому в формуле приращения дельтаY должна быть текущая ошибка En. Я прав?
День добрый, Александр!
Вы не правы. По поводу ссылок из википедии и т.п. здесь достаточно много в комментариях это обсуждалось - если есть желание, то можете почитать/посмотреть.
@@dimalimite Спасибо, конечно у меня есть желание. Первая же ссылка, которую вы там приводите studopedia.org/13-78812.html показывает, что правильно En писать, у них это E(i). Я сделал свои расчеты через Z-преобразование и тоже получается En, если интересно, могу привести их.
Я не веду речь про различия в формулах касающихся времени цикла Tc или почему у них коэффициенты другие (могут включать в себя Ti и Td). Только про En и En-1
@@АлександрИвавнов-з4ф на самом первом шагу регулирования какой должен быть выход пи-регулятора если коэф. усиления равен 1?
Здравствуйте. А почему И-составляющая и Д-составляющая находятся в скобках после П-коэффициента? Получается П-коэффициент рулит всеми тремя составляющими? Обычная формула выглядит по другому где Yn=сумма составляющих. Наверное вы неправильно поставили скобку, должно быть deltaYn=Kp*(En-En-1) + Tc/Ti*En-1 + Td/Tc*(En-2 * En-1 + En-2)?
День добрый.
Почитайте пожалуйста комментарии - уже эту тему несколько раз обсуждали :). С формулой всё ок.
@@dimalimite Что-то прочел я все комментарии и не нашел что такая тема подымалась. Вы выкладывали ссылки на лекцию "Цифровые регуляторы" и "Получение разностного уравнения на основе интегро-дифференциального", но и там есть эта же ошибка где пропорциональный коэффициент влияет на все составляющие. В других русско и англо-язычных источниках этого нет.
Выходной сигнал = сумма каждой составляющей, и каждый коэффициент влияет только на свою составляющую что логично.
@@makesstr скиньте ссылку на другой источник пожалуйста посмотрим что там пишут
скорее всего вы смотрите формулы где не Ти, Тд (именно время), а безразмерные коэфф., которые если раскрыть, то вылезет Кр.
@@dimalimite
С Kp вне скобок
Углублёнее погуглил и есть два варианта:
С Kp вне скобок
PID without PhD (25стр)
robofob.ru/materials/articles/pages/Karpov_mobline1.pdf (19стр)
www.cta.ru/cms/f/364276.pdf (12стр)
С Kp в скобках
www.cds.caltech.edu/~murray/courses/cds101/fa02/caltech/astrom-ch6.pdf (2стр)
engineering.ju.edu.jo/Laboratories/07-PID%20Controller.pdf (13стр)
cyxtp.ucoz.ru/pdf/Aidan_O_Dwyer_Handbook_of_PI_and_PID_Controller_Tuning_Rules.pdf (19стр)
Википедия говорит: Большинство методов настройки ПИД-регуляторов используют несколько иную формулу для выходного сигнала, в которой на пропорциональный коэффициент усиления умножены также интегрирующая и дифференцирующая составляющие. Видимо оба варианта приемлимы.
Добрый день, хочу спросить, у вас при обсчете интегральной составляющей указано *En-1. А в других интернет источниках приводят формулу где *En. Например:
Есть рекуррентная форма:
Yn = Yn-1 + Kp(En - En-1) + Ki En + Kd(En - 2En-1 + En-2),
где Kp(En - En-1) + Ki En + Kd(En - 2En-1 + En-2) это и есть дельтаY, то есть приращение на шаге квантования. Вот у этой формулы перед Ki стоит En, что означает на текущем шаге квантования, а у вас в формуле En-1, на предыдущем.
Объясните пожалуйста, почему так, и если можно еще как связаны Ki, Kd с Ti и Td соответственно?
День добрый!
В формуле, которую вы привели отсутствует привязка к интервалу квантования. Но тут надо знать, что они подразумевают под Kи и Кд, возможно оно где-то там сидит. Формул много разных всяких есть. Надо смотреть как они выводятся и что это вообще такое. Какая размерность на выходе получается.
Если брать Ен, а не Ен-1, то регулятор не будет работать как классический. Если рассмотреть вариант без Д составляющей например для простоты, то вы увидите что на первом шаге приращение не будет равно Кр*Ен, а через время Ти не произойдёт удвоения. Это что-то уже другое будет. Видел несколько раз в сети и даже один раз в мануале на софт для ПЛК Ен вместо Ен-1, но при этом остальная формула правильная (с квантованием и т.д.) и графики правильные. Возможно описка, возможно злой умысел :). Так же не стоит забывать, что в сети очень много именно копирайтинга, то есть статей написанных людьми далёких от этого вообще.
У меня тут самый простой регулятор на разном уравнение (как в большинстве блоков производителей ПЛК и преобразован он в такую же форму).
Если есть желание, то можете самостоятельно вывести это уравнение (первые попавшиеся ссылки или можете учебник по тау взять):
studopedia.org/13-78812.html
www.ets.ifmo.ru/denisov/dsp/lec13.htm
studopedia.info/3-23202.html
Кр за скобки потом выносите.
Благодарю за подробный и оперативный ответ! Я просто думал что Ki и Kd это выведенные из формулы с википедии например:
Ki_discr=Kp*Kip*T; Kd_discr= (Kp*Kdp)/T, где, если я правильно понял, Kip = Ki*Kp и Kdp = Kd*Kp. Поэтому думал что привязка к времени квантования именно тут по T, и почему там E(n) вместо E(n-1) понять не могу, возможно злой умысел добрался и до википедии :)
В википедии твердят, что "Большинство методов настройки ПИД-регуляторов используют несколько иную формулу для выходного сигнала, в которой на пропорциональный коэффициент усиления умножены также интегрирующая и дифференцирующая составляющие", то есть, Kp помимо как за скобками в большинстве регуляторов еще и в скобках есть, то есть перед слагаемыми в скобках стоят коэффициенты не 1, Ki, Kd, а 1, KpKi, KpKd. Что порождает вообще кашу в голове :(
@@smersh7543 на википедии каша какая-то написана и очень скудно :). Kip = Ki*Kp и Kdp = Kd*Kp вот это вообще хз что такое :))). Это писал какой-нибудь копирайтер, который возможно понятия вообще не имеет о чём пишет. В каких единицах измерения это вообще всё там :))). Не зацикливайтесь на всякой ерунде.
Если хотите реально разобраться:
1. Сами выведите эту формулу. Это не сложно.
2. Разберитесь в реализации готовых блоков ПИД-регуляторов от производителей ПЛК. Там будет в большинстве случаев два варианта по сути одной и той же формулы. Увидите сами.
3. Реализуйте самостоятельно и тогда всё окончательно сложится в голове.
@@dimalimite Пишу со 2 аккаунта, с телефона, благодарю за ответ! А два вида одной и той же формулы, это вы имеете ввиду апроксимация интеграла через прямоугольники и трапеции? Готовлюсь к сдаче экзамена нп сл. КИПиА 6р. вот и захотелось разобраться.
Скажите: можно ли на ОВЕНовском ПР 200 организовать 3-х позиционное регулирование? У меня не получилось. У ОВЕН лоджик нет массивов и структур, т.е. некуда записать вычисленное значения, а по сути в блок "Импульс на заданное время" надо записать вычисленное значение и зафиксировать его пока привод его не отработает.
А по сути происходит перезапись в каждом цикле и в результате ничего не работает.
Может я чего то не понимаю, или не правильно делаю?
День добрый!
Я сильно не знаком с ПР200 и софтом для его программирования, но похоже это что-то типо Siemens Logo, а на нём это можно сделать (я лет 10 назад делал). Не пробовали на ОВЕНовском форуме посмотреть кстати? Там много всякой информации.
Сложно судить о правильности не видя проект.
Начните с простого, а когда получится, то уже можете добавить накопление мелких импульсов и т.д.:
Вам надо самому "задавать" этот цикл. Я не знаю, какие там конкретно блоки есть, но например берете симметричный генератор на 1 сек вкл/1 сек вык и получаете 2 сек цикл. Далее ВСЕ операции делаете по фронту импульса этого генератора. То есть прилетает фронт, по этому фронту считается приращение, ограничивается временем цикла и , в зависимости от знака, подаётся в блок "Импульс на заданное время" для открытия или закрытия, записывается рассогласование измеряемой величины на этом шаге в переменную (если Д-часть нужна, то записывайте 2 значения), чтобы в следующем цикле использовать это значение.
Вот как-то так).
@@dimalimite Спасибо за оперативный ответ. Буду пробовать. ФЛПрог гораздо функциональней чем ОВЕН, по всем абсолютно блокам.
Ок. Отпишитесь тогда по результату.
Да весь софт для контроллеров, который на языках МЭК базируется он +/- одинаковый.
Если вы видели мою реализацию для регулятора такого на FLProg, то попробуйте её на FBD переложить. Там просто блоки же можно на Си делать и я его так и сделал, блок можно открыть на редактирование и посмотреть что внутри.
А вообще я лично 90% проектов делаю на Mitsubishi контроллерах и использую язык ST. Вот и говорю, что всё одно и тоже:).
@@dimalimite Мне тоже приходилось на разных ПР делать различную автоматику (Мюллер, Шнайдер, и.т.д).
Да, в принципе все одно и тоже. Но ПИДы как то не приходилось использовать, обычно для этих целей готовые приборы ставили, чаще всего ОВЕНы.
В ПР ОВЕН проблема на мой взгляд даже не в ПИД 3-х позиционном, а вообще во временном хранении данных, т.е. нет инструмента >>по команде запись данных, хранение, по команде чтение этих данных. Не знаю как в других контролерах ПР т.к. не сталкивался с такими задачами ранее.
В С++ и соответственно в ФЛПрог эти инструменты "Массив", "Структура", соответственно таких проблем нет.
А зачем вам эти массивы и структуры?
Скачал софт этот ради интереса. Там же есть создать блок входной переменной, создать блок выходной переменной. На примере рассогласования: вам нужно рассогласование текущее (Ет), рассогласование на прошлом шаге (Ет-1) и, если Д хотите, то на позапрошлом шаге (Ет-2). Далее (только функциональными блоками это накидать и выполнять по фронту вашего цикла):
Ет=SP-PV (блок разности)
Ет-2=Ет-1 (входная переменная-выходная переменная)
Ет-1=Ет (входная переменная-выходная переменная)
Вот и всё.
Дмитр у, очень вас Прошу объясните. В ПИД расчетах мне не понятно уже голову сломал, откуда вы берете значение Ен-1. Ен - понятно заданное значение минус действительное но Ее-1 это ошибка регулирования предыдущего цикла скажем у меня заданная 50 текущая 23 значит ошибка равна 27 градусов. В нулевом цикле Ее-1 будет равна 0 а в первом цикле сколько ? Или в Ен-2 это двойное значение 2х27 или это значение на два цикла ниже. Скажем у нас 3 цикл значит Ен-2 будет равна 1 циклу? ПОМОГИТЕ. Спасибо
Вечер добрый!
Вы главное себя не перемудрите :).
Всё верно Ен=Уставка-Текущее.
Ваш случай Уставка=50, Текущее=23, Ен=27. Если температура не растёт (идеальное ступенчатое воздействие как у меня на доске), то:
0 цикл: Ен=27, Ен-1=0, Ен-2=0;
1 цикл: Ен=27, Ен-1=27, Ен-2=0;
2 цикл: Ен=27, Ен-1=27, Ен-2=27;
и т.д.
Если допустим растёт на 1 градус на цикле, то:
0 цикл: Ен=27, Ен-1=0, Ен-2=0;
1 цикл: Ен=26, Ен-1=27, Ен-2=0;
2 цикл: Ен=25, Ен-1=26, Ен-2=27;
3 цикл: Ен=24, Ен-1=25, Ен-2=26;
4 цикл: Ен=23, Ен-1=24, Ен-2=25;
и т.д.
@@dimalimite большое спасибо за ответ.
У меня случай вот какой, я буквально в крации.
Хр (полоса пропорциональности) =36 - противодействующий сигнал.
Ти (интегральная составляющая) = 20
Тд (дифференциальная составляющая) = 2
Стартовая температура = 23 градуса по Ц
Уставка 50 градуса по Ц
Необходимо найти выходную мощность регулятора после включения. Еще раз ОГРОМНОЕ СПАСИБО ВАМ ЩА ОТВЕТ. !!!
Низкий поклон
Спасибо!
Помогло вам объяснение? :)
Здравствуйте, Дмитрий. Как Вы думаете, для ПИД-регулятора для 3х ходового клапана, который регулирует температуру теплоносителя на подаче требуется ли учитывать такие физические параметры задвижки, как время задержки старта механизма, время люфта при смене направления регулирования, время движения задвижки по инерции?
День добрый! Смысла нет. Главное температуру держать, а какие там люфты и т.д. вообще не важно.
@@dimalimite Спасибо за ответ! Допустим задвижка массой 100 кг. При изменении направления без компенсации времени ее остановки, в обмотке привода будет перегруз по току, что сократит жизнь привода. Как считаете?
Что думаю:
1. Если привод аналоговый (0-10 в, 4-20 мА управление), то вы вообще это ни как проконтролировать не сможете.
2. Если трехпозиционный и после импульса на открытие сразу идёт импульс на закрытие без паузы, то что-то явно не так с регулированием.
3. Если вы переживаете, то, в случае трехпозиционного привода, легко можно добавить принудительную задержку между импульсами именно разнонаправленными.
4. 100 кг для трехходового это порядка ду150 или типо того. Сам регулирующий орган весит гораздо меньше + он наверняка разгружен по давлению + большая редукция на приводе и может быть необратимый редуктор. Если обращали внимание, то обычно на большой арматуре стоит малюсенький (относительно её габаритов) привод. Так что он просто не чувствует.
5. Возможно я не сталкивался с такого рода проблемами. Самый большой диаметр арматуры с приводом какой я ставил был ду630 при весе самой арматуры около 2,5 тонн. Я не заморачивался на такие вещи, но у меня и нет ситуаций резкой смены направления вращения на трехпозиционной арматуре. А вот на аналоговый приводах такое однозначно бывает, т.к. они проскакивают положение заданное и встроенный в привод позиционер делает реверс в обратную сторону.
С точки зрения именно регулирования эти люфты, выбеги и т.п. не важны. Для этого и есть регулятор, чтобы это всё скомпенсировать. Но вопрос интересный и стоит проконсультироваться дополнительно с производителями арматуры
Ещё такой момент забыл написать - если посмотреть на готовые общепром. регуляторы для задвижек, клапанов и т.п., то я так слёту не смогу сказать где такой функционал реализован.
@@dimalimite Спасибо. Теперь есть о чем подумать, чтобы не городить лишнего. Собственно поэтому и написал Вам. Постараюсь сделать как можно оптимальнее и проще. Благодарю.
Здравствуйте. Хочу настроить ТРМ32 на реальном объекте. Хотел спросить. А как с вами связаться?
Почту можете написать. Хотел фотографию отправить формул, коэффициентов и тд тп. Заранее спасибо
День добрый.
В инструкции ТРМ32 подробно достатточно написано про настройки и приведена формула по которой он работает.
На почту можете вопрос написать или сюда. Я по возможности стараюсь отвечать.
dimalimite@gmail.com
Здравствуйте, Дима! Спасибо за видео и ответы на вопросы. Я внимательно прочитал все комментарии, и вас несколько раз спрашивали о том, почему пропорциональный коэффициент (у вас - коэффициент усиления) вынесен за скобки. К сожалению, так и осталось непонятным, какой в этом смысл.
Ведь при настройке регулятора мы, выходит, не сможем независимо регулировать П-составляющую, изменение Кр затронет и две другие.
Если не затруднит, поясните этот момент ещё раз.
День добрый.
Я десяток раз уже в комментариях отвечал на этот вопрос :))). И давал ссылки на формулы для самостоятельного вывода.
Всё зависит от структуры регулятора, его формулы и размерности коэффициентов. Простой пример где сидит Кр, когда он не вынесен за скобку: вместо ВРЕМЕНИ инт. Ти и диф. Тд используются КОЭФФИЦИЕНТЫ инт. Ки и диф. Кд, которые равны Ки=Ти/Кр и Кд=Тд/Кр (есть различные вариации, но суть такая).
@@dimalimite Спасибо ещё раз. Я понимаю - это раздражает, когда одно и то же спрашивают в десятый раз. Да, и отвечали, и ссылки давали. Но!
Поверьте, я просмотрел много материалов, и сам когда-то учил эту тему в институте. Но не всё понятно в вашем ролике до сих пор.
Вот вы говорите: "Всё зависит от структуры регулятора, его формулы..." Но, во-первых, вы ведь говорите не о какой-то конкретной структуре, обычном ПИДе, разве нет? Во-вторых, в обычной, "классической" структуре ПИДа мы видим три параллельных звена, независимых друг от друга. У каждого звена свой коэффициент пропорциональности. И это логично. Коэффициенты (все!) - безразмерные величины, и неважно, где в формуле они стоят: перед величиной ошибки или ВРЕМЕНЕМ. Суть в том, что НЕТ связи между коэффициентами, и это важно. А у вас вот снова: Ки=Ти/Кр... Разве в "классическом" ПИДе есть ОБЩИЙ коэффициент усиления? Зачем он, если ещё у каждого звена свой коэффициент пропорциональности? Вот это, простите, никак до меня не доходит.
@@Evgeny_Miroshnichenko нет просто больше возможности уже в 100 раз объяснять.
Посмотрите свои лекции (если они остались у вас) по теме цифровые регуляторы (могут называться дискретные). Это же касается и Ки=Ти/Кр...и размерности Кр.
Есть 2 основные (и десятки вариаций) модификации формулы, которые можно встретить в ПЛК. Одна из основных написана у меня на доске. Есть ещё второй вариант, где 3 составляющих считается отдельно с заданным временем цикла, примерно такого вида выглядит (есть разные вариации):
П=Kp*E;
И=И+(E(-1)/Ki);
Д=Kd*(E-E(-1)).
Надо ограничивать как в целом сумму так и каждое значение отдельно, а то возникает переполнение. Без понимания размерностей этой конструкции получается каша...
Если хотите разобраться, тогда ответьте на вопросы:
- в каких единицах у вас получается выход регулятора?
- каким образом можно складывать/вычитать/делить "безразмерные" единицы с "размерными" (температурой С, давлением бар, процентами %)?
@@dimalimite Ясно, благодарю вас за обратную связь. Вот "второй вариант" мне более понятен, странно, что он - второй :))
Про ограничение - само собой, только я думаю, что достаточно ограничивать общую сумму для предотвращения аварийной ситуации. А уж со слагаемыми надо разбираться на этапе настройки. Речь не о том.
На вопросы мне ответить легко:
- в любых нужных единицах. Зависит от того, в каких единицах задаётся ошибка.
- нет, не складывать/вычитать безразмерные с размерными, а только делить/умножать, то есть, масштабировать. Для этого и предназначен безразмерный коэффициент, стоящий перед каждым слагаемым. Совсем как у вас общий Кр - он же безразмерный?
Я больше не стану здесь разводить дискуссию, и так отнял у вас время. Но могу я обратиться к вам по мэйлу за советом в решении конкретной задачи? Где-то видел здесь адрес. А пока надеюсь разобраться сам. Я пробовал алгоритм, предложенный Алексом Гайвером для реализации на Ардуино (ruclips.net/video/rIbWnB26dp0/видео.html). Но работает из рук вон плохо. Что вы о нём думаете?
@@Evgeny_Miroshnichenko там большое видео. Будет если время, то посмотрю. На 34 секунде там формула, которой я пользуюсь. Думаю там всё нормально наверное дальше, а проблема в настройке.
"Про ограничение - само собой, только я думаю, что достаточно ограничивать общую сумму для предотвращения аварийной ситуации. " - так работать будет очень-очень не долго и уйдёт в максимальный/минимальный выход, т.к. переполнится И-часть. Эта реализация сложнее, чем кажется на первый взгляд :(((.
По поводу вопросов:
Е имеет размерность управляемого параметра (градусы, бары и т.п.). Все коэф. по вашему мнению безразмерные. Значит выход регулятора будет в градусах, барах и т.п. ? :) Всё верно?
По поводу размерности Кр:
Вы говорили что несколько раз посмотрели моё видео. Там безразмерный Кр? Вы на бумаге записали своей рукой как в видео прошу сделать?:) Я там несколько раз на это обращаю внимание, т.к. это самое важное для понимания как работает регулятор.
Если хотите разобраться с регулятором, то разберитесь в размерностях из первой (моё видео) и второй формулы. Разберитесь что делает размерность Кр и где Кр "сидит" в Ки и Кд.
Просто мне каждый второй пишет, что он всё понимает, знает и т.п., но при этом мне достаточно прочитать несколько фраз (см. начало сообщения) чтобы понять понимает о чём речь человек или нет :).
Пишите на dimalimite@gmail.com
Все чудово, только в формуле кажется ошибка, (Тс/Тi)*En, а не En-1
сделать устройство чтобы понять как оно работает это круто братан)) я сам конструирую электронику давно , ни разу до такого не додумался...... правда я без вышки. прикинь сначала нужно понимать что ты хочешь получить , а потом уже работать на результат.
но у вас видимо уже наоборот... нужно изготовить автомобиль чтобы изучить как он работает..... акуеть
Я просто не такой сообразительный как вы. Бывает :)
Хороший урок, но я не смог вывести обозреваемую формулу. Если кому не сложно, приведите ссылку или помогите увидеть соответствующие преобразования...
Вечер добрый, Владимир!
Если есть желание, то можете самостоятельно вывести это уравнение (первые попавшиеся ссылки или можете учебник по тау взять):
studopedia.org/13-78812.html
www.ets.ifmo.ru/denisov/dsp/lec13.htm
studopedia.info/3-23202.html
Кр за скобки потом выносите.
@@dimalimite спасибо. Я сделал по вашему видео ПИД регулятор для паяльника. Применил PWM 18bit а это значит, что нулевой мощности на нагреватель соотв 0, а максимальной 2^18. Время цикла у меня 7ms. Все работает нормально, но перестройка с уставки на уставку происходит крайне медленно да еще и со значительным перерегулированием. Это потому наверное, что я вообще не сделал маштабирование под эту свою задачу. Подскажите, как в моем случае масштабировать для PWM вычисленное приращение dYn по формуле. Именно эту часть из видео я не совсем понял. Если формула дает проценты от 0 до 100, то зачем в итоге умножать на Tc? Получается PWM измеряется в ms?
@@vladimirivanov4761выложите сюда свой код и посмотрим.
В случае МЕДЛЕННОГО ШИМ выход в секундах, то есть при цикле 7 мс и 50% мощности это 3.5 мс импульс и 3.5 мс пауза. При этом Ти Тд тоже должны быть в мс. А если мы говорим про АППАРАТНЫЙ ШИМ, то он уже должен дыдаваться в соотв единицах (0-255 для ардкино например). У вас какой? И в чём Ти Тд задаються? Перерегулирование может быть из-за неверных настроек и размерностей.
@@vladimirivanov4761 а сама по себе формула может выдавать в чём угодно - хоть в кирпичах :). Размерность выхода определяется размерностью Кр
@@vladimirivanov4761 Vladimir Ivanov про 18 бит шим не обратил внимание сразу. У вас выход должен быть от 0 до 2^18
А ошибка рассогласования это не обратня связь? А ведь так все хорошо начиналось...
Вечер добрый!
Ошибка регулирования (Е) это Заданное значение (SV) - Текущее значение (PV).
- Текущее значение (PV) - вот это отрицательная обратная связь.
Не очень понял вашу иронию? Объясните.
@@dimalimite вы в конце видео сказали ну и где вы тут видите обратную связь, вот.
@@dimalimite наверное имелось в виду обратная связь с исполнительного механизма? Хз.
Да. По положению исполнительного механизма. Я вроде достаточно чётко это говорю. Просто частенько попадаются люди, которые начинают рассказывать, что им нужен обратный сигнал по положению и без этого трехпозиционный регулятор не работает и т.д. и т.п. Вот я специально для них объясняю, что регулятору без разницы где стоит ваш механизм, он рассчитывает куда ему переместиться от текущего положения...
В институте сказали что ПИД уже старье. Только как в коде выглядит регулятор состояний, надо поискать.
Не знаю что тут сложного? Я в одну строчку написал формулу и корректировку на статическую ошибку. Не зная теории: ошибка на коэффициент и всё. И регулятор держит с точностью до 0,1 градуса.
День добрый! Сложного ни чего. Отлично, что у вас всё работает! Вкл/выкл тоже работает отлично (в рамках паяльника например). Регулятор может быть вообще в любой форме. Именно ПИД не панацея.
Выложите сюда код вашего регулятора - возможно кому-то (и мне) будет интересно.
@@dimalimite Это простой пропорциональный регулятор с ручным подбором и ограничением мощности ШИМ.
int ust = 38.0; //считаем ШИМ
float dt = ust-t0; //t0 - температура
int PWM = 22+(dt*40);
// float integral += (float)dt * 0.5; PWM += integral; //инт. коэфф.
// PWM += (ht-t0)*10; //дифф. коэфф.
if (PWM255) PWM=255;
analogWrite(nagrev, PWM);
float ht = t0;
Коэффициенты здесь привязаны к конкретному нагревателю и температуре и не будут работать в другом случае. Объяснять долго...
Щас занялся обдумыванием нагрева инкубатора, там посложнее из за инерционности. Нужно два термодатчика и расчет потребной мин/мах мощности и времени инерционности. Как модель может служить двух литровая кастрюля с двумя термодатчиками. Один датчик ограничивает максимум мощности другой минимум. Наверно возьму обычный ПИД алгоритм и подберу его параметры вручную зная ограничения и характеристики объекта.
@@sergeyrink3003 вы уже 2-ой или 3-ий раз изменяете сообщение и из одной строчки код уже потихонечку превращается в несколько :))).
ПЕРВЫЙ ВАРИАНТ у вас был такой:"" Это простой пропорциональный регулятор с ручным подбором и ограничением мощности ШИМ. ust = 38.0; //считаем ШИМ dt = ust-t0/10; //t0 - температура Shm = 22+(dt*40); if (Shm255) Shm=255; analogWrite(11, Shm);""...
Да это был обычный П регулятор с коэф. усиления 40. И безусловно у вас было приличное остаточное отклонение и вы его убирали добавкой 22. То есть когда у вас нулевое отклонение от задания, то выход ШИМ и был эти 22. Добавка эта будет постоянно разной в зависимости от внешних факторов и уставки, которую вы хотите поддерживать. Если эту банку в холодильник поставить, то всё "развалится". Это всё понятно.
ПОСЛЕДНИЙ вариант: ""int ust = 38.0; //считаем ШИМ
float dt = ust-t0; //t0 - температура
int PWM = 22+(dt*40);
// float integral += (float)dt * 0.5; PWM += integral; //инт. коэфф.
// PWM += (ht-t0)*10; //дифф. коэфф.
if (PWM255) PWM=255;
analogWrite(nagrev, PWM);
float ht = t0; ""...
Это что-то среднее между обычным регулятором и чем-то непонятным. Как-то работать будет, но шаг вправо или влево и опять всё "развалится".
Если вы уже пришли на это моё видео, то наверное хотите сделать обычный работающий ПИД-регулятор, который не зависит от внешних условий и изменения уставки. Так сделайте его и всё! :))) Вы 100% разберётесь. А если нет, то можете мой готовый взять (или какой-то иной).
@@dimalimite Вы наверно не понимаете сути проблемы. ПИД регулятор это только маленький инструмент, который еще нужно настроить и это очень сильно зависит от управляемого объекта. Если вы это понимаете то давайте объясните ИИ алгоритм автоматической настройки параметров регулятора независимо от объекта управления. :)))))
И я там ничего не изменил, I и D коэффициенты закомментированы и без них всё работает.
drive.google.com/file/d/1rQIXjpxf7mdbuFWWGRUIfEx4trUxMYNC/view?usp=sharing Метод автоматической настройки Кузищина В.Ф.
Но он подойдёт только для регуляторов стандартного вида.
Спасибо. Материал золото)
Спасибо!
Посмотрите статью PID without PhD. Все намного проще
Посмотрел. Спасибо.
Раз обьяснил, не поняли, второй раз обьяснил, не поняли, третий раз обьяснил, уже и сам понял, а они всеравно понять не могут.
Прошу прощения, конечно, но данная интерпретация ПИД регулятора - просто ужасна. Она только еще больше запутывает...
Это интерпретация видимо, по типу, старых регуляторов РП или чего-то похожего. Которые работают так, не потому что так надо, а потому что раньше по другому не могли сделать.
Сейчас контроллеры могут дать гораздо больше и гораздо понятнее и ближе к теории и по настройке проще.
Например зачем рассчитывать En - E(n-1) что будет по сути операцией дифференцирования, а затем выход Y(n-1) + dYn то есть операция интегрирования. Эти две операции противоположны... Не знаю кто и зачем так научил но это все равно что чесать нос ногой... То есть это типа, мы не можем посчитать дифференциал и интеграл напрямую поэтому будем считать через ....
Сейчас все составляющие ПИД можно посчитать в контроллере без всяких этих заморочек, с периодом хоть в 1 мс, плюс фильтрация и т.п.
Но за старания и попытку популяризации, и за весь канал - плюс, конечно.
День добрый, Федор!
Поделитесь информацией как сделано в контроллерах?
@@dimalimite Главное программа, а не тип контроллера. Суть в том что большинство современных контроллеров, по вычислительной мощности позволяют написать программу регулятора с периодом в 1мс и даже менее. И можно например использовать Z преобразование для расчета функции (формулы расчета) регулятора.
Но дело даже не в этом, вот у вас в алгоритме, например, расчет идет через dY дельту. То есть рассчитывается dX = E(n) - E(n-1) затем на его основе (за исключением интегральной части) рассчитывается dY.
А потом происходит обратный процесс Y(n) = Y(n-1) + dY
Зачем?
Получается вы пропорциональную и дифференциальную части сначала дифференцируете (дифференциальную два раза) а потом наоборот интегрируете. Зачем ?
Вы этим всех только путаете.
Не проще взять все как есть, пропорциональную как есть пропорциональную, дифференциальную как дифференциальную, и проинтегрировать только интегральную.
Тогда вы и отдельные составляющие сможете поглядеть, отдельно на графике.
А если вам нужен будет не ПИД регулятор, а например ПДД2 ? Как будете эту формулу переделывать ?
Кроме того, у вас время цикла Тс = 2 секунды, для регулятора температуры этого еще хватит, а для регулятора например разрежения ? Это уже будет много. Время реакции регулятора в 2 секунды это много.
Зачем, если можно сделать время цикла минимальным, и поставить фильтр. Обычный фильтр нижних частот даже с временем фильтра 2с все равно будет быстрее реагировать. Время реакции будет меньше чем в вашем случае.
В общем то все.
@@SitulaAqua
Напишите/снимите видео и т.д. и т.п. как делаете лично вы и всё будет ок :). Все будут счастливы :).
@@dimalimite Да, со стороны писать проще чем сделать свой канал :)
В этом я с вами согласен :)
Примите мои слова, пожалуйста, не как поучение, а скорее как повод присмотреться, подумать, как пожелание к совершенствованию...Тем более что регуляторы лишь часть вашей деятельности и полезной информации на нем.
Ваш канал, на мой взгляд весьма полезен и познавателен.
А в чём преимущество реализации, которую вы описываете?
Всеровно не понял
День добрый!
На бумаге сами пробовали посчитать?
@@dimalimite да пробывал малехо не въежаю в тему,видео супер лучшего объяснения мне не удалось найти,но пока для меня это трудно,я хочу сам термопрофили для пайки сделать вот и пришлось понять что такое ПИД.Буду еще раз смотреть видео
@@maximgribov6329 если как-то конкретнее сформулируете вопросы, то постараюсь ответить и как-то посодействовать :)
@@dimalimite смотрите мне нужно настроить rex c100 китайский выставляю температуру допустим 100град он пролетает эту температуру,пробывал по гистерезису выставить тоже каша получается,нашел инфу что нужно все выставить в 0 и по тихоньку поднимать p потом i далее d ну это метод тыка, неужели нельзя настроить этот контролер.Буду благодарен Вам если хоть что то подскажите как быть в моей ситуаций
@@dimalimite biathlonmordovia.ru/elektrodvigatel/calculation-and-synthesis-of-optimal-settings-for-the-regulators-feed-principle-of-operation/
Вот хороший урок ruclips.net/video/mYCVod84AME/видео.html
Спасибо за ссылку. Посмотрю!
@@dimalimite Я почти доделал свой терморегулятор и как оказалось самое главное правильное время между отсчетами поставить 0,5-1сек. Время похоже связано с инерционностью самого объекта регулирования. Где то видел 0,1 от периода колебаний. Есть, что то на этот счет?
@@sergeyrink3003 день добрый. Я бы не сказал что это главное. Оно (время) просто должно быть "адекватное". Мин возможное время цикла должно быть больше или равно цикла считывания показания с датчика обратной связи. Про 0.1 - это бывают пишут в инструкциях относительно времени хода исполнительного механизма (типо время привода 60 сек, значит цикл брать 6 секунд...в реальной жизни это многовато).
Если вы регулируете температуру, то 3 секунды оптимальное значение, т.к. быстрее она всё равно не изменяется (если мы говорим о теплотехнике, а не каком-нибудь жале паяльника). Для давления 2 сек и меньше, т.к. изменения давления быстрый процесс (если мы говорим о несжимаемых жидкостях).
@@dimalimite Спасибо. У меня пока не теплотехника, а "Инкубатор". Объем небольшой, буду пока ориентироваться на время прокачки воздуха вентилятором.