Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Автоматическое регулирование
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Математика и Физика
Страницы: 1, 2
Destr
Уважаемые специалисты, помогите пожалуйста начинающему освоить автоматическое регулирование.
Вопрос заключается в следующем:
Имеется емкость, в которой необходимо поддерживать заданный уровень жидкости.Через одну трубу жидкость поступает в емкость, ее поток не регулируется. Через другую жидкость сливается, регулируется двигателем, который управляется преобразователем частоты. Частота преобразователя задается через контроллер, путем задания целого значения от 1 до 32768. Так вот мне не понятно как связать это значение, задающее работу преобразователя, со значением управляющего воздействия, получаемого из формулы ПИД регулирования.
Очень надеюсь на вашу помощь по такому дилетантскому вопросу.
LordN
ключевое слово - нормировка
надо привести выход к безразмерной величине изменяемой от нуля до единицы и почитать пару лекций по ТАУ.
Destr
Цитата(LordN @ Aug 29 2006, 23:18) *
ключевое слово - нормировка
надо привести выход к безразмерной величине изменяемой от нуля до единицы и почитать пару лекций по ТАУ.


А Вы не могли бы немного поподробней объяснить, или дать ссылку где рассматривается этот вопрос.
LordN
лекции по ТАУ
небольшой список литературы

вот эти темы полистайте:
http://www.abok.ru/ibforum/index.php?showt...l=ПИД-регулятор
http://www.abok.ru/ibforum/index.php?showt...l=ПИД-регулятор
http://www.abok.ru/ibforum/index.php?showt...l=ПИД-регулятор
http://www.abok.ru/ibforum/index.php?showt...l=ПИД-регулятор

поподробней...
для простоты рассмотрим П-регулятор:

U = 1/Zp * Error, его запись где,

Zp - зона пропорциональности, размерность такая же как и у Error.
Error = X.set - X.val,
X.set - уставка
X.val - текущее значение рег.параметра.
U - выход. меняетеся от нуля до единицы.

для перехода к значениям
Цитата
задания целого значения от 1 до 32768
надо всего-то U умножить на 32768
Destr
Зона пропорциональности - это коэффициент пропорциональности ?

Цитата
для перехода к значениям надо всего-то U умножить на 32768

Тогда получается, что если нет рассогласования то частота работы преобразователя будет минимальной (0*32768=0), т.е. жидкость сливаться не будет, но за счет поступающей жидкости появляется рассогласование и частотник начинает работать. И так непрерывно частотный преобразователь будет то отключать, то включать на некоторое значение двигатель, когда появится рассогласование, а оно будет появляться постоянно так как жидкость поступает.
Просто раньше я думал что по пид закону рассчитывается значение НА которое частотный преобразователь должен изменить свою частоту для регулирования уровня. А получается что преобразователь будет работать только тогда когда есть рассогласование ?
LordN
Цитата
Тогда получается, что если нет рассогласования то частота работы преобразователя будет минимальной (0*32768=0),
да, правильно. но я ж писал, П-регулятор взят только для простоты понимания что к чему нормировать...
вы по ссылкам хорошо почитали? там есть почти все и все разжевано по самое не могу.
Цитата
Зона пропорциональности - это коэффициент пропорциональности ?
Zp - величина обратная коэфф-у усиления. Zp = 1/Kp
AlterPferd
Цитата(LordN @ Aug 30 2006, 12:14) *
Цитата
Тогда получается, что если нет рассогласования то частота работы преобразователя будет минимальной (0*32768=0),
да, правильно. но я ж писал, П-регулятор взят только для простоты понимания что к чему нормировать...
вы по ссылкам хорошо почитали? там есть почти все и все разжевано по самое не могу.
Цитата
Зона пропорциональности - это коэффициент пропорциональности ?
Zp - величина обратная коэфф-у усиления. Zp = 1/Kp

неча ссылаться на к-то драный курс по теории регулирования, ПИД ом здесь и не пахнет
загнем пальцы
1. Сигналом ошибки будет отклонение от номинального уровня
2. отработка= производительность насоса, в сумме с притоком даст скорость изменения уровня
3. все вместе- система первого порядка устойчивая даже в Африке
в идеале к измерителю уровня надо дать смещение пропорциональное входному притоку, а можно не давать. сигнал ошибки обратно пропорционален к-ту усиления и ничего нормировать не надо
Destr
По ссылкам на форумы я перечитал все. Но именно про нормирование и про то как воздействовать на управляющую величину значением пид регулирования я не нашел.

Цитата
П-регулятор взят только для простоты понимания что к чему нормировать...

То есть необходима еще интегральная составляющая ?

И еще как подобрать коэффициенты так чтобы выход менялся от 0 до 1 ? Ведь рассогласование может быть как отрицательной, так и положительной величиной.
LordN
Цитата
И еще как подобрать коэффициенты так чтобы выход менялся от 0 до 1
ограничения задаются ограничителем.
Цитата
Ведь рассогласование может быть как отрицательной, так и положительной величиной.
ошибка - да. выход - нет.
Цитата
Но именно про нормирование и про то как воздействовать на управляющую величину значением пид регулирования я не нашел.
просто это азы и про них обычно не говорят, потому как считают что они известны заранее.
Цитата
То есть необходима еще интегральная составляющая ?
чтоб при нулевой ошибке выход не был равен нулю - да.
если необходимо опережение, то придётся добавлять и Д-.
Destr
Цитата
ограничения задаются ограничителем.

