本文以線性伺服電機(jī)的用例說明了比例積分微分 (PID) 控制,包括其背后的數(shù)學(xué)原理。
通過本文你將能了解到:
PI
D 控制的基礎(chǔ)知識。
電
路中連接元件以完成位置控制的 PID 功能的那些部分的注意事項。
固件
代碼實現(xiàn)。
比例積分微分 (PID) 控制是用于調(diào)節(jié)系統(tǒng)動態(tài)行為的常用方法。在許多工業(yè)設(shè)備中都可以找到示例,其中它用于控制溫度、壓力、流量、速度或位置等。 PID 控制背后的理論和數(shù)學(xué)一直是很多討論的主題。但是如何應(yīng)用這些數(shù)學(xué)和理論來實現(xiàn)一個真實的設(shè)備呢?為了演示這是如何完成的,本文將探討一個完整的示例。
位置控制的任務(wù)將針對線性伺服電機(jī)的情況進(jìn)行討論。首先,介紹控制 PID 控制器運行的數(shù)學(xué)函數(shù)。我們將展示函數(shù)的各個部分如何在實際設(shè)計中組合在一起。具體來說,我們將解決電路中接口元件的注意事項,以完成用于位置控制的 PID 功能的那些部分,以及在將執(zhí)行控制的微控制器的固件代碼中實現(xiàn)該功能所涉及的內(nèi)容。
PID 基礎(chǔ)知識
作為任何 PID 控制應(yīng)用基礎(chǔ)的通用數(shù)學(xué)函數(shù)可以表述如下:
其中e(t)是偏差值:
對于位置控制,r(t)為設(shè)定位置,y(t)為當(dāng)前位置。
一張圖可以讓我們更直觀地理解這個數(shù)學(xué)在應(yīng)用于伺服電機(jī)時是如何工作的。圖 1說明了線性伺服 PID 控制系統(tǒng)的框圖。
圖1、線性伺服PID控制系統(tǒng)。
圖 1中描繪的系統(tǒng)的一些關(guān)鍵元素是設(shè)置位置輸入(設(shè)定點,或我們的線性執(zhí)行器的目標(biāo)位置)、驅(qū)動執(zhí)行器的某些占空比的脈沖寬度調(diào)制 (PWM) 信號,以及執(zhí)行器的當(dāng)前位置。它們分別對應(yīng)于數(shù)學(xué)方程式中的量r(t)、 u(t)和y(t) 。
之所以稱為閉環(huán)控制,是因為反饋回路將有關(guān)當(dāng)前狀態(tài)的信息傳遞回系統(tǒng),使其能夠獲得當(dāng)前狀態(tài)與所需設(shè)定點之間的差異,必須對其進(jìn)行校正。具體到我們的案例,從設(shè)置位置中減去當(dāng)前位置以獲得誤差(或偏差)信號,如上所示。此誤差對應(yīng)于數(shù)量e(t)。
正如文章開頭提到的,PID 代表比例、積分和微分。這些是指為調(diào)節(jié) PID 控制系統(tǒng)的運行而生成的三個控制信號。
如數(shù)學(xué)和圖表所示,三個控制信號由誤差信號產(chǎn)生,從Proportional、Integral和Derivative模塊輸出——也標(biāo)有它們各自的增益K p、K i和K d ——并且是結(jié)合起來產(chǎn)生驅(qū)動執(zhí)行器的 PWM 信號的占空比。
現(xiàn)在我們已經(jīng)描述了系統(tǒng)的結(jié)構(gòu),我們想在固件中實現(xiàn)它。但要做到這一點,我們需要了解如何將線性致動器與微控制器連接起來。具體來說,我們?nèi)绾螐腜ID函數(shù)中獲取Duty Cycle信號來驅(qū)動執(zhí)行器,以及執(zhí)行器如何產(chǎn)生Current Position信號反饋給PID函數(shù)?
隨后,我們可以解釋如何將PID函數(shù)翻譯成用C語言編寫的固件源代碼。然后將提供一些演示工作實施的示例數(shù)據(jù),作為理解三個 PID 控制信號的作用以及如何調(diào)整其性能的基礎(chǔ)。
電氣連接線性致動器
線性致動器用于提升、傾斜、拉動或推動物體(圖 2)。我們這里使用的微型線性執(zhí)行器由驅(qū)動部分的直流伺服電機(jī)和位置傳感部分的電位器組成。
圖2. 線性致動器的示例。
對于該裝置,PID 控制器板需要輸出 12V PWM 信號來控制電機(jī)速度,并使用模數(shù)轉(zhuǎn)換器 (ADC) 通道來感測執(zhí)行器的位置。因此,我們應(yīng)該在微控制器上配置兩個 GPIO 引腳,一個用于 PWM,另一個用于 ADC。
線性執(zhí)行器的位置輸出是一個電阻值。如果電位器連接在電源V dd和地GND之間(圖 3),則可以將抽頭處的電阻作為簡單分壓器的輸出進(jìn)行測量。位置的范圍和單位從 0 ~ 10,000 Ω 對應(yīng)為 0 ~ V dd V,ADC 將電壓轉(zhuǎn)換為數(shù)字值,即我們實現(xiàn)的當(dāng)前位置y(t)。如果 ADC 的分辨率為 10 位,則此數(shù)字值介于 0 和 1023 之間。
圖3、電位器ADC電路。
我們的控制器輸出u(t)也可以是表示電壓的數(shù)字值,這很方便。然而,該控制器輸出驅(qū)動線性致動器,線性致動器不期望變化的電壓作為輸入來控制其速度,而是期望具有變化占空比的固定電壓 PWM 信號。因此,需要進(jìn)行轉(zhuǎn)換。
圖 4中的圖表顯示了 0 V 至 12 V 的電壓如何轉(zhuǎn)換為具有 0% 至 100% 占空比的可變寬度脈沖的 12 V PWM 信號。嚴(yán)格來說,高于 12 V 的電壓也必須考慮在內(nèi),并且必須轉(zhuǎn)換為 100% 的占空比,因為數(shù)學(xué)決不會將控制器輸出限制在 12 V 以下。
圖4. PWM 信號圖。
作為關(guān)于執(zhí)行器接口的最后評論,我們應(yīng)該強(qiáng)調(diào),只有我們選擇的設(shè)備的速度控制和位置傳感特性的性質(zhì)引導(dǎo)我們將 u(t) 和 y(t) 都指定為我們實施中的電壓值。這些數(shù)值沒有其他關(guān)系,如果受控設(shè)備接口的性質(zhì)另有規(guī)定,在另一個應(yīng)用程序中甚至可能不在同一測量單位中。
編寫固件
對于用作 PID 控制器的固件,它必須確定誤差值e(t),評估 PID 函數(shù)以調(diào)整驅(qū)動設(shè)備的信號u(t) ,并隨著時間的推移連續(xù)執(zhí)行此操作。然而,對于固件執(zhí)行而言,以真正連續(xù)的方式執(zhí)行任務(wù)并不是一個可行的概念。最接近的是在很短的時間間隔內(nèi)快速重復(fù)或迭代任務(wù)。?
如果該任務(wù)是 PID 算法,則其連續(xù)時間數(shù)學(xué)需要用離散時間版本替換,具有以下含義:
1. 固定間隔T被指定為迭代之間的時間,即它們的周期。
2. 將連續(xù)時間t時刻的誤差值e(t)的評估替換為離散時間迭代n時的評估,即e(n)?=?r(n)?–?y(n),其中n?= 0 , 1, 2, …
3. e(t)的連續(xù)時間積分由e(n)T的離散時間求和代替。
4. e(t)的連續(xù)時間導(dǎo)數(shù)替換為e(n)在前一次迭代和當(dāng)前迭代之間的線性斜率——即:
因此,在第n次迭代中評估的離散時間輸出信號u(n)可以表示如下:
現(xiàn)在我們可以實現(xiàn)離散時間PID控制功能了。在示例 C 代碼(參見下面的代碼列表)中,變量和常量的名稱與數(shù)學(xué)方程式中的相應(yīng)元素非常匹配。此代碼可以在 PID 固件的每次迭代中執(zhí)行,通常在配置為每T毫秒觸發(fā)一次的定時器中斷內(nèi)執(zhí)行。
/* 當(dāng)前誤差- 比例項 */
e = r - y;
/* 累積誤差- 積分項 */
總誤差 += e;
/* 差分誤差- 導(dǎo)數(shù)項 */
deltaError = e - 先前的錯誤;
/* PID控制*/
u = Kp * e + Ki * (totalError * T) + Kd * (deltaError /T);
/* 同時為下一次迭代做準(zhǔn)備——將之前的設(shè)置為當(dāng)前錯誤 */
以前的錯誤= e;
剩下要做的是為 PID 增益K p、K i、和K d以便系統(tǒng)在被要求移動到選定的設(shè)定點時正確執(zhí)行。我們將為這些增益手動選擇不同的值,以研究它們對位置控制的影響,并在此過程中演示調(diào)整它們的通用方法。我們還將深入了解控制功能中每個術(shù)語的用途。
PID 增益調(diào)整
有幾個評估系統(tǒng)性能的標(biāo)準(zhǔn),包括死區(qū)時間、上升時間、過沖、穩(wěn)定時間和穩(wěn)態(tài)誤差。雖然在調(diào)整 PID 增益之前應(yīng)根據(jù)這些標(biāo)準(zhǔn)定義性能預(yù)期,但此類預(yù)期取決于應(yīng)用程序的要求。因此,就本文而言,足以說明各種標(biāo)準(zhǔn)何時受到不同增益調(diào)整的影響。
Kp , K i , _和Kd增益將單獨調(diào)整,并按此順序,給定一個選定的設(shè)置點。更具體地說,代碼將在每次執(zhí)行時將其中一個增益設(shè)置為不同的值,并將 r 的值設(shè)置為 700。
至于這個 700 值的相關(guān)性,讀者應(yīng)該記得Current Position是一個數(shù)字值,表示從執(zhí)行器的電位器獲得的電壓,而Current Position現(xiàn)在在我們的代碼中由變量 y 表示。設(shè)置位置-表示我們代碼中的變量 r - 是相同范圍內(nèi)的數(shù)字值,如前所述,如果 ADC 具有 10 位分辨率,則該值介于 0 和 1023 之間。因此,700 的設(shè)定點值是合理的,盡管是任意的。
調(diào)整 K?p以接近目標(biāo)位置
Kp是比例增益??刂坪瘮?shù)的比例項通過使用與該電流誤差成比例的信號移動線性致動器來補(bǔ)償電流誤差。比例項用于使當(dāng)前位置接近目標(biāo)是有意義的,因為該誤差是執(zhí)行器的設(shè)定位置與其當(dāng)前位置之間的差異。比例項使控制函數(shù)尋求將其減少到零。
在調(diào)整的第一步中,我們將積分和微分增益K i和K d設(shè)置為零,并增加比例增益K p直到致動器穩(wěn)定在目標(biāo)位置附近 (700)。比例增益太高會引起振蕩。
圖 5中的圖表顯示了對于不同的K p值,執(zhí)行器的當(dāng)前位置如何隨時間變化。我們將選擇K p = 1,觀察它會導(dǎo)致當(dāng)前位置穩(wěn)定在目標(biāo)附近并且穩(wěn)定時間最快。
圖5.比例增益調(diào)整。
讀者會注意到有一個殘余的穩(wěn)態(tài)誤差,即最終的當(dāng)前位置與目標(biāo)設(shè)定點位置有偏差。這種偏移在純比例控制器的情況下很常見,并且會在下一步調(diào)整積分增益時消除。
調(diào)整 K?i以消除穩(wěn)態(tài)誤差
Ki是積分增益??刂坪瘮?shù)的積分項通過使用與隨時間累積的過去誤差量成比例的信號移動線性致動器來補(bǔ)償過去誤差。積分項用于消除穩(wěn)態(tài)誤差是有意義的,因為該誤差是一個常數(shù)偏移量,它會隨著時間的推移增加積分,從而使控制函數(shù)試圖將其減小到零。
在調(diào)整的第二步中,我們保持在第一步中選擇的比例增益K p = 1,將微分增益K d設(shè)置為零,并增加積分增益K i直到執(zhí)行器穩(wěn)定得更接近目標(biāo)位置 (700) ——即,直到穩(wěn)態(tài)誤差接近于零。
圖 6中的圖表顯示了對于K p = 1 的不同K i值,執(zhí)行器的當(dāng)前位置如何隨時間變化。對于一組給定的要求, Ki =?0.5的結(jié)果可能非常令人滿意,我們可能會選擇不涉及微分項,在這種情況下,解決方案將是比例積分 (PI) 控制器。
圖6.積分增益調(diào)整。
但是,或者,我們可能更愿意選擇K i = 2,這可能是由于其結(jié)果中顯示的上升時間有所改善。讀者會注意到,在這種情況下,更好的上升時間是以過沖為代價的。當(dāng)在下一步中調(diào)整微分增益時,將消除這種過沖。
調(diào)整 K?d以消除過沖
Kd是微分增益??刂坪瘮?shù)的導(dǎo)數(shù)項通過使用與根據(jù)誤差的時間導(dǎo)數(shù)(即其變化率)估計的未來誤差量成比例的信號移動線性致動器來補(bǔ)償未來(估計的)誤差。
微分項用于消除瞬態(tài)效應(yīng)(如超調(diào))是有道理的,它們自然反映在時間導(dǎo)數(shù)中,從而使控制函數(shù)尋求將它們減少到零。在存在干擾的情況下提高穩(wěn)定性和縮短建立時間是額外的相關(guān)優(yōu)勢。但是請注意,如果誤差信號非常嘈雜,微分項會使控制系統(tǒng)不穩(wěn)定。
在這第三步調(diào)整中,我們保持在前兩步中選擇的比例和積分增益K p = 1 和K i = 2,并增加微分增益K d直到消除超調(diào)。微分增益太高會引起振蕩。
圖 7中的圖表顯示了對于不同的K d值,K p = 1 和K i = 2 ,執(zhí)行器的當(dāng)前位置如何隨時間變化。我們將選擇K d = 0.05,觀察到它有效地減少了過沖,同時保持了改進(jìn)的上升時間。
圖7. 微分增益調(diào)整。
然后,在我們的控制器版本中,啟用了所有三個信號比例、積分和微分,我們已經(jīng)成功地調(diào)整了它們的增益以實現(xiàn)適當(dāng)?shù)目刂破餍袨?。我們還確定增益值應(yīng)為K?p?= 1、K?i?= 2 和K?d?= 0.05。
結(jié)論
這篇關(guān)于 PID 控制的文章解釋了 PID 控制器核心的數(shù)學(xué)原理,并提供了一個實際示例,說明如何實現(xiàn)該數(shù)學(xué)原理以在微控制器上運行。討論了用于位置控制的微控制器和直流伺服電機(jī)之間的信號性質(zhì)的實際考慮因素。
最后,提供了一些數(shù)據(jù)來演示如何手動調(diào)整控制函數(shù)的比例、積分和微分項以獲得適當(dāng)?shù)男阅堋K€讓讀者了解 PID 算法中每個函數(shù)的用途。
通用現(xiàn)成的 PID 控制器不是將 PID 控制設(shè)計到定制的嵌入式設(shè)備中,而是工業(yè)市場上可用的替代品,例如,其中一些基于可編程邏輯控制器 (PLC)。這些可能會滿足許多用戶的需求。
但是,如果它需要與您的工廠流程相關(guān)的非標(biāo)準(zhǔn)功能,它可能無法滿足您的應(yīng)用需求。或者,如果它有特殊的數(shù)據(jù)通信需求,或者如果通用控制器具有您希望避免用于成本敏感型應(yīng)用的不需要的功能。在這種情況下,定制 PID 控制器設(shè)計是一種選擇。(EETOP編譯自electronicdesign)
編輯:黃飛
?
評論
查看更多