ПИД-регулятор для программиста/эмбеддера, Помогите новичку разобраться с ПИД регулятором, пожалуйста |
|
|
Гость_masterpc_*
|
1.3.2007, 1:56
|
Guest Forum

|
Приветствую всех обитателей этого форума!!! Я зарегистрировался как только нашел в инете такой вот замечательный форум. Я програмист микроконтроллеров, в настоящее время у меня стоит в стопоре проект управления вентиляцией. Суть проблемы в следующем:
Есть LM24A-SR-привод с аналоговым управлением 24 В~, Управляющий сигнал 0…10 В. Управляющий сигнал создает микроконтроллер с помощью ШИМ. Обратной связи привода с МК нет, нужно ориентироваться по напряжению которое выдает МК. Это не критично. Заказчик хочет чтобы был ПИ-регулятор. Прога уже готова, кроме как функции самого ПИ-регулятора. Диапазон от -50 до 125 градусов. Плохо во всем этом то, что я нерублю как написать код для МК для интегральной составляющей. Что еще непонятно как это все с ШИМом связать. результат должен загружаться в регистр сравнения ШИМа. Буду очень благодарен за помощь в составлении алгоритма для данной задачи. Заранее спасибо.
|
|
|
|
|
1.3.2007, 7:00
|
МОДЕРАТОР
Группа: Модераторы
Сообщений: 10904
Регистрация: 3.7.2004
Пользователь №: 32

|
форум на electronix.ru поиск по "пид"
|
|
|
|
Гость_masterpc_*
|
1.3.2007, 11:59
|
Guest Forum

|
Спасибо большое, уже кое что нарыл там.
|
|
|
|
|
1.3.2007, 12:26
|
Группа: Участники форума
Сообщений: 695
Регистрация: 13.4.2005
Из: Киев
Пользователь №: 666

|
А не проще ли использовать уже готовый микроконтроллер, лучше программируемый? Для них есть уже готовые блоки. Неужели Вы всю программу писали на Си или что-то вроде того?
Указанный Вами привод - для воздушных заслонок и только ими Вы не обойдетесь. К тому же такой привод нужен, как правило, в системах с рециркуляцией. Как минимум, нужен еще привод на трехходовой вентиль или сигнал для управления электронагревателем.
Смущает указанный диапазон темпереатур для системы вентиляции - -50..125°С - слишком широк, особенно сверху.
В принципе, отсележивать положение привода и не нужно - нужно отслеживать значение регулируемой температуры и по ее отклонению принимать решения.
Задание для ШИМ должен выдавать ПИ-регулятор. Тут все просто - на вход подается нужное значение напряжения, на выходе должна быть необходимая скважинность.
С уважением Взводатор.
|
|
|
|
|
1.3.2007, 13:26
|
Группа: Участники форума
Сообщений: 637
Регистрация: 4.7.2005
Пользователь №: 945

|
Цитата Буду очень благодарен за помощь в составлении алгоритма для данной задачи. Можно реализовать вычисление по формуле одного из производителей свободно программируемых контроллеров для HVAC, например ТАС.
|
|
|
|
Гость_masterpc_*
|
1.3.2007, 14:03
|
Guest Forum

|
Может быть я неправильно сформулировал вопрос. данный привод может крутить как и клапан так и заслонку. Привод будет стоять один на такое устройство. В общем что заказывал заказчик то и делал. А прибор полностью разработал сам, от схемы и платы до программы, если кому нужно что-то подобное разработать, то обращайтесь. А диапазон можно уменьшить пользователем, просто датчик может работать в таком диапазоне. Ни как не вьеду как на Си написать формулу ПИ регулятора для ШИМа. Вот в этом моя проблема.
|
|
|
|
|
1.3.2007, 14:19
|
МОДЕРАТОР
Группа: Модераторы
Сообщений: 10904
Регистрация: 3.7.2004
Пользователь №: 32

|
Цитата Ни как не вьеду как на Си написать формулу ПИ регулятора для ШИМа. Вот в этом моя проблема. так что, на электрониксе этот кусок кода Вы не нашли что ли?
|
|
|
|
|
1.3.2007, 14:29
|
Группа: Участники форума
Сообщений: 695
Регистрация: 13.4.2005
Из: Киев
Пользователь №: 666

