Форум программистов, компьютерный форум, киберфорум
АСУ ТП, промэлектроника
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.53/15: Рейтинг темы: голосов - 15, средняя оценка - 4.53
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
1

Каким должен быть ПИД?

14.10.2014, 17:37. Показов 2755. Ответов 29
Метки нет (Все метки)

Салют коллегам!

Хочу поднять одну из "бородатых", возможно, тем - каким должен быть ПИД-регулятор?

Ведь в теории-то все просто - сумма трех составляющих, зависящих от входного значения (ошибки) и временнОй составляющей -И и -Д частей. А что мы имеем в реалиях? Постараюсь выписать все что нужно (мне).

1) Ручное управление. Возможность переключаться и управлять выходной величиной уставкой. Да, это понятно, что мультиплексор, переключайся себе и "керуй", однако есть проблема с возвращением в автоматический режим. Ведь, даже если алгоритм ПИД-а хоть и остановлен, то все равно имеет ненулевые составляющие -и и -д частей, и не факт что мизерных. -и часть так вобще может быть существенной. И при переключения из ручного в авто мы снова получаем скачок.
Усложняя проблему, и предположив, что мы сбросим -и и -д части в момент переключения ПИД-а в автомат на выходе все равно появится "голая" П-часть, да еще и подкрепленная всплеском "Д" во всей красе. Как решать?

2) Ограничение управляющего воздействия. Оно-то понятно - цифра на выходе ПИД не виновата, что при выходах из параметров, или, как правило, запусках с нуля/остановки объекта мы получаем зашкалившие значения, например, процента открытия клапана в 300% (как управляющее воздействие). Но в момент ведь зашкала непонятно как "обрезать" составляющие. Общую сумму можно "урезать" до вменяемых, воспроизводимых величин, но в момент накопления ошибки "И" часть настолько выходит за вменяемые диапазоны, что регулятор может еще долго раскачиваться.

3) Ну, и регулирование "интегрирующим" звеном, когда органом управления является, например, задвижка. Да, в этом случае управляющим сигналом будет % ее открытия, и за ПИД нужна еще некая балансная схема для привода задвижки в нужное положение. В этом случае проблем еще больше, но такая проблема все равно решается "нетрадиционными методами". Проблема решаемая, хоть и не такая уж простая _на_практике_ как может показаться.

Так вот прошу совета! Как решаются подобные задачи в сделанных или обслуживаемых вами системах? Свое решение предложить можно, но не хочу наткнуться на изобретение велосипеда .
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.10.2014, 17:37
Ответы с готовыми решениями:

Каким должен быть класс точности вольтметра?
Добрый день. Помогите пожалуйста. Каким должен быть класс точности kv вольтметра с конечным...

Что должен уметь настоящий мужчина? Или каким он должен быть?
Девушки, вы часто задаетесь этим вопросом, и обычно ваши лозунги в данном направлении, мы мужская...

Каким должен быть файл и где он должен находиться?
Нашёл код, который берёт текстовый файл, читает его и выбирает слова, в которых есть такая же...

Каким должен быть угол?
Если на плоскости от одной точки отложить 3 вектора так, чтобы между любой парой векторов был один...

