




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第二章Simulink建模與調試Simulink是動態(tài)和嵌入式等系統(tǒng)的建模與仿真工具,也是基于模型設計的基礎。對于機電、航空航天、信號處理、自動控制、通訊、音視頻處理等眾多領域,Simulink提供了交互式的可視化開發(fā)環(huán)境和可定制的模塊庫,對系統(tǒng)進行建模、仿真與調試等。并可實現(xiàn)與Stateflow有限狀態(tài)機的無縫連接,擴展對復雜系統(tǒng)的建模能力。通過Simulin模塊庫自帶的1000多個預定義模塊,基本上可快速地創(chuàng)建基于MCU器件應用的系統(tǒng)模型。運用層次化建模、數據管理,子系統(tǒng)定制等手段,即使是復雜的嵌入式MCU應用系統(tǒng),也能輕松完成簡明精確的模型描述。大量使用 Embedded MATLAB來
2、創(chuàng)建用戶自己的算法模塊,可大大加快建模速度。讀者在后面的內容中,會經常看到用Embedded MATLAB創(chuàng)建的算法模塊,加快MCU器件開發(fā)的實例。模型是基于模型設計的起點,同時也最核心的東西。本章將以基于PID控制的直流電機的物理建模與調試為例來介紹Simulink,更詳細的內容請讀者參考MathWorks公司相關內容的用戶手冊。Simulink的主要特點如下:l 眾多可擴展的模塊庫 l 利用圖形編輯器來組合和管理模塊圖 l 以系統(tǒng)功能來劃分模型,實現(xiàn)對復雜系統(tǒng)的管理 l 利用模型瀏覽器(Model Explorer)尋找、創(chuàng)建、配置模型組件的參數與屬性l 利用API實現(xiàn)與其他仿真程序的連接
3、或集成用戶代碼l 用圖形化的調試器和剖析器來檢查仿真結果,評估模型的性能指標 l 在MATLAB命令窗口中,可對仿真結果進行分析與可視化,自定義模型環(huán)境、信號參數和測試數據 l 利用模型分析和診斷工具來確保模型的一致性,定位模型中的錯誤本章主要內容有:l Simulink基本操作l 搭建直流電機模型l Simulink模型調試2.1 Simulink基本操作2.1.1 模塊庫和編輯窗口打開模型庫瀏覽器在matlab的命令窗口中輸入“simulink”指令或單擊matlab工具欄上的“simulink”圖標就可以打開模型庫瀏覽器。如圖2.1.1所示:圖2.1.1 模型庫瀏覽器打開模型編輯窗口要建
4、立一個新的模型,首先要打開一個模型編輯窗口??梢酝ㄟ^點擊模塊庫瀏覽器上的NEW Model按鈕,或FileNEWModel來打開窗口,如圖2.1.2所示。圖2.1.2 打開模型編輯窗口2.1.2 Simulink模塊庫Simulink模塊庫是建立模型的基礎,其中囊括了大量的基本功能模塊,只有當用戶熟練的掌握了模塊庫,才能快速、高效的建立模型。從圖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)數學運算模塊(math operations)模型驗證模塊(model verification)模型實用模塊(model-wide utilities)端口與子系統(tǒng)模塊(ports & subsystems)信號屬性模塊(signal attributes)信號路由模塊(signal routing)接收器模塊(sinks)源模塊(sources)用戶自定義模塊(user-defined functions)附加操作模塊(additional math & di
6、screte)下面將詳細介紹幾種使用頻率較高的模塊庫。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轉換數據類型Demux抽取向量信號中的元素并輸出Discrete-Time Integrator時間離散積分Gain放
7、大器Ground接地Inport產生輸入口Integrator,Integrator Limited信號積分Logical Operator邏輯運算Mux將輸入信號合成為向量Outport產生輸出口Product標量和非標量乘除或矩陣乘法和轉置Realational Operator對輸入做關系運算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傳遞函數Transport Delay時間延遲Variable Time Delay可變時間延遲Variable Transport Delay可變時間延遲Zero-Pole零極點結合本書是講述基于模型設計的思想開發(fā)MCU器件,本章將以Simulink在控制電機中的應用為例,介紹Simulink的建模與調試技術。這里值得一提的是PID控制模塊。PID控制器就是根據系統(tǒng)的誤差,利用比例、積分、微分計算出控制量進行控制的。它是在較新版本的Simulink中才新增并逐步完善的一個
10、模塊,R2010b版已經具備自動調節(jié)功能。具體原理和使用將在后面分析。3. 離散模塊庫(discontinuous)離散模塊在涉及數字信號系統(tǒng)中被廣泛使用,基于這種考慮,mathworks公司單獨列出了離散系統(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離散傳遞函數Discrete Zero-Pole離散零極點Discrete Time Integrator離散時間積分1st-order Hold一階保持器Integer Delay采樣保持Memory記憶Tapped Delay采樣周期延遲Transfer Fcn 1st-order一階傳遞函數Transfer Fcn Lead or Lag傳遞函數(超前或延遲)Transfer Fcn Real Zero傳遞函數
12、(有零點無極點)Unit Delay 單位延遲Zero-Order Hold零階保持器4. 數學運算模塊庫(math operations)數學運算模塊將很多數學運算封裝成模塊的形式,使數學運算操作大大簡化,減少了很多程序設計上的繁瑣過程。此模塊庫所包含的模塊如圖2.1.6所示:圖2.1.6 數學運算模塊庫其中常用模塊的功能如表2.1.5所示:表2.1.5數學運算模塊庫列表名稱功能名稱功能Sum對輸入求代數和Rounding Function取整Gain常量增益MinMax求最值Slider Gain可用滑動條改變的增益Trigonometric Function三角函數Product 對輸入
13、求積或商Algebraic Constraint強制駛入信號為0Dot Product點積Complex to Magnitude-Angle復數的幅值相角Sign取輸入的正負符號Magnitude-Angle to Complex根據幅值相角得到復數Abs絕對值(模)Complex to Real-Imag復數的實部虛部Math Function數學運算函數Real-Imag to complex由實部虛部求復數5. 信號源模塊庫(signal attributes)信號源模塊庫如2.1.7圖所示:圖2.1.7 信號源模塊庫其中常用模塊的功能如表2.1.6所示:表2.1.6信號源模塊庫列表名
14、稱功能名稱功能Band-Limited White Noise限帶白噪聲Chirp Signal頻率變化的正弦信號Clock時鐘信號Constant常數Counter Limited 受限計數器Digital Clock數字時鐘Enumerated Constant枚舉常數From File從文件讀數據From WorkSpace從工作空間讀數據Ground接地Inport輸入接口Pulse Generator脈沖發(fā)生器Ramp線性增或減的信號Random Number隨機數Repeating Sequence重復系列Repeating Sequence Interpolated重復序列插值R
15、epeating Sequence Stair階梯狀重復序列Signal Builder 產生分段線性的可交替信號Signal Generator信號發(fā)生器Sine Wave正弦信號Step階躍信號Uniform Random Number平均分布的隨機信號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函數Fcn各種函數組合Level-2 M-File S-Function二級M文件S函數MATLAB Fcn使用MATLAB 函數作為輸入S-FunctionS函數S-Function BuilderS函數構造器
17、2.1.3 模塊的基本操作1. 模塊的查找在模塊庫頁面的左側以樹形結構顯示了一系列的子庫,如連續(xù)模塊庫,離散模塊庫,數學運算模塊庫,當用戶對這些模塊比較熟悉以后,可以非常方便、快捷的找到自己需要的模塊。如果是剛剛接觸Simulink的用戶,這里還提供了查找功能,方便不熟悉它的人使用。如圖2.1.10所示:圖2.1.10 模塊查找當用戶找到自己所需要的模塊后,就要把它復制到模型編輯窗口中以便進行下一步的操作。這里可以直接把模塊拖拽到編輯窗口中完成復制,也可以右鍵單擊,在彈出菜單中選擇“Add to new model ”,如圖2.1.11所示。圖2.1.11 添加模塊2. 模塊的選定模塊被加入到
18、編輯窗口以后,要通過選定模塊才能對其進行操作。選定單個模塊可以直接用鼠標左鍵單擊目標模塊;也可以按下鼠標任意鍵拖動,此時會出現(xiàn)一個虛線框,當虛線框包圍了目標模塊時放開鼠標,即可選中模塊。若是要選中多個模塊就需要用上述的虛線框法來操作,如圖2.1.12所示。選擇編輯窗口中所有對象的方法是單擊菜單EditSelect All。圖2.1.12 選定一組對象3. 模塊的連接和調整l 模塊的調整為了使模型更加美觀和符合邏輯,有時需要對模塊的大小、方向等做適當的修改。模塊大小的調整。選中模塊,用鼠標選中模塊周圍4個黑色方塊中的任意一個開始拖動,這時會出現(xiàn)一個虛線框表示的新模塊大小示意,調整至需要的大小后釋
19、放鼠標即可,如圖2.1.13所示。圖2.1.13 調整模塊大小模塊的旋轉。選中模塊想要旋轉的模塊,在菜單中選擇Format,在次級目錄中選擇Flip Block可以使模塊180旋轉;選擇Rotate Block使模塊旋轉90。如圖2.1.14所示:圖2.1.14 模塊翻轉l 模塊的連接模型中的信號是從模塊經連線傳輸到下一個模塊的,因此模塊間的連線被稱為信號線,當模塊設置好以后,只有將它們按一定的順序連接起來才能完成一個正確的模型。自動連線:Simulink系統(tǒng)具備自動連線的功能,步驟如下:選擇一個具有信號輸出的模塊,按下“ctrl”鍵,然后用鼠標左鍵單擊要連接到的模塊。如圖2.1.15所示:圖
20、2.1.15 自動連線手動連線。用戶也可以選擇自己手動連線。把鼠標指針移動到第一個模塊的輸出端口,這時指針的形狀會變?yōu)橐粋€十字,如圖2.1.16所示。圖2.1.16 手動連線按下并拖動鼠標至目標模塊的輸入端口處,這時鼠標指針會變成一個雙十字,釋放鼠標后兩個模塊就連接起來了。如圖2.1.17所示:圖2.1.17手動連線提示:用手動方法連接模塊時是可以從輸出到輸入口劃連接線的。分支連線:是指從一條已經存在的連線上另外再拉出一條線用來連接一個模塊的輸入口。這時,原連線和分支連線上傳輸的是同一個信號。把鼠標指針移動到原有連線上,按下“ctrl”鍵,拖動鼠標左鍵到目標模塊的端口,釋放鼠標,完成連線。如圖
21、2.1.18所示:圖2.1.18 分支連線移動連線:把鼠標移動到想要移動的連線處,按下左鍵并拖動到目標位置,釋放按鍵,完成移動。如圖2.1.19所示:圖2.1.19 移動連線連線的折曲:選擇要折曲的線段,將鼠標移動到要折曲的點上,按下“shift”鍵,并按下鼠標左鍵,這時指針會變成一個圓圈狀,拖動折曲點至目標位置后釋放鼠標,完成折曲。如圖2.1.20所示:圖2.1.20 曲折連線連線中插入模塊:如果模塊只有一個輸入口和輸出口,那么可以將該模塊直接插入到一天連線中。如圖2.1.21所示:圖2.1.21連線中插入模塊連線的注釋:有時為了增加模型的可讀性,常常會給信號線加上注釋。在要添加注釋的連線附
22、近雙擊鼠標左鍵會出現(xiàn)一個文本輸入框,用戶可以根據需要添加適當的注釋,注釋的位置是可以通過鼠標拖拽更改位置的。如圖2.1.22所示:圖2.1.22連線的注釋2.2 搭建直流電機模型直流電機是控制系統(tǒng)中的常用組件,它給系統(tǒng)提供旋轉動力或者和其他組件配合進行傳動。下面將通過一個直流電機模型(DC Motor)來介紹如何在Simulink中建立LTI(LTI Linear time-invariant)系統(tǒng)并實現(xiàn)對其轉速的控制。2.2.1 數學模型分析電機可分為電氣部件和機械部件兩部分,電機模型如圖2.2.1所示。圖2.2.1 電機模型電機的電氣部分和機械部分是通過轉子聯(lián)系起來的,轉子即為電能與機械能
23、轉化的樞紐。這兩部分的方程都要受到轉子感應電動勢的影響。對于左邊的電氣部分,由電磁感應定律可知,轉子會產生一個反向的感應電動勢來阻止轉子的運轉,外界電源Vin要克服反向感應電動勢做功,才能使轉子轉動。我們可以先把其他元件抽象為電阻和電感,把精力集中到主要矛盾上來:電機如何平穩(wěn)運轉。當電機正常運轉時,先分析電氣部分回路:外部電源Vin、電阻和電感上的電壓降VR和VL、轉子上的反向感應電動勢Vemf在同一個回路中。由電路分析的基礎知識KVL定律(基爾霍夫電壓定律)可以得到:Vin=VR+VL+Vemf對于右邊的機械部分,稍復雜一些。當電動機帶著負載勻速旋轉時,其輸出轉矩必定與負載轉矩相等。在非理想
24、電機模型中(即不忽略機械、電磁損耗),軸承的摩擦、電刷和換向器的摩擦、轉子鐵心中的渦流、磁滯損耗都要引起阻轉矩。此阻轉矩用Tf表示。這樣,電動機的輸出轉矩便等于電磁轉矩T減去電機本身的阻轉矩Tf。所以,當電機克服負載阻轉矩TL勻速旋轉時,則有:TL=TO=T-Tf實際上,電機經常運行在轉速變化的情況下,例如啟動、停轉或反轉等,因此必須討論轉速改變時的轉矩平衡關系。當電機的轉速改變時,由于電機及負載具有轉動慣量,將產生慣性轉矩Tj,則有:Tj=J*ddt。其中J是負載和電動機的轉動慣量,是電動機的角速度,ddt是其角加速度。為了使模型能覆蓋這種更一般的情況,可根據牛頓力學定律對式做一些微調:TO
25、-TL=Tj=J*ddt得到表示電機基本原理的方程后,需要設置一些參數以備建模使用。如:電阻R,電感L,轉動慣量J,轉矩Tm,旋轉角度,轉矩常量Km,感應電動勢常量Kemf,粘滯摩擦系數Kf。因為t=,Vemf=Kemf*(t),式可化為:Ldidt+Ri=Vin-Vemf又因為=ddt,式可化為:J*+Kf=Tm將,兩式子用電壓Vin和轉子角速度表示出來可寫為:didt=Vint-Rit-Kemf(t)Lddt=Kmit-Kf(t)J為了表示方便,我們對上式做Laplace變換,轉換到S域。根據拉氏變換的規(guī)則,在0初始條件下,一階導數S;二階導數S2,則可得到:Is=Vins-RIs-Kem
26、f(s)Ls=KmIs-Kf(s)J合并化簡后得到系統(tǒng)傳輸函數:(s)Vin(s)=KmJLS2+KfL+JRS+(KfR+KemfKm)至此,分析了直流電機的傳遞函數,下面將利用Simulink建立直流電機模型。2.2.2 模型搭建與參數設置模型搭建直流電機的模型需要用到source庫中的“step”模塊,sinks庫中的“scope”模塊,math operations庫中的“add”、“gain”,和continuous庫中的“integrator”。1.添加source庫中的“step”模塊到模型中。如圖2.2.2所示:圖2.2.2 step模塊默認情況下,信號從第一秒處產生躍變。2.
27、添加sinks庫中的“scope”模塊到模型中,如圖2.2.3所示。圖2.2.3 scope模塊示波器模塊是可以同時顯示多個輸入信號的。例如,雙擊打開示波器模塊,單擊“”按鈕,在number of axes中輸入參數3即可使示波器變?yōu)?個輸入口,如圖2.2.4。圖2.2.4 設置scope模塊3.添加math operations庫中的“add”模塊到模型中,如圖2.2.5所示。圖2.2.5 add模塊為了正確表達電機模型的系統(tǒng)方程,需要兩個“Add”模塊,其符號參數List of signs需要分別設置為“+-”和“+-”,這樣“Add”模塊會分別含有2個和3個輸入接口。如圖2.2.6所示:
28、圖2.2.6 設置add模塊4.添加math operations庫中的“gain”模塊到模型中,如圖2.2.7所示。圖2.2.7 gain模塊“gain”模塊的參數需要修改。該模型需要6個“gain”模塊,參數分別設置為:1/L、Km、1/J、R、Kf、Kemf??梢酝ㄟ^雙擊放大器模塊打開其參數設置頁面,然后輸入參數。如圖2.2.8所示:圖2.2.8 設置gain模塊5.添加continuous庫中的“integrator”模塊到模型中,如圖2.2.9所示。圖2.2.9 integrator模塊模型中需要兩個“Integrator”模塊,參數可采用默認值。6.按照式表達的邏輯,在第一個積分器
29、之前算子為S2,其系數為JL;第一個和第二個積分器之間算子為S,其系數為KfL+JR;第二個積分器之后算子為1,其系數為(KfR+KemfKm)。由此可以連接其中的各個模塊,得到如圖2.2.10所示的模型。圖2.2.10 Simulink電機模型左側的模塊對應于公式,其輸出為轉矩Torque;右側的模塊對應于公式,其輸出為轉速(t)。此模型實現(xiàn)了系統(tǒng)傳輸函數所描述的由輸入電壓控制直流電機轉速的功能。當輸入信號為“Step”階躍信號時,輸出為其階躍響應;當輸入為外部實際控制信號時,電機轉速(t)即由輸入信號所控制。為了后面更好的分析電機模型,在仿真時同時輸出其轉動控制信號和輸出轉速、角度和轉矩。
30、實現(xiàn)原理如下: 控制信號與輸出轉速比較在添加Signal Routing庫中的“Mxx”模塊到模型中,如圖2.2.11所示。圖2.2.11 mux模塊修改模型如圖2.2.12所示:圖2.2.12 Simulink電機模型 扭矩信號輸出如圖2.2.10所示,左邊框圖模塊組的輸出既是轉矩信號。 角度信號輸出由電機數學模型公式(s)Vin(s)=KmJLS2+KfL+JRs+(KfR+KemfKm)可知該模型的輸出為(t),即旋轉角速度,且=0tw()d,因此,模型的輸出經過一個積分器即轉化為角度,修改模型如圖2.2.13:圖2.2.13 Simulink電機模型參數設置最后,在仿真之前一定要設置模
31、型仿真參數,如仿真時間,步長,表達式中定義的R、L、J等參數值等。l 在MATLAB中以M文件或命令行定義變量用戶可以直接在MATLAB命令窗口中敲入以下命令:R=2; %電阻值Resistor L=0.5; %電感值Inductor Km=0.1; %轉矩常量Torque Constant Kemf=0.1; %反電動勢常量Back EMF Voltage Constant Kf=0.2; %阻滯系數常量Viscous Friction Constant J=0.02; %慣性載荷Inertial Load完成后,在MATLAB工作空間中可以看到這些變量,如圖2.2.14所示。圖2.2.14
32、 仿真參數設置這樣就完成了模型中以表達式形式定義的參數的賦值。為了方便以后再次運行模型,可以把這些數據保存下來,在運行模型之前裝載這些變量即可。全選這些變量,點擊“”按鈕,輸入保存名DC_motor(用戶可自定義),擴展名為.mat,即把數據保存到了當前目錄下,以后可以通過雙擊直接裝載變量。如圖2.2.15所示:圖2.2.15 保存參數當然,用戶也可以將上述命令窗口中的指令保存為M文件的形式,并在運行模型前先執(zhí)行M文件來裝載變量。如圖2.2.16所示:圖2.2.16l 在Simulink中用Annotation方式定義變量通過在Simulink中定義Annotation,可以直接在模型編輯窗口
33、中完成對參數的賦值,而不必再從MATLAB中讀取.mat文件和M文件,省去了不少麻煩。在模型的任意空白處雙擊鼠標左鍵會出現(xiàn)一個可編輯的文本框,寫入相關文字,如“Parameters Configuration”。如圖2.2.17所示:圖2.2.17 添加Annotation右鍵單擊文本框會出現(xiàn)彈出菜單,其中較為有用的有如下幾項: Front調節(jié)字體字號 Text Aligment 文本對齊方式 Hide/Show Drop Shadow 隱藏/顯示陰影 Annotation PropertiesAnnotation屬性設置 Foreground Color前景色 Background Colo
34、r背景色選擇Foreground/Background Color調節(jié)文本框的顏色,選擇Show Drop Shadow顯示文本框陰影,美化Annotation。選擇Annotation Properties打開其設置頁面,如圖2.2.18所示。圖2.2.18 設置Annotation在ClikFcn中輸入上文中使用的指令,并點擊OK確認。這就完成了此Annotation的基本設置。在以后重用本模型時,只要點擊該文本框就可以執(zhí)行對模型參數的賦值。如圖2.2.19所示:圖2.2.19 添加Annotation命令l Model Explorer Model Explorer能夠快速瀏覽、批量修改
35、模型中各種元素,而不用再在圖形或表格中一個個尋找這些元素。如Simulink模塊,StateFlow狀態(tài)圖,MATLAB工作空間變量等。在電機模型編輯窗口右側點擊“”按鈕打開Model Explorer界面,如圖2.2.20所示。圖2.2.20 模型瀏覽器在界面中間的Content Pane里列出了模型中的所有模塊和變量。選中任意模塊可以進行修改參數,數據類型等工作,該模型的所有模塊設置都可以在此頁面中快速完成。更詳細的用法可參考幫助文檔。l 設置configuration Parameters中的參數在simulationconfiguration Parameters中可進行更多的設置,這
36、里只介紹幾種常用的設置。1. 仿真時間設置。設置起止時間是在“Start Time”和“Stop Time”的文本框中輸入相應的數值,其默認值分別為0和10,單位是秒,如圖2.2.21所示。圖2.2.21 仿真時間設置2.求解器步長設置求解器分為變步長和定步長求解器兩種,一般情況下可采用默認的“auto”設置。其默認值為:最大步長=(停止時間-起始時間)/50如果是高級用戶,則可做進一步設置。步長是求解器運算時的時間精度,步長越短,精度越高,運算量也更大。通過下面的例子可以直觀的看到步長對仿真結果的影響。建立如圖2.2.22所示模型圖2.2.22 求解器步長實驗模型在Configuration
37、 Parameters中選擇使用定步長求解器(Fixed-step),如圖2.2.23所示,圖2.2.23 求解器設置則當步長(Fixed-step size)分別選擇1秒和0.1秒時的仿真結果如下(圖2.2.24):圖2.2.24 仿真結果可見,當用戶對仿真結果的精度要求比較高的時候,應該盡量選擇小步長求解。l 運行模型點擊工具欄上的“”按鈕運行仿真,雙擊“Scope”模塊即可查看仿真結果(按下“”可以自動調節(jié)坐標軸到合適的范圍),如圖2.2.25:圖2.2.25 電機模型仿真結果在示波器Torque中可見轉矩跟隨階躍信號的趨勢變化。在示波器Angle中可見,轉子轉動過的角度隨時間變化基本呈
38、線性增長,符合其與w(t)的關系=0tw()d。在示波器Speed中,紫色信號表示階躍信號;黃色信號為系統(tǒng)響應,在接近2秒的時候達到穩(wěn)定狀態(tài),幅度為0.25左右。為了更進一步分析此系統(tǒng),可以在MATLAB中劃出其波特圖: DC_motor=tf(Km,J*L (Kf*L+J*R) (Kf*R+Kemf*Km); %生成電機傳輸函數 bode(DC_motor) %生成波特圖在MATLAB中生成如圖2.2.26所示波特圖:圖2.2.26 波特圖2.2.3 子系統(tǒng)與庫建立子系統(tǒng)可以吧一系列的模塊表示為一個子系統(tǒng)模塊,大大簡化模型的復雜度,其具有以下突出優(yōu)點:減少編輯窗口中模塊的數量;可以把功能相關
39、聯(lián)的模塊組合在一起;使模型具有明確的功能層次。更重要的是在子系統(tǒng)內部,各個模塊被認為是一個整體,這樣一來,其運算速度和信號傳遞速度都會大幅度提高,是對模型的一種優(yōu)化。1. 建立子系統(tǒng)如果模型中已經完全包含了你想要創(chuàng)建的子系統(tǒng)的所有模塊,可以通過把它們組合起來的方式建立子系統(tǒng)。打開電機模型,選定想要包含到子系統(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)內部
40、結構子系統(tǒng)外部接口也會發(fā)生相應的改變,可按圖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、域,可以設置模塊外框是否可見,模塊是否透明,旋轉時圖標是否固定或跟隨模塊旋轉,以及圖標是否自適應模塊的大小,這里均采用默認設置。Icon Drawing Commands區(qū)域中可以用命令改變模塊的端口名稱,添加圖像,修改顏色等,如圖2.2.32所示。圖2.2.32 Mask頁面設置按照頁面下方的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);會將當前工作目錄下的“dianji.jpg”圖像文件覆蓋到模塊上,非常直觀的說明該子模塊的作用如圖2.2.34所示。圖2.2.34封裝后的模型點擊Example Drawing Commands的下拉菜單可以看到所有
43、的繪圖指令和語法格式,用戶可根據需要添加相應的命令。 Parameters頁面單擊左側工具欄按鈕,Dialog parameters區(qū)域新增一個參數設置框,各欄的功能如下: Prompt參數的文字描述 Variable參數對應的變量名 Type參數的輸入模式,edit適用于需要用戶具體指定的參數 Evaluate選中表示在參數對話框中輸入表達式的值賦予指定的變量,否則將輸入的表達式看作字符串賦予指定的變量 Tunable選中則允許用戶在仿真過程中修改該參數值在本例中,按圖2.2.35所示方案設定參數:圖2.2.35 Mask參數設置頁面點擊OK確認后,若雙擊子系統(tǒng)模塊,將不會再顯示子系統(tǒng)底層結
44、構,而會像Simulink模塊庫中自帶的模塊一樣彈出參數設置頁面,如圖2.2.36所示:圖2.2.36 封裝后的參數設置頁面封裝后的系統(tǒng)參數其實是與底層模塊的參數相關聯(lián)的,給封裝系統(tǒng)的參數賦值就相當于給定義于封裝工作空間中的參數賦值,而這些參數與底層的一個或多個模塊相關。以電阻值R和扭矩常量Km為例說明封裝參數與底層模塊參數間的關系,如圖2.2.37所示。圖2.2.37 參數傳遞關系l Initialization頁面Initialization commands窗口用于輸入用于初始化該模塊的MATLAB命令。如果在該頁面中輸入如下命令,同樣可以完成參數的賦值工作,如圖2.2.38所示。圖2.
45、2.38 Initialization頁面但是這種方式應慎用,這會導致上文中所講的Annotation、M文件等賦值方法統(tǒng)統(tǒng)失效,這是由于最終在模塊執(zhí)行之前它都會執(zhí)行此初始化命令,將參數的值重新定義為初始化頁面中設置的量。l Documentation頁面在此頁面中可以注釋封裝的類型、描述、幫助等信息。 Mask type文本框可寫入對模塊的簡單描述 Mask description文本框用于詳細描述模塊的功能: Mask help文本框用于指定模塊的幫助文檔用戶可根據需要編輯相關信息,如圖2.2.39所示。圖2.2.39 Documentation頁面2.2.4添加模塊到庫瀏覽器及知識產權保
46、護在設計大型模型時,通常會遇到多次重復使用一個子系統(tǒng)模塊或團隊的其他成員需要使用你所搭建的子系統(tǒng)的情況,用戶可以建立自定義的模塊庫并添加到模塊瀏覽器中,將這些子系統(tǒng)歸類整理,分門別類地管理,便于后期維護與利用。1. 建立自定義模塊庫并添加到庫瀏覽器l 建立自定義模塊庫在Simulink庫瀏覽器窗口,選擇菜單項FileNewLibrary,打開庫編輯窗口。打開電機模型,將封裝后的子系統(tǒng)拖入庫編輯窗口,并保存為DC_motor_subsystem_lib。如圖2.2.40所示:圖2.2.40 建立自定義模塊庫l 將自定義模塊庫添加到庫瀏覽器中將自定義模塊庫添加到庫瀏覽器中,可以在以后的工作中更方便
47、快捷的調用。MATLAB中已經為用戶提供了添加自定義模塊庫的相關函數,用戶可以編寫如下M函數代碼: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文件存儲路徑打開模塊庫瀏覽器,自定義的模塊庫已經成功添加。該模塊可以直接使用,如圖2.2.42所示。圖2.2.42 添加到模塊庫瀏覽器2. 知識產權保護有時用戶需要把自定義的模塊庫提供給別人使用,但是卻不想讓別人看到或修改子系統(tǒng)的底層模塊結構。通過以下設置可以在不影響使用的條件下禁止他人訪問底層模塊,有效保護了用戶的個人資料和知識產權。l 在將封裝后的
49、子系統(tǒng)拖入庫編輯窗口之前右鍵點擊子系統(tǒng),選擇subsystem parameters,如圖2.2.43所示。圖2.2.43 Block Parameters頁面l 在Read/Write Permissions下拉菜單中選擇NoReadOrWrite,點擊OK確認l 將子系統(tǒng)模塊拖入庫編輯窗口在庫編輯窗口中右鍵單擊模塊,可以發(fā)現(xiàn)這時Look Under Mask選項變成了灰色,禁止訪問底層模塊。如圖2.2.44所示:圖2.2.44 保護后的模塊2.2.5 數據格式與輸入輸出Sources或Sinks子庫中的現(xiàn)成信號源或輸出模塊可能不能滿足實際應用,因此用戶可以需要選用From Workspac
50、e及To Workspace模塊,自行定義模型的輸入及輸出。用戶可以通過上述模塊導入MATLAB工作空間的數據,也可以把輸出信號保存到工作空間。這項功讓用戶能夠使用由標準或自定義的MATLAB函數產生的數據作為輸入信號和圖形,使仿真更具多樣性。1. 把數據導出至工作空間1.新建一個演示模型,向模型中添加“sink”庫中的“To Workspace”模塊,該模塊位于如圖2.2.45所示的位置。圖。2.2.45 simout模塊打開To Workspace模塊的參數設置頁面,其中Data欄顯示的”simout”即變量名,用戶可根據需要自行更改。為便于“From Workspace”訪問,可以將“T
51、o Workspace”模塊的save format設置為“Array”,如圖2.2.46所示。圖2.2.46 設置simout模塊2. 向模型中添加“source”庫中的“signal builder”模塊,如圖2.2.47所示。圖2.2.47 signal builder模塊打開該模塊的設置頁面,用戶可以方便的通過其GUI界面畫出任意需要的信號波形。這里畫出一個從第3秒起持續(xù)4秒的矩形脈沖,如圖2.2.48所示。關于該模塊的更詳細用法不是本書重點,如有興趣可參看幫助文檔。圖2.2.48 信號波形3.向模型中添加“gain”模塊和“scope”模塊,并按圖2.2.49連接模塊:圖2.2.49
52、 向工作空間傳遞數據點擊工具欄上的“”按鈕運行仿真,MATLAB的工作空間中會顯示變量如圖2.2.50所示。圖2.2.50 工作空間的數據示波器中顯示波形如圖2.2.51所示:圖2.2.51 仿真波形Simulink仿真中的數據已經導入了工作空間,用戶可以根據需要對這些數據做進一步處理。2. 從工作空間導入數據1.向模型中添加“source”庫中的“From Workspace”模塊代替“signal builder”,即可用于從工作空間導入數據,該模塊位于如圖2.2.52所示的位置。圖2.2.52 simin模塊打開From Workspace模塊的參數設置頁面,其中Data欄顯示的” si
53、min”即變量名,用戶可根據需要自行更改。如圖2.2.53所示:圖2.2.53 simin設置2. 按圖2.2.54連接模塊:圖2.2.54 從工作空間讀數據“From Workspace”模塊調用工作空間的數據時,是遵循嚴格的格式的,一般是矩陣形式,而且輸入矩陣的列數必須比輸入信號多一列,Simulink會自動把首列數據當做時間向量。根據此規(guī)則,需要在工作空間內生成一個待輸入信號: simin=tout simout;生成2列的矩陣%用戶可以打開workspace中的變量simin查看其數據存儲結構,如圖2.2.55所示。圖2.2.55 數據存儲結構3. 實現(xiàn)外部信號對電機的控制回到電機模型
54、,我們用一個外部信號替代階躍信號控制電機,用戶可以通過這個外部信號實現(xiàn)對電機轉速的控制。向模型中添加“From Workspace”模塊替代“Step”模塊,并重命名為Vin_Control Signal。如圖2.2.56所示:圖2.2.56 添加simin模塊這里的From Workspace模塊仍然使用上文中生成的變量simin作為控制信號,Data欄設置變量名為simin”即變量名,如圖2.2.57所示。圖2.2.57 設置simin模塊運行仿真后得到的結果如圖2.2.58所示:圖2.2.58 仿真結果由仿真結果可知,系統(tǒng)響應曲線變化的總體趨勢是跟隨控制信號相吻合的,說明外部信號對電機轉速的控制是有一定效果的。但系統(tǒng)響應速度還不理想,且其響應幅度遠遠沒有達到控制信號的要求,需要通過進一步矯正才能符合需要。2.2.6 PID控制在上文的仿真結果中可以看到:輸出電機轉速(t)只是大體上跟隨控制信號的變化趨勢,而并沒有嚴格的達到控制信號所要求的轉速大小。這是由于模型還缺少一個反饋控制模塊,PID模塊能很好的完成這個工作。PID(比例積分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權】 ISO/TR 23975:2025 EN Traditional Chinese medicine - Priority list of single herbal medicines for developing standards
- 2025年度店鋪轉租雙方責任劃分合同
- 2025年度房地產項目風險評估合同模板
- 2025年度財務合同簽訂與履行管理合同
- 2025年度鑄件研發(fā)與生產承包協(xié)議
- 2025年度員工敬業(yè)度提升與企業(yè)文化融合合同
- 藝術創(chuàng)作活動的組織與管理計劃
- 現(xiàn)代青年財務觀念調查計劃
- 財務內控體系的構建與完善計劃
- 小學美術教育工作規(guī)劃計劃
- 腸內營養(yǎng)考評標準終
- (完整版)牧場物語精靈驛站詳細攻略
- 2020年化學品泄漏應急演習報告(含現(xiàn)場圖片)
- 建設工程文明工地申報表
- 上海民航職業(yè)技術學院2023年自主招生民航工程類
- STEM教學設計與實施PPT完整全套教學課件
- 門窗加工制作合同
- 《高等數學》“課程思政”優(yōu)秀教學案例
- 扁鋼理論重量表
- 中央企業(yè)商業(yè)秘密安全保護技術指引2015版
- 四年級上冊音樂《楊柳青》課件PPT
評論
0/150
提交評論