|
На Си не подскажу, а в FBD простейший ШИМ без накопления выглядит так. Pulse - выдает импульс длительностью pl при поступлении фронта на вход t. С уважением Взводатор.
Прикрепленные файлы
wim.GIF ( 6,37 килобайт )
Кол-во скачиваний: 55
|
|
|
|
|
1.3.2007, 14:30
|
МОДЕРАТОР
Группа: Модераторы
Сообщений: 10904
Регистрация: 3.7.2004
Пользователь №: 32

|
ПИ-алгоритм Код 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
|
|
|
|
|
1.3.2007, 14:57
|
Группа: Участники форума
Сообщений: 637
Регистрация: 4.7.2005
Пользователь №: 945

|
Цитата Есть LM24A-SR-привод с аналоговым управлением 24 В~, Управляющий сигнал 0…10 В. Управляющий сигнал создает микроконтроллер с помощью ШИМ У Вас есть аналоговый выход 0-10В? Вы можете из программы установить напряжение на этом выходе от 0 до 10В?
|
|
|
|
|
1.3.2007, 15:06
|
Всегда !
Группа: Участники форума
Сообщений: 1260
Регистрация: 1.7.2005
Из: Новосибирск
Пользователь №: 934

|
To masterpc
Если не секрет, сколько в итоге стоит разработанный прибор и инжиниринг (разработка схемы и программа). Просто интересно, стоит ли овчинка выделки, даже в сравнении с овном...
|
|
|
|
Гость_masterpc_*
|
1.3.2007, 15:19
|
Guest Forum

|
Цитата(ttt @ Mar 1 2007, 14:57 ) У Вас есть аналоговый выход 0-10В? Вы можете из программы установить напряжение на этом выходе от 0 до 10В? Легко Добавлено - 15:28 Цитата(Lex @ Mar 1 2007, 15:06 ) To masterpc
Если не секрет, сколько в итоге стоит разработанный прибор и инжиниринг (разработка схемы и программа). Просто интересно, стоит ли овчинка выделки, даже в сравнении с овном... от 500 у.е
|
|
|
|
Гость_masterpc_*
|
1.3.2007, 15:30
|
Guest Forum

|
Цитата(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 Спасибо большое, сегодня вечером попробую. сейчас занят другим проектом
|
|
|
|
|
1.3.2007, 15:39
|
Группа: Участники форума
Сообщений: 637
Регистрация: 4.7.2005
Пользователь №: 945

|
Цитата Легко Тогда зачем ШИМ? Считайте по формуле, коих много. Все они - упрощенная форма диф.-инт уравнений с разной степенью точности. Имеете текущую ошибку, имеете ошибку за предыдущий цикл, имеете предыдущее значение ПИ, высчитываете текущее значение ПИ, записываете его в аналоговый выход. У меня не получается выложить здесь формулу от ТАС. Я в свое время делал по ней для другого контроллера. Ув. Взводатор. Выложите ему хелп по PIDA. Я не умею.
|
|
|
|
Гость_masterpc_*
|
1.3.2007, 16:25
|
Guest Forum

|
Цитата(ttt @ Mar 1 2007, 15:39 ) Тогда зачем ШИМ? Считайте по формуле, коих много. Все они - упрощенная форма диф.-инт уравнений с разной степенью точности. Имеете текущую ошибку, имеете ошибку за предыдущий цикл, имеете предыдущее значение ПИ, высчитываете текущее значение ПИ, записываете его в аналоговый выход.
У меня не получается выложить здесь формулу от ТАС. Я в свое время делал по ней для другого контроллера. А ШИМ нужен как раз для того чтобы делать аналоговый выход. Для этого мне нужно загружать число от 0 до 255 чтобы получить сигнал на аналоговом выходе от 0 до напряжения питания. Можно и больше 10В. Схема реализации аналогового выхода прилагается:
|
|
|
|
|
1.3.2007, 16:57
|
МОДЕРАТОР
Группа: Модераторы
Сообщений: 10904
Регистрация: 3.7.2004
Пользователь №: 32

|
Цитата сегодня вечером попробую забыл добавить.. tauInt - это уже безразмерное время, отнесённое ко времени квантования, т.е. = TauInt / tauQuant. TauInt - уставка постоянной интегрирования. будете прикручивать Д-часть, учтите, что её надо фильтровать, хотябы экспоненциальным фильтром, иначе будет сильно шуметь... ну, вобщем там много всяких вычислительных фокусов и тонкостей. запустите в "железо", поймёте о чем я...
|
|
|
|
|
1.3.2007, 22:40
|
Группа: Участники форума
Сообщений: 695
Регистрация: 13.4.2005
Из: Киев
Пользователь №: 666

|
Цитата(ttt @ Mar 1 2007, 14:39 ) Ув. Взводатор. Выложите ему хелп по PIDA. Я не умею. Я тоже  Получилось только из старого хелпа сделать на скору руку html страничку. Завтра на работе посмотрю - должны быть pdf и на русском языке. С уважением Взводатор. PS: файл заменен на вытяжку из pdf документации. Как и обещано, на русском.
Сообщение отредактировал Взводатор - 2.3.2007, 10:20
|
|
|
|
|
1.3.2007, 22:49
|
Инженер-физик широкого профиля :-)
Группа: Модераторы
Сообщений: 5577
Регистрация: 27.3.2005
Из: Московская область
Пользователь №: 596

