Matlab simulink建模与仿真 第十一章(端口及子系统库)【上】

参考视频:simulink1.1simulink简介_哔哩哔哩_bilibili

一、端口及子系统库中的模块概览

注:In模块、Out模块和Subsystem模块在第二章中均有介绍,本章不再赘述;Subsystem Examples子系统实例模块也不进行介绍。

二、使能及其子模块

1、Enabled Subsystem使能子系统

(1)与普通子系统不同的是,使能子系统多出一个使能端口(相应地,使能子系统内部会多出一个使能模块),该端口的输入信号(后续称为使能信号)决定使能子系统是使能还是失能,当使能信号大于0时子系统使能,否则子系统失能。

(2)使能端口的输入信号可以是标量,也可以是向量(不能是矩阵),当输入为向量时,只要向量中有非零元素,那么使能子系统将使能。

(3)如下一图所示,使能子系统的使能端口接一个方波脉冲,当方波发生器的输出不为0时,使能子系统使能,使能子系统的输入经过子系统的传递函数模块后正常输出(使能子系统的内部结构如下二图所示),当方波发生器的输出为0是,使能子系统失能,输出维持在失能前最后一刻的水平。

2、Enable使能模块

(1)使能模块只能搭配子系统模块使用,在普通子系统模块中添加使能模块后,该普通子系统将会变成使能子系统模块,相应地,其外部也会多出一个使能端口。

(2)当使能子系统失能后,其输出会维持在失能前最后一刻的水平,此后如果使能子系统再次使能,该时刻的输出有两种情况:

①如果使能模块的"States when enabling"(启用时状态)配置为held,那么使能一刻的输出将和失能前最后一刻的输出相同。

②如果使能模块的"States when enabling"(启用时状态)配置为reset,那么使能一刻的输出将置为0。

三、触发及其子系统

1、Triggered Subsystem触发子系统

(1)与普通子系统不同的是,触发子系统多出一个触发端口(相应地,触发子系统内部会多出一个触发模块),该端口每来一个触发信号,触发子系统便会工作一次,当没有触发信号后,触发子系统的输出与上一时刻的水平相同。

(2)如下一图所示,触发子系统的触发端口接一个方波脉冲,触发子系统的触发方式为上升沿触发,当方波发生器的输出由0跳变为1时,触发子系统工作,触发子系统的输入经过离散微分模块后正常输出(触发子系统的内部结构如下二图所示),方波发生器的输出没有上升沿时,触发子系统不工作,其输出维持在上次工作时的水平。

(3)需要注意的是,触发子系统中不能包含连续模块,如积分模块。

2、Trigger触发模块

(1)触发模块只能搭配子系统模块使用,在普通子系统模块中添加触发模块后,该普通子系统将会变成触发子系统模块,相应地,其外部也会多出一个触发端口。

(2)双击触发模块,可以配置触发方式,触发方式可以是上升沿触发(rising)、下降沿触发(falling)、跳变触发(either)和函数调用触发(function-call)四种。

四、微型子系统

1、Atomic Subsystem微型子系统概述

子系统分为虚拟子系统和非虚拟子系统,前面提及的普通子系统属于虚拟子系统,而这里的微型子系统则是非虚拟子系统,它可以看作独立的系统,有独立参与运算的能力,而普通的子系统则不行,不过在实际应用中,二者的差别并不大,一般使用普通的子系统足矣。

2、示例------数据选择器

本例实现的是一个数据选择器。

五、代码重用子系统

1、CodeReuseSubsystem代码重用子系统概述

代码重用子系统也属于非虚拟子系统,其用法和微型子系统十分相似。

2、示例------编码器

(1)本例实现的是十进制数转换为BCD码(非优先编码器),其真值表如下图所示。

(2)将上述真值表转换为模型,如下图所示。

六、模型及函数调用发生器模块

1、Model模型模块

(1)将模型模块添加进编辑区后,双击该模块,在下图所示的输入框中可以输入模型文件的名称,MATLAB会在搜索路径中根据名称找到相应的mdl模型文件,或者点击"Browse...",直接选择相应的mdl模型文件,如果选择成功,点击"Open Model"可以将所选模型打开。

(2)如果选择直接输入名称进行搜索的方法,需要确保所选模型文件在MATLAB的搜索路径上,MATLAB的搜索路径查看及添加方法如下:

2、Function-Call Generator函数调用发生器模块

(1)该模块通常需要配合函数调用子系统配合使用,它可以控制函数调用子系统以函数调用发生器所指定的采样频率进行工作。

(2)如果希望使用一个函数调用发生器模块按照一定顺序控制多个函数调用子系统,可以借助分路器模块。

七、可配置子系统模块

1、Configurable Subsystem可配置子系统模块概述

该模块通常和用户自定义的库文件配合使用,可用来表示库文件中包含的各个功能相对独立模块所构成的集合。由于需要与自定义的库文件配合,所以该模块不能直接添加到模型文件中,而是只能添加到库文件中,库文件的创建方法如下图所示(第一章示例的则是创建一般的模型文件)。

2、示例------全加器

(1)全加器的真值表及输出逻辑表达式如下图所示。

(2)将上述表达式转换为模型,如下图所示(因为第二个表达式有两种形式,所以搭建出两个模型,分别封装为两个普通的子系统)。

(3)在库文件中添加可配置子系统模块,双击它,勾选其中一个子系统,代表选择使用该子系统。

(4)打开一个普通模型文件,将可配置子系统模块从库文件直接拖拽至模型文件中,这样,就实现了将库文件中的一个子系统添加进模型文件中(库文件中的可配置子系统模块如果更改了勾选的子系统,那么模型文件中的可配置子系统模块也要相应地重新替换,否则会报错)。

(5)按照上一步创建4个全加器,可实现四位二进制数的相加,下图所示的是二进制数0b1011和0b0110的相加模型。

相关推荐
大柏怎么被偷了7 分钟前
【C++算法】位运算
开发语言·c++·算法
程序猿方梓燚8 分钟前
C/C++实现植物大战僵尸(PVZ)(打地鼠版)
c语言·开发语言·c++·算法·游戏
CPP_ZhouXuyang9 分钟前
C语言——模拟实现strcpy
c语言·开发语言·数据结构·算法·程序员创富
Zucker n15 分钟前
猫狗识别大模型——基于python语言
开发语言·python
bluebonnet2732 分钟前
【Rust练习】15.match 和 if let
开发语言·后端·rust
yueqingll1 小时前
020、二级Java选择题综合知识点(持续更新版)
java·开发语言
计算机学姐1 小时前
基于python+django+vue的在线学习资源推送系统
开发语言·vue.js·python·学习·django·pip·web3.py
A洛1 小时前
Cloudflare Pages 部署 Next.js 应用教程
开发语言·github·nextjs·cloudflare·cloudflarepages
lly2024061 小时前
Rust 函数
开发语言
许野平1 小时前
Rust:深入浅出说一说 Error 类型
java·开发语言·rust·error