unsure.gif ? Наверно просто условие поставить что если выходное значение отрицательное тогда за 0 считать ?
Destr
И если не трудно объясните пожалуйста как нормировать. И почему обязательно к выходным значениям от 0 до 1, может в моем случае сразу к значению от 1 до 32768 и подавать на частотник ?
LordN
Цитата
Наверно просто условие поставить что если выходное значение отрицательное тогда за 0 считать ?
ну естессна.
Код
if(u < 0.0) u = 0.0;
else if(u > 1.0) u = 1.0;
точно такой же, вернее похожий, ограничитель потребуется для интеграла.
Код
if(I < 0.0)I = 0.0;
else if(I > Zp) I = Zp;


запись для ПИДа использую примерно такую:

Код
I += (error * Tquant / Tint);  // или I += (error + oldError) * Tquant / (2 * Tint); первый - метод прямоугольников, второй - метод трапеций.
if(I < 0.0) I = 0.0;
else if(I > Zp) I = Zp;
D = (error - oldError) * Tdiff / Tquant;
u = (error + I + D) / Zp;
oldError = error;
if(u < 0.0) u = 0.0;
else if(u > 1.0) u = 1.0;
далее передаем u на исполнение
Tint - интегральная, Tdiff - дифференциальная постоянные времени
Destr
Цитата
И если не трудно объясните пожалуйста как нормировать. И почему обязательно к выходным значениям от 0 до 1, может в моем случае сразу к значению от 1 до 32768 и подавать на частотник ?


Вот это подскажите пожалуйста еще по поводу нормирования
LordN
Цитата
Вот это подскажите пожалуйста еще по поводу нормирования
что ж тут еще подсказывать? я ж уже написал код, там все нормировки уже есть, разве что вот -
Цитата
далее передаем u на исполнение
исполнение выглядит так:
out = u * 32768; // выход управления двигателем
здесь u и есть нормированный выход.
Destr
Цитата
я ж уже написал код, там все нормировки уже есть

А ясно, значит нормировки и ограничители это одно и тоже.

Спасибо большое вам за ответы, вы мне уже очень помогли. Но у меня есть еще один вопрос касательно регулирования:

Потоком жидкости необходимо управлять шаровым краном, который управляется двумя дискретными сигналами, один-открывать, другой-закрывать. Открывается и закрывается он с одной скоростью. Время от закрытого состояния до полностью открытого - примерно 20 сек. Кран посылает аналоговое значение на контроллер о степени открытия. Так вот как регулировать в таком случае ?
LordN
Цитата
Потоком жидкости необходимо управлять шаровым краном, который управляется двумя дискретными сигналами, один-открывать, другой-закрывать
это называется трехпозиционное регулирование. для него И-часть не нужна. привод сам выполнит накопление ошибки. потребуются только П- или ПД- части.
управлять приводом просто.
имеется сигнал от регулятора.
имеется сигнал положения заслонки обратной связи.
сравниваем их и выбираем - открывать или закрывать. тупой компаратор.
можно усложнить слегка - вычислять разность и взависимости от неё подавать сверхнизкочастотный ШИМ на управление приводом, т.о. можно управлять скоростью привода для более точной подстройки.

Цитата
А ясно, значит нормировки и ограничители это одно и тоже.
вы путаете причину и следствие. нормировка это не ограничение. ограничение - одно из следствий нормирования, и неболее.
Destr
Ну пока ясно. Благодарю вас за помощь. Думаю вопросы еще появятся когда на практике начнем все это делать. В первый раз просто ...
Oldring
Вставьте в емкость сливную трубку на нужной высоте - получите простейший автоматический регулятор. ПИД в данной задаче при некотором отсутствии везения или рассчета пойдет в разнос.
Oldring
P.S. Есть четыре пути:

1. Прочитать литературу самому, понять смысл и рассчитать контур регулирования.
2. Нанять специалиста, который когда-то прочитал литературу, понял смысл и может рассчитать контур регулирования.
3. Нанять неглупого студента, который прочтет литературу, поймет смысл и рассчитает.
4. Реализовывать методом проб и ошибок. Весьма вероятно, что приемлемо регулировать очень грубо, при этом, если кран будет постоянно дергаться между крайними положениями - это не страшно, да и потребитель будет рад тому что есть и ничего не заметит.
Destr
Цитата
Прочитать литературу самому, понять смысл и рассчитать контур регулирования.


А вы не могли бы поделиться со мной такой литературой, где описано как рассчитать контур, или дать ссылочку. Может у меня получится разобраться и не придется подбирать коэффициенты методом
проб и ошибок.
LordN
Цитата
1. Прочитать литературу самому, понять смысл и рассчитать контур регулирования.
прежде чем читать и считать надо хотя бы один раз попытаться сделать и настроить.
NickNich
Эххх, давно не брал я в руки шашку.....

Несмотря на кужущуюся простоту, при минимальном требовании "плавности регулирования", система у Вас получается довольно сложной для проектирования, т.е. содержит существенную нелинейность в виде двустороннего нестационарного ограничения по управляющему воздействию на объектрегулирования под названием "бак". Если входной поток, заполняющий бак, обозначить как V, а поток откачиваемый насосом обозначить как Kн*u (предполагается, что насос линейно отрабатывает управляющее воздействие u>=0), то скорость изменения уровня в баке будет:

