SimScape热模块学习笔记


前言

近期着手做关于BMS相关的工作,准备使用Simulink建模方式完成BMS算法,传统的BMS算法大多基于电流积分+OCV查表修正的方法,现在比较新的方式是建立电池的等效电路模型,使用实验方法获取电池动态实验数据,通过Simulink参数估算工具得到等效电路的各个参数,然后使用实验的校验数据对参数进行校验,获得较好的电池模型参数。 Simulink提供了Battery模型(Electrical/Source/Battery(Table-Based)),可以选择最多5阶的RC网络。在学习其电池模型资料时,对于模型中的SimScape热相关模块没搞明白怎么用,度娘上也没有很好的文章可供学习,仔细阅读了Simulink的帮助文件,有了点心得,特做以记录。

本文主要通过Mathworks提供的房屋加热模型示例进行学习,文章的pdf资料,可在这里下载
https://download.csdn.net/download/sonicss/15935022


Mathworks公司提供了2阶RC网络等效电路模型的示例,是初学BMS建模的比较好的学习范例。


注1:MATLAB网址:https://www.mathworks.com/help/physmod/simscape/ug/lithium-battery-cell-two-rc-branch-equivalent-circuit.html
注2:打开该网页后,点击右上角的View MATLAB Command,复制该命令后直接在MATLAB里输入运行即可打开该模型(ssc_lithium_cell_2RC)

双击Controlled Temperature Source模型,点击Help,查看帮助,这是一个通过S脚来控制温度输出的模块,A为输入,B为输出。在帮助文档的下方,看到一个模型实例,是房屋加热系统Heating House System,借助该实例,可以对SimScape进行进一步学习。


注1:MATLAB网址:https://www.mathworks.com/help/physmod/simscape/ug/house-heating-system.html?s_tid=srchtitle
注2:打开该网页后,点击右上角的View MATLAB Command,复制该命令后直接在MATLAB里输入运行即可打开该模型(ssc_house_heating_system)

该模型主要由3部分组成,分别是自动调温器(Thermostat),加热器(Heater),房屋热学模型(House Thermal Network)

自动调温器:受Heater Switch开关控制,使用MATLAB语言编写,在使能状态下,室温低于最小阈值,打开调温器进行加热,高于最大阈值,关闭调温器。

加热器:使用Simulink搭建,通过房屋温度,加热器出风口,出风口流量计算出加热器输出的热量。

加热器出风口温度与房间温度之差,通过HeatGain进行运算得到出风口每秒热量,由传递函数变换后输出。
此处拉式变换传递函数为
10.5s+1\frac{1}{0.5s+ 1}0.5s+11​
其对应时域函数为
2e−2t2e^{-2t}2e−2t
注:此处不清楚传递函数如何确定,有清楚的还请多多指教

房屋热学模型:房屋模型由房屋内的空气、屋顶、墙壁、窗户以及外部大气进行热学建模。

从左到右依次为:
1:Thermal Mass Air(房屋内的空气热量):(房屋内的空气质量x空气比热容),空气的质量由室内体积x空气密度得到
2:Air-Roof/Wall/Window Convection(空气对屋顶、墙壁和窗户的热对流)

热传输公式:
Q=k⋅A⋅(TA−TB)Q=k·A·(TA-TB)Q=k⋅A⋅(TA−TB)
k:对流换热系数
A:面积
TA-TB:温差
3:Half Roof/Wall/Window-Air Conduction(一半厚度的屋顶、墙壁和窗户热传导)

热传输公式:
Q=k⋅AD⋅(TA−TB)Q = k·\frac{A}{D}·(TA-TB)Q=k⋅DA​⋅(TA−TB)
k:导热系数
A:面积
D:厚度
TA-TB:温差
4:Thermal Mass Roof/Wall/Window:屋顶、墙壁和窗户的热量
5:Half Roof/Wall/Window-Air Conduction(一半厚度的屋顶、墙壁和窗户热传导)同3
6:Controlled Temperature Source(房屋外大气的温度)

每一个模块,都可以通过查询其帮助文档查看具体公式,我对该模型的理解为:室内的空气,具有一定的热量,该热量通过屋顶、墙壁和窗户与屋外的大气进行热交换

热交换过程就是
1:屋内空气的热量与屋顶、墙壁和窗户通过对流形式进行热交换
2:屋顶、墙壁和窗户内部的热传导和热量存储
3:屋顶、墙壁和窗户与外界大气通过对流形式进行热交换

模型考虑了屋顶、墙壁和窗户本身具有热量存储的能力,所以加了Thermal Mass模型,热交换分为对流和热传导两种形式,其中对流的换热系数与风速是有很大关系的,在模型中取值都不大,参考了百度百科:
https://baike.baidu.com/item/%E5%AF%B9%E6%B5%81%E6%8D%A2%E7%83%AD%E7%B3%BB%E6%95%B0/1001540