29
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
20.10.2014, 10:36  [ТС] 2
...забавно, прошла уже неделя, а трушные спецы отмолчались . Нешта не писал никто ничего подобного? Или ПИДы никто не использует?
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
21.10.2014, 07:33 3
1 в момент включения регулятор:
1.1 получает конечное задание и ударно воспринимает разницу между регулируемым параметром и заданием
1.2 идет от текущего значения к конечному заданию с заданной скоростью сглаживая "удар" от включения
1.3 балансируется - задание становится равным регулируемому параметру - "удара" от включения нет
2 при правильной настройке регулятор не должен вставать на ограничение. для аналоговых регуляторов (например преобразователей частоты или пневматических клапанов) ограничение может быть вполне осязаемое - выход этих регуляторов является заданием для позиционера - это фактически запрашиваемое у привода положение клапана - у них ограничение в пределе 0 - 100% но могут быть вариации на тему - например не более 10% в минуту. для импульсных регуляторов (например обычная арматура управляемая импульсами больше / меньше) ограничения на П/И/Д части и выход регулятора - абстрактные величины настраиваемые экспертным методом, хотя можно привязываться и к положению клапана. в любом случае ограничение нужно либо если оно физически существует либо если изменение позиции с более крутой динамикой приводит к раскачке процесса или его выходе за допустимые пределы / возникновению аварийных режимов и/или может возникать исключительно при нештатной работе (сбросе, срабатывании защит). видом ограничения является выведение задания из текущего значения к конечному с заданной скоростью.
3 у регулятора с задвижкой выходом не является процент открытия. остального не понял
0
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
21.10.2014, 11:08  [ТС] 4
vxg, очевидно, вы не поняли, что я там "понаписал", попробую чуть позже, с картинками.
Вопрос не в том, что можно плавно перейти от одного задания к другому. Самое тонкое место там - где нужно пересчитывать И и Д-части в момент запуска. Получается, что их нужно обнулять, но тем самым это приведет к плавному пуску в одном случае, и рывку - в другом.
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
21.10.2014, 15:20 5
Цитата Сообщение от Voland_ Посмотреть сообщение
где нужно пересчитывать И и Д-части в момент запуска
теория говорит нам о том что в момент запуска П/И/Д части должны обнуляться. все остальное - сюрприз
1
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
21.10.2014, 16:29  [ТС] 6
Цитата Сообщение от vxg Посмотреть сообщение
теория говорит нам о том что в момент запуска П/И/Д части должны обнуляться. все остальное - сюрприз
Ну в том жеж и дело, получается, если П-часть не нулевая, что само по себе вроде как очевидно (с т.з. той же теории), то при переходе из ручного в авто мы всегда будем получать ненужное возмущение. То есть просто переводите ПИД в ручное, и снова запускаете - система получит снова удар.
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
21.10.2014, 17:21 7
Цитата Сообщение от Voland_ Посмотреть сообщение
То есть просто переводите ПИД в ручное, и снова запускаете - система получит снова удар
если 10 раз за минуту снять и поставить регулятор на автомат конечно же он 10 раз сформирует максимальное воздействие в момент включения. но: 1 - явно это ненормальное обращение. 2 - если регулятор имеет самобаланс и в момент включения приравнивает задание к текущему значению регулируемого параметра удара не будет никогда.
1
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
21.10.2014, 17:51  [ТС] 8
Цитата Сообщение от vxg Посмотреть сообщение
2 - если регулятор имеет самобаланс и в момент включения приравнивает задание к текущему значению регулируемого параметра удара не будет никогда.
а.. то есть вы предлагаете сделать плавное изменение именно задания при старте, от текущего значения, к непосредственно, заданному?
Тогда и удар сменится на "легкое волнение"... Попробую, спасибо.

Добавлено через 7 минут
...сложность пока в голове не укладывается другая - тогда нужно считать и состояние регулирующего органа нулем при старте?

ЗЫ: для примера конкретная задача - есть система из ТЭНа, температуру которого нужно держать. Мощность ТЭНа регулируется от 0 до 100%. Температуру меряем и задаем.
Теперь вопрос:
Что считать в этом случае за нулевое воздействие? Ведь, выход ПИД (0, например) соответствует нижнему пределу возможностей регулирования, а не некой эмпирической серединой. Выходное значение ПИДа должно быть и отрицательным, в случае, если нам необходимо "уменьшать" воздействие.

Один вариант - можно взять 50% мощности ТЭНа за ноль. Но тогда ПИД, в установившемся состоянии, при включении с "ручного" в "авто" в любом случае перейдет в 50% на выходе...

