Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ПИД-регулятор для программиста/эмбеддера
Диалог специалистов АВОК > ОБЩИЙ ФОРУМ > Автоматизация систем
masterpc
Приветствую всех обитателей этого форума!!! Я зарегистрировался как только нашел в инете такой вот замечательный форум. Я програмист микроконтроллеров, в настоящее время у меня стоит в стопоре проект управления вентиляцией. Суть проблемы в следующем:

Есть LM24A-SR-привод с аналоговым управлением 24 В~, Управляющий сигнал 0…10 В. Управляющий сигнал создает микроконтроллер с помощью ШИМ. Обратной связи привода с МК нет, нужно ориентироваться по напряжению которое выдает МК. Это не критично. Заказчик хочет чтобы был ПИ-регулятор. Прога уже готова, кроме как функции самого ПИ-регулятора. Диапазон от -50 до 125 градусов. Плохо во всем этом то, что я нерублю как написать код для МК для интегральной составляющей. Что еще непонятно как это все с ШИМом связать. результат должен загружаться в регистр сравнения ШИМа. Буду очень благодарен за помощь в составлении алгоритма для данной задачи. Заранее спасибо.
LordN
форум на electronix.ru
поиск по "пид"
masterpc
Спасибо большое, уже кое что нарыл там.
Взводатор
А не проще ли использовать уже готовый микроконтроллер, лучше программируемый? Для них есть уже готовые блоки.
Неужели Вы всю программу писали на Си или что-то вроде того?

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

Смущает указанный диапазон темпереатур для системы вентиляции - -50..125°С - слишком широк, особенно сверху.

В принципе, отсележивать положение привода и не нужно - нужно отслеживать значение регулируемой температуры и по ее отклонению принимать решения.

Задание для ШИМ должен выдавать ПИ-регулятор. Тут все просто - на вход подается нужное значение напряжения, на выходе должна быть необходимая скважинность.

С уважением Взводатор.
ttt
Цитата
Буду очень благодарен за помощь в составлении алгоритма для данной задачи.

Можно реализовать вычисление по формуле одного из производителей свободно программируемых контроллеров для HVAC, например ТАС.
masterpc
Может быть я неправильно сформулировал вопрос. данный привод может крутить как и клапан так и заслонку. Привод будет стоять один на такое устройство. В общем что заказывал заказчик то и делал. А прибор полностью разработал сам, от схемы и платы до программы, если кому нужно что-то подобное разработать, то обращайтесь.
А диапазон можно уменьшить пользователем, просто датчик может работать в таком диапазоне.
Ни как не вьеду как на Си написать формулу ПИ регулятора для ШИМа. Вот в этом моя проблема.
LordN
Цитата
Ни как не вьеду как на Си написать формулу ПИ регулятора для ШИМа. Вот в этом моя проблема.
так что, на электрониксе этот кусок кода Вы не нашли что ли?
Взводатор
На Си не подскажу, а в FBD простейший ШИМ без накопления выглядит так.
Pulse - выдает импульс длительностью pl при поступлении фронта на вход t.

С уважением Взводатор.
LordN
ПИ-алгоритм
Код
    error[0] = tmprSet - themp;    //    ошибка.

    // Интегральная составляющая.
    I += (error[0] + error[1]) / (2 * tauInt); // метод трапеций

    // Ограничитель интеграла    
    if(I < 0) I = 0;
    else if(I > zoneProp) I = zoneProp;

 //    полный сигнал
    summ = (error[0] + I) / zoneProp;

    error[1] = error[0];

    //    Ограничитель  полного сигнала
    if(summ <= 0)    summ = 0;
    else if(summ >= 1)    summ = 1;


все переменные float или double
ttt
Цитата
Есть LM24A-SR-привод с аналоговым управлением 24 В~, Управляющий сигнал 0…10 В. Управляющий сигнал создает микроконтроллер с помощью ШИМ


У Вас есть аналоговый выход 0-10В?
Вы можете из программы установить напряжение на этом выходе от 0 до 10В?
Lex
To masterpc

Если не секрет, сколько в итоге стоит разработанный прибор и инжиниринг (разработка схемы и программа). Просто интересно, стоит ли овчинка выделки, даже в сравнении с овном...
masterpc
Цитата(ttt @ Mar 1 2007, 14:57 )
У Вас есть аналоговый выход 0-10В?
Вы можете из программы установить напряжение на этом выходе от 0 до 10В?

Легко

Добавлено - 15:28
Цитата(Lex @ Mar 1 2007, 15:06 )
To masterpc

Если не секрет, сколько в итоге стоит разработанный прибор и инжиниринг (разработка схемы и программа). Просто интересно, стоит ли овчинка выделки, даже в сравнении с овном...

