基于模型的設(shè)計——MCU篇_第1頁
基于模型的設(shè)計——MCU篇_第2頁
基于模型的設(shè)計——MCU篇_第3頁
基于模型的設(shè)計——MCU篇_第4頁
基于模型的設(shè)計——MCU篇_第5頁
已閱讀5頁,還剩58頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、第二章Simulink建模與調(diào)試Simulink是動態(tài)和嵌入式等系統(tǒng)的建模與仿真工具,也是基于模型設(shè)計的基礎(chǔ)。對于機(jī)電、航空航天、信號處理、自動控制、通訊、音視頻處理等眾多領(lǐng)域,Simulink提供了交互式的可視化開發(fā)環(huán)境和可定制的模塊庫,對系統(tǒng)進(jìn)行建模、仿真與調(diào)試等。并可實(shí)現(xiàn)與Stateflow有限狀態(tài)機(jī)的無縫連接,擴(kuò)展對復(fù)雜系統(tǒng)的建模能力。通過Simulin模塊庫自帶的1000多個預(yù)定義模塊,基本上可快速地創(chuàng)建基于MCU器件應(yīng)用的系統(tǒng)模型。運(yùn)用層次化建模、數(shù)據(jù)管理,子系統(tǒng)定制等手段,即使是復(fù)雜的嵌入式MCU應(yīng)用系統(tǒng),也能輕松完成簡明精確的模型描述。大量使用 Embedded MATLAB來

2、創(chuàng)建用戶自己的算法模塊,可大大加快建模速度。讀者在后面的內(nèi)容中,會經(jīng)??吹接肊mbedded MATLAB創(chuàng)建的算法模塊,加快MCU器件開發(fā)的實(shí)例。模型是基于模型設(shè)計的起點(diǎn),同時也最核心的東西。本章將以基于PID控制的直流電機(jī)的物理建模與調(diào)試為例來介紹Simulink,更詳細(xì)的內(nèi)容請讀者參考MathWorks公司相關(guān)內(nèi)容的用戶手冊。Simulink的主要特點(diǎn)如下:l 眾多可擴(kuò)展的模塊庫 l 利用圖形編輯器來組合和管理模塊圖 l 以系統(tǒng)功能來劃分模型,實(shí)現(xiàn)對復(fù)雜系統(tǒng)的管理 l 利用模型瀏覽器(Model Explorer)尋找、創(chuàng)建、配置模型組件的參數(shù)與屬性l 利用API實(shí)現(xiàn)與其他仿真程序的連接

3、或集成用戶代碼l 用圖形化的調(diào)試器和剖析器來檢查仿真結(jié)果,評估模型的性能指標(biāo) l 在MATLAB命令窗口中,可對仿真結(jié)果進(jìn)行分析與可視化,自定義模型環(huán)境、信號參數(shù)和測試數(shù)據(jù) l 利用模型分析和診斷工具來確保模型的一致性,定位模型中的錯誤本章主要內(nèi)容有:l Simulink基本操作l 搭建直流電機(jī)模型l Simulink模型調(diào)試2.1 Simulink基本操作2.1.1 模塊庫和編輯窗口打開模型庫瀏覽器在matlab的命令窗口中輸入“simulink”指令或單擊matlab工具欄上的“simulink”圖標(biāo)就可以打開模型庫瀏覽器。如圖2.1.1所示:圖2.1.1 模型庫瀏覽器打開模型編輯窗口要建

4、立一個新的模型,首先要打開一個模型編輯窗口??梢酝ㄟ^點(diǎn)擊模塊庫瀏覽器上的NEW Model按鈕,或FileNEWModel來打開窗口,如圖2.1.2所示。圖2.1.2 打開模型編輯窗口2.1.2 Simulink模塊庫Simulink模塊庫是建立模型的基礎(chǔ),其中囊括了大量的基本功能模塊,只有當(dāng)用戶熟練的掌握了模塊庫,才能快速、高效的建立模型。從圖2.1.1所示的模型庫瀏覽器可知,在Simulink 模塊庫中包含有以下子模塊庫,如表2.1.1所示:表2.1.1 模塊庫列表常用模塊(commonly used block)連續(xù)模塊(continuous)非連續(xù)模塊(discontinuous)離散

5、模塊(discrete)邏輯和位操作模塊(logic and bit operations)查找表模塊(lookup tables)數(shù)學(xué)運(yùn)算模塊(math operations)模型驗(yàn)證模塊(model verification)模型實(shí)用模塊(model-wide utilities)端口與子系統(tǒng)模塊(ports & subsystems)信號屬性模塊(signal attributes)信號路由模塊(signal routing)接收器模塊(sinks)源模塊(sources)用戶自定義模塊(user-defined functions)附加操作模塊(additional math & di

6、screte)下面將詳細(xì)介紹幾種使用頻率較高的模塊庫。1. 常用模塊庫(commonly used block)常用模塊庫中的模塊是simulink所有模塊庫中使用頻率最高模塊的合集,主要是為了方便用戶以最快的速度建立模型。常用模塊包含如圖2.1.3所示的成員,模塊功能如表2.1.2所示:圖2.1.3 常用模塊庫表2.1.2常用模塊庫列表名稱功能名稱功能Bus Creator生成總線Bus Selector分離總線Constant常量信號Data Type Conversion轉(zhuǎn)換數(shù)據(jù)類型Demux抽取向量信號中的元素并輸出Discrete-Time Integrator時間離散積分Gain放

7、大器Ground接地Inport產(chǎn)生輸入口Integrator,Integrator Limited信號積分Logical Operator邏輯運(yùn)算Mux將輸入信號合成為向量Outport產(chǎn)生輸出口Product標(biāo)量和非標(biāo)量乘除或矩陣乘法和轉(zhuǎn)置Realational Operator對輸入做關(guān)系運(yùn)算Saturation飽和Scope and Floating Scope顯示仿真信號Subsystem,Atomic Subsystem,Nonvitual Subsystem,CodeReuse Subsystem以子系統(tǒng)表示其他系統(tǒng)Sum,Add,Subtract,Sum ofElements加