对流换热系数的大致量级(单位:W/(m2*K)) [1] :
空气自然对流 5 ~ 25
气体强制对流 20 ~ 300 【原文是20-100,查询了很多资料应该是20-300】
水的自然对流 200 ~1000
水的强制对流 1000 ~ 15000
油类的强制对流 50 ~ 1500
水蒸气的冷凝 5000 ~ 15000
有机蒸汽的冷凝 500 ~ 2000
水的沸腾 2500 ~ 25000

运行该模型,查看示波器的波形

注1:紫色曲线:室内温度
黄色曲线:环境温度

在室内温度低于18度时,加热器开始加热,房屋温度升温,到达23度时加热器关闭,屋内热量与外界环境进行热交换,屋内温度逐渐降低,当室内温度低于18度时又进行加热,如此往复。
这里可以看到紫色的波形,其宽度是不一样的,若环境温度较低,其宽度较窄,说明屋内热量散失较快,室内温度下降较快。在室外温度较高时(曲线处于波峰),室内热量散失很小,温度下降很慢。

以下是该模型的初始化代码,各个参数都在该初始化代码中进行赋值(在模型属性->CallBacks->InitFcn里查看)

% Simscape Demo "House Heating System"
max_temp = 23; % Maximum temperature
min_temp = 18; % Minimum temperature
% Walls
% House length = 30 m
lenHouse = 30;
% House width = 10 m
widHouse = 10;
% House height = 4 m
htHouse = 4;
wallArea = 2*lenHouse*htHouse + 2*widHouse*htHouse;
LWall = .2;
wallVolume = wallArea * LWall;
wallDensity = 1920; % kg/m^3
wallMass = wallVolume * wallDensity;
c_wall = 835; % J/kg/K
kWall = 0.038; % Thermal conductivity [W/m/K]
% -------------------------------
% Windows
% Number of windows = 6
numWindows = 6;
% Height of windows = 1 m
htWindows = 1;
% Width of windows = 1 m
widWindows = 1;
windowArea = numWindows*htWindows*widWindows;
LWindow = .01;
windowVolume = windowArea * LWindow;
windowDensity = 2700; % kg/m^3
windowMass = windowVolume * windowDensity;
c_window = 840; % J/kg/K
kWindow = 0.78; % Thermal conductivity [W/m/K]
% -------------------------------
% Roof
% Roof pitch = 40 deg
pitRoof = 40/180/pi;
roofArea = 2*(1/cos(pitRoof/2))*widHouse*lenHouse + tan(pitRoof)*widHouse;
LRoof = 0.2;
roofVolume = roofArea * LRoof;
roofDensity = 32; % Glass fiber
roofMass = roofVolume * roofDensity;
kRoof = 0.038; % Thermal conductivity [W/m/K]
c_roof = 835; % J/kg/K
% -------------------------------
% Convective heat gransfer coefficients (W/M^2/K)
h_A_W = 24; % Air-wall
h_W_Atm = 34; % Wall-atmosphere
h_A_Wnd = 25; % Air-window
h_Wnd_Atm = 32; % Window-atmosphere
h_A_R = 12; % Air-roof
h_R_Atm = 38; % Roof-atmosphere
% -------------------------------
%Air
% Density of air at sea level = 1.2250 kg/m^3
densAir = 1.2250;
% Air mass inside the house
M_air = (lenHouse*widHouse*htHouse+tan(pitRoof)*widHouse*lenHouse)*densAir;
c_air = 1005.4; % cp of air at 273 K [J/(kg*K]
% -------------------------------
% Heater
% The air exiting the heater has a constant temperature which is a heater
% property. THeater = 50 deg C
THeater = 50;
HeaterAirFlow = 1; % Heater air flow rate [kg/s]
% -------------------------------
% Cost of electricity
% Assume the cost of electricity is $0.09 per kilowatt/hour
% Assume all electric energy is transformed to heat energy
% 1 kW-hr = 3.6e6 J
% cost = $0.09 per 3.6e6 J
cost = 0.09/3.6e6;
% -------------------------------
% Initial internal temperatures
TinIC = 20; % deg C

学习完该模型,回过头来再看电池的热模型,就比较容易理解了 ![图6 电池模型](https://img-blog.csdnimg.cn/20210320110049411.png) 环境温度经过可控温度源和热对流模块与电池模型相连 热对流模块的参数分别是cell_area和h_conv cell_area为电池表面积 h_conv为空气中的换热系数,这里取值为5,即认为无风条件

电池模型中Thermal中有2个参数
cell_mass为电池质量
cell_Cp_heat为电池比热容

运行该模型,可以看到电池温度随着电池充电、放电时升高,静置时电池热量与外界环境进行热交换而温度逐渐下降。

随笔:老刀
Email:sos_lxb@sina.com
2021-03-19 杭州

SimScape热模块学习笔记相关推荐

  1. cocos2dx掼蛋_cocos2dx游戏开发——别踩白块学习笔记(一)——Block类

    一.Block类介绍 当然啦,Block类在这个游戏里就是必需品= =,因为整体都是由这个搞出来的,所以我们可以把游戏需要实现的功能都放在这里. 主要有下面这些功能(经典模式): 1.创建一个Bloc ...

  2. Windows phone 8 学习笔记(5) 图块与通知

    基于metro风格的Windows phone 8 应用提到了图块的概念,它就是指启动菜单中的快速启动图标.一般一个应用必须有一个默认图块,还可以有若干个次要图块.另外,通知与图块的关系比较密切,我们 ...

  3. oracle protocol=beq 不可用,学习笔记:Oracle数据库坏块 深入研究obj$坏块导致exp/expdp不能执行原因...

    天萃荷净 深入研究Oracle坏块obj$导致exp/expdp不能执行导出的原因 上篇(案例:Oracle出现obj$坏块exp/expdp导出不能导出的解决办法ORA-01578 ORA-0111 ...

  4. ES6基础2(块级作用域、数组对象解构)-学习笔记

    文章目录 ES6基础2(块级作用域.数组对象解构)-学习笔记 块级作用域 数组解构 对象解构 字符串解构 函数的参数解构 ES6基础2(块级作用域.数组对象解构)-学习笔记 块级作用域 //let c ...

  5. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  6. Oracle之PL/SQL学习笔记之有名块练习

    2019独角兽企业重金招聘Python工程师标准>>> Oracle之PL/SQL学习笔记之有名块练习 存储过程案例: 案例1: 根据雇员姓名跟新雇员工资,如果雇员不存在输出没有该雇 ...

  7. oracle 11g dul,学习笔记:Oracle dul数据挖掘 导出Oracle11G数据文件坏块中表中

    试验模拟导出Oracle 11G数据库中数据文件坏块中表中的数据 以前一直以为dul对应的版本只能恢复最高的数据库版本一致,今天测试发现dul 10可以恢复11g最新版的数据库. 模拟环境SQL> ...

  8. oracle强制拉库跳过recovery,学习笔记:Oracle坏块 数据库recover恢复时遇到坏块的解决思路案例...

    天萃荷净 recover遇到坏块处理本质探讨,记录一次在Oracle数据库recover恢复过程中,遇到数据库坏块无法恢复的解决思路案例 如果在还原出来的数据文件中有坏块,而归档日志和联机日志是正常的 ...

  9. JAVASE的学习笔记(四)(抽象类,代码块,接口)

    JAVASE的学习笔记(四) 抽象类与接口 JAVASE的学习笔记(四) 代码块 例题: 静态代码块 加载类的方法 手动加载类 抽象类(**只能被继承使用,自己应该无法创建对象**) 重要: 抽象类由 ...

最新文章

  1. VTK:绘制轴AXES用法实战
  2. boost::process::env相关的测试程序
  3. 【Qt】QModbusTcpConnectionObserver类
  4. 【Envi风暴】Envi 5.1平台下植被覆盖度(VFC)的遥感估算
  5. 最全高考分数线出炉!!查了分后,这届学生为了过线真是太拼了.......
  6. 新零售:从上云到云原生 Serverless
  7. BiSeNet V2论文及源码
  8. EhCache缓存学习
  9. CXF开发WebService服务器端
  10. 阿里云 OSS 图片水印
  11. 19c(19.3) 单机数据库静默安装
  12. jfinal,jxl导出excel遇到的异常
  13. Gartner:浪潮存储进入分布式存储前三
  14. (Yuni)2021-02-16常见的DOS命令使用
  15. 【眼见为实】数据库并发问题 封锁协议 隔离级别
  16. 了解WEB前端开发吗,风风雨雨30年,前端开发变迁史
  17. matlab 稀疏随机矩阵,MATLAB中的稀疏数组
  18. 搜狗2015校园招聘java工程师面经
  19. CSS 尺寸(Dimension)
  20. 装饰你的手机通讯录-同步微信头像

热门文章

  1. 【Java Web】支付宝 AliPay 功能
  2. css 圆形渐变边框以及 居中布局
  3. 2021-2027全球与中国CCTV长焦变焦镜头市场现状及未来发展趋势
  4. 浴谷 P1768 天路
  5. Linux下如何判断服务器是虚拟机还是物理机?
  6. Elasticsearch学习笔记(一)(最详细专题)
  7. ubuntu 18.0.4安装无线网卡驱动
  8. javascript断点调试
  9. 关于Typora的卡顿
  10. mongodb Index(2)