от 500 у.е
masterpc
Цитата(LordN @ Mar 1 2007, 14:30 )
ПИ-алгоритм
Код
    error[0] = tmprSet - themp;    //    ошибка.

    // Интегральная составляющая.
    I += (error[0] + error[1]) / (2 * tauInt); // метод трапеций

    // Ограничитель интеграла    
    if(I < 0) I = 0;
    else if(I > zoneProp) I = zoneProp;

 //    полный сигнал
    summ = (error[0] + I) / zoneProp;

    error[1] = error[0];

    //    Ограничитель  полного сигнала
    if(summ <= 0)    summ = 0;
    else if(summ >= 1)    summ = 1;


все переменные float или double

Спасибо большое, сегодня вечером попробую. сейчас занят другим проектом
ttt
Цитата
Легко


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

У меня не получается выложить здесь формулу от ТАС. Я в свое время делал по ней для другого контроллера.

Ув. Взводатор. Выложите ему хелп по PIDA. Я не умею.
masterpc
Цитата(ttt @ Mar 1 2007, 15:39 )
Тогда зачем ШИМ?
Считайте по формуле, коих много. Все они - упрощенная форма диф.-инт уравнений с разной степенью точности. Имеете текущую ошибку, имеете ошибку за предыдущий цикл, имеете предыдущее значение ПИ, высчитываете текущее значение ПИ, записываете его в аналоговый выход.

У меня не получается выложить здесь формулу от ТАС. Я в свое время делал по ней для другого контроллера.

А ШИМ нужен как раз для того чтобы делать аналоговый выход. Для этого мне нужно загружать число от 0 до 255 чтобы получить сигнал на аналоговом выходе от 0 до напряжения питания. Можно и больше 10В. Схема реализации аналогового выхода прилагается:
LordN
Цитата
сегодня вечером попробую
забыл добавить..

tauInt - это уже безразмерное время, отнесённое ко времени квантования, т.е. = TauInt / tauQuant. TauInt - уставка постоянной интегрирования.

будете прикручивать Д-часть, учтите, что её надо фильтровать, хотябы экспоненциальным фильтром, иначе будет сильно шуметь... ну, вобщем там много всяких вычислительных фокусов и тонкостей. запустите в "железо", поймёте о чем я...
Взводатор
Цитата(ttt @ Mar 1 2007, 14:39 )
Ув. Взводатор. Выложите ему хелп по PIDA. Я не умею.

Я тоже smile.gif

Получилось только из старого хелпа сделать на скору руку html страничку. Завтра на работе посмотрю - должны быть pdf и на русском языке.

С уважением Взводатор.

PS: файл заменен на вытяжку из pdf документации. Как и обещано, на русском.
Alex_
Цитата(masterpc @ Mar 1 2007, 15:19 )
Цитата(Lex @ Mar 1 2007, 15:06 )
To masterpc

Если не секрет, сколько в итоге стоит разработанный прибор и инжиниринг (разработка схемы и программа). Просто интересно, стоит ли овчинка выделки, даже в сравнении с овном...

от 500 у.е

masterpc глупый вопрос:
ЗАЧЕМ ВСЕ ЭТО НУЖНО.
Купите готовый контроллер с зашитой программой.
masterpc
Цитата(Alex_ @ Mar 1 2007, 22:49 )
Цитата(masterpc @ Mar 1 2007, 15:19 )
Цитата(Lex @ Mar 1 2007, 15:06 )
To masterpc

Если не секрет, сколько в итоге стоит разработанный прибор и инжиниринг (разработка схемы и программа). Просто интересно, стоит ли овчинка выделки, даже в сравнении с овном...

от 500 у.е

masterpc глупый вопрос:
ЗАЧЕМ ВСЕ ЭТО НУЖНО.
Купите готовый контроллер с зашитой программой.

smile.gif Насмешил!!! smile.gif
Я ж разработчик а не пользователь данного девайса. Сей прибор планируться в производство отправить, а мне вообще все равно, что с ним дальше будет, пусть хоть на помойку викинут. Заказали разработку вот я и разработал. Работа моя такая. А за меньше никакой инженер не станет ничего разрабатывать.
masterpc
Цитата(masterpc @ Mar 1 2007, 15:30 )
ПИ-алгоритм
Код
    error[0] = tmprSet - themp;    //    ошибка.

    // Интегральная составляющая.
    I += (error[0] + error[1]) / (2 * tauInt); // метод трапеций

    // Ограничитель интеграла    
    if(I < 0) I = 0;
    else if(I > zoneProp) I = zoneProp;

 //    полный сигнал
    summ = (error[0] + I) / zoneProp;

    error[1] = error[0];

    //    Ограничитель  полного сигнала
    if(summ <= 0)    summ = 0;
    else if(summ >= 1)    summ = 1;


