PID控制算法的C语言实现五 积分分离的PID控制算法C语言实现

   在普通PID控制中,引入积分环节的目的主要是为了消除静差,提高控制精度。但在过程的启动、结束或大幅度增减设定时,短时间内系统输出有很大的偏差,会造成PID运算的积分积累,致使控制量超过执行机构可能允许的最大动作范围对应的极限控制量,引起系统较大的振荡,这在生产中是绝对不允许的。 

积分分离控制基本思路是,当被控量与设定值偏差较大时,取消积分作用,以免由于积分作用使系统稳定性降低,超调量增大;当被控量接近给定量时,引入积分控制,以便消除静差,提高控制精度

具体实现的步骤是: 

1、根据实际情况,人为设定阈值ε>0; 

2、当∣e (k)∣>ε时,采用PD控制,可避免产生过大的超调,又使系统有较快的响应; 

3、当∣e (k)∣≤ε时,采用PID控制,以保证系统的控制精度 

 

<体现的思想就是分段控制> 

积分分离控制算法可表示为:

为了克服这一问题,引入了积分分离的概念,其基本思路是 当被控量与设定值偏差较大时,取消积分作用; 当被控量接近给定值时,引入积分控制,以消除静差,提高精度。其具体实现代码如下

 

if (abs(pid.err) > 200)
	{
		index = 0;

	}
	else
	{
		index = 1;
		pid.integral += pid.err;
	}
	
	
	pid.voltage = pid.Kp * pid.err + pid.Ki*pid.integral + pid.Kd*(pid.err - pid.err_last);

  

系统到199所有的时间是原来时间的1/2(这里我没有算时间,不过运算次数确实是减少了),系统的快速性得到了提高。

 

转载于:https://www.cnblogs.com/wyuzl/p/6515759.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值