Добавлено через 2 минуты
...получается, двигаться надо от текущего положения регулирующего органа (в данном случае - %мощности ТЭНа), но ведь юзер может вручную его подвинуть и сразу включить регулятор в "авто", не дождавшись результата. Тогда система вообще свихнется .
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
21.10.2014, 18:20 9
Цитата Сообщение от Voland_ Посмотреть сообщение
состояние регулирующего органа
аналоговые регуляторы как правило делаются таким образом что выход регулятора был равен мощности/частоте/положению/иному параметру который можно ПРАКТИЧЕСКИ МГНОВЕННО изменить при помощи того самого устройства которое получает выходной сигнал регулятора (ШИМ/преобразователь частоты/позиционер/иное). однако, вы не поверите, они вполне адекватно отрабатывают включение не от нулевой позиции прыгая ровно на столько на сколько нужно от текущей позиции в нужную сторону. волшебство) впрочем, вас же не удивляет, что они остаются в одном и том же положении когда процесс установится и ошибка будет равна нулю? для примера попробуйте при помощи вложенной программы поработать с обычным регулятором. понять почему это происходит для аналоговых регуляторов морально сложно. гораздо проще понять почему это происходит для импульсных регуляторов - у них пока есть отклонение идут импульсы в ту или иную сторону в количестве тем большем чем больше отклонение. при этом исходное положение не играет никакой роли - они прыгают от него в соответствующую сторону.
1
Вложения
Тип файла: rar pid_control_block.rar (381.2 Кб, 25 просмотров)
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
21.10.2014, 19:04  [ТС] 10
vxg, "на коленке" я набаловался ПИД-ами, а вот в реалиях оказалось, что не все так просто.
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
21.10.2014, 19:49 11
Цитата Сообщение от Voland_ Посмотреть сообщение
не все так просто
регулятор это алгоритм. если знать алгоритм что может быть сложным? а вот если не знать... и даже не знать людей которые могут его описать или книг где было бы внятно сказано об этом... в свое время самой большой сложностью которая встала на пути был способ преобразования выхода регулятора в импульсы... в модели до сих пор живет самостоятельно выдуманная правильная модель основанная на коэффициенте заполнения и реконструированная из широко применяемого в промышленности программного блока который тоже делали всего лишь люди. и та и та работает. только по разному) и это меня немного огорчает)
0
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
21.10.2014, 20:08  [ТС] 12
Цитата Сообщение от vxg Посмотреть сообщение
выдуманная правильная модель
модель не может быть "правильной", просто - рабочая .

Не по теме:

Я тоже делал выход ПИД импульсно, для управления задвижками. Но в их управлении сложность была в том, что за короткое время импульса задвижка могла и не сдвинуться, а за длинное - уехать куда не следовало бы, т.к. характеристика ее была сильно не линейной. Ну, и люфт не отменял никто (в систему участвовали рычаги). Так что приходилось биться с "перемоткой" люфта, когда система знала, что ей предстоит двигать задвижку в другую сторону.


Но это было давно, и делалось сугубо программными средствами.
Мне же интересно было видеть именно некий готовый блок, делающий то что мне нужно. Вот, нашел вроде бы блок "PID2" из ТМ6. Пробую.

ЗЫ: дело не сколько в алгоритме, сколько в его описании из теории. Есть же готовый способ - ПИД. Но теория (в книгах) не говорит о незавершенных процессах. В чистом виде мы постоянно говорим о возмущающем воздействии или изменении задания, предполагая, что система и ее регулятор находятся в установившемся состоянии.
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
21.10.2014, 20:32 13
Цитата Сообщение от Voland_ Посмотреть сообщение
модель не может быть "правильной", просто - рабочая
это религиозный вопрос. в свое время я долго ходил с плоскогубцами и по крупицам вытаскивал информацию из специалистов старой закалки по вопросу как аналоговый выход регулятора превращается в импульсы... все мои пытки были тщетными. я не услышал ответа на свой вопрос. изучение литературы давало либо зубодробительную заумь либо молчок и туман (как правило это были справочные материалы различных программных библиотек) либо пустые отмашки в виде общей фразы "импульсный регулятор ничем не отличается от аналогового просто задвижка в передаточной функции представляется как интегрирующее звено". в итоге на все это было свысока "положено" и "Создана" "Теория" в которой сделана попытка реально на пальцах без замалчивания и махания руками перейти от аналога к импульсам и которая кратко изложена в справке однако подозреваю что я либо все-таки что то там вывел не так либо что-то не так реализовали люди делавшие промышленный программный блок либо еще что то третье что могло бы объяснить отличия в работе регуляторов
по поводу PID2 - я не работал с ним, было бы забавно сравнить классику, действующий программный блок и мои измышления на тему с видением работы регулятора программистами Adastra.
Цитата Сообщение от Voland_ Посмотреть сообщение
Но теория (в книгах) не говорит о незавершенных процессах. В чистом виде мы постоянно говорим о возмущающем воздействии или изменении задания, предполагая, что система и ее регулятор находятся в установившемся состоянии.
не вижу здесь простора для мысли. ну динамика. и что?
1
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
21.10.2014, 21:00  [ТС] 14
Цитата Сообщение от vxg Посмотреть сообщение
не вижу здесь простора для мысли. ну динамика. и что?
не совсем динамика, а непредсказуемое действие юзера . Например, еще одна ситуация. После неких манипуляций юзер в ручном режиме выставляет текущее управляющее воздействие в "правильную" сторону, то есть в сторону уменьшения ошибки регулирования. И затем, наигравшись, жмет "авто". В итоге П-часть еще добавит к существующему управлению свою часть (И и Д части только усугубят). Соответственно, регулятор начнет раскачивание. Частично это чинится вашей идеей перехода от текущего к заданному - это даст возможность системе "уравняться". Иными словами - перейти к установившемуся значению. То есть когда регулируемая величина уже не движется от изменившегося управления.