dLout/dt = V-Kн*u.
Lout - уровень в баке; Кн - коэффициент пересчета числа от 0 до 32768 в производительность насоса.

Двустороннесть ограничения здесь - при u=0 скорость заполнения не может быть больше V, а при u=max скорость слива не может быть быстрее V-Kн*u_max. Нестационарность - в Ваших условиях нет информации о скорости V, поэтому, на этапе проектирования она должна предполагаться неизвестной и нестационарной (как правило - медленно меняющейся). Дополнительная сложность - насос работает только на слив, поэтому нужно специльно отрабатывать знак ошибки:

Err = Lset-Lout
Lset - задающее воздейсвтие.

Поясню - положительная ошибка говорит о необходимости уменьшения скорости слива, или вообще его прекращения, а отрицательная - наоборот о необходимости увеличения скорости слива. Но насос работает только на слив и воспринимает только положительные значения - Т.е. знак ошибки нужно, как минимум, инвертировать.

Еще одна сложность - дискретность датчика уровня. Исполнитель у Вас 15-ти разрядный. Датчик уровня, скорее всего будет выдавать значительно грубее. Может так получиться, что система регулирования, в стационарном состоянии, бутет качаться вблизи установившегося значения на +/-1 разряд этого датчика. Такое явление называется "предельный цикл низкого уровня".

Простейший алгоритм поддержания заданного уровня здесь самоочевиден. Если DLout - один дискрет датчика уровня, то:

при Err > DLout устанавливается u=0
при Err < -DLout устанавливается u=u_max
где u_max - такое значение от 0 до 32768, что Kн*u_max заведомо больше максимально возможной скорости заполнения бака Vmax.



Если выставлено упомянутое требование "плавности регулировки", то Вам необходимо подобрать такое u0, при котором обеспечивается два равенства для текущего значения V0 (V0 неизвестно и медленно меняется):

V0-Kн*u0 = 0
Err = 0.

Точно удовлетворить эти равенства не получится в силу дискретности датчика уровня. Вот здесь и может появиться уже упомянутый "предельный цикл низкого уровня" - это характерное свойство
всех цифровых систем регулирования по ошибке с малой разрядностью датчика. Но приближенно - нужно пытаться. Простейший вариант замкнутого контура регулирования
предложил AlterPferd (Вам нужно было более детально раскрутить его на идеи) - замкнуть контур через усилительное звено с коэффициентом передачи -Kп (!!!знак "минус" - для инвертирования сигнала ошибки!!!), а неизвестную скорость заполнения V0 рассматривать как мешающее воздействие. В этом случае управляющее воздействие на насос:

u = -Кп*Err = -Кп*(Lset-Lout)
u = 0, если u<0

а удержание уровня будет выполнено со статической ошибкой, которая может быть оценена как

Err = tau*V0, где tau = 1/(Кп*Кн).

Выбором Kп достаточно большим можно свести эту ошибку до приемлемой величины для всех возможных скоростей заполнения бака. Если каким-то образом удалось получить V0, то можно вычесть эту ошибку, сформировав управляющее воздействие по правилу:

u = -Кп*Err + V0/Kн
u = 0, если u<0.

Специально нормировать здесь ничего не нужно. Но необходимо согласовать размерность задающего воздействия (Lset), показаний датчика уровня (Lout) и диапазон допустимых входных значений исполнительного звена (насоса).




Включение интегратора с коэффициентом усиления Ки паралельно усилительному звену (это называется "изодромная коррекция" - рекомендую погуглить) теоретически может свести статическую ошибку от мешающего воздействия V0 до нуля. Управляющее воздействие здесь формируется в виде (!!! знак ошибки инвертирован !!!):

Int(i) = Int(i-1) - Err
u(i) = -Кп*Err(i) + Ки*Int(i)
u = 0, если u<0.

Однако, наличие ограничения на управляющее воздействие вида u = 0, если u>0 тянет за собой явление, которое в англицкой литературе называется wind-up (не знаю как по русски, но рекомендую погуглить). Это явление удлинняет переходный процесс за счет появления затухающих колебаний вокруг установившегося значения (этих колебаний не будет, если снять ограничение). Борются с wind-up по разному. Простейший способ - отключение входа интегратора (т.е. принудительная подача на него нулевого значения) в момент выполнения
условия u<0, т.е.:

Int1 = Int(i-1) - Err
u(i) = -Кп*Err(i) + Ки*Int1
если u(i)<0 то u = 0, Int(i) = Int(i-1).

Коэфициенты Ки и Кп лучше выбирать так, чтобы корни s = 0.5*(-Кп +/- sqrt(Кп^2-4*Ки)) характеристического уравнения были отрицательными и действительными - это обеспечит систмеме устойчивость и малую колебательность (колебания, вызванные совместным действием ограничения u = 0, если u<0 - это отдельная песня для нелинейных систем авторегулирования smile.gif). Специально нормировать здесь тоже не нужно.


