реклама на сайте
подробности

 
 
> ПИД регулятор на ARM
kanzler
сообщение Jul 17 2008, 04:02
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 340
Регистрация: 27-02-06
Из: Екатеринбург
Пользователь №: 14 728



Господа! Прошу подсказать где можно взять программный модуль(на Си) ПИД регулятора под ARM?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SpyBot
сообщение Jul 23 2008, 18:42
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491



ИМХО против ограничения интегральной части выступают те, кто не работал с двигателями smile.gif
Т.е. понятно, что при регулировке температуры или потока газа, ошибка будет минимальной и, видимо, беспокоится об интегральной части не нужно.
Но в приводе двигателя, когда нагрузка может поменяться от минус фактически бесконечности smile.gif к плюс, интегральной части надо уделять самое пристальное внимание.
Да и вобще не понятно - измеряем целыми числами, на выходе (тот же ШИМ) тоже целые, так зачем нам плавучка??? smile.gif
Цитата(маша @ Jul 22 2008, 10:19) *
Вобщем мысль была такая: при ограничении интеграла по знаку ошибки, необходимо учитывать и величину ошибки... всё.

На таком принципе удавалось сделать более-менее устойчивый И-регулятор smile.gif
Go to the top of the page
 
+Quote Post
Dir
сообщение Jul 24 2008, 06:09
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830



Цитата(SpyBot @ Jul 23 2008, 21:42) *
ИМХО против ограничения интегральной части выступают те, кто не работал с двигателями smile.gif
Т.е. понятно, что при регулировке температуры или потока газа, ошибка будет минимальной и, видимо, беспокоится об интегральной части не нужно.
Но в приводе двигателя, когда нагрузка может поменяться от минус фактически бесконечности smile.gif к плюс, интегральной части надо уделять самое пристальное внимание.
Да и вобще не понятно - измеряем целыми числами, на выходе (тот же ШИМ) тоже целые, так зачем нам плавучка??? smile.gif

Вообще то это я говорил, что делал регулятор для стабилизации потока и, наверное, должен ответить.
Приведите пример бесконечно отрицательной и бесконечно положительной нагрузки, тогда я вам может и поверю. А так нагрузка либо есть, либо ее нет. Соответственно нельзя приложить бесконечное регулирующее воздействие любого знака, чтобы компенсировать возмущение.
И, в конце концов, пояснит ли кто-нибуть чем конкретно не нравится простая и логичная операция из одной команды, которая не позволяет неограниченно расти интегральному терму, которое я привел в начале темы (топик 12):
Код
...
    fError = fSetPoint - fProcessValue;
...
    fsError = pid->fSumError + fError;
    fIterm = pid->fKi * fsError;
...
    fRet = fPterm + fDterm + fIterm + pid->fMinPID;
//
    if (fRet > pid->fMaxPID)
        return (WORD)(pid->fMaxPID);
    else if (fRet < pid->fMinPID)
        return (WORD)(pid->fMinPID);
    pid->fSumError = fsError;
    return (WORD)fRet;

Т.е. сравнимаем полученное регулирующее воздействие (fRet) с границами регулирования (pid->fMinPID, pid->fMaxPID) и если оно выходит за эти границы, то интегральный терм (pid->fSumError) замораживается, т.к. просто программа не доходит до его обновления. Мы, фактически, выбором этих границ и регулируем наш I-терм. О каком пристальном внимании речь? И просьба пояснить чем плохо именно данное решение, а не приводить примеры, вводящие дополнительные ограничения I-терма.
А насчет того, зачем тут плавучка я уже говорил: сравните текст программы в AVR221 в целочисленном виде и приведенный в топике 12 данной темы ее плавучий аналог и все станет ясно. Программа скукоживается в несколько раз, все внимание разработчика к процессу, а не к особенностям реализации в целых числах. Запасов производительности у ARMа, как правило, хватает.
PS. Для профи это, конечно, не аргумент. Они оперируют понятиями "робастности" и т.п. У них свои критерии и свои объекты регулирования: атомные станции, ракетоносители, авиатехника... А что делать простым программистам и электронщикам у которых такая задача как, например, управление потоком CO2 или его температурой стоит раз в 3 года и занимает 0,01%. Утром поставили задачу и до обеда ждут решения в железе. Отлаживать целочисленку ни времени, ни аргументов не хватает.
Go to the top of the page
 
+Quote Post
маша
сообщение Jul 24 2008, 08:23
Сообщение #4


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 7-11-05
Пользователь №: 10 537



Цитата(Dir @ Jul 24 2008, 10:09) *
И, в конце концов, пояснит ли кто-нибуть чем конкретно не нравится простая и логичная операция из одной команды, которая не позволяет неограниченно расти интегральному терму