8、或減Switch通過第二個輸入值來輸出第一或第二個輸入。Terminator終止未連接的輸出口Unit Delay延遲一個采樣周期2. 連續(xù)模塊庫(continuous)連續(xù)模塊庫中的模塊如2.1.4圖所示,它包含了搭建連續(xù)系統(tǒng)所涉及到的絕大部分模塊,這些模塊的功能如2.1.3表所示:圖2.1.4 連續(xù)模塊庫表2.1.3連續(xù)模塊庫列表名稱功能名稱功能Derivative微分Integrator積分Integrator Limited有限積分Integrator 2nd-order二階積分Integrator 2nd-order Limited二階有限積分PID Controller比例微積分控

9、制器PID Controller(2DOF)雙自由度比例微積分控制器State-Space狀態(tài)空間Transfer Fcn傳遞函數(shù)Transport Delay時間延遲Variable Time Delay可變時間延遲Variable Transport Delay可變時間延遲Zero-Pole零極點(diǎn)結(jié)合本書是講述基于模型設(shè)計的思想開發(fā)MCU器件,本章將以Simulink在控制電機(jī)中的應(yīng)用為例,介紹Simulink的建模與調(diào)試技術(shù)。這里值得一提的是PID控制模塊。PID控制器就是根據(jù)系統(tǒng)的誤差,利用比例、積分、微分計算出控制量進(jìn)行控制的。它是在較新版本的Simulink中才新增并逐步完善的一個

10、模塊,R2010b版已經(jīng)具備自動調(diào)節(jié)功能。具體原理和使用將在后面分析。3. 離散模塊庫(discontinuous)離散模塊在涉及數(shù)字信號系統(tǒng)中被廣泛使用,基于這種考慮,mathworks公司單獨(dú)列出了離散系統(tǒng)模塊庫。離散模塊庫中的模塊和其功能如2.1.5圖所列:圖2.1.5 離散模塊庫其中常用模塊的功能如表2.1.4所示:表2.1.4離散模塊庫列表名稱功能名稱功能Difference差分Discrete Derivative離散微分方程Discrete FIR Filter 離散 FIR濾波器Discrete Filter離散濾波器Discrete PID Controller離散PID控制

11、器Discrete PID Controller (2DOF)離散雙自由度PID控制器Discrete State-Space離散狀態(tài)空間Discrete Transfer Fcn離散傳遞函數(shù)Discrete Zero-Pole離散零極點(diǎn)Discrete Time Integrator離散時間積分1st-order Hold一階保持器Integer Delay采樣保持Memory記憶Tapped Delay采樣周期延遲Transfer Fcn 1st-order一階傳遞函數(shù)Transfer Fcn Lead or Lag傳遞函數(shù)(超前或延遲)Transfer Fcn Real Zero傳遞函數(shù)

12、(有零點(diǎn)無極點(diǎn))Unit Delay 單位延遲Zero-Order Hold零階保持器4. 數(shù)學(xué)運(yùn)算模塊庫(math operations)數(shù)學(xué)運(yùn)算模塊將很多數(shù)學(xué)運(yùn)算封裝成模塊的形式,使數(shù)學(xué)運(yùn)算操作大大簡化,減少了很多程序設(shè)計上的繁瑣過程。此模塊庫所包含的模塊如圖2.1.6所示:圖2.1.6 數(shù)學(xué)運(yùn)算模塊庫其中常用模塊的功能如表2.1.5所示:表2.1.5數(shù)學(xué)運(yùn)算模塊庫列表名稱功能名稱功能Sum對輸入求代數(shù)和Rounding Function取整Gain常量增益MinMax求最值Slider Gain可用滑動條改變的增益Trigonometric Function三角函數(shù)Product 對輸入

13、求積或商Algebraic Constraint強(qiáng)制駛?cè)胄盘枮?Dot Product點(diǎn)積Complex to Magnitude-Angle復(fù)數(shù)的幅值相角Sign取輸入的正負(fù)符號Magnitude-Angle to Complex根據(jù)幅值相角得到復(fù)數(shù)Abs絕對值(模)Complex to Real-Imag復(fù)數(shù)的實(shí)部虛部Math Function數(shù)學(xué)運(yùn)算函數(shù)Real-Imag to complex由實(shí)部虛部求復(fù)數(shù)5. 信號源模塊庫(signal attributes)信號源模塊庫如2.1.7圖所示:圖2.1.7 信號源模塊庫其中常用模塊的功能如表2.1.6所示:表2.1.6信號源模塊庫列表名

14、稱功能名稱功能Band-Limited White Noise限帶白噪聲Chirp Signal頻率變化的正弦信號Clock時鐘信號Constant常數(shù)Counter Limited 受限計數(shù)器Digital Clock數(shù)字時鐘Enumerated Constant枚舉常數(shù)From File從文件讀數(shù)據(jù)From WorkSpace從工作空間讀數(shù)據(jù)Ground接地Inport輸入接口Pulse Generator脈沖發(fā)生器Ramp線性增或減的信號Random Number隨機(jī)數(shù)Repeating Sequence重復(fù)系列Repeating Sequence Interpolated重復(fù)序列插值R

15、epeating Sequence Stair階梯狀重復(fù)序列Signal Builder 產(chǎn)生分段線性的可交替信號Signal Generator信號發(fā)生器Sine Wave正弦信號Step階躍信號Uniform Random Number平均分布的隨機(jī)信號6. 信號接收模塊庫(sinks)信號接收模塊庫如圖2.1.8所示:圖2.1.8信號接收模塊庫其中常用模塊的功能如表2.1.7所示:表2.1.7信號接收模塊庫列表名稱功能名稱功能Display顯示輸入值Output輸出端口Scope and Floating Scope顯示仿真信號Stop Simulation非零時停止仿真Terminat

