1. 程式人生 > >模擬速度控制器的基本結構

模擬速度控制器的基本結構

速度控制的基本結構如下:

所謂速度控制器就是為了控制速度達到一個速度,而所要達到的速度一般稱作參考速度,不過這種翻譯我覺得不夠形象,在此我用期望速度來代替,也就是你希望達到多大的速度,首先這是一個反饋系統(實際上也包含了一個前饋)。

為何要用反饋?什麼是反饋?設想一個例子,如果開汽車時候,假如檔位一直是固定的,那麼我踩的油門深度一直保持不變,那麼車速會越來越快然後保持不變。

假如我想要車速達到100千米/時,則我油門要踩多深呢?當然這裡假定忽略所有檔位因素,就假定這個汽車只有一個檔位。顯然油門深度與速度之間存在著一種對應關係。現在假定油門最大深度為50000,最低是0。則假定踩100深度對應車速100.

踩油門多少深度去控制車速,這就是直接控制,沒有用到反饋控制,這種控制有以下壞處:

假如汽車在上個30度的坡,且車上裝滿了人,那麼踩油門踩100深度,車速可能只能達到80,因為上坡存在了更大的阻力,這就造成了誤差。反饋可以縮小這個誤差,現在改成反饋控制,反饋就是測量,測量當前車速,如果車速與期望車速存在差距,這個差距乘以一個數,這個數稱為比例因子,英文稱為P,也就是速度的P控制,假設現在上坡,反饋靠測量當前車速,現在車速是80,與期望100差20,20乘以一個比例因子P,假設P=200,則油門深度=200*20=400,也就是踩400油門,車速不就上升了,當車速越來越接近100,誤差會越來越小,當車速到達99.9時候,誤差是0.1,乘以比例為0.1*200=20,顯然20 的油門只會讓車速下降,所以車速不可能到達99.9,因為油門100車速是80,隨著誤差的降低油門越來越低低到等於摩擦力時候,車速保持不變,但是始終存在一個誤差,這個誤差通過乘以比例因子得到一個油門去克服上坡的阻力,顯然反饋比直接控制縮減了誤差,當然這裡有個前提,比例足夠大,但是這裡仍然有一個誤差,這個誤差就是靜態誤差了。

所以反饋控制比直接控制存在以下好處:

第一個就是上面所說的上坡時候可以減少誤差,而上坡的阻力可以理解為負載轉矩,再比如車子拉著一頓貨也可以理解為負載轉矩,也就是負載有個反向的力矩。

第二個好處是反饋對引數變化不敏感,如果直接控制的時候,發動機改變了發動機的進氣噴油系統改變了,車速與油門深度的關係也會變化,但是反饋不利用這個關係進行控制。

第三個即是假如車速是0,要加到100,則根據上面描述的油門一開始直接控制為100,那麼車速從0到100的時間比反饋要長,因為反饋時候車速是0的時候誤差是100,此時油門是100*P=100*200=20000,所以相當於一開始誤差大直接油門踩到底,等誤差小了慢慢減少油門深度,所以反饋的動態響應時間短。

基於以上所以用反饋,如果不用反饋很難進行速度控制。

反饋是根據期望速度與當前速度的差值乘以一個比例P獲得轉矩去控制電機的。

也就是P控制,後面還有I控制(積分)。

速度控制一般用PI控制器,而位置控制用PID控制。

實際上PI控制器只是傳遞函式的一部分,傳遞函式是整個系統的輸出的拉普拉斯變換除以輸入的拉普拉斯變換。

所以PI控制器會改變整個系統的傳遞函式,透過調整PI引數,可以影響整個傳遞函式的零極點,從而影響系統的效能。

目的就是最大限度的提高系統的效能。

一個簡單的比例P,蘊含了很多東西,在數學上只是乘以一個數而以,而背後遠不止這麼簡單,就類似與一個洛倫茲變換背後隱含了狹義相對論一樣,是關於時間長度的相對性,時間長短是可變的,長度隨著速度是變化的,這就是數的背後的物理意義,這個物理意義才是靈魂,所以分析傳遞函式有種科學家分析物理方程去理解揣測宇宙一樣的感覺,而不只是什麼死板的軟體了。

1.如果不考慮任何摩擦和阻力,不考慮負載轉矩和摩擦,那麼只用P就可以最終使速度等於期望速度。在這種情況下,P越大,系統的響應時間越快,但是P不能太大,受到實際物理因素的限制,比如油門最多隻能踩到底,如果說加大油門設計,那麼噴油和進氣系統也要跟著涉及,燃燒汽車和空氣的混合速度也要受限,所以不可能無限制的加大P,另外電機控制的逆變電壓最大值受IGBT等功率器件的限制,P有個上限。

