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

 
 
> ПИД регулятор на АВР
Anton_1000
сообщение Feb 1 2009, 15:01
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 13-01-09
Из: г.Севастополь
Пользователь №: 43 288



Уважаемые знатоки ПИД, я собрал регулятор на основе алгоритма закодированного на С в AVR221. Меня интересует правильно ли учтены И и Д составляющие. Можно ли их как-то усовершенствовать. Не понятно как учтено время интегрирования и диффренцирования?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Anton_1000
сообщение Feb 3 2009, 05:09
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 36
Регистрация: 13-01-09
Из: г.Севастополь
Пользователь №: 43 288



Рассчитанное значение пид-регулятора нормируется к значение ШИМ от 0 до 511 (9 разрядов). Далее преобразуется в пневматический сигнал для управления мембранным исполнительным механизмом с помощью которого регулируется давление в паропроводе. Вопрос состоит в том нужно ли учитывать время между соседними измерениями рассогласования, ведь в приедённом коде этого не делается, а код из AN.

CODE
error = setPoint - processValue;

// Calculate Pterm and limit error overflow
if (error > pid_st->maxError)
p_term = MAX_INT;
else if (error < -pid_st->maxError)
p_term = -MAX_INT;
else
p_term = pid_st->P_Factor * error;

// Calculate Iterm and limit integral runaway
temp = pid_st->sumError + error;
if(temp > pid_st->maxSumError){
i_term = MAX_I_TERM;
pid_st->sumError = pid_st->maxSumError;
}
else if(temp < -pid_st->maxSumError){
i_term = -MAX_I_TERM;
pid_st->sumError = -pid_st->maxSumError;
}
else{
pid_st->sumError = temp;
i_term = pid_st->I_Factor * pid_st->sumError;
}

// Calculate Dterm
d_term = pid_st->D_Factor * (pid_st->lastProcessValue - processValue);

pid_st->lastProcessValue = processValue;

ret = (p_term + i_term + d_term) / SCALING_FACTOR;
if(ret > MAX_INT){
ret = MAX_INT;
}
else if(ret < -MAX_INT){
ret = -MAX_INT;
Причина редактирования: Оформление цитирования исходника в соответствующий тэг - codebox.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 03:03
Рейтинг@Mail.ru


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