Все, что написано выше может оказаться абсолютно неприменимым к Вашему случаю. Но именно с этого я бы начал проектирование системы, при заданных Вами условиях. Далее полезут более тонкие и труднопробиваемые моменты - насос может оказаться нелинейным отосительно управляющего воздействия, у насоса может появиться запаздывание, начнут сказываться какие-нить люфты и силы трения в приводах и т.д.....
Oldring
Цитата(Destr @ Sep 2 2006, 18:07) *
Цитата

Прочитать литературу самому, понять смысл и рассчитать контур регулирования.

А вы не могли бы поделиться со мной такой литературой, где описано как рассчитать контур, или дать ссылочку. Может у меня получится разобраться и не придется подбирать коэффициенты методом
проб и ошибок.


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

Из книг, которые недавно издавались в бумажном виде на русском языке - есть например "Проектирование систем управления, Г.К. Гудвин и др., Москва, БИНОМ Лаборатория знаний, 2004". Правда встречаются ошибки в формулах, очевидно, внесенные при переводе, ошибки легко обнаруживаются и устраняются при внимательном чтении. Это базовый курс для студентов, а не специальная литература, но его должно быть достаточно для решения подобный задач. Есть более простые и классические курсы.

И поставьте себе Матлаб - в Симулинке модели подобных систем рисуются несложно, и все очень наглядно.
Shurmas
я б посоветовал почитать дедушку Боба

http://www.elecdesign.com/Articles/Print.cfm?ArticleID=4915

желательно все 6 статей.
Oldring
Цитата(NickNich @ Sep 10 2006, 17:00) *
Эххх, давно не брал я в руки шашку.....

...



Вы решили поиздеваться над бедным человеком?
Начнем с того, что задача уже давно изменилась - теперь речь идет не о ШИМ регуляторе для двигателя, а о выпускном клапане с дискретной скоростью изменения положения. Про линейность выходного потока говорить тоже сложно. Кроме того, вряд-ли стоит рассматривать как штатный режим описанные ограничения опустошения или переполнения бака - их нужно только проверить и скорее всего нужно чтобы система вела себя предсказуемо в аварийных случаях и при запуске. Ну и стационарность входного потока тут к чему, если известны пределы по впуску и нужно держать стабильным уровень в баке с некоторой заранее определенной точностью при всех возможных входных потоках в пределах ограничений? Мне кажется, Вы слишком переусложняете, при том, что главная сложность - все-таки непонятный очень нелинейный выпуск.

Цитата(Shurmas @ Sep 10 2006, 17:46) *
я б посоветовал почитать дедушку Боба

http://www.elecdesign.com/Articles/Print.cfm?ArticleID=4915

желательно все 6 статей.


Хм... Нечеткая логика без предварительного понимания возможностей линейных регуляторов - это странно. С другой стороны - а вдруг?
NickNich
Цитата(Oldring @ Sep 10 2006, 18:09) *
Вы решили поиздеваться над бедным человеком?

Нет, просто вернулся из отпуска, а тут такая тема закрылась, без моего участия...

Цитата(Oldring @ Sep 10 2006, 18:09) *
Начнем с того, что задача уже давно изменилась

Как я понял из предыдущего обсуждения - это либо две разные задачи, либо два альтернативных подхода к решению одной задачи. Но никак не замена одной задачи другой.

Цитата(Oldring @ Sep 10 2006, 18:09) *
Ну и стационарность входного потока тут к чему, если известны пределы по впуску и нужно держать стабильным уровень в баке с некоторой заранее определенной точностью при всех возможных входных потоках в пределах ограничений?

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

Цитата(Oldring @ Sep 10 2006, 18:09) *
Мне кажется, Вы слишком переусложняете

Нет, не переусложняю. Просто поддержать любой, произвольно заданный уровень в баке при описанных условиях - действительно сложная задача. Врезка отводной трубки - это ожесткое ограничение поддерживаемого уровня, и, при заданных условиях, может применяться исключительно как аварийная мера, чтобы бак не перелился. Как в ванне или сливном бачке smile.gif.

Цитата(Oldring @ Sep 10 2006, 18:09) *
при том, что главная сложность - все-таки непонятный очень нелинейный выпуск.

Вот и я о том же. То, что я написал выше - позволяет начать строить устойчивый регулятор, который обеспечит "какую-то" работоспособность замкнутого контура. А вот чтобы этот контур работал "как надо" - тут придется выгребать и нелинейность исполнителя, и его запаздывания (а это неслабый удап по устойчивости всей системы) и т.д. по списку. Датчик уровня (точнее его разрядность) тут тоже будет одним из критических звеньев. Это я не могу забыть пятиметровую алюминиевую трубку, через каждые 10 см на которой была накручена катушка из МГТФ. А на трубку надевался кольцевой поплавок с кольцевым магнитом...

Цитата(Oldring @ Sep 10 2006, 18:09) *
Цитата(Shurmas @ Sep 10 2006, 17:46) *

я б посоветовал почитать дедушку Боба

http://www.elecdesign.com/Articles/Print.cfm?ArticleID=4915

желательно все 6 статей.


Хм... Нечеткая логика без предварительного понимания возможностей линейных регуляторов - это странно. С другой стороны - а вдруг?

Здесь согласен. Залача вполне решаема методами классической ТАУ. Привлечение всяких модных штучек, когда автор темы слабо понимает азы - совершенно никчему.

