pid演算法實現
㈠ 一文搞懂PID控制演算法
PID演算法是工業應用中最廣泛演算法之一,在閉環系統的控制中,可自動對控制系統進行准確且迅速的校正。PID演算法已經有100多年歷史,在四軸飛行器,平衡小車、汽車定速巡航、溫度控制器等場景均有應用。
之前做過循跡車項目,簡單循跡搖擺幅度較大,效果如下所示:
PID演算法優化後,循跡穩定性能較大提升,效果如下所示:
PID演算法:就是「比例(proportional)、積分(integral)、微分(derivative)」,是一種常見的「保持穩定」控制演算法。
常規的模擬PID控制系統原理框圖如下所示:
因此可以得出e(t)和u(t)的關系:
其中:
Kp:比例增益,是調適參數;
Ki:積分增益,也是調適參數;
Kd:微分增益,也是調適參數;
e:誤差=設定值(SP)- 回授值(PV);
t:目前時間。
數學公式可能比較枯燥,通過以下例子,了解PID演算法的應用。
例如,使用控制器使一鍋水的溫度保持在50℃,小於50℃就讓它加熱,大於50度就斷電不就行了?
沒錯,在要求不高的情況下,確實可以這么干,如果換一種說法,你就知道問題出在哪裡了。
如果控制對象是一輛汽車呢?要是希望汽車的車速保持在50km/h不動,這種方法就存在問題了。
設想一下,假如汽車的定速巡航電腦在某一時間測到車速是45km/h,它立刻命令發動機:加速!
結果,發動機那邊突然來了個100%全油門,嗡的一下汽車急加速到了60km/h,這時電腦又發出命令:剎車!結果乘客吐......
所以,在大多數場合中,用「開關量」來控制一個物理量就顯得比較簡單粗暴了,有時候是無法保持穩定的,因為單片機、感測器不是無限快的,採集、控制需要時間。
而且,控制對象具有慣性,比如將熱水控制器拔掉,它的「余熱」即熱慣性可能還會使水溫繼續升高一小會。
此時就需要使用PID控制演算法了。
接著咱再來詳細了解PID控制演算法的三個最基本的參數:Kp比例增益、Ki積分增益、Kd微分增益。
1、Kp比例增益
Kp比例控制考慮當前誤差,誤差值和一個正值的常數Kp(表示比例)相乘。需要控制的量,比如水溫,有它現在的 當前值 ,也有我們期望的 目標值 。
當兩者差距不大時,就讓加熱器「輕輕地」加熱一下。
要是因為某些原因,溫度降低了很多,就讓加熱器「稍稍用力」加熱一下。
要是當前溫度比目標溫度低得多,就讓加熱器「開足馬力」加熱,盡快讓水溫到達目標附近。
這就是P的作用,跟開關控制方法相比,是不是「溫文爾雅」了很多。
實際寫程序時,就讓偏差(目標減去當前)與調節裝置的「調節力度」,建立一個一次函數的關系,就可以實現最基本的「比例」控制了~
Kp越大,調節作用越激進,Kp調小會讓調節作用更保守。
若你正在製作一個平衡車,有了P的作用,你會發現,平衡車在平衡角度附近來回「狂抖」,比較難穩住。
2、Kd微分增益
Kd微分控制考慮將來誤差,計算誤差的一階導,並和一個正值的常數Kd相乘。
有了P的作用,不難發現,只有P好像不能讓平衡車站起來,水溫也控製得晃晃悠悠,好像整個系統不是特別穩定,總是在「抖動」。
設想有一個彈簧:現在在平衡位置上,拉它一下,然後鬆手,這時它會震盪起來,因為阻力很小,它可能會震盪很長時間,才會重新停在平衡位置。
請想像一下:要是把上圖所示的系統浸沒在水裡,同樣拉它一下 :這種情況下,重新停在平衡位置的時間就短得多。
此時需要一個控製作用,讓被控制的物理量的「變化速度」趨於0,即類似於「阻尼」的作用。
因為,當比較接近目標時,P的控製作用就比較小了,越接近目標,P的作用越溫柔,有很多內在的或者外部的因素,使控制量發生小范圍的擺動。
D的作用就是讓物理量的速度趨於0,只要什麼時候,這個量具有了速度,D就向相反的方向用力,盡力剎住這個變化。
Kd參數越大,向速度相反方向剎車的力道就越強,如果是平衡小車,加上P和D兩種控製作用,如果參數調節合適,它應該可以站起來了。
3、Ki積分增益
Ki積分控制考慮過去誤差,將誤差值過去一段時間和(誤差和)乘以一個正值的常數Ki。
還是以熱水為例,假如有個人把加熱裝置帶到了非常冷的地方,開始燒水了,需要燒到50℃。
在P的作用下,水溫慢慢升高,直到升高到45℃時,他發現了一個不好的事情:天氣太冷,水散熱的速度,和P控制的加熱的速度相等了。
這可怎麼辦?
P兄這樣想:我和目標已經很近了,只需要輕輕加熱就可以了。
D兄這樣想:加熱和散熱相等,溫度沒有波動,我好像不用調整什麼。
於是,水溫永遠地停留在45℃,永遠到不了50℃。
根據常識,我們知道,應該進一步增加加熱的功率,可是增加多少該如何計算呢?
前輩科學家們想到的方法是真的巧妙,設置一個積分量,只要偏差存在,就不斷地對偏差進行積分(累加),並反應在調節力度上。
這樣一來,即使45℃和50℃相差不是太大,但是隨著時間的推移,只要沒達到目標溫度,這個積分量就不斷增加,系統就會慢慢意識到:還沒有到達目標溫度,該增加功率啦!
到了目標溫度後,假設溫度沒有波動,積分值就不會再變動,這時,加熱功率仍然等於散熱功率,但是,溫度是穩穩的50℃。
Ki的值越大,積分時乘的系數就越大,積分效果越明顯,所以,I的作用就是,減小靜態情況下的誤差,讓受控物理量盡可能接近目標值。
I在使用時還有個問題:需要設定積分限制,防止在剛開始加熱時,就把積分量積得太大,難以控制。
PID演算法的參數調試是指通過調整控制參數(比例增益、積分增益/時間、微分增益/時間) 讓系統達到最佳的控制效果 。
調試中穩定性(不會有發散性的震盪)是首要條件,此外,不同系統有不同的行為,不同的應用其需求也不同,而且這些需求還可能會互相沖突。
PID演算法只有三個參數,在原理上容易說明,但PID演算法參數調試是一個困難的工作,因為要符合一些特別的判據,而且PID控制有其限制存在。
1、穩定性
若PID演算法控制器的參數未挑選妥當,其控制器輸出可能是不穩定的,也就是其輸出發散,過程中可能有震盪,也可能沒有震盪,且其輸出只受飽和或是機械損壞等原因所限制。不穩定一般是因為過大增益造成,特別是針對延遲時間很長的系統。
2、最佳性能
PID控制器的最佳性能可能和針對過程變化或是設定值變化有關,也會隨應用而不同。
兩個基本的需求是調整能力(regulation,干擾拒絕,使系統維持在設定值)及命令追隨 (設定值變化下,控制器輸出追隨設定值的反應速度)。有關命令追隨的一些判據包括有上升時間及整定時間。有些應用可能因為安全考量,不允許輸出超過設定值,也有些應用要求在到達設定值過程中的能量可以最小化。
3、各調試方法對比
4、調整PID參數對系統的影響
㈡ 用PID演算法實現溫度控制
第一步:把器件等各種實物連上...
第二步:開環,對PWM的控溫信號加階躍(改變PWM的占空比),由輸入輸出的結果大致得出加熱器的數學模型
第三部:由理論公式整定出PID參數
第四部:根據實際結果調節PID以達到你想要的指標
㈢ 什麼是「PID演算法」
「PID演算法」在過程式控制制中,按偏差的比例(P)、積分(I)和微分(D)進行控制的PID控制器(亦稱PID調節器)是應用最為廣泛的一種自動控制器。
它具有原理簡單,易於實現,適用面廣,控制參數相互獨立,參數的選定比較簡單等優點;而且在理論上可以證明,對於過程式控制制的典型對象──「一階滯後+純滯後」與「二階滯後+純滯後」的控制對象,PID控制器是一種最優控制。
PID調節規律是連續系統動態品質校正的一種有效方法,它的參數整定方式簡便,結構改變靈活(PI、PD、…)。
控制點包含三種比較簡單的PID控制演算法,分別是:增量式演算法,位置式演算法,微分先行。 這三種PID演算法雖然簡單,但各有特點,基本上能滿足一般控制的大多數要求。
PID增量式演算法
離散化公式:
△u(k)= u(k)- u(k-1)
△u(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)]
進一步可以改寫成
△u(k)=Ae(k)-Be(k-1)+Ce(k-2)。
㈣ 關於Android系統實現PID演算法控制溫度
第一步:把器件等各種實物連上
第二步:開環,對PWM的控溫信號加階躍(改變PWM的占空比),由輸入輸出的結果大致得出加熱器的數學模型
第三部:由理論公式整定出PID參數
第四部:根據實際結果調節PID以達到你想要的指標
㈤ PID演算法實現該系統控制
增量式PID控製程序:
%Increment PID Controller
clear all
close all
ts=0.005;
sys=tf([0.1,10],[0.0004,0.0454,0.555,1.51,11],'inputdelay',0.2);
dsys=c2d(sys,ts,'z');
[num den]=tfdata(dsys,'v');
for k=1:44
yout(k)=0;
end
u_1=0;u_2=0;u_3=0;u_4=0;
y_1=0.0;y_2=0.0;y_3=0.0;y_4=0.0;
x=[0,0,0];error_1=0,error_2=0;
kp=0.016;ki=0.056;kd=1
for k=45:1000
time(k)=k*ts;
kp=0.55,ki=0,kd=0;
rin(k)=1.0;
(k)=kp*x(1)+kd*x(2)+ki*x(3);
u(k)=u_1+(k);
yout(k)=-den(2)*y_1-den(3)*y_2-den(4)*y_3-den(5)*y_4+num(1)*u_1+num(2)*u_2+num(3)*u_3+num(4)*u_4
error=rin(k)-yout(k);
u_4=u_3;u_3=u_2;u_2=u_1;u_1=u(k);
y_4=y_3;y_3=y_2;y_2=y_1;y_1=yout(k);
x(1)=error-error_1; %calculating p
x(2)=error-2*error_1+error_2; %calculating d
x(3)=error; %calculating i
error_2=error_1;error_1=error;
end
figure(1);
plot(time,rin,'b',time,yout,'r');
xlabel('time(s)'),ylabel('rin,yout');
title('單位階躍響應曲線')
Z-N法整定:
clear all
close all
ts=0.005;
sys=tf([0.1,10],[0.0004,0.0454,0.555,1.51,11],'inputdelay',0.2);
dsys=c2d(sys,ts,'z');
rlocus(dsys)
㈥ PID控制器是如何實現的
In the conventional PID control algorithm, the proportional, integral and derivative parts are implemented in the forward loop, thus acting on the error between the set-point and closed-loop response. This PID controller implementation may lead to an undesirable phenomenon, namely the derivative kick. Also, by moving the PD part into an inner feedback loop, an unstable or integrating process can be stabilized and then controlled more effectively by the PI controller in the forward path. 在傳統的 PID 控制演算法中將因此根據之間設置點和閉環響應錯誤的正向循環中實現比例、 積分和衍生金融工具的部件。 此 PID 控制器實現可能會導致一個不良的現象就是衍生的踢。 同時,通過將局部放電的一部分移動到一個內部反饋循環,一個不穩定的或將集成過程可以穩定,然後向前路徑中的 PI 控制器通過更有效地控制。
Therefore, the control structure shown in Fig. 1, which is known as a PI-PD control structure, has been proposed. In this structure, G(s) is the plant transfer function因此,提出控制結構,稱為 PI-PD 控制結構的圖 1 所示。 在這種結構 G(s) 是植物傳遞函數
and GPI(s) and GPD(s) are the PI and PD controller transfer functions, respectively, which have the following ideal forms: 與 GPI(s) 和 GPD(s) PI 和 PD 控制器傳輸功能,分別是,哪有以下的理想形式:
This structure, which uses an inner feedback loop, is not a totally new concept. Benouarets [11] was the first to mention the PI-PD controller structure. Unfortunately, its true potential was not recognized there as it was used to control plants with simple stable real pole transfer functions where its advantages are relatively minor. Later, Kwak et al. [6] and Park et al. [2] used a PID-P control structure for controlling integrating and unstable processes, respectively. However, as they still use the derivative term, D, in the forward path, the structure這種結構,使用一個內反饋循環,不是一種全新的概念。 Benouarets [11] 率先提 PI-PD 控制器結構。 不幸的是,它的真正潛力未被識別存在,它用來控制植物與真正的簡單穩定桿傳遞函數,其優點是相對較小。 稍後,郭 et al.[6] 和 [2] 公園 et al.,分別控制集成和不穩定的進程使用-P PID 控制結構。 但是,作為他們仍使用該結構正向的路徑中的衍生金融工具的術語 D,
may result in a derivative kick. Also, they use a gain only controller to alter the open-loop unstable or integrating processes to open-loop stable processes and then可能會導致衍生的踢。 他們還,改變開環穩定進程的開環不穩定或集成過程使用增益唯一控制器,然後
use the PID controller for an effective control of the overall system. It is better to use an inner feedback loop with a PD controller rather than a P-only controller, as this not only converts the open-loop unstable or integrating processes to open-loop stable processes but also guarantees more suitable pole locations. To clarify this better, consider the PD controller of the form given by
Eq. 2 and a general plant transfer function of 使用一個有效的控制整個系統的 PID 控制器。 最好 PD 控制器,而不是一個只 P 的控制器使用一個內反饋循環,因為這不僅能將開環不穩定或集成流程轉換為開環穩定進程,也保證了更適合桿位置。 若要更好地闡明這,考慮給予式 2 和一個總廠傳遞函數的窗體的 PD 控制器The closed-loop transfer function for the inner loop, 在內部的循環的閉環傳遞函數
with G(s) given by Eq. 3, is獲式 3 G(s),是
provided that n>m+2. The modification in the last two erms of the denominator of Eq. 4, e to the insertion f the PD controller used in the feedback loop, is clear. 提供該 n > m + 2。 由於到使用反饋及時插入 f 規劃署控制器的式 4,分母的最後兩個條款的修改是清晰
Let us assume that the coefficients a0 and a1 take suitable alues to make the plant transfer function given in Eq. 3 unstable, integrating or a resonant plant transfer讓我們假定您與系數 a0 a1 採取適當 alues 進行傳遞函數方程 3 不穩定,集成中給出的植物或共振的植物傳輸
function. The PD controller used in the inner feedback loop can be used to convert it to an open-loop stable plant transfer function for the PI controller used in the函數。 內反饋循環中使用的 PD 控制器可用來將其轉換為一個開環穩定植物傳遞函數中使用的 PI 控制器,
forward loop, which can then be used for a more satisfactory closed-loop performance. Another point, which should be pointed out, is that the use of the PI-PD controller gives more flexibility than a PID-P controller to locate the poles of open-loop plant transfer function Gil(s) in more desired locations, with the simultaneous轉發,然後可用於更令人滿意的閉環性能的循環。 應該指出,另一點是 PI-PD 控制器的使用提供更大的靈活性,比在更多所需的位置,同時與找到的開環植物傳遞函數 Gil(s) 桿將-P PID 控制器
use of Kf and Td rather than a gain-only parameter Kf. 使用的 Kf 和 Td 而不是只增益參數 Kf
呵呵,在線翻譯的。
㈦ PID的計算公式
PID的增量型公式:
PID=Uk+KP*【E(k)-E(k-1)】+KI*E(k)+KD*【E(k)-2E(k-1)+E(k-2)】
PID演算法具體分兩種:一種是位置式的 ,一種是增量式的。
位置式PID的輸出與過去的所有狀態有關,計算時要對e(每一次的控制誤差)進行累加,這個計算量非常大,而明顯沒有必要。而且小車的PID控制器的輸出並不是絕對數值,而是一個△,代表增多少,減多少。換句話說,通過增量PID演算法,每次輸出是PWM要增加多少或者減小多少,而不是PWM的實際值。所以明白增量式PID就行了。
PID控制原理:
本系統通過擺桿(輥)反饋的位置信號實現同步控制。收線控制採用實時計算的實際卷徑值,通過卷徑的變化修正PID前饋量,可以使整個系統准確、穩定運行。
PID系統特點:
1、主驅動電機速度可以通過電位器來控制,把S350設置為SVC開環矢量控制,將模擬輸出端子FM設定為運行頻率,從而給定收卷用變頻器的主速度。
2、收卷用S350變頻器的主速度來自放卷(主驅動)的模擬輸出埠。擺桿電位器模擬量
信號通過CI通道作為PID的反饋量。S350的頻率源採用主頻率Ⅵ和輔助頻率源PID疊加的方式。通過調整運行過程PID參數,可以獲得穩定的收放卷效果。
3、本系統啟用邏輯控制和卷徑計算功能,能使系統在任意卷徑下平穩啟動,同時兩組PID參數可確保生產全程擺桿控制效果穩定。