一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

stm32直流電機(jī)控制—PID算法篇

 昵稱(chēng)OI3mu8Zs 2022-05-08 發(fā)布于山西省

一、常用的控制算法

1.控制系統(tǒng)的基本結(jié)構(gòu):


控制系統(tǒng)的基本結(jié)構(gòu)如圖:
在這里插入圖片描述

控制目的:
控制的根本目的就是要使控制對(duì)象當(dāng)前的狀態(tài)值與用戶(hù)的設(shè)定值相同(最大限度的接近)。

基本思想:
用戶(hù)設(shè)定值SV與被控制對(duì)象當(dāng)前的值PV兩者同時(shí)送入由特定硬件電路模型或特定的軟件算法組成的控制算法邏輯中,利用不同的控制算法對(duì)SV和PV進(jìn)行分析、判斷、處理,從而產(chǎn)生當(dāng)前應(yīng)該輸出的控制信號(hào)OUT,控制信號(hào)經(jīng)過(guò)執(zhí)行機(jī)構(gòu)施加到控制對(duì)象上,從而產(chǎn)生預(yù)期的控制效果。


2.常用控制算法:位式控制

①二位式控制算法

二位式控制算法具體控制邏輯如圖所示:

在這里插入圖片描述
特點(diǎn):
a. 二位式控制算法輸出的控制量只有高低2種狀態(tài)。

b. 執(zhí)行機(jī)構(gòu)使控制對(duì)象要不全額工作,要不就停止工作。當(dāng)PV低于SV時(shí)全額工作,PV大于或等于SV時(shí)就徹底停止工作。如果控制對(duì)象是一個(gè)1000W的加熱器,溫度不到時(shí)就1000W全功率運(yùn)行,溫度達(dá)到時(shí)就停止工作。

c. 由于環(huán)境因素或控制系統(tǒng)傳輸延時(shí)或者控制對(duì)象本身的慣性等因素,控制效果往往是PV在SV的上下有一個(gè)較大的波動(dòng)。

d. 在PV接近SV的臨界點(diǎn)時(shí),控制輸出信號(hào)OUT往往在H和L之間頻繁轉(zhuǎn)換,導(dǎo)致執(zhí)行部件的觸點(diǎn)頻繁開(kāi)關(guān)動(dòng)作,易產(chǎn)生干擾及縮短執(zhí)行部件的壽命。


②.具有回差的二位式控制算法

具有回差的二位式控制算法具體控制邏輯如圖所示:
在這里插入圖片描述
特點(diǎn):
a. 取SV的正負(fù)10%左右作為回差調(diào)節(jié)上下限,高于上限才開(kāi)始輸出L,低于下限才開(kāi)始輸出H;

b.避免了一般二位式控制算法在臨界點(diǎn)時(shí)執(zhí)行部件頻繁動(dòng)作。

c.因?yàn)榭刂茖?duì)象只有全額運(yùn)行或不運(yùn)行兩種狀態(tài),仍然存在一般二位式控制算法的缺點(diǎn):PV總是在SV附近波動(dòng)。


③三位式控制算法

三位式控制算法具體控制邏輯如圖所示:
在這里插入圖片描述
特點(diǎn):

a.在二位式控制的基礎(chǔ)上對(duì)控制對(duì)象的功率分成0功率(停止工作)、半功率、全功率三種情況(即三位)。

b.當(dāng)前值低于設(shè)定值一定比例(一般10%)時(shí)OUT1和OUT2同時(shí)起控制作用,控制對(duì)象全功率運(yùn)行;

c.當(dāng)前值在設(shè)定值的正負(fù)10%范圍時(shí),OUT1單獨(dú)作用,工作于半功率狀態(tài);

d.當(dāng)前值達(dá)到或超過(guò)設(shè)定值時(shí)OUT1和OUT2都停止輸出,控制對(duì)象停止工作。

e.相對(duì)一般二位式控制算法,三位式算法對(duì)控制對(duì)象的當(dāng)前狀態(tài)值做了簡(jiǎn)單的分析,并根據(jù)不同的當(dāng)前狀態(tài)值輸出不同的控制信號(hào)。能夠較好的對(duì)輸出產(chǎn)生控制效果。


④小結(jié)

位式控制的主要特征:
a.控制算法只關(guān)注控制當(dāng)前的狀態(tài)值(PV)與設(shè)定值之間的差值—二者當(dāng)前有差值就輸出控制信號(hào),二者當(dāng)前無(wú)差值就不輸出控制信號(hào)。

b…位式控制算法的輸出信號(hào)狀態(tài)單一,只輸出了高低兩種狀態(tài),這兩種狀態(tài)對(duì)應(yīng)著控制對(duì)象的工作與不工作----如果是溫度控制系統(tǒng),就是加熱器加熱與不加熱。

c.由于控制系統(tǒng)自身的延時(shí)或者控制對(duì)象自身的慣性,位式控制算法只能使控制對(duì)象當(dāng)前的狀態(tài)值在設(shè)定值附件波動(dòng),不能很好的跟蹤在設(shè)定值的附近甚至相等。


二、PID控制算法

1.PID控制算法的基本思想

PID控制控制算法具體控制邏輯如圖所示:
在這里插入圖片描述
PID算法是一種具有預(yù)見(jiàn)性的控制算法,其核心思想是:

