Download presentation
Presentation is loading. Please wait.
1
Simulink模擬基礎 主要內容 Simulink簡介 Simulink模組庫 Simulink的基本操作 S-函數
2
Simulink模擬基礎 背景:在工程實際中,控制系統的結構往往很複雜,如果不借助專用的系統建模軟體,則很難準確地把一個控制系統的複雜模型輸入電腦,對其進行進一步的分析與模擬。 產生與命名:1990年,Math Works軟體公司為MATLAB提供了新的控制系統模型圖輸入與模擬工具,並命名為SIMULAB,該工具很快就在控制工程界獲得了廣泛的認可,使得模擬軟體進入了模型化圖形組態階段。但因其名字與當時比較著名的軟體SIMULA類似,所以1992年正式將該軟體更名為SIMULINK。 SIMULINK的出現,給控制系統分析與設計帶來了很大的便利。顧名思義,該軟體的名稱表明了該系統的兩個主要功能:Simu(模擬)+Link(連接),即該軟體可以利用滑鼠在模型視窗上繪製出所需要的控制系統模型,然後利用SIMULINK提供的功能來對系統進行模擬和分析。
3
第一節 SIMULINK簡介 一、什麼是SIMULINK
SIMULINK是MATLAB軟體的擴展,它是實現動態系統建模和模擬的一個套裝軟體,它與MATLAB語言的主要區別在於,其與使用者交互介面是基於Windows的模型化圖形輸入,其結果是使得用戶可以把更多的精力投入到系統模型的構建,而非語言的程式設計上。 所謂模型化圖形輸入是指SIMULINK提供了一些按功能分類的基本的系統模組,用戶只需要知道這些模塊的輸入輸出及模組的功能,而不必考察模組內部是如何實現的,通過對這些基本模組的調用,再將它們連接起來就可以構成所需要的系統模型(以.mdl檔進行存取),進而進行模擬與分析。
4
二、SIMULINK的啟動 1、在MATLAB命令視窗中輸入simulink 結果是在桌面上出現一個稱為Simulink Library Browser的視窗,在這個視窗中列出了按功能分類的各種模組的名稱。 當然用戶也可以通過MATLAB主視窗的快捷按鈕來打開Simulink Library Browser窗口。 2、在MATLAB命令視窗中輸入simulink3 結果是在桌面上出現一個用圖示形式顯示的Library :simulink3的Simulink模組庫視窗。 兩種模組庫視窗介面只是不同的顯示形式,使用者可以根據各人喜好進行選用,一般說來第二種視窗直觀、形象,易於初學者,但使用時會打開太多的子視窗。
7
三、SIMULINK的模組庫介紹 SIMILINK模組庫按功能進行分類,包括了以下子庫: Continuous(連續模組)
Discrete(離散模組) Function&Tables(函數和平臺模組) Math(數學模組) Nonlinear(非線性模組) Signals&Systems(信號和系統模組) Sinks(接收器模組) Sources(輸入源模組) Note:matlab版本不同,其庫的構成也有不同。
8
1、連續模組(Continuous) Integrator:輸入信號積分 Derivative:輸入信號微分 State-Space:線性狀態空間系統模型 Transfer-Fcn:線性傳遞函數模型 Zero-Pole:以零極點表示的傳遞函數模型 Memory:存儲上一時刻的狀態值 Transport Delay:輸入信號延時一個固定時間再輸出 Variable Transport Delay:輸入信號延時一個可變時間再輸出
9
2、離散模組(Discrete) Discrete State-Space:離散狀態空間系統模型 Discrete Transfer-Fcn:離散傳遞函數模型 Discrete Zero-Pole:以零極點表示的離散傳遞函數模型 First-Order Hold:一階採樣和保持器 Discrete-time Integrator:離散時間積分器 Discrete Filter:IIR與FIR濾波器 Zero-Order Hold:零階採樣和保持器 Unit Delay:一個採樣週期的延時
10
3、 Math(數學模組) Sum:加減運算 Product:乘運算 Dot Product:點乘運算 Gain:比例運算 Abs:取絕對值
Sign:符號函數 Math Function:包括指數函數、對數函數、求平方、開根號等常用數學函數 Trigonometric Function:三角函數,包括正弦、餘弦、正切等 MinMax:極值運算
11
Logical Operator:邏輯運算
Relational Operator:關係運算 Complex to Magnitude-Angle:由複數輸入轉為幅值和相角輸出 Magnitude-Angle to Complex:由幅值和相角輸入合成複數輸出 Complex to Real-Imag:由複數輸入轉為實部和虛部輸出 Real-Imag to Complex:由實部和虛部輸入合成複數輸出
12
4、 Function&Tables(函數和平臺模組)
Fcn:用自訂的函數(運算式)進行運算 MATLAB Fcn:利用matlab的現有函數進行運算 S-Function:調用自編的S函數的程式進行運算 Look-Up Table:建立輸入信號的查詢表(線性峰值匹配) Look-Up Table(2-D):建立兩個輸入信號的查詢表(線性峰值匹配) Note:1)有時候一些數值運算還是寫一個函數比較方便,所以有函數模組。 2)在某些新版本中,分解為table+funciton2個模組
13
5、 Nonlinear(非線性模組) Saturation:飽和輸出,讓輸出超過某一值時能夠飽和。
Relay:滯環比較器,限制輸出值在某一範圍內變化。 Switch:開關選擇,當第二個輸入端大於臨界值時,輸出由第一個輸入端而來,否則輸出由第三個輸入端而來。 Manual Switch:手動選擇開關
14
6、Signal&Systems(信號和系統模組)
Mux:將多個單一輸入轉化為一個複合輸出。 Demux:將一個複合輸入轉化為多個單一輸出。 In1:輸入端(在創建子系統的時候用到)。 Out1:輸出端(在創建子系統的時候用到)。 Ground:連接到沒有連接到的輸入端。 Terminator:連接到沒有連接到的輸出端。 SubSystem:建立新的封裝(Mask)功能模組
15
7、Sinks(接收器模組) Scope:示波器(圖形的方式顯示信號)。 To Workspace:將輸出寫入MATLAB的工作空間。
XY Graph:顯示二維圖形。 To File(.mat):將輸出寫入資料檔案。
16
8、Sources(輸入源模組) Sine Wave:正弦波信號。 Step:階躍波信號。 Constant:常數信號。
Clock:時鐘信號。 From Workspace:來自MATLAB的工作空間。 From File(.mat):來自資料檔案。 Pulse Generator:脈衝發生器。 Repeating Sequence:重複信號。 Signal Generator:信號發生器,可以產生正弦、方波、鋸齒波及隨意波。
17
四、SIMULINK簡單模型的建立-例子
1、簡單模型的建立 (1)如何建立模型視窗? (2)需要哪些模組? 控制物件+控制器:傳遞函數(連續系統) 輸入:單位階躍(source) 輸出:示波器+to workspace(sinks) 回饋:信號的加減(math) (3)如何連接模組? (4)模擬時間的設置 (5)模擬演算法的設置 (exp5_1.mdl)
18
P7-5 MATLAB視窗程式設計 第7章 Simulink
19
MATLAB視窗程式設計 第7章 Simulink
23
第二節 SIMULINK功能模組的處理 功能模組的基本操作,包括模組的移動、複製、刪除、轉向、改變大小、模組命名、顏色設定、參數設定、屬性設定、模組輸入輸出信號等。 模組庫中的模組可以直接用滑鼠進行拖曳(選中模組,按住滑鼠左鍵不放)而放到模型視窗中進行處理。 在模型視窗中,選中模組,則其4個角會出現黑色標記。此時可以對模組進行以下的基本操作。 1)移動:2)複製:3)刪除:
24
轉向:為了能夠順序連接功能模組的輸入和輸出端,功能模組有時需要轉向。在菜單Format中選擇Flip Block旋轉180度,選擇Rotate Block順時針旋轉90度。或者直接按Ctrl+F鍵執行Flip Block,按Ctrl+R鍵執行Rotate Block。 改變大小: 模組命名: 顏色設定: Format菜單中的Foreground Color可以改變模組的前景顏色,Background Color可以改變模組的背景顏色;而模型視窗的顏色可以通過Screen Color來改變。
25
參數設定:按兩下進入。 屬性設定:選中模組,打開Edit菜單的Block Properties可以對模組進行屬性設定。其中Open function屬性是一個很有用的屬性,通過它指定一個函數名,則當該模組被按兩下之後,Simulink就會調用該函數執行,這種函數在MATLAB中稱為回呼函數。 模組的輸入輸出信號:模組處理的信號包括標量信號和向量信號;標量信號是一種單一信號,而向量信號為一種複合信號,是多個信號的集合,它對應著系統中幾條連線的合成。缺省情況下,大多數模組的輸出都為標量信號,對於輸入信號,模組都具有一種“智慧”的識別功能,能自動進行匹配。某些模組通過對參數的設定,可以使模組輸出向量信號。
26
第三節 SIMULINK線的處理 改變粗細:線所以有粗細是因為線引出的信號可以是標量信號或向量信號,當選中Format菜單下的Wide Vector Lines時,線的粗細會根據線所引出的信號是標量還是向量而改變,如果信號為標量則為細線,若為向量則為粗線。選中Vector Line Widths則可以顯示出向量引出線的寬度,即向量信號由多少個單一信號合成。 設定標籤:按兩下即可。 線的折彎:按住Shift鍵,再用滑鼠在要折彎的線處按一下一下,就會出現圓圈,表示折點,利用折點就可以改變線的形狀。 線的分支:按住滑鼠右鍵,在需要分支的地方拉出即可以。或者按住Ctrl鍵,並在要建立分支的地方用滑鼠拉出即可。
27
第四節 SIMULINK自訂功能模組 1) 背景:針對複雜的系統,將其中同屬於一個功能子系統的模組封裝為一個單獨的子系統。(類似於程式設計中的函數的概念。) 2)方法:自訂功能模組有兩種方法: a)採用Signal&Systems 模組庫中的Subsystem功能模組,利用其編輯區設計組合新的功能模組; b)另一種方法是將現有的多個功能模組組合起來,形成新的功能模組。對於很大的SIMULINK模型,通過自訂功能模組可以簡化圖形,減少功能模組的個數,有利於模型的分層構建。
28
第四節 SIMULINK自訂功能模組 自訂功能模組的封裝
1) 如果要命名該自訂功能模組、對功能模組進行說明、選定模組外觀、設定輸入資料視窗,則需要對其進行封裝處理。 2)步驟:首先選中Subsystem功能模組,再打開Edit功能表中的Mask Subsystem進入mask的編輯視窗,可以看出有3個標籤頁: a)Icon:設定功能模組的外觀。 b)Initialization:設定輸入資料視窗(Prompt List)。 c)Documentation:設計該功能模組的文字說明。
29
第五節 SIMULINK模擬的運行 構建好一個系統的模型之後,接下來的事情就是運行模型,得出模擬結果。運行一個模擬的完整過程分成三個步驟:設置模擬參數,啟動模擬和模擬結果分析。 一、設置模擬參數和選擇解法器 設置模擬參數和選擇解法器,選擇Simulation菜單下的Parameters命令,就會彈出一個模擬參數對話方塊,它主要用三個頁面來管理模擬的參數。 Solver頁,它允許用戶設置模擬的開始和結束時間,選擇解法器,說明解法器參數及選擇一些輸出選項。 Workspace I/O頁,作用是管理模型從MATLAB工作空間的輸入和對它的輸出。 Diagnostics頁,允許用戶選擇Simulink在模擬中顯示的警告資訊的等級。
30
1、Solver頁 此頁可以進行的設置有:1) 選擇模擬開始和結束的時間;2) 選擇解法器,並設定它的參數;3)選擇輸出項。
仿真時間:注意這裡的時間概念與真實的時間並不一樣,只是電腦模擬中對時間的一種表示,比如10秒的模擬時間,如果採樣步長定為0.1,則需要執行100步,若把步長減小,則採樣點數增加,那麼實際的執行時間就會增加。一般模擬開始時間設為0,而結束時間視不同的因素而選擇。總的說來,執行一次模擬要耗費的時間依賴於很多因素,包括模型的複雜程度、解法器及其步長的選擇、電腦時鐘的速度等等。 仿真步長模式:用戶在Type後面的第一個下拉選項框中指定模擬的步長選取方式,可供選擇的有Variable-step(變步長)和Fixed-step(固定步長)方式。變步長模式可以在模擬的過程中改變步長,提供誤差控制和過零檢測。固定步長模式在模擬過程中提供固定的步長,不提供誤差控制和過零檢測。使用者還可以在第二個下拉選項框中選擇對應模式下模擬所採用的演算法。
31
變步長模式解法器有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb和discrete。
ode45:缺省值,四/五階龍格-庫塔法,適用於大多數連續或離散系統,但不適用於剛性(stiff)系統。它是單步解法器,也就是,在計算y(tn)時,它僅需要最近處理時刻的結果y(tn-1)。一般來說,面對一個模擬問題最好是首先試試ode45。 ode23:二/三階龍格-庫塔法,它在誤差限要求不高和求解的問題不太難的情況下,可能會比ode45更有效。也是一個單步解法器。 ode113:是一種階數可變的解法器,它在誤差容許要求嚴格的情況下通常比ode45有效。ode113是一種多步解法器,也就是在計算當前時刻輸出時,它需要以前多個時刻的解。 ode15s:是一種基於數位微分公式的解法器(NDFs)。也是一種多步解法器。適用於剛性系統,當使用者估計要解決的問題是比較困難的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。
32
固定步長模式解法器有:ode5,ode4,ode3,ode2,ode1和discrete。
33
步長參數:對於變步長模式,使用者可以設置最大的和推薦的初始步長參數,缺省情況下,步長自動地確定,它由值auto表示。
a)Maximum step size(最大步長參數):它決定瞭解法器能夠使用的最大時間步長,它的缺省值為“模擬時間/50”,即整個模擬過程中至少取50個取樣點,但這樣的取法對於模擬時間較長的系統則可能帶來取樣點過於稀疏,而使模擬結果失真。一般建議對於模擬時間不超過15s的採用預設值即可,對於超過15s的每秒至少保證5個採樣點,對於超過100s的,每秒至少保證3個採樣點。 b) Initial step size(初始步長參數):一般建議使用“auto”預設值即可。
34
模擬精度的定義(對於變步長模式) a)Relative tolerance(相對誤差):它是指誤差相對於狀態的值,是一個百分比,缺省值為1e-3,表示狀態的計算值要精確到0.1%。 b)Absolute tolerance(絕對誤差):表示誤差值的門限,或者是說在狀態值為零的情況下,可以接受的誤差。如果它被設成了auto,那麼simulink為每一個狀態設置初始絕對誤差為1e-6。
35
2、Workspace I/O頁 此頁主要用來設置SIMULINK與MATLAB工作空間交換數值的有關選項。
Load from workspace:選中前面的核取方塊即可從MATLAB工作空間獲取時間和輸入變數,一般時間變數定義為t,輸入變數定義為u。 Initial state用來定義從MATLAB工作空間獲得的狀態初始值的變數名。 Save to workspace:用來設置存往MATLAB工作空間的變數類型和變數名,選中變數類型前的核取方塊使相應的變數有效。一般存往工作空間的變數包括輸出時間向量(Time)、狀態向量(States)和輸出變數(Output)。 Final state用來定義將系統穩態值存往工作空間所使用的變數名。 Save option:用來設置存往工作空間的有關選項。Limit rows to last用來設定SIMULINK模擬結果最終可存往MATLAB工作空間的變數的規模,對於向量而言即其維數,對於矩陣而言即其秩;Decimation設定了一個亞採樣因數,它的缺省值為1,也就是對每一個模擬時間點產生值都保存,而若為2,則是每隔一個模擬時刻才保存一個值。Format用來說明返回資料的格式,包括矩陣matrix、結構struct及帶時間的結構struct with time。
36
二、啟動模擬 設置模擬參數和選擇解法器之後,就可以啟動模擬而運行。 選擇Simulink菜單下的start選項來啟動仿真,如果模型中有些參數沒有定義,則會出現錯誤資訊提示框。如果一切設置無誤,則開始模擬運行,結束時系統會發出一鳴叫聲。 除了直接在SIMULINK環境下啟動模擬外,還可以在MATLAB命令視窗中通過函數進行,格式如下: [t,x,y]=sim(‘模型檔案名’,[to tf],simset(‘參數1’,參數值1,‘參數2’,參數值2, …)) 其中to為模擬起始時間,tf為模擬終止時間。[t,x,y]為返回值,t為返回的時間向量值,x為返回的狀態值,y為返回的輸出向量值。simset定義了模擬參數,包括以下一些主要參數: AbsTol:預設值為1e-6設定絕對誤差範圍。 Decimation:預設值為1,決定隔多少個點返回狀態和輸出值。 Solver:解法器的選擇。
37
MaxRows:預設值為0,表示不限制。若為大於零的值,則表示限制輸 出和狀態的規模,使其最大行數等於該數值。
InitialState:一個向量值,用於設定初始狀態。 FixedStep:用一個正數表示步階的大小,僅用於固定步長模式。 MaxStep:預設值為auto。用於變步長模式,表示最大的步階大小。 如果知道模型檔案名稱,可以用以下命令得到該模型的模擬參數: simget(‘模型檔案名’)
38
第五節 SIMULINK模擬的運行 小結:模擬運行要點 1)設置參數 a)模擬時間: 注意能夠觀察到我們需要的資訊即可。
b)模擬演算法:定(非定)步長模式,時間間隔、容許誤差等; 注意時間間隔不要太長。 2)模擬啟動
39
常用方塊元件 P7-14
44
AND:若所有輸入為真(True),則輸出真(True)。
OR:若輸入至少有一為真(True),則輸出真(True)。 NAND:若輸入至少有一為偽(False),則輸出真(True)。 NOR:若輸入沒有為真(True),則輸出真(True)。 XOR:若奇數輸入為真(True),則輸出真(True)。 NOT:若輸入為真( 偽),則輸出偽( 真)。
47
P7-21
50
連續元件
55
P7-25
63
P7-29
66
數學運算元件
71
P7-55
78
P7-58
83
第六節 SIMULINK s-function的設計
背景: Simulink為使用者提供了許多內置的基本庫模組,通過這些模組進行連接而構成系統的模型。對於那些經常使用的模組進行組合並封裝可以構建出重複使用的新模組,但它依然是基於Simulink原來提供的內置模組。而Simulink s-function是一種強大的對模塊庫進行擴展的新工具。 Note: 1)類似的手段:子系統、自己定義的函數 2)s函數與上述手段有何不同呢?
84
第六節 SIMULINK s-function的設計
s-function是一個動態系統的電腦語言描述,在MATLAB裡,用戶可以選擇用m檔編寫,也可以用c或mex檔編寫。 S-function提供了擴展Simulink模組庫的有力工具,它採用一種特定的調用語法,使函數和Simulink解法器進行交互。 S-function最廣泛的用途是定制用戶自己的Simulink模組。它的形式十分通用,能夠支援連續系統、離散系統和混合系統。
85
二、建立m文件s-function 1、使用範本檔:sfuntmp1. m 該範本檔位於MATLAB根目錄下toolbox/simulink/blocks目錄下。 主函數結構(sfuntmp1_main):根據傳入的flag,調用不同的函數。
86
note: 1)模擬過程:多次的反覆運算,每次的反覆運算中間又分作了不同的過程。 2)模擬是通過simulink解法器來完成的;s-函數是提供給simulink解法器調用的; 3)s函數與simulink解法器是如何協作的? simulink解法器在反覆運算過程中調用s函數,s函數負責執行相關的指令。s函數與simulink解法器的交互通過輸入參數來完成。 其中t(時間),x(狀態參量),u(輸出參量)。 flag:表徵反覆運算具體進展到哪個階段。
87
二、建立m文件s-function 1、使用範本檔: 範本檔使用switch語句來完成這種指定,當然這種結構並不唯一,使用者也可以使用if語句來完成同樣的功能。而且在實際運用時,可以根據實際需要來去掉某些值,因為並不是每個模組都需要經過所有的子函式呼叫。 範本文件只是Simulink為方便用戶而提供的一種參考格式,並不是編寫s-function的語法要求,使用者完全可以改變子函數的名稱,或者直接把代碼寫在主函數裡,但使用範本檔的好處是,比較方便,而且條理清晰。
88
使用範本編寫s-function,用戶只需把s-函數名換成期望的函數名稱,如果需要額外的輸入參量,還需在輸入參數列表的後面增加這些參數,因為前面的4個參數是simulink調用s-function時自動傳入的。對於輸出參數,最好不做修改。接下去的工作就是根據所編s-function要完成的任務,用相應的代碼去替代範本裡各個子函數的代碼即可。 Simulink在每個模擬階段都會對s-function進行調用,在調用時,Simulink會根據所處的模擬階段為flag傳入不同的值,而且還會為sys這個返回參數指定不同的角色,也就是說儘管是相同的sys變數,但在不同的模擬階段其意義卻不相同,這種變化由simulink自動完成。
89
m文件s-function可用的子函數說明如下:
mdlInitializeSizes:定義s-function模組的基本特性,包括採樣時間、連續或者離散狀態的初始條件和sizes陣列。 mdlDerivatives:計算連續狀態變數的微分方程。 mdlUpdate:更新離散狀態、採樣時間和主時間步的要求。 mdlOutputs:計算s-function的輸出。 mdlGetTimeOfNextVarHit:計算下一個採樣點的絕對時間,這個方法僅僅是在用戶在mdlInitializeSizes 裡說明了一個可變的離散採樣時間。 mdlTerminate:實現模擬任務必須的結束。
90
概括說來,建立s-function可以分成兩個分離的任務:
初始化模組特性包括輸入輸出信號的寬度,離散連續狀態的初始條件和採樣時間。 將算法放到合適的s-function子函數中去。
91
2、定義s-function的初始信息 為了讓Simulink識別出一個m文件s-function,用戶必須在s-函數裡提供有關s-函數的說明資訊,包括採樣時間、連續或者離散狀態個數等初始條件。這一部分主要是在mdlInitializeSizes子函數裡完成。 Sizes陣列是s-function函數資訊的載體,它內部的欄位意義為: NumContStates:連續狀態的個數(狀態向量連續部分的寬度) NumDiscStates:離散狀態的個數(狀態向量離散部分的寬度) NumOutputs: 輸出變數的個數(輸出向量的寬度) NumInputs:輸入變數的個數(輸入向量的寬度) DirFeedthrough:有無直接饋入 NumSampleTimes:採樣時間的個數
92
3、輸入和輸出參量說明 S-function默認的4個輸入參數為t、x、u和flag,它們的次序不能變動,代表的意義分別為: t:代表當前的模擬時間,這個輸入參數通常用於決定下一個採樣時刻,或者在多採樣速率系統中,用來區分不同的採樣時刻點,並據此進行不同的處理。 x: 表示狀態向量,這個參數是必須的,甚至在系統中不存在狀態時也是如此。它具有很靈活的運用。 u:表示輸入向量。 flag:是一個控制在每一個模擬階段調用哪一個子函數的參數,由Simulink在調用時自動取值。
93
S-function默認的4個返回參數為sys、x0、str和ts,它們的次序不能變動,代表的意義分別為:
sys:是一個通用的返回參數,它所返回值的意義取決於flag的值。 x0: 是初始的狀態值(沒有狀態時是一個空矩陣[]),這個返回參數只在flag值為0時才有效,其他時候都會被忽略。 str:這個參數沒有什麼意義,是MathWorks公司為將來的應用保留的,m文件s-function必須把它設為空矩陣。 ts:是一個m×2的矩陣,它的兩列分別表示採樣時間間隔和偏移。
94
第六節 SIMULINK s-function的設計
小結:一個基本的框架 1)對於一個連續系統 a. 系統初始化 b.計算微分環節 c.計算系統輸出 2)對於一個離散系統 b. 計算系統的更新環節 c. 計算系統輸出
95
例1 csfunc.m(連續狀態s-function)
note: 修改了函數的調用形式,添加了A、B、C、D這些參數; sfun_exam_csfun.mdl 例2 dsfunc.m(離散狀態s-function)
96
本章小結 SIMULINK是MATLAB的一個擴展軟體,它是基於模型化圖型輸入的模擬環境。
S-FUNCTION是擴展MATLAB函式程式庫的一個實用方法,要求掌握它的編寫及用法。 使用SIMULINK進行模擬分析的關鍵是熟練地運用各功能子模組構建出需要的正確的系統模型並合理地設置解法器以使模擬得以正常運行。
Similar presentations