如何進行matlab控制系統(tǒng)的設(shè)計?
Matlab具有簡潔性,高效性、科學運算功能、繪圖功能、集成的也有龐大的工具箱和模塊集,也具有強大的動態(tài)系統(tǒng)仿真功能。在語法層面,Matlab的變量命名規(guī)則應當注意是以字母開頭,為引導,后面可以跟字母、數(shù)字、下劃線等,在編程的時候應當注意,大小寫是有區(qū)分的,注意分開使用。一些常用變量應當注意,保留了一些特定的常數(shù)變量,如:
eps,表示機器的浮點運算誤差限,在Matlab仿真實驗開發(fā)中,eps的精度達到2.2204*10^-6,當運算的誤差精度下于這個數(shù)值的時候,可以認為誤差為零。
i,j;若在程序的設(shè)計過程中,算法上下使用了這個數(shù)值,比如在循環(huán)結(jié)構(gòu)中,應用到了循環(huán)結(jié)構(gòu),此時變量將有可能被改寫,倘若需要恢復該變量的值,則需要對-1求平方根。
inf,inf變量表示無窮大,-inf表示為無窮小;值得一提的是,在MATLAB程序中,即使遇到除0,也不會終止程序運行,只是給出一個警告,并將結(jié)果賦成Inf,以提醒算法開發(fā)者。
Pi,表示圓周率。
接下來簡單介紹數(shù)據(jù)結(jié)構(gòu)的內(nèi)容:
Matlab中,存在數(shù)值型數(shù)據(jù)、符號型數(shù)據(jù)、以及字符串、多維數(shù)組、單元數(shù)組,類與對象等;
控制系統(tǒng)應用是MATLAB和Simulink的重點應用領(lǐng)域,它包括了被控對象建模、控制器設(shè)計、自動代碼生成部署和系統(tǒng)驗證全流程。具體如下:
使用基本模型、系統(tǒng)辨識或自動參數(shù)估計對線性和非線性被控對象動態(tài)特性進行建模。
配平、線性化和計算非線性 Simulink 模型的頻率響應。
使用根軌跡、波特圖、LQR、LQG 和其他設(shè)計方法,基于被控對象模型設(shè)計控制器。
使用時域和頻域中的超調(diào)、上升時間、相位裕度、增益裕度及其他性能和穩(wěn)定性特性,以交互方式分析控制系統(tǒng)性能。
自動調(diào)節(jié) PID、增益調(diào)度和任意 SISO 和 MIMO 控制系統(tǒng)。
設(shè)計和實現(xiàn)穩(wěn)健的模型預測控制器或使用無模型控制方法,如模型引用自適應控制、極值搜索控制、強化學習和模糊邏輯。
將控制算法部署到嵌入式系統(tǒng),用于實時控制、調(diào)節(jié)或參數(shù)估計。
設(shè)計和測試狀態(tài)監(jiān)控與預測性維護算法。
仿真對于控制方向的研究和開發(fā)有多重要就不用強調(diào)了。不管是寫paper還是開會做presentation,有個看起來很cool的仿真都是有幫助的。如果能快速的搭建仿真,還能幫著在研究的前期快速驗證idea是否可行。
然而進行仿真總不是簡單的事情。一方面可能要進行繁瑣的公式推導和計算(而且特別容易出錯,錯了還不容易找出問題)。另一方面又需要寫大量的程序(特別是要有視覺效果的時候)。今天我來介紹一種工作流程來繞開這兩個麻煩,它特別適用于機械系統(tǒng)的控制和仿真。這里需要用到的是Simscape multibody (以前叫Simmechanics) 和 Simulink Control Design工具箱。
為了簡單起見,起到拋磚引玉的作用,我們就制作一個最簡單的機械系統(tǒng) -- 倒立擺 -- 的仿真。特別注明我用的是MATLAB R2015b. 其它版本的MATLAB可能略有差異。
Matlab的控制系統(tǒng)工具箱包含有控制系統(tǒng)建模、分析及控制器設(shè)計相關(guān)的函數(shù)和圖形可視化界面等工具,根據(jù)控制系統(tǒng)的微分方程,Matlab提供了四種形式用以描述控制系統(tǒng)。
1、傳遞函數(shù)形式傳遞函數(shù)形式(Transfer Function):Matlab提供內(nèi)置函數(shù)tf(num,den),可直接用于系統(tǒng)傳遞函數(shù)形式的模型輸入,其中num為傳遞函數(shù)分子多項式系數(shù)向量,den為傳遞函數(shù)分母多項式系數(shù)向量。
2、狀態(tài)空間方程形式狀態(tài)空間方程形式(State-Space Function):Matlab提供內(nèi)置函數(shù)ss(a,b,c,d),可直接用于系統(tǒng)狀態(tài)空間方程形式的模型輸入,其中a為狀態(tài)傳輸矩陣,b為輸入矩陣,c輸出矩陣,d為矩陣。
3、零極點增益形式零極點增益形式(Zero Pole):Matlab提供內(nèi)置函數(shù)zpk(z,p,k),可直接用于系統(tǒng)零極點增益形式的模型輸入,其中z為系統(tǒng)零點組成的向量,p為系統(tǒng)極點組成的向量,k為系統(tǒng)增益。
4、頻率響應形式頻率響應形式(Frequency Response):Matlab提供內(nèi)置函數(shù)frd(r,f),可直接用于系統(tǒng)頻率響應形式的模型輸入,其中r為系統(tǒng)對應輸入頻率f時的響應向量。
在MATLAB的控制系統(tǒng)工具箱(Control System Toolbox)中,提供了很多函數(shù)、模塊和應用程序包,實現(xiàn)控制系統(tǒng)的設(shè)計和校正。這里主要介紹 控制系統(tǒng)設(shè)計器APP的使用方法。
控制系統(tǒng)設(shè)計器
控制系統(tǒng)設(shè)計器是MATLAB中提供的一個專門用于控制系統(tǒng)設(shè)計和校正的應用程序APP。利用該APP可以在MATLAB或者Simulink中為給定的反饋控制系統(tǒng)模型設(shè)計SISO控制器,可以采用交互式的Bode圖編輯器、Nichols圖編輯器、根軌跡編輯器等調(diào)節(jié)各環(huán)節(jié)的零極點和增益,采用時域或者頻域方法分析控制系統(tǒng)的階躍響應和零極點圖,實現(xiàn)多個控制器的分析比較等。
在控制系統(tǒng)設(shè)計器中,采用如 圖1-1所示的控制系統(tǒng)結(jié)構(gòu),其中所有環(huán)節(jié)的傳遞函數(shù)都默認取為常數(shù)1。控制系統(tǒng)設(shè)計器的作用就是根據(jù)對整個系統(tǒng)的性能指標要求,在被控對象(G)給定后,正確設(shè)計傳感器(H)、補償器或者控制器(C)以及預濾波器(F)環(huán)節(jié)的數(shù)學模型。