①. PID算法不但考慮控制對(duì)象的當(dāng)前狀態(tài)值(現(xiàn)在狀態(tài)),而且還考慮控制對(duì)象過(guò)去一段時(shí)間的狀態(tài)值(歷史狀態(tài))和最近一段時(shí)間的狀態(tài)值變化(預(yù)期),由這3方面共同決定當(dāng)前的輸出控制信號(hào);

②.PID控制算法的運(yùn)算結(jié)果是一個(gè)數(shù),利用這個(gè)數(shù)來(lái)控制被控對(duì)象在多種工作狀態(tài)(比如加熱器的多種功率,閥門(mén)的多種開(kāi)度等)工作,一般輸出形式為PWM,基本上滿(mǎn)足了按需輸出控制信號(hào),根據(jù)情況隨時(shí)改變輸出的目的。


2.PID算法分析

設(shè)某控制系統(tǒng):用戶(hù)設(shè)定值為SV(也就是希望通過(guò)PID控制算法使被控制對(duì)象的狀態(tài)值保持在SV的附件)。

①?gòu)南到y(tǒng)投入運(yùn)行開(kāi)始,控制算法每隔一段時(shí)間對(duì)被控制對(duì)象的狀態(tài)值進(jìn)行采樣。由此,可得到開(kāi)機(jī)以來(lái)由各個(gè)采樣時(shí)間點(diǎn)被控制對(duì)象的狀態(tài)值所形成的數(shù)據(jù)序列:
X1,X2, X3, X4, … Xk-2,Xk-1,Xk
說(shuō)明:
X1:開(kāi)機(jī)以來(lái)的第一次采樣值
Xk: 目前的采樣值(最近一次的采樣值)
2>從這個(gè)采樣值序列中提取出三方面信息:
①當(dāng)前采樣值Xk與用戶(hù)設(shè)定值SV之間的差值:Ek
Ek =Sv-Xk

分析Ek:
Ek>0:說(shuō)明當(dāng)前狀態(tài)值未達(dá)標(biāo)
Ek=0:說(shuō)明當(dāng)前控制狀態(tài)值正好滿(mǎn)足要求
Ek<0:說(shuō)明當(dāng)前狀態(tài)值已經(jīng)超標(biāo)

結(jié)論:Ek反應(yīng)了控制對(duì)象當(dāng)前值與設(shè)定值的偏差程度,可以根據(jù)Ek的大小對(duì)輸出信號(hào)OUT進(jìn)行調(diào)整:偏差程度大OUT增大,偏差程度小OUT減小。即輸出信號(hào)的強(qiáng)弱與當(dāng)前偏差程度的大小成比例,所以根據(jù)Ek的大小來(lái)給出控制信號(hào)OUT的當(dāng)前值的算法稱(chēng)為比例控制(Proportion)。用數(shù)學(xué)模型可以表示為:

POUT=(Kp*Ek)+Out0

Kp:一般稱(chēng)之為比例系數(shù),可以理解為硬件上的放大器(或衰減器),適當(dāng)選取Kp將當(dāng)前誤差值Ek

按一定的增益放大或縮小,以提高控制算法的相應(yīng)速度。
Out0:是一個(gè)常數(shù),目的是為了當(dāng)Ek為0時(shí),確保輸出信號(hào)不為0,以不至于在當(dāng)前值與設(shè)定值相等時(shí)控制器輸出信號(hào)OUT為0,系統(tǒng)處于無(wú)控制信號(hào)的失控狀態(tài)。
②將投入運(yùn)行以來(lái)的各個(gè)采樣值都與設(shè)定值相減,可得到開(kāi)機(jī)以來(lái)每個(gè)采樣時(shí)刻的偏差序列數(shù)據(jù):
E1,E2,E3 …Ek-2,Ek-1,Ek

說(shuō)明:
E1:開(kāi)機(jī)的第一個(gè)采樣點(diǎn)與設(shè)定值的偏差
E1=SV-X1;
E2=SV-X2;

EK-2=SV-XK-2;
EK-1=SV-XK-1;
Ek: 當(dāng)前的采樣值與設(shè)定值的偏差
EK=SV-XK
分析開(kāi)機(jī)以來(lái)的誤差序列:
每個(gè)偏差值可能有:>0,<0,=0這三種可能的值,因?yàn)閺拈_(kāi)機(jī)到現(xiàn)在,控制算法不斷輸出控制信號(hào)對(duì)被控對(duì)象進(jìn)行控制,導(dǎo)致了過(guò)去這段時(shí)間有時(shí)候超標(biāo)(Ex<0),有些時(shí)候未達(dá)標(biāo)(Ex>0),有時(shí)候正好滿(mǎn)足要求(Ex=0);如果將這些偏差值進(jìn)行累加求代數(shù)和得到Sk,即:
Sk=E1+E2+E3+…+Ek-2+Ek-1+Ek
分析Sk:
Sk>0:過(guò)去大多數(shù)時(shí)候未達(dá)標(biāo)
Sk=0:過(guò)去控制效果較理想
Sk<0:過(guò)去大多數(shù)時(shí)候已經(jīng)超標(biāo)