雖然P越大系統的響應速度越快,另外P越大,系統的輸入頻寬越高。所謂頻寬是指輸入,所謂輸入就是你期望的速度,這個期望的速度的期望從無到有,突然你想要達到某個速度,這是一個階躍輸入,從無到有,可能你的期望不停的變化,一會期望速度是100,一會期望速度是50,一會期望速度是200,期望的改變會形成一個訊號,這個訊號如果用傅立葉變換的角度來看可以分解成不同頻率的正弦波的疊加,而頻寬就是對各種頻率的正弦輸入到輸出的幅度的變化比例,換句話說,頻寬越大,允許你的期望改變的越快,否則響應會平滑你的期望。允許你1秒的時候期望速度是100,1.000001秒的時候期望速度是200.

2.上面說的是假設負載轉矩是0的時候,並且期望是可以隨時改變的,期望的改變就是你一會想要速度是100一會想要速度是200…,這種狀況我稱為期望擾動,也就是期望在不停的變化,還有一種考慮轉矩的時候,也就是負載轉矩,一會上坡一會下坡一會有個小石子拱了一下一會路坑坑窪窪的,這就是負載擾動了。

所以有期望擾動和負載擾動,期望擾動你可以隨便叫,你可以叫它參考擾動或渴求擾動。

當考慮負載轉矩的時候,正如前面所說汽車上坡,就產生了一個靜態誤差。實際上負載轉矩可能是恆定的也可能變化的,這裡在最簡單的情況下即是恆定的時候產生了靜態誤差,負載擾動會產生擾動性的誤差,實際上除了負載擾動之外,還存在一種摩擦,這種摩擦隨著速度的提高而提高,比如汽車的風阻力,發動機的摩擦阻力,電機轉速的摩擦阻力,這是與負載轉矩不同的。

3.從沒有任何期望到有個期望,然後速度接近期望速度最終到達期望速度,這在不考慮負載擾動和摩擦的情況下,但是假如期望擾動是不停增大的,比如斜坡期望,1秒時期望是100,2秒時期望是200,3秒時期望是300,那麼也會產生一個誤差,調整調不過來,這個誤差如果P越大則誤差越小。

如果期望是拋物線式的期望,1秒時候期望速度是100,2秒時候期望是400,3秒時候期望速度是900,那麼隨著時間推移,誤差越來越大最後變為無窮大,也就是慾望膨脹得太厲害了,調整的現實與理想差距越來越大,也就是P再大也調整不過來。

4.如果只是簡單的期望,從無到有產生一個不變的目標期望,不考慮負載擾動,只考慮摩擦,那麼也會產生誤差,這個誤差隨著P越大越小,因為P不可能無窮大,所以總會產生誤差。

所以可見,只要考慮摩擦和負載擾動,靜態誤差就存在,靜態誤差隨著P的增大而減少,但是P有個限制,所以會存在靜態誤差,而且即使不考慮摩擦和負載擾動,期望擾動如果慾望膨脹過大,也會產生誤差,可能誤差越來越大。

所以單純的P控制不夠,需要一個積分控制I。P和I構成PI控制器。

  1. 有了積分項之後,存在簡單的恆定負載轉矩時候,最終調整的速度能夠等於期望速度。但是負載擾動如果是不停的在增大呢?比如上坡,坡度越來越大,那麼即使有積分項,同樣也產生了誤差。這個誤差隨著積分I越大而變小。
  2. 當存在PI的時候,傳遞函式的零極點可以通過調節P和I的值來調節整個系統的傳遞函式的零點和極點了,調整極點的位置可以讓階躍相應是有超調現象還是沒有抖動現象,以及調節速度,也就是阻尼問題,當阻尼或者說衰減小於1的時候就會產生到達期望速度的抖動,類似於駕駛員調節車速到100,可能調到105,然後往回調到98,然後調到100,這樣存在這某種波動,當阻尼係數等於1的時候剛好調到100沒有波動,當阻尼大於1的時候,駕駛員可能很小心慢慢的調整也沒有波動,但是調節的速度很慢,時間過長。這是極點的影響,而零點也會產生過沖行為,但是零點又加速了調節速度。調節的越快,猛打方向調節車到行車路線中間可能引發過度調節,但是響應速度快,壞處就是了要多次調節形成波動。
  3. PI的傳遞函式的I與頻寬相關,而比例P與阻尼係數相關。
  4. 在PI情況的渴求擾動下,如果渴求是斜坡式的增長仍然有誤差,該誤差隨著I增大而減小,而拋物線式的慾望同樣也會引發無限增大的誤差。

