百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

MATLAB的Simulink常用模块(五)

bigegpt 2024-09-10 11:21 4 浏览

在MATLAB的Simulink中有些常用的模块,今天主要介绍信号合并与分解模块、总线创建与总线选择模块、限幅模块、数据类型转换模块、 终止模块、接地模块、Clock。


1.信号合并与分解模块

1.1 信号合并模块

Mux模块是一个虚拟模块,虽然视觉上将多个信号合并为一个信号,但是实际上并没有改变其内部数据结构,只是视觉上看起来简洁并且可以同一管理。

在仿真模型中,往往可以使用Mux模块将多个信号汇聚之后显示到同一个Scope的同一个坐标系中,这样scope就不需要提供多个输入输出端口了。

参数设置

示例1

仿真图

示波器输出

1.2 信号分解模块

Demux模块能将多维信号分解为单维或维数较少的多维信号。

参数设置

示例2

仿真图

示波器输出


2.总线创建与总线选择模块

2.1 总线创建模块

Bus Creator 模块(总线创建模块)可将一组信号合并成一条总线。

参数设置

当Output data type选择为Bus:<object name>,勾选Output as nunvirtual bus时,表示输出信号是非虚拟信号,在C代码生成时将输出总线信号定义为结构体。

示例3

示波器输出

2.2 总线选择模块

Bus Selector模块(总线选择模块)可从总线中选择出一个或一组成员,这个总线信号可来自于Bus Creator、Bus Selector或其他输出Bus object的模块。

参数设置

示例4

示波器输出


3.BUS creator & selector、Mux&Demux的区别

Bus Creator:由几路输入信号合成为一条总线信号
Bus Selector:由总线信号中选取需要的一路或几路信号输出
Mux:信号合成。
Demux:信号分解
(1)Bus的可选择性较多,如Bus Selector可以选取总线信号中的某路信号进
行输出,而Demux则是按顺序输出,不能自定义选取
(2)如果仅仅为了模型仿真连线方便,使用mux,demux就好。Bus creator
/selector还能在代码生成时实现struct的数据结构。
(3)Bus是非虚拟总线,在代码生成中,可以以一个结构体的形式输出,而
Mux是虚拟总线,看起来像是合在一起的,实际上还是一个个单独的信号。

4.限幅模块

Saturation模块(限幅模块),对输入信号限幅之后再输出。

参数设置

Treat as gain when linearizing :设置线性化时是否将限幅模块作为增益
为1的直通模块处理的勾选框。
Enable zero - crossing detection:设置是否使能过零检测功能的勾选框。

示例4

正弦波模块参数

限幅模块参数

示波器输出


5.数据转化模块

Simulink支持多种数据类型,包括浮点数、固定点数及枚举型数据等,当前一个模块的输出信号与后面的模块的输入端口支持的数据类型不一致时,Simulink将会报错。这时使用数据类型转换模块Data Type Conversion进行数据转换以使模型能够顺利通过仿真并生成代码。

 fixdt是MATLAB提供的函数,能够返回simulink.NumericType类型的变量,
 通过这个变量来描述一种固定数据类型。使用固定点数据类型配置的模型生成
 的代码相对于浮点数据类型占用较少的内存空间,并能够以更快的速度运行。
Input and output to have equal参数是 Data Type Conversion模块独有
的参数,表示当输人数据是固定点数据类型时模块处理的方式选择。下拉框包括
2个选项Real World Value(RWV)和 Stored Integer(SI),分别表示实际值与
存储值,模块会按照所选择的数值进行等值数据转换。如目标为实际值相等的情
况下将double 型的pi转换为int8型必然会产生误差,int8数据类型只保留整
数部分,结果为3。

参数设置

取整方式

固定点数据类型:
符号:首位1或0表示有符号或无符号
字长:存储单元由多少位二进制构成
表示小数的数据位,字长范围内的一部分或全部数据用来表示数的小数部分,这部分数据位于数据的最右端

示例5

例如:将数字-2.65表示为一个有符号,字长为8,小数部分使用3位的数据,这个数据类型就可以描述为fixdt(1,8,3),fixdt(1,16,3)。

仿真


6.接地模块

Ground模块是将输人端口接地的模块,避免仿真时某些模块出现输入端口未连接的警告,有一个输出,输出值为0。

Ground模块输出的信号数据类型由其所连接的端口的数据类型决定,此模块没有参数。

7.终止模块

当模型的某个层次中有输出端口不连接任何其他模块时,仿真会报出警告:Warning:Output port 1 of 'untitled/ Inl'is not connected.

如将这些未连接的输出端口连接Terminator模块,则警告可消除。Terminator模块就是用来接收未使用的输出信号的,仅有一个输人端口,此模块没有可调参数,参数对话框中仅对模块功能进行说明。Terminator模块可接受任何Simulink支持的数据类型:实数、复数及固定点数据。

