2.1 Simulink模塊的組成要素
2.1.1 模塊概述
連接模塊,形成邏輯連接,實現功能。模塊是構成模型的單位。
2.1.2 Simulink模塊的構成
模塊是模型的元素,同時,模塊也由3個元素構成:
輸入/輸出端口:數據傳遞的紐帶;
模塊外觀:矩形或圓形+說明文字;
模塊對話框:雙擊模塊,在參數GUI中設置模塊參數。
2.1.3 Simulink模塊的朝向
1、Ctrl+R模塊可旋轉90度。
2、Ctrl+C,Ctrl+V可添加模塊;也可從Library Browser中接着拖出。
2.1.4 Simulink模塊的屬性及參數
1、幾個常用命令:
gcb:獲取當前被選中模塊,get current block;
gcbh:獲取當前被選中模塊的句柄,get current block handle;經常用該命令,何為句柄?
句柄是整個Windows編程基礎,用一個唯一的數值(MATLAB/Simulink中以double型數據表示)來標識實例。(句柄就表示當前模塊)。
get(handle):獲取模塊屬性信息;
inspect(handle):通過屬性觀察器(彈出對話框)羅列模塊屬性信息;
get_param(block,prop_string):獲取block模塊的prop_string參數屬性值;
set_param(block,prop_string,prop_value):將block模塊的prop_string屬性值設為prop_value。prop_string,prop_value可以多組成對出現,其形式為:
set_param(block,param1,value1,...,paramN,valueN)。
2、設置模塊屬性
(1)模塊屬性分兩種,一種是所有模塊共同屬性,如字體、前景背景色、各種回調函數,通過set_param函數設置。
如set_parm(gcbh,'BackgroundColor',‘yellow’); 設置當前模塊背景色為黃色;
(2)一種是該模塊自己GUI對話框獨有的屬性,又稱模塊參數,雙擊模塊調出參數界面。
Sample time:采樣時間,模塊更新輸出的時間間隔,跟S函數采樣時間一致,默認設為無窮大inf,即不進行輸出值更新,輸出值一直是模塊的
初始值; 勾選表示直接將參數輸出; constant value:模塊輸出的數值,可以是標量、向量或矩陣。
(3)除了雙擊模塊,也可以M語言編程設置參數值。
如將Constant模塊的Value值設置為3×5的隨機矩陣:set_param(gcbh, ‘value’, 'rand(3, 5)');
(4)另一組參數界面:
極值默認為空,不對數據輸出進行任何檢測;一旦設置了數值,當數值小於min或大於max時,就會報錯。
勾選Lock....,可以鎖定輸出數據類型,使模型在被fixed-point工具優化時不修改輸出數據類型。
2.1.5 Simulink模塊的注解
右鍵模塊,Properties,選項卡2,雙擊左側某一條屬性,可以添加到右側編輯框中,從而以懸浮文字方式顯示到模型中去。
反應到模塊上,是這樣:
2.1.6 Simulink模塊的虛擬性
模塊分虛擬模塊和非虛擬模塊,非虛擬模塊在仿真中起實際作用,虛擬模塊不起實際作用,主要從視覺上改善感受。
兩者區別在生成代碼時可以直觀的看到(虛擬模塊不會按照用戶設定生成函數)。
2.2 Simulink常用模塊庫
2.2.1 輸入/輸出模塊
In模塊參數UI:
1:In模塊的端口編號;
2:模塊外觀要顯示的內容;
3:當將Workspace的數據導入模型時,對沒有對應數據點的采樣時刻進行線性插值的開關選項,勾選表示進行線性插值;數據導入需要In模塊結合Configuration Parameter中的Data Import/Export共同實現。 下面解釋這個勾選的含義:
workspace的數據向量組合[t, u],將workspace中的u數據列導入到模型中來的步驟:
1)開啟Configuration Parameter的Data Import/Export導入功能,在方框打√ ,
[t , u] t表示時間列向量,u表示對應時間點數據的列向量;
2)在workspace中定義t和u的數據,如t定義從0到1采樣間隔0.1s的時間列向量,u定義為這段時間內的正弦波形:
t = [1: 0.1 : 5]';
u = sin(3*t);
3)建立一個In輸入直連Scope示波器的模型,
上圖中,在1~5s之間是正弦函數,在前、后顯示一條直線,這條直線就是勾選Interpolate data的結果,對未定義的采樣時間范圍內的值進行線性差值。
線性差值的解釋如下?見教材
-----------
4、默認參數“-1”表示繼承輸入信號的尺寸,填入整數n表示輸入為n維向量,填入二元整數[m, n]表示輸入為m×n的矩陣;
5、表示數據維數可變,inherited表示繼承輸入信號的選擇,當使用變大小信號維數時,Port Dimension參數要填寫接收信號中維數最大的。
2.2.2 常數模塊
輸出恆定數值,可為標量、向量、矩陣等多維數據的信號輸出。
2.2.3 波形顯示模塊Scope
雙擊打開模塊,從這里設置一些常用參數:
2.2.4 四則運算模塊
01、Sum模塊 加法
1、模塊外觀,圓形或方形;
2、 | 空白,占用一個符號的顯示位置;根據填入的總個數決定輸入端口總個數。
1、是否要去輸入端口的數據類型保持一致;
2、對固定點數的取整方式;
3、當數據超出數據類型所表示范圍時,是否保持該數據類型的上下限值;如數據類型為int8的輸出值被計算出為129,勾選后,則輸出uint8上限值127,不勾選則溢出值計算為-127。
4、模塊內部累加器的數據類型。計算出各個端口的累加值后,再賦值給Sum模塊的輸出端口,工作流程如下:1)導入第一個輸入端口的值作為初始值;2)與第二個輸入端口根據符號進行運算,結果存入Accumulator。3)如果還有更多輸入端口則重復執行2),Accumulator每次更新結果;4)Accumulator將結果按照Output端口數據類型轉換后賦值給輸出端口。
推薦使用:一般使用默認數據類型double。
02、Product 乘除法模塊
在每一個采樣步長進行兩個輸入數據的乘法運算,並將值輸出。
1、設置輸入端口個數,默認是2個。
1. .* 點乘,選擇點乘時模塊上顯示“×”
2. 矩陣乘法Matrix ,選擇時,模塊上顯示“Matrix Multipy”字樣
03、Divide模塊
可實現兩個或多個信號的乘除法運算。
1、不輸入數字,輸入乘號和除號,個數由*/ 決定,端口的乘除法運算根據*/的順序從上到下一次排布,如輸入*//,則Divide模塊第一個參數
是乘法,第二第三都是除法。
04、Gain模塊
增益模塊,
1、增益數值,支持標量 向量 矩陣形式輸入;
2、4種乘法模式,第一個點乘,模塊上顯示Gain數值;其他矩陣乘,K增益參數值,u輸入端口的數值,模塊上顯示所選擇的矩陣乘法形式。
點乘不說了。矩陣乘必須要求矩陣的內維要一致,以第4種為例,K為m×n矩陣,則u必須為n×q的矩陣,輸出結果為m×q的矩陣。
參數1,用來限定Gain上下限,默認[ ]表示不設定上下限。如果輸入數值,當Gain值超出這兩個值得范圍時會報錯提醒。
如min0,max2,當Main中的Gain輸入3時,報錯提示:
2、設定Main頁面參數Gain的數據類型。仿真時若無特殊要求可以不設定。
Gain實例,仿真等比數列yn = yn-1 × 0.5.
2.2.5 延時模塊
輸出信號和輸入信號之間具有間接關系,輸出不直接反應輸入信號的變化,而是延遲一個或多個采樣時間再將輸入信號輸出到輸出端口。對於當前采樣時刻的輸出,則是一個或幾個采樣時刻之間獲取的輸入。
1. Delay模塊
delay length:采樣點數;
initial condition:輸出初始值;
模塊總延時時間=采樣點數delay lentgth × 采樣時間sample time
如:delay length 3, sample time 0.6, 則delay 模塊輸出將在1.8s時開始更新,在0~1.8s之間,delay模塊輸出值由initial condition中輸入的初始值決定。
external reset:復位觸發方式,復位指經過延時后更新為之前采樣時刻的輸入值,一旦接收到復位信號,狀態值則恢復為初始狀態值。
基於采樣和基於幀的采樣方式區別在於采樣數據的組織方式。
1) sample based 基於采樣,指simulink模塊在每個采樣時刻處理一組采樣數據(標量或矩陣),每一個元素使用一個獨立的通道。例如t=0時刻采樣一個3×2的矩陣,就需要6個不同的通道來解釋數據,如下圖:
輸入信號是普通單線條。
2)frame based 基於幀的采樣,simulink模塊在每個采樣時刻處理一個幀數據,每個幀數據包含了來自一個或多個獨立通道的連續采樣,每個通道好漢一列輸入數據。如3×2的矩陣進行采樣時,由於2列數據,需要2個通道,每個通道采樣連續3個數據元素作為一幀。
使用幀采樣可以在同一時刻使用較少的通道處理多個數據元素,在通信算法和信號處理建模中有優勢,提高代碼運行效率,降低模型仿真運行時間。
輸入信號是雙線條信號。
3)inherited 是繼承輸入信號的采樣方式。
2. Unit Delay 模塊
是delay 模塊一種特例,即只延時一個采樣時間。
實例:使用delay模塊實現一個累加計數器,計數到10之后自動復位,復位后重新計時,周而復始。
2.2.6 關系操作模塊
略。
2.2.7 邏輯運算模塊
略。
2.2.8 Switch模塊
2.2.9 積分模塊
2.2.10 限副模塊
2.2.11 接地模塊
2.2.12 終止模塊
2.2.13 信號合並與分解模塊
2.2.14 總線創建與總線選擇模塊
2.2.15 向量連接模塊
2.2.16 數據類型轉換模塊
2.2.17 子系統模塊
2.3 Commonly Used Block以外的常用模塊
2.3.1 信號源模塊
2.3.2 信號接收模塊
2.3.3 查表模塊
2.3.4 其他常用模塊
2.3.5 用戶自定義模塊