結(jié)論:1.通過(guò)對(duì)Sk的分析,可以對(duì)控制算法過(guò)去的控制效果進(jìn)行綜合評(píng)估。體現(xiàn)了控制算法按照原來(lái)的方式輸出的控制信號(hào)導(dǎo)致了現(xiàn)在的控制結(jié)果,所以應(yīng)該利用這個(gè)值來(lái)對(duì)當(dāng)前要輸出的控制信號(hào)OUT進(jìn)行修正,以確??刂茖?duì)象會(huì)在將來(lái)的一小段時(shí)間盡快達(dá)到用戶(hù)設(shè)定的值。
2.Sk實(shí)際上是過(guò)去每個(gè)時(shí)間點(diǎn)的誤差相加,與數(shù)學(xué)上的定積分運(yùn)算類(lèi)似,因此根據(jù)Sk對(duì)輸出信號(hào)進(jìn)行調(diào)節(jié)的算法稱(chēng)積分(integral)算法。所以積分控制的數(shù)學(xué)模型為:
IOUT=(kp* ((1/Ti)Exdt))+Out0

Kp是一常數(shù),其目的類(lèi)似硬件上的放大器,用于將Sk放大或衰減;
Out0是一常數(shù),為了在歷史積分偏差值為0時(shí)確保系統(tǒng)有一個(gè)輸出值,避免失控;
Ti 是積分時(shí)間常數(shù),取值越大會(huì)導(dǎo)致輸出量OUT會(huì)越小,可理解為歷史上已經(jīng)很久的誤差值都影響了當(dāng)前的輸出信號(hào)。取值越小,輸出OUT會(huì)越強(qiáng)烈,可理解為積分只考慮了最近一段時(shí)間的誤差。
實(shí)際中,如果系統(tǒng)已經(jīng)運(yùn)行“很長(zhǎng)”一段時(shí)間了,那些早期采樣的偏差值可以忽略他們對(duì)當(dāng)前控制的影響,所以應(yīng)該根據(jù)情況選擇合理的Ti值方能得到良好的控制效果。
③最近兩次的偏差之差 Dk

Dk=Ek-Ek-1

說(shuō)明:
Ek:當(dāng)前的偏差
Ek-1: 基于當(dāng)前的前一個(gè)采樣時(shí)刻的偏差值(即上一次的偏差值);
分析Dk:

Dk>0:說(shuō)明從上一采樣時(shí)刻到當(dāng)前誤差有增大趨勢(shì)
Dk=0:說(shuō)明從上一采樣時(shí)刻到當(dāng)前誤差平穩(wěn)
Dk<0:說(shuō)明從上一采樣時(shí)刻到當(dāng)前誤差有減小趨勢(shì)
在這里插入圖片描述

結(jié)論:
1. Dk能夠說(shuō)明從上次采樣到當(dāng)前采樣的這段時(shí)間被控制對(duì)象的狀態(tài)變化趨勢(shì),這種變化的趨勢(shì)很可能會(huì)在一定程度上延續(xù)到下一個(gè)采樣時(shí)間點(diǎn),所以可以根據(jù)這個(gè)變化趨勢(shì)(Dk的值)對(duì)輸出信號(hào)OUT進(jìn)行調(diào)整,達(dá)到提前控制的目的。
2. Dk形如數(shù)學(xué)上的微分運(yùn)算,反應(yīng)了控制對(duì)象在一段時(shí)間內(nèi)的變化趨勢(shì)及變化量,所以利用Dk對(duì)控制器輸出信號(hào)進(jìn)行調(diào)節(jié)的算法稱(chēng)為微分(differential)算法。可以用數(shù)學(xué)模型表達(dá)為:
DOUT=Kp*(Td(de/dt))+Out0
Kp:為一常數(shù),可理解為硬件上的放大器或衰減器,用于對(duì)輸出信號(hào)OUT的增益進(jìn)行調(diào)整;
Out0:為一常數(shù),為了在Dk為0時(shí)確保OUT都有一個(gè)穩(wěn)定的控制值,避免失控。
Td:叫微分時(shí)間常數(shù),(猶如硬件上電感器的自感系數(shù))Td越大導(dǎo)致OUT增大,對(duì)輸出信號(hào)產(chǎn)生強(qiáng)烈的影響。

3>PID算法的形成
1.比例、積分、微分三種算法的優(yōu)缺點(diǎn)分析:

POUT=(KpEk)+ Out0 --比例算法
IOUT=kp
( (1/Ti) Exdt)+Out0 --積分算法
DOUT=Kp*(Td(de/dt))+Out0 --微分算法

比例算法: 只考慮控制對(duì)象當(dāng)前誤差,當(dāng)前有誤差才輸出控制信號(hào),當(dāng)前沒(méi)有誤差就不輸出控制信號(hào),也就是說(shuō)只要偏差已經(jīng)產(chǎn)生了比例算法才采取措施進(jìn)行調(diào)整,所以單獨(dú)的比例算法不可能將控制對(duì)象的狀態(tài)值控制在設(shè)定值上,始終在設(shè)定值上下波動(dòng);但是比例控制反應(yīng)靈敏,有誤差馬上就反應(yīng)到輸出。
積分算法:考慮了被控制對(duì)象的歷史誤差情況,過(guò)去的誤差狀況參與了當(dāng)前的輸出控制,但是在系統(tǒng)還沒(méi)有達(dá)到目標(biāo)期間,往往會(huì)因?yàn)檫@些歷史的誤差對(duì)當(dāng)前的控制產(chǎn)生了干擾(即拖后腿),使用不當(dāng)反而攪亂當(dāng)前的輸出。但是在系統(tǒng)進(jìn)入穩(wěn)定狀態(tài)后,特別是當(dāng)前值與設(shè)定值沒(méi)有偏差時(shí),積分算法可以根據(jù)過(guò)去的偏差值輸出一個(gè)相對(duì)穩(wěn)定的控制信號(hào),以防止產(chǎn)生偏離目標(biāo),起到打預(yù)防針的效果。
微分算法:單純的考慮了近期的變化率,當(dāng)系統(tǒng)的偏差趨近于某一個(gè)固定值時(shí)(變化率為0),微分算法不輸出信號(hào)對(duì)其偏差進(jìn)行調(diào)整,所以微分算法不能單獨(dú)使用,它只關(guān)心偏差的變化速度,不考慮是否有偏差(偏差變化率為0時(shí)偏差不一定是0).但是微分算法能獲得控制對(duì)象近期的變化趨勢(shì),它可以協(xié)助輸出信號(hào)盡早的抑制控制對(duì)象的變化??梢岳斫鉃閷⒁袆×易兓瘯r(shí)就大幅度調(diào)整輸出信號(hào)進(jìn)行抑制,避免了控制對(duì)象的大幅度變化。
以上三種算法綜合起來(lái)產(chǎn)生一個(gè)當(dāng)前的控制量對(duì)控制對(duì)象進(jìn)行控制,它們的優(yōu)缺點(diǎn)互補(bǔ),即形成經(jīng)典的PID算法。