|
Цитата(masterpc @ Mar 1 2007, 15:19 ) Цитата(Lex @ Mar 1 2007, 15:06 ) To masterpc
Если не секрет, сколько в итоге стоит разработанный прибор и инжиниринг (разработка схемы и программа). Просто интересно, стоит ли овчинка выделки, даже в сравнении с овном... от 500 у.е masterpc глупый вопрос: ЗАЧЕМ ВСЕ ЭТО НУЖНО. Купите готовый контроллер с зашитой программой.
|
|
|
|
Гость_masterpc_*
|
1.3.2007, 22:59
|
Guest Forum

|
Цитата(Alex_ @ Mar 1 2007, 22:49 ) Цитата(masterpc @ Mar 1 2007, 15:19 ) Цитата(Lex @ Mar 1 2007, 15:06 ) To masterpc
Если не секрет, сколько в итоге стоит разработанный прибор и инжиниринг (разработка схемы и программа). Просто интересно, стоит ли овчинка выделки, даже в сравнении с овном... от 500 у.е masterpc глупый вопрос: ЗАЧЕМ ВСЕ ЭТО НУЖНО. Купите готовый контроллер с зашитой программой.  Насмешил!!! Я ж разработчик а не пользователь данного девайса. Сей прибор планируться в производство отправить, а мне вообще все равно, что с ним дальше будет, пусть хоть на помойку викинут. Заказали разработку вот я и разработал. Работа моя такая. А за меньше никакой инженер не станет ничего разрабатывать.
|
|
|
|
Гость_masterpc_*
|
2.3.2007, 1:25
|
Guest Forum