Цитата(Oldring @ Sep 10 2006, 17:29) *
Проще всего прийти в хороший книжный, найти соответсвующий раздел и подобрать под себя какой-нибудь переводной буржуйский учебник. Для проектирования подобный систем должно быть достаточно.


Две недели назад видел в арбат-книге последнее издание Бесекерского "Теория систем автоматического управления". Это классический учебник по ТАУ старой советской школы. Переводные буржуйские авторы, а это как правило Ph.D из провининциальный американских университетов (по крайней мере то, что я видет из печатных книг в московских магазинах) - тихо курят в сторонке.

Бесекерского можно заказать в Озоне.
Shurmas
Цитата(Oldring @ Sep 10 2006, 18:09) *
Цитата(Shurmas @ Sep 10 2006, 17:46) *

я б посоветовал почитать дедушку Боба

http://www.elecdesign.com/Articles/Print.cfm?ArticleID=4915

желательно все 6 статей.


Хм... Нечеткая логика без предварительного понимания возможностей линейных регуляторов - это странно. С другой стороны - а вдруг?



я советовал не название почитать а СТАТЬИ ! Тоесть содержание.
Там именно про ПИД регулирование речь идет.

Цитата(NickNich @ Sep 10 2006, 20:48) *
Здесь согласен. Залача вполне решаема методами классической ТАУ. Привлечение всяких модных штучек, когда автор темы слабо понимает азы - совершенно никчему.


И всеже лучше прочитать о чем речь и потом говорить!

Ведь в этих статьях и говорится о сомнении в фази и о
простоте решения конкретных задач "нормальным" ПИД.
Oldring
Цитата(NickNich @ Sep 10 2006, 20:48) *
Цитата(Oldring @ Sep 10 2006, 18:09) *

Мне кажется, Вы слишком переусложняете

Нет, не переусложняю. Просто поддержать любой, произвольно заданный уровень в баке при описанных условиях - действительно сложная задача. Врезка отводной трубки - это ожесткое ограничение поддерживаемого уровня, и, при заданных условиях, может применяться исключительно как аварийная мера, чтобы бак не перелился. Как в ванне или сливном бачке smile.gif.

Если произвольный уровень - то возможно. В любом случае, вряд-ли удастся нормально работать в районе уровня в несколько миллиметров. Что человеку нужно - точно неизвестно. Думаю, нужно либо поддерживать фиксированный уровень, либо работать в некотором диапазоне вблизи середины заполнения бака. Я совершенно не настаиваю, что фиксированная сливная труба может решить все возможные варианты задачи - я её написал как пример ТРИВИАЛЬНОГО решения НЕКОТОРЫХ вариантов задачи smile.gif Фиксированная сливная труба - это ведь тоже такой автоматический регулятор.

Цитата(NickNich @ Sep 10 2006, 20:48) *
Две недели назад видел в арбат-книге последнее издание Бесекерского "Теория систем автоматического управления". Это классический учебник по ТАУ старой советской школы. Переводные буржуйские авторы, а это как правило Ph.D из провининциальный американских университетов (по крайней мере то, что я видет из печатных книг в московских магазинах) - тихо курят в сторонке.


Некоторые советские учебники грешат тем, что начинают с критерия Ляпунова smile.gif и потом сводят к частным случаям. Не помню какой - видел когда-то в книжном. Не думаю что это хороший метод преподавания. На эту классику обращу внимание специально, спасибо. С советскими учебниками одно плохо: они писались еще до массового распространения цифрового управления и до появления Матлаба, поэтому не описывают современные методы проектирования, или упоминают их скользь. В конце концов, перехватывать ракеты большинству из нас редко приходится - а для решения большинства технологических задач скорее нужно интуитивное понимание типичных случаев и некоторая математическая основа. Кроме того, существует большая разница между монографией и учебником - поэтому часто PhD может написать базовый учебник лучше. Но, возможно, ознакомившись с советской классикой я и изменю свое мнение smile.gif


Цитата(NickNich @ Sep 10 2006, 17:00) *
Int(i) = Int(i-1) - Err
u(i) = -Кп*Err(i) + Ки*Int(i)
u = 0, если u<0.


И, кстати, Вы не забыли, что сама характеристика бака обладает полюсом в нуле - в приближении независимости выходного потока от уровня в баке glare.gif? Я не хочу сказать, что регулятор с интегрирующим звеном здесь совершенно неприменим - но обязательно вылезут побочные эффекты, вроде неустранимого перерегулирования. Это может оказаться и не совсем допустимым - если рассматривать общую постановку задачи. Или схема возбудится - особенно учитывая характеристику управления выпускного клапана. Чем хороша фиксированная сливная труба: она не содержит интегрирующего звена и у нее минимальные задержки реакции. В результате крайне редко можно наблюдать её возбуждение biggrin.gif
NickNich
Цитата(Oldring @ Sep 10 2006, 21:52) *
Некоторые советские учебники грешат тем, что начинают с критерия Ляпунова smile.gif и потом сводят к частным случаям.

Дык, учебники разные бывают. Хорошие учебники, доступные пониманию широкой аудитории, всегда на слуху. Возможно, приведенный Вами пример был предназначен для аспирантов и научных работников, специализирующихся в соответствующей области. На первой странице советских технических книг обычно писали, для кого книга предназначена.

