4.1 Simulink子系统详解

4.1.1 子系统概述

Simulink根据仿真特性将模块的属性分为两种:虚拟模块和非虚拟模块。

非虚拟模块在仿真过程中起到实际的作用,对其进行编辑或者增加删除操作会影响到模型运行和改变模型的结果。

虚拟模块在仿真过程中不起实际作用,主要是为了从图框上进行程序的层次性划分以保持模型的图形界面的整洁性。

4.1.2 Simulink模型的运行顺序

Simulink模型的计算顺序是基于时间采样和信号流向的,即按照时间的顺序执行。 每一个采样点时间,模型中所有模块的状态和输入/输出值都要计算并更新一下,每个模块的输出值都通过信号线连接并传递给下一个模块的输入。系统采样时间由解算器类型和步长共同决定,并且作为Simulink模型仿真的最小粒度。当系统采样时刻到来时,每个模块再根据自身所设定的采样时间方式决定是否在当前这个采样时刻进行计算。

允许用户设定采样时间的模块在其参数对话框中都提供Sample Time这个属性。对于模块的Sample Time,常用的值有:

  • -1:继承输入信号采样时间,若没有输入信号,则继承父层模型采样时间,如果模块无输入并且本身处于顶层模型中,则继承系统解算器的步长。
  • 0:连续采样时间。
  • 非零正数:离散采样时间。
  • Inf:无穷大采样时间,即不采样。
  • [Sampletime,offset]:Sampletime为上述一种,offset为相对于这个采样时刻的时间偏移量。如[0.2,0.01]表示在0.01s、0.21s、0.41s等时刻进行计算。

Display→Blocks→Sorted Executed Order可以显示模块的执行顺序。

标注格式为红色的m:n,m表示模块在模型中执行的优先度,n表示 在同一个采样时刻,模块所处的执行次序号。

4.1.3 各种子系统的特点与功能

1. 虚拟子系统

在执行仿真之前就展开子系统,实际上如同没有建立子系统一样。

2. 非虚拟/原子子系统

非虚拟原子子系统内的模块作为一个单元执行,右击虚拟子系统,在Block Parameter中勾选Treat as atomic unit,即可创建原子子系统。

(1)条件子系统

①使能子系统

在驱动子系统使能端口的输入信号大于零时执行使能子系统。

用户可以通过在虚拟子系统内放置Enable模块的方式来创建使能子系统,并通过Enable模块中的States when enabling参数配置子系统内的模块状态。

此外,如果子系统内部存在Out模块,利用Out输出模块的Output when disabled参数可以把使能子系统的输出端口配置成保持最后一个有效采样时刻的输出或复位为初始值。

②触发子系统

触发子系统只有在驱动子系统触发端口的信号上升沿或下降沿到来时才会执行,触发信号沿方向由Trigger端口模块中的Trigger type参数决定。

③触发使能子系统

同时放置Trigger和enable。

(2)动作子系统

Action子系统必须由If模块或Switch Case模块执行,与这些子系统模块连接的所有Action子系统必须具有相同的采样时间。

用户可以通过在子系统内部放置Action Port模块的方式来创建Action子系统。

(3)选择子系统

①可变子系统:内部包括多个子系统,当某条件成立时执行与之相应的子系统。每个子系统匹配一个变量的值,每次仿真时根据这个变量的值决定内部哪一个子系统处于激活状态。

②可配置子系统:用来代表用户自定义库中的任意模块,只能在用户自定义库中使用,动态表示自定义库中的某一模块。

4.2 Simulink子系统示例

4.2.1 虚拟和非虚拟子系统

右击子系统,选择Block parameters,勾选Treat as atomic unit,子系统即成为原子子系统,子系统图标黑色外框加宽,此时子系统可以整体设置采样时间。

4.2.2 使能子系统

仅在使能信号使能时执行一次。

simin=[0:10;[0 1 1 0 1 1 1 1 1 1 0]]';

4.2.3 函数调用子系统(条件子系统)

这种子系统只能被函数调用信号所触发。

函数调用子系统的执行不是由Simulink引擎直接控制的,而是由调用它的S函数通过mdlOutputs/mdlUpdates子方法来决定的。

S函数构成的模块具有两个函数调用类型的输出,根据输入信号的奇偶值分别调用两个函数调用子系统,两个函数调用子系统的执行时间不重合,被Merge模块合并到一个输出,输出为当前仿真时刻处于激活状态的子系统输出。

函数调用子系统1的内部为常数输出,函数调用子系统2的内部为正弦波输出。

