欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

代码生成 | 安时积分法模型搭建

程序员文章站 2022-03-07 20:19:13
安时积分法是电池电量计量最基础的方法,今天我们用simulink建模的方式做一个安时积分模型,从而更好地理解安时积分的思想也掌握建模的基础操​新建文件打开MATLAB启动simulink新建一个模型文件定义变量和手写代码一样,先定义几个后面要用到的变量,在simulink建模时新建变量用Data Store Memory模块。双击填入要定义的变量名,然后在signal attributes赋初值如此方法新建四个变量current(电流)初值1000mA、tatol_cap(总容量...

安时积分法是电池电量计量最基础的方法,今天我们用simulink建模的方式做一个安时积分模型,从而更好地理解安时积分的思想也掌握建模的基础操

​新建文件

打开MATLAB启动simulink新建一个模型文件

代码生成 | 安时积分法模型搭建定义变量

和手写代码一样,先定义几个后面要用到的变量,在simulink建模时新建变量用Data Store Memory模块。双击填入要定义的变量名,然后在signal attributes赋初值

代码生成 | 安时积分法模型搭建

代码生成 | 安时积分法模型搭建

如此方法新建四个变量current(电流)初值1000mA、tatol_cap(总容量)初值2Ah、now_cap(当前容量)初值3600、soc(电量);代码生成 | 安时积分法模型搭建

当鼠标放置在Data Store Memory模块上时左右两边会出来两个箭头,按住鼠标拖动左边的箭头可以出来Data Store Write也就是写变量给变量写入一个值,拖动右边的箭头可以出来Data Store Read即读出变量的值;

代码生成 | 安时积分法模型搭建

搭建模型

先把current的单位换算成mA用到了gain模块除以1000,时间单位为1累计的电流和当前容量加和用到的add模块再将新值赋给now_cap

代码生成 | 安时积分法模型搭建

对总容量进行单位转换将Ah乘以3600分别用到常数模块和乘法运算模块这样上半部分和下半部分的单位都是As

 

代码生成 | 安时积分法模型搭建

最后用当前容量除以总容量就得出了SOC,添加几个显示模块便于验证结果

代码生成 | 安时积分法模型搭建

验证结果

点击设置仿真,由于处理器不是连续系统,处理速度和频率有关因此要设置为定步长,stop time设为1 步长为0.1也就是计算10次

代码生成 | 安时积分法模型搭建

运行结果显示当前SOC为50.15%,当前容量是3610由于now_cap的初值3600As也是1Ah加上1A电流对时间10次积分的结果整好是3610,当然改变仿真步长或者时长仿真结果也会发生变化。

代码生成 | 安时积分法模型搭建生成代码

进一步设置仿真生成代码,选择tlc文件也是就你要将模型翻译成那种语言代码生成 | 安时积分法模型搭建

勾选生成报告,点击生成代码

代码生成 | 安时积分法模型搭建

生成代码的报告

代码生成 | 安时积分法模型搭建

可以看到生成的代码和我们手动写的代码一样

代码生成 | 安时积分法模型搭建

 

生命不息、学习不止,加油!

 

 

代码生成 | 安时积分法模型搭建

 

 

本文地址:https://blog.csdn.net/ningvay/article/details/107295357