|
ПИД регулятор на ARM |
|
|
|
 |
Ответов
|
Jul 17 2008, 07:42
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(kanzler @ Jul 17 2008, 07:02)  Господа! Прошу подсказать где можно взять программный модуль(на Си) ПИД регулятора под ARM? Цитата Под АРМ не нашла... А чем собственно ПИД под АРМ отличается от ПИД под АВР? или PC? Тем более если на си? "Дайте мне, пожалуйста, глобус Украины" - вот это что напоминает. Сорри за офтоп. Не удержался.
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Jul 17 2008, 15:47
|
Местный
  
Группа: Свой
Сообщений: 285
Регистрация: 5-11-05
Пользователь №: 10 491

|
Цитата(Dir @ Jul 17 2008, 13:46)  О, очень многим  При реализации алгоритма ПИД на ARM в подавляющем большинстве случаев можно вообще не заморачиваться эффектами насыщения интегрального терма. Работай в лоб с флоутами (и даже даблами) и в ус не дуй. Быстродействия хватает. Для AVR же приходится морочиться с целочисленной арифметикой, перекалибровками, следить за границами термов... В общем, ARMы для ПИДов зверски упрощают жизнь  Я считаю, что, наоборот, необходимо следить за границами, особенно интегральной части. Иначе это может привести к неприятным эффектам. ЗЫ: немного непонятно, что значит "морочится с целочисленной арифметикой"? Что за перекалибровки?
|
|
|
|
|
Jul 20 2008, 16:55
|

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

|
Цитата(SpyBot @ Jul 17 2008, 18:47)  Я считаю, что, наоборот, необходимо следить за границами, особенно интегральной части. Иначе это может привести к неприятным эффектам. ЗЫ: немного непонятно, что значит "морочится с целочисленной арифметикой"? Что за перекалибровки? Так все ж про него, про Аппнот Атмеля, который про ПИД. Вот какой он есть для AVR: http://atmel.com/dyn/resources/prod_documents/AVR221.ziphttp://atmel.com/dyn/resources/prod_documents/doc2558.pdfИ вот что от него остается для ARM: Код typedef struct { float fKp; float fKi; float fKd; float fLastProcessValue; float fSumError; float fMaxPID; float fMinPID; } PID_DATA; Код WORD ContrPID(float fSetPoint, float fProcessValue, PID_DATA *pid) { float fError, fPterm, fDterm, fIterm, fRet, fsError; fError = fSetPoint - fProcessValue; // Вычисление P-терма fPterm = pid->fKp * fError; // Вычисление D-терма fDterm = pid->fKd * (fProcessValue - pid->fLastProcessValue); pid->fLastProcessValue = fProcessValue; // Вычисление I-терма 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; } Остается добавить инициализацию и ... фсе, можно использовать Конкретный пример: Код void FlowRatePID(void) { WORD U_reg; // вычисление нижней и верхней границы переменной регулирования PidDataFR.fMinPID = DELTA_LOWLIM + K_LOWLIM * fPin; PidDataFR.fMaxPID = DELTA_HIGHLIM + K_HIGHLIM * fPin; // вычисление коеффициентов Kp, Ki, Kd PidDataFR.fKp = fKpFR; PidDataFR.fKi = fKiFR; PidDataFR.fKd = fKdFR; // регулирование U_reg = ContrPID(fSetFlowRate, fFlowRate, &PidDataFR); setPWM_pr(U_reg); } Куда в реальной жизни может убежать интегральный терм, если он во флоуте? Или в дабле? Это в целом виде он может переполнить 16-битную разрядную сетку (AN221). PS. Пример реальный, но писался очень давно для регулирования скорости расхода газа (Flow Rate) регулятором на ARM по мотивам AN221. Тонкости уже подзабылись. PPS. "Для ARM" это я, конечно, говорю условно. Ничто не мешает его и на AVR запустить. Но вот что-то не много я знаю людей, которые на AVR свободно флоутами и даблами ворочают. Все боятся (и правильно!), что производительности не хватит...
|
|
|
|
|
Jul 20 2008, 17:43
|
Гуру
     
Группа: Модераторы
Сообщений: 8 752
Регистрация: 6-01-06
Пользователь №: 12 883

|
Цитата(Dir @ Jul 20 2008, 20:55)  Куда в реальной жизни может убежать интегральный терм, если он во флоуте? Или в дабле? Это в целом виде он может переполнить 16-битную разрядную сетку (AN221). PS. Пример реальный, но писался очень давно для регулирования скорости расхода газа (Flow Rate) регулятором на ARM по мотивам AN221. Тонкости уже подзабылись. Уважаемые господа! Я, лично, а может не только я... думаю, что с какой точностью и с какой разрядностью ни считай, интегральная часть не должна расти больше, чем нужно. иными словами, пока ошибка больше некоторой, должен работать пропорциональный и дифференциальный члены... (во время переходного процесса). Надо учитывать реальности объекта регулирования. При изменении задающего параметра его скорость нужно ограничивать или не трогать интегральный член... Тогда зашкала не будет. Правильный алгоритм и в целых числах будет нормально работать, переход на плавующую арифметику ничего не улучшит, а только иллюзию создаст.
|
|
|
|
Сообщений в этой теме
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 маша Продолжая оффтоп... А вы смайлики вообще правильно... Jul 17 2008, 08:29      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 SpyBot ИМХО против ограничения интегральной части выступа... Jul 23 2008, 18:42 Dir Цитата(SpyBot @ Jul 23 2008, 21:42) ИМХО ... Jul 24 2008, 06:09  маша Цитата(Dir @ Jul 24 2008, 10:09) И, в кон... Jul 24 2008, 08:23   Dir Цитата(маша @ Jul 24 2008, 11:23) А может... Jul 24 2008, 19:32    alexander55 Цитата(Dir @ Jul 24 2008, 23:32) Особой м... Jul 25 2008, 04:58 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
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|