все переменные float или double

Попробовал код, который вы мне дали, все заработало. Моей ошибкой было то, что я не ограничивал выход результата за пределы (0-1). Нужно теперь с коэффициентами поиграться.
Пока смотрел только осцилографом, да пальцами датчик грел. Картина следующая, если температура не меняеться, то сигнал растет до максимума, стоит немного подогревать датчик и виден процесс регулирования. Это конечно все еще нужно будет в рабочих условиях гонять.

И еще вопрос, мне непонятно следующее:

"tauInt - это уже безразмерное время, отнесённое ко времени квантования, т.е. = TauInt / tauQuant. TauInt - уставка постоянной интегрирования."

Как мне использовать в данном коде tauQuant?
LordN
Цитата
Как мне использовать в данном коде tauQuant?

tauQuant - это, по сути, кол-во вызовов функции Регулятор в секунду.
TauInt - уставка постоянной врем.интегрирования, секунды. (это если тауквант считаем за секунду, а если за минуту - то уставку тож следует считать в минутах и т.д.)

теория тут http://atm.h1.ru/root/theory/theory33.html
пользуйте формулу 3.2
Взводатор
Цитата(masterpc @ Mar 1 2007, 21:59 )
Я ж разработчик а не пользователь данного девайса. Сей прибор планируться в производство отправить, а мне вообще все равно, что с ним дальше будет, пусть хоть на помойку викинут. Заказали разработку вот я и разработал. Работа моя такая. А за меньше никакой инженер не станет ничего разрабатывать.

Грустно.
Сдается мне, что судьба устройства тоже будет безрадостной.

masterpc, Вы хоть представляете, что у Вас впереди еще отладка всей программы в реальных условиях и создание (или ожидание) всех этих условий? Мы к нашей нынешней программе шли года 2, при том, что был уже рабочий прототип, приточек у нас смонтировано достаточно и можно было за ними регулярно наблюдать. Вот и сейчас переходим на следующую версию, которая, правда, не так радикально отличается от текущей, как предшественница. И процесс этот постоянен. Не думаю, что Вам сразу удастся написать универсальный вариант.

Файл в предыдущем моем сообщении заменен на вытяжку из pdf документации. Как и обещано, на русском - http://www.abok.ru/index.php?act=A...e=post&id=94818 .

С уважением Взводатор.
LordN
Цитата
Вы хоть представляете, что у Вас впереди еще отладка всей программы в реальных условиях и создание
врядли он щас представляет в какой геморр ввязался wink.gif
masterpc
Цитата(LordN @ Mar 2 2007, 10:34 )
Цитата
Вы хоть представляете, что у Вас впереди еще отладка всей программы в реальных условиях и создание
врядли он щас представляет в какой геморр ввязался wink.gif

Настройка прибора и тестирование в договор не входит. Это будет делать заказчик. Если ему нужно будет что-то поправить в программе, я сделаю. А гонять прибор в реальных условиях буду не я.
LordN
Цитата
Настройка прибора и тестирование в договор не входит
ну тогда жить проще... wink.gif
Lex
Цитата
ну тогда жить проще... wink.gif


да нет... ни заказчику, ни разработчику....
один задолбается, другого задолбают.
masterpc
Цитата(Lex @ Mar 2 2007, 13:40 )
да нет... ни заказчику, ни разработчику....
один задолбается, другого задолбают.

А че задолбают, то? Одно дело кусок проги поменять, другое сидеть сутками прибор настраивать.
Вообще что-то тема перешла в другое русло smile.gif
Alex_
Ну да, в русло ИЗОБРЕТАНИЯ ВЕЛОСИПЕДА...
Каждый второй заказчик видя буржуйский контроллер за $$$$, тут же вопит: ЗА ЧТО!!!
У меня, дескать, комп дома супернавороченный дешевле стОит. А тут какая-то коробочка.
И насколько велик соблазн "коробочку" самому замастырить, настолько же идет недооценка возможных проблем biggrin.gif biggrin.gif biggrin.gif
masterpc, у Вас еще все впереди...

По-делу: посмотрите отечественные разработки, да хоть тот же ОВЕН
(соседняя ветка)
masterpc
Цитата(Alex_ @ Mar 2 2007, 14:40 )
По-делу: посмотрите отечественные разработки, да хоть тот же ОВЕН