8.Clock

Clock模块输出仿真时间,也可以作为一些函数的输入以产生不同的信号源。

示例6

仿真图


示波器输出

示例7

仿真图

示波器输出


参考内容

[1] 博客园作者叮叮当当sunny的文章《Simulink仿真入门到精通(二) Simulink模块 》,文章链接如下:https://www.cnblogs.com/dingdangsunny/p/12235689.html#_label0

[2] CSDN作者祺兔耳朵的文章《Matlab中Simulink的Bus/Mux/Dumx模块详解》,文章链接为:

https://blog.csdn.net/qq_25925185/article/details/72800798


本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。


作 者 | 郭志龙

编 辑 | 郭志龙
校 对 | 郭志龙

相关推荐

Go语言泛型-泛型约束与实践(go1.7泛型)

来源:械说在Go语言中,Go泛型-泛型约束与实践部分主要探讨如何定义和使用泛型约束(Constraints),以及如何在实际开发中利用泛型进行更灵活的编程。以下是详细内容:一、什么是泛型约束?**泛型...

golang总结(golang实战教程)

基础部分Go语言有哪些优势?1简单易学:语法简洁,减少了代码的冗余。高效并发:内置强大的goroutine和channel,使并发编程更加高效且易于管理。内存管理:拥有自动垃圾回收机制,减少内...

Go 官宣:新版 Protobuf API(go pro版本)

原文作者:JoeTsai,DamienNeil和HerbieOng原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffer...

Golang开发的一些注意事项(一)(golang入门项目)

1.channel关闭后读的问题当channel关闭之后再去读取它,虽然不会引发panic,但会直接得到零值,而且ok的值为false。packagemainimport"...

golang 托盘菜单应用及打开系统默认浏览器

之前看到一个应用,用go语言编写,说是某某程序的windows图形化客户端,体验一下发现只是一个托盘,然后托盘菜单的控制面板功能直接打开本地浏览器访问程序启动的webserver网页完成gui相关功...

golang标准库每日一库之 io/ioutil

一、核心函数概览函数作用描述替代方案(Go1.16+)ioutil.ReadFile(filename)一次性读取整个文件内容(返回[]byte)os.ReadFileioutil.WriteFi...

文件类型更改器——GoLang 中的 CLI 工具

我是如何为一项琐碎的工作任务创建一个简单的工具的,你也可以上周我开始玩GoLang,它是一种由Google制作的类C编译语言,非常轻量和快速,事实上它经常在Techempower的基准测...

Go (Golang) 中的 Channels 简介(golang channel长度和容量)

这篇文章重点介绍Channels(通道)在Go中的工作方式,以及如何在代码中使用它们。在Go中,Channels是一种编程结构,它允许我们在代码的不同部分之间移动数据,通常来自不同的goro...

Golang引入泛型:Go将Interface「」替换为“Any”

现在Go将拥有泛型:Go将Interface{}替换为“Any”,这是一个类型别名:typeany=interface{}这会引入了泛型作好准备,实际上,带有泛型的Go1.18Beta...

一文带你看懂Golang最新特性(golang2.0特性)

作者:腾讯PCG代码委员会经过十余年的迭代,Go语言逐渐成为云计算时代主流的编程语言。下到云计算基础设施,上到微服务,越来越多的流行产品使用Go语言编写。可见其影响力已经非常强大。一、Go语言发展历史...

Go 每日一库之 java 转 go 遇到 Apollo?让 agollo 来平滑迁移

以下文章来源于GoOfficialBlog,作者GoOfficialBlogIntroductionagollo是Apollo的Golang客户端Apollo(阿波罗)是携程框架部门研...

Golang使用grpc详解(golang gcc)

gRPC是Google开源的一种高性能、跨语言的远程过程调用(RPC)框架,它使用ProtocolBuffers作为序列化工具,支持多种编程语言,如C++,Java,Python,Go等。gR...

Etcd服务注册与发现封装实现--golang

服务注册register.gopackageregisterimport("fmt""time"etcd3"github.com/cor...

Golang:将日志以Json格式输出到Kafka

在上一篇文章中我实现了一个支持Debug、Info、Error等多个级别的日志库,并将日志写到了磁盘文件中,代码比较简单,适合练手。有兴趣的可以通过这个链接前往:https://github.com/...

如何从 PHP 过渡到 Golang?(php转golang)

我是PHP开发者,转Go两个月了吧,记录一下使用Golang怎么一步步开发新项目。本着有坑填坑,有错改错的宗旨,从零开始,开始学习。因为我司没有专门的Golang大牛,所以我也只能一步步自己去...