|
Цитата(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?
|
|
|
|
|
2.3.2007, 7:02
|
МОДЕРАТОР
Группа: Модераторы
Сообщений: 10904
Регистрация: 3.7.2004
Пользователь №: 32

|
Цитата Как мне использовать в данном коде tauQuant? tauQuant - это, по сути, кол-во вызовов функции Регулятор в секунду. TauInt - уставка постоянной врем.интегрирования, секунды. (это если тауквант считаем за секунду, а если за минуту - то уставку тож следует считать в минутах и т.д.) теория тут http://atm.h1.ru/root/theory/theory33.htmlпользуйте формулу 3.2
|
|
|
|
|
2.3.2007, 10:30
|
Группа: Участники форума
Сообщений: 695
Регистрация: 13.4.2005
Из: Киев
Пользователь №: 666

|
Цитата(masterpc @ Mar 1 2007, 21:59 ) Я ж разработчик а не пользователь данного девайса. Сей прибор планируться в производство отправить, а мне вообще все равно, что с ним дальше будет, пусть хоть на помойку викинут. Заказали разработку вот я и разработал. Работа моя такая. А за меньше никакой инженер не станет ничего разрабатывать. Грустно. Сдается мне, что судьба устройства тоже будет безрадостной. masterpc, Вы хоть представляете, что у Вас впереди еще отладка всей программы в реальных условиях и создание (или ожидание) всех этих условий? Мы к нашей нынешней программе шли года 2, при том, что был уже рабочий прототип, приточек у нас смонтировано достаточно и можно было за ними регулярно наблюдать. Вот и сейчас переходим на следующую версию, которая, правда, не так радикально отличается от текущей, как предшественница. И процесс этот постоянен. Не думаю, что Вам сразу удастся написать универсальный вариант. Файл в предыдущем моем сообщении заменен на вытяжку из pdf документации. Как и обещано, на русском - http://www.abok.ru/index.php?act=A...e=post&id=94818 . С уважением Взводатор.
|
|
|
|
|
2.3.2007, 10:34
|
МОДЕРАТОР
Группа: Модераторы
Сообщений: 10904
Регистрация: 3.7.2004
Пользователь №: 32

|
Цитата Вы хоть представляете, что у Вас впереди еще отладка всей программы в реальных условиях и создание врядли он щас представляет в какой геморр ввязался
|
|
|
|
Гость_masterpc_*
|
2.3.2007, 10:42
|
Guest Forum

|
Цитата(LordN @ Mar 2 2007, 10:34 ) Цитата Вы хоть представляете, что у Вас впереди еще отладка всей программы в реальных условиях и создание врядли он щас представляет в какой геморр ввязался Настройка прибора и тестирование в договор не входит. Это будет делать заказчик. Если ему нужно будет что-то поправить в программе, я сделаю. А гонять прибор в реальных условиях буду не я.
|
|
|
|
|
2.3.2007, 13:08
|
МОДЕРАТОР
Группа: Модераторы
Сообщений: 10904
Регистрация: 3.7.2004
Пользователь №: 32

|
Цитата Настройка прибора и тестирование в договор не входит ну тогда жить проще...
|
|
|
|
|
2.3.2007, 13:40
|
Всегда !
Группа: Участники форума
Сообщений: 1260
Регистрация: 1.7.2005
Из: Новосибирск
Пользователь №: 934

|
Цитата ну тогда жить проще... wink.gif да нет... ни заказчику, ни разработчику.... один задолбается, другого задолбают.
|
|
|
|
Гость_masterpc_*
|
2.3.2007, 14:17
|
Guest Forum

|
Цитата(Lex @ Mar 2 2007, 13:40 ) да нет... ни заказчику, ни разработчику.... один задолбается, другого задолбают. А че задолбают, то? Одно дело кусок проги поменять, другое сидеть сутками прибор настраивать. Вообще что-то тема перешла в другое русло
|
|
|
|
|
2.3.2007, 14:40
|
Инженер-физик широкого профиля :-)
Группа: Модераторы
Сообщений: 5577
Регистрация: 27.3.2005
Из: Московская область
Пользователь №: 596

|
Ну да, в русло ИЗОБРЕТАНИЯ ВЕЛОСИПЕДА... Каждый второй заказчик видя буржуйский контроллер за $$$$, тут же вопит: ЗА ЧТО!!! У меня, дескать, комп дома супернавороченный дешевле стОит. А тут какая-то коробочка. И насколько велик соблазн "коробочку" самому замастырить, настолько же идет недооценка возможных проблем masterpc, у Вас еще все впереди... По-делу: посмотрите отечественные разработки, да хоть тот же ОВЕН (соседняя ветка)
|
|
|
|
Гость_masterpc_*
|
2.3.2007, 15:39
|
Guest Forum

|
Цитата(Alex_ @ Mar 2 2007, 14:40 ) По-делу: посмотрите отечественные разработки, да хоть тот же ОВЕН На счет ОВЕН, я на их сайте статейку почитал, там в формуле ПИДа логарифм, кто-то может объяснить насколько это правильно?
|
|
|
|
|
3.3.2007, 16:28
|
МОДЕРАТОР
Группа: Модераторы
Сообщений: 10904
Регистрация: 3.7.2004
Пользователь №: 32

|
Цитата там в формуле ПИДа логарифм дайте-ка прямую ссылку на неё, я что-то не нашел..
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
Реклама
ООО «Арктика групп» ИНН: 7713634274
Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqvWgxEU
ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqvybpdW
Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx
Последние сообщения Форума
|