3.PID算法數(shù)學(xué)模型

OUT=POUT+IOUT+DOUT

即:
OUT=((KpEk)+ Out0)+(kp ( (1/Ti) Exdt)+Out0)+ (Kp*(Td(de/dt))+Out0)

整理該式子得到:將各項(xiàng)的Out0歸并為OUT0。

OUT=kp(Ek+((1/Ti)Exdt))+(Td(de/dt)))+OUT0
3.PID算法在單片機(jī)中的應(yīng)用
1)PID算法在單片機(jī)中應(yīng)用時(shí),對(duì)積分和微分項(xiàng)可以作近似變換:
對(duì)于積分項(xiàng)可改寫(xiě)成:
n
I =1/Ti∑EkT
k=0
即用過(guò)去一段時(shí)間的采樣點(diǎn)的偏差值的代數(shù)和的代替積分。
T是采樣周期,也叫控制周期,每隔T時(shí)間段進(jìn)行一次PID計(jì)算。
對(duì)于微分項(xiàng)可改寫(xiě)成:
D=TD
((Ek-Ek-1)/T)
Ek:本次偏差,Ek-1上次的偏差值
2)位置式PID算法數(shù)學(xué)模型
由此可得到單片機(jī)中PID算法的表達(dá)式:
OUT=kp(Ek+((1/Ti)Exdt))+(Td(de/dt)))+OUT0
=>
OUT=
n
Kp(En+(1/Ti∑EkT)+(TD((Ek-Ek-1)/T)))+out0
k=0

進(jìn)一步展開(kāi)得:

n
OUT=(KpEk) + (Kp(T/Ti)∑Ek) +(Kp*(TD/T)(EK-Ek-1)) +OUT0
k=0

令 Ki= Kp*(T/Ti);
KD=(Kp*(TD/T)
故:
n
OUT=(Kp*Ek) + (Ki∑Ek) +(KD(EK-Ek-1)) +OUT0
k=0

程序設(shè)計(jì)時(shí)利用C語(yǔ)言或匯編語(yǔ)言可以方便實(shí)現(xiàn)這個(gè)計(jì)算公式。OUT即為本次運(yùn)算的結(jié)果,利用OUT可以去驅(qū)動(dòng)執(zhí)行機(jī)構(gòu)輸出對(duì)應(yīng)的控制信號(hào),例如溫度控制就可以控制PWM的寬度,電磁閥就可以改變電磁線(xiàn)圈電流以改變閥門(mén)開(kāi)度,或者是可控硅的導(dǎo)通角度等;
這種PID算法計(jì)算出的結(jié)果(OUT值)表示當(dāng)前控制器應(yīng)該輸出的控制量,所以稱(chēng)為位置式(直接輸出了執(zhí)行機(jī)構(gòu)應(yīng)該達(dá)到的狀態(tài)值)。

3)增量式PID算法
位置式PID算法計(jì)算量較大,比較消耗處理器的資源。在有些控制系統(tǒng)中,執(zhí)行機(jī)構(gòu)本身沒(méi)有記憶功能,比如MOS管是否導(dǎo)通完全取決于控制極電壓,可控硅是否導(dǎo)通取決于觸發(fā)信號(hào),繼電器是否接通取決于線(xiàn)圈電流等,只要控制信號(hào)丟失,執(zhí)行機(jī)構(gòu)就停止,在這些應(yīng)用中應(yīng)該采用位置式PID。
也有一些執(zhí)行機(jī)構(gòu)本身具有記憶功能,比如步進(jìn)電機(jī),即使控制信號(hào)丟失,由于其自身的機(jī)械結(jié)構(gòu)會(huì)保持在原來(lái)的位置等,在這些控制系統(tǒng)中,PID算法沒(méi)有必要輸出本次應(yīng)該到達(dá)的真實(shí)位置,只需要說(shuō)明應(yīng)該在上次的基礎(chǔ)上對(duì)輸出信號(hào)做多大的修正(可正可負(fù))即可,這就是增量式PID算法。
增量式PID計(jì)算出的是應(yīng)該在當(dāng)前控制信號(hào)上的調(diào)整值,如果計(jì)算出為正,則增強(qiáng)輸出信號(hào);如果計(jì)算出為負(fù)則減弱輸出信號(hào)。
增量式PID算法數(shù)學(xué)模型:
如果用OUTK-1表示上次的輸出控制信號(hào)值,那么當(dāng)前的輸出值應(yīng)該為OUTk,這兩者之間的關(guān)系為:

OUTK=OUTk-1+ △OUT
△OUT即為應(yīng)該輸出的增量值;
上式變形得:
△OUT= OUTK- OUTk-1
本次的位置式算法輸出:
n
OUTk=(KpEk) + (Ki∑Ek) +(KD(EK-Ek-1)) +OUT0 --1式
k=0
上次的位置式算法輸出:
n-1
OUTk-1=(Kp
Ek-1) +(Ki∑Ek) +(KD(EK-1-Ek-2)) +OUT0–2式
k=0
上述1式減2式即得到相鄰兩次的增量:
如前所述:
Ki= Kp*(T/Ti);
KD=(Kp*(TD/T)
△OUT= OUTK- OUTk-1=
kp(EK-EK-1)+((KpT)/Ti)Ek+(((KpTD)/T)*(Ek-2Ek-1+Ek-2))
EK:本次的偏差;
Ek-1:上次的偏差
Ek-2:上上次的偏差
Kp:算法增益調(diào)節(jié)
Ti :積分時(shí)間
TD: 微分時(shí)間常數(shù)
結(jié)論:
增量式PID的計(jì)算只需要最近3次的偏差(本次偏差,上次偏差,上上次偏差),不需要處理器存儲(chǔ)大量的歷史偏差值,計(jì)算量也相對(duì)較少,容易實(shí)現(xiàn)。

4)關(guān)于Ti和TD的理解:
在PID控制算法中,當(dāng)前的輸出信號(hào)由比例項(xiàng),積分項(xiàng),微分項(xiàng)共同作用形成,當(dāng)比例項(xiàng)輸出不為0時(shí),如果積分項(xiàng)對(duì)運(yùn)算輸出的貢獻(xiàn)作用與比例項(xiàng)對(duì)運(yùn)算對(duì)輸出的貢獻(xiàn)一樣時(shí)(即同為正或同為負(fù)時(shí)),積分項(xiàng)相當(dāng)于重復(fù)了一次比例項(xiàng)產(chǎn)生作用的時(shí)間,這個(gè)
時(shí)間就可以理解為積分時(shí)間。
當(dāng)比例項(xiàng)不為0時(shí),如果微分項(xiàng)在一段時(shí)間里計(jì)算的結(jié)果與比例項(xiàng)對(duì)輸出的貢獻(xiàn)相同(即同為正或同為負(fù))時(shí),微分項(xiàng)相當(dāng)于在一段時(shí)間里重復(fù)了比例項(xiàng)的作用,這段時(shí)間可理解為就是微分時(shí)間。
實(shí)際應(yīng)用中應(yīng)該合理選擇Kp,Ti,Td以確保三者對(duì)輸出的貢獻(xiàn)平衡,從而使控制對(duì)象在設(shè)定值的附近。


4.小結(jié)

4PID是比例、積分、微分的簡(jiǎn)稱(chēng),PID控制的難點(diǎn)不是編程,而是控制器的參數(shù)整定。參數(shù)整定的關(guān)鍵是正確地理解各參數(shù)的物理意義,PID控制的原理可以用人對(duì)爐溫的手動(dòng)控制來(lái)理解。閱讀本文不需要高深的數(shù)學(xué)知識(shí)。
1.比例控制
有經(jīng)驗(yàn)的操作人員手動(dòng)控制電加熱爐的爐溫,可以獲得非常好的控制品質(zhì),PID控制與人工控制的控制策略有很多相似的地方。
下面介紹操作人員怎樣用比例控制的思想來(lái)手動(dòng)控制電加熱爐的爐溫。假設(shè)用熱電偶檢測(cè)爐溫,用數(shù)字儀表顯示溫度值。在控制過(guò)程中,操作人員用眼睛讀取爐溫,并與爐溫給定值比較,得到溫度的誤差值。然后用手操作電位器,調(diào)節(jié)加熱的電流,使?fàn)t溫保持在給定值附近。
操作人員知道爐溫穩(wěn)定在給定值時(shí)電位器的大致位置(我們將它稱(chēng)為位置L),并根據(jù)當(dāng)時(shí)的溫度誤差值調(diào)整控制加熱電流的電位器的轉(zhuǎn)角。爐溫小于給定值時(shí),誤差為正,在位置L的基礎(chǔ)上順時(shí)針增大電位器的轉(zhuǎn)角,以增大加熱的電流。爐溫大于給定值時(shí),誤差為負(fù),在位置L的基礎(chǔ)上反時(shí)針減小電位器的轉(zhuǎn)角,并令轉(zhuǎn)角與位置L的差值與誤差成正比。上述控制策略就是比例控制,即PID控制器輸出中的比例部分與誤差成正比。
閉環(huán)中存在著各種各樣的延遲作用。例如調(diào)節(jié)電位器轉(zhuǎn)角后,到溫度上升到新的轉(zhuǎn)角對(duì)應(yīng)的穩(wěn)態(tài)值時(shí)有較大的時(shí)間延遲。由于延遲因素的存在,調(diào)節(jié)電位器轉(zhuǎn)角后不能馬上看到調(diào)節(jié)的效果,因此閉環(huán)控制系統(tǒng)調(diào)節(jié)困難的主要原因是系統(tǒng)中的延遲作用。
比例控制的比例系數(shù)如果太小,即調(diào)節(jié)后的電位器轉(zhuǎn)角與位置L的差值太小,調(diào)節(jié)的力度不夠,使系統(tǒng)輸出量變化緩慢,調(diào)節(jié)所需的總時(shí)間過(guò)長(zhǎng)。比例系數(shù)如果過(guò)大,即調(diào)節(jié)后電位器轉(zhuǎn)角與位置L的差值過(guò)大,調(diào)節(jié)力度太強(qiáng),將造成調(diào)節(jié)過(guò)頭,甚至使溫度忽高忽低,來(lái)回震蕩。
增大比例系數(shù)使系統(tǒng)反應(yīng)靈敏,調(diào)節(jié)速度加快,并且可以減小穩(wěn)態(tài)誤差。但是比例系數(shù)過(guò)大會(huì)使超調(diào)量增大,振蕩次數(shù)增加,調(diào)節(jié)時(shí)間加長(zhǎng),動(dòng)態(tài)性能變壞,比例系數(shù)太大甚至?xí)归]環(huán)系統(tǒng)不穩(wěn)定。
單純的比例控制很難保證調(diào)節(jié)得恰到好處,完全消除誤差。
2.積分控制
PID控制器中的積分對(duì)應(yīng)于圖1中誤差曲線(xiàn) 與坐標(biāo)軸包圍的面積(圖中的灰色部分)。PID控制程序是周期性執(zhí)行的,執(zhí)行的周期稱(chēng)為采樣周期。計(jì)算機(jī)的程序用圖1中各矩形面積之和來(lái)近似精確的積分,圖中的TS就是采樣周期。
在這里插入圖片描述