Да куда же еще ему позволять расти интегральному терму, когда выход у вас уже в максимуме??? Это же равносильно ограничивать сам интеграл значениями fMaxPID и fMinPID, разница на П и Д составляющие небольшая и скорее всего не принципиальная. Это базовый вариант любого ПИД.
Нужно решать проблему, когда при неизменной уставке знак ошибки сохраняется длительное время, а интеграл накапливается. Вскоре он дойдет конечно же до максимума или минимума значения выхода. Но что будет с самим объектом, выдержит ли он максимальное управляющее воздействие чтобы отрегулировать параметр, который ни в какую не хочет регулироваться?
А может у вас есть еще методика расчета значений fMaxPID и fMinPID для всех режимов работы объекта? или это просто максимальное значения разрядности, например ШИМ?
Go to the top of the page
 
+Quote Post
Dir
сообщение Jul 24 2008, 19:32
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 201
Регистрация: 6-01-05
Пользователь №: 1 830



Цитата(маша @ Jul 24 2008, 11:23) *
А может у вас есть еще методика расчета значений fMaxPID и fMinPID для всех режимов работы объекта? или это просто максимальное значения разрядности, например ШИМ?


Особой методики нет. Просто экспериментальным путем подбираю эти макс. и мин. значения ШИМ, чтобы регулируемая величина достаточно быстро доходила до минимума и максимума и при возврате назад в регулируемую область ощутимой задержки не было. Обычно 2...4 итераций хватает. Занимает времени меньше, чем подбор коэффициентов ПИД. А потом, как правило, пересчитываю параметры регулятора так, чтобы диапазон регулировки ШИМ был от 5 до 95% для всего диапазона выходных величин.
PS. Пересчитывать или нет, переделывать или нет определяется чаще всего причинами, напрямую к регулированию касательства не имеющими.
Go to the top of the page
 
+Quote Post
alexander55
сообщение Jul 25 2008, 04:58
Сообщение #6


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Цитата(Dir @ Jul 24 2008, 23:32) *
Особой методики нет.

