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 用户自定义模块