16、or 終止輸出信號To File輸出到文件To WorkSpace輸出到工作空間XY Gragh作圖7. 用戶自定義模塊庫(user-defined functions)用戶自定義模塊庫如圖2.1.9所示:圖2.1.9 用戶自定義模塊庫其中常用模塊的功能如表2.1.8所示:表2.1.8用戶自定義模塊庫列表名稱功能名稱功能Embedded MATLAB Function嵌入式MATLAB函數(shù)Fcn各種函數(shù)組合Level-2 M-File S-Function二級M文件S函數(shù)MATLAB Fcn使用MATLAB 函數(shù)作為輸入S-FunctionS函數(shù)S-Function BuilderS函數(shù)構(gòu)造器

17、2.1.3 模塊的基本操作1. 模塊的查找在模塊庫頁面的左側(cè)以樹形結(jié)構(gòu)顯示了一系列的子庫,如連續(xù)模塊庫,離散模塊庫,數(shù)學(xué)運(yùn)算模塊庫,當(dāng)用戶對這些模塊比較熟悉以后,可以非常方便、快捷的找到自己需要的模塊。如果是剛剛接觸Simulink的用戶,這里還提供了查找功能,方便不熟悉它的人使用。如圖2.1.10所示:圖2.1.10 模塊查找當(dāng)用戶找到自己所需要的模塊后,就要把它復(fù)制到模型編輯窗口中以便進(jìn)行下一步的操作。這里可以直接把模塊拖拽到編輯窗口中完成復(fù)制,也可以右鍵單擊,在彈出菜單中選擇“Add to new model ”,如圖2.1.11所示。圖2.1.11 添加模塊2. 模塊的選定模塊被加入到

18、編輯窗口以后,要通過選定模塊才能對其進(jìn)行操作。選定單個模塊可以直接用鼠標(biāo)左鍵單擊目標(biāo)模塊;也可以按下鼠標(biāo)任意鍵拖動,此時會出現(xiàn)一個虛線框,當(dāng)虛線框包圍了目標(biāo)模塊時放開鼠標(biāo),即可選中模塊。若是要選中多個模塊就需要用上述的虛線框法來操作,如圖2.1.12所示。選擇編輯窗口中所有對象的方法是單擊菜單EditSelect All。圖2.1.12 選定一組對象3. 模塊的連接和調(diào)整l 模塊的調(diào)整為了使模型更加美觀和符合邏輯,有時需要對模塊的大小、方向等做適當(dāng)?shù)男薷?。模塊大小的調(diào)整。選中模塊,用鼠標(biāo)選中模塊周圍4個黑色方塊中的任意一個開始拖動,這時會出現(xiàn)一個虛線框表示的新模塊大小示意,調(diào)整至需要的大小后釋

19、放鼠標(biāo)即可,如圖2.1.13所示。圖2.1.13 調(diào)整模塊大小模塊的旋轉(zhuǎn)。選中模塊想要旋轉(zhuǎn)的模塊,在菜單中選擇Format,在次級目錄中選擇Flip Block可以使模塊180旋轉(zhuǎn);選擇Rotate Block使模塊旋轉(zhuǎn)90。如圖2.1.14所示:圖2.1.14 模塊翻轉(zhuǎn)l 模塊的連接模型中的信號是從模塊經(jīng)連線傳輸?shù)较乱粋€模塊的,因此模塊間的連線被稱為信號線,當(dāng)模塊設(shè)置好以后,只有將它們按一定的順序連接起來才能完成一個正確的模型。自動連線:Simulink系統(tǒng)具備自動連線的功能,步驟如下:選擇一個具有信號輸出的模塊,按下“ctrl”鍵,然后用鼠標(biāo)左鍵單擊要連接到的模塊。如圖2.1.15所示:圖

20、2.1.15 自動連線手動連線。用戶也可以選擇自己手動連線。把鼠標(biāo)指針移動到第一個模塊的輸出端口,這時指針的形狀會變?yōu)橐粋€十字,如圖2.1.16所示。圖2.1.16 手動連線按下并拖動鼠標(biāo)至目標(biāo)模塊的輸入端口處,這時鼠標(biāo)指針會變成一個雙十字,釋放鼠標(biāo)后兩個模塊就連接起來了。如圖2.1.17所示:圖2.1.17手動連線提示:用手動方法連接模塊時是可以從輸出到輸入口劃連接線的。分支連線:是指從一條已經(jīng)存在的連線上另外再拉出一條線用來連接一個模塊的輸入口。這時,原連線和分支連線上傳輸?shù)氖峭粋€信號。把鼠標(biāo)指針移動到原有連線上,按下“ctrl”鍵,拖動鼠標(biāo)左鍵到目標(biāo)模塊的端口,釋放鼠標(biāo),完成連線。如圖

21、2.1.18所示:圖2.1.18 分支連線移動連線:把鼠標(biāo)移動到想要移動的連線處,按下左鍵并拖動到目標(biāo)位置,釋放按鍵,完成移動。如圖2.1.19所示:圖2.1.19 移動連線連線的折曲:選擇要折曲的線段,將鼠標(biāo)移動到要折曲的點(diǎn)上,按下“shift”鍵,并按下鼠標(biāo)左鍵,這時指針會變成一個圓圈狀,拖動折曲點(diǎn)至目標(biāo)位置后釋放鼠標(biāo),完成折曲。如圖2.1.20所示:圖2.1.20 曲折連線連線中插入模塊:如果模塊只有一個輸入口和輸出口,那么可以將該模塊直接插入到一天連線中。如圖2.1.21所示:圖2.1.21連線中插入模塊連線的注釋:有時為了增加模型的可讀性,常常會給信號線加上注釋。在要添加注釋的連線附

22、近雙擊鼠標(biāo)左鍵會出現(xiàn)一個文本輸入框,用戶可以根據(jù)需要添加適當(dāng)?shù)淖⑨?,注釋的位置是可以通過鼠標(biāo)拖拽更改位置的。如圖2.1.22所示:圖2.1.22連線的注釋2.2 搭建直流電機(jī)模型直流電機(jī)是控制系統(tǒng)中的常用組件,它給系統(tǒng)提供旋轉(zhuǎn)動力或者和其他組件配合進(jìn)行傳動。下面將通過一個直流電機(jī)模型(DC Motor)來介紹如何在Simulink中建立LTI(LTI Linear time-invariant)系統(tǒng)并實(shí)現(xiàn)對其轉(zhuǎn)速的控制。2.2.1 數(shù)學(xué)模型分析電機(jī)可分為電氣部件和機(jī)械部件兩部分,電機(jī)模型如圖2.2.1所示。圖2.2.1 電機(jī)模型電機(jī)的電氣部分和機(jī)械部分是通過轉(zhuǎn)子聯(lián)系起來的,轉(zhuǎn)子即為電能與機(jī)械能