Добавлено через 3 минуты
.. к слову, в PID2 регулирующая величина таки используется регулятором, как начальное состояние. В итоге, ПИД, как дифф.звено являет собой лишь приращение текущей управляющей величины, которая имеет вполне конкретное начальное значение.
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
21.10.2014, 21:30 15
Цитата Сообщение от Voland_ Посмотреть сообщение
В итоге П-часть еще добавит к существующему управлению свою часть (И и Д части только усугубят)
к какому существующему? к существующему положению органа? если на момент включения ошибка будет за пределами мертвой зоны, то конечно регулятор "добавит" и это (в общем случае когда процесс стабилизировался но при существующей позиции органа регулируемый параметр не достиг задания) - правильно. да и в случае динамики это тоже правильно ибо нормально настроенный регулятор будет стремиться максимально быстро сократить ошибку и уже в процессе регулирования по величине и темпу изменения ошибки скорректирует управляющее воздействие. он не усугубит. он просто приступит к регулированию с той ошибкой которая была на момент включения. И-часть в момент включения будет нулевой. П-часть не имеет "памяти". Д-часть в предельном случае так же не имеет "памяти". конечно если пользователь будет качать регулятор то он не железный - конечно его будет шатать - ведь фактически пользователь будет его всегда возмущать. хотя смотря что за пользователь. если опытный оператор выставит позицию органа вблизи той которая должна установиться в результате регулирования то включения регулятора будет минимальным или даже не потребуется (если параметр вошел в мертвую зону). ограничение темпа изменения задания это не панацея, не способ борьбы с психами, не Универсальный способ стабилизации процесса регулирования и подходит не для любого процесса - ограничение темпа изменения задания на самом деле в чем то похоже на ограничение выхода - мы просто искусственно ограничиваем динамику изменения выхода в пределе превращая регулятор в "утюг" (включить - выключить) - при правильном выборе органа, правильной настройке регулятора и отсутствии чисто технических ограничений в этом нет необходимости.
Цитата Сообщение от Voland_ Посмотреть сообщение
В итоге, ПИД, как дифф.звено являет собой лишь приращение текущей управляющей величины, которая имеет вполне конкретное начальное значение.
это я увы не понял. есть определенная терминология. регулируемый параметр. задание. выход регулятора (он же управляющее воздействие). телепатически предполагаю что вы хотите сказать что выход регулятора является приращением фактического управляющего воздействия. типа не
y = k i + dx / dt + int x dx
а
dy = k i + dx / dt + int x dx
во время метаний тоже была такая мысль но это все споры слепых о форме слона. чем все закончилось можно посмотреть в справке. в какой то степени там есть отголоски "чего-то такого" ибо коэффициент заполнения получается как производная выхода регулятора
0
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
21.10.2014, 21:54  [ТС] 16
vxg, то что вы пишете - это с точки зрения теории и передаточной функции звена объекта, как интегрирующего возмущающее воздействия. Я еще раз подчеркиваю - проследите как себя ведет звено ПИД в момент, когда текущее соответствует заданию - на выходе 0. Так ведь? В итоге, если выход ПИД соединить с управлением, например, закрыть клапан (ноль ведь?) или выключить ТЭН - система в общем случае будет стремиться ехать вниз. И держаться на своем месте будет благодаря только "И-" части регулятора.
Для правильной же связки алгоритма ПИД и управляющего воздействия необходимо некое интегрирующее звено, которое будет хранить управление на неком текущей уровне, даже когда алгоритм ПИД вывел управляющую величину к заданию и на его выходе ноль.

А ситуацию вы не поняли. Давайте в цифрах?
Исходная ситуация:
tзад = 30,
tтек = 50,
%мощн = 70%
регулирование - ручное.