4.2.4 While子系统(动作子系统)

(1)do-while

在这个模式下,While Iterator只有一个输入,即while条件输入,它必须在while子系统内。

在每个采样时间内,While Iterator模块会执行一次子系统内的所有模块,然后检查while条件输入是否为真,如果输入为真,则While Iterator模块再执行一次子系统内的所有模块,只要while条件输入为真,而且循环次数小于或等于While Iterator模块对话框中的Maximum number of iterations参数值时,这个循环过程会一直执行。

(2)while

在这个循环模式下,while Iterator模块有2个输入:while条件输入和初始条件输入(IC),初始条件信号必须在while子系统外提供。

在仿真开始时,如果IC输入为真,While Iterator模块会执行一次子系统内的所有模块,然后检查while条件输入是否为真,如果输入为真,则While Iterator模块再执行一次子系统内的所有模块,只要while条件输入为真,而且循环次数小于或等于While Iterator模块对话框中的Maximum number of iterations参数值时,这个循环过程会一直执行。如果在仿真时间开始时IC输入为假,那么在该采样时间内While Iterator模块不执行子系统中的内容。

注意:当把While Iterator模块放置到子系统中时,在给定条件为真的情况下,While子系统中所有模块会在当前采样时间反复执行子系统中的内容,即把多个迭代在一个采样步长内进行处理。如果子系统不是原子子系统,那么把While Iterator模块放置到子系统中会使该子系统自动成为原子子系统。

上面模型的效果等价于以下代码:

max_sum=100;
max_iterations=1000;
sum=0;
iteration_number=0;
cond=(max_sum>0);
while(cond~=0)
iteration_number=iteration_number+1;
sum=sum+iteration_number;
if(sum>max_sum || iteration_number>max_iterations)
cond=0;
end
end

也等于以下简化的代码:

for i=1:1000
sum_i=sum(1:i);
if(sum_i>100)
break;
end
end

4.2.5 可变子系统(选择子系统)

可变子系统内装了多个child子系统,其输入/输出端口不需要连线,每个child子系统都有一个对应的变量或表达式,某个child子系统的变量或表达式值为真时此子系统就被激活。Simulink的采样时刻到来时最多只有一个child子系统被激活,可以通过变量方便地控制其中某一个child子系统的执行。

右击子系统,选择Block parameters(subsystem)。

左侧排列5个按钮,第一个用来在可变子系统内建立child子系统,第二个用来在可变子系统内建立模型选择框,第三个用来编辑激活child子系统的条件,第四个用来打开选中的child子系统,第五个用来更新信息列表。

右侧是一个列表框,第二列Variant control表示Condition的Simulink.Variant对象,其内部包含一个判断条件condition,即是第三列参数,由用户指定一个逻辑表达式,当条件满足时,此条件所对应的child子系统会被激活。

在工作区输入sel=2;则第二个child子系统被激活。第一个子系统设置增益2,第二个子系统设置增益3,仿真结果如下。

4.2.6 可配置子系统(选择子系统)

可配置子系统只能在用户自定义的模块库中使用,可配置子系统的优点在于设计者可以任意切换子系统的内部模块,快速比较出那种组合会满足系统设计需求。

