這里特地給出了Kp Ki Kd這三個(gè)參數(shù),這三個(gè)參數(shù)就是大家最?吹降哪莻(gè)離散的PID公式,也就是說(shuō)你在這里既可以使用Kp Ti Td的參數(shù)來(lái)建模也可以使用Kp Ki Kd的參數(shù)來(lái)建模,到這里就總算是可以把我們的傳遞函數(shù)放在系統(tǒng)中用自控原理的相應(yīng)工具來(lái)分析了。分析之前要先聲明一個(gè)事情,有人發(fā)現(xiàn)(比如在MWC和其他許多飛控中)用陀螺儀的輸出來(lái)當(dāng)做PID中的微分項(xiàng),會(huì)取得比標(biāo)準(zhǔn)PID更好的控制效果,乍一看這么做與用前后兩次歐拉角作差沒有區(qū)別(因?yàn)榻撬俣日镁褪墙嵌鹊奈⒎郑,控制效果不一樣就說(shuō)不通了。
其實(shí)是這個(gè)樣子的,如果我們?cè)诔绦蛑凶隽朔浅:玫木程安全的處理并且控制頻率和姿態(tài)解算讀陀螺的頻率是一樣的的情況下二者確實(shí)是沒有任何差別的,但是大家的飛控都寫的非常簡(jiǎn)單,姿態(tài)解算頻率都高于控制頻率,于是讀到的陀螺儀的數(shù)據(jù)并不是‘當(dāng)前使用的姿態(tài)前一時(shí)刻’的數(shù)據(jù)而是‘后一時(shí)刻’的數(shù)據(jù),這時(shí)候PID控制的微分部分就不再是‘后項(xiàng)差分’而是‘前向差分’了(這就是我前面要強(qiáng)調(diào)使用后項(xiàng)差分法的原因),那這個(gè)時(shí)候就尷尬了,我們不能全部使用前向差分模型來(lái)建模(因?yàn)榉e分還是使用的后向模型)兩邊分開用又會(huì)出現(xiàn)模型階次不匹配的問(wèn)題,所以這時(shí)候是無(wú)法使用PID模型來(lái)考慮接下來(lái)的問(wèn)題的,你使用的其實(shí)是兩個(gè)獨(dú)立的控制器并聯(lián),一個(gè)是角度的PI控制器,而另一個(gè)是角速度的P控制器,二者采樣時(shí)間不一樣,于是得當(dāng)做兩個(gè)獨(dú)立的控制回路調(diào)整參數(shù),這是使用這種控制器時(shí)的參數(shù)調(diào)整方法。也就道出了為什么部分情況下使用角度微分和角速度控制效果不一樣的問(wèn)題,這種方法固然是很好的(可以有效的降低振動(dòng)),當(dāng)然前提是你按照二者獨(dú)立控制的思路來(lái)設(shè)計(jì)參數(shù)。但是很不幸,大家都沒有這么做,依然是把整體作為PID控制器來(lái)考慮,那么,我只能說(shuō)這是個(gè)近似的PID控制器了,手調(diào)固然可以(萬(wàn)能的實(shí)驗(yàn)調(diào)參啊)但是通過(guò)建模的方式算出優(yōu)化的參數(shù)就不可能了。我們接下來(lái)看會(huì)怎樣: 從系統(tǒng)的零極點(diǎn)圖理解PID控制的原理 有了上面的PID傳遞函數(shù)的離散系統(tǒng)模型我們就可以開始下一步了,將上面的分式上下做因式分解可以得到系統(tǒng)的零極點(diǎn),在自控原理中我們知道,系統(tǒng)的極點(diǎn)確定系統(tǒng)的穩(wěn)定性情況,零點(diǎn)不影響系統(tǒng)穩(wěn)定性,零點(diǎn)和極點(diǎn)共同決定系統(tǒng)的響應(yīng)。這里說(shuō)的有些模糊,在現(xiàn)代控制理論中會(huì)提到一種控制器叫零極點(diǎn)配置控制器,能更好的闡述零點(diǎn)的作用:系統(tǒng)中的零點(diǎn)可以用來(lái)與系統(tǒng)中的不穩(wěn)定(或者不想要)的極點(diǎn)對(duì)消來(lái)設(shè)計(jì)出理想的控制器(數(shù)學(xué)上),工程中我們考慮的是讓零點(diǎn)與我們不想要的極點(diǎn)盡可能的靠近,就能削弱這個(gè)不想要的極點(diǎn)對(duì)系統(tǒng)的影響。下面我們用極點(diǎn)配置的方法來(lái)設(shè)計(jì)PID控制器,這里提前聲明我們使用的并不是最標(biāo)準(zhǔn)的閉環(huán)極點(diǎn)配置方法,因?yàn)槲覀兊?/font>PID控制器只有兩個(gè)零點(diǎn)可以配置(如果使用PI控制器的話就只有一個(gè)零點(diǎn)可以自由配置了)而且還多了一個(gè)臨界穩(wěn)定的極點(diǎn),反饋又使用的是單位負(fù)反饋……極大的限制了極點(diǎn)配置的自由度,于是我們?yōu)榱撕?jiǎn)單起見僅從開環(huán)部分進(jìn)行極點(diǎn)配置,這么做有許多不嚴(yán)謹(jǐn)?shù)牡胤,但是?huì)簡(jiǎn)化許多工程上的應(yīng)用(在做自適應(yīng)PID控制器的時(shí)候會(huì)用到完整的極點(diǎn)配置方法,到那里就會(huì)發(fā)現(xiàn)是多么復(fù)雜的一件事兒了……)。
上圖是PID控制器開環(huán)部分(就是上面推導(dǎo)的數(shù)學(xué)模型)常見的零極點(diǎn)分布情況,有兩個(gè)固定在(0,0)和(1,0)位置的極點(diǎn),兩個(gè)對(duì)稱分布的零點(diǎn)(手調(diào)參數(shù)時(shí)很難出現(xiàn)兩個(gè)零點(diǎn)都在實(shí)軸上的情況而且我們也不希望那樣),這兩個(gè)零點(diǎn)的位置是可調(diào)的,微分時(shí)間常數(shù)Td主管零點(diǎn)位置的左右移(注意是‘主管’,也就是說(shuō)對(duì)虛軸的位置還是有影響的),常數(shù)越大越靠右(也就是說(shuō)臨界穩(wěn)定極點(diǎn)的影響越弱,抗噪聲性能越好但到達(dá)0誤差的穩(wěn)態(tài)也就越困難,因?yàn)檫@個(gè)臨界穩(wěn)定的極點(diǎn)是在閉環(huán)系統(tǒng)中讓系統(tǒng)到達(dá)穩(wěn)態(tài)0誤差的關(guān)鍵但很影響穩(wěn)定性),積分常數(shù)Ti越大零點(diǎn)越靠近實(shí)軸,Ti在實(shí)際控制中的作用不好說(shuō)明,留在后面再說(shuō),但是到這里大家也就看出我為什么要使用標(biāo)準(zhǔn)的Kp Ti Td參數(shù)而不是Kp Ki Kd參數(shù)了,因?yàn)槭褂眠@種參數(shù)時(shí)Kp對(duì)開環(huán)系統(tǒng)的穩(wěn)定性(注意僅指開環(huán)系統(tǒng))沒有影響,我們就可以降低系統(tǒng)對(duì)這個(gè)參數(shù)的敏感性而主要考慮另外兩個(gè)參數(shù)就好。大家在手調(diào)參數(shù)的看到的圖形和這個(gè)都應(yīng)該沒有多少區(qū)別
接下來(lái)我們看一下我們被控系統(tǒng)的數(shù)學(xué)模型: 被控系統(tǒng)的小范圍線性化模型 正如我前面所述,想要分析PID的控制性能必須得得到被控系統(tǒng)的線性近似模型(非線性系統(tǒng)下的分析工具沒個(gè)正經(jīng)能用的),這里大家可以通過(guò)動(dòng)力學(xué)建模得到系統(tǒng)的非線性模型(像幾乎所有的碩士博士論文那樣)再泰勒展開,但是這樣做往往得到的模型跟實(shí)際情況差異太大以至于沒有參考價(jià)值,這里我推薦使用系統(tǒng)辨識(shí)的方法來(lái)得到系統(tǒng)的線性模型,因?yàn)檫@么做如果能做到正確的辨識(shí)的話還能得到系統(tǒng)的誤差模型,于是現(xiàn)在在控制界很流行,只是實(shí)際用的時(shí)候就發(fā)現(xiàn)難度頗高,盡管有許多現(xiàn)成的工具但是依然特別難掌握,也難怪很多熱會(huì)把這個(gè)當(dāng)做是看家本領(lǐng),作者在這方面也算是連皮毛都沒摸全,不敢亂講,這里就為了解釋PID方便直接把我的大四軸辨識(shí)出來(lái)的Pitch軸模型拿出來(lái)當(dāng)做例子來(lái)講了:
喲,完美嘛,0.5s即可到達(dá)穩(wěn)態(tài),0穩(wěn)態(tài)誤差,超調(diào)量也不過(guò)10%而已,相當(dāng)?shù)睦硐耄覐倪@里可以看出使用Kp Ti Td參數(shù)的優(yōu)勢(shì):隨意調(diào)整Kp,可以提高系統(tǒng)性能而且對(duì)閉環(huán)穩(wěn)定性幾乎沒有影響,甚至對(duì)開環(huán)系統(tǒng)的穩(wěn)定性完全沒有影響,我想,這也就是MWC飛控用Kp(角速度的)作為動(dòng)態(tài)參數(shù)的原因。那么好吧,令人沮喪的部分終于要來(lái)了,把這個(gè)參數(shù)燒到飛控里面,運(yùn)行,哇塞,不錯(cuò)哦,不動(dòng)搖桿它平衡的很好,那我們遙控下……我擦,越抖越大,控制不住了,翻了,打到人了,鮮血汩汩而出……………………
這是為什么呢?來(lái)看下我們這時(shí)的開環(huán)系統(tǒng)階躍響應(yīng):
咦?怎么是一條直線呢?沒錯(cuò),它就是這樣一個(gè)不穩(wěn)定的狀態(tài),在我們高興的做極點(diǎn)配置的時(shí)候,忘記了PID控制器本身還會(huì)引入一個(gè)臨界穩(wěn)定的極點(diǎn),這個(gè)極點(diǎn)帶來(lái)的好處0穩(wěn)態(tài)誤差,但是卻對(duì)噪聲非常敏感,也就是說(shuō),如果我們的飛機(jī)在氣流平穩(wěn)的地方飛行,飛機(jī)的電機(jī)性能又極佳,建模也準(zhǔn),最關(guān)鍵的,是姿態(tài)解算的精度又出奇的高的話,用這種方法得到的PID參數(shù)肯定是非常完美的。但是現(xiàn)實(shí)總是殘酷的,具體為什么會(huì)對(duì)噪聲這么敏感應(yīng)該可以從系統(tǒng)的噪聲辨識(shí)模型中得到解釋,但是很遺憾到文章這里我并沒有對(duì)噪聲進(jìn)行建模,有興趣的可以嘗試下。
這里就是使用PID控制的弊端了,它只提供了兩個(gè)零點(diǎn)用來(lái)對(duì)極點(diǎn)進(jìn)行抑制,但是又同時(shí)引入了一個(gè)不穩(wěn)定的極點(diǎn),不得已,我們只能讓零點(diǎn)從那兩個(gè)極點(diǎn)上向那個(gè)臨界穩(wěn)定的極點(diǎn)移動(dòng),企圖用兩個(gè)零點(diǎn)來(lái)牽制三個(gè)極點(diǎn),這自然沒辦法達(dá)到良好的控制效果,但也就成了沒有辦法的辦法了……大家在搜索PID參數(shù)整定方法的時(shí)候一定都聽說(shuō)過(guò)Ziegler-Nichols整定法則,這幾乎是PID基于模型的參數(shù)整定唯一的方法了,但是為什么沒人把這個(gè)如此著名的整定方法(這里指第一方法)應(yīng)用在四軸的PID整定中呢?因?yàn)槭褂迷摲▌t有個(gè)鐵打的前提:控制對(duì)象中既不能包含積分器,又不包含主導(dǎo)共軛復(fù)數(shù)極點(diǎn),也就是說(shuō)階躍響應(yīng)應(yīng)該是一個(gè)S型…………………………很不幸,我們的四軸這兩條都占了……積分器是在從角速度到角度轉(zhuǎn)換的過(guò)程中,在與其他好多極點(diǎn)的共同作用中最終在我們的參數(shù)辨識(shí)中表現(xiàn)為了那兩個(gè)討厭的共軛復(fù)數(shù)極點(diǎn),重新看一遍我的解釋流程,就明白為什么不能用Ziegler-Nichols整定第一法則了,也就是為什么光用PID不能達(dá)到足夠好的控制效果。
那么,既然非要用PID飛又既然缺少極點(diǎn)的情況下我們只能讓零點(diǎn)右移,這么做的理由也是可以從另一個(gè)方面來(lái)佐證的:
調(diào)過(guò)PID的都知道增加微分可以提高系統(tǒng)的抗噪性能,減小積分會(huì)減小噪聲積累(這里指Ki增加而不是Ti)反映到零點(diǎn)的移動(dòng)中剛好就是零點(diǎn)向右側(cè)的(1,0)點(diǎn)移動(dòng)。所以可以得知,我們經(jīng)過(guò)權(quán)衡能得到的PID最佳的控制參數(shù)的零點(diǎn)應(yīng)該是落在了開環(huán)主導(dǎo)極點(diǎn)和(1,0)點(diǎn)連線所在的那一片區(qū)域內(nèi)了,那么我們對(duì)PID的分析是否到此就結(jié)束了呢?顯然沒有,我還沒有論證為什么大家在數(shù)年的總結(jié)中會(huì)得到“先調(diào)P,再調(diào)D,最后調(diào)I就能飛了”的實(shí)驗(yàn)整定方法能夠湊效,并且還要提出個(gè)理論指導(dǎo)實(shí)踐的方法來(lái)……
自控原理的書上有提到“串聯(lián)響應(yīng)頻率校正”的設(shè)計(jì)方法,但是該方法屢試都不爽,有興趣可以從這個(gè)方向走走,說(shuō)不定能為我們的四軸PID控制器設(shè)計(jì)找到一條出路。
之前我曾說(shuō)過(guò),用Kp Ti Td型的參數(shù)設(shè)計(jì)的PID控制器穩(wěn)定性對(duì)Kp并不敏感,那么我們是不是可以利用這點(diǎn)來(lái)優(yōu)化我們的控制器設(shè)計(jì)呢?答案是肯定的。我們先來(lái)看下按照上面的‘向右看齊’參數(shù)調(diào)整方法會(huì)發(fā)生什么:
我們隨便選一個(gè)在連線上的點(diǎn)作為參數(shù)查看它的開環(huán)零極點(diǎn)和閉環(huán)階躍響應(yīng)(這里Kp去1):