На счет ОВЕН, я на их сайте статейку почитал, там в формуле ПИДа логарифм, кто-то может объяснить насколько это правильно?
LordN
Цитата
там в формуле ПИДа логарифм
дайте-ка прямую ссылку на неё, я что-то не нашел..
masterpc
Цитата(LordN @ Mar 3 2007, 16:28 )
Цитата
там в формуле ПИДа логарифм
дайте-ка прямую ссылку на неё, я что-то не нашел..

Вот ссылка: http://www.owen.ru/documents/aip/files/number5.zip

А вот цитата:

Отметим, что значение регулируемой величины Х никогда не достигнет задания U. Образуется, так называемая статическая ошибка: d (см. рис. 2). Действительно, при приближении температуры воды Х к заданию U постепенно уменьшается подаваемая мощность Y, т.к. Y=К·(U-X). Но теплота, рассеиваемая в окружающую среду, увеличивается, и равновесие наступит при Y = K·d и d не достигнет 0, т.к. если d будет равно 0, то и Y=0 и Х=0. Таким образом на выходе регулятора устанавливается некоторое значение Y=K·d , которое приводит регулируемую величину Х в состояние отличное от задания. Чем больше К, тем меньше d. Однако при достаточно большом К САР и объект могут перейти в автоколебания. Этот предельный коэффициент усиления определяется соотношением наклона разгонной кривой R и транспортным запаздыванием to объекта: Kmax = 2/(R·to) (см. рис. 2).
В ряде случаев, при малом транспортном запаздывании, статическая ошибка находится в необходимых пределах, поэтому П-регуляторы находят некоторое применение. Для устранения статической ошибки d при формировании выходной величины Y вводят интегральную составляющую отклонения от задания:
Y = K·(U-X) + In(U-X)/Ti ,
где Тi - постоянная интегрирования.
Таким образом, чем больше время, в течение которого величина Х меньше задания, тем больше интегральная составляющая, тем больше выходной сигнал. Регулятор с таким законом формирования выходного сигнала называется пропорционально-интегральным ПИ-регулятором.
В установившемся режиме (d=0) в интеграторе содержится величина In/Т, которая равна выходной мощности, требуемой для получения необходимой Х. Таким образом интегратор как бы находит статический коэффициент передачи объекта. Для достижения установившегося режима в интеграторе требуется достаточно большее время. Поэтому ПИ-регулятор можно применять в случае, когда и внешние воздействия достаточно медленные.
В случае резких изменений внешних и внутренних факторов (например, налили холодной воды в бак или резко изменили задание) ПИ-регулятору требуется время для компенсации этих изменений.
Для ускорения реакции САР на внешние воздействия и изменения в задании в регулятор вводят дифференциальную составляющую D(U-X):
Y = K·(U-X) + In(U-X)/Ti+Тd·D(U-X), где Тd - постоянная дифференцирования. Чем быстрее растет Е, тем больше D(U-X). Регулятор с таким законом управления называется ПИД-регулятором. Подобрав для конкретного объекта К ,Тi и Td можно оптимизировать качество работы регулятора: уменьшить время выхода на задание, снизить влияние внешних возмущений, уменьшить отклонение от задания. При очень большом Тi регулятор очень медленно выводит объект на задание. При малом Тi происходит перерегулирование, т.е. регулируемый параметр Х проскакивает задание (рис.7), а затем сходится к нему. Ниже описаны методики настройки регуляторов, т.е. расчет коэффициентов в зависимости от динамических свойств объекта. Без настройки ПИ-регулятор может обладать худшим качеством работы, чем даже Т-регулятор. Приведем передаточные функции П-, ПИ- и ПИД-регуляторов, принятые в теории автоматического управления.
Пропорциональный регулятор – П: y = К(u -x), т.е. в обратную связь заводится отклонение от уставки. Пропорционально-Интегральный – ПИ: y = (u-x)( Kp + /pTi) , т.е. в обратную связь заводится также интеграл от отклонения, это позволяет избежать статической ошибки.
Пропорционально-Интегрально- Дифференциальный – ПИД:
y = (u-x)·( Kp + 1/pTi + p·Td ), т.е. в обратную связь заводится также производная отклонения, это позволяет улучшить динамические характеристики регулятора.
LordN
Цитата
In(U-X)/Ti
вы вот это логарифмом назвали? да нет же, эт не логарифт ни какой, In - так обозначили интеграл от ошибки = U-X, Ti - это tauInt
masterpc
Цитата(LordN @ Mar 3 2007, 22:12 )
Цитата
In(U-X)/Ti
вы вот это логарифмом назвали? да нет же, эт не логарифт ни какой, In - так обозначили интеграл от ошибки = U-X, Ti - это tauInt

Семен Семеныч tomato.gif Блин, как я раньше смотрел, все время видел там логарифм.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.