4圖1 積分運(yùn)算示意圖
每次PID運(yùn)算時(shí),在原來(lái)的積分值的基礎(chǔ)上,增加一個(gè)與當(dāng)前的誤差值ev(n)成正比的微小部分。誤差為負(fù)值時(shí),積分的增量為負(fù)。
手動(dòng)調(diào)節(jié)溫度時(shí),積分控制相當(dāng)于根據(jù)當(dāng)時(shí)的誤差值,周期性地微調(diào)電位器的角度,每次調(diào)節(jié)的角度增量值與當(dāng)時(shí)的誤差值成正比。溫度低于設(shè)定值時(shí)誤差為正,積分項(xiàng)增大,使加熱電流逐漸增大,反之積分項(xiàng)減小。因此只要誤差不為零,控制器的輸出就會(huì)因?yàn)榉e分作用而不斷變化。積分調(diào)節(jié)的“大方向”是正確的,積分項(xiàng)有減小誤差的作用。一直要到系統(tǒng)處于穩(wěn)定狀態(tài),這時(shí)誤差恒為零,比例部分和微分部分均為零,積分部分才不再變化,并且剛好等于穩(wěn)態(tài)時(shí)需要的控制器的輸出值,對(duì)應(yīng)于上述溫度控制系統(tǒng)中電位器轉(zhuǎn)角的位置L。因此積分部分的作用是消除穩(wěn)態(tài)誤差,提高控制精度,積分作用一般是必須的。
PID控制器輸出中的積分部分與誤差的積分成正比。因?yàn)榉e分時(shí)間TI在積分項(xiàng)的分母中,TI越小,積分項(xiàng)變化的速度越快,積分作用越強(qiáng)。
3.PI控制
控制器輸出中的積分項(xiàng)與當(dāng)前的誤差值和過(guò)去歷次誤差值的累加值成正比,因此積分作用本身具有嚴(yán)重的滯后特性,對(duì)系統(tǒng)的穩(wěn)定性不利。如果積分項(xiàng)的系數(shù)設(shè)置得不好,其負(fù)面作用很難通過(guò)積分作用本身迅速地修正。而比例項(xiàng)沒(méi)有延遲,只要誤差一出現(xiàn),比例部分就會(huì)立即起作用。因此積分作用很少單獨(dú)使用,它一般與比例和微分聯(lián)合使用,組成PI或PID控制器。
PI和PID控制器既克服了單純的比例調(diào)節(jié)有穩(wěn)態(tài)誤差的缺點(diǎn),又避免了單純的積分調(diào)節(jié)響應(yīng)慢、動(dòng)態(tài)性能不好的缺點(diǎn),因此被廣泛使用。
如果控制器有積分作用(例如采用PI或PID控制),積分能消除階躍輸入的穩(wěn)態(tài)誤差,這時(shí)可以將比例系數(shù)調(diào)得小一些。
如果積分作用太強(qiáng)(即積分時(shí)間太小),相當(dāng)于每次微調(diào)電位器的角度值過(guò)大,其累積的作用會(huì)使系統(tǒng)輸出的動(dòng)態(tài)性能變差,超調(diào)量增大,甚至使系統(tǒng)不穩(wěn)定。積分作用太弱(即積分時(shí)間太大),則消除穩(wěn)態(tài)誤差的速度太慢,積分時(shí)間的值應(yīng)取得適中。
4.微分作用
誤差的微分就是誤差的變化速率,誤差變化越快,其微分絕對(duì)值越大。誤差增大時(shí),其微分為正;誤差減小時(shí),其微分為負(fù)??刂破鬏敵隽康奈⒎植糠峙c誤差的微分成正比,反映了被控量變化的趨勢(shì)。
有經(jīng)驗(yàn)的操作人員在溫度上升過(guò)快,但是尚未達(dá)到設(shè)定值時(shí),根據(jù)溫度變化的趨勢(shì),預(yù)感到溫度將會(huì)超過(guò)設(shè)定值,出現(xiàn)超調(diào)。于是調(diào)節(jié)電位器的轉(zhuǎn)角,提前減小加熱的電流。這相當(dāng)于士兵射擊遠(yuǎn)方的移動(dòng)目標(biāo)時(shí),考慮到子彈運(yùn)動(dòng)的時(shí)間,需要一定的提前量一樣。

