PID调节问题
我借鉴网上的PID程序 下面这个是源程序我知道#define Err_max 45
#define Err_min -45
#define PID_Kp 1.2
#define PID_Ki 0.7
#define PID_Kd 0.5
这几个参数是可以调整的 但不知道调整的原则是什么求问!
对于计算增量的函数是否也可以调整呢? 但调整的原则是什么呢?我模拟测试的结果是曲线非常震荡 要不就是不震荡 但永远达不到预期的目标 怎么解决 求问?
头文件:
#define Err_max 45
#define Err_min -45
#define PID_Kp 1.2
#define PID_Ki 0.7
#define PID_Kd 0.5
typedef struct PID
{
float SetPoint;
floatProportion;
floatIntegral;
floatDerivative;
float LastError;
float PrevError;
} PID;
static PID sPID;
static PID *sptr;
函数文件:
static PID sPID;
static PID *sptr=&sPID;
void PID_Init(void)
{
sptr->LastError = 0; //Error[-1]
sptr->PrevError = 0; //Error[-2]
sptr->Proportion = PID_Kp;
sptr->Integral = PID_Ki;
sptr->Derivative = PID_Kd;
sptr->SetPoint = 0;
}
float IncPIDCalc(float NextPoint)
{
float iError, iIncpid;
iError = sptr->SetPoint - NextPoint;
if(iError>Err_max)
{
iError=Err_max;
}
if(iError<Err_min)
{
iError=Err_min;
}
iIncpid = sptr->Proportion * iError //E
- sptr->Integral * sptr->LastError //E
+ sptr->Derivative * sptr->PrevError; //E
sptr->PrevError = sptr->LastError;
sptr->LastError = iError;
return iIncpid;
} 微分量用角速度代替构成角速度环,角度环只用PI控制,调节顺序是先调节角速度环,使其阻尼效果显著但不至于振荡即可。在调节角度环PI参数,有了角速度环的阻尼作用调节角度环的PI就轻而易举了。。。。 lc125253647 发表于 2014-3-4 22:25
微分量用角速度代替构成角速度环,角度环只用PI控制,调节顺序是先调节角速度环,使其阻尼效果显著但不至于 ...
你的意思是先调节D 看模拟图像不振荡再调接P和I? 是这样吗? elmagnificoam 发表于 2014-3-6 16:54
你的意思是先调节D 看模拟图像不振荡再调接P和I? 是这样吗?
恩恩 用角速度做为分量产生阻尼效应 加速收敛 所以要先调节微分量参数 使其在干扰下迅速稳定 即使不在平衡位置也不要紧 只要稳定即可 谢谢 谢谢谢谢谢谢谢谢
页:
[1]