教学工作的资源分享

SIMULINK基础(全)分析

学校教务系统

学校教务系统

1

SIMULINK基础2概述

在工程实际中,控制系统结构往往很复杂,如果不借助专用的系统建模软件,很难将一个控制系统的复杂模型准确地输入计算机,进一步分析和仿真。

1990年,Math Works软件公司为MATLAB提供了一种新的控制系统模型图输入和仿真工具,命名为SIMULAB。 该工具很快得到控制工程学界的广泛认可,仿真软件进入了建模图形的组成阶段。 但是,由于其名字与当时有名的SIMULA相似,1992年正式改名为SIMULINK。 SIMULINK的出现,给控制系统的分析和设计带来了福音。 此软件的名称显示了两个主要功能:模拟(Simu )和链接(Link )连接。 这意味着您可以使用鼠标在模型窗口中绘制所需的控制系统模型,然后使用SIMULINK提供的功能模拟和分析系统。 3SIMULINK个人资料一、什么是SIMULINK

SIMULINK是MATLAB软件的扩展,是实现动态系统建模和仿真的软件包。 它与MATLAB语言的主要区别在于与用户的界面是基于Windows的建模图形输入。 结果,用户可以在系统模型的构建上投入更多的精力,而不是语言的编程。 模型化的图形输入是指SIMULINK提供了按功能分类的基本系统模块。 用户只需知道模块的输入输出和模块的功能,无需调查模块内部是如何实现的,调用并连接这些基本模块就可以构成必要的系统模型,并通过. mdl文件进行访问。 进行模拟和分析。 4

主要内容

Simulink建模基础知识Simulink建模与仿真线性/非线性系统分析与仿真子系统和模块封装技术5SIMULINK简介2、Simulink启动

直接在MATLAB命令窗口中键入Simulink,然后返回; 单击MATLAB工具栏上的Simulink图标; 从MATLAB菜单中选择“文件”-“新建”-“模型”。 三. SIMULINK模块库介绍了常用的SIMILINK模块库,根据功能可分为以下几类: continuous (连续模块(Discrete )离散模块)。

user-defined function (函数模块(Lookup Tables )查找表模块)-Discontinuities (非线性模块) ) ports subsystem-signal real

1、 连续模块线性空间系统模型(线性传递函数模型) transportdelay :输入信号延迟可变时间再输出memory :积分步骤的延迟7

2、离散模块。

- Discrete-time Integrator :离散时间积分器- Discrete Filter :离散滤波器

- Discrete State-Space :离散状态空间系统模型- Discrete Transfer-Fcn :离散传递函数模型- Discrete Zero-Pole :由零极点表示的离散传递函数模型- first-ororst : 1个采样周期延迟83,用User-defined Function (函数模块(fcn )自定义的函数)式进行运算

- MATLAB fcn :使用MATLAB中现有的函数进行运算s-function :使用调用自制s函数的程序进行运算9

4、产生查找表(look-uptable )2-d )输入信号的查找表10,该查找表2-d产生查找表模块(look-uptable )输入信号