可見加一個積分項I,雖然抑制了恆定負載轉矩擾動帶來的靜態誤差,但是對於更加複雜的負載擾動仍然有誤差,對於複雜增長的期望擾動也會產生誤差,有些會導致無限大的誤差從而使系統不穩定,模型是有限的,而真實的擾動是各種情況的。

怎麼辦?

為了抑制這種跟蹤誤差,需要在PI的基礎上,修改控制器成PIXYZUVW…….控制器,以產生跟高階的極點去抵消高階增長的期望帶來的跟蹤誤差問題,而對於複雜的負載擾動需要在控制上增加額外的零點去抵消負載擾動帶來的跟蹤誤差,但是這種方式大大增加控制器的複雜度,帶了額外的系統穩定性,而且不管是期望擾動還是負載擾動在實際情況下是任意的,不能用有限的階數去補償,其次擾動可能在複平面的虛軸上帶來正弦式的擾動,這樣高階的補償不可行,所以實際中用前饋補償來抵消複雜的擾動帶來的跟蹤誤差。

前饋補償估計整個系統的動力學模型的轉動慣量和摩擦係數來計算預測的轉矩,但是由於轉動慣量和摩擦係數是評估的,實際過程中也是不停的改變的,比如電機磨損,或者汽車發動機機油變質,走的道路不一樣等等,轉動慣量也可以用汽車有時拉人有時空載來比喻,在多軸運動控制系統中多軸之間有耦合,很多因素造成不可能去實際評估一個系統的動力學這兩個引數,必然有誤差,所以前饋會產生因為引數誤差而帶來的跟蹤誤差。

因此前饋與反饋結合在一起,這樣它的效果更佳接近一點真實……實際上以上基本結構只是一種近似,沒有加入轉矩調整器和反饋的噪聲過濾器,因此還有更多的東西在等著,以及引數的調整和其的數字控制,在離散域裡的z變換。

題外話:

無限的東西做不完,一直會前進,而有限的東西做完了又要換個新的重新開始,不停的開始,這無疑永遠也在途中毫無意義。

協議更新和進化是那些指定協議組織的事,與自己無關,即使把協議看成是無限發展的,但那個發展是組織的事,對這樣的國際組織來說是無限的,對個人來說是有限的階段性的。

階段性的東西之後接下來還是階段性的東西,過去的忙碌對現在的忙碌有時沒有任何幫助。

所以必須是有界無限,而不是無界有限。有界無限是用來比喻宇宙,宇宙是有界的但是卻是無限的,類似於可以一個人學一件東西但是這件東西一直在進化,從個體時間來說的進化,而不是十年或更大時間範圍內,如果那樣那超過了個人的精力,是社會性的。無界有限就是這種社會性的東西,階段性的,即使是發展的也是緩慢的,對於個人來說做完了就開始另外一個新任務而以,它不能靠個人來發展,而是某個組織和社會群體。

一個小軟體你看它程式碼怎麼寫就知道它做了什麼,比如一些控制器。

一個大軟體你看它程式碼怎麼寫你也知道它做了什麼,但是不知道它為什麼這麼做,可當你看完了它的所有程式碼之後,大腦試圖把一個個樹木組成一個森林,如果整個森林構建成功的話再重新審視這個森林,你就知道它做了什麼了,比如一個子系統或某個中型以上的協議棧。

還有一種軟體,它也是小軟體,你看完之後也知道它做了什麼,但是不知道它為什麼這麼做,因為它很小,實際上你也早就看完了所有程式碼,可是還是不知道這到底意味著什麼?什麼東西小小的卻蘊含了無限的東西呢?小小的可以憑一己之力,而無限的可以一直前進。

有界無限的東西建立在過去的基礎上,一直在進化著,永遠超不了它,正如因特爾CPU效能一直進化趕超在前面,提高電機效能也是。

不要迷戀諾貝爾,不要迷戀科學,要迷戀就迷戀真實吧,真實是無限的,而模型、科學這些都是有限的,如果把有限的東西當做是真實的話,那就是另外一種洗腦,擺脫所有的框框架架,尋找最原始的真理。