Пусть закон регулятора ПИ
U[i]=Kп*X[i] + Ки*Sum(X[i])
Пусть Umax - модуль максимальной величины U[i]
Sum_max=Umax/Ki - модуль максимального значения интегральной суммы, т.е.
ограничения в (+) Sum_max, а в (-) -Sum_max.
Не правда ли очень просто и ясно ?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- kanzler   ПИД регулятор на ARM   Jul 17 2008, 04:02
- - маша   Цитата(kanzler @ Jul 17 2008, 08:02) Госп...   Jul 17 2008, 06:36
- - KSN   Возьмите PID регулятор для AVR в Application Note....   Jul 17 2008, 07:05
- - MrYuran   Цитата(kanzler @ Jul 17 2008, 07:02) Госп...   Jul 17 2008, 07:42
|- - маша   Продолжая оффтоп... А вы смайлики вообще правильно...   Jul 17 2008, 08:29
|- - Dir   Цитата(MrYuran @ Jul 17 2008, 10:42) А че...   Jul 17 2008, 09:46
|- - SpyBot   Цитата(Dir @ Jul 17 2008, 13:46) О, очень...   Jul 17 2008, 15:47
||- - Dir   Цитата(SpyBot @ Jul 17 2008, 18:47) Я счи...   Jul 20 2008, 16:55
||- - Tanya   Цитата(Dir @ Jul 20 2008, 20:55) Куда в р...   Jul 20 2008, 17:43
||- - Dir   Цитата(Tanya @ Jul 20 2008, 20:43) ... Пр...   Jul 20 2008, 17:53
|||- - Tanya   Цитата(Dir @ Jul 20 2008, 21:53) Не иллюз...   Jul 21 2008, 07:11
||- - _Pasha   Цитата(Tanya @ Jul 20 2008, 20:43) интегр...   Jul 20 2008, 18:01
||- - Dir   Цитата(_Pasha @ Jul 20 2008, 21:01) +1000...   Jul 20 2008, 18:09
|- - alexander55   Цитата(Dir @ Jul 17 2008, 13:46) О, очень...   Jul 21 2008, 06:44
- - khach   Может глупость скажу. National Instruments недавно...   Jul 17 2008, 10:50
- - VAI   Вот здесь ещё посмотрите: http://src.caxapa.ru/297   Jul 17 2008, 11:26
- - kanzler   Всем кто откликнулся - Огромное спасибо! Согла...   Jul 17 2008, 14:55
- - Rst7   Цитатада и быстродействие нужно, с чем AVR вряд ли...   Jul 17 2008, 16:38
- - _Pasha   Цитата(Dir @ Jul 20 2008, 21:09) Какая де...   Jul 20 2008, 18:40
|- - Dir   Пока не рабирал, т.к. воскресенье и думать совсем ...   Jul 20 2008, 19:52
|- - _Pasha   Цитата(Dir @ Jul 20 2008, 22:52) Т.е. поч...   Jul 20 2008, 19:57
|- - Dir   Цитата(_Pasha @ Jul 20 2008, 22:57) Не ...   Jul 20 2008, 20:00
- - _Pasha   Повторю, что сказала Таня, но своими словами. Выхо...   Jul 20 2008, 20:28
|- - Dir   Дневная жара спала и наконец-то возратилась способ...   Jul 20 2008, 22:12
|- - _Pasha   Цитата(Dir @ Jul 21 2008, 01:12) Структур...   Jul 20 2008, 22:46
|- - Dir   Цитата(_Pasha @ Jul 21 2008, 01:46) fLast...   Jul 21 2008, 05:17
- - маша   Некоторые соображения по поводу ограничения интегр...   Jul 21 2008, 05:02
- - _Pasha   Цитата(маша @ Jul 21 2008, 08:02) Некотор...   Jul 21 2008, 06:18
|- - маша   Цитата(_Pasha @ Jul 21 2008, 10:18) Зачем...   Jul 21 2008, 12:00
|- - Dir   Цитата(_Pasha @ Jul 21 2008, 09:18) Ну не...   Jul 21 2008, 19:52
|- - alexander55   Цитата(Dir @ Jul 21 2008, 23:52) Я уже н...   Jul 22 2008, 05:45
|- - маша   Цитата(alexander55 @ Jul 22 2008, 09:45) ...   Jul 22 2008, 06:19
||- - alexander55   Цитата(маша @ Jul 22 2008, 10:19) Вобщем ...   Jul 22 2008, 06:28
|- - Dir   Цитата(alexander55 @ Jul 22 2008, 08:45) ...   Jul 22 2008, 20:39
|- - alexander55   Цитата(Dir @ Jul 23 2008, 00:39) ??? А мо...   Jul 23 2008, 04:32
- - Goofy   Для того, чтобы регулятор функционаровал прогнозир...   Jul 21 2008, 17:16
- - _Pasha   Цитата(маша @ Jul 21 2008, 15:00) Огранич...   Jul 21 2008, 19:45
|- - alexander55   Цитата(_Pasha @ Jul 21 2008, 23:45) Нет, ...   Jul 22 2008, 05:29
|- - маша   Цитата(_Pasha @ Jul 21 2008, 23:45) Нет...   Jul 22 2008, 05:38
- - _Pasha   Цитата(alexander55 @ Jul 22 2008, 08:29) ...   Jul 22 2008, 07:39
|- - alexander55   Цитата(_Pasha @ Jul 22 2008, 11:39) В смы...   Jul 22 2008, 08:44
|- - MrYuran   Цитата(alexander55 @ Jul 22 2008, 12:44) ...   Jul 22 2008, 09:01
|- - alexander55   Цитата(MrYuran @ Jul 22 2008, 13:01) А пр...   Jul 22 2008, 09:29
||- - _Pasha   Цитата(alexander55 @ Jul 22 2008, 12:29) ...   Jul 22 2008, 10:07
||- - alexander55   Цитата(_Pasha @ Jul 22 2008, 14:07) У мен...   Jul 22 2008, 10:17
||- - _Pasha   Цитата(alexander55 @ Jul 22 2008, 13:17) ...   Jul 22 2008, 10:32
||- - alexander55   Цитата(_Pasha @ Jul 22 2008, 14:32) Обман...   Jul 22 2008, 10:34
||- - Tanya   Цитата(alexander55 @ Jul 22 2008, 14:34) ...   Jul 22 2008, 11:05
||- - alexander55   Цитата(Tanya @ Jul 22 2008, 15:05) Вы не ...   Jul 22 2008, 11:21
|- - Tanya   Цитата(MrYuran @ Jul 22 2008, 13:01) Я не...   Jul 22 2008, 10:16
|- - Tanya   Цитата(SpyBot @ Jul 23 2008, 22:42) ИМХО ...   Jul 24 2008, 06:10
|- - alexander55   Цитата(Tanya @ Jul 24 2008, 10:10) Если о...   Jul 24 2008, 07:46
- - маша   Еще как вариант неявного ограничения интеграла это...   Jul 24 2008, 05:13
- - _Pasha   Цитата(маша @ Jul 24 2008, 08:13) Еще как...   Jul 24 2008, 06:13


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 22:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01538 секунд с 7
ELECTRONIX ©2004-2016