5、Discontinuities (非线性模块(- Saturation ) )使输出饱和,以便输出超过某一值时达到饱和。 (- Relay )滞后比较器,限制输出值在某个范围内变化。 dead zone (死区,某个范围内的输入的输出值为0(backlash:滞后回路模块) (- Rate limiter:变化率滑动模式模块11

6、信号路由(demux ) (多路输出,将多个单输入转换为单输出) -开关选择,当第二输入大于阈值时

7、Math (数学模块)加减法

Gain :比例运算Dot Product :点乘法- MinMax :最大值运算Abs :绝对值- Sign :符号函数Product :乘法运算

Math Function :指数、对数、求平方、开根等常用数学函数trigonometric function :包含三角函数、正弦、余弦、正切等complextomagnitudeitude-Angle to Complex:由幅值和相角输入合成复数输出– Complex to Real-Imag:由复数输入转为实部和虚部输出– Real-Imag to Complex:由实部和虚部输入合成复数输出138、Sinks(接收器模块)– Scope:示波器

– XY Graph:显示二维图形

– To Workspace:将输出写入MATLAB的工作空间– To File(.mat):将输出写入数据文件– Terminator:连接到没有连接的输出端149、Sources(输入源模块)– Constant:常数信号– Clock:时钟信号

– From Workspace:来自MATLAB的工作空间– From File(.mat):来自数据文件– Pulse Generator:脉冲发生器– Repeating Sequence:重复信号– Signal Generator:信号发生器,可以产生正弦、方波、锯齿波及随意波– Sine Wave:正弦波信号

– Step:阶跃波信号15

10、Ports & Subsystem(端口&子系统模块)– In1:输入端– Out1:输出端

– SubSystem:建立新的封装(Mask)功能模块16

11、Logic and Bit operations(逻辑&位操作)Compare to constant :与常数比较Compare to zero:与零比较logical operator:逻辑操作算子detect change:监测变化detect decrease:监测减少17SIMULINK仿真的运行启动仿真

▪ 设置仿真参数和选择解法器之后,就可以启动仿真而运行。

▪ 选择Simulink菜单下的start选项来启动仿真,如果模型中有些参数没有定义,则会出现错误信息提示框。如果一切设置无误,则开始仿真运行。▪ 除了直接在SIMULINK环境下启动仿真外,还可以在MATLAB命令窗口中通过函数进行,格式如下

▪ [t,x,y]=sim(‘模型文件名’, [to tf], simset(‘参数1’,参数值1,‘参数2’,参数值2, …))▪ 其中to为仿真起始时间,tf为仿真终止时间。[t,x,y]为返回值,t为返回的时间向量值,x为返回的状态值,y为返回的输出向量值。– simset定义了仿真参数,包括以下一些主要参数:18

AbsTol:默认值为1e-6设定绝对误差范围。

Decimation:默认值为1,决定隔多少个点返回状态和输出值。Solver:解法器的选择MaxRows:默认值为0,表示不限制。若为大于零的值,则表示限制输出和状态的规模,使其最大行数等于该数值。

InitialState:一个向量值,用于设定初始状态。FixedStep:用一个正数表示步阶的大小,仅用于固定步长模式。MaxStep:默认值为auto。用于变步长模式,表示最大的步阶大小。▪ 如果知道模型文件名称,可以用以下命令得到该模型的仿真参数:simget(‘模型文件名’)19

Simulink 建模方法简介

考虑图中给出的典型非线性反馈系统框图,其中控制器为 PI 控制器,其模型为:20Simulink 是解决这样问题的最有效的方法,可以用下面的步骤搭建此系统的仿真模型:①打开模型编辑窗口;

首先打开一个模型编辑窗口,这可以单击 Simulink 工具栏中新模型的图标或选择菜单项实现。②复制相关模块;

将相关的模块组中的模块拖动到此窗口中③修改模块参数;④模块连接;

⑤系统仿真研究;

c5mblk3.mdl21

5.2.2 仿真算法与控制参数选择

选中 Simulink 模型窗口的 Simulation 菜单项,其中的 Configuration Parameters 菜单项允许用户设置 仿真控制参数。22

仿真算法与控制参数选择1、Solver页

▪ 此页可以进行的设置有:选择仿真开始和结束的时间;选择解法器,并设定它的参数;

▪ 仿真时间:注意这里的时间概念与真实的时间并不一样,只是计算机仿真中对时间的一种表示,比如10秒的仿真时间,如果采样步长定为0.1,则需要执行100步,若把步长减小,则采样点数增加,那么实际的执行时间就会增加。一般仿真开始时间设为0,而结束时间视不同的因素而选择。总的说来,执行一次仿真要耗费的时间依赖于很多因素,包括模型的复杂程度、解法器及其步长的选择、计算机时钟的速度等等。▪ 仿真精度控制有 Relative Tolerance 选项、Absolute Tolerance 等,其中相对误差限的默认值设置为 1e-3,该值在实际仿真中显得偏大,建

议选择 1e-6 和 1e-7。值得指出的是,由于采用的变步长仿真算法,所以将误差限设置到这样小的值也不会增加太大的运算量。23

仿真算法与控制参数选择1、Solver页

▪ 仿真步长模式:用户在Type后面的第一个下拉选项框中指定仿真的步长选取方式,可供选择的有Variable-step(变步长)和Fixed-step(固定步长)方式。变步长模式可以在仿真的过程中改变步长,提供误差控制和过零检测。固定步长模式在仿真过程中提供固定的步长,不提供误差控制和过零检测。

▪ 在仿真时还可以选定最大允许的步长和最小允许的步长,这可以通过

填写 Max step size 栏目和 Min step size 的值来实现,如果变步长选择的步长超过这个限制则将弹出警告对话框。▪ 用户还可以在solver下拉选项框中选择对应模式下仿真所采用的算法。24

(1)ode45:缺省值,四/五阶龙格-库塔法,适用于大多数连续或离散系统,但不适用于刚性(stiff)系统。它是单步解法器,也就是,在计算y(tn)时,它仅需要最近处理时刻的结果y(tn-1)。一般来说,面对一个仿真问题最好是首先试试ode45。(2)ode23:二/三阶龙格-库塔法,它在误差限要求不高和求解的问题不太难的情况下,可能会比ode45更有效。也是一个单步解法器。

(3)ode113:是一种阶数可变的解法器,它在误差容许要求严格的情况下通常比ode45有效。ode113是一种多步解法器,也就是在计算当前时刻输出时,它需要以前多个时刻的解。

职教二十条

职教二十条

(4)ode15s:是一种基于数字微分公式的解法器(NDFs)。也是一种多步解法器。适用于刚性系统,当用户估计要解决的问题是比较困难的,或者不能使用ode45,或者即使使用效果也不好,就可以用ode15s。变步长模式解法器有:ode45,ode23,ode113,ode15s,ode23s,ode23t,ode23tb, discrete。25(5)ode23s:它是一种单步解法器,专门应用于刚性系统,在弱误差允许下的效果好于ode15s。它能解决某些ode15s所不能有效解决的stiff问题。

(6)ode23t:是梯形规则的一种自由插值实现。这种解法器适用于求解适度stiff的问题而用户又需要一个无数字振荡的解法器的情况。(7)ode23tb:是TR-BDF2的一种实现, TR-BDF2 是具有两个阶段的隐式龙格-库塔公式。(8)discrete:当Simulink检查到模型没有连续状态时使用它。26(1)ode5:缺省值,是ode45的固定步长版本,适用于大多数连续或离散系统,不适用于刚性系统。

(2)ode4:四阶龙格-库塔法,具有一定的计算精度。(3)ode3:固定步长的二/三阶龙格-库塔法。(4)ode2:改进的欧拉法。(5)ode1:欧拉法。

固定步长模式解法器有:ode5,ode4,ode3,ode2,ode127

2、Data import/export页

▪ 主要用来设置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用来说明返回数据的格式,包括矩阵array、结构struct及带时间的结构struct with time。283、Diagnostics页

▪ 此页主要列举了一些常见的事件类型,以及当SIMULINK检查到这些事件时给予的处理。29

非线性微分方程的框图求解 方程,其数学表达式为:31

这样的微分方程在 Simulink 下也可以搭建相应的仿真模型,从而进行仿真。如下图所示:simTest132

这样用下面的语句就可以绘制出各个状态变量的时间响应曲线,如图33

comet3(yout(:,1),yout(:,2),yout(:,3))若以x1(t),x2(t),x3(t)分别为三个坐标轴,则可以绘制出三维状态空间曲线34

直流电机拖动系统c4mex2.mdl1Out1

0.01s+10.0044

Transfer Fcn80.01s+11

Transfer Fcn70.17s+10.085s

Transfer Fcn60.01s+10.1

Transfer Fcn50.01s+10.1

Transfer Fcn40.15s+10.051s

Transfer Fcn30.0067s+17 0

Transfer Fcn20.210.15s+1

Transfer Fcn1130s

Step Transfer Fcn0.212Gain35

终止仿真时间为336

stairs(tout,yout)simTest237

Simulink 的logic and bit operations中提供了“逻辑算子”Logic operator模块,可以搭建数字逻辑电路

subplot(311),plot(tout,yout(:,1)),axis([0,10,-2,2]);subplot(312),plot(tout,yout(:,2)),axis([0,10,-2,2]);subplot(313),plot(tout,yout(:,3)),axis([0,10,-2,2]);simTest3 ?????? 38

功能模块的基本操作

模块库中的模块可以直接用鼠标进行拖曳(选中模块,按住鼠标左键不放)而放到模型窗口中进行处理。▪ 在模型窗口中,选中模块,则其4个角会出现黑色标记。此时可以对模块进行以下的基本操作。– 移动:选中模块,按住鼠标左键将其拖曳到所需的位置即可。若要脱离线而移动,可按住shift键,再进行拖曳– 复制:选中模块,然后按住鼠标右键进行拖曳即可复制同样的一个功能模块。39

– 删除:选中模块,按Delete键即可。若要删除多个模块,可以同时按住Shift键,再用鼠标选中多个模块,按Delete键即可。也可以用鼠标选取某区域,再按Delete键就可以把该区域中的所有模块和线等全部删除。– 转向:为了能够顺序连接功能模块的输入和输出端,功能模块有时需要转向。在菜单Format中选择Flip Block旋转180度,选择Rotate Block顺时针或逆时针旋转90度。

– 改变大小:选中模块,对模块出现的4个黑色标记进行拖曳即可。– 模块命名:先用鼠标在需要更改的名称上单击一下,然后直接更改。名称在功能模块上的位置也可以变换180度,可以用Format菜单中的Flip Name来实现,也可以直接通过鼠标进行拖曳。Hide Name可以隐藏模块名称。– 颜色设定:Format菜单中的 Foreground Color 可以改变模块的前景颜色, Background Color可以改变模块的背景颜色;而模型窗口的颜色可以通过Screen Color来改变。40

– 参数设定:用鼠标双击模块,就可以进入模块的参数设定窗口,从而对模块进行参数设定。参数设定窗口包含了该模块的基本功能帮助,为获得更详尽的帮助,可以点击其上的help按钮。通过对模块的参数设定,就可以获得需要的功能模块。

– 属性设定:选中模块,打开Edit菜单的Block Properties可以对模块进行属性设定。包括Description属性、 Priority优先级属性、Tag属性。– 模块的输入输出信号:模块处理的信号包括标量信号和向量信号;标量信号是一种单一信号,而向量信号为复合信号,是多个信号的集合,它对应着系统中几条连线的合成。缺省情况下,大多数模块的输出都为标量信号,对于输入信号,模块都具有一种“智能”的识别功能,能自动进行匹配。某些模块通过对参数的设定,可以使模块输出向量信号。例exp6_2.mdl通过对参数的设定,可以使模块输出向量信号。42

向量化输入的简便之处

a=0.2,b=0.2,c=5.7Fn1: b+(u[1]-c)*u[3]Fn2: u[1]+a*u[2]Fn3: -u[2]-u[3]simTest420.mdlFn模块中输入信号记u,如果为向量,记u[i]。这样建模不易出错,便于维护.plot( tout, yout(:,1), '*r', tout, yout(:,2), ':b', tout, yout(:,3), 'g')comet3(yout(:,1),yout(:,2),yout(:,3))test4.m

simTest421.mdl44向量化输入的简便之处1 22

2 1 2 1 ( 1)x xx x x x    

=         − − −避免报错:在Diagnostics标签中将Unconnected block outport的Action设置成None。或者连接信号终结环节(Terminator)

simTest50.mdl simTest5.mdlPI调节器是一种线性控制器c5mtimv.mdl作业4

Kp=200; Ki=10; %设置控制器参数plot(tout,yout) %仿真并绘图49非线性环节与查表环节

在正弦信号激励下,经过几个常用非线性模块,磁滞回环、死区、饱和等观察信号的曲线形状c1=0.5

subplot(221),plot(tout,yout(:,1))subplot(222),plot(tout,yout(:,2))subplot(223),plot(tout,yout(:,3))subplot(224),plot(tout,yout(:,4))simTest6饱和非线性:当输入信号超出其线性范围后,输出信号不再随输入信号变化而保持恒定。死区非线性:当输入信号在零位附近变化时,系统没有输出。

信息化教育

信息化教育

磁滞回环非线性51多种非线性组合情况

[-4 -3 -1 1 3 4][-2,-2,0,0,2,2]Look up Table模块 如图知转折点坐标:

(-4,-2),(-3,-2),(-1,0),(1,0),(3,2),(4,2)52前已构造

任何单值非线性函数均可以采用这种方法来建立或者近似figure(1), plot(tout,yout(:,1));figure(2), plot(tout,yout(:,2));figure(3), plot(tout,yout(:,3))simTest853

二维、多维表格查询二维函数

构造较稀疏的X-Y平面上的网格点,并可以计算出这些点上的高度值

xx=linspace(-3,3,15);yy=linspace(-2,2,15);[x,y]=meshgrid(xx,yy);z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);mesh(xx,yy,z);axis([-3,3,-2,2,-0.6,1.2])simTest9

Test9

plot3(yout(:,1),yout(:,2),yout(:,3),'.')54输出模块库

示波器输出:无需附加命令得到仿真结果,在默认情况下结果不返回工作空间,无法利用MATLAB强大的绘图功能。

直接数据显示:Display,以数字显示的形式连到其上的信号。输出端子:在仿真结束后在工作空间自动生成两个变量tout,yout返回工作空间:To workspace模块直接连到要观测的信号上就可将该信号返回工作空间进行后处理,用户可以自由选择想显示的Matlab变量名,自动生成时间变量仍为tout.文件输出:将结果直接存到数据文件中55

每路信号允许连接多个输出模块

plot(tout,simout.signals.values))simout.signals.values56