23、轉(zhuǎn)化的樞紐。這兩部分的方程都要受到轉(zhuǎn)子感應(yīng)電動勢的影響。對于左邊的電氣部分,由電磁感應(yīng)定律可知,轉(zhuǎn)子會產(chǎn)生一個反向的感應(yīng)電動勢來阻止轉(zhuǎn)子的運(yùn)轉(zhuǎn),外界電源Vin要克服反向感應(yīng)電動勢做功,才能使轉(zhuǎn)子轉(zhuǎn)動。我們可以先把其他元件抽象為電阻和電感,把精力集中到主要矛盾上來:電機(jī)如何平穩(wěn)運(yùn)轉(zhuǎn)。當(dāng)電機(jī)正常運(yùn)轉(zhuǎn)時,先分析電氣部分回路:外部電源Vin、電阻和電感上的電壓降VR和VL、轉(zhuǎn)子上的反向感應(yīng)電動勢Vemf在同一個回路中。由電路分析的基礎(chǔ)知識KVL定律(基爾霍夫電壓定律)可以得到:Vin=VR+VL+Vemf對于右邊的機(jī)械部分,稍復(fù)雜一些。當(dāng)電動機(jī)帶著負(fù)載勻速旋轉(zhuǎn)時,其輸出轉(zhuǎn)矩必定與負(fù)載轉(zhuǎn)矩相等。在非理想

24、電機(jī)模型中(即不忽略機(jī)械、電磁損耗),軸承的摩擦、電刷和換向器的摩擦、轉(zhuǎn)子鐵心中的渦流、磁滯損耗都要引起阻轉(zhuǎn)矩。此阻轉(zhuǎn)矩用Tf表示。這樣,電動機(jī)的輸出轉(zhuǎn)矩便等于電磁轉(zhuǎn)矩T減去電機(jī)本身的阻轉(zhuǎn)矩Tf。所以,當(dāng)電機(jī)克服負(fù)載阻轉(zhuǎn)矩TL勻速旋轉(zhuǎn)時,則有:TL=TO=T-Tf實(shí)際上,電機(jī)經(jīng)常運(yùn)行在轉(zhuǎn)速變化的情況下,例如啟動、停轉(zhuǎn)或反轉(zhuǎn)等,因此必須討論轉(zhuǎn)速改變時的轉(zhuǎn)矩平衡關(guān)系。當(dāng)電機(jī)的轉(zhuǎn)速改變時,由于電機(jī)及負(fù)載具有轉(zhuǎn)動慣量,將產(chǎn)生慣性轉(zhuǎn)矩Tj,則有:Tj=J*ddt。其中J是負(fù)載和電動機(jī)的轉(zhuǎn)動慣量,是電動機(jī)的角速度,ddt是其角加速度。為了使模型能覆蓋這種更一般的情況,可根據(jù)牛頓力學(xué)定律對式做一些微調(diào):TO

25、-TL=Tj=J*ddt得到表示電機(jī)基本原理的方程后,需要設(shè)置一些參數(shù)以備建模使用。如:電阻R,電感L,轉(zhuǎn)動慣量J,轉(zhuǎn)矩Tm,旋轉(zhuǎn)角度,轉(zhuǎn)矩常量Km,感應(yīng)電動勢常量Kemf,粘滯摩擦系數(shù)Kf。因?yàn)閠=,Vemf=Kemf*(t),式可化為:Ldidt+Ri=Vin-Vemf又因?yàn)?ddt,式可化為:J*+Kf=Tm將,兩式子用電壓Vin和轉(zhuǎn)子角速度表示出來可寫為:didt=Vint-Rit-Kemf(t)Lddt=Kmit-Kf(t)J為了表示方便,我們對上式做Laplace變換,轉(zhuǎn)換到S域。根據(jù)拉氏變換的規(guī)則,在0初始條件下,一階導(dǎo)數(shù)S;二階導(dǎo)數(shù)S2,則可得到:Is=Vins-RIs-Kem

26、f(s)Ls=KmIs-Kf(s)J合并化簡后得到系統(tǒng)傳輸函數(shù):(s)Vin(s)=KmJLS2+KfL+JRS+(KfR+KemfKm)至此,分析了直流電機(jī)的傳遞函數(shù),下面將利用Simulink建立直流電機(jī)模型。2.2.2 模型搭建與參數(shù)設(shè)置模型搭建直流電機(jī)的模型需要用到source庫中的“step”模塊,sinks庫中的“scope”模塊,math operations庫中的“add”、“gain”,和continuous庫中的“integrator”。1.添加source庫中的“step”模塊到模型中。如圖2.2.2所示:圖2.2.2 step模塊默認(rèn)情況下,信號從第一秒處產(chǎn)生躍變。2.

27、添加sinks庫中的“scope”模塊到模型中,如圖2.2.3所示。圖2.2.3 scope模塊示波器模塊是可以同時顯示多個輸入信號的。例如,雙擊打開示波器模塊,單擊“”按鈕,在number of axes中輸入?yún)?shù)3即可使示波器變?yōu)?個輸入口,如圖2.2.4。圖2.2.4 設(shè)置scope模塊3.添加math operations庫中的“add”模塊到模型中,如圖2.2.5所示。圖2.2.5 add模塊為了正確表達(dá)電機(jī)模型的系統(tǒng)方程,需要兩個“Add”模塊,其符號參數(shù)List of signs需要分別設(shè)置為“+-”和“+-”,這樣“Add”模塊會分別含有2個和3個輸入接口。如圖2.2.6所示:

28、圖2.2.6 設(shè)置add模塊4.添加math operations庫中的“gain”模塊到模型中,如圖2.2.7所示。圖2.2.7 gain模塊“gain”模塊的參數(shù)需要修改。該模型需要6個“gain”模塊,參數(shù)分別設(shè)置為:1/L、Km、1/J、R、Kf、Kemf??梢酝ㄟ^雙擊放大器模塊打開其參數(shù)設(shè)置頁面,然后輸入?yún)?shù)。如圖2.2.8所示:圖2.2.8 設(shè)置gain模塊5.添加continuous庫中的“integrator”模塊到模型中,如圖2.2.9所示。圖2.2.9 integrator模塊模型中需要兩個“Integrator”模塊,參數(shù)可采用默認(rèn)值。6.按照式表達(dá)的邏輯,在第一個積分器

29、之前算子為S2,其系數(shù)為JL;第一個和第二個積分器之間算子為S,其系數(shù)為KfL+JR;第二個積分器之后算子為1,其系數(shù)為(KfR+KemfKm)。由此可以連接其中的各個模塊,得到如圖2.2.10所示的模型。圖2.2.10 Simulink電機(jī)模型左側(cè)的模塊對應(yīng)于公式,其輸出為轉(zhuǎn)矩Torque;右側(cè)的模塊對應(yīng)于公式,其輸出為轉(zhuǎn)速(t)。此模型實(shí)現(xiàn)了系統(tǒng)傳輸函數(shù)所描述的由輸入電壓控制直流電機(jī)轉(zhuǎn)速的功能。當(dāng)輸入信號為“Step”階躍信號時,輸出為其階躍響應(yīng);當(dāng)輸入為外部實(shí)際控制信號時,電機(jī)轉(zhuǎn)速(t)即由輸入信號所控制。為了后面更好的分析電機(jī)模型,在仿真時同時輸出其轉(zhuǎn)動控制信號和輸出轉(zhuǎn)速、角度和轉(zhuǎn)矩。

30、實(shí)現(xiàn)原理如下: 控制信號與輸出轉(zhuǎn)速比較在添加Signal Routing庫中的“Mxx”模塊到模型中,如圖2.2.11所示。圖2.2.11 mux模塊修改模型如圖2.2.12所示:圖2.2.12 Simulink電機(jī)模型 扭矩信號輸出如圖2.2.10所示,左邊框圖模塊組的輸出既是轉(zhuǎn)矩信號。 角度信號輸出由電機(jī)數(shù)學(xué)模型公式(s)Vin(s)=KmJLS2+KfL+JRs+(KfR+KemfKm)可知該模型的輸出為(t),即旋轉(zhuǎn)角速度,且=0tw()d,因此,模型的輸出經(jīng)過一個積分器即轉(zhuǎn)化為角度,修改模型如圖2.2.13:圖2.2.13 Simulink電機(jī)模型參數(shù)設(shè)置最后,在仿真之前一定要設(shè)置模

31、型仿真參數(shù),如仿真時間,步長,表達(dá)式中定義的R、L、J等參數(shù)值等。l 在MATLAB中以M文件或命令行定義變量用戶可以直接在MATLAB命令窗口中敲入以下命令:R=2; %電阻值Resistor L=0.5; %電感值Inductor Km=0.1; %轉(zhuǎn)矩常量Torque Constant Kemf=0.1; %反電動勢常量Back EMF Voltage Constant Kf=0.2; %阻滯系數(shù)常量Viscous Friction Constant J=0.02; %慣性載荷Inertial Load完成后,在MATLAB工作空間中可以看到這些變量,如圖2.2.14所示。圖2.2.14

32、 仿真參數(shù)設(shè)置這樣就完成了模型中以表達(dá)式形式定義的參數(shù)的賦值。為了方便以后再次運(yùn)行模型,可以把這些數(shù)據(jù)保存下來,在運(yùn)行模型之前裝載這些變量即可。全選這些變量,點(diǎn)擊“”按鈕,輸入保存名DC_motor(用戶可自定義),擴(kuò)展名為.mat,即把數(shù)據(jù)保存到了當(dāng)前目錄下,以后可以通過雙擊直接裝載變量。如圖2.2.15所示:圖2.2.15 保存參數(shù)當(dāng)然,用戶也可以將上述命令窗口中的指令保存為M文件的形式,并在運(yùn)行模型前先執(zhí)行M文件來裝載變量。如圖2.2.16所示:圖2.2.16l 在Simulink中用Annotation方式定義變量通過在Simulink中定義Annotation,可以直接在模型編輯窗口

33、中完成對參數(shù)的賦值,而不必再從MATLAB中讀取.mat文件和M文件,省去了不少麻煩。在模型的任意空白處雙擊鼠標(biāo)左鍵會出現(xiàn)一個可編輯的文本框,寫入相關(guān)文字,如“Parameters Configuration”。如圖2.2.17所示:圖2.2.17 添加Annotation右鍵單擊文本框會出現(xiàn)彈出菜單,其中較為有用的有如下幾項(xiàng): Front調(diào)節(jié)字體字號 Text Aligment 文本對齊方式 Hide/Show Drop Shadow 隱藏/顯示陰影 Annotation PropertiesAnnotation屬性設(shè)置 Foreground Color前景色 Background Colo

34、r背景色選擇Foreground/Background Color調(diào)節(jié)文本框的顏色,選擇Show Drop Shadow顯示文本框陰影,美化Annotation。選擇Annotation Properties打開其設(shè)置頁面,如圖2.2.18所示。圖2.2.18 設(shè)置Annotation在ClikFcn中輸入上文中使用的指令,并點(diǎn)擊OK確認(rèn)。這就完成了此Annotation的基本設(shè)置。在以后重用本模型時,只要點(diǎn)擊該文本框就可以執(zhí)行對模型參數(shù)的賦值。如圖2.2.19所示:圖2.2.19 添加Annotation命令l Model Explorer Model Explorer能夠快速瀏覽、批量修改

