Size: a a a

🎄Embedded Group

2021 January 23

AM

Aleksander Mironov in 🎄Embedded Group
Ну вот на примере.
Начальная 10, уставка 100. Настраиваю так, что охрененно ровно выходит на уставку и держит.
Но если начальная будет 30, то I не успевает набрать эмм "ВЕС" и соответственно случается недорегулирование, а во время этого  I наоборот перенабирает и тут же идет перерегулирование.

ПС Я тау не знаю, полегче со мной.
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Aleksander Mironov
Ну вот на примере.
Начальная 10, уставка 100. Настраиваю так, что охрененно ровно выходит на уставку и держит.
Но если начальная будет 30, то I не успевает набрать эмм "ВЕС" и соответственно случается недорегулирование, а во время этого  I наоборот перенабирает и тут же идет перерегулирование.

ПС Я тау не знаю, полегче со мной.
регулятор настроен через опу не настроен вообще
источник

A

Aleksandr Zharov in 🎄Embedded Group
Ponytale 🇷🇺
так что это такое?
Это некие коэф фильтра, которые с некой тау приводят в начальные условия
источник

AM

Aleksander Mironov in 🎄Embedded Group
Я вижу выход в том, что бы сделать коэффициент еще один, влияющий на dI в зависимости от ошибки.
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Aleksandr Zharov
Это некие коэф фильтра, которые с некой тау приводят в начальные условия
стало еще непонятнее
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Aleksander Mironov
Я вижу выход в том, что бы сделать коэффициент еще один, влияющий на dI в зависимости от ошибки.
не придумывай велосипед. настраивай регулятор)
источник

A

Aleksandr Zharov in 🎄Embedded Group
Aleksandr Zharov
Это некие коэф фильтра, которые с некой тау приводят в начальные условия
Из любого положения. Это альтернатива "мягкого" обнуления буфера фильтра
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Aleksandr Zharov
Из любого положения. Это альтернатива "мягкого" обнуления буфера фильтра
алгоритм в студию
источник

AM

Aleksander Mironov in 🎄Embedded Group
Ponytale 🇷🇺
не придумывай велосипед. настраивай регулятор)
Если бы я был еще уверен, что его правильно написал =)
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Aleksander Mironov
Если бы я был еще уверен, что его правильно написал =)
float PID_U1_yi = 0;
void PID_U1_RESET() {PID_U1_yi = 0;}
float PID_U1(float delta)
{
 /* константы */
 #define kp (20)//10
 #define ki (50)//20
 #define hd (4e-3)  /*Шаг счета - изменяется обратно пропорционально частоте вызова регулятора */
 /*пропорциональная часть - не нуждается в статической переменной */
 #define yp (kp*delta)
 float tmp;

   if (delta > 50) delta = 50;
 else if (delta < -50) delta = -50;
   /* интегральная часть */
 PID_U1_yi = PID_U1_yi + hd*ki*delta;  
 if(PID_U1_yi < -0x1000) PID_U1_yi = -0x1000;
 else if(PID_U1_yi > 0x1000) PID_U1_yi = 0x1000;
 
 tmp = yp + PID_U1_yi;
 if(tmp < 0) tmp = 0;
 else if(tmp > 0x1000) tmp = 0x1000;
 return tmp;

 #undef kp
 #undef ki
 #undef hd
 #undef yp
}
источник

A

Aleksandr Zharov in 🎄Embedded Group
Ponytale 🇷🇺
стало еще непонятнее
Допусти, что система вошла в резонанс или испытала внешнее воздействие за пределами допустимого. Меняешь коэф. И ждешь пока все успокоится
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Ponytale 🇷🇺
float PID_U1_yi = 0;
void PID_U1_RESET() {PID_U1_yi = 0;}
float PID_U1(float delta)
{
 /* константы */
 #define kp (20)//10
 #define ki (50)//20
 #define hd (4e-3)  /*Шаг счета - изменяется обратно пропорционально частоте вызова регулятора */
 /*пропорциональная часть - не нуждается в статической переменной */
 #define yp (kp*delta)
 float tmp;

   if (delta > 50) delta = 50;
 else if (delta < -50) delta = -50;
   /* интегральная часть */
 PID_U1_yi = PID_U1_yi + hd*ki*delta;  
 if(PID_U1_yi < -0x1000) PID_U1_yi = -0x1000;
 else if(PID_U1_yi > 0x1000) PID_U1_yi = 0x1000;
 
 tmp = yp + PID_U1_yi;
 if(tmp < 0) tmp = 0;
 else if(tmp > 0x1000) tmp = 0x1000;
 return tmp;

 #undef kp
 #undef ki
 #undef hd
 #undef yp
}
гм. тут Д-части неть) ща
источник

AM

Aleksander Mironov in 🎄Embedded Group
Ponytale 🇷🇺
гм. тут Д-части неть) ща
как понимаю с ТЭН она и не нужна.
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Aleksander Mironov
как понимаю с ТЭН она и не нужна.
не нужна
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
как понятно - это из рабочего проекта. ограничивающие условия таки есть
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
также как и ресет интегральной части
источник

AM

Aleksander Mironov in 🎄Embedded Group
Ponytale 🇷🇺
гм. тут Д-части неть) ща
Еще такой момент, имеет значение кол-во иттераций алгоритма, относительно  кол-ва замеров? Потому, что у меня время замера плавает и я просто беру предыдущее значение, если оно не обновилось.
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
Aleksander Mironov
Еще такой момент, имеет значение кол-во иттераций алгоритма, относительно  кол-ва замеров? Потому, что у меня время замера плавает и я просто беру предыдущее значение, если оно не обновилось.
имеет значение частота вызова регулятора - для И и Д части
источник

P

Ponytale 🇷🇺 in 🎄Embedded Group
собсна точно также как и фильтры оперируют не конкретной частотой а частотой сигнала деленной на частоту дискретизации
источник

AM

Aleksander Mironov in 🎄Embedded Group
Ponytale 🇷🇺
имеет значение частота вызова регулятора - для И и Д части
Но как я понимаю, в случае с И частью это просто отразится на коэффициенте? Т.е. при более частом вызове, придется уменьшить И?
источник