纯电动汽车Simulink仿真模型建模全记录

纯电动汽车Simulink仿真模型建模详细步骤。 通过文档的形式,跟着文档一步一步操作,既可以提高自己的建模能力,又可以对整个建模思路进行借鉴,形成设计能力。 附带模型。

最近在研究纯电动汽车相关内容,发现搭建其Simulink仿真模型是深入理解车辆动力系统运行机制的绝佳方式。今天就来给大家分享下详细的建模步骤,还会带上模型哦,希望能对大家有所帮助。

一、前期准备

在开始建模前,得确保电脑上安装了Matlab及Simulink工具包。这就好比你要盖房子,得先把工具准备齐全一样。没有这俩工具,后续操作都免谈。

二、建立整车动力学模型

  1. 车辆参数设定

打开Simulink新建一个模型文件。首先要设定车辆的基本参数,比如车辆质量 m = 1500 (单位:kg) 、车轮半径 r = 0.3 (单位:m) 、空气阻力系数 Cd = 0.3 、迎风面积 A = 2.2 (单位:m²)等。这些参数在后续计算车辆行驶阻力等方面会用到。在Matlab命令窗口或者Simulink模型中用变量定义它们,方便后续调用。

  1. 行驶阻力计算

车辆行驶过程中会受到多种阻力,主要有滚动阻力、空气阻力和坡度阻力。

滚动阻力计算公式为 F_roll = m gfcos(theta)**,其中 g 是重力加速度(取 9.81 m/s² ),f 是滚动阻力系数,theta 是路面坡度角。在Simulink中可以通过一系列模块搭建计算该阻力的子系统。比如,使用 Gain 模块设定 m g * f 的增益值,再结合 Trigonometric Function 模块计算 cos(theta),最后通过 Product 模块相乘得到滚动阻力。

空气阻力计算公式为 F_aero = 0.5 rhov^2Cd A,这里 rho 是空气密度(一般取 1.225 kg/m³ ),v 是车速。在Simulink中同样可以搭建相应模块来计算,像 Gain 模块设定 0.5 rho Cd * A 增益,再结合 Math Function 模块对车速 v 进行平方运算,最后相乘得到空气阻力。

坡度阻力计算公式为 F_grade = m g sin(theta),搭建方式与滚动阻力类似。

  1. 驱动力计算

驱动力主要由电机输出扭矩经传动系统传递到车轮产生。假设传动比为 i,传动效率为 eta,电机扭矩为 Tmotor*,那么驱动力 F* drive = T_motor i eta / r。在Simulink中,通过相应模块设置传动比、效率等参数,并连接电机扭矩输入和车轮半径参数,计算出驱动力。

matlab 复制代码
% 假设已经在Matlab工作区定义好了上述参数
% 下面简单计算行驶阻力合力的代码示例
function F_total = calculate_total_resistance(m, g, f, Cd, A, rho, v, theta)
    F_roll = m * g * f * cos(theta);
    F_aero = 0.5 * rho * v^2 * Cd * A;
    F_grade = m * g * sin(theta);
    F_total = F_roll + F_aero + F_grade;
end

上述Matlab代码简单实现了行驶阻力合力的计算,在Simulink建模中虽然是通过模块搭建,但底层原理也是类似的计算逻辑。

三、电机模型建立

  1. 电机特性曲线拟合

电机的输出扭矩和转速关系通常由特性曲线决定。一般电机厂家会提供一些离散的数据点,我们需要对这些数据进行曲线拟合,得到连续的函数关系。比如使用Matlab的曲线拟合工具箱 cftool ,导入电机扭矩 - 转速数据,选择合适的拟合函数,像多项式拟合等。拟合后得到一个关于扭矩 T 和转速 n 的函数,在Simulink中可以通过 Lookup Table 模块结合拟合得到的数据来实现电机扭矩随转速变化的特性。

  1. 电机动态模型搭建