Цитата(Oldring @ Sep 10 2006, 21:52) *
На эту классику обращу внимание специально, спасибо. С советскими учебниками одно плохо: они писались еще до массового распространения цифрового управления

Сразу видно человека, изучавшего ТАУ самостоятельно,а не в рамках инстутутских учебных планов smile.gif.
Вы удивитесь, но массовое распространение цифровых систем управления началось в конце шеститедсятых. А в середине 70-х они уже никого не удивляли. Ессно, применялись эти системы там, где допускалось размещение цифровых регуляторов, собранных на дискретной логике. В упомянутой мною книге есть обзор основ построения дисретно-временных, импульсных, цифровых регуляторов, и регуляторов, содержащих в своем составе ЦВМ. Щас у меня под рукой распечатка скана книги "Цифровые автоматические системы" того же автора, изданной в 1976-м году. На работе видел толстенный переводной фолиант "Теория цифровых систем автоматического управления", изданный в 1969-м году (значит в штатах эта книга появилась на пару лет раньше). Советская цензура тогда очень хорошо сыграла - переводились только очень хорошие научно-технические книги во всех областях знаний. Сейчас переводятся и издаются интеллектуальные помои. Матлаб здесь - это просто удобный современный инструмент для проектирования систем. К методам цифрового упрваления он отношения не имеет.

Цитата(Oldring @ Sep 10 2006, 21:52) *
для решения большинства технологических задач скорее нужно интуитивное понимание типичных случаев и некоторая математическая основа.

Правильно. Для обретения такого понимания и нужно читать серьезные книги, написанные серьезными авторами и провренные многими поколениями автоматчиков. А PhD из американской провинции, который щас переводится на русский язык, напишет, как правило, "повареную книгу" с набором готовых рецептов для модельных ситуаций. Откуда эти рецепты взялись, что будет если немного изменить вводные - непонятно.

Цитата(Oldring @ Sep 10 2006, 21:52) *
И, кстати, Вы не забыли, что сама характеристика бака обладает полюсом в нуле - в приближении независимости выходного потока от уровня в баке

Неа, не забыл. Просто не стал явно об этом писать. Бак действительно описывается чистым интеграторирующим звеном. Оценку статической ошибки для пропорционального регулятора я так и рассчитывал. Но это при разомкнутом контуре обратной связи. После замыкания контура, для пропорционального регулятора получается апериодическое звено по заданному уровню без перерегулирования. Для пропорционально-интегрируюшего регулятора, действительно возникает перерегулирование. Но величина этого перерегулирования управляется настройками регулятора и может быть сведена к приемлемому значению. Могут доставить неприятности колебания, связанные с нелинейностью исполнительного звена - об этом я уже писал.
Destr
Мда, все казалось так просто когда, LordN все объяснил, я уже и забыл про эту тему, а тут дискуссия развернулась.
Седня времени нет, завтро переварю то что вы понаписали, и буду спрашивать.

Цитата
Исполнитель у Вас 15-ти разрядный. Датчик уровня, скорее всего будет выдавать значительно грубее.

Датчиком выдается сигнал 4-20 мА на контроллер, внутри контроллера это значение преобразуется также в 15 битовое целое.

Цитата
Начнем с того, что задача уже давно изменилась - теперь речь идет не о ШИМ регуляторе для двигателя, а о выпускном клапане с дискретной скоростью изменения положения.

Это 2 разные задачи

Цитата
Что человеку нужно - точно неизвестно. Думаю, нужно либо поддерживать фиксированный уровень, либо работать в некотором диапазоне вблизи середины заполнения бака.


Нужно поддерживать и устанавливать такой уровень, какой задаст оператор. А также компенсировать возмущающее воздействие - не регулируемый поток жидкости.

На одном заводе знакомые, вообще не понимая что такое ПИД регулирование, подбирают 3 коэффициента методом тыка и ниче работает вроде всё и никто не жалуется. (Они просто работают на заводе, автоматизировали другие люди)
Oldring
Цитата(Destr @ Sep 11 2006, 21:58) *
Датчиком выдается сигнал 4-20 мА на контроллер, внутри контроллера это значение преобразуется также в 15 битовое целое.


Сам датчик аналоговый без встроенного микроконтроллера? wink.gif

Цитата(Destr @ Sep 11 2006, 21:58) *
На одном заводе знакомые, вообще не понимая что такое ПИД регулирование, подбирают 3 коэффициента методом тыка и ниче работает вроде всё и никто не жалуется. (Они просто работают на заводе, автоматизировали другие люди)


Я и говорю: весьма вероятно что Ваш заказчик тоже будет всему доволен - попробуйте, не получится - изучите теорию. smile.gif Если от работы этого контура не зависит безопасность людей или оборудования - почему не попробовать экспериментально? Вам какая-то точность регулирования вообще говоря нужна? Или для техпроцесса это не критично?
Destr
Цитата(Oldring @ Sep 11 2006, 22:25) *
Сам датчик аналоговый без встроенного микроконтроллера? wink.gif


Я не знаю, моя задача только программировать, всем остальным занимаются другие люди. А для программирования мне достаточно знать что будет 4-20 мА и все.

Вообще в языке программирования, на котором пишется программа для контроллера, есть инструкция пид регулирования. Выходное значение рассчитывается по формуле:

