




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、PID控制算法的C語言實(shí)現(xiàn)一 PID算法原理最近兩天在考慮一般控制算法的 C語言實(shí)現(xiàn)問題,發(fā)現(xiàn)網(wǎng)絡(luò)上尚沒有一套完整 的比較體系的講解。于是總結(jié)了幾天,整理一套思路分享給大家。在工業(yè)應(yīng)用中PID及其衍生算法是應(yīng)用最廣泛的算法之一, 是當(dāng)之無愧的萬能 算法,如果能夠熟練掌握PID算法的設(shè)計(jì)與實(shí)現(xiàn)過程,對(duì)于一般的研發(fā)人員來講, 應(yīng)該是足夠應(yīng)對(duì)一般研發(fā)問題了,而難能可貴的是,在我所接觸的控制算法當(dāng)中, PID控制算法又是最簡(jiǎn)單,最能體現(xiàn)反饋思想的控制算法,可謂經(jīng)典中的經(jīng)典。 經(jīng)典的未必是復(fù)雜的,經(jīng)典的東西常常是簡(jiǎn)單的,而且是最簡(jiǎn)單的,想想牛頓的 力學(xué)三大定律吧,想想愛因斯坦的質(zhì)能方程吧,何等的簡(jiǎn)單!簡(jiǎn)
2、單的不是原始的, 簡(jiǎn)單的也不是落后的,簡(jiǎn)單到了美的程度。先看看 PID算法的一般形式:PID的流程簡(jiǎn)單到了不能再簡(jiǎn)單的程度,通過誤差信號(hào)控制被控量,而控制器 本身就是比例、積分、微分三個(gè)環(huán)節(jié)的加和。這里我們規(guī)定(在 t時(shí)刻):1. 輸入量為rin(t);2輸出量為rout(t);3.偏差量為 err(t)=rin(t)-rout(t);Pid的控制規(guī)律為U(X)=kp(err(t)+y CrTlt:)Cit十TQ理解一下這個(gè)公式,主要從下面幾個(gè)問題著手,為了便于理解,把控制環(huán)境具體一下:1規(guī)定這個(gè)流程是用來為直流電機(jī)調(diào)速的;2. 輸入量rin(t)為電機(jī)轉(zhuǎn)速預(yù)定值;3. 輸出量rout(t)為
3、電機(jī)轉(zhuǎn)速實(shí)際值;4執(zhí)行器為直流電機(jī);5傳感器為光電碼盤,假設(shè)碼盤為10線;6.直流電機(jī)采用PWM調(diào)速轉(zhuǎn)速用單位轉(zhuǎn)min表示;不難看出以下結(jié)論:1. 輸入量rin ( t)為電機(jī)轉(zhuǎn)速預(yù)定值(轉(zhuǎn)min);2. 輸出量rout(t)為電機(jī)轉(zhuǎn)速實(shí)際值(轉(zhuǎn)min);3. 偏差量為預(yù)定值和實(shí)際值之差(轉(zhuǎn)min);那么以下幾個(gè)問題需要弄清楚:1. 通過PID環(huán)節(jié)之后的U(t)是什么值呢2. 控制執(zhí)行器(直流電機(jī))轉(zhuǎn)動(dòng)轉(zhuǎn)速應(yīng)該為電壓值(也就是PWM占空比)。3. 那么U(t)與PWM之間存在怎樣的聯(lián)系呢(見附錄 1)這篇文章上給出了一種方法,即,每個(gè)電壓對(duì)應(yīng)一個(gè)轉(zhuǎn)速,電壓和 轉(zhuǎn)速之間呈現(xiàn)線性關(guān)系。 但是我考慮
4、這種方法的前提是把直流電機(jī)的特性理解為 線性了,而實(shí)際情況下, 直流電機(jī)的特性絕對(duì)不是線性的, 或者說在局部上是趨 于線性的,這就是為什么說 PID 調(diào)速有個(gè)范圍的問題。具體看一下(見附錄 2) 這篇文章就可以了解了。 所以在正式進(jìn)行調(diào)速設(shè)計(jì)之前, 需要現(xiàn)有開環(huán)系統(tǒng), 測(cè) 試電機(jī)和轉(zhuǎn)速之間的 特性曲線(或者查閱電機(jī)的資料說明) ,然后再進(jìn)行閉環(huán)參 數(shù)整定 。這篇先寫到這, 下一篇說明連續(xù)系統(tǒng)的離散化問題。 并根據(jù)離散化后的 特點(diǎn)講述位置型 PID 和增量型 PID 的用法和 C 語言實(shí)現(xiàn)過程。PID控制算法的C語言實(shí)現(xiàn)二PID算法的離散化上一節(jié)中,我論述了 PID算法的基本形式,并對(duì)其控制過程
5、的實(shí)現(xiàn)有了一個(gè)簡(jiǎn) 要的說明,通過上一節(jié)的總結(jié),基本已經(jīng)可以明白 PID控制的過程。這一節(jié)中先 繼續(xù)上一節(jié)內(nèi)容補(bǔ)充說明一下。1說明一下反饋控制的原理,通過上一節(jié)的框圖不難看出,PID控制其實(shí)是對(duì)偏差的控制過程 ;2. 如果偏差為 0,則比例環(huán)節(jié)不起作用,只有存在偏差時(shí),比例環(huán)節(jié)才起作用。3. 積分環(huán)節(jié)主要是用來消除靜差,所謂靜差,就是系統(tǒng)穩(wěn)定后輸出值和設(shè)定值 之間的差值, 積分環(huán)節(jié)實(shí)際上就是偏差累計(jì)的過程, 把累計(jì)的誤差加到原有系統(tǒng) 上以抵消系統(tǒng)造成的靜差。4. 而微分信號(hào)則反應(yīng)了偏差信號(hào)的變化規(guī)律,或者說是變化趨勢(shì),根據(jù)偏差信 號(hào)的變化趨勢(shì)來進(jìn)行超前調(diào)節(jié),從而增加了系統(tǒng)的快速性。好了,關(guān)于PI
6、D的基本說明就補(bǔ)充到這里,下面將對(duì) PID連續(xù)系統(tǒng)離散化,從 而方便在處理器上實(shí)現(xiàn)。下面把連續(xù)狀態(tài)的公式再貼一下:假設(shè)采樣間隔為T,則在第K T時(shí)刻:偏差 err(K)=rin(K)-rout(K);積分環(huán)節(jié)用加和的形式表示,即err(K)+err(K+1)+微分環(huán)節(jié)用斜率的形式表示,即err(K)-err(K-1)T;從而形成如下PID離散表示形式:則U(K)可表示成為:(fc I二KJo廠廠(k)+K工 err(j) + t7(prrk l-errk-l)至于說Kp、K、Kd三個(gè)參數(shù)的具體表達(dá)式,我想可以輕松的推出了,這里節(jié)省 時(shí)間,不再詳細(xì)表示了。其實(shí)到這里為止,PID的基本離散表示形式
7、已經(jīng)出來了。目前的這種表述形式屬 于位置型PID,另外一種表述方式為增量式 PID,由U上述表達(dá)式可以輕易得到:u(k-l)=Kp(err(k-l)+g 血 j)+KM(err(k-l)G7T(k-2)那么:y() = p(err6Hj) - errork -1) + kieTTOTft) ÷ kA(error(k)2erro< 一 1)+WrOEt-2)這就是離散化PID的增量式表示方式,由公式可以看出,增量式的表達(dá)結(jié)果和 最近三次的偏差有關(guān),這樣就大大提高了系統(tǒng)的穩(wěn)定性。需要注意的是最終的輸出結(jié)果應(yīng)該為u(K)+增量調(diào)節(jié)值;PID的離散化過程基本思路就是這樣,下面是將離散化
8、的公式轉(zhuǎn)換成為C語言,從而實(shí)現(xiàn)微控制器的控制作用。PID控制算法的C語言實(shí)現(xiàn)三 位置型PID的C語言實(shí) 現(xiàn)上一節(jié)中已經(jīng)抽象出了位置性 PID和增量型PID的數(shù)學(xué)表達(dá)式,這一節(jié),重點(diǎn) 講解C語言代碼的實(shí)現(xiàn)過程,算法的C語言實(shí)現(xiàn)過程具有一般性,通過PID算法 的C語言實(shí)現(xiàn),可以以此類推,設(shè)計(jì)其它算法的C語言實(shí)現(xiàn)。第一步:定義PID變量結(jié)構(gòu)體,代碼如下:StruCt _pid訕金吟rJO 2float SetSpeed;例系數(shù)KP的作用是加快系統(tǒng)的響應(yīng)速度,提高系統(tǒng)的調(diào)節(jié)精度。KP越大,系統(tǒng)的響應(yīng)速度越快,系統(tǒng)的調(diào)節(jié)精度越高,但是容易產(chǎn)生超調(diào),甚至?xí)瓜到y(tǒng)不穩(wěn)定。KP取值過小,則會(huì)降低調(diào)節(jié)精度,使響
9、應(yīng)速度緩慢,從而延長(zhǎng)調(diào)節(jié)時(shí)間,是系 統(tǒng)靜態(tài)、動(dòng)態(tài)特性變差;2.積分作用系數(shù)Ki的作用是消除系統(tǒng)的穩(wěn)態(tài)誤差。Ki越大,系統(tǒng)的靜態(tài)誤差消 除的越快,但是Ki過大,在響應(yīng)過程的初期會(huì)產(chǎn)生積分飽和的現(xiàn)象,從而引起 響應(yīng)過程的較大超調(diào)。若 Ki過小,將使系統(tǒng)靜態(tài)誤差難以消除,影響系統(tǒng)的調(diào) 節(jié)精度;3微分系數(shù)Kd的作用是改善系統(tǒng)的動(dòng)態(tài)特性,其作用主要是在響應(yīng)過程中抑 制偏差向任何方向的變化,對(duì)偏差變化進(jìn)行提前預(yù)報(bào)。但是kd過大,會(huì)使響應(yīng)過程提前制動(dòng),從而延長(zhǎng)調(diào)節(jié)時(shí)間,而且會(huì)降低系統(tǒng)的抗干擾性。反應(yīng)系統(tǒng)性能的兩個(gè)參數(shù)是系統(tǒng)誤差e和誤差變化律ec,這點(diǎn)還是好理解的:首先我們規(guī)定一個(gè)誤差的極限值,假設(shè)為MmaX
10、;規(guī)定一個(gè)誤差的比較大的值, 假設(shè)為Mmid ;規(guī)定一個(gè)誤差的較小值,假設(shè)為 Mmin ;當(dāng)abs(e) >Mmax時(shí),說明誤差的絕對(duì)值已經(jīng)很大了,不論誤差變化趨勢(shì)如 何,都應(yīng)該考慮控制器的輸入應(yīng)按最大(或最小)輸出,以達(dá)到迅速調(diào)整誤差的 效果,使誤差絕對(duì)值以最大的速度減小。此時(shí),相當(dāng)于實(shí)施開環(huán)控制。當(dāng) e*ec>0 時(shí),說明誤差在朝向誤差絕對(duì)值增大的方向變化,此時(shí),如果 abs(e)>Mmid,說明誤差也較大,可考慮由控制器實(shí)施較強(qiáng)的控制作用,以達(dá)到 扭轉(zhuǎn)誤差絕對(duì)值向減小的方向變化,并迅速減小誤差的絕對(duì)值。此時(shí)如果 abs(e)<Mmid,說明盡管誤差是向絕對(duì)值增大的
11、方向變化,但是誤差絕對(duì)值本身 并不是很大,可以考慮控制器實(shí)施一般的控制作用, 只需要扭轉(zhuǎn)誤差的變化趨勢(shì), 使其向誤差絕對(duì)值減小的方向變化即可。當(dāng) e*err<0 且 e*err(k-1)>0 或者 e=0 時(shí),說明誤差的絕對(duì)值向減小的方向變化, 或者已經(jīng)達(dá)到平衡狀態(tài),此時(shí)保持控制器輸出不變即可。當(dāng) e*err<0 且 e*err(k-1)<0 時(shí),說明誤差處于極限狀態(tài)。如果此時(shí)誤差的絕對(duì) 值較大,大于Mmin ,可以考慮實(shí)施較強(qiáng)控制作用。如果此時(shí)誤差絕對(duì)值較小, 可以考慮實(shí)施較弱控制作用。當(dāng) abs(e)<Mmin 時(shí),說明誤差絕對(duì)值很小,此時(shí)加入積分,減小靜態(tài)誤
12、差。上面的邏輯判斷過程, 實(shí)際上就是對(duì)于控制系統(tǒng)的一個(gè)專家判斷過程。 (未完待 續(xù))PID控制算法的C語言實(shí)現(xiàn)十 模糊算法簡(jiǎn)介在PID控制算法的C語言實(shí)現(xiàn)九中,文章已經(jīng)對(duì)模糊 PID的實(shí)質(zhì)做了一個(gè)簡(jiǎn)要 說明。本來打算等到完成畢業(yè)設(shè)計(jì), 工作穩(wěn)定了再著力完成剩下的部分。 鑒于網(wǎng) 友的要求和信任,抽出時(shí)間來,對(duì)模糊 PID做一個(gè)較為詳細(xì)的論述,這里我不打 算做出仿真程序了,但就基本概念和思路進(jìn)行一下說明,相信有C語言基礎(chǔ)的朋 友可以通過這些介紹性的文字自行實(shí)現(xiàn)。 這篇文章主要說明一下模糊算法的含義 和原理。實(shí)際上模糊算法屬于智能算法,智能算法也可以叫非模型算法,也就是說,當(dāng) 我們對(duì)于系統(tǒng)的模型認(rèn)識(shí)
13、不是很深刻, 或者說客觀的原因?qū)е挛覀儫o法對(duì)系統(tǒng)的 控制模型進(jìn)行深入研究的時(shí)候, 智能算法常常能夠起到不小的作用。 這點(diǎn)是方便 理解的,如果一個(gè)系統(tǒng)的模型可以輕易的獲得, 那么就可以根據(jù)系統(tǒng)的模型進(jìn)行 模型分析, 設(shè)計(jì)出適合系統(tǒng)模型的控制器。 但是現(xiàn)實(shí)世界中, 可以說所有的系統(tǒng) 都是非線性的,是不可預(yù)測(cè)的。但這并不是說我們就無從建立控制器,因?yàn)?,?部分的系統(tǒng)在一定的條件和范圍內(nèi)是可以抽象成為線性系統(tǒng)的。問題的關(guān)鍵是, 當(dāng)我們系統(tǒng)設(shè)計(jì)的范圍超出了線性的范圍, 我們又該如何處理。 顯然,智能算法 是一條很不錯(cuò)的途徑。智能算法包含了專家系統(tǒng)、模糊算法、遺傳算法、神經(jīng)網(wǎng) 絡(luò)算法等。其實(shí)這其中的任何一
14、種算法都可以跟 PID去做結(jié)合,而選擇的關(guān)鍵在 于,處理的實(shí)時(shí)性能不能得到滿足。 當(dāng)我們處理器的速度足夠快速時(shí), 我們可以 選擇更為復(fù)雜的、 精度更加高的算法。 但是, 控制器的處理速度限制了我們算法 的選擇。當(dāng)然,成本是限制處理器速度最根本的原因。這個(gè)道理很簡(jiǎn)單, 51 單 片機(jī)和DSP的成本肯定大不相同。專家PID和模糊PID是常用的兩種PID選擇方 式。其實(shí),模糊PID適應(yīng)一般的控制系統(tǒng)是沒有問題。文章接下來將說明模糊算 法的一些基本常識(shí)。模糊算法其實(shí)并不模糊。模糊算法其實(shí)也是逐次求精的過程。這里舉個(gè)例子說 明。我們?cè)O(shè)計(jì)一個(gè)倒立擺系統(tǒng),假如擺針偏差V 5°我們說它的偏差比較 小
15、”; 擺針偏差在5°和10°之間,我們說它的偏差處于 中”的狀態(tài);當(dāng)擺針偏差 10° 的時(shí)候,我們說它的偏差有點(diǎn)兒 “大”了。對(duì)于“小”、“中”、“大”這樣的詞匯來講, 他們是精確的表述, 可問題是如果擺針偏差是 3°呢,那么這是一種什么樣的狀態(tài) 呢。我們可以用 “很小”來表述它。如果是 7°呢,可以說它是 “中”偏“小”。那么如 果到了 80°呢,它的偏差可以說 “非常大”。而我們調(diào)節(jié)的過程實(shí)際上就是讓系統(tǒng) 的偏差由非常 “大”逐漸向非常 “小”過度的過程。當(dāng)然,我們系統(tǒng)這個(gè)調(diào)節(jié)過程是 快速穩(wěn)定的。 通過上面的說明, 可以認(rèn)識(shí)到,
16、其實(shí)對(duì)于每一種狀態(tài)都可以劃分到 大、中、小三個(gè)狀態(tài)當(dāng)中去,只不過他們隸屬的程度不太一樣,比如 6°隸屬于小的程度可能是,隸屬于中的程度是,隸屬于大的程度是 0。這里實(shí)際上是有一個(gè) 問題的,就是這個(gè)隸屬的程度怎么確定這就要求我們?nèi)ピO(shè)計(jì)一個(gè)隸屬函數(shù)。 詳細(xì) 內(nèi)容可以查閱相關(guān)的資料,這里沒有辦法那么詳細(xì)的說明了。(見附錄3)這里面有些說明。 那么,知道了隸屬度的問題, 就可以根據(jù)目前隸屬的程度來控制電 機(jī)以多大的速度和方向轉(zhuǎn)動(dòng)了,當(dāng)然,最終的控制量肯定要落實(shí)在控制電壓上。 這點(diǎn)可以很容易的想想, 我們控制的目的就是讓倒立擺從隸屬 “大”的程度為 1 的 狀態(tài),調(diào)節(jié)到隸屬 “小”的程度為 1
17、 的狀態(tài)。當(dāng)隸屬大多一些的時(shí)候,我們就加快 調(diào)節(jié)的速度,當(dāng)隸屬小多一些的時(shí)候,我們就減慢調(diào)節(jié)的速度,進(jìn)行微調(diào)??蓡?題是,大、中、小的狀態(tài)是漢字,怎么用數(shù)字表示,進(jìn)而用程序代碼表示呢其實(shí) 我們可以給大、中、小三個(gè)狀態(tài)設(shè)定三個(gè)數(shù)字來表示,比如大表示用 3 表示,中 用 2表示,小用 1 表示。那么我們完全可以用 1*+2*+3*= 來表示它,當(dāng)然這個(gè)公 式也不一定是這樣的, 這個(gè)公式的設(shè)計(jì)是系統(tǒng)模糊化和精確化的一個(gè)過程, 讀者 也可參見相關(guān)文獻(xiàn)理解。 但就這個(gè)數(shù)字而言, 可以說明, 目前 6°的角度偏差處于 小和中之間,但是更偏向于中。 我們就可以根據(jù)這個(gè)數(shù)字來調(diào)節(jié)電機(jī)的轉(zhuǎn)動(dòng)速度 和時(shí)
18、間了。 當(dāng)然,這個(gè)數(shù)字與電機(jī)轉(zhuǎn)速的對(duì)應(yīng)關(guān)系, 也需要根據(jù)實(shí)際情況進(jìn)行設(shè) 計(jì)和調(diào)節(jié)。前面一個(gè)例子已經(jīng)基本上說明了模糊算法的基本原理了??墒菍?shí)際上,一個(gè) 系統(tǒng)的限制因素常常不是一個(gè)。 上面的例子中, 只有偏差角度成為了系統(tǒng)調(diào)節(jié)的 參考因素。而實(shí)際系統(tǒng)中,比如 PID 系統(tǒng),我們需要調(diào)節(jié)的是比例、積分、微分 三個(gè)環(huán)節(jié),那么這三個(gè)環(huán)節(jié)的作用就需要我們認(rèn)清, 也就是說, 我們需要根據(jù)超 調(diào)量、調(diào)節(jié)時(shí)間、 震蕩情況等信息來考慮對(duì)這三個(gè)環(huán)節(jié)調(diào)節(jié)的比重, 輸入量和輸 出量都不是單一的, 可是其中必然有某種內(nèi)在的邏輯聯(lián)系。 所以這種邏輯聯(lián)系就 成為我們?cè)O(shè)計(jì)工作的重點(diǎn)了。 下一篇文章將詳細(xì)分析 PID 三個(gè)變量和
19、系統(tǒng)性能參 數(shù)之間的聯(lián)系。PID控制算法的C語言實(shí)現(xiàn)一 (PID系列完結(jié)篇)模 糊PID的參數(shù)整定這幾天一直在考慮如何能夠把這一節(jié)的內(nèi)容說清楚,對(duì)于 PID 而言應(yīng)用并沒有 多大難度, 按照基本的算法設(shè)計(jì)思路和成熟的參數(shù)整定方法, 就算是沒有經(jīng)過特 殊訓(xùn)練和培訓(xùn)的人,也能夠在較短的時(shí)間內(nèi)容學(xué)會(huì)使用 PID 算法??蓡栴}是,如 何能夠透徹的理解 PID 算法,從而能夠根據(jù)實(shí)際的情況設(shè)計(jì)出優(yōu)秀的算法呢。通過講述公式和基本原理肯定是最能說明問題的,可是這樣的話怕是犯了 “專 家”的錯(cuò)誤了。對(duì)于門檻比較低的技術(shù)人員來講,依然不能透徹理解。可是說的 入耳了,能不能透徹說明也是一個(gè)問題, 所以斟酌了幾天,
20、 整理了一下思路才開 始完成 PID 系列文章的最后一篇。我所說的最后一篇不代表 PID的功能和發(fā)展就止步與此,僅僅是說明,透過這 一些列的文章,基本上已經(jīng)可以涵蓋 PID設(shè)計(jì)的要點(diǎn),至于更深入的研究,就交 給有需要的讀者去做。上一節(jié)中大致講述了一下模糊算法。 實(shí)際上模糊算法的很多概念在上一節(jié)中并 沒有深入的解釋。 舉的例子也只是為了說明模糊算法的基本含義, 真正的模糊算 法是不能這么設(shè)計(jì)的, 當(dāng)然也不會(huì)這么簡(jiǎn)單。 模糊算法的核心是模糊規(guī)則, 如果 模糊規(guī)則制定的出色, 那么模糊算法的控制效率就高。 其實(shí)這是智能算法的一般 特性,規(guī)則是系統(tǒng)判斷和處理的前提。那么就說說PID的規(guī)則該怎么制定。我
21、們知道,模糊算法的本質(zhì)是對(duì)PID的三個(gè)參數(shù)進(jìn)行智能調(diào)節(jié)。那么首先要提 出的問題是如何對(duì)PID的參數(shù)進(jìn)行調(diào)節(jié)這個(gè)問題其實(shí)是參數(shù)整定的問題,現(xiàn)實(shí)當(dāng)中有很多整定方法。 可是我們需要從根本上了解為什么這么整定, 才能知道該如 何建立數(shù)學(xué)模型進(jìn)行分析。那么要回答如何整定參數(shù)的問題,就需要先明白 PID 參數(shù)的作用都是什么對(duì)系統(tǒng)有什么影響我們從作用和副作用兩個(gè)方面說明參數(shù)對(duì)系統(tǒng)的影響。1比例環(huán)節(jié)Kp,作用是加快系統(tǒng)的響應(yīng)速度,提高系統(tǒng)的調(diào)節(jié)精度,副作用是 會(huì)導(dǎo)致超調(diào) ;2.積分環(huán)節(jié)Ki,作用是消除穩(wěn)態(tài)誤差,副作用是導(dǎo)致積分飽和現(xiàn)象 ;3微分環(huán)節(jié)Kd,作用是改善系統(tǒng)的動(dòng)態(tài)性能,副作用是延長(zhǎng)系統(tǒng)的調(diào)節(jié)時(shí)間。理
22、解了上述問題,那么就可以 “辯證施治,對(duì)癥下藥 ”了。比如說,如果系統(tǒng)響 應(yīng)速度慢,我們就加大KP的取值,如果超調(diào)量過大我們就減小 KP的取值等等。 可是問題這些語言的描述該如何用數(shù)學(xué)形式表達(dá)出來呢。 我們所知道的, 反饋系 統(tǒng)的實(shí)質(zhì)就是系統(tǒng)的輸出量作為反饋量與系統(tǒng)的輸入量進(jìn)行作差, 從而得到系統(tǒng) 的誤差e,那么這個(gè)誤差e就能夠反應(yīng)目前系統(tǒng)所處的狀態(tài)。誤差 e可以表明目 前系統(tǒng)的輸出狀態(tài)到底偏離要求多少。而誤差 e的變化律ec,表示誤差變化的 速度。這樣,我們可以根據(jù)這兩個(gè)量的狀態(tài)來分析三個(gè)參數(shù)此時(shí)應(yīng)該如何取值, 假如e為負(fù)方向比較大,ec也為負(fù)方向增大狀態(tài),此時(shí)比例環(huán)節(jié)要大一些,從 而加快調(diào)
23、節(jié)速度, 而積分環(huán)節(jié)要小一些, 甚至不加積分環(huán)節(jié), 從而防止負(fù)方向上 出現(xiàn)飽和積分的現(xiàn)象。 微分環(huán)節(jié)可以稍加一些, 在不影響調(diào)節(jié)時(shí)間的情況下, 起 到改善系統(tǒng)動(dòng)態(tài)性能的作用。附錄 1看到有不少人問到底如何讓 UK值與PWM占空比值對(duì)應(yīng),進(jìn)而實(shí)現(xiàn)占空比輸出 和輸出控制電壓對(duì)應(yīng)。(注意,我這里討論的前提是輸出控制的是電壓,不是 PWM 方波。 PWM 輸出 后要經(jīng)過濾波整形再輸出控制。)前提條件:輸出電壓控制電壓范圍是 0-10V。給定、反饋、輸出電壓采樣輸入電壓范圍是 0-5V (經(jīng)過運(yùn)放)。使用單片機(jī)AD為10位AD芯片那么10位AD芯片電壓采集得到的數(shù)據(jù)范圍就是 0-1024。PWM 為 8
24、 位可調(diào)占空比方波, 0 對(duì)應(yīng)輸出占空比為 0的方波, 255 對(duì)應(yīng)輸出占 空比 100%的方波,127對(duì)應(yīng)輸出 50%的方波。比如當(dāng)前給定是,反饋電壓是1V。(KP,KI,KD等系數(shù)略,關(guān)于PID算法的整數(shù)實(shí) 現(xiàn)我在前文中有論述如何實(shí)現(xiàn))。那么經(jīng)過AD采樣1 、給定對(duì)應(yīng)為 5122、反饋1V對(duì)應(yīng)為205假定經(jīng)過PID計(jì)算得到的UK為400也就意味著輸出電壓應(yīng)當(dāng)為(400*( UPWM峰值電壓)/1024那么UK對(duì)應(yīng)的PWM占空比是多少呢我們知道,UK=1024對(duì)應(yīng)占空比為100,也就是PWM的占空比系數(shù)為255???知, PWM 系數(shù) = UK/4;那么 400 就應(yīng)當(dāng)對(duì)應(yīng)系數(shù) 400/4=
25、100。也就是輸出電壓 =400*10/1024=同時(shí),由于采樣精度以及 PWM 輸出占空比精度控制的問題,將導(dǎo)致輸出電壓和 期望值不是那么線性,所以,我在項(xiàng)目?jī)?nèi)加入了輸出電壓采樣的控制。采樣AD輸入為0-5V,所以,對(duì)于輸出0-10V有一個(gè)縮小的比例。輸出10V則采樣值對(duì)應(yīng)為255輸出5V則采樣之對(duì)應(yīng)127 可知,對(duì)應(yīng) AD 結(jié)果為 97采樣輸出電壓值, 可以針對(duì)性的調(diào)整一下占空比輸出, 從而得到誤差允許范圍內(nèi) 的一個(gè)控制輸出電壓。同時(shí),經(jīng)過一些加速控制的手段??梢员容^迅速的達(dá)到控制的目的。下文中的UK控制方法是針對(duì)增量式PID控制而來做的。/*/void PWMProcess(void)u
26、int16 idata temp;uint16 idata UKTemp;temp = 0;UKTemp = 0;if( != 0 )/ 判斷是否需要改變占空比/ 是否需要改變占空比和你的被控系統(tǒng)特性有關(guān)= 0;UKTemp = + ;/計(jì)算UK控制量/控制量和計(jì)算值以及一個(gè)開關(guān)量有關(guān),我這里的開關(guān)量是系統(tǒng)需要的時(shí)候疊 加在控制量上的一個(gè)變量。if(UKTemp>999)UKTemp = 999;else/這里只所以是 999封頂而不是 1024是因?yàn)槲业南到y(tǒng) PWM 的峰值電壓是 12V 導(dǎo)致。while(1) / 如果輸出電壓和期望電壓相差Delta ,則繼續(xù)調(diào)整占空比,直到在誤差以
27、內(nèi)ADChPro(UPWMADCH);/ 測(cè)量輸出電壓if( UPWMADCH = UKTemp)return;if( UPWMADCH > UKTemp) / 如果當(dāng)前電壓大于輸出電壓,減小占空比if( ( UPWMADCH - UKTemp ) > UDELTA )temp = UPWMADCH - UKTemp; /temp = temp / 2;/ 下降可以加速下降,所以下降參數(shù)加倍if( > temp )- temp;= 0;elsereturn;else/ 如果當(dāng)前電壓小于輸出電壓if( ( UKTemp - UPWMADCH ) > UDELTA )tem
28、p = UKTemp - UPWMADCH;temp = temp / 4; / 上升處理不要超調(diào),所以每次只 +一半 if( > temp )+= (temp/2);else= 255;elsereturn;DisPlayVoltage();PWMChangeDuty; / 改變占空比Delay(10,10);/*/附錄 2直流電機(jī)PWM調(diào)速系統(tǒng)中控制電壓非線性研究引言由于線性放大驅(qū)動(dòng)方式效率和散熱問題嚴(yán)重,目前絕大多數(shù)直流電動(dòng)機(jī)采用 開關(guān)驅(qū)動(dòng)方式。開關(guān)驅(qū)動(dòng)方式是半導(dǎo)體功率器件工作在開關(guān)狀態(tài),通過脈寬調(diào)制PWM控制電動(dòng)機(jī)電樞電壓,實(shí)現(xiàn)調(diào)速。目前已有許多文獻(xiàn)介紹直流電機(jī)調(diào)速, 宋衛(wèi)國(guó)等用
29、89C51單片機(jī)實(shí)現(xiàn)了直流電機(jī)閉環(huán)調(diào)速;張立勛等用 AVR單片機(jī)實(shí) 現(xiàn)了直流電機(jī)PWM調(diào)速;郭崇軍等用C8051實(shí)現(xiàn)了無刷直流電機(jī)控制;張紅娟 等用PIC單片機(jī)實(shí)現(xiàn)了直流電機(jī) PWM調(diào)速;王晨陽等用DSP實(shí)現(xiàn)了無刷直流電 機(jī)控制。上述文獻(xiàn)對(duì)實(shí)現(xiàn)調(diào)速的硬件電路和軟件流程的設(shè)計(jì)有較詳細(xì)的描述,但沒有說明具體的調(diào)壓調(diào)速方法,也沒有提及占空比與電機(jī)端電壓平均值之間的關(guān) 系。在李維軍等基于單片機(jī)用軟件實(shí)現(xiàn)直流電機(jī) PWM調(diào)速系統(tǒng)中提到平均速度 與占空比并不是嚴(yán)格的線性關(guān)系,在一般的應(yīng)用中,可以將其近似地看作線性關(guān) 系。但沒有做深入的研究。本文通過實(shí)驗(yàn)驗(yàn)證,在不帶電機(jī)情況下,PWM波占空比與控制輸出端電壓
30、平均值之間呈線性關(guān)系;在帶電機(jī)情況下,占空比與電機(jī)端電壓平均值滿足拋物線方程,能取得精確的控制。本文的電機(jī)閉環(huán)調(diào)速是運(yùn)用 MatIab擬合的關(guān)系式通過PID控制算法實(shí)現(xiàn)。1系統(tǒng)硬件設(shè)計(jì)本系統(tǒng)是基于TX-1C實(shí)驗(yàn)板上的AT89C52單片機(jī),調(diào)速系統(tǒng)的硬件原理圖如 圖1所示,主要由AT89C52單片機(jī)、555振蕩電路、L298驅(qū)動(dòng)電路、光電隔離、 霍爾元件測(cè)速電路、MAX 232電平轉(zhuǎn)換電路等組成。圖1閉環(huán)控制系統(tǒng)示意圖2系統(tǒng)軟件設(shè)計(jì)系統(tǒng)采用模塊化設(shè)計(jì),軟件由1個(gè)主程序,3個(gè)中斷子程序,即外部中斷0、 外部中斷1,定時(shí)器0子程序,PID算法子程序,測(cè)速子程序及發(fā)送數(shù)據(jù)到串口 顯示子程序組成,主程序
31、流程圖如圖2所示。外部中斷0通過比較直流電平與鋸 齒波信號(hào)產(chǎn)生PWM波,外部中斷1用于對(duì)傳感器的脈沖計(jì)數(shù)。定時(shí)器 0用于對(duì) 計(jì)數(shù)脈沖定時(shí)。測(cè)得的轉(zhuǎn)速通過串口發(fā)送到上位機(jī)顯示, 通過PID模塊調(diào)整轉(zhuǎn)速到設(shè)定值。本實(shí)驗(yàn)采用M/T法測(cè)速,它是同時(shí)測(cè)量檢測(cè)時(shí)間和在此檢測(cè)時(shí)間內(nèi) 霍爾傳感器所產(chǎn)生的轉(zhuǎn)速脈沖信號(hào)的個(gè)數(shù)來確定轉(zhuǎn)速。由外部中斷1對(duì)霍爾傳感器脈沖計(jì)數(shù),同時(shí)起動(dòng)定時(shí)器 0,當(dāng)計(jì)數(shù)個(gè)數(shù)到預(yù)定值2 000后,關(guān)定時(shí)器0, 可得到計(jì)2 000個(gè)脈沖的計(jì)數(shù)時(shí)間,由式計(jì)算出轉(zhuǎn)速:n=60f / K=60N (KT)式中:n為直流電機(jī)的轉(zhuǎn)速;K為霍爾傳感器轉(zhuǎn)盤上磁鋼數(shù);f為脈沖頻率;N 為脈沖個(gè)數(shù);T為采樣周
32、期。圖2主程序流程圖3實(shí)驗(yàn)結(jié)果及原因分析3. 1端電壓平均值與轉(zhuǎn)速關(guān)系3. 1. 1實(shí)驗(yàn)結(jié)果實(shí)驗(yàn)用的是永磁穩(wěn)速直流電機(jī),型號(hào)是EG-530YD-2BH額定轉(zhuǎn)速2 0004 000 r/min ,額定電壓12 V。電機(jī)在空載的情況下,測(cè)得的數(shù)據(jù)用MatIab做一次線性擬合,擬合的端電壓平均值與轉(zhuǎn)速關(guān)系曲線如圖3(a)所示。相關(guān)系數(shù)R-Square:0. 952 1。擬合曲線方程為:y=0. 001 852x+0. 296 3 (2)由式(2)可知,端電壓平均值與轉(zhuǎn)速可近似為線性關(guān)系,根椐此關(guān)系式,在已 測(cè)得的轉(zhuǎn)速的情況下可以計(jì)算出當(dāng)前電壓。為了比較分析,同樣用 Matlab做二 次線性擬合,擬合
33、的端電壓平均值與轉(zhuǎn)速關(guān)系曲線如圖3(b)所示。相關(guān)系數(shù)R-SqUare: 0. 986 7。<)- ft*mflw二族曲樸處摳卉M圖3端電壓平均值與轉(zhuǎn)速關(guān)系曲線圖3. 1. 2原因分析比較圖3(a)可知,當(dāng)轉(zhuǎn)速在 O1 500 r/ min和4 0005 000 r/min ,端電壓 平均值與轉(zhuǎn)速間存在的非線性,用二次曲擬合如圖3(b)所示,擬合相關(guān)系數(shù)較高。 由圖3(a)可見,當(dāng)電機(jī)轉(zhuǎn)速為0時(shí)電機(jī)兩端電壓平均值約為1. 3 V。這是因?yàn)殡?機(jī)處于靜止?fàn)顟B(tài)時(shí),摩擦力為靜摩擦力,靜摩擦力是非線性的。隨著外力的增加 而增加,最大值發(fā)生在運(yùn)動(dòng)前的瞬間。電磁轉(zhuǎn)矩為負(fù)載制動(dòng)轉(zhuǎn)矩和空載制動(dòng)轉(zhuǎn)矩 之和
34、,由于本系統(tǒng)不帶負(fù)載,因此電磁轉(zhuǎn)矩為空載制動(dòng)轉(zhuǎn)矩??蛰d制動(dòng)轉(zhuǎn)矩與轉(zhuǎn) 速之間此時(shí)是非線性的。電磁轉(zhuǎn)矩與電流成正比,電流又與電壓成正比,因此此 時(shí)電壓與轉(zhuǎn)速之間是非線性的。當(dāng)轉(zhuǎn)速在2 0004 000 /min線性關(guān)系較好,占空比的微小改變帶來的轉(zhuǎn)速 改變較大,因此具有較好的調(diào)速性能。這是因?yàn)殡S著運(yùn)動(dòng)速度的增加,摩擦力成 線性的增加,此時(shí)的摩擦力為粘性摩擦力。粘性摩擦是線性的,與速度成正比, 空載制動(dòng)轉(zhuǎn)矩與速度成正比,也即電磁轉(zhuǎn)矩與電流成正比,電流又與電壓成正比, 因此此時(shí)電壓與轉(zhuǎn)速之間是線性的。當(dāng)轉(zhuǎn)速大于 4 000 r/ min。由于超出了額定 轉(zhuǎn)速所以線性度較差且調(diào)速性能較差。 此時(shí)用二次曲
35、線擬合結(jié)果較好,因?yàn)楫?dāng)電 機(jī)高速旋轉(zhuǎn)時(shí),摩擦阻力小到可以忽略,此時(shí)主要受電機(jī)風(fēng)阻型負(fù)荷的影響,當(dāng)運(yùn)動(dòng)部件在氣體或液體中運(yùn)動(dòng)時(shí),其受到的摩擦阻力或摩擦阻力矩被稱為風(fēng)機(jī)型 負(fù)荷。對(duì)同一物體,風(fēng)阻系數(shù)一般為固定值。阻力大小與速度的平方成正比。即 空載制動(dòng)轉(zhuǎn)矩與速度的平方成正比, 也即電磁轉(zhuǎn)矩與速度的平方成正比, 電磁轉(zhuǎn) 矩與電流成正比,電流又與電壓成正比,因此此時(shí)電壓與轉(zhuǎn)速之間是非線性的。3. 2占空比與端電壓平均值關(guān)系3. 2. 1實(shí)驗(yàn)結(jié)果擬合占空比與端電壓平均值關(guān)系曲線如圖4所示。相關(guān)系數(shù)R-Square 0. 9984。擬合曲線方程為:y = 0.000 645 3xso*1 +5.79(3)
36、圖4占空比與端電壓平均值關(guān)系曲線圖如圖4所示,占空比與端電壓平均值滿足拋物線方程。運(yùn)用積分分離的 PID 算法改變電機(jī)端電壓平均值,可以運(yùn)用此關(guān)系式改變占空比,從而實(shí)現(xiàn)了PWM調(diào)速。用示波器分別測(cè)出電壓的頂端值 UtOP與底端值Ubase,端電壓平均值Uarg 滿足關(guān)系式:% =Uhw+ Hl-UQ其中:為占空比。正是由于所測(cè)得的電機(jī)端電壓底端值 UbaSe不為0,所以得出的占空比與端電 壓平均值之間關(guān)系曲線為拋物線。若將電機(jī)取下,直接測(cè) L298的out1與out2 輸出電壓。所測(cè)得的電機(jī)端電壓底端值 UbaSe約為0,所得的占空比與端電壓平 均值滿足線性關(guān)系,即令式 中UbaSe為0,式(4)變?yōu)椋?QUa>3. 2. 2原因分析將電機(jī)取下后,直接測(cè)L298的輸出端之間的電壓,占空比與端電壓平均值滿 足關(guān)系式(5),說明整個(gè)硬件電路的設(shè)計(jì)以及軟件編程的正確性。從電機(jī)反電勢(shì) 角度分析,當(dāng)直流電機(jī)旋轉(zhuǎn)時(shí),電樞導(dǎo)體切割氣隙磁場(chǎng),在電樞繞組中產(chǎn)生感應(yīng) 電動(dòng)勢(shì)。由于感應(yīng)電動(dòng)勢(shì)方向與電流的方向相反,感應(yīng)電動(dòng)勢(shì)也即反電勢(shì)。直流電機(jī)的等效模型如圖5所示。圖5(a)表示電機(jī)工作在電動(dòng)機(jī)狀態(tài)。圖5(b)表示電 機(jī)工作在發(fā)電機(jī)狀態(tài)。:I=II _IbT i k¾w -i IUJ業(yè)聊和W WflL圖5直流電機(jī)等效電路
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 安徽省阜陽市阜南實(shí)驗(yàn)中學(xué)2024-2025學(xué)年高二下學(xué)期第二次階段性檢測(cè)(期中)地理試卷(含答案)
- 2025年Android資深開發(fā)者告訴你:簡(jiǎn)歷這樣寫絕對(duì)吸引面試官眼球面試電話接到手軟
- 2025年android性能優(yōu)化工具!原生Android開發(fā)的路該怎么走?Android校招面試指南
- 2024-2025學(xué)年下學(xué)期高一生物人教版期末必刷??碱}之自然選擇與適應(yīng)的形成
- 建筑施工特種作業(yè)-樁機(jī)操作工真題庫(kù)-4
- 色彩靜物構(gòu)圖題目及答案
- 3 3 導(dǎo)數(shù)的綜合應(yīng)用-2026版53高考數(shù)學(xué)總復(fù)習(xí)A版精煉
- 2023-2024學(xué)年四川省樂山市高二下學(xué)期期末考試數(shù)學(xué)試題(解析版)
- 2024-2025學(xué)年四川省廣安市高三第一次診斷性考試語文試題(解析版)
- 2024-2025學(xué)年山東省聊城市某校高一下學(xué)期第一次月考語文試題(解析版)
- 慢性活動(dòng)性EB病毒病診治專家共識(shí)(2025版)解讀
- 2025年入團(tuán)考試常見問題及試題答案
- 2025浙江杭州市科創(chuàng)集團(tuán)有限公司招聘10人筆試參考題庫(kù)附帶答案詳解
- 日語水平考試試題及答案
- 安徽省2023~2024學(xué)年新高一數(shù)學(xué)自主招生考試試題含答案
- 冠心病患者非心臟手術(shù)麻醉管理專家共識(shí)
- 嘉興市重點(diǎn)中學(xué)2025年初三沖刺押題(最后一卷)英語試題試卷含答案
- 嬰幼兒護(hù)理的重要知識(shí)點(diǎn)試題及答案
- 水電安裝施工合同范本7篇
- 人防車位使用權(quán)轉(zhuǎn)讓協(xié)議一次性終
- 院內(nèi)卒中救治流程
評(píng)論
0/150
提交評(píng)論