输出模块应用举例1

与时间有关的变量输出显示方法

在控制系统分析中,经常需要获得某个信号的某些时域指标,如ITAE指标ISE指标

例如:给定系统

求系统的ITAE指标与ISE指标57

plot(tout,yout(:,2))plot(tout,yout(:,3))plot(tout,yout(:,1))设置仿真时间为3058

输出模块应用举例2

STOP模块在仿真过程控制中的应用:在输入信号非0时自动终止仿真过程。

plot(tout,yout(:,2))plot(tout,yout(:,3))plot(tout,yout(:,1))

进入误差带0.02的时间大于10秒则终止 subplot(311);plot(tout,yout(:,1));subplot(312);plot(tout,yout(:,2));subplot(313);plot(tout,yout(:,3));2021年10月26日星期二

Simulink仿真实例

例题8 建立一个积分器,输入为1,初始条件为-50,如果输出超过20,则重置为-100。simtestN3.m

Simulink仿真实例

例题9,重置弹力球。一个弹力球以15m/s的速度从距水平设置10m的高度抛向空中,球的弹力为0.8,当球到达球面时,重新设置其初始速度为0.8x,x是重置时刻球的速度,即积分器的状态。球的抛物线运动满足下列公式h v g t h mv v g t v m s0.5 , 10