Оператор, зная, что при где-то 50% мощности текущее станет 30 ставит регулятор(управляющее воздействие) на 50% и включает сразу автомат. Что должен делать регулятор? Ведь ошибка на момент старта составляет 20, текущая для него мощность - 50%. Регулятор выставит 30% мощности, дабавит в первый момент Д-часть и будет "доравнивать" И-частью ошибку, которая только начала уменьшаться. И так будет продолжаться до тех пор, пока величина не пересечет уставку...
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
21.10.2014, 22:20 17
Цитата Сообщение от Voland_ Посмотреть сообщение
Я еще раз подчеркиваю - проследите как себя ведет звено ПИД в момент, когда текущее соответствует заданию - на выходе 0. Так ведь? В итоге, если выход ПИД соединить с управлением, например, закрыть клапан (ноль ведь?) или выключить ТЭН - система в общем случае будет стремиться ехать вниз. И держаться на своем месте будет благодаря только "И-" части регулятора.
Для правильной же связки алгоритма ПИД и управляющего воздействия необходимо некое интегрирующее звено, которое будет хранить управление на неком текущей уровне, даже когда алгоритм ПИД вывел управляющую величину к заданию и на его выходе ноль.
то ли лыжи не едут то ли я чего то не понимаю. в первой части текста вы на мой взгляд правильно рассуждаете о том что ПИД-регулятор имеет в спокойном состоянии конкретное выходное значение за счет И-части, а во второй говорите что дескать он должен все равно сделать выходное значение нулевым и поэтому ему нужно прилепить какой-то интегратор сохраняющий установившееся выходное значение...
касательно мысленного эксперимента - регулятор отреагирует на ошибку так как будто она возникла при нулевом выходном воздействии, но реализован он должен быть так что бы стартовать с текущей позиции. это чисто вопрос реализации - приравнивать выходу текущую позицию когда регулятор не включен
1
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
21.10.2014, 22:44  [ТС] 18
Цитата Сообщение от vxg Посмотреть сообщение
ПИД-регулятор имеет в спокойном состоянии конкретное выходное значение за счет И-части
имеет, по факту. Но, с точки зрения теории - не должен. В последней есть описание и П и ПД регуляторов (те, которые без и- части), которые прекрасно работают и должны выводить регулируемую величину если не к заданной, то куда-то по-ближе к ней. Но не в ноль жеж?

Ну то есть регулятора при переходе из ручного в авто должен отработать П-частью, сбросив свои И- и Д- составляющие, начав их считать заново?
В тм6 есть некий "мягкий запуск", вот, хочу его поэкспериментить. Смущает, однако, то, что именно в этом ПИД2 нет ограничений по выходу. То есть И-часть будет "молотить" до бесконечности при отсутствии связи между регулируемой величиной и заданием. Хорошо, что есть сброс.
0
Модератор
3332 / 2116 / 343
Регистрация: 13.01.2012
Сообщений: 8,244
22.10.2014, 14:17 19
Лучший ответ Сообщение было отмечено Voland_ как решение

Решение

Цитата Сообщение от Voland_ Посмотреть сообщение
с точки зрения теории - не должен
теория вообще рассматривает только единичный скачек от нуля.
Цитата Сообщение от Voland_ Посмотреть сообщение
до бесконечности
по поводу счета заново. да, все должно начать считать заново, но как бы от текущей позиции) влепите импульсный регулятор, там таких чудес нет) я понимаю о чем вы и рассматривая все это дело под таким углом действительно так и хочется влепить интегратор к выходу регулятора и снимать позицию уже с этого интегратора
1
1926 / 1241 / 124
Регистрация: 04.01.2010
Сообщений: 4,447
22.10.2014, 21:54  [ТС] 20
Цитата Сообщение от vxg Посмотреть сообщение
так и хочется влепить интегратор к выходу регулятора
ну в своих задумках (демках) я так и делал - интегратор с ограничителем, потому что иначе ПИД работает неправильно. В общем, оставил пока что ПИД2. Испытания покажут .
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2014, 21:54

Каким должен быть хороший сателлит?..
Я, конечно, понимаю, что у всех разные представления о "хорошести" сателлита, но все же. ...

Каким должен быть идеальный инсталлятор?
Собственно каким должен быть идеальный инсталлятор по вашему мнению?...

Каким должен быть графический интерфейс?
Я человек системного толка, и вопросы у меня соответствующие... :) Интересует мнение людей, что...

Каким должен быть радиус шара?
Коническая воронка, радиус основания которой R, а высота H, наполнена водой. В воронку опущен...

Каким должен быть Яндекс бар для оптимизатора?
В одной из предыдущих статей была затронута мысль о том, кому именно нужен Яндекс бар от...

Алгоритм Краскала, каким должен быть ввод данных?
Есть код, только не могу понять, что должно появиться в окне вывода, или что нужно туда вводить....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.