Может человек имел в виду ограничение накопления интегральной составляющей?
Вид для печати
Может человек имел в виду ограничение накопления интегральной составляющей?
Задал вопрос и исчез . Вот макрос который в менеджере ОЛ пусть возьмет и доработает под свою хотелку .
Я дорабатывал под себя ( вывел шаг дискретизации да ещё многое включил в него чтобы не плодить макросы)
https://owen.ru/forum/showthread.php...l=1#post294331
Интегральное насыщение(integral windup) представляет собой эффект, который наблюдается, когда ПИ - или ПИД-регулятор в течение длительного времени должен компенсировать ошибку, лежащую за пределами диапазона управляемой переменной.
По ссылке описаны и методы борьбы..
ну это как бы всем понятно, не понятно тогда другое, все эти манипуляции делаются внутри регулятора, а не прикручиваются снаружи. Если свой регулятор делается это одно, если хотелось чтоб представленные регуляторы обладали этим свойством так и обращаться надо к разработчикам и блока и макроса
спасибо большое, не думал что есть открытые макросы. это то что нужно.
Спасибо за уточнение. именно оно самое.
Все получилось. Просто отнял от ограничения мин. и макс. интегральной составляющей пропорциональную, таким образом на выходе всегда останется место для нее... вроде работает.
Всем спасибо.
друзья! подскажите, а есть у кого проект в котором встроенный ПИД правильно оформлен для работы с КЗР, управляемым 2 сигналами открыть/закрыть и автонастройкой?
а то что-то я в тупик зашел. есть система ГВС небольшого дома на основе пластинчатого теплообменника, где линия циркуляции имеет очень маленький расход, а привод стоит очень быстрый (полный ход 15с) плюс ко всему этому система имеет достаточно высокую инерцию - поле воздействия на реакцию температуры уходит от 3 до 7 секунд.
в итоге систему сильно "качает" и победить ее врукопашную стандартным ПИДом из ТРМ32 я никак не могу, кроме этого на ТРМке навернулось реле на канале отопления. туда повесил ПР200. вот думаю, смогу ли я силами ПР200 спати ситуацию.
в итоге регулятор у меня работает в практически чисто дифференциальном режиме, иначе размах еще больше. когда есть расход потребления ГВС, то сразу все становится хорошо (видно на графике) но как только остается одна циркуляция - начинается такая вот болтанка.
еще как минимум в запасе есть привод с временем полного хода 120 секунд.
Распространенной ошибкой при настройке ПИД-регулятора является чрезмерное уменьшение П-составляющей, чем делают из ПИД-регулятора ИД-регуятор, который практически не умеет успокаиваться. П-коэффициент должен быть порядка 10-20.. ну ни как не 0.1, если грубо. Все у вас получится с ПИД на ПР200.
А вообще действуйте строго по инструкции настройки ПИД, их очень много в интернете.
И попробуйте немного доработанный мной ПИД, прилагаю.
я пробовал так действовать, но из-за малого времени хода привода и большой инерционности реакции самой системы раскачка системы выходит еще больше. кроме этого раскачке способствует колебание температуры исходного теплоносителя, поскольку котлы в котельной атмосферники. колебание коллектора составляет 12 градусов. да и объем воды в системе циркуляции очень маленький, на соседнем доме с такими же (по типу) котлами, но не 2 подьезда а 7 колебания уставки гвс не превышают 2 градуса и это вообще с нулевой диффференциалкой. там систему качает синхронно с температурой коллектора, но со значительно меньшим разбросом.
этот пид я уже встречал на форуме, но мне была интересна его удачная связка с алгоритмом управления КЗР
Знакомая история. Так же воевал с ГВС с помощью ТРМ12, а потом ТРМ212. Мало того, что качало примерно так же, как на рисунке, так ещё и завышка по обратке шла агромадная, за что заказчика постоянно натягивали инспектора. Короче, победить удалось заменой КЗР ДУ80 на ДУ50 и да, с более медленным приводом. Короче, могу только посочувствовать. Сильно лучше, боюсь, даже силами ПР сделать не получится.
Вы используете ПИД-регулятор из ОЛ или из менеджера компонентов? У вас присутствует датчик положения ИМ? Короче, мне кажется, с помощью ПР можно сделать намного лучше чем на ТРМ, но ПР здесь не при чём, весь секрет в силе человеческого разума!
Попробуйте такой:
Вложение 51871
Для отопления использую модифицированный мною макрос пид из менеджера без пароля. Туда я добавил двухпозиционное управление с мертвой зоной без прекращения расчета пид. Вывел возможность изменять период пид и период следования управляющих импульсов извне. мертвая зона задается минимальным временем воздействия, но для задачи ГВС меня сомнения терзают. Потому тут и спросил. Обратной связи на приводе нет
Маааатушка роща! я открыл, озверел, ничего не понял и закрыл. я в этом файле вообще не понял что к чему и как это должно работать... умом видать я не вышел....
UPD: нет кое во что я вникнуть смог. надо еще пару подходов сделать. я так понял у вас это ПД регулятор, но я не совсем понял смысл переменных степень и полоса пропорциональной/дифференциальной составляющей, поскольку это не классическое решение. еще, если я правильно понял, то ограничения MAX_Длит_ и MIN_Длит_ выставляются сразу в миллисекундах и являются по сути "ограничением мощности ПИД" в классическом его представлении но раздельно для каждой из составляющих, или нет? но почему они не привязаны к периоду расчета пид? но опять же не понял, как ими оперировать.
да и вообще не совсем разобрался как настраивать этот регулятор.
UPD2: тут в одной из статей по пид регуляторам наткнулся на идею, что в дифференциальной компоненте желательно использовать не разность рассогласований а разность текущего (и соответственно) значения параметра. есть смысл попробовать?
Ну это я для попробывать первое что на ум пришло намалевал и я знаю как он работает поэтому и не привязал к периоду расчёта, а степень для точного позиционирования, чтобы при маленьком рассогласовании были короткие импульсы. а при большом - длинные импульсы управления. Это для подддержания уровня в паровом котле, это Вам не температуру поддерживать, здесь даже малейшая ошибка регулирования приведёт к увеличению или уменьшения уровня! Короче, со степенью меньше перерегулирует и меньше клапан шевелится туда-сюда и здесь нет проблемы, если Вам это не нужно - поставьте степень "1" и забудьте, что есть такой параметр(я "2" ставлю). По началу я не знал как он будет работать, было много планов и вариантов своих регуляторов, но попробывал и меня это вполне устроило. При продувке клапан полностью открывается меньше чем за минуту и точно позиционирует при малых рассогласованиях.
Для таких систем, нужен алгоритм с регулируемым временем квантования, встроенный в OL ПИД не очень наверное подойдет, лучше взять из менеджера компонентов, в нем можно задать период расчета, и это время выставить соизмеримым с быстродействием системы, бессмысленно считать и накапливать ошибку каждые 100 мс, если реакция от изменения заслонки произойдет через 30 секунд.
у меня так и сделано. я использовал распароленный макрос, вывел из него время периода расчета пид, но тут прикол в том, что я пытался его увеличивать, но это приводит еще большей нестабильности системы. я вроде бы осознал идею Сергея, и возможно именно квадратичная функция меня спасет! поскольку действительно мне надо значительно уменьшать воздействие при малых рассогласованиях!
Очевидно же что так, иначе при смене задания получится паразитное слагаемое. И усиливать дифференциал надо прилично, я усиливаю в 10 раз и на масштабатор 0...100%. Тогда нормально чувствует скорость. Рекомендую усреднять скорость на базе времени паузы, чтобы колебания на этом отрезке времени компенсировались. Вычислять скорость эффективно и без паразитных эффектов от фоновых колебаний- важная часть хорошего регулятора. Особенно это важно для регулятора уровня.
Там всё важно! Во-первых без мастерскады мне было бы очень проблематично даже узнать как работает регулятор! Вот посмотрите на первые две картинки:
Вложение 51947
Вложение 51948
видно что значение уровня плавает туда-сюда(колеблется), поэтому немного сильнее обработал этот сигнал и на последующих картинках эти колебания практически незаметны:
Вложение 51949
Вложение 51950
Плохо и переборщить со сглаживанием, тогда сигнал может сильно запаздывать, лучше динамически изменяемое сглаживание от скорости изменения параметра, этим можно достичь и быстрой реакции при резком изменении параметра и хорошее сглаживание при медленном и так по всем остальным пунктам, я уже называл некоторые: точное регулирование, компенсация люфта, износа клапана и т. д. и т. п. Вот ещё две картинки:
Вложение 51951
Вложение 51952
Короче, результаты превзошли мои ожидания, в хорошем плане и я не стал думать дальше, коль не думая и так нормально работает. А то, чует моё сердце, натворил бы делов, с других галактик гуманоиды вереницей летели бы опыт перенимать, ну это я так думаю! А с вашей температурой думаю подобный регулятор справится мизинцем левой руки!
С вашего позволения я поковырялся в вашем творении и выделил оттуда только то, что касается регулятора и воздействия на ИМ. желтыми комментариями отметил то, что добавил сам, зелеными, в чем вроде бы разобрался, красным - функционал который мне непонятен. прошу посмотреть мой/ваш проект и внести коррективы, если я где-то не прав.
Так же по своему разумению снабдил большинство переменных комментариями.
По красной зоне конечно у меня есть подозрения, что это блок не позволяющий допустить двух последовательных импульсов менее секунды, но я не понимаю его смысл. прошу рассказать. есть подозрение, что это костыль, привязанный к конкретному объекту.
еще у меня остался повисшим вопрос, если проп. и дифф. компоненты, допустим выдадут по 100% воздействия, то как отреагирует исполнительный механизм? просто переварит это как импульс воздействия длиной в весь период шим?
и еще если каждое следующее измерение, будет выдавать результат пид = 100% будет ли происходить кратковременное отключение выходного реле между импульсами или оно будет постоянно замкнуто?
В моём случае период следования импульсов не менее 20 секунд, меньше нет смысла не успевает пройти воздействие от преведущего импульса, а так, если импульсы наложатся, выключение выхода не произойдет, там TOF стоит и я использую ТТР и в ПР транзисторные выходы, чтобы навека и если какое К.З. и ТТР сгорят можно временно(пока новые покупают) и на релейные выходы ПР переключить, для этого использовать соответствующюю логику и пункт в меню для активации(чтобы в нормальном режиме реле не щёлкали) или использовать внешние реле.
А в этой программе разве период пид не жёстко связан с периодом следования? И правильно ли я понимаю, что по хорошему нужно после сложения проп. И дифф. Компонент поставить scale, чтобы независимо от результата на вход
таймера поступило число не более чем период ШИМ?
Эммм... Я всегда считал что результат расчета пид должен уложиться в период ШИм, тоесть должен быть к нему нормализован, а тут, если не ограничить "мощность" каждого из компонентов, то на выходе модем получить двойное время ШИМ. И тогд непонятно как должен отреагировать на такое рассчитанный результат пид, идущий следом? Он же по идее туда ещё добавит или нет?
Ну а востальном я правильно разобрался в вашем ПО?
Пришёл новый импульс на вход TOF, а его выход ещё активен, чего здесь не так? Наоборот лучше, реле лишний раз не выключится и тут же не включится и с новым импульсом TOF получит новое значение уставки, преведущее значение само исчезнет(заменится новым), не надо там ничего мудрить! и ничего там не куда не добавится, это TOF, а не робот Федя!
bayk, вы же выкладывали график температуры. это из овенклоуд вроде. добавьте туда ИМ, и покажите график, хотя бы 5 колебаний, только с наложенным ИМ. интересно глянуть.
И еще. если регулятор раскачивается - то виной этому только неправильная настройка. если вы в ручную открываете ИМ на какой-то уровень, и внешние факторы не раскачивают систему значит нечего тут думать - дело в настройке. За скорость ИМ не нужно переживать (ну, за то что она слишком быстрая) хотя бы потому что в промышленности везде используют пневматические позиционеры, у которых полный ход порядка пол секунды. и делают они тоже самое, держат температуру в инерционных системах.
И насчет слишком быстрого ИМ.. Сами подумайте, вы сетуете на то что ИМ слишком быстро выполняет ваши же команды) их всегда можно програмно замедлить, но, повторюсь - это неправильно.
Выложите, пожалуйста, график температуры и ИМ, там по сдвигу фаз между колебаниями ИМ и температуры можно много чего сказать. (только же не выход ШИМа, а процент ШИМа)
к сожалению на ИМ нет обратной связи. если бы была, то было бы значительно проще (по моему мнению)
в ближайшее время попробую запилить регулятор Сергея в ПРку и тогда смогу выводить любые нужные параметры. а пока этот график с ТРМ-32-RS там этот параметр недоступен.
но боюсь клауд ничего ценного не покажет. у него минимальный период опроса 15 секунд, а у ИМ время полного хода 15 сек. чуете чем пахнет? тут реально нужна скада с периодом опроса (и соответственно построения графика) хотя бы 1 секунда
создать группу регистров, например 15 и записывать туда кольцевым способом значения каждую секунду, а облако их прочтет один раз в 15 секунд в итоге ни чего не потеряется, график будет не понятный, но всплески и всё остальное будут видны
Я когда занимался настройкой ПИД, у меня наоборот, процесс был сильно быстрый, мне приходилось каждые 200мс точки строить, чтоб потом это анализировать https://www.youtube.com/watch?v=ZeFlmyemGxQ, на медленном процессе через AC4 можно в любую скаду закинуть точки. И еще, может попробовать настроить по Циглеру, без искусственных костылей в регуляторе, я так понимаю колебания наблюдаются в системе.
Да уже очень давно нельзя выставить меньше 15 секунд. А если и можно, но опрос все равно идёт раз в 15
кстати я запилил на ГВС ПРку но это не помогло исправить ситуацию. все так-же качает. (но регулятор сергея0308 еще не интегрировал, там классика)
если кому интересно, то я могу в личку написать логин/пароль от учетки лоджика с правом только просмотра и могу выложить текущий, залитый в контроллер проект, чтобы была возможность посмотреть какой именно регулятор используется.
на данный момент в облаке доступна температура и процентный выход ПИД
П.С. попробовал изменить время, но меньше 5 секунд сколько не ставь уже не ускоряется.
У Вас видимо талант по настройке ПИД-регуляторов, в обратном смысле этого слова!
Вы хотя бы добавьте внешнюю маленькую часть из моего проекта что не даёт перерегулировать даже при неправильной настройке ПИД-регулятора, когда направление изменения параметра изменяется на 180 градусов логика блокирует все последущие импульсы регулятора в этом направлении! Это увеличит время возвращения значения регулируемого параметра к уставке, но блокирует большое перерегулирование(менее 1 импульса при правильной настройке).
И я замечу что в моём случае не стоит вопрос с поддержанием параметром заданного значения(хотя на мой взгляд параметр для поддержания у меня сложнее), я специально делаю мёртвую зону, чтобы параметр поддерживался менее точно, за то исполнительный механизм реже "шевелится"! Вы такой задачи пока не ставите и у вас всё гуляет туда-сюда, мне кажется чтобы так сделать нужен талант.
я ПРку запилил туда чужими руками (напарник пересадил хвосты) несколько дней назад на ГВС. я реально очень старался его настроить. ваше ПО пока не зашивал, поскольку там еще не был с того раза. я очень надеюсь, что это даст результат.
вам Сергей0308 могу дать и полный доступ.
вырезал из того что сам пользую в плк, на объектах где обычный пид регулятор не держит температуру
Я просто не понял, зачем там на входе pv такая огородица, или это просто для теста?
Блин, а я верить не могу, откуда там синусы, почему ниоткуда переменная не вводится. Подскажите, а как лучше выход этого регулятора прикрутить к кзр с двухпозиционным управлением?
тут же не мало подобных тем,я тут не буду первооткрывателем
я работаю только с токовым выходом, поэтому если двухпозиционное регулирование это - Вложение 52038 то я бы на выходе регулятора поставил лимит от 0 до 100, чтоб получать проценты, взял бы из оскат блок TP_X, обозначил бы период, как задаваемый параметр, по истечении которого запускал бы tp_x каждый раз, а проценты времени от этого периода подавал бы на вышеупомянутый блок, получилось бы подобие шим
нет я не правильно выразился - трехпозиционное. один сигнал на вращение привода в плюс, другой в минус.