电机除了稳态特性,还需要考虑动态响应。一般采用一阶惯性环节来近似描述电机的动态过程,其传递函数为 G(s) = 1 / (tau * s + 1),其中 tau 是电机的时间常数。在Simulink中使用 Transfer Fcn 模块设置相应的时间常数,输入电机给定扭矩,输出实际电机扭矩,这样就初步搭建好了电机的动态模型。

四、电池模型建立

  1. 电池开路电压计算

电池的开路电压与电池的SOC(State of Charge,荷电状态)有关。通常可以通过实验得到不同SOC下的开路电压数据,然后进行曲线拟合,得到开路电压 U_oc 与SOC的关系函数。在Simulink中同样可以用 Lookup Table 模块实现该关系。

  1. 电池内阻模型

电池内阻也会随着SOC和温度变化。假设我们已经得到内阻 R 与SOC、温度 T 的关系数据,在Simulink中可以通过多个 Lookup Table 模块结合逻辑判断模块,根据当前的SOC和温度来查询对应的内阻。

  1. 电池电流和功率计算

根据电路原理,电池输出电流 I = (Uoc - Uload) / R,其中 Uload**是负载电压(这里就是电机工作电压)。电池输出功率 P = U oc * I。在Simulink中通过搭建相应的计算模块来实现这些关系。

matlab 复制代码
% 简单的电池SOC估算代码示例
function SOC = estimate_SOC(SOC0, I, Q, dt)
    % SOC0 初始SOC
    % I 电池电流
    % Q 电池容量
    % dt 时间步长
    SOC = SOC0 - (I * dt) / Q;
    if SOC < 0
        SOC = 0;
    elseif SOC > 1
        SOC = 1;
    end
end

这段代码实现了简单的SOC估算,在Simulink中可以通过类似逻辑用模块搭建SOC估算子系统。

五、系统集成与仿真

把前面建立好的整车动力学模型、电机模型、电池模型等进行连接集成。电机的扭矩输出作为整车动力学模型中驱动力的输入,电池的输出电压和电流为电机提供能源输入等。连接好各个模块后,设置仿真参数,比如仿真时间、步长等。点击运行仿真,就可以看到纯电动汽车在设定工况下的运行情况,比如车速、电池SOC变化、电机扭矩和转速等数据。

最后,我会把这个完整的纯电动汽车Simulink仿真模型分享给大家,大家可以在此基础上进一步研究和改进,比如尝试不同的控制策略等,相信对提升建模能力和理解纯电动汽车系统会有很大帮助。希望今天的分享能给大家在纯电动汽车建模路上带来一些启发。

相关推荐
serve the people7 小时前
tensorflow 核心解析:tf.RaggedTensorSpec 作用与参数说明
人工智能·python·tensorflow
serve the people12 小时前
tensorflow 零基础吃透:tf.function 与 RaggedTensor 的结合使用
人工智能·tensorflow·neo4j
serve the people12 小时前
tensorflow 零基础吃透:SavedModel 与 RaggedTensor 的结合使用
人工智能·tensorflow·neo4j
聊天QQ:2769988516 小时前
探索 PLL 电荷泵锁相环:从架构到流片的奇妙之旅
tensorflow
瀚岳-诸葛弩17 小时前
对比tensorflow,从0开始学pytorch(三)--自定义层
人工智能·pytorch·tensorflow
serve the people18 小时前
tensorflow 零基础吃透:RaggedTensor 的重载运算符
人工智能·tensorflow·neo4j
serve the people18 小时前
tensorflow 如何使用 tf.RaggedTensorSpec 来创建 RaggedTensor
人工智能·python·tensorflow
云雾J视界18 小时前
分布式AI框架选型困局:SintolRTOS vs Ray vs Horovod,性能压测全解析
tensorflow·wpf·horovod·ray·分布式ai·sintolrtos
serve the people2 天前
tensorflow 零基础吃透:RaggedTensor 在 Keras 和 tf.Example 中的实战用法 (补充)
人工智能·tensorflow·keras