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

 
 
> ПИД регулятор для ВИРД двигателя, Програмная реализация
ELEKTROS
сообщение Apr 20 2012, 08:11
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Скажите у кого нибудь есть ПИД регулятор написанный на С/С++ для управления вентильным двигателем (SRM в зарубежной литературе). Да знаю можно погуглить, но толком исходников нету. Как расчитать Pi воздействия (диапазон он -1 до 1) труда не представляет, там сплошняком формулы из книжек, интересно реализация конкретно под этот двигатель и как это Pi воздействие перенести на длительность импульсов особо не используя коэффициенты, потому что коэффициенты подбирать хлопотно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 2)
1108
сообщение May 28 2012, 07:59
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 9-09-07
Пользователь №: 30 401



Вот программная реализация пид регулятора от тексиса.
Единственно для математики с псевдоплавающей точкой но принцип понятен.
Еще есть неплохое описание с исходниками у АД

void pid_reg3_calc(PIDREG3 *v)
{
// Compute the error
v->Err = v->Ref - v->Fdb;

// Compute the proportional output
v->Up = _IQmpy(v->Kp,v->Err);

// Compute the integral output
v->Ui = v->Ui + _IQmpy(v->Ki,v->Up) + _IQmpy(v->Kc,v->SatErr);

// Compute the derivative output
v->Ud = _IQmpy(v->Kd,(v->Up - v->Up1));

// Compute the pre-saturated output
v->OutPreSat = v->Up + v->Ui + v->Ud;

// Saturate the output
if (v->OutPreSat > v->OutMax)
v->Out = v->OutMax;
else if (v->OutPreSat < v->OutMin)
v->Out = v->OutMin;
else
v->Out = v->OutPreSat;

// Compute the saturate difference
v->SatErr = v->Out - v->OutPreSat;

// Update the previous proportional output
v->Up1 = v->Up;

}
Go to the top of the page
 
+Quote Post
ELEKTROS
сообщение Jul 31 2012, 11:24
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 294
Регистрация: 29-06-11
Пользователь №: 65 952



Сделал как в апноуте у AVR числа без точек просто умноженное на какое то число (128 - чтоб считалось быстрее), ну а так принцип тотже, классический ПИ - регулятор, П составляющая как разность и И-составляющая как сумма. каждую составляющую ограничиваем и ПИ воздействие нормирую на управляющий угол, причём 1 это максимально возможная длительность импульса, -1 минимально возможное, а нулевое воздействие это текущий угол, вообщем получилось еще две линейные функции после расчёта ПИ воздействия.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 13:17
Рейтинг@Mail.ru


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