在這里插入圖片描述
4圖2 階躍響應(yīng)曲線(xiàn)

圖2中的c (∞)為被控量c (t)的穩(wěn)態(tài)值或被控量的期望值,誤差e(t) = c (∞) - c (t)。在圖2中啟動(dòng)過(guò)程的上升階段,當(dāng) 時(shí),被控量尚未超過(guò)其穩(wěn)態(tài)值。但是因?yàn)檎`差e(t)不斷減小,誤差的微分和控制器輸出的微分部分為負(fù)值,減小了控制器的輸出量,相當(dāng)于提前給出了制動(dòng)作用,以阻礙被控量的上升,所以可以減少超調(diào)量。因此微分控制具有超前和預(yù)測(cè)的特性,在超調(diào)尚未出現(xiàn)之前,就能提前給出控制作用。
閉環(huán)控制系統(tǒng)的振蕩甚至不穩(wěn)定的根本原因在于有較大的滯后因素。因?yàn)槲⒎猪?xiàng)能預(yù)測(cè)誤差變化的趨勢(shì),這種“超前”的作用可以抵消滯后因素的影響。適當(dāng)?shù)奈⒎挚刂谱饔每梢允钩{(diào)量減小,增加系統(tǒng)的穩(wěn)定性。
對(duì)于有較大的滯后特性的被控對(duì)象,如果PI控制的效果不理想,可以考慮增加微分控制,以改善系統(tǒng)在調(diào)節(jié)過(guò)程中的動(dòng)態(tài)特性。如果將微分時(shí)間設(shè)置為0,微分部分將不起作用。
微分時(shí)間與微分作用的強(qiáng)弱成正比,微分時(shí)間越大,微分作用越強(qiáng)。如果微分時(shí)間太大,在誤差快速變化時(shí),響應(yīng)曲線(xiàn)上可能會(huì)出現(xiàn)“毛刺”。
微分控制的缺點(diǎn)是對(duì)干擾噪聲敏感,使系統(tǒng)抑制干擾的能力降低。為此可在微分部分增加慣性濾波環(huán)節(jié)。
5.采樣周期
PID控制程序是周期性執(zhí)行的,執(zhí)行的周期稱(chēng)為采樣周期。采樣周期越小,采樣值越能反映模擬量的變化情況。但是太小會(huì)增加CPU的運(yùn)算工作量,相鄰兩次采樣的差值幾乎沒(méi)有什么變化,將使PID控制器輸出的微分部分接近為零,所以也不宜將采樣周期取得過(guò)小。
應(yīng)保證在被控量迅速變化時(shí)(例如啟動(dòng)過(guò)程中的上升階段),能有足夠多的采樣點(diǎn)數(shù),不致因?yàn)椴蓸狱c(diǎn)數(shù)過(guò)少而丟失被采集的模擬量中的重要信息。
6.PID參數(shù)的調(diào)整方法
在整定PID控制器參數(shù)時(shí),可以根據(jù)控制器的參數(shù)與系統(tǒng)動(dòng)態(tài)性能和穩(wěn)態(tài)性能之間的定性關(guān)系,用實(shí)驗(yàn)的方法來(lái)調(diào)節(jié)控制器的參數(shù)。有經(jīng)驗(yàn)的調(diào)試人員一般可以較快地得到較為滿(mǎn)意的調(diào)試結(jié)果。在調(diào)試中最重要的問(wèn)題是在系統(tǒng)性能不能令人滿(mǎn)意時(shí),知道應(yīng)該調(diào)節(jié)哪一個(gè)參數(shù),該參數(shù)應(yīng)該增大還是減小。
為了減少需要整定的參數(shù),首先可以采用PI控制器。為了保證系統(tǒng)的安全,在調(diào)試開(kāi)始時(shí)應(yīng)設(shè)置比較保守的參數(shù),例如比例系數(shù)不要太大,積分時(shí)間不要太小,以避免出現(xiàn)系統(tǒng)不穩(wěn)定或超調(diào)量過(guò)大的異常情況。給出一個(gè)階躍給定信號(hào),根據(jù)被控量的輸出波形可以獲得系統(tǒng)性能的信息,例如超調(diào)量和調(diào)節(jié)時(shí)間。應(yīng)根據(jù)PID參數(shù)與系統(tǒng)性能的關(guān)系,反復(fù)調(diào)節(jié)PID的參數(shù)。
如果階躍響應(yīng)的超調(diào)量太大,經(jīng)過(guò)多次振蕩才能穩(wěn)定或者根本不穩(wěn)定,應(yīng)減小比例系數(shù)、增大積分時(shí)間。如果階躍響應(yīng)沒(méi)有超調(diào)量,但是被控量上升過(guò)于緩慢,過(guò)渡過(guò)程時(shí)間太長(zhǎng),應(yīng)按相反的方向調(diào)整參數(shù)。
如果消除誤差的速度較慢,可以適當(dāng)減小積分時(shí)間,增強(qiáng)積分作用。
反復(fù)調(diào)節(jié)比例系數(shù)和積分時(shí)間,如果超調(diào)量仍然較大,可以加入微分控制,微分時(shí)間從0逐漸增大,反復(fù)調(diào)節(jié)控制器的比例、積分和微分部分的參數(shù)。
總之,PID參數(shù)的調(diào)試是一個(gè)綜合的、各參數(shù)互相影響的過(guò)程,實(shí)際調(diào)試過(guò)程中的多次嘗試是非常重要的,也是必須的。

三、STM32代碼控制說(shuō)明

1.硬件電路搭建

本實(shí)驗(yàn)使用司南電氣控制STM32單片機(jī)開(kāi)發(fā)板 來(lái)實(shí)現(xiàn)使用PID算法對(duì)啊直流電機(jī)的速度控制。

實(shí)驗(yàn)材料:
①司南電氣控制STM32單片機(jī)開(kāi)發(fā)板
②帶編碼器的直流電機(jī)
③OLED顯示屏

接線(xiàn)如圖:
在這里插入圖片描述

2.軟件實(shí)現(xiàn)

PID算法,速度控制代碼如下:

PID pid; //存放PID算法所需要的數(shù)據(jù)
void PID_Calc()  //pid計(jì)算
{
 u8 strr[2],str[2];  //檢測(cè)脈沖變量
 float DelEk;
 float ti,ki;
//	float Iout;
//	float Pout;
//	float Dout;
	float td;
	float kd;
	float out;
	extern float pulse;  //檢測(cè)脈沖變量
 if(pid.C200ms<(pid.T))  //計(jì)算時(shí)間未到,200ms
 {
    return ;
 }
 LED4=!LED4;
 
 //為什么是2.84?
 /*
 因?yàn)殡姍C(jī)轉(zhuǎn)一圈黃色線(xiàn)向單片機(jī)輸出105.6個(gè)脈沖
    =>pulse/105.6 (200ms的圈數(shù))
    =>(pulse/105.6)*5 (1s的圈數(shù))
    =>(pulse/105.6)*5*60 (1min的圈數(shù))
    => pulse*2.48        (1min的圈數(shù))
 */
 pid.Pv = pulse * 2.84; //速度采樣
 
 pid.Ek=pid.Sv-pid.Pv;   //得到當(dāng)前的偏差值
 pid.Pout=pid.Kp*pid.Ek;      //比例輸出
 
 pid.SEk+=pid.Ek;        //歷史偏差總和
 
 DelEk=pid.Ek-pid.Ek_1;  //最近兩次偏差之差
 
 ti=pid.T/pid.Ti;
 ki=ti*pid.Kp;
 
 pid.Iout=ki*pid.SEk*pid.Kp;  //積分輸出

 td=pid.Td/pid.T;
 
 kd=pid.Kp*td;
 
 pid.Dout=kd*DelEk;    //微分輸出
 
 out= pid.Pout+ pid.Iout+ pid.Dout;
 
 //
 
 if(out>pid.pwmcycle)
 {
  pid.OUT=pid.pwmcycle;
 }
 else if(out<0)
 {
  pid.OUT=pid.OUT0; 
 }
 else 
 {
  pid.OUT=out;
 }
 //pid.OUT+=; //本次的計(jì)算結(jié)果
 pid.Ek_1=pid.Ek;  //更新偏差
 
 TIM2->CCR1 = (u16)pid.OUT;TIM2->CCR4 = 0;  //PWM輸出
 TIM2->CCR2 = 0;TIM2->CCR3 =(u16)pid.OUT;   //PWM輸出
 
 sprintf(strr,'%0.1f\0',pid.OUT);           //打印PWM輸出值
 OLED_ShowString(48,3,strr);                //打印PWM輸出值
 sprintf(str,'%0.1f\0',pid.Pv);             //打印當(dāng)前速度輸出值
 OLED_ShowString(56,6,str);                 //打印當(dāng)前速度輸出值
 
 pid.C200ms = 0;
 pulse = 0;   //檢測(cè)脈沖變量清零
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    在线精品首页中文字幕亚洲| 国产日产欧美精品大秀| 亚洲一区二区久久观看| 风间中文字幕亚洲一区| 亚洲二区欧美一区二区| 日本午夜免费观看视频| 亚洲精品成人午夜久久| 肥白女人日韩中文视频| 中文人妻精品一区二区三区四区| 欧美日韩少妇精品专区性色| 亚洲中文字幕视频一区二区| 久久人人爽人人爽大片av| 精品熟女少妇av免费久久野外| 国产精品激情在线观看| 男女午夜视频在线观看免费| 欧美乱码精品一区二区三| 精品少妇一区二区视频| 不卡中文字幕在线免费看| 日韩女优精品一区二区三区| 99精品国产一区二区青青| 日本午夜一本久久久综合| 激情少妇一区二区三区| 欧美一区二区口爆吞精| 国产日产欧美精品大秀| 国产日韩在线一二三区| 韩日黄片在线免费观看| 免费福利午夜在线观看| 99免费人成看国产片| 成人免费在线视频大香蕉| 日韩18一区二区三区| 国产成人av在线免播放观看av| 色婷婷亚洲精品综合网| 日韩欧美三级中文字幕| 国产欧美亚洲精品自拍| 亚洲欧美国产精品一区二区| 深夜日本福利在线观看| 日本高清中文精品在线不卡| 亚洲欧洲一区二区综合精品| 久久精品国产一区久久久| 国产精品人妻熟女毛片av久| 久久综合九色综合欧美|