, 15 /02

0 0

= = − == − =Simulink仿真实例v0vg

其中,V为球的速度, V0 为球的初始速度,g为重力加速度, h 为球从起始位置开始的高度, h0 为球的初始高度,即球距地面的高度,因此球距地面的实际高度为 h+h0 。hh0

68

子系统的封装

自定义功能模块有两种方法,一种方法是采用Ports & subsystems 功能模块,利用其编辑区设计组合新的功能模块;另一种方法是将现有的多个功能模块组合起来,形成新的功能模块。对于很大的SIMULINK模型,通过自定义功能模块可以简化图形,减少功能模块的个数,有利于模型的分层构建。一、方法1 exp6_5.mdl

▪ 将Ports & subsystems模块库中的Subsystem功能模块复制到打开的模型窗口中,双击Subsystem功能模块,进入自定义功能模块窗口,从而可以利用已有的基本功能模块设计出新的功能模块。二、方法2▪ 在模型窗口中建立所定义功能模块的子模块。

▪ 用鼠标将这些需要组合的功能模块框住,然后选择Edit菜单下的Create Subsystem即可。69

模块的封装技术

上面提到的两种方法都只是创建一个功能模块而已,如果要命名该自定义功能模块、对功能模块进行说明、选定模块外观、设定输入数据窗口,则需要对其进行封装处理。封装模块(masking):将其对应的子系统内部结构隐藏起来以便访问该模块时,只出现一个参数设置对话框,将模块中所需要的参数用这个对话框来输入其实Simulink中大多数的模块都是由更底层的模块封装起来的,例如传递函数模块等等

