增量式pid和位置式PID参数整定过程对比

//增量式PID
float IncPIDCalc(PID_Typedef* PIDx,float SetValue,float MeaValue,float err)//err»ý·Ö·ÖÀë³£Êý
{
	float index;
	PIDx->Error = SetValue - MeaValue;
	if(fabs(PIDx->Error)>err)//积分分离
    {
        index=0;
    }
    else{
        index=1;
    }
	PIDx->PWM_Inc = (PIDx->P * (PIDx->Error - PIDx->PreError)) \
			+ (index*PIDx->I * PIDx->Error) \
			+ (PIDx->D * ((PIDx->Error - PIDx->PreError) - (PIDx->PreError - PIDx->PrePreError)));
	PIDx->PrePreError = PIDx->PreError;
	PIDx->PrePreError = PIDx->Error;
	
	return PIDx->PWM_Inc ;
}

首先先要明确,增量式pid和位置式pid本质是一样的,本次增量式pid的输出是由本次位置式pid的输出减去上次位置式的输出得到的。对比一下

位置式:u(k) =Kp*e(k)+Ki*∑e(k)+Kd[e(k)-e(k-1)]

增量式:u(k) =Kp[e(k)-e(k-1)]+Ki*e(k)+Kd[e(k)-2e(k-1)+e(k-2)]

可以看出增量式的KP和位置式的kd一样,增量式的ki和位置式的kp一样。所以对于增量式的参数整定,应该先整定KI,它反映了响应的速度,再整定KP,它反映了对超调量的限制,也就是缓减增量式KI参数过大时候的抖动

位置式PID:

比例项只考虑现在有没有偏差,现在有偏差就开始控制,现在偏差越大,控制效果越明显。

积分项根据历史数据输出控制信号,如果历史总体超标就要减小输出信号,如果历史不达标那要大量输出控制信号

微分项只关注偏差有没有变化趋势,偏差有了变化趋势才开始控制(而不是偏差存不存在),即偏差的变化率。

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值