35、模型中各種元素,而不用再在圖形或表格中一個個尋找這些元素。如Simulink模塊,StateFlow狀態(tài)圖,MATLAB工作空間變量等。在電機(jī)模型編輯窗口右側(cè)點(diǎn)擊“”按鈕打開Model Explorer界面,如圖2.2.20所示。圖2.2.20 模型瀏覽器在界面中間的Content Pane里列出了模型中的所有模塊和變量。選中任意模塊可以進(jìn)行修改參數(shù),數(shù)據(jù)類型等工作,該模型的所有模塊設(shè)置都可以在此頁面中快速完成。更詳細(xì)的用法可參考幫助文檔。l 設(shè)置configuration Parameters中的參數(shù)在simulationconfiguration Parameters中可進(jìn)行更多的設(shè)置,這

36、里只介紹幾種常用的設(shè)置。1. 仿真時間設(shè)置。設(shè)置起止時間是在“Start Time”和“Stop Time”的文本框中輸入相應(yīng)的數(shù)值,其默認(rèn)值分別為0和10,單位是秒,如圖2.2.21所示。圖2.2.21 仿真時間設(shè)置2.求解器步長設(shè)置求解器分為變步長和定步長求解器兩種,一般情況下可采用默認(rèn)的“auto”設(shè)置。其默認(rèn)值為:最大步長=(停止時間-起始時間)/50如果是高級用戶,則可做進(jìn)一步設(shè)置。步長是求解器運(yùn)算時的時間精度,步長越短,精度越高,運(yùn)算量也更大。通過下面的例子可以直觀的看到步長對仿真結(jié)果的影響。建立如圖2.2.22所示模型圖2.2.22 求解器步長實(shí)驗(yàn)?zāi)P驮贑onfiguration

37、 Parameters中選擇使用定步長求解器(Fixed-step),如圖2.2.23所示,圖2.2.23 求解器設(shè)置則當(dāng)步長(Fixed-step size)分別選擇1秒和0.1秒時的仿真結(jié)果如下(圖2.2.24):圖2.2.24 仿真結(jié)果可見,當(dāng)用戶對仿真結(jié)果的精度要求比較高的時候,應(yīng)該盡量選擇小步長求解。l 運(yùn)行模型點(diǎn)擊工具欄上的“”按鈕運(yùn)行仿真,雙擊“Scope”模塊即可查看仿真結(jié)果(按下“”可以自動調(diào)節(jié)坐標(biāo)軸到合適的范圍),如圖2.2.25:圖2.2.25 電機(jī)模型仿真結(jié)果在示波器Torque中可見轉(zhuǎn)矩跟隨階躍信號的趨勢變化。在示波器Angle中可見,轉(zhuǎn)子轉(zhuǎn)動過的角度隨時間變化基本呈

38、線性增長,符合其與w(t)的關(guān)系=0tw()d。在示波器Speed中,紫色信號表示階躍信號;黃色信號為系統(tǒng)響應(yīng),在接近2秒的時候達(dá)到穩(wěn)定狀態(tài),幅度為0.25左右。為了更進(jìn)一步分析此系統(tǒng),可以在MATLAB中劃出其波特圖: DC_motor=tf(Km,J*L (Kf*L+J*R) (Kf*R+Kemf*Km); %生成電機(jī)傳輸函數(shù) bode(DC_motor) %生成波特圖在MATLAB中生成如圖2.2.26所示波特圖:圖2.2.26 波特圖2.2.3 子系統(tǒng)與庫建立子系統(tǒng)可以吧一系列的模塊表示為一個子系統(tǒng)模塊,大大簡化模型的復(fù)雜度,其具有以下突出優(yōu)點(diǎn):減少編輯窗口中模塊的數(shù)量;可以把功能相關(guān)

39、聯(lián)的模塊組合在一起;使模型具有明確的功能層次。更重要的是在子系統(tǒng)內(nèi)部,各個模塊被認(rèn)為是一個整體,這樣一來,其運(yùn)算速度和信號傳遞速度都會大幅度提高,是對模型的一種優(yōu)化。1. 建立子系統(tǒng)如果模型中已經(jīng)完全包含了你想要創(chuàng)建的子系統(tǒng)的所有模塊,可以通過把它們組合起來的方式建立子系統(tǒng)。打開電機(jī)模型,選定想要包含到子系統(tǒng)中的所有模塊,如圖2.2.27所示。圖2.2.27選定模塊單擊EditCreat Subsystem。選定的模塊組即變成了一個子系統(tǒng)模塊,如圖2.2.28所示。圖2.2.28 創(chuàng)建子系統(tǒng)如果通過雙擊打開子系統(tǒng),可以看到子系統(tǒng)中的模塊組合邏輯,如圖2.2.29所示。圖2.2.29 子系統(tǒng)內(nèi)部

40、結(jié)構(gòu)子系統(tǒng)外部接口也會發(fā)生相應(yīng)的改變,可按圖2.2.30所示方式連接模型:圖2.2.30 修改連接用戶也可以先創(chuàng)建一個子系統(tǒng)模塊,然后在子系統(tǒng)模塊中完成其具體的組合邏輯。從模塊瀏覽器中選擇Ports&Subsystems librarySubsystem。通過雙擊打開子系統(tǒng)模塊。在子系統(tǒng)中完成其組合邏輯,如圖2.2.31所示:圖2.2.31 subsystem模塊2. 封裝子系統(tǒng)將子系統(tǒng)模塊重命名為DC_motor_subsystem方便以后使用。右鍵單擊子系統(tǒng)模塊,在彈出菜單中選擇Mask Subsystem,打開封裝編輯器。 Icon & Ports頁面在該頁面的Icon options區(qū)

41、域,可以設(shè)置模塊外框是否可見,模塊是否透明,旋轉(zhuǎn)時圖標(biāo)是否固定或跟隨模塊旋轉(zhuǎn),以及圖標(biāo)是否自適應(yīng)模塊的大小,這里均采用默認(rèn)設(shè)置。Icon Drawing Commands區(qū)域中可以用命令改變模塊的端口名稱,添加圖像,修改顏色等,如圖2.2.32所示。圖2.2.32 Mask頁面設(shè)置按照頁面下方的Example Drawing Commands給出的語法格式,我們?yōu)镈C_motor_subsystem添加如下命令:color(red);port_label(input, 1, Control Signal); color(red);port_label(output, 1, Torque);co

