上一篇介紹了建立系統模型的三種方法,這一篇介紹如何調節pid,並用MATLAB模擬
調節pid的目標就是使得從模型中得到的增益能夠使物理系統正常工作
pid的一般形式如下圖
經過移動化簡可以得到
現在我們的問題就簡化成了在哪裡放置這兩個極點,和設置多大的增益?
在給微分器加上濾波器,相當於系統多了一個極點,濾波器的相關內容之後介紹
模擬使用的模型還是我們上一篇使用的電機模型
隨便取一個之前的模型進行pid控制模擬
先初始化電機模型的變數,再加上pid的必要模型,開始模擬
隨便調了幾下pid參數,得到下圖的效果
根軌跡圖(root locus)是控制理論及穩定性理論中,繪圖分析的方式,可以看到在特定參數(一般會是反饋系統的環路增益)變化時,系統極點的變化。
說實話,這東西以前我聽都沒聽過,在經過線上線下查找資料纔算知道了這麼個東西。
簡單的說,這個圖可以用來判斷非時變系統系統的穩定性,以及計算系統增益並實現它的控制器
手畫這個圖是有許多規則的,不過我沒有去了解,畢竟我時間也不多,只知道可以用MATLAB畫
有兩種方法用於調節:Pole placement 和 Loop shaping
Pole placement
一個簡單的開環系統,他的根軌跡圖是這樣的
在加入PID後,會引入新的零點和極點,就會變成這樣
這種調節方法就是通過調節增益,從而得到希望的系統性能
Loop shaping
這個方法和上面的類似,換了種形式的圖
據論文介紹,這兩種方法的性能都是差不多的,loop-shaping多了兩個優點,(i)不需要在FRF上擬合LTI模型來設計控制器,並且(ii)隨著控制器係數的平滑變化,增益調度的實現更加緩慢。
對於我來說,暫時只管怎麼用,好不好用,就沒有深入學習了
下圖是我用之前的模型隨意調的pid的階躍響應,可以看出是不符合我們的期望的,下面我們就使用MATLAB進行pid調節
我們首先需要做的是打開analysis->control design->control system designer,然後按照下面三張圖所示,添加需要調節的pid模塊,添加需要的信號
在control system designer的菜單欄中點擊tuning methods,在下拉框中選擇root locus editor,就可以得到下圖
在new plot下選擇new step,在彈出窗口按下圖配置
最終效果如下
手動pid調節
手動調節說實話我是不太懂,我這裡只是隨便亂調一下表示可以手動修整而已
這裡使用的是pole placement的方法,loop shaping也是類似的
自整定pid
這裡主要還是介紹自整定pid,畢竟方便,不需要懂太多相關知識
在tuning methods下選擇pid tuning
可以在彈出窗口中選擇pid控制器的類型、性能等等,最後附上調節效果圖
最後弄完後要在菜單欄選擇update blocks
調節好的模型已上傳github的項目庫
個人博客
公眾號:greedyhao