70

模块的封装技术

三、自定义功能模块的封装▪ 举例:▪ c5msub2.mdl

– 对于新建Subsystem功能模块,打开Edit菜单中的Mask Subsystem– 选中Subsystem功能模块,再打开Edit菜单中的Edit Mask进入mask的编辑窗口,可以看出有4个标签页。» Icon:设定功能模块的外观

» Parameters: 参数页,设定输入数据窗口» Initialization:编辑程序来执行特定的操作» Documentation:设计该功能模块的文字说明。71SIMULINK自定义功能模块1、Icon标签页

▪ 此页最重要的部分是Drawing Commands,在该区域内可以用disp指令设定功能模块的文字名称,用plot指令画线,用dpoly指令写传递函数。▪ 注意,尽管这些命令在名字上和以前讲的MATLAB函数相同,但它们在功能上却不完全相同,因此不能随便套用以前所讲的格式。– disp(‘text’)可以在功能模块上显示设定的文字内容。disp(‘text1\ntext2’)分行显示文字text1和text2

– plot([x1 x2 … xn],[y1 y2 … yn])指令会在功能模块上画出由[x1 y1]经[x2 y2]经[x3 y3] … 直到[xn,yn]为止的直线。功能模块的左下角会根据目前的坐标刻度被正规化为[0,0],右上角则会依据目前的坐标刻度被正规化为[1,1]。– dpoly(num,den):按s次数的降幂排序,在功能模块上显示连续的传递函数。– dpoly(num,den,’z’):按z次数的降幂排序,在功能模块上显示离散的传递函数。72

