Simulink中各模块介绍 | 您所在的位置:网站首页 › 549ch模块 › Simulink中各模块介绍 |
MATLAB帮助在线 在介绍Simulink模块属性之前,先介绍几个常用命令: gcb:获取当前被选中的模块,get current block gcbh:获取当前被选中模块的句柄,get current block handle get(handle):通过句柄获取模块的属性信息。 get_param(block,prop_string):获取block模块的prop_string属性值 set_param(block,prop_string,prop_value):将block模块的prop_string属性值设为prop_value。 inspect(gcbh):获取模块属性清单 模块属性分为2种:(1)所有模块共同具有的属性,如字体,前景背景颜色及各种回调函数等;(2)每种模块自己的GUI对话框独有属性,又称模块的参数。模块的共同属性可以通过set_param设置。 模块的常用属性: Path: 模块在模型中的路径 Name:模块的名字 FontName: 字体名 FontSize:字体大小 FontWeight: 字体粗细 FontAngle: 字体是否倾斜 ForegroundColor: 模块的前景颜色,即模块的边框及外观显示线条的颜色 BackgroundColor: 模块的背景颜色 ShowName: 模块名字是否显示出来 Priority:模块的优先度,表示模型执行的前后顺序 CopyFcn: ‘’ DeleteFcn: ‘’ UndoDeleteFcn: ‘’ LoadFcn: ‘’ ModelCloseFcn: ‘’ PreSaveFcn: ‘’ PostSaveFcn: ‘’ InitFcn: 模型初始化时模块所执行的回调函数 StartFcn: 模型开始仿真时模块所执行的回调函数 PauseFcn:模块仿真暂停时所执行的回调函数 ContinueFcn: ‘’ StopFcn: ‘’ NameChangeFcn: ‘’ ClipboardFcn: ‘’ DestroyFcn: ‘’ PreCopyFcn: ‘’ OpenFcn: ‘’ CloseFcn: ‘’ PreDeleteFcn: ‘’ ParentCloseFcn: ‘’ MoveFcn: ‘’ Value: ‘1’ Constant模块的数值,是其特有的参数 SampleTime: 模块的采样时间 模块的Signal Attributes属性页面: Output minimum:限定输出最小值 Output maximum:限定输出最大值 Output data type:模块输出类型的设置,包括内建类型与用户自定义类型都会显示在下拉框中。 Output data type 输出数据类型的设定: Inherit:Inherit from ‘Constant value’:普通继承,输出数据直接使用所填参数本身的数据类型 Inherit:Inherit via back propagation:反向继承,使用输出端口后面连接着的模块的数据类型 double: single: int8: uint8: int16: uint16: int32: uint32: boolean: fixdt(1,16):使用有符号和字长规定的固定点数据类型。 Lock output data type setting against changes by the fixed-point tools: 勾选后可以锁定输出数据类型,使模型在被fixed-point工具优化时不修改输出数据类型 fixdt(1,16,0) :使用有无符号、字长及表示小数部分的整数位3个因素来表示的固定点数据类型 fixdt(1,16,2^0,0):使用有无符号、字长、斜率和偏移量来表示的固定点数据类型 Enum: :枚举类型 Bus: :Bus数据类型 : 数据类型表达式 fixdt (此数据类型对象可以传递给支持定点数据类型的Simulink块)是MATLAB提供的函数,能够返回Simulink.NumericType类型的变量,通过这个变量来描述一种固定点数据类型。使用固定点数据类型配置的模型生成的代码相对于浮点数据类型占用较少的内存空间,并能够以更快的速度执行, ※※固定点数据格式 通常所说的固定点数据格式是指二进制数据,有两个最基本的特性: (1)符号:数据的首位是1或0表示有符号或无符号 (2)字长:存储单元的数据共有多少二进制位构成,一般由MCU存储字长确定,最常见的MCU有32位、16位及8位。 (3)表示小数的数据位:字长范围内的一部分或全部数据位用来表示数的小数部分,这部分数据位于数据的最右端。 一般将固定点数表示为如图所示形式: ws:表示字长。 MSB:the most significant bit,最高有效位,bws_1。 LSB:the least significant bit,最低有效位,b0 ,代表当前数据类型的分辨率(resolution)。 Binary point:二进制小数点的位置,一.旦决定数据类型,小数点位置是固定的,小数点右边的位数即为表示小数的数据。 例:将数字 -2.75 表示为一个有符号,字长为8,小数部分使用3位的数据,这个数据类型即可描述为fixdt(1,8,3)。由于使用3位二进制表示小数部分,这个数据类型的分辨率就是1/2^3 = 1/8,就是说这个数据类型的最低位改变1时,其实际表示的物理值变化为0.125,这个LSB也即分辨率就是联系真实世界物理值与硬件内部存储值的纽带。 转换方法说明:首先最高位为1说明是有符号数,MSB首位b7为1;最低三位(b0~b2)用来表示小数部分0.75为110;第3到第6位四位数据表示整数部分的值2,二进制数据为0010;整个数字拼接起来为10010110。最后,二进制表示负数时使用补码,还需要对这个结果求补码,保留符号位情况下其余位的值取反之后十1,结果为11101010。使用Constant模块结合Display模块建立如图所示的模型来验证: 在Constant模块的Signal Attribute页面中Output data type中输人fixdt(1 ,8,3), Main页面的Constant Value输人-2. 75。Display 模块的Format选择为binary( Stored Integer),单击仿真后,得到跟上面分析一样的结果。 Simulink常用模块库 1、信号源模块组(Sources) (1)Clock模块(时钟模块) 时钟模块主要用于计时,效果直观 在时钟模块的属性窗口中: (1) Display time:如果该复选框被选中,则该时钟模块在仿真过程中,界面将显示 时间,如果不显示,则可将其输人到工作区中。 (2) Decimation: 默认为10, Decimation的数值可以为任意整数,在仿真过程中,随着时钟不断地更新,其数值不断增加,例如对于10s的仿真,系统Decimation默认为10,则表示系统将以1s、2s、3s…10s依次递增。 (2)Digital Clock模块(数字时钟模块) 在Simulink仿真中,数字时钟模块主要用于离散系统的计时,该模块能够输出保持前一次的值不变。对于其属性窗口: Sample time 表示采样时间,默认值为1秒。 (3)In(输入模块) 为信号的输入端口,但位于子系统中,为子系统增加一个输入端口是连接上层模型和当前层次模型的接口,将父层模型的信号传递到当前模型中来。In模块存在与最顶层时,由于没有父层,其功能类似一个默认输出值为0的常数模块。接合Configuration Parameter对话框中的数据导入功能,还可以预设In模块的输出值。 Port number:In 模块的端口编号。 Icon display:In模块外观上显示的内容,包括:Signal name(信号名)、Port number(端口号)、Port number and signal name(二者兼有)。 Interpolate data:当将Workspace 的数据导入模型时,对没有对应数据点的采样时刻进行线性插值的开关选项。 数据导人需要In模块结合Configuration Parameter 版面中提供的数Data Import/Ex-port功能共同实现。Data Import/ Export页面中存在Input 选项,内容为定义在Base Work-space的数据向量组合[t,u],t表示时间的列向量,u表示对应时间点数据的列向量。定义之后,可以通过In模块将u的数据列导人到模型中来。首先在Configuration Parameter的DataImport/ Export中开启数据导人功能。Data Import/Export页面如图所示。 In模块的Signal Attribute页面: Port Dimension 默认参数“一1”表示继承输入信号的尺寸;填入具体整数n表示输人为n维向量;填入二元整数[m,n]表示输人为mXn的矩阵。 Variable-sizesignal表示数据维数是可变的,可以选择Inherited、Yes、No三个值,Inherited表示继承输人信号的选择,Yes为是,No为否。当使用变大小信号维数时, Port Dimen-sion参数要填写接收信号中维数最大的。 过零检测 支持过零检测的模块: 过零检测的重要性: 在动态系统的运行过程中,状态的不连续经常会发生重要的事件,如当-一个小球与地面发生碰撞时,它的位置就会产生急剧的变化。不连续常常会导致动态系统的显著变化,因此对不连续点进行精确的仿真非常重要,否则会导致仿真得到错误的系统行为。例如仿真碰撞中的小球,如果小球与地面碰撞的时间点发生在仿真时间步内,模型中的小球会在半空中改变方向,这会使研究者得到与物理学上的规律相违背的结论。 为了避免得到错误的结论,使不连续点发生的时刻成为仿真的-一个时间点很重要。对于一个纯粹靠求解器来决定仿真时间的仿真器很难有效地做到上面的要求。 固定步长的求解器在整数倍时间步长的时间点上计算状态变量的值,然而这并不能保证仿真时间点发生在状态不连续的时间点。当然,用户可以通过减小时间步长使状态不连续的时间点成为一个仿真时间点,但是这会减慢仿真速度。 可变步长的求解器可以保证有仿真时间点发生在状态不连续的时间点。它可以动态地改变步长,当状态变量变化慢时增加步长,变化快时减小步长。在不连续点附近,系统状态发生剧烈变化,因此理论上这种求解器可以精确地找到不连续发生的时间点,但是这会增加仿真的时间点,从而使仿真速度变慢。 代数环: 从代数的角度来看,如图所示的模块的解是z= 1,但是大多数的代数环是无法直接看出解的。Algebraic Constraint模块为代数方程等式建模及定义其初始猜想值提供了方便,它约束输入信号F(z)等于零并输出代数状态z,其输出必须能够通过反馈回路影响输入。用户可以为代数环状态提供一个初始猜想值,以提高求解代数环的效率。 一个标量代数环代表一个标量等式或是一个形如 F(2)= 0的约束条件,其中z是环中一个模块的输出,函数F由环路中的另一个反馈回路组成。可将上图所示的含有反馈环的模型改写成用Algebraic Constraint模块创建的模型,其仿真结果不变,如图所示。 创建向量代数环也很容易,在如图所示的向量代数环中可用下面的代数方程描述: 当一个模型包含-一个Algebraic Constraint模块时就会产生-一个代数环,这种约束可能是系统的物理连接的结果,也可能是用户试图为一个微分代数系统(DAE)建模的结果。 为了求解F(z)= 0, Simulink环路求解器会采用弱线性搜索的秩为1的牛顿方法更新偏微分Jacobian矩阵。尽管这种方法很有效,但是如果代数状态z没有一个好的初始估计值,解法器有可能不收敛。 此时用户可以为代数环中的某个连线(对应-一个信号)定义一个初始值,设置的办法有两种:可以通过Algebraic Constraint模块的参数设置;还可以通过在连线上放置IC模块;(初始信号设置模块)来设置。 当一个系统包含代数环时,Simulink 会在每一- 个时间步进行循环求解。如果有可能,环路求解器会采用迭代的办法来求解,因此仿真速度会比较慢。 当一个模型中含有Atomic Subsystem、Enabled Subsystem 或Model模块时,Simulink可以通过模块的参数设置来消除其中一些代数环。对于含Atomic Subsystem Enabled Subsystem模块的模型,可在模块参数设置对话框中选择Minimize algebraic loop occurrences项;对于含Model模块的模型,可在Configuration Parameters 对话框的Model Referencing面板中选择inimize algebraic loop occurrences 项。 Simulink命令代码当采用Simulink代码打开模型时,调用的格式如下: open_system('model.slx') % model.slx 为模型名称simulink3 命令用于打开Simulink模块库 Simulink常用命令库 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |