本教程展示了如何使用Simulink建模和模拟一个动态系统万博1manbetxgydF4y2Ba®gydF4y2Ba软件该模型是一种加热系统,包括一个由恒温器控制的加热器,将房间加热到设定的温度。gydF4y2Ba
回顾一个完整的模型,在MATLAB中gydF4y2Ba®gydF4y2Ba命令窗口中,输入gydF4y2Ba
Open_System(FullFile(Matlabroot,...'帮助','toolbox','simul万博1manbetxink','examplear','ex_househeat_modeling'))gydF4y2Ba
定义需求和数学方程。为模型参数和参考测量收集数据,以验证模拟结果。有关如何定义系统的更多信息,请参见基本建模工作流:gydF4y2Ba定义系统gydF4y2Ba.gydF4y2Ba
在设计模型之前,考虑您的目标和需求。住宅供暖系统建模的目标是:gydF4y2Ba
观察改变的室外温度如何影响室内温度。gydF4y2Ba
检查改变参数对室内温度的影响。gydF4y2Ba
本教程中的房屋供暖系统定义了供暖系统及其与房间的关系。它包括:gydF4y2Ba
房屋的热特性gydF4y2Ba
加热器的热特性gydF4y2Ba
控制加热器的恒温器gydF4y2Ba
室外环境gydF4y2Ba
室内环境gydF4y2Ba
恒温器定期监测室温,根据设定温度和室温之间的差异打开或关闭加热器。gydF4y2Ba
该系统的模型包括三个组件:加热器、恒温器和房间。gydF4y2Ba
三个时间相关变量定义了房间内的热交换:gydF4y2Ba
房间温度(gydF4y2Ba )gydF4y2Ba
热增益:从加热器传输的热能(gydF4y2Ba )去房间gydF4y2Ba
热损失:从房间转移的热能(gydF4y2Ba )到室外环境gydF4y2Ba
微分方程定义了这些变量之间的关系,但由于传热是根据变化的温度来定义的,只有室温是状态变量。gydF4y2Ba
加热器中的空气温度保持恒定gydF4y2BaTgydF4y2Ba加热器gydF4y2Ba室温是gydF4y2BaTgydF4y2Ba房间gydF4y2Ba.进入房间的热能是通过加热器加热的空气对流获得的,其热容为gydF4y2BacgydF4y2Ba空气gydF4y2Ba.加热器中大量空气获得的热量,gydF4y2Ba ,与加热器与房间温差成正比:gydF4y2Ba
从加热器获得热能的速率是gydF4y2Ba
风扇把房间的空气送进加热器,再把它送回房间。一定量的空气,gydF4y2Ba ,每单位时间流过加热器,并更换gydF4y2Ba 用这个常数把方程简化成gydF4y2Ba
室内的热能损失是通过墙壁和窗户传导的,与室内温度和外界温度的温差成正比:gydF4y2Ba
热能损失率为gydF4y2Ba
替换gydF4y2Ba 与gydF4y2Ba 哪里gydF4y2Ba 热阻是否使方程简化为gydF4y2Ba
通过从热增益率中减去热损失率来定义房间内的温度变化率:gydF4y2Ba
房屋加热模型所需的大部分参数值都在标准属性表中发布。加热器的流量来自制造商数据表。gydF4y2Ba
列出来自您的等式的变量和系数,并检查单位之间的尺寸一致性。由于模型的时间单位是小时,因此将材料的热特性转换为从几秒钟的单位转换出材料的热特性。gydF4y2Ba
方程变量和常数。gydF4y2Ba在构建模型时,可以使用该表中的常量名称和值。gydF4y2Ba
变量或系数gydF4y2Ba | 描述gydF4y2Ba | 单位gydF4y2Ba |
---|---|---|
一个gydF4y2Ba | 墙壁或窗口面积gydF4y2Ba
|
平方米gydF4y2Ba |
DgydF4y2Ba | 墙或窗的深度gydF4y2Ba
|
计gydF4y2Ba |
问gydF4y2Ba | 热能转移gydF4y2Ba | 焦耳gydF4y2Ba |
dQ / dtgydF4y2Ba | 热能传递的速率gydF4y2Ba | 焦耳/小时gydF4y2Ba |
kgydF4y2Ba | 热导率;材料进行传热的特性gydF4y2Ba
|
焦耳/米·小时·学位gydF4y2Ba |
rgydF4y2Ba | 热电阻率;材料的耐热性gydF4y2Ba
|
米··小时学位/焦耳gydF4y2Ba |
RgydF4y2Ba | 热阻gydF4y2Ba
|
小时·学位/焦耳gydF4y2Ba |
米gydF4y2Ba | 房间或加热器内的空气质量gydF4y2Ba
加热器的质量gydF4y2Ba |
公斤gydF4y2Ba |
dm/dtgydF4y2Ba | 通过加热器的空气质量速率gydF4y2Ba | 千克/小时gydF4y2Ba |
米gydF4y2Ba | 通过加热器的空气质量的恒定速率gydF4y2Ba
|
千克/小时gydF4y2Ba |
cgydF4y2Ba | 比热容gydF4y2Ba
|
焦耳/千克·度gydF4y2Ba |
TgydF4y2Ba加热器gydF4y2Ba | 来自加热器的恒定空气温度gydF4y2Ba
|
摄氏度gydF4y2Ba |
TgydF4y2Ba房间gydF4y2Ba | 室内空气温度gydF4y2Ba 房间初始空气温度gydF4y2Ba |
摄氏度gydF4y2Ba |
对顶层结构和单个组件进行建模。将模型组织成与系统组件相对应的层次结构。参见基本建模工作流:gydF4y2Ba模型系统gydF4y2Ba.gydF4y2Ba
在房子的顶层加热模式,使用gydF4y2Ba子系统gydF4y2Ba块组织模型并创建结构。该模型包括子系统恒温器,加热器和房间。gydF4y2Ba
打开新的Simulin万博1manbetxk模型:gydF4y2Ba开放的新模型gydF4y2Ba.gydF4y2Ba
从gydF4y2Ba显示gydF4y2Ba菜单,清除gydF4y2Ba自动隐藏名字gydF4y2Ba复选框。gydF4y2Ba
打开库浏览器:gydF4y2Ba打开Sim万博1manbetxulink库浏览器gydF4y2Ba
添加gydF4y2Ba子系统gydF4y2Ba街区,拖三个gydF4y2Ba子系统gydF4y2Ba从端口和子系统库库中的块以Simulink编辑器中的新模型。万博1manbetxgydF4y2Ba
打开一个gydF4y2Ba子系统gydF4y2Ba块。双击。gydF4y2Ba
每一个新的gydF4y2Ba子系统gydF4y2Ba块包含一个gydF4y2Ba轮廓尺寸gydF4y2Ba(gydF4y2BaIn1.gydF4y2Ba)一gydF4y2Ba外港gydF4y2Ba(gydF4y2Ba着干活gydF4y2Ba)街区。这些块定义了与模型层次结构中下一个更高级别的信号接口。gydF4y2Ba
每一个gydF4y2Ba轮廓尺寸gydF4y2Ba块上创建一个输入端口gydF4y2Ba子系统gydF4y2Ba块,每个gydF4y2Ba外港gydF4y2Ba块创建输出端口。为额外的输入和输出信号添加更多的块。gydF4y2Ba
在Simuli万博1manbetxnk编辑器工具栏上,单击gydF4y2Ba到父gydF4y2Ba按钮gydF4y2Ba返回到顶层。重命名gydF4y2Ba子系统gydF4y2Ba块,如图所示。双击块名称并键入新名称。gydF4y2Ba
对于每个组件,对方程进行建模,定义参数,准备子系统进行仿真,并进行仿真以验证其行为。gydF4y2Ba
让我们首先建模加热器系统组件。加热器模型:gydF4y2Ba
将来自房间的当前温度和来自恒温器的控制信号作为输入gydF4y2Ba
计算从加热器获得的热量gydF4y2Ba
当控制信号打开时输出热量增益gydF4y2Ba
要对加热器子系统建模,请对gydF4y2Ba热增益速率方程gydF4y2Ba使用Sim万博1manbetxulink块:gydF4y2Ba
从加热器空气温度中减去室温。gydF4y2Ba温差是当前的室温减去加热器的恒温(gydF4y2BaT_加热器gydF4y2Ba
).看到gydF4y2Ba方程变量与常数gydF4y2Ba.gydF4y2Ba
打开加热器子系统。gydF4y2Ba
单击模型并键入Sum以显示名称中包含Sum的块列表。点击gydF4y2Ba总和gydF4y2Ba阻止列表。当提示输入符号列表时,输入gydF4y2Ba| - +gydF4y2Ba
在块上放置-和+输入端口,并按下gydF4y2Ba进来gydF4y2Ba.gydF4y2Ba
竖条(gydF4y2Ba|gydF4y2Ba
)通过在端口之间插入空格来改变输入端口的位置。在标识列表的开始处有一个竖条,在标识块的顶部留出一个空间,并顺时针方向移动端口。gydF4y2Ba
添加gydF4y2Ba常数gydF4y2Ba块模型恒定空气温度从加热器。组块gydF4y2Ba定值gydF4y2Ba参数gydF4y2BaT_加热器gydF4y2Ba
.的值gydF4y2BaT_加热器gydF4y2Ba
在模型工作区中。gydF4y2Ba
如果块显示gydF4y2Ba- c -gydF4y2Ba
,调整块的大小以显示变量名。gydF4y2Ba
添加第二个gydF4y2Ba轮廓尺寸gydF4y2Ba块从模型的另一部分取房间温度信号。gydF4y2Ba
添加gydF4y2Ba获得gydF4y2Ba阻塞到加热器子系统。设置gydF4y2Ba获得gydF4y2Ba参数gydF4y2BaM_heater_air * c_airgydF4y2Ba
.您将在模型工作区中定义这些变量的值。gydF4y2Ba
连接的输出gydF4y2Ba总和gydF4y2Ba块的输入gydF4y2Ba获得gydF4y2Ba块。gydF4y2Ba
向信号线添加标签,以帮助跟踪方程和模型需求中的模型组件。双击信号线上方,输入标签。gydF4y2Ba
重命名这些块并将它们连接起来,如图所示。gydF4y2Ba
型号a加热器开关。gydF4y2Ba恒温器向加热器发送等于1(开)或0(关)的开/关信号。因为输入信号是二进制的,你可以用agydF4y2Ba乘gydF4y2Ba块模拟交换机。gydF4y2Ba
拆下连接gydF4y2BaIn1.gydF4y2Ba和gydF4y2Ba着干活gydF4y2Ba块。选择线路,按“”键gydF4y2Ba删除gydF4y2Ba.gydF4y2Ba
添加gydF4y2Ba乘gydF4y2Ba块。垂直调整块的大小以使图中的块对齐。连接gydF4y2BaIn1.gydF4y2Ba块到第一个块输入,块输出到gydF4y2Ba着干活gydF4y2Ba块。如所示重命名块。gydF4y2Ba
连接的输出gydF4y2Ba获得gydF4y2Ba块到第二个输入。把所有相连的方块移到一起。围绕要移动的块绘制一个选择框,然后将它们拖到新位置。gydF4y2Ba
重命名块并向信号添加标签,如图所示。gydF4y2Ba
的gydF4y2Ba轮廓尺寸gydF4y2Ba和gydF4y2Ba外港gydF4y2Ba块创建端口,将这个子系统连接到模型中的其他子系统。gydF4y2Ba
定义加热器模型参数。gydF4y2Ba您可以在MATLAB工作区中定义参数,然后在块参数对话框中输入它们的名称。然而,更健壮的方法是使用Simulink模型工作区,因为变量值随模型一起保存。万博1manbetxgydF4y2Ba
在Simuli万博1manbetxnk编辑器中,选择gydF4y2Ba视图gydF4y2Ba>gydF4y2Ba模型浏览器gydF4y2Ba>gydF4y2Ba模型的工作空间gydF4y2Ba.gydF4y2Ba
在模型资源管理器中,选择gydF4y2Ba添加gydF4y2Ba>gydF4y2BaMATLAB变量gydF4y2Ba.在中间窗格中,单击新变量gydF4y2BaVargydF4y2Ba
并输入块参数的变量名。对于这个示例,输入gydF4y2BaT_加热器gydF4y2Ba
.gydF4y2Ba
点击gydF4y2Ba0gydF4y2Ba
值,并输入该变量的值。对于这个示例,输入gydF4y2Ba50gydF4y2Ba
度。gydF4y2Ba
使用相同的方法,添加变量gydF4y2BaM_heater_airgydF4y2Ba
值为gydF4y2Ba3600.gydF4y2Ba
千克/小时及gydF4y2Bac_空气gydF4y2Ba
值为gydF4y2Ba1005.4gydF4y2Ba
焦耳/公斤·学位。gydF4y2Ba
为模拟准备加热器模型。gydF4y2Ba设置模拟加热器模型。考虑预期的行为,以及如何使用模拟来测试该行为。当恒温器输出为1(开启)时,假设恒定的室温为25时,来自增益的预期输出是(50-25)x 3600×1005.3 = 9.05×10gydF4y2Ba7gydF4y2Ba.通过使用以下输入运行模型来验证该输出:gydF4y2Ba
加热器开/关信号从gydF4y2Ba0gydF4y2Ba
来gydF4y2Ba1gydF4y2Ba
在4之后gydF4y2BathgydF4y2Ba小时gydF4y2Ba
室温常数gydF4y2Ba25gydF4y2Ba
在加热器子系统中,单击gydF4y2Ba到父gydF4y2Ba按钮gydF4y2Ba以导航到模型的顶层。您可以如图所示调整加热器块的大小。gydF4y2Ba
请注意,加热器块有第二个输入端口,每个端口对应一个输入端口gydF4y2Ba轮廓尺寸gydF4y2Ba块或gydF4y2Ba外港gydF4y2Ba子系统中的块。gydF4y2Ba
添加gydF4y2Ba常数gydF4y2Ba块表示室温,并将该值设置为gydF4y2Ba25gydF4y2Ba
(摄氏度)。添加gydF4y2Ba步gydF4y2Ba阻塞一个临时加热器(开/关)信号。集gydF4y2Ba一步gydF4y2Ba来gydF4y2Ba4gydF4y2Ba
.gydF4y2Ba
添加gydF4y2Ba范围gydF4y2Ba阻塞并将其连接到热增益输出。gydF4y2Ba
模拟加热器模型并评估结果。gydF4y2Ba使用默认模拟设置来验证模型设计。gydF4y2Ba
双击gydF4y2Ba范围gydF4y2Ba阻挡打开它。gydF4y2Ba
模拟模型。点击gydF4y2Ba跑gydF4y2Ba按钮gydF4y2Ba.gydF4y2Ba
模拟运行时,范围将绘制结果。gydF4y2Ba
查看范围跟踪。gydF4y2Ba
确定这个结果是否是您所期望的。gydF4y2Ba
当加热器开/关信号在4小时由0切换到1时,加热器输出9.05 × 10gydF4y2Ba7gydF4y2Ba焦耳/小时。模拟验证了预期的行为。gydF4y2Ba
删除gydF4y2Ba常数gydF4y2Ba,gydF4y2Ba步gydF4y2Ba,gydF4y2Ba范围gydF4y2Ba为测试Heater组件而添加的块。gydF4y2Ba
你可以不用系统方程来模拟恒温器。该组件的要求:gydF4y2Ba
当室温低于设定温度时,加热器接通,控制信号等于1.当室温高于设定温度时,控制信号等于0。gydF4y2Ba
为避免在设定温度附近重复切换,恒温器允许在温度设定点附近出现2摄氏度的滞后。如果恒温器打开,在关闭前,室温必须比设定温度升高2度。如果恒温器关闭,在打开之前,室温必须比设定温度低2度。gydF4y2Ba
这个组件模拟恒温器的运行,决定加热系统何时开启或关闭。它只包含一个gydF4y2Ba继电器gydF4y2Ba块,但逻辑上表示模型中的恒温器。gydF4y2Ba
从室温中减去设定的室温。gydF4y2Ba如果设定室温比室温更温暖,则恒温器模型向加热器模型发送“开启”信号。为了确定是否是这种情况,首先将室温从设定温度减去。gydF4y2Ba
打开恒温器子系统。添加gydF4y2Ba总和gydF4y2Ba插入并遵循程序gydF4y2Ba从加热器空气温度减去室内空气温度gydF4y2Ba减法。gydF4y2Ba
连接gydF4y2Ba轮廓尺寸gydF4y2Ba块的+输入gydF4y2Ba总和gydF4y2Ba块。的gydF4y2Ba轮廓尺寸gydF4y2Bablock设置室温。gydF4y2Ba
添加第二个gydF4y2Ba轮廓尺寸gydF4y2Ba块,并将它连接到-输入gydF4y2Ba总和gydF4y2Ba块。第二个gydF4y2Ba轮廓尺寸gydF4y2Ba块是房间子系统的当前室温。将输出端口移动到块的顶部。右键单击块并选择gydF4y2Ba旋转和翻转gydF4y2Ba>gydF4y2Ba逆时针方向gydF4y2Ba.如果需要,可以通过拖动句柄来重塑图中所示的块。gydF4y2Ba
如所示重命名块。gydF4y2Ba
模型恒温器信号。gydF4y2Ba用2摄氏度的迟滞值对来自恒温器的信号建模。gydF4y2Ba
在恒温器子系统中,添加一个gydF4y2Ba继电器gydF4y2Ba块设定gydF4y2Ba接通点gydF4y2Ba参数gydF4y2Ba2gydF4y2Ba
,gydF4y2Ba切断点gydF4y2Ba参数gydF4y2Ba-2gydF4y2Ba
.gydF4y2Ba
如图所示连接和重命名块。gydF4y2Ba
为仿真准备恒温器模型。gydF4y2Ba准备恒温器子系统进行仿真。考虑恒温器的预期行为以及如何用模拟测试该行为。当室温在恒温器上升到2度的情况下时,恒温器输出为0.当室温下方在恒温器设置下移动2度时,恒温器输出为1。gydF4y2Ba
在恒温器子系统中,单击gydF4y2Ba到父gydF4y2Ba按钮gydF4y2Ba以导航到模型的顶层。如图所示调整温控器块的大小。gydF4y2Ba
注意恒温器子系统现在有第二个输入端口。每个输入端口对应一个gydF4y2Ba轮廓尺寸gydF4y2Ba子系统中的块。gydF4y2Ba
添加gydF4y2Ba常数gydF4y2Ba块为设置的温度。设置gydF4y2Ba常数gydF4y2Ba参数gydF4y2Ba25gydF4y2Ba
(摄氏度)。gydF4y2Ba
添加gydF4y2Ba正弦波gydF4y2Ba块表示不断变化的室温。设置gydF4y2Ba振幅gydF4y2Ba参数gydF4y2Ba10gydF4y2Ba
这个gydF4y2Ba偏见gydF4y2Ba来gydF4y2Ba20.gydF4y2Ba
,gydF4y2Ba频率gydF4y2Ba来gydF4y2Ba0.5gydF4y2Ba
.这些参数在温度设定点25的上下有变化。gydF4y2Ba
创建并连接gydF4y2Ba范围gydF4y2Ba加热器端口处的查看器。看见gydF4y2Ba添加信号查看器gydF4y2Ba.gydF4y2Ba
将两个输入信号连接到范围查看器。gydF4y2Ba
模拟恒温器模型并评估结果。gydF4y2Ba使用默认模拟设置来验证模型设计。gydF4y2Ba
模拟模型。在模拟运行时,Scope Viewer绘制结果。gydF4y2Ba
打开gydF4y2Ba范围gydF4y2Ba查看范围跟踪。gydF4y2Ba
确定这个结果是否是您所期望的。gydF4y2Ba
最初,室温低于设定温度,继电器打开。当室温达到设定温度时,继电器继续亮,直到室温再升高2度。模拟验证预期的行为。gydF4y2Ba
房间组件的输入是来自加热器组件的热流和外部空气温度。房间组件使用这些输入计算通过墙壁的热损失、通过窗户的热损失和当前房间温度。gydF4y2Ba
设计房间子系统,利用gydF4y2Ba热损失速率方程gydF4y2Ba和gydF4y2Ba变室温方程gydF4y2Ba.gydF4y2Ba
型号改变室温。gydF4y2Ba由式定义了室内温度变化率(dTroom/dt)gydF4y2Ba
期限gydF4y2BadQgain / dtgydF4y2Ba
是来自加热器子系统的信号。gydF4y2Ba
打开房间子系统块。在房间子系统中,添加一个gydF4y2Ba总和gydF4y2Ba块设定gydF4y2Ba符号列表gydF4y2Ba参数gydF4y2Ba| + -gydF4y2Ba
.gydF4y2Ba
连接In1到+输入。输入是热增益(gydF4y2BadQgain / dtgydF4y2Ba
)从加热器组件。-输入连接到热损失(gydF4y2BadQloss/dtgydF4y2Ba
)。gydF4y2Ba
添加gydF4y2Ba获得gydF4y2Ba块设定gydF4y2Ba获得gydF4y2Ba参数gydF4y2Ba1 /(m_room_air * c_air)gydF4y2Ba
.连接的输出gydF4y2Ba总和gydF4y2Ba块的输入gydF4y2Ba获得gydF4y2Ba块。标签信号如图所示。虚线信号线是稍后要连接的信号。gydF4y2Ba
模型室温。gydF4y2Ba输出gydF4y2Ba获得gydF4y2Ba块是室温的变化(gydF4y2BadTroom / dtgydF4y2Ba
)。以获取当前的室温(gydF4y2Ba部队gydF4y2Ba
),集成信号。gydF4y2Ba
添加一个gydF4y2Ba积分商gydF4y2Ba块设定gydF4y2Ba初始条件gydF4y2Ba参数gydF4y2Ba特鲁姆gydF4y2Ba
.gydF4y2Ba
连接的输出gydF4y2Ba积分商gydF4y2Ba如图所示阻塞到Out1。gydF4y2Ba
墙壁和窗户模型热损失。gydF4y2Ba该方程是通过墙壁和窗户的热能损失率:gydF4y2Ba
在Room子系统中,添加一个gydF4y2Ba总和gydF4y2Ba块设定gydF4y2Ba符号列表gydF4y2Ba参数gydF4y2Ba| + -gydF4y2Ba
。右键单击块并选择gydF4y2Ba旋转和翻转gydF4y2Ba>gydF4y2Ba翻转块gydF4y2Ba.gydF4y2Ba
连接gydF4y2Ba部队gydF4y2Ba
到gydF4y2Ba总和gydF4y2Ba块。点击信号线gydF4y2Ba部队gydF4y2Ba
输入+gydF4y2Ba总和gydF4y2Ba块。gydF4y2Ba
再加一个gydF4y2Ba轮廓尺寸gydF4y2Ba块,并将它连接到-输入gydF4y2Ba总和gydF4y2Ba块。将其重命名为外部温度。gydF4y2Ba
再加一个gydF4y2Ba获得gydF4y2Ba块设定gydF4y2Ba获得gydF4y2Ba参数gydF4y2Ba1 / R_equivalentgydF4y2Ba
。右键单击块并选择gydF4y2Ba旋转和翻转gydF4y2Ba>gydF4y2Ba翻转块gydF4y2Ba.gydF4y2Ba
如图所示连接块。gydF4y2Ba
定义房间模型参数。gydF4y2Ba您可以在MATLAB工作区中定义参数,然后在块参数对话框中输入它们的名称。然而,更健壮的方法是使用Simulink模型工作区,它保存模型的参数值。万博1manbetxgydF4y2Ba
在Simuli万博1manbetxnk编辑器中,选择gydF4y2Ba视图gydF4y2Ba>gydF4y2Ba模型浏览器gydF4y2Ba>gydF4y2Ba模型的工作空间gydF4y2Ba.gydF4y2Ba
在模型管理器中,选择gydF4y2Ba添加gydF4y2Ba>gydF4y2BaMATLAB变量gydF4y2Ba.gydF4y2Ba
在中间窗格中,单击新变量gydF4y2BaVargydF4y2Ba
然后输入名字gydF4y2Bam_room_airgydF4y2Ba
. 在右侧窗格中,输入值gydF4y2Ba1470gydF4y2Ba
(公斤)。gydF4y2Ba
添加变量gydF4y2BaT_roomICgydF4y2Ba
=gydF4y2Ba20.gydF4y2Ba
(摄氏度)和gydF4y2BaR_equivalentgydF4y2Ba
=gydF4y2Ba4.329E-7gydF4y2Ba
(小时·度/焦耳)。gydF4y2Ba
为仿真准备房间模型。gydF4y2Ba为仿真准备房间子系统。考虑预期的行为,以及如何使用模拟来测试该行为。当加热器关闭(热增益= 0),且室内初始温度(20)高于室外温度(10)时,热损失应继续进行,直至室内温度与室外温度相等。gydF4y2Ba
从Room子系统中,单击gydF4y2Ba到父gydF4y2Ba按钮gydF4y2Ba以导航到模型的顶层。如图所示调整房间块的大小。gydF4y2Ba
房间方块现在有第二个输入端口。每个导入端口对应一个gydF4y2Ba轮廓尺寸gydF4y2Ba子系统中的块。gydF4y2Ba
添加gydF4y2Ba常数gydF4y2Ba阻塞并将其连接到热增益输入。设定gydF4y2Ba定值gydF4y2Ba参数gydF4y2Ba0gydF4y2Ba
(摄氏度),意味着加热器已经关闭。gydF4y2Ba
再加一个gydF4y2Ba常数gydF4y2Ba块并将其连接到外部温度输入。设置gydF4y2Ba定值gydF4y2Ba参数gydF4y2Ba10gydF4y2Ba
(摄氏度)。gydF4y2Ba
添加并连接agydF4y2Ba范围gydF4y2Ba块,以查看不断变化的室温。gydF4y2Ba
模拟房间模型并评估结果gydF4y2Ba
在工具栏中,设置gydF4y2Ba仿真停止时间gydF4y2Ba来gydF4y2Ba20.gydF4y2Ba
.gydF4y2Ba
模拟模型。gydF4y2Ba
打开Scope并单击gydF4y2Ba自动缩放gydF4y2Ba按钮gydF4y2Ba查看范围跟踪。gydF4y2Ba
确定这个结果是否是您所期望的。gydF4y2Ba
中设置的初始室温开始gydF4y2Ba积分商gydF4y2Ba块由于热增益为0,信号衰减到外部温度(10)。模拟验证了预期的行为。gydF4y2Ba
为第二次模拟准备房间模型。gydF4y2Ba将恒定的外部温度设置为高于初始室温(20)的值。gydF4y2Ba
在gydF4y2Ba常数gydF4y2Ba连接外部温度输入的块,设置gydF4y2Ba定值gydF4y2Ba来gydF4y2Ba30.gydF4y2Ba
(摄氏度)。gydF4y2Ba
模拟模型和评价结果gydF4y2Ba
模拟模型。gydF4y2Ba
打开Scope并单击gydF4y2Ba自动缩放gydF4y2Ba按钮gydF4y2Ba查看范围跟踪。gydF4y2Ba
确定这个结果是否是您所期望的。gydF4y2Ba
室温从最初设定的温度20开始,但在加热器关闭(热增益=0)的情况下,室温上升到外部温度-模型没有明确规定这一行为,可能被认为是意外的。gydF4y2Ba
当外部温度高于室内温度时,模拟热损失的方程也模拟了热获得。虽然模型没有明确指定加热器关闭时的行为,但结果在物理上是有意义的。gydF4y2Ba
连接模型组件,添加真实输入,然后随时间模拟模型行为以验证整个模型。请参见基本建模工作流:gydF4y2Ba集成模型gydF4y2Ba.gydF4y2Ba
为了模拟没有房间子系统的加热器和恒温器子系统,您需要一个用于更换室温的信号。用一个gydF4y2Ba常数gydF4y2Ba块设置节温器温度和温度gydF4y2Ba正弦波gydF4y2Ba阻挡一个真实的外部温度信号。gydF4y2Ba
为模拟准备模型gydF4y2Ba
打开包含已完成子系统的模型。删除为测试单独组件而添加的所有块。gydF4y2Ba
打开房间子系统。双击gydF4y2Ba轮廓尺寸gydF4y2Ba块标记为热增益。在“导入”对话框中设置gydF4y2Ba端口号gydF4y2Ba来gydF4y2Ba2gydF4y2Ba
.热增益端口移动到房间子系统的底部。gydF4y2Ba
从温控器子系统输出连接加热器(开/关)信号到加热器子系统输入。gydF4y2Ba
添加gydF4y2Ba常数gydF4y2Ba块设置恒温器的室温。集gydF4y2Ba常数gydF4y2Ba价值gydF4y2Ba20.gydF4y2Ba
(摄氏度)。gydF4y2Ba
添加gydF4y2Ba正弦波gydF4y2Ba块表示不断变化的室温。设置参数gydF4y2Ba振幅gydF4y2Ba至10(摄氏度),,gydF4y2Ba偏见gydF4y2Ba来gydF4y2Ba15gydF4y2Ba
,gydF4y2Ba频率gydF4y2Ba来gydF4y2Ba0.5gydF4y2Ba
.gydF4y2Ba
如图所示连接块。gydF4y2Ba
添加Scope查看器,并添加来自Heater、Constant和Sine Wave模块的输出信号。看到gydF4y2Ba添加信号查看器gydF4y2Ba.gydF4y2Ba
在Scope查看器窗口中,在gydF4y2Ba配置属性gydF4y2Ba按钮gydF4y2Ba单击箭头,然后单击gydF4y2Ba布局gydF4y2Ba偶像gydF4y2Ba
选择two boxes. A second empty graph appears below the first.
从工具栏中,单击gydF4y2Ba信号选择器gydF4y2Ba按钮gydF4y2Ba选择gydF4y2Ba
显示1gydF4y2Ba
.选择gydF4y2Ba加热器gydF4y2Ba复选框。gydF4y2Ba
选择gydF4y2Ba显示2gydF4y2Ba
.选择gydF4y2Ba常数gydF4y2Ba和gydF4y2Ba正弦波gydF4y2Ba复选框。gydF4y2Ba
模拟模型并评估结果。gydF4y2Ba使用默认停止时间10来模拟模型。gydF4y2Ba
模拟模型。gydF4y2Ba
打开范围查看器并查看模拟结果。上图是加热器增益,下图是用正弦波模拟的变化的室温。gydF4y2Ba
确定这个结果是否是您所期望的。gydF4y2Ba
从0到1.5小时,加热器打开。热量不是恒定的,而是变化的,因为热量是加热器空气温度和室内空气温度之间的差的函数。从1.5小时到5.6小时,加热器关闭,热增益(上图)为零。模拟确认了预期的行为。gydF4y2Ba
要用房间子系统模拟加热器和恒温器子系统,需要外部温度变化的信号。通过模拟模型,可以观察恒温器设置和室外温度如何影响室内温度。gydF4y2Ba
为模拟准备模型gydF4y2Ba
使用已完成的子系统打开您的模型。删除添加以测试单独组件的任何块。gydF4y2Ba
如图所示连接子系统。gydF4y2Ba
添加gydF4y2Ba常数gydF4y2Ba设置室温块。集gydF4y2Ba定值gydF4y2Ba参数gydF4y2Ba20.gydF4y2Ba
(摄氏度)。gydF4y2Ba
添加gydF4y2Ba一个正弦波gydF4y2Ba块代表改变的外部温度。集gydF4y2Ba振幅gydF4y2Ba来gydF4y2Ba5gydF4y2Ba
,gydF4y2Ba偏见gydF4y2Ba来gydF4y2Ba12gydF4y2Ba
,gydF4y2Ba频率gydF4y2Ba来gydF4y2Ba2*pi/24gydF4y2Ba
,gydF4y2Ba阶段gydF4y2Ba来gydF4y2Ba180gydF4y2Ba
.gydF4y2Ba
添加gydF4y2Ba范围查看器gydF4y2Ba块以查看模拟结果。gydF4y2Ba
在信号查看器中,单击gydF4y2Ba信号选择器gydF4y2Ba按钮gydF4y2Ba. 在“信号选择器”对话框的左窗格中,选择顶部模型层次。在右侧窗格中,选择房间和正弦波信号。gydF4y2Ba
模拟模型和评价结果gydF4y2Ba
将模拟停止时间设置为gydF4y2Ba24gydF4y2Ba
(小时)表示一天。gydF4y2Ba
模拟模型。gydF4y2Ba
打开Scope Viewer并查看结果。gydF4y2Ba
确定模拟结果是否符合您的期望。gydF4y2Ba
当外界温度低于设定的室温时,室温在设定温度上下波动2度。由于恒温子系统包括2度迟滞,这个仿真结果是预期的。gydF4y2Ba
您可以将结果与示例模型进行比较gydF4y2Ba
open_system (fullfile (matlabroot,……'help', 'toolbox', '万博1manbetxsimulink', 'examples', 'ex_househeat_modeling_prepared'))gydF4y2Ba
ex_househeat_modeling_prepared.slx.gydF4y2Ba
.gydF4y2Ba优化模型参数。gydF4y2Ba使用Sim万博1manbetxulink模型,可以交互地更改模型参数,然后观察模型行为中的更改。这种方法允许您快速评估模型并验证设计。gydF4y2Ba
改变室内的室外温度gydF4y2Ba正弦波gydF4y2Ba阻塞,使上限值高于设定温度。gydF4y2Ba
在正弦波对话框中,设置gydF4y2Ba振幅gydF4y2Ba来gydF4y2Ba5gydF4y2Ba
和gydF4y2Ba偏见gydF4y2Ba来gydF4y2Ba19gydF4y2Ba
. 这些设置显示当外部温度高于内部温度时发生的情况。gydF4y2Ba
模拟模型并查看结果。gydF4y2Ba
确定结果是否符合你的期望。gydF4y2Ba
当室外温度高于设定温度时,室内温度随室外温度变化,并略有延迟。在这种情况下,热量损失的作用方向相反,它表示从外部环境到房间的热量损失。gydF4y2Ba
为外部接口建模,以便进一步测试和可能在更大的模型中使用。在Si万博1manbetxmulink中,您可以使用gydF4y2Ba轮廓尺寸gydF4y2Ba和gydF4y2Ba外港gydF4y2Ba块。gydF4y2Ba
添加gydF4y2Ba轮廓尺寸gydF4y2Ba块从外部温度和恒温器设置到模型中的数据。gydF4y2Ba
添加gydF4y2Ba外港gydF4y2Ba块将外部温度和室温连接到更大的模型或可视化结果。gydF4y2Ba
通过为模型信号指定物理单位,可以确保跨模型组件计算的一致性。在Simulink中,可以通过以下方式指定信号单位:万博1manbetxgydF4y2Ba轮廓尺寸gydF4y2Ba和gydF4y2Ba外港gydF4y2Ba块。gydF4y2Ba
双击gydF4y2BaIn1.gydF4y2Ba
block可打开“块参数”对话框。选择gydF4y2Ba信号属性gydF4y2Ba标签。gydF4y2Ba
在gydF4y2Ba单位gydF4y2Ba框,输入gydF4y2Ba学位gydF4y2Ba
.从符号和名称列表中选择gydF4y2Ba°C degree_CelsiusgydF4y2Ba
.gydF4y2Ba
对于剩余温度gydF4y2Ba轮廓尺寸gydF4y2Ba和gydF4y2Ba外港gydF4y2Ba块,设置gydF4y2Ba单位gydF4y2Ba参数gydF4y2Ba°C degree_CelsiusgydF4y2Ba
.gydF4y2Ba
显示模块端口上的单元。从菜单中选择gydF4y2Ba显示gydF4y2Ba>gydF4y2Ba信号和港口gydF4y2Ba>gydF4y2Ba口岸单位gydF4y2Ba.gydF4y2Ba
双击加热器gydF4y2Ba子系统gydF4y2Ba块。双击热增益gydF4y2Ba外港gydF4y2Bablock可打开“块参数”对话框。选择gydF4y2Ba信号属性gydF4y2Ba标签。gydF4y2Ba
在gydF4y2Ba单位gydF4y2Ba框,输入gydF4y2Ba焦耳/小时gydF4y2Ba
.从符号和名称列表中选择gydF4y2Ba焦耳/小时焦耳/小时gydF4y2Ba
.gydF4y2Ba
更新模型。新闻gydF4y2BaCtrl + DgydF4y2Ba.gydF4y2Ba
下一步是通过比较仿真和实际系统数据来验证模型的正确性。gydF4y2Ba
初始模拟后,可以使用结果改进模型,使模型行为与测量数据相匹配。准备模拟模型后,可以使用接口输入测量的系统数据并设置室温。gydF4y2Ba
要加载完成的示例模型,在MATLAB命令窗口中输入gydF4y2Ba
copyfile(完整文件(matlabroot、‘帮助’、‘工具箱’、‘simulink’、‘示例’、‘万博1manbetxex\u househeat\u measured\u data.mat’)gydF4y2Ba
打开系统(完整文件(matlabroot、‘帮助’、‘工具箱’、‘simulink’、‘示例’、‘ex\u ho万博1manbetxuseheat\u simulation\u prepared’)gydF4y2Ba
验证模拟是否代表您所建模的系统的行为。首先通过实验测量模型中具有可比信号的系统的物理特性:gydF4y2Ba
从物理系统中收集数据gydF4y2Ba
为仿真准备模型gydF4y2Ba
有关工作流程的详细描述,请参阅gydF4y2Ba准备模拟gydF4y2Ba.gydF4y2Ba
测量实际住宅供暖系统的动态特性。您将使用模型模拟的测量数据来验证您的模型的行为和准确性。gydF4y2Ba
24小时内每6分钟测量一次室内和室外温度。gydF4y2Ba
将测量的数据输入到Microsoft中gydF4y2Ba®gydF4y2BaExcelgydF4y2Ba®gydF4y2Ba工作表或打开示例电子表格。在MATLAB命令窗口中,输入gydF4y2Ba
Winopen(全文件(Matlabroot,...'帮助','toolbox','simulink',万博1manbetx'examplear','ex_househeat_measured_data.xls'))gydF4y2Ba
检查测量数据的图。内部温度数据显示温度峰值时,热空气加热器打开。这种模式是典型的热空气加热系统。gydF4y2Ba
通过添加用于数据输入和输入控制信号的外部接口,准备用于仿真的模型。gydF4y2Ba
使用您在教程中创建的模型gydF4y2Ba动态系统建模与仿真gydF4y2Ba或者打开示例模型。在MATLAB命令窗口中,输入gydF4y2Ba
Open_System(FullFile(Matlabroot,...'帮助','toolbox','simul万博1manbetxink','examplear','ex_househeat_modeling'))gydF4y2Ba
取代gydF4y2Ba轮廓尺寸gydF4y2Ba块gydF4y2BaIn2.gydF4y2Ba
用一个gydF4y2Ba常数gydF4y2Ba阻塞并设置gydF4y2Ba常数gydF4y2Ba参数gydF4y2Ba20.gydF4y2Ba
.的gydF4y2Ba常数gydF4y2Ba块设置恒温器温度。gydF4y2Ba
添加一个gydF4y2Ba轮廓尺寸gydF4y2Ba块。集gydF4y2Ba端口号gydF4y2Ba来gydF4y2Ba1gydF4y2Ba
. 此操作还设置了gydF4y2Ba端口号gydF4y2Ba外部温度信号gydF4y2Ba2gydF4y2Ba
.gydF4y2Ba
重命名第一个gydF4y2Ba轮廓尺寸gydF4y2Ba阻止gydF4y2Ba内部温度gydF4y2Ba
.重命名第二gydF4y2Ba轮廓尺寸gydF4y2Ba阻止gydF4y2Ba室外温度gydF4y2Ba
.gydF4y2Ba
添加一个gydF4y2Ba外港gydF4y2Ba阻塞并连接到第一个gydF4y2Ba轮廓尺寸gydF4y2Ba块(内部温度)。需要输出块来保存(记录)信号。集gydF4y2Ba端口号gydF4y2Ba来gydF4y2Ba1gydF4y2Ba
.gydF4y2Ba
验证模型的准确性,优化参数。需要考虑优化的参数包括加热器迟滞、温度偏移和房屋的热损失阻力。遵循以下步骤来验证您的模型:gydF4y2Ba
导入数据gydF4y2Ba
运行仿真gydF4y2Ba
评估仿真结果gydF4y2Ba
改变模型参数gydF4y2Ba
重新运行模拟gydF4y2Ba
有关工作流程的详细描述,请参阅gydF4y2Ba为基本仿真工作流运行和评估仿真gydF4y2Ba.gydF4y2Ba
您可以使用Root import Mapper工具将测量到的信号数据从Excel电子表格导入到Simulink模型中。万博1manbetxgydF4y2Ba
打开任何输入块。单击gydF4y2Ba连接输入gydF4y2Ba按钮以打开根导入映射器。gydF4y2Ba
在工具条上,单击gydF4y2Ba从电子表格gydF4y2Ba.gydF4y2Ba
在“从电子表格”对话框中,单击浏览按钮。浏览并选择该文件gydF4y2Ba
.点击gydF4y2Ba打开gydF4y2Ba.点击gydF4y2Ba好吧gydF4y2Ba导入电子表格。gydF4y2BamatlabrootgydF4y2Ba
帮助\ \工具箱\仿真软件\万博1manbetx \ ex_househeat_measured_data.xls例子gydF4y2Ba
从gydF4y2Ba信号gydF4y2Ba下拉列表中,选择gydF4y2Ba预览信号gydF4y2Ba.gydF4y2Ba
在左侧,展开的树视图gydF4y2BaSheet1gydF4y2Ba
. 选中“内部温度”和“外部温度”复选框。gydF4y2Ba
点击gydF4y2Ba关闭信号预览gydF4y2Ba.gydF4y2Ba
在左侧,选择gydF4y2BaSheet1gydF4y2Ba
.的gydF4y2Ba情景信号gydF4y2Ba列显示来自Excel电子表格和图标的两个信号gydF4y2Ba指示信号未映射。gydF4y2Ba
在工具条上,选择gydF4y2Ba港口订单gydF4y2Ba选项从gydF4y2Ba选项gydF4y2Ba从下拉列表中,选择gydF4y2Ba更新模型gydF4y2Ba复选框。gydF4y2Ba
从gydF4y2Ba映射到模型gydF4y2Ba下拉列表中,选择gydF4y2Ba地图未连接gydF4y2Ba
.映射摘要显示映射到的Excel电子表格的信号gydF4y2Ba输入gydF4y2Ba端口模块。gydF4y2Ba
点击gydF4y2Ba马克的模拟gydF4y2Ba.映射摘要显示gydF4y2BaSheet1gydF4y2Ba
标记为模拟和gydF4y2Ba数据集gydF4y2Ba
对象是在MATLAB工作区中创建的。gydF4y2Ba
将信号数据保存在MAT文件中。在MATLAB命令窗口中,键入gydF4y2Ba
保存('ex_house heat_measured_data.mat','Sheet1')gydF4y2Ba
映射到输入端口的信号数据位于MATLAB工作空间变量中。对于每个新的MATLAB会话,您必须手动重新加载数据或让模型预加载函数为您做这件事。gydF4y2Ba
从Simulink万博1manbetx编辑器菜单中选择gydF4y2Ba文件gydF4y2Ba>gydF4y2Ba模型属性gydF4y2Ba>gydF4y2Ba模型属性gydF4y2Ba.gydF4y2Ba
选择gydF4y2Ba回调gydF4y2Ba标签。gydF4y2Ba
在模型回调部分中,选择PreLoadFcn。gydF4y2Ba
在“模型预加载”功能框中,输入gydF4y2Ba
负荷('ex_house heat_measured_data.mat')gydF4y2Ba
点击gydF4y2Ba好吧gydF4y2Ba.gydF4y2Ba
配置您的模型以在模拟期间保存(日志)信号数据。然后,您可以使用Simulink数据检查器从模拟中查看记录的信号。万博1manbetxgydF4y2Ba
在模型中,选择gydF4y2Ba模拟gydF4y2Ba>gydF4y2Ba模型配置参数gydF4y2Ba. 在左侧窗格中,选择gydF4y2Ba数据导入/导出gydF4y2Ba.gydF4y2Ba
在右窗格中,清除gydF4y2Ba时间gydF4y2Ba和gydF4y2Ba输出gydF4y2Ba复选框。gydF4y2Ba
选择gydF4y2Ba信号测井gydF4y2Ba复选框。gydF4y2Ba
选择gydF4y2Ba在模拟数据检查器中记录记录的工作空间数据gydF4y2Ba复选框。gydF4y2Ba
点击gydF4y2Ba好吧gydF4y2Ba.gydF4y2Ba
识别要在Simulink Data Inspector中显示的信号,如万博1manbetx果未命名,则为信号命名,并设置日志记录参数。gydF4y2Ba
右键单击内部温度信号线并选择gydF4y2Ba属性gydF4y2Ba.gydF4y2Ba
在gydF4y2Ba信号的名字gydF4y2Ba框,输入gydF4y2Ba测量室温gydF4y2Ba
.选择gydF4y2Ba测井信号数据gydF4y2Ba复选框。一个日志徽章gydF4y2Ba出现在信号线上。gydF4y2Ba
为这些信号命名并选择日志记录。gydF4y2Ba
信号机位置gydF4y2Ba | 信号的名字gydF4y2Ba |
---|---|
来自输出端口2的外部温度。gydF4y2Ba | 室外温度测量gydF4y2Ba |
来自房间子系统输出端口的室温gydF4y2Ba | 室温gydF4y2Ba |
导入数据并启用信号的数据记录后,可以运行模拟。gydF4y2Ba
使用为模拟准备的模型或打开示例模型。在MATLAB命令窗口中,输入gydF4y2Ba
打开系统(完整文件(matlabroot、‘帮助’、‘工具箱’、‘simulink’、‘示例’、‘ex\u ho万博1manbetxuseheat\u simulation\u prepared’)gydF4y2Ba
在Simuli万博1manbetxnk编辑器工具栏上,设置gydF4y2Ba停止时间gydF4y2Ba来gydF4y2Ba24gydF4y2Ba
(小时)。gydF4y2Ba
点击gydF4y2Ba跑gydF4y2Ba按钮gydF4y2Ba.gydF4y2Ba
模型模拟运行gydF4y2Ba0.0gydF4y2Ba
来gydF4y2Ba24gydF4y2Ba
使用外部温度数据gydF4y2Ba根导入块gydF4y2Ba作为输入。gydF4y2Ba
使用Simuli万博1manbetxnk数据检查器将模拟输出信号与测量数据进行比较。gydF4y2Ba
在Simuli万博1manbetxnk编辑器工具栏上,单击gydF4y2Ba模拟数据检查器gydF4y2Ba按钮gydF4y2Ba.gydF4y2Ba
单独运行出现在gydF4y2Ba跑gydF4y2Ba每次模拟模型时都会显示一个窗格。gydF4y2Ba
选择所有信号复选框。这个图表显示了你选择的每个信号的曲线图。gydF4y2Ba
顶部信号是测量的室温。中间信号是测得的外部温度。底部信号是模拟的室温。gydF4y2Ba
模型的一个明显变化是恒温器的滞后。模拟的室温在设定点20度周围振荡18-22度。测量的室温以相同的设定点振荡20-25度。gydF4y2Ba
打开gydF4y2Ba继电器gydF4y2Ba阻塞在恒温子系统中。gydF4y2Ba
改变gydF4y2Ba接通点gydF4y2Ba从gydF4y2Ba2gydF4y2Ba
来gydF4y2Ba0gydF4y2Ba
因为室温和设定值的差是0。gydF4y2Ba
改变gydF4y2Ba切断点gydF4y2Ba从gydF4y2Ba-2gydF4y2Ba
来gydF4y2Ba-5gydF4y2Ba
.当房间温度在设定点上方5度时,要关闭加热器。设定点低于室温下方5度。gydF4y2Ba
使用仿真数据检查器来比较使用不同模型参数的两个仿真之间的差异。这个比较显示了更改如何提高模型的准确性。gydF4y2Ba
模拟模型。gydF4y2Ba
打开仿真数据检查器。gydF4y2Ba
通过选择运行左侧的箭头,展开记录的信号列表。为gydF4y2Ba运行1gydF4y2Ba,选择gydF4y2Ba室外温度测量gydF4y2Ba
和gydF4y2Ba测量室温gydF4y2Ba
复选框。为gydF4y2BaRun2gydF4y2Ba,选择gydF4y2Ba室温gydF4y2Ba
复选框。gydF4y2Ba
检查信号。模拟室温的最小值和最大值现在与测量的室温值相匹配。gydF4y2Ba