Модераторы: Death_Morozz, null, Ale
#define MINACTION -1023
#define MAXACTION 1023
//функция возвращает значение, от MINACTION до MAXACTION, необходимого воздействия по ПИ закону,
//где setItem-заданное значение, getItem-текущее значение, Kp-пропорциональный коэффициент, Ki-интегральный коэффициент
signed int PI(signed char setItem, signed char getItem, float Kp, float Ki)
{
static float Action;
static signed int deltaItem, tempsetItem, Error, sumError, tempError;
deltaItem=setItem-getItem; //необходимое изменение
Error=tempsetItem-getItem; //ошибка воздействия
tempsetItem=setItem; //новое задание стало прошлым
if ((Action>MINACTION)&(Action<MAXACTION)) sumError=sumError+Error; //сумма ошибок, если придел регулирования не достигнут
tempError=Error; //текущая ошибка воздействия стала прошлой
Action=(Kp*deltaItem)+(Ki*sumError); //расчет воздействия
if ((Action>MINACTION)&(Action<MAXACTION)) return (signed int)Action; //возвращает воздействие, если придел регулирования не достигнут
else {if (Action<MINACTION) return MINACTION; if (Action>MAXACTION) return MAXACTION;}; //если воздействие за приделами, возвращает придельные значения
}
kuzevan писал(а):Введена защита от дергания мотора в состоянии покоя.
taran_ob писал(а):Побороть дергание можно, подавая на каждое плече моста одинаковый шим но с инверсией. Это немного уменьшит максимальную скорость, но привод будет, как бы, будет поджат с двух сторон - уменьшается инерционность.
Ale писал(а):А дерганье в состоянии покоя рождается из шумов, выводящих схему из состояния покоя, ИМХО
taran_ob писал(а):В твоем мостике можно это реализовать изменив логику микрухи и-не.
kuzevan писал(а):Если бы на контроллер поступала бы не только следующая координата, но и скорость в ней, то его работу можно было бы значительно улучшить.
Вернуться в X-SIMULATOR и RU-SIMULATOR & SimTools
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 138