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