42、lor(red);port_label(output, 2, Angle);color(red);port_label(output, 3, Step);color(red);port_label(output, 4, Speed);子系統(tǒng)的端口名稱的顏色和名稱都會隨之改變,如圖2.2.33所示。圖2.2.33 封裝后的模型添加命令image(imread(dianji.jpg);會將當(dāng)前工作目錄下的“dianji.jpg”圖像文件覆蓋到模塊上,非常直觀的說明該子模塊的作用如圖2.2.34所示。圖2.2.34封裝后的模型點(diǎn)擊Example Drawing Commands的下拉菜單可以看到所有

43、的繪圖指令和語法格式,用戶可根據(jù)需要添加相應(yīng)的命令。 Parameters頁面單擊左側(cè)工具欄按鈕,Dialog parameters區(qū)域新增一個參數(shù)設(shè)置框,各欄的功能如下: Prompt參數(shù)的文字描述 Variable參數(shù)對應(yīng)的變量名 Type參數(shù)的輸入模式,edit適用于需要用戶具體指定的參數(shù) Evaluate選中表示在參數(shù)對話框中輸入表達(dá)式的值賦予指定的變量,否則將輸入的表達(dá)式看作字符串賦予指定的變量 Tunable選中則允許用戶在仿真過程中修改該參數(shù)值在本例中,按圖2.2.35所示方案設(shè)定參數(shù):圖2.2.35 Mask參數(shù)設(shè)置頁面點(diǎn)擊OK確認(rèn)后,若雙擊子系統(tǒng)模塊,將不會再顯示子系統(tǒng)底層結(jié)

44、構(gòu),而會像Simulink模塊庫中自帶的模塊一樣彈出參數(shù)設(shè)置頁面,如圖2.2.36所示:圖2.2.36 封裝后的參數(shù)設(shè)置頁面封裝后的系統(tǒng)參數(shù)其實(shí)是與底層模塊的參數(shù)相關(guān)聯(lián)的,給封裝系統(tǒng)的參數(shù)賦值就相當(dāng)于給定義于封裝工作空間中的參數(shù)賦值,而這些參數(shù)與底層的一個或多個模塊相關(guān)。以電阻值R和扭矩常量Km為例說明封裝參數(shù)與底層模塊參數(shù)間的關(guān)系,如圖2.2.37所示。圖2.2.37 參數(shù)傳遞關(guān)系l Initialization頁面Initialization commands窗口用于輸入用于初始化該模塊的MATLAB命令。如果在該頁面中輸入如下命令,同樣可以完成參數(shù)的賦值工作,如圖2.2.38所示。圖2.

45、2.38 Initialization頁面但是這種方式應(yīng)慎用,這會導(dǎo)致上文中所講的Annotation、M文件等賦值方法統(tǒng)統(tǒng)失效,這是由于最終在模塊執(zhí)行之前它都會執(zhí)行此初始化命令,將參數(shù)的值重新定義為初始化頁面中設(shè)置的量。l Documentation頁面在此頁面中可以注釋封裝的類型、描述、幫助等信息。 Mask type文本框可寫入對模塊的簡單描述 Mask description文本框用于詳細(xì)描述模塊的功能: Mask help文本框用于指定模塊的幫助文檔用戶可根據(jù)需要編輯相關(guān)信息,如圖2.2.39所示。圖2.2.39 Documentation頁面2.2.4添加模塊到庫瀏覽器及知識產(chǎn)權(quán)保

46、護(hù)在設(shè)計大型模型時,通常會遇到多次重復(fù)使用一個子系統(tǒng)模塊或團(tuán)隊(duì)的其他成員需要使用你所搭建的子系統(tǒng)的情況,用戶可以建立自定義的模塊庫并添加到模塊瀏覽器中,將這些子系統(tǒng)歸類整理,分門別類地管理,便于后期維護(hù)與利用。1. 建立自定義模塊庫并添加到庫瀏覽器l 建立自定義模塊庫在Simulink庫瀏覽器窗口,選擇菜單項(xiàng)FileNewLibrary,打開庫編輯窗口。打開電機(jī)模型,將封裝后的子系統(tǒng)拖入庫編輯窗口,并保存為DC_motor_subsystem_lib。如圖2.2.40所示:圖2.2.40 建立自定義模塊庫l 將自定義模塊庫添加到庫瀏覽器中將自定義模塊庫添加到庫瀏覽器中,可以在以后的工作中更方便

47、快捷的調(diào)用。MATLAB中已經(jīng)為用戶提供了添加自定義模塊庫的相關(guān)函數(shù),用戶可以編寫如下M函數(shù)代碼:function blkStruct = slblocks blkStruct.Name = DC_motor_subsystem_lib; blkStruct.OpenFcn = DC_motor_subsystem_lib; Browser(1).Library = simulink; Browser(1).Name = Simulink; Browser(1).IsFlat = 0;Browser(2).Library = DC_motor_subsystem_lib;Browser(2).

48、Name = DC_motor_subsystem_lib;Browser(2).IsFlat = 0;將其保存為slblock.m并保存到DC_motor_subsystem_lib.mdl所在的目錄下,如圖2.2.41所示。圖2.2.41 M文件存儲路徑打開模塊庫瀏覽器,自定義的模塊庫已經(jīng)成功添加。該模塊可以直接使用,如圖2.2.42所示。圖2.2.42 添加到模塊庫瀏覽器2. 知識產(chǎn)權(quán)保護(hù)有時用戶需要把自定義的模塊庫提供給別人使用,但是卻不想讓別人看到或修改子系統(tǒng)的底層模塊結(jié)構(gòu)。通過以下設(shè)置可以在不影響使用的條件下禁止他人訪問底層模塊,有效保護(hù)了用戶的個人資料和知識產(chǎn)權(quán)。l 在將封裝后的

49、子系統(tǒng)拖入庫編輯窗口之前右鍵點(diǎn)擊子系統(tǒng),選擇subsystem parameters,如圖2.2.43所示。圖2.2.43 Block Parameters頁面l 在Read/Write Permissions下拉菜單中選擇NoReadOrWrite,點(diǎn)擊OK確認(rèn)l 將子系統(tǒng)模塊拖入庫編輯窗口在庫編輯窗口中右鍵單擊模塊,可以發(fā)現(xiàn)這時Look Under Mask選項(xiàng)變成了灰色,禁止訪問底層模塊。如圖2.2.44所示:圖2.2.44 保護(hù)后的模塊2.2.5 數(shù)據(jù)格式與輸入輸出Sources或Sinks子庫中的現(xiàn)成信號源或輸出模塊可能不能滿足實(shí)際應(yīng)用,因此用戶可以需要選用From Workspac

50、e及To Workspace模塊,自行定義模型的輸入及輸出。用戶可以通過上述模塊導(dǎo)入MATLAB工作空間的數(shù)據(jù),也可以把輸出信號保存到工作空間。這項(xiàng)功讓用戶能夠使用由標(biāo)準(zhǔn)或自定義的MATLAB函數(shù)產(chǎn)生的數(shù)據(jù)作為輸入信號和圖形,使仿真更具多樣性。1. 把數(shù)據(jù)導(dǎo)出至工作空間1.新建一個演示模型,向模型中添加“sink”庫中的“To Workspace”模塊,該模塊位于如圖2.2.45所示的位置。圖。2.2.45 simout模塊打開To Workspace模塊的參數(shù)設(shè)置頁面,其中Data欄顯示的”simout”即變量名,用戶可根據(jù)需要自行更改。為便于“From Workspace”訪問,可以將“T

51、o Workspace”模塊的save format設(shè)置為“Array”,如圖2.2.46所示。圖2.2.46 設(shè)置simout模塊2. 向模型中添加“source”庫中的“signal builder”模塊,如圖2.2.47所示。圖2.2.47 signal builder模塊打開該模塊的設(shè)置頁面,用戶可以方便的通過其GUI界面畫出任意需要的信號波形。這里畫出一個從第3秒起持續(xù)4秒的矩形脈沖,如圖2.2.48所示。關(guān)于該模塊的更詳細(xì)用法不是本書重點(diǎn),如有興趣可參看幫助文檔。圖2.2.48 信號波形3.向模型中添加“gain”模塊和“scope”模塊,并按圖2.2.49連接模塊:圖2.2.49

52、 向工作空間傳遞數(shù)據(jù)點(diǎn)擊工具欄上的“”按鈕運(yùn)行仿真,MATLAB的工作空間中會顯示變量如圖2.2.50所示。圖2.2.50 工作空間的數(shù)據(jù)示波器中顯示波形如圖2.2.51所示:圖2.2.51 仿真波形Simulink仿真中的數(shù)據(jù)已經(jīng)導(dǎo)入了工作空間,用戶可以根據(jù)需要對這些數(shù)據(jù)做進(jìn)一步處理。2. 從工作空間導(dǎo)入數(shù)據(jù)1.向模型中添加“source”庫中的“From Workspace”模塊代替“signal builder”,即可用于從工作空間導(dǎo)入數(shù)據(jù),該模塊位于如圖2.2.52所示的位置。圖2.2.52 simin模塊打開From Workspace模塊的參數(shù)設(shè)置頁面,其中Data欄顯示的” si

53、min”即變量名,用戶可根據(jù)需要自行更改。如圖2.2.53所示:圖2.2.53 simin設(shè)置2. 按圖2.2.54連接模塊:圖2.2.54 從工作空間讀數(shù)據(jù)“From Workspace”模塊調(diào)用工作空間的數(shù)據(jù)時,是遵循嚴(yán)格的格式的,一般是矩陣形式,而且輸入矩陣的列數(shù)必須比輸入信號多一列,Simulink會自動把首列數(shù)據(jù)當(dāng)做時間向量。根據(jù)此規(guī)則,需要在工作空間內(nèi)生成一個待輸入信號: simin=tout simout;生成2列的矩陣%用戶可以打開workspace中的變量simin查看其數(shù)據(jù)存儲結(jié)構(gòu),如圖2.2.55所示。圖2.2.55 數(shù)據(jù)存儲結(jié)構(gòu)3. 實(shí)現(xiàn)外部信號對電機(jī)的控制回到電機(jī)模型

54、,我們用一個外部信號替代階躍信號控制電機(jī),用戶可以通過這個外部信號實(shí)現(xiàn)對電機(jī)轉(zhuǎn)速的控制。向模型中添加“From Workspace”模塊替代“Step”模塊,并重命名為Vin_Control Signal。如圖2.2.56所示:圖2.2.56 添加simin模塊這里的From Workspace模塊仍然使用上文中生成的變量simin作為控制信號,Data欄設(shè)置變量名為simin”即變量名,如圖2.2.57所示。圖2.2.57 設(shè)置simin模塊運(yùn)行仿真后得到的結(jié)果如圖2.2.58所示:圖2.2.58 仿真結(jié)果由仿真結(jié)果可知,系統(tǒng)響應(yīng)曲線變化的總體趨勢是跟隨控制信號相吻合的,說明外部信號對電機(jī)轉(zhuǎn)速的控制是有一定效果的。但系統(tǒng)響應(yīng)速度還不理想,且其響應(yīng)幅度遠(yuǎn)遠(yuǎn)沒有達(dá)到控制信號的要求,需要通過進(jìn)一步矯正才能符合需要。2.2.6 PID控制在上文的仿真結(jié)果中可以看到:輸出電機(jī)轉(zhuǎn)速(t)只是大體上跟隨控制信號的變化趨勢,而并沒有嚴(yán)格的達(dá)到控制信號所要求的轉(zhuǎn)速大小。這是由于模型還缺少一個反饋控制模塊,PID模塊能很好的完成這個工作。PID(比例積分

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論