由于本来对mutisim很熟悉,由于任务安排需要看一个simulink仿真的基带传输系统,所以就学习了一下。matlab最讨人喜欢的地方就是它的帮助文件Help写的极其到位:
搜索simulink然后选择getting started就能获取三个例子:
首先,是一个小车加速的实验:
系统由一个脉冲产生器做的加速开关,一个gain(固定数字乘法器),一个二阶积分器构成,之所以上面写着1/s平方,是拉普拉斯变换的意思,如果是积分一次,那就是原式 * 1/s,那么* 1/s * 1/s就是积分两次,二次积分,二阶积分器输出的一个是一次积分的结果,一个是二次的,开始有加速度,所以距离是平方式增长,之后没有加速度,匀速运动,就是直线增长。
具体操作方法就是
找Pulse Generator、Gain、Integrator、Out之后傻瓜式连线即可,更加详细的流程自然去看讨喜Help->Simulink
实验二:蹬自行车:
男主是个憨憨,蹬一下就不蹬了,也就是加速度,绿色线,一次积分是速度,红线,黄线是理想剩余距离,蓝线是检测到的剩余距离,加了噪声的:
里面和实验一相比就多出了几个模块:
常量constant,减法器subtract,加法器add和零阶保持器Zero-Order Hold以及带限白噪声发生器Band-Limited White Noise。
Order,阶,two order 二阶的。Zero-Order Hold(er):
零阶保持器的作用是在信号传递过程中,把第nT时刻的采样信号值一直保持到第(n+1)T时刻的前一瞬时,把第(n+1)T时刻的采样值一直保持到(n+2)T时刻,依次类推,从而把一个脉冲序列变成一个连续的阶梯信号。因为在每一个采样区间内连续的阶梯信号的值均为常值,亦即其一阶导数为零,故称为零阶保持器。就是一个离散信号连接成阶梯信号的连接器。
实验三篇幅较长,我们开一个单章:
Simulink是MATLAB最重要的组件之一,它提供一个动态系统建模、仿真和综合分析的集成环境。在该环境中,无需大量书写程序,而只需要通过简单直观的鼠标操作,就可构造出复杂的系统。Simulink具有适应面广、结构和流程...
matlab之simulink最通俗教程
MATLABSimulink简明教程
Matlab系列Simulink很好的教程,看看就懂,快速学习!
一个能让你快速学会使用matlab的simulink仿真的手册,简单易懂,让您的开发更便捷
MatlabSimulink基础教程~ 比较详细~
最终目的是了解matlab的simulink仿真的流程,是让我们学习如何由设计到公式、分模块、每个模块测试、联调、一直到结合现实数据修正模型的。 第一步,设计到公式: 首先是设计出来一个系统,然后确定重要的中间变量...
前面已经说过了两个实验,现在说第三个实验:
实验3:一个加热器加热屋子的实验,目的是了解如何建模和仿真一个动态系统。最终目的是了解matlab的simulink仿真的流程,是让我们学习如何由设计到公式、分模块、每个模块测试、联调、一直到结合现实数据修正模型的。
第一步,设计到公式:
首先是设计出来一个系统,然后确定重要的中间变量,用表达式把他们联系起来。
比如确定了Troom、mroomair、cair、Qgain、t、Qloss等变量,写出了他们的关系式:
这些参数的含义和具体值他们做了一个表格:
建模的时候也是采取的分层的方法,顶层-底层的方法,设计顺序也是自顶向下。开关可以用乘法器仿真,乘以1就是开,信号就过去了,乘以零就归零了,就不通过。Gain就是一个放大器(定值乘法器)。
第二步,分模块设计、每个模块测试:
Add aConstantblock to model the constant air temperature from the heater. Set the blockConstant valueparameter toT_heater. You will define the value ofT_heaterin the Model Workspace.
Constant取值也可以像define一样一个☞指另一个,就是这里先叫一个名字,别的地方再给那个名字赋值:
在以下的位置可以找到这种类似于宏定义的设置:
这样就能方便的添加一些值,随时改变之。
做成的子模块Heater是这样的(在做这个之前,首先找出一个叫subsystem的东西,双击打开以后在内部修改):
意思就是加热器50℃,读取室温,做差,经过一个放大器也就是一个热量/温度的定值乘法器,这个就是描述这个加热器的性能的了,比如温差是1℃,能向室内散发多少热量,它来衡量,之后经过一个开关,得到的就是释放到室内的热量(焦耳)。
方法还是一样,做完一部分,测试一部分:
意思就是开关在第4个时钟的时候打开,加热器的内温50℃,室温20摄氏度,看看打开开关前后加热器每个时刻释放多少热量,大约是11*1011左右,也就是说,这个模块是没问题的。(样例用的室温25摄氏度,不过没有影响)。
然后就开始做下面的模块,恒温控制器模块(读取室内温度,和预设的对比,温度高就停火,温度低就加热):
右边是我的效果,输出的被采样了,我尝试着删除了一些,但是总有一个被采样儿,所以采样是正常现象,不用理会。如果调高采样率,圆圈会更加密集,仿真耗时更长。
之后就是仿真屋子(Room),情况是这样儿的:
大致的意识就是这个屋子,外界给热量,外界也有温度,里面是一个反馈系统,屋子的温度比外界温度高,那就丧失热量,如果丧失的热量比外界给的多,那么整体热量就会下降,积分器代表的是当前温度,我们设置其为20℃,整体热量的变化除以比热容就是温度的增减,所以当我们设置外界不给屋子热量(Heat Gain = 0),外界温度是10(Outside Temperature = 10)室内初始温度是20(积分器初始值设置为20)以后,屋子的温度就会因为外界低温而下降,开始温差大,降温快,后面温差小,降温慢。
第三步,各个模块配合起来联调:
做完了各个模块之后,我们就应该把他们连接到一起。先两两相连测试:
符合结果。
想要上下翻转一个模块,只需要改变标号顺序,将原先在上面的1标号换到下面即可;
第四步,将所有的模块连接,整体联调:
调整外界环境温度在低温范围内波动的时候(振幅5,中心值12),室温能保持稳定:
当温度在高温范围波动时(振幅5,中心值19),室温就有时受室外温度影响了:
Fullfile这个函数,作用大致是根据给出的文件路径获取文件的地址或者说是C语言里面的指针,里面的逗号,类似于windows里面的斜杠。copyfile这个函数就是一个复制文件的函数,如果只给出源文件地址,那就把源文件复制到当前文件夹,
所以按照它这个写法,不用害怕修改了源文件之后就弄坏了,我们修改的只是复制出来的备份。
果然多出来一个。
复制完了接下来就是打开了,前面的copy是复制到当前文件夹,这里的open就把一个文件打开了。在修改文件的时候要小心,看看修改的是原始样例还是复制过来的,改错了以后就不好恢复了。这里复制过来的是一个mat,所以一会儿再open的时候如果不是这个mat就不要修改。
模型建好了之后需要校准:
第五步:根据实测数据修正模型:
看了实测数据之后,下一步就是实测样例相对比了,对比之后就该修正模型了:首先先添加一条值通输出线:
Matlab是真的强大,excel都能直接导入,牛,不过一定注意,我使用的是matlab2018a,所以不识别help里面提供的xls文件,我把他复制到当前文件夹之后改成了xlsx才能识别。
之后就是双击打开一个输入端口,选中并导入xlsx数据,添加到仿真。然后再把这个xlsx保存成mat格式,并且现在不仅包含了数据信息,里面还有连接信息。而且由于mark for simulation 了一手,所以现在在workspace里面也有这个叫sheet1的exel表格:
存成了mat格式之后还需要在仿真的时候把它加进去,包括数据和连接:
之后再做一些显示方面的事儿,果然,我们的数据连接上了:
之后就是仿真:
观察可知观测值和仿真值并不一样,但是偏差很有规律,调整恒温器里面的迟滞器,将迟滞范围改成-5~0:
果然,模型更加贴近实际了。
1.新版MATLAB中没有电机测量模块(Machines Measurement Demux),用Bus Selector代替,用BusSelector将可测量的信号引出,再用BusSelector将同组的信号集中在一起用示波器观测。 2.MATLAB-Simulink无法打开低版本的...
1.新版MATLAB中没有电机测量模块(Machines Measurement Demux),用Bus Selector代替,用BusSelector将可测量的信号引出,再用BusSelector将同组的信号集中在一起用示波器观测。
2.MATLAB-Simulink无法打开低版本的仿真模型,设置方法如下:
(1)打开预设
(2)Simulink-
(3)Model File-
取消前面对勾
3.在Simulink中定义常量,方便批量修改参数:
(1) Model Properities
(2)Callbacks-InitFcn
(3)定义相应常量及其值即可。
4.MALAB中eps是什么?
eps是matlab中最小的正数。eps=2.22044604925031e-016
在matlab的数值计算中,当发现某个值小于eps时,就把这个数当做0来处理。
这也可以看做是matlab的精度值。
5.对Simulink中示波器的波形使用powergui中的FFT分析工具进行FFT分析
(1)仿真运行开始前,对Scope进行相应的设置,将示波器中波形的数据保存至MATLAB的Workspace,具体操作为:打开要进行FFT分析示波器的Configuraton Properties,进行如下设置;
(2)运行仿真模型;
(3)运行结束后,打开powergui-Tool-FFT分析工具,找到保存至工作区的波形,设置相应的基波频率,开始时间,周期数,最大频率等,进行分析即可。
注意:如果波形数据被保存到Workspace中名为out的目录下,FFT工具会找不到要分析的数据,需进行如下设置:打开
中的
,取消
前面的对勾即可。
6.Goto,From模块的使用方法
【CSDN收藏】
7.Mask的创建
【CSDN-唯恋殊雨-基于MATLAB/Simulink的电力电子电路仿真】
8.保存simulink仿真scope波形为位图
(1)将scope数据保存到工作区,取名为XXX(如PID),同FFT分析第一步,并运行仿真模型
(2)运行命令plot(XXX.time(:,1),XXX.signals.values(:,1)),绘制图形
(3)图形绘制完毕后,编辑-复制图窗-粘贴到visio进行编辑
(4)编辑完成后进行复制,回到word-开始-(左上角)粘贴-选择性粘贴-增强型图元文件。
9.如何在仿真运行完成之后绘制如XY-Graph一样的图形?
(1)将需要绘制图形的数据保存到工作空间(workspace),可通过Scope中的Logging,命名aa;或者使用to workspace模块,注意保存数据的格式为structure,并命名,这里以aa,aa1为例。
(2)在命令行窗口中,若通过Scope保存的数据,则输入plot(aa.signals(1).values,aa.signals(2).values)
若通过to workspace保存的数据,则输入plot(aa.signals.values,aa1.signals.values)
10.Simulink中的开关器件(IGBT等中的缓冲电阻和缓冲电容的作用,该如何设置?
一般开关器件工作于关断瞬间由于线路杂散电感影响,会在开关器件两端产生高压(Ldi/dt),导致开关器件由于高压击穿。加缓冲电阻Rs和缓冲电容Cs就是为保护开关器件。
麻省理工的matlab/simulink讲义,还包括作业题目,非常适合想自学的同学。
MATLAB-Simulink自学入门教程,内容丰富,通俗易懂
里面有6个pdf格式的simulink教程,由浅入深,教你如何建模仿真
关于matlab中simulink仿真的入门引导
MATLAB的Simulink使用及实例 新建一个Simulink 有两种方法 第一种在命令行直接输入similink,然后回车键就好了(注意simulink第一个S是小写哦) 第二种我们可以直接在MATLAB上面找到simulink,如下图所示点进去就...
MATLAB的Simulink使用及实例
今天我们来新建一个如图所示的simulink文件
源代码已经上传了,只要5积分就可以下载啦,嘿嘿。

新建一个Simulink

有两种方法
第一种在命令行直接输入similink,然后回车键就好了(注意simulink第一个S是小写哦)
第二种我们可以直接在MATLAB上面找到simulink,如下图所示点进去就可以了
点进去之后会出现如下图所示,有多种框架供我们选择
我们选择默认的左上角的Blank model(空白模型),点进去
出现如图所示,
一个新的模型就建好啦,接下来保存在你想保存的地方就可以了。

向model中添加组件

在我们新建的项目的菜单栏里可以看到一个红红蓝蓝的标叫Library Browser,我们点进去
将会出现如下所示,这便是我们需要的组件库啦
想要插入什么组件都可以在这里找到,左上角有一个搜索框,我们可以在这里搜索名称,比如我要插入一个正弦函数
搜索sine wave
就出现了好多相关组件,选择我们想要的那一个拖动进我们的model项目界面就可以了。

将各个组件连线及交叉连线

连线非常简单,只需要把我们的鼠标移动到组件的起始点或是终止点就会出现一个“+”号,如图所示:
我们只需要按住,拉向我们想要指向的一端就可以了。
不过我们经常会遇到交叉节点的状况,这该怎么办呢
如图所示,我们想要这个Derivative和前面的加法器相联,但是加法器已经没有接口了,那我们就只能交叉连线了。既然顺着来不行,那我们就逆着来
我们把鼠标放在Derivative上出现加号的时候,我们拖动它到加法器的连线上去。这样就连接好了,我们可以拖动结点位置,让它变得更好看。

各种参数,名称,Trancefer Fcn参数设置

当我们选中组件时,上面会出现三个蓝色的小点,我们把鼠标放上去,就可以看到一些功能了
比如我们点击左二就可以显示组件名称
当我们想设置参数的时候,只要双击组件就可以了。
比如双击sum,如图所示,
下面我们来看一下如何设置Transfer Fcn组件的参数,我们双击Transfer Fcn,如图所示
其中Numerator coefficients是指分子
Denominetor coefficients指的是分子
假如我想把分母变为二阶,并且把系数分别改为2,3,0,效果如图

运行

做好之后就可以点击上面的运行按钮运行啦
我最终的效果图如下
运行结果如下
MATLABSimulink 简明教程续,中文版,供初学者使用
第四章Simulink动态仿真 The end! Thanks ! 仿真技术 控制科学与工程系
使用MATLAB和Simulink的建模与仿真详细课件
进行matlab工具的simulink模块操作