概述
前面已经说过了两个实验,现在说第三个实验:
实验3:一个加热器加热屋子的实验,目的是了解如何建模和仿真一个动态系统。最终目的是了解matlab的simulink仿真的流程,是让我们学习如何由设计到公式、分模块、每个模块测试、联调、一直到结合现实数据修正模型的。
第一步,设计到公式:
首先是设计出来一个系统,然后确定重要的中间变量,用表达式把他们联系起来。
比如确定了Troom、mroomair、cair、Qgain、t、Qloss等变量,写出了他们的关系式:
这些参数的含义和具体值他们做了一个表格:
建模的时候也是采取的分层的方法,顶层-底层的方法,设计顺序也是自顶向下。开关可以用乘法器仿真,乘以1就是开,信号就过去了,乘以零就归零了,就不通过。Gain就是一个放大器(定值乘法器)。
第二步,分模块设计、每个模块测试:
Add a Constant block to model the constant air temperature from the heater. Set the block Constant value parameter to T_heater. You will define the value of T_heater in 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:
果然,模型更加贴近实际了。
最后
以上就是含糊绿茶为你收集整理的Matlab中Simulink小白入门初学教程(2)的全部内容,希望文章能够帮你解决Matlab中Simulink小白入门初学教程(2)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复