Simulink仿真入门到精通(四) Simulink子系统的更多相关文章

  1. Simulink仿真入门到精通(十九) 总结回顾&自我练习

    从2019年12月27到2020年2月12日,学习了Simulink仿真及代码生成技术入门到精通,历时17天. 学习的比较粗糙,有一些地方还没理解透彻,全书梳理总结: Simulink的基础模块已基本 ...

  2. Simulink仿真入门到精通(十四) Simulink自定义环境

    14.1 Simulink环境自定义功能 sl_sustomization.m函数是Simulink提供给用户使用MATLAB语言自定义Simulink标准人机界面的函数机制.若sl_sustomiz ...

  3. Simulink仿真入门到精通(十八) TLC语言

    TLC(Target Language Compiler)是一种为转换为目标语言而存在的额解释性语言,其目的就是将模型中编译出来的rtw文件转换为目标代码(C/C++等).与M语言类似,既可以写成脚本 ...

  4. Simulink仿真入门到精通(十七) Simulink代码生成技术详解

    17.1 基于模型的设计 基于模型设计是一种流程,较之传统软件开发流程而言,使开发者能够更快捷.更高效地进行开发.适用范围包括汽车电子信号处理.控制系统.通信行业和半导体行业. V字模型开发流程整体描 ...

  5. Simulink仿真入门到精通(十一) 模块的封装

    当用户编写了自定义的S函数或者使用Simulink标准库中的模块搭建子系统后,可以通过封装为其设计显示外观,追加参数对话框. 封装是构建一个以对话框为接口的交互界面的过程,它将复杂的模块逻辑关系隐藏起 ...

  6. Simulink仿真入门到精通(五) Simulink模型的仿真

    5.1 模型的配置仿真 由各种模块所构建的可视化逻辑连接,只是模型的外在表现,模型仿真的核心驱动器是被称作解算器(Solver)的组件,相当于Simulink仿真过程的心脏,驱动着模型仿真,它在每一个 ...

  7. Simulink仿真入门到精通(三) Simulink信号

    3.1 Simulink信号概述 所谓信号,表示一种随着时间而变化的量,在时间轴上的采样时刻都对应有数值. 信号在Simulink中是相当重要的组成部分,有线(line)表示,在模型中穿针引线地将各模 ...

  8. Simulink仿真入门到精通(二) Simulink模块

    2.1 Simulink模块的组成要素 用户构建系统模型时无需直接面对成千上万行的代码,而是通过模块化图形界面以模块化的方式构建,能够使理解变得容易,让大脑减负.通过层次化模块分布将系统功能模块化,而 ...

  9. Simulink仿真入门到精通(八) M语言对Simulink模型的自动化操作及配置

    8.1 M语言控制模型的仿真 M语言与Simulink结合的方式: 在Simulink模型或模块中使用回调函数 在M语言中调用与模型相关的命令,控制模型的建立,设置模块的属性,增删信号线,以及运行模型 ...

随机推荐

  1. python的可迭代对象

    今日所得 迭代器 可迭代对象 迭代器对象 for循环内部原理 生成器 生成器表达式 内会函数 面对过程编程 迭代器 迭代就是指更新换代的过程,要重复进行,而且每次的迭代都必须基于上一次的结果. 我们使 ...

  2. 框架之MyBatis

    什么是框架,简单的来说框架就是一个程序的半成品,而我们就是的工作就是根据我们的工作需要将其完善.MyBatis框架的作用就是将我们使用JDBC操作数据库的过程移交给MyBatis,让它来帮我们完成这些 ...

  3. FFT算法的verilog实现

    首先需要明白傅里叶相关的基本知识:还是 借用这位英雄的文章,真心写的让人佩服不已http://blog.jobbole.com/70549/ 然后是卷积的理解http://blog.csdn.net/ ...

  4. 三步教你实现MyEclipse的debug远程调试

    MyEclipse远程调试程序是个神奇的东西,有时一个项目本地运行没问题可放到服务器上,同样的条件就是结果不一样:有时服务器上工程出点问题需要远程调测.于是就灰常想看一下程序在远程运行时候的状态,希望 ...

  5. sm4算法(附源码、测试代码)

    from:http://blog.csdn.net/mao0514/article/details/52930944 SM4是我们自己国家的一个分组密码算法,是国家密码管理局于2012年发布的.网址戳 ...

  6. S2SH项目实现分页功能

    javaWEB项目实现分页的方法很多,网上也有很多列子,最近工作中S2SH框架项目中需要一个分页的功能,查看了很多用一下方式实现,功能思路很清晰,觉得是很好的一种实现方法,记录下便多学习. 刚开始得到 ...

  7. OA|开放获取期刊|掠夺性期刊|DOI|ORCID|图书馆服务|零次文献|信息素质|

    OA|开放获取期刊|掠夺性期刊|DOI|ORCID|图书馆服务|零次文献| 信息检索 信息素质是什么? 信息素质是指一个人的信息需求.信息意识.信息知识.信息道德.信息能力方面的基本素质. Some ...

  8. 签名旧版的pom文件

    <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven ...

  9. 从TP-Link到雷蛇,纷纷入局智能手机业到底想干什么?

    ​   "眼看他起朱楼,眼看他宴宾客,眼看他楼塌了",这句形容世态炎凉的话其实与智能手机市场更为相像.诺基亚的辉煌与没落.黑莓的强势与消声无迹.摩托罗拉的数次易手.小米的横空出世与 ...

  10. 杂记:VMware中为mac虚拟机扩容

    之前在VMware中安装Mac虚拟机时,硬盘选的是默认的40G,后来用的过程中随着软件的安装,特别是安装完Xcode和QT5.9之后,可用空间只剩不到3G,每次开机之后都会提醒空间不足,需要清理空间, ...