在最前面推薦一個(gè)大佬的講解,真的很淺顯易懂,建議先看了解大概PID:鏈接
什么是PID
快速(P)、準(zhǔn)確(I)、穩(wěn)定(D) P:Proportion(比例),就是輸入偏差乘以一個(gè)常數(shù)。 I :Integral(積分),就是對(duì)輸入偏差進(jìn)行積分運(yùn)算。 D:Derivative(微分),對(duì)輸入偏差進(jìn)行微分運(yùn)算。 (輸入偏差=讀出的被控制對(duì)象的值-設(shè)定值。比如說(shuō)我要把溫度控制在26度,但是現(xiàn)在我從溫度傳感器上讀出溫度為28度。則這個(gè)26度就是”設(shè)定值“,28度就是“讀出的被控制對(duì)象的值”。)
1穩(wěn)定性(P和I降低系統(tǒng)穩(wěn)定性,D提高系統(tǒng)穩(wěn)定性):在平衡狀態(tài)下,系統(tǒng)受到某個(gè)干擾后,經(jīng)過(guò)一段時(shí)間其被控量可以達(dá)到某一穩(wěn)定狀態(tài); 2 準(zhǔn)確性(P和I提高穩(wěn)態(tài)精度,D無(wú)作用):系統(tǒng)處于穩(wěn)態(tài)時(shí),其穩(wěn)態(tài)誤差; 3快速性(P和D提高響應(yīng)速度,I降低響應(yīng)速度):系統(tǒng)對(duì)動(dòng)態(tài)響應(yīng)的要求。一般由過(guò)渡時(shí)間的長(zhǎng)短來(lái)衡量。
公式
其中KP為比例增益; TI為積分時(shí)間常數(shù); TD為微分時(shí)間常數(shù); u(t)為控制量(控制器輸出); e(t)為被控量與給定值的偏差。 (具體參數(shù)定義不理解可以參照最上方鏈接)
各個(gè)參數(shù)對(duì)性能影響
1.隨著比例系數(shù)Kp
.隨著比例系數(shù)Kp的增加,超調(diào)量增大(震蕩變嚴(yán)重),系統(tǒng)響應(yīng)速度加快,
2.積分時(shí)間常數(shù)Ti對(duì)控制性能的影響
積分作用的強(qiáng)弱取決于積分常數(shù)Ti。Ti越小,積分作用就越強(qiáng),反之
Ti大則積分作用弱。積分控制的主要作用是改善系統(tǒng)的穩(wěn)態(tài)性能,消除 系統(tǒng)的穩(wěn)態(tài)誤差 (關(guān)于穩(wěn)態(tài)誤差可參考本文最上面那個(gè)鏈接)。當(dāng)系統(tǒng)存在控制誤差時(shí),積分控制就進(jìn)行,直至無(wú)差,積分調(diào)節(jié)停止,積分控制輸出一常值。 加入積分控制可使得系統(tǒng)的相對(duì)穩(wěn)定性變差。Ti值的減小可能導(dǎo)致 系統(tǒng)的超調(diào)量增大,Ti值的增大可能使得系統(tǒng)響應(yīng)趨于穩(wěn)態(tài)值的速度減 慢。
積分控制部分的作用主要是用來(lái)消除靜差。那么積分是怎樣來(lái)消除靜差的呢?
比例控制只能盡量將Err調(diào)節(jié)到0,
而微分的作用是將曲線的斜率控制到0則停止對(duì)其作用,
但斜率為0的時(shí)候Err并不一定為0。
這個(gè)時(shí)候我們就需要積分來(lái)起作用了。
我們知道曲線的積分相當(dāng)于曲線與x軸圍出來(lái)的面積。如下圖,
積分作用的目的是使紅色部分的面積和藍(lán)色部分的面積的和為0,
那么即使系統(tǒng)在比例控制和微分控制部分已經(jīng)趨于穩(wěn)定,
只要Err不為0就會(huì)存在靜差,只要存在靜差那么積分就會(huì)對(duì)系統(tǒng)產(chǎn)生影響,
直到系統(tǒng)的Err值為0 。
那么這樣我們的PID控制在理論上就可以達(dá)到一個(gè)非常精確的控制效果。
3.微分時(shí)間常數(shù)Td對(duì)控制性能的影響
隨著微分時(shí)間常數(shù)Td的增加,閉環(huán)系統(tǒng)響應(yīng)的響應(yīng)速度加快,調(diào)節(jié)
時(shí)間減小。微分環(huán)節(jié)的主要作用是提高系統(tǒng)的響應(yīng)速度。由于該環(huán)節(jié)對(duì) 誤差的導(dǎo)數(shù)(即誤差變化率發(fā)生作用),它能在誤差較大的變化趨勢(shì)時(shí)施加 合適的控制。 但是過(guò)大的Kd值會(huì)因?yàn)橄到y(tǒng)造成或者受控對(duì)象的大時(shí)間延遲而出現(xiàn) 問(wèn)題。微分環(huán)節(jié)對(duì)于信號(hào)無(wú)變化或變化緩慢的系統(tǒng)不起作用。
作用機(jī)理: 微分代表error變化斜率,下降時(shí)候其為負(fù)數(shù); Err隨時(shí)間是一條斜率小于0的曲線,那么在周期時(shí)間內(nèi),Err越大,微分的絕對(duì)值越大,那么也就對(duì)Err的減小速度是起到抑制的作用的,直到最后斜率為0微分才會(huì)停止作用。
PID作用
比例控制:能迅速反映誤差,從而減小誤差,但比例控制不能消除穩(wěn)態(tài)誤 差,KP的加大會(huì)引起系統(tǒng)的不穩(wěn)定;
積分控制的作用是:只要系統(tǒng)存在誤差,積分控制作用就不斷地積累, 輸出控制量以消除誤差。因此只要有足夠的時(shí)間,積分控制將能完全消 除誤差,但是積分作用太強(qiáng)會(huì)使系統(tǒng)超調(diào)加大,甚至使系統(tǒng)出現(xiàn)振蕩;
微分控制:可以減小超調(diào)量,克服振蕩,使系統(tǒng)的穩(wěn)定性提高,同時(shí)加快 系統(tǒng)的動(dòng)態(tài)響應(yīng)速度,減小調(diào)整時(shí)間,從而改善系統(tǒng)的動(dòng)態(tài)性能。
位置型控制算法
位置閉環(huán)控制就是根據(jù)編碼器的脈沖累加測(cè)量電機(jī)的位置信息,并與目標(biāo)值進(jìn)行比較,得到控制偏差,然后通過(guò)對(duì)偏差的比例、積分、微分進(jìn)行控制,使偏差趨向于零的過(guò)程。
代碼:
int Position_PID (int Encoder,int Target)
{
static float Bias,Pwm,Integral_bias,Last_Bias;
Bias=Encoder-Target; //計(jì)算偏差
Integral_bias+=Bias; //求出偏差的積分
Pwm=Position_KP*Bias+Position_KI*Integral_bias+Position_KD*(Bias-Last_Bias);
Last_Bias=Bias; //保存上一次偏差
return Pwm; //輸出
}
假設(shè)采樣時(shí)間間隔為T,則在k時(shí)刻: 偏差為e(k); 積分為e(k)+e(k-1)+e(k-2)+…+e(0); 微分為(e(k)-e(k-1))/T; 從而公式離散化后如下: 比例系數(shù):Kp,
積分系數(shù):Kp*T/Ti,可以用Ki表示;
微分系數(shù):Kp*Td/T,可以用Kd表示;
則公式可以寫成如下形式:
增量型控制算法
速度閉環(huán)控制就是根據(jù)單位時(shí)間獲取的脈沖數(shù)(這里使用了M法測(cè)速)測(cè)量電機(jī)的速度信息,并與目標(biāo)值進(jìn)行比較,得到控制偏差,然后通過(guò)對(duì)偏差的比例、積分、微分進(jìn)行控制,使偏差趨向于零的過(guò)程。 Pwm+=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)] e(k):本次偏差 e(k-1):上一次的偏差 e(k-2):上上次的偏差 Pwm代表增量輸出 在我們的速度控制閉環(huán)系統(tǒng)里面只使用PI控制,因此對(duì)PID控制器可簡(jiǎn)化為以下公式: Pwm+=Kp[e(k)-e(k-1)]+Kie(k)
代碼實(shí)現(xiàn)
int Incremental_PI (int Encoder,int Target)
{
static float Bias,Pwm,Last_bias;
Bias=Encoder-Target; //計(jì)算偏差
Pwm+=Velocity_KP*(Bias-Last_bias)+Velocity_KI*Bias; //增量式PI控制器
Last_bias=Bias; //保存上一次偏差
return Pwm; //增量輸出
}
增量式控制算法的優(yōu)點(diǎn)
(1) 增量算法不需要做累加,控制量增量的確定僅與最近幾次誤差采
樣值有關(guān),計(jì)算誤差或計(jì)算精度問(wèn)題,對(duì)控制量的計(jì)算影響較小。而位 置算法要用到過(guò)去的誤差的累加值,容易產(chǎn)生大的累加誤差。 (2)增量式算法得出的是控制量的增量,例如閥門控制中、只輸出閥 門開度的變化部分,誤動(dòng)作影響小,必要時(shí)通過(guò)邏輯判斷限制或禁止本 次輸出,不會(huì)嚴(yán)重影響系統(tǒng)的工作。而位置算法的輸出是控制量的全量 輸出,誤動(dòng)作影響大。 (3) 采用增量算法,易于實(shí)現(xiàn)手動(dòng)到自動(dòng)的無(wú)沖擊切換。 (4) 利用增量算法,也很容易得出位置算法u(k)= u(k-1)+△u(k)
如何調(diào)節(jié)pid三個(gè)參數(shù)(重點(diǎn))
PID算法具有三大特性: ① 穩(wěn)定性 ② 快速性 ③ 準(zhǔn)確性 其實(shí)有時(shí)候并不一定都得用上 比如自動(dòng)停車系統(tǒng)或者自動(dòng)蓄水系統(tǒng)只需要用到1和3 剎車時(shí)用到123等等 接下來(lái)會(huì)舉例說(shuō)明
概念須知: 最大超調(diào)量:是響應(yīng)曲線的最大峰值與穩(wěn)態(tài)值的差,是評(píng)估系統(tǒng)穩(wěn)定性的一個(gè)重要指標(biāo);
上升時(shí)間:是指響應(yīng)曲線從原始工作狀態(tài)出發(fā),第一次到達(dá)輸出穩(wěn)態(tài)值所需的時(shí)間,是評(píng)估系統(tǒng)快速性的一個(gè)重要指標(biāo);
靜差:是被控量的穩(wěn)定值與給定值之差,一般用于衡量系統(tǒng)的準(zhǔn)確性,
接下來(lái)我們需要調(diào)整KP,KI,KD的數(shù)值以達(dá)到最高效率
KP=500,KI=0,KD=0.響應(yīng)曲線如圖
特點(diǎn): 比例控制較大,出現(xiàn)了震蕩
需要加入微分d控制抑制
積分控制為零,但是沒有靜差,因?yàn)楸壤刂戚^強(qiáng) (注意:經(jīng)測(cè)試比例系數(shù)過(guò)大之后可減少靜差出現(xiàn))
KP=50,KI=0,KD=0.響應(yīng)曲線如圖
特點(diǎn): 比例控制kp減小,無(wú)震蕩,響應(yīng)變慢了
無(wú)積分控制且比例控制較弱時(shí),會(huì)出現(xiàn)靜差(積分減少靜差)
KP=500,KI=0,KD=400.響應(yīng)曲線如圖
特點(diǎn): 1.在比例控制較強(qiáng)的情況下,加入比較大的微分控制,震動(dòng)次數(shù)較小。 2.微分控制較大,響應(yīng)變慢
KP=120,KI=0.1,KD=500.響應(yīng)曲線如圖
特點(diǎn):
目標(biāo):控制電機(jī)轉(zhuǎn)90°,需要嚴(yán)格控制超調(diào)量、和靜差。但是對(duì)響應(yīng)速度無(wú)要求。
1.因?yàn)轫憫?yīng)速度無(wú)要求,一般比例控制應(yīng)該給小一點(diǎn)。 2.加大系統(tǒng)的阻尼防止超調(diào),也就是微分參數(shù)盡量大。 3.另外因?yàn)楸壤齾?shù)較小,應(yīng)該加入積分控制減小靜差。
參考1 參考2 PID講四軸飛行器 PID控制電機(jī)
|