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(這里我沒有算時間,不過運算次數確實是減少了),系統的快速性得到了提高。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM