上一篇文章是一份pid的指南,目的是為pid建立一個(gè)整體的概念绪爸,這一篇簡單介紹了pid建立模型的三種方法
根據(jù)元件性質(zhì)直接得到模型
適用于簡單的系統(tǒng)到逊,需要關(guān)注整個(gè)系統(tǒng)的具體組成
通過歐姆定律等電路定律用狱,為元件建模贴膘,最終得到系統(tǒng)模型
這種方式很麻煩,不在這里討論
系統(tǒng)識別的方法
這種方法不需要關(guān)注系統(tǒng)的具體實(shí)現(xiàn)抬虽,將系統(tǒng)當(dāng)做一個(gè)雙端口的加工器官觅,給定輸入可以得到想要的輸出
就好像圖中所示的一個(gè)加熱器,面包經(jīng)過加熱器后上升了10度阐污,就可以給加熱器建立相關(guān)的方程了休涤,并不需要知道加熱器是電阻加熱還是紅外光熱
還需要注意的是,給定輸入是否在系統(tǒng)輸入范圍笛辟,避免對系統(tǒng)造成損傷
MATLAB仿真
這里使用到了MATLAB的system identification的工具庫
本次仿真是對一個(gè)電機(jī)建立模型
電機(jī)模型在這里提供
首先需要在matlab命令行初始化模型相關(guān)的以下變量
J = 0.01;
b = 0.1;
K = 0.01;
R = 1;
L = 0.5;
在simulink中運(yùn)行一遍模型功氨,回到matlab,這時(shí)候會(huì)發(fā)現(xiàn)工作區(qū)多了step_input和/img/matlab/motor_speed這兩個(gè)變量
在matlab的工具箱中找到system identification這個(gè)工具手幢,打開
import data下選擇time domain data捷凄,在彈出的窗口填入下圖中的信息,點(diǎn)擊import
接下來在estimate的下拉框中選擇transfer function model围来,點(diǎn)擊estimate跺涤,運(yùn)行完后匈睁,如圖所示把結(jié)果tf1拖入to workspace
此時(shí)在MATLAB的工作區(qū)中應(yīng)該能看見tf1這個(gè)變量,在命令行輸入tf1桶错,就能看見傳遞函數(shù)
>> tf1
tf1 =
From input "u1" to output "y1":
-1.042e-08 s + 2
------------------
s^2 + 12 s + 20.02
Name: tf1
Continuous-time identified transfer function.
Parameterization:
Number of poles: 2 Number of zeros: 1
Number of free coefficients: 4
Use "tfdata", "getpvec", "getcov" for parameters and their uncertainties.
Status:
Estimated using TFEST on time domain data "mydata".
Fit to estimation data: 100% (stability enforced)
FPE: 4.857e-33, MSE: 4.851e-33
回到simulink航唆,修改DC Motor Transfer Fcn為對應(yīng)的傳遞函數(shù),開始仿真院刁。
仿真結(jié)束后打開scope查看糯钙,結(jié)果如下圖
從結(jié)果可以看出這個(gè)傳遞函數(shù)是正確的
對現(xiàn)有非線性模型線性化
這個(gè)方法和前面系統(tǒng)辨識的方法很類似,不過上一個(gè)方法使用的是模型的輸入輸出結(jié)果建立模型退腥,這個(gè)是通過對系統(tǒng)線性化得到模型
MATLAB仿真
最終效果的模型在這里提供
如下圖所示超营,先添加linear analysis points
在菜單欄打開Analysis->Control Design->Linear Analysis..
如下圖所示,設(shè)置t=2阅虫,點(diǎn)擊Step Plot 1,雙擊點(diǎn)開linsys1不跟,顯示線性化的選項(xiàng)選擇Transfer Function
如下圖所示颓帝,驗(yàn)證這個(gè)傳輸函數(shù)的正確性
可以看出這個(gè)傳遞函數(shù)是正確的