SIMULINK自定义功能模块1、Icon标签页

plot(cos(0:0.1:2*pi),sin(0:.1:2*pi)) %绘图disp('PID\nController') %文字标注image(imread('b747.jpg')) %读入图片73SIMULINK自定义功能模块

▪ 用户还可以设置一些参数来控制图标的属性,

– Icon frame:Visible 显示外框线;Invisible:隐藏外框线。

– Icon Transparency:Opaque 隐藏输入输出的标签;Transparent:显示输入输出的标签。– Icon units:选择像素点,图标大小不随模块大小变化,选择自动定标,图标充满整个模块,选择归一化,绘图比例设置在0和1之间。– Icon Rotation:fixed,图标不随模块一起旋转或翻转。Rotated,图标随模块一起旋转或翻转2.Parameters

▪ 此页主要用来设计输入提示(prompt)以及对应的变量名称(variable)。在prompt栏上输入变量的含义,其内容会显示在输入提示中。而variable是仿真要用到的变量,如果要增加新的项目,可以点击左边的导航栏。添加参数类型 参数提示信息 参数名称,用于仿真参数类型为

popup

编辑popup的参数选项76

SIMULINK自定义功能模块

3. Initialization标签页

◼ 如果配合在initialization commands内编辑程序,可以发挥功能模块的功能来执行特定的操作。4、Documentation标签页

◼ 此页主要用来针对完成的功能模块来编写相应的说明文字和Help。◼ 在mask description中输入的文字,会出现在参数窗口的说明部分。◼ 在mask help中输入的文字则会显示在单击参数窗口中的help按钮后浏览器所加载的HTML文件中。◼ Mask type:在此处输入的文字作为封装模块的标注性说明5.4.1 子系统概念及构成方法

模块经过封装后:(b)封装后模块

C5mpidm.mdlS-函数的基本结构S-函数的基本结构用MATLAB编写S-函数举例

如果输入信号分别为sint和cost加时钟信号

A=[-2.25 -5 -1.25 -0.5;2.25 -4.25 -1.25 -0.25;0.25 -0.5 -1.25 -1;1.25 -1.75 -0.25 -0.75];B=[4 6;2 4;2 2;0 2];C=[0 0 0 1;0 2 0 2];D=zeros(2,2);

输出曲线:plot(tout,yout(:,1:2))状态曲线: plot(tout,yout(:,3:6))前2列为输出

后4列为状态用S-函数实现

User-defined functions库中的模块

S-Function Examples 选中M-file S-functions选中Level-1 M-file选中M-file S-function 编写模板M-file S-function 编写模板用模板定义S-函数文件

mystate.m附加参数A,B,C,D

S-函数文件mystate.m定义连续、离散状态,输入输出个数、输出是否与输入有关、采样周期个数初始状态、采样周期矩阵连续状态更新计算输出

选用s-function模块输入S-函数文件名附加参数

Mystateexp.mdl

A=[-2.25 -5 -1.25 -0.5;2.25 -4.25 -1.25 -0.25;0.25 -0.5 -1.25 -1;1.25 -1.75 -0.25 -0.75];B=[4 6;2 4;2 2;0 2];C=[0 0 0 1;0 2 0 2];D=zeros(2,2);

输出曲线:plot(tout,yout(:,1:2))状态曲线: plot(tout,yout(:,3:6))本章要点小结

随机看看

NEW ARTICLE

标签

Tag