Кр*(err+Кd*Td*derr/dt+1/Ti*<интеграл>err dt) , где

Кр - коэффициент пропорциональности
err - рассогласование
Кd - дифференциальный коэффициент
Td - дифференциальная временная константа
Ti - интегральная константа

На языке релейно-контактных схем не очень хотелось бы писать свой вариант регулирования, хотя конечно можно. Ну я пока планирую использовать эту инструкцию. То есть необходимо только правильно подобрать коэффициенты. И большая точность вроде не особа нужна, поэтому действительно попробую экспериментально сначала, а уж если не получиться придется учить.
Destr
Что то вот это не совсем понял
Цитата(LordN @ Aug 31 2006, 12:26) *
Цитата
Потоком жидкости необходимо управлять шаровым краном, который управляется двумя дискретными сигналами, один-открывать, другой-закрывать
это называется трехпозиционное регулирование. для него И-часть не нужна. привод сам выполнит накопление ошибки. потребуются только П- или ПД- части.
управлять приводом просто.
имеется сигнал от регулятора.
имеется сигнал положения заслонки обратной связи.
сравниваем их и выбираем - открывать или закрывать. тупой компаратор.
можно усложнить слегка - вычислять разность и взависимости от неё подавать сверхнизкочастотный ШИМ на управление приводом, т.о. можно управлять скоростью привода для более точной подстройки.


То есть получается, если у меня сигнал о положении заслонки в контроллере преобразуется в целое от 0 до 32768, то мне надо выход регулятора нормировать к такой же размерности ?

Цитата
имеется сигнал от регулятора. имеется сигнал положения заслонки обратной связи. сравниваем их и выбираем - открывать или закрывать

Получается что если ошибка равна 0 то кран всегда будет закрываться ?
LordN
Цитата
То есть получается, если у меня сигнал о положении заслонки в контроллере преобразуется в целое от 0 до 32768, то мне надо выход регулятора нормировать к такой же размерности ?
естессна. одно к другому надо обязательно приводить, иначе как их сравнивать? rolleyes.gif

Цитата
Получается что если ошибка равна 0 то кран всегда будет закрываться ?
нет. не так.
есть привод. у него есть три состояния
1. пауза или стоянка. на движок не подается напруга вообще.
2. движок крутится в одну сторону - закрывает вентиль.
3. движок крутится в другую сторону - открывает вентиль.

вот смотрите, что будет, если на такой привод подать сигнал от П-регулятора:
при Error > 0 привод должен крутиться в одну строну,
при Error = 0 привод должен стоять,
при Error < 0 привод должен крутиться в другую сторону.
мысль понятна?
т.е. привод будет сам выполнять интегрирование по Error.

аппаратно (в схеме управления) нужно организовать два выхода (ключа).
один назвать Hi ("больше"), другой назвать Low("меньше")
еще должен быть вход для обратной связи по положению задвижки InValve.

напруга на выходах должна появляться в след.случаях:
на выходе Hi ("больше"), если InValve < (Out - DeadZone)
на выходе Low, если InValve > (Out + DeadZone)
если InValve = Out +/- DeadZone - привод стоит.
здесь DeadZone - мертвая зона для программного компаратора, по сути - гистерезис для того чтоб не реагировать на шумы положения.
Out - значение выхода программного регулятора.
Destr
Все равно не понятно:
1) Какая связь между этим
Цитата
при Error > 0 привод должен крутиться в одну строну,
при Error = 0 привод должен стоять,
при Error < 0 привод должен крутиться в другую сторону.

и этим
Цитата
напруга на выходах должна появляться в след.случаях:
на выходе Hi ("больше"), если InValve < (Out - DeadZone)
на выходе Low, если InValve > (Out + DeadZone)
если InValve = Out +/- DeadZone - привод стоит.


2) Насколько я понимаю кран должен стоять тогда, когда нет ошибки.
А если судить по этому
Цитата
InValve = Out +/- DeadZone - привод стоит

То когда нет ошибки (Out=0), InValve тоже должно быть равно 0, т.е. кран полностью закрыт ?

3) И вообще не пойму как привод накапливает ошибку. Помойму ситуация аналогична с той, когда я спрашивал про управление стоком частотником без интегральной составляющей, где ошибка будет постоянно появляться потому что сток воды есть и частотник будет то включать, то выключать двигатель. И здесь также когда нет ошибки, кран закрыт, но она(ошибка) будет все время появляться благодаря стоку и кран будет открыватся/закрываться постоянно.
TomaT
Немного в сторону... А в частотнике ПИД-а нет? Обычно бывает... И отклик на управление ему наверно тоже настроить можно.
Destr
Цитата(TomaT @ Sep 14 2006, 12:36) *
Немного в сторону... А в частотнике ПИД-а нет? Обычно бывает... И отклик на управление ему наверно тоже настроить можно.


Есть, но я думаю удобнее через контроллер, а вообще что есть какая то разница ?
LordN
Цитата
Все равно не понятно:
да, моя ошибка. сам запутался и вас ввёл в заблуждение.
давайте еще раз.

П-регулятор и трехпозиционный привод без обратной связи.
тогда регулятор можно записать так:

Код
if(abs(Error) <= Gisterezis) Out = 0;
else Out = sign(Error);
Hi = 0;
Low = 0;
if(Out > 0) Hi = 1;
else if(Out < 0) Low = 1;



ПИ-регулятор и трехпозиционный привод с обратной связью
записываем

см.тут
Код
Integral += (Tquant * Error / Tint);
limit(Integral, 0 , Zp) // ограничитель интеграла от 0 до Zp
Out = Scale * (Error + Integral) / Zp; // Scale = 32768 - сразу масштабируем выход регулятора к сигналу обратной связи
limit(Out, 0 , Scale); // ограничитель выхода от 0 до Scale


и вот теперь только можно сравнивать InValve с Out и выдавать сигналы на откр/закр вентиля.
Destr
Понятно, получается тоже самое что и с частотником, только там мы сразу на частотник подавали выходную величину, а здесь надо кран крутить, чтобы он сравнялся с этой величиной.
А для чего интеграл ограничивать так:
Цитата(LordN @ Sep 14 2006, 14:02) *
limit(Integral, 0 , Zp) // ограничитель интеграла от 0 до Zp


Как я уже писал, в языке программирования контроллера есть инструкция пид регулирования. Есть ли там такие ограничители неизвестно. Там просто коэффициенты задаваются и все.
Fireball
Есть у меня книжка "PID Controllers Theory and Design" (на буржуйском) оочень неплохо написана, могу поделиться (ежели еще актуально).
И еще, мое мнение несчет разделения задач управления частотником и краном - необходимо для разработки составить структурную схему системы регулирования, тогда будет очевидно, что сигнал управления частотником - "управляющее воздействие", а клапан - "исполнительный механизм" и для построения ПИД регулятора не методом подбора коэффициентов (что тоже имеет право на жизнь), а расчетом, необходимо записать их т.н. передаточные функции (которые учтут их физическую природу), и исходя из полученных данных получить коэффициенты ПИД регулятора.
Вот тогда и станет очевидно, что эти задачи неразделимы...
Destr
Цитата(Fireball @ Sep 23 2006, 15:00) *
Есть у меня книжка "PID Controllers Theory and Design" (на буржуйском) оочень неплохо написана, могу поделиться

Да, я бы был вам очень признателен
Fireball
ftp://81.24.212.28/ - доступно с 8-00 до 22-00
зы: за качество не пинайте...
LordN
Цитата
ftp://81.24.212.28/ - доступно с 8-00 до 22-00

кто-нить успел скачать?
выложите плз еще куда-нить...
Oskal
Цитата(LordN @ Sep 26 2006, 07:41) *
Цитата
ftp://81.24.212.28/ - доступно с 8-00 до 22-00

кто-нить успел скачать?
выложите плз еще куда-нить...


Думаю, Вы будете несколько разочарованны увиденным.
К сожалению восприять текст в этом файле крайне проблематично из-за ужасно низкого качества.
(Цифровые фото?) И для зрения вредно. Книга представляется интересной, но "читать" ее из этого источника ИМХО не получится... Получится только на нее "смотреть" smile.gif

Точное название "PID Controllers: Theory, Design and Tuning." K. Astrom and T. Hagglung. 2nd edition.
Fireball
К сожалению у меня была возможность получить эту книгу только в виде "цифрового фото" и то с ксерокопии sad.gif . В дежавю сжимал на скорую руку, разбираться щас нету времени. Могу выложить сами фотографии, там ессно качество лучше (около 100Мб).
Так что юзать или нет - дело Ваше.
Destr
У меня очередной вопрос возник. Как осуществлять пид регулирование, если после воздействия выходом регулятора на регулируемую величину, последняя начинает изменятся только по прошествии некоторого времени.
Как поступать в таком случае, увеличивать время между повторениями пид инструкции (Я так понимаю это Tquant, в коде LordNa) или уменьшать интегральный коэффициент ?
Destr
У меня очередной вопрос возник. Как осуществлять пид регулирование, если после воздействия выходом регулятора на регулируемую величину, последняя начинает изменятся только по прошествии некоторого времени.
Как поступать в таком случае, увеличивать время между повторениями пид инструкции (Я так понимаю это Tquant, в коде LordNa) или уменьшать интегральный коэффициент ?
Destr
Блин нажимаю отправить сообщение, и выводится что не возможно отобразить страницу, так несколько раз сделал, потом убедился что они не поместились и еще раз отправил, а они все появились. Можно удалить повторяющиеся сообщения ?
Tanya
Цитата(Destr @ Sep 28 2006, 10:26) *
У меня очередной вопрос возник. Как осуществлять пид регулирование, если после воздействия выходом регулятора на регулируемую величину, последняя начинает изменятся только по прошествии некоторого времени.
Как поступать в таком случае, увеличивать время между повторениями пид инструкции (Я так понимаю это Tquant, в коде LordNa) или уменьшать интегральный коэффициент ?

А оно всегда с задержкой. Если, конечно, не нарушена причинно-следственная связь...
В ПИД одна из букв - Д осуществляет, как это писалось раньше по русски, - "предварение". Еще полезно ограничить скорость нарастания задающего параметра до адекватного предела, как это написано у Т. и Ш. Там же и про ПИД очень правильно написано.
Destr
Цитата(Tanya @ Sep 28 2006, 11:24) *
как это написано у Т. и Ш. Там же и про ПИД очень правильно написано.

Это что ?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.