實例詳解PID控制算法的應用

1.簡介
PID控制算法作爲自動控制系統中廣泛應用的一種控制算法,小到控制一個元件的溫度,大到控制無人機的飛行姿態和飛行速度等等,都可以使用PID控制。控制器問世至今已有近 70 年曆史,它以其結構簡單、穩定性好、工作可靠、調整方便而成爲工業控制的主要技術之一。
經過幾十年的發展,PID 控制及其控制器或智能 PID 控制器(儀表)已經很多,產品已在工程實際中得到了廣泛的應用,有各種各樣的 PID 控制器產品,各大公司均開發了具有 PID 參數自整定功能的智能調節器(intelligent regulator),其中 PID 控制器參數的自動調整是通過智能化調整或自校正、自適應算法來實現。

2.PID控制原理及特點
PID,就是“比例(proportional)、積分(integral)、微分(derivative)”三個調節參數的縮寫,而將偏差的比例(Proportion)、積分(Integral)和微分(Differential)通過線性組合構成控制量,用這一控制量對被控對象進行控制,這樣的控制器便稱 PID 控制器。
在這裏插入圖片描述
PID調節器是一種線性調節器,它將給定值r(t)與實際輸出值c(t)的偏差的比例§、積分(I)、微分(D)通過線性組合構成控制量,對控制對象進行控制。
(1)PID控制器的微分方程
在這裏插入圖片描述
(2)PID調節器的傳遞函數
在這裏插入圖片描述
(3)PID調節器各校正環節的作用
1.比例環節:即時成比例地反應控制系統的偏差信號e(t),偏差一旦產生,調節器立即產生控制作用以減小偏差。
數學表達式: 在這裏插入圖片描述
2.積分環節:主要用於消除靜差,提高系統的無差度。積分作用的強弱取決於積分時間常數TI,TI越大,積分作用越弱,反之則越強。
數學表達式: 在這裏插入圖片描述
3.微分環節:能反應偏差信號的變化趨勢(變化速率),並能在偏差信號的值變得太大之前,在系統中引入一個有效的早期修正信號,從而加快系統的動作速度,減小調節時間。
數學表達式: 在這裏插入圖片描述

3.數字PID控制器
在計算機控制系統中,由於控制是使用採樣控制,它只能根據採樣時刻的偏差計算控制量,而不能像模擬控制那樣連續輸出控制量量,進行連續控制。所以數字PID控制也屬於離散型控制系統。數字型PID控制算法可分爲位置式PID和增量式PID控制算法。

  1. 位置式PID:位置式PID控制的輸出與整個過去的狀態有關,用到了誤差的累加值;
  2. 增量式PID:而增量式PID的輸出只與當前拍和前兩拍的誤差有關,

(1) 位置式PID
由於是離散型控制系統,積分項和微分項不能直接使用,必須進行離散化處理。離散化處理的方法爲:以 T 作爲採樣週期,k 作爲採樣序號,則離散採樣時間 kT 對應着連續時間t,用矩形法數值積分近似代替積分,用一階後向差分近似代替微分,可作如下近似變換:
在這裏插入圖片描述
根據以上公式的轉換,便可得到離散的PID表達式
在這裏插入圖片描述
位置式PID算法的特點:
由於全量輸出,所以每次輸出均與過去狀態有關,計算時要對ek進行累加,工作量大;並且,因爲計算機輸出的uk 對應的是執行機構的實際位置,如果計算機出現故障,輸出的 uk將大幅度變化,會引起執行機構的大幅度變化,有可能因此造成嚴重的生產事故,這在實生產際中是不允許的。

(2) 增量式PID
所謂增量式 PID 是指數字控制器的輸出只是控制量的增量∆uk。當執行機構
需要的控制量是增量,而不是位置量的絕對數值時,可以使用增量式PID控制算法進行控制。
增量式 PID 控制算法可以通過位置式PID公式推導出。由位置式PID公式可以得到控制器的第 k-1 個採樣時刻的輸出值爲:
在這裏插入圖片描述
增量式PID算法的特點:
增量式 PID 控制算法與位置式 PID 算法公式相比,如果計算機控制系統採用恆定的採樣週期 T,一旦確定Kp、Ti、Td參數,只要使用前後三次測量的偏差值,就可以由增量式PID公式求出控制量。計算量小的多,因此在實際中得到廣泛的應用。

4.實例講解
下面列舉一個溫度控制實例來講解增量式PID控制算法的應用。
要使用 PID 算法控制的系統某個參數,必須有該參數的相關反饋變量。比如,現在要控制水箱的溫度,那我們就得通過溫度傳感器採集得到的反饋數據。通過設定水箱的目標溫度,採用增量式 PID控制算法,控制水箱的加溫元件,使得水箱在不同的外界溫度下還是保持在目標速度附近波動。
(1)設置PID參數及變量
首先,我們定義溫度的目標溫度、PID是比例、積分、微分常數,及前後三次偏差值

int16 High_temp 	= 50;	//預設溫度上限
int16 Low_temp		= 30;	//預設溫度下限
int16 Set_temp      = 45;     //設置目標溫度
   
int16 Proportion	= 64;	// 比例常數 Proportional Const   
int16 Integral  	= 0;	// 積分常數 Integral Const   
int16 Derivative	= 54;	// 微分常數 Derivative Const   
float LastError;			// Error[-1]     
float PrevError;			// Error[-2]   
float SumError;	  		// Sums of Errors

(2)PID運算函數
在實際運算時,由於水具有很大的熱慣性,而且PID 運算中的I(積分項)具有非常明顯的延遲效應,積分項常數不宜過大或者可直接省略積分環節,下面C 代碼所示爲PD 控制的實現過程:

float PID_Calc(float NextPoint ,float SetPoint)
{
	 //增量法計算公式:
 	 //Pdt=Kp*[E(t)-E(t-1)]+Ki*E(t)+Kd*[E(t)-2*E(t-1)+E(t-2)]
	float D_Error,Error;
	float II;
	Error = SetPoint-NextPoint;			//偏差
	SumError+=Error;					// 積分
	D_Error =LastError-PrevError;		// 當前微分
	PrevError =  LastError;
	LastError =  Error;
	II = Integral*SumError/10000.0;		//積分縮小10000倍
	if(II>30)			 //積分飽和限制
	{
		II=30;	
	}
	return (Proportion*Error+II+Derivative*D_Error);
}

(3)水箱實際溫度控制
水箱的水溫加熱棒控制採用PWM的控制,PWM佔空比越大,加熱速度越快。以下函數爲當目標溫度大於實際溫度時,PID控制器工作,對加溫進行控制;當目標溫度小於實際溫度時,PWM佔空比爲0,停止加熱。

void Control_Temp(void)
{
	Now_temp = Temp_numbe;
	Target_temp =  Set_temp;
	if(Now_temp>High_temp)
	{
		PWM_duty = 0;	
	}
	else
	{
		Temp_Out = PID_Calc(Now_temp,Target_temp);	
		if(Temp_Out >= 100) 	Temp_Out = 100;
		else if(Temp_Out <=0)	Temp_Out = 0;
		//不同的溫度設置不同的比例補償熱量損失
		//Temp_Out = Temp_Out+Target_temp/80.0*20; 		
		PWM_duty = (int)Temp_Out;
	}	
}

通過以上三個步驟,然後設定適當的採樣時間,便完成了PID控制算法的實現。然後我們便可根據實際的控制環境,對比例、積分、微分參數逐一進行整定。

如果您喜歡,可關注個人公衆號“電子應用學習館”,獲取更多的資料例程。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章