实例讲解使用Matlab_Simulink整车模型进行车速控制策略仿真测试验证方法

news/2024/9/21 14:27:23/

在进行VCU软件开发过程中,经常要设置一些扭矩控制相关的参数,一般可以通过经验先设置一版参数,然后通过与整车模型的联合仿真及实车标定优化相关参数,最终得到一版综合性能最优的参数作为最终程序定版参数。本文通过蠕行扭矩控制模块与整车模型联合仿真来说明仿真测试验证的方法。本文采用的模型是Matlab自带的整车模型,通过将自己设计的控制模型替换原模型中的控制模型,最终来验证自己设计的控制模型是否符合预期,如果不符合预期,可以调整参数进行再次测试。本文使用的是Matlab 2022b版本。

目录

一、新建整车模型

二、控制器模块控制模型替换设置

三、行驶工况的设置

四、观测模块的设置

五、仿真测试验证

六、总结


一、新建整车模型

1、在Matlab 2022b APP选项选择汽车-Virtual Vehicle Composer。(如果找不到该模块,可能是Matlab版本太低,Matlab2022a及以后的版本具备这个APP)

6f7a1c6d26944a619dd1bbdb13a82dd4.png

2、在打开的窗口中,选择New,新建一个整车模型

9f96768af8a54d94915128e06f35e8eb.png

3、在打开的整车模型界面,可以根据自己仿真的车辆模型类型进行相关参数选择

dcf5d1bc73fe4ce782c223a61f09126d.png

4、可以选择模型保存位置,设置模型名称,选择整车动力类型,此处我选择电动汽车,当然也可以选择不同形式的混动汽车,车辆动力学模型选择车辆纵向动力学-longitudinal vehicle dynamics,然后选择Create,创建模型

cd0d928317244ecba560bd165c2c290c.png

5、在创建的模型参数设置界面,可以根据自己所控制车辆的参数进行设置,如果无法得到全部参数,则根据要验证的功能,设置相关性较强的参数

dc4223c6356c4f249f8010b9abe6d3d0.png

6、我根据控制车辆的参数设置整车总质量为3495kg,迎风面积为3.5㎡

41acd7356cfc4e6b80ad430f4672e4dc.png

7、设置主减速器传动比为10.5

2cfd9da7d800414bad1d3b7f57fe2a3f.png

8、选择Scenario and Test 页面,可以根据需求选择循环工况添加

342f8c2656ec4937a8382f46a3c8c074.png

9、比如选择添加NEDC工况,并设置单位和仿真时间

0cd971edd7f248769cc7de1abdee8951.png

10、选择Logging页面,选择要输出记录的信号,比如选择电池功率BatPwr

29776fa2c47e40ceb6aadb5cf77326b1.png

11、设置完成后,点击主界面BULID Virtual Vehicle,生成虚拟整车模型

6a2a5823795e47ec80892d2dcb9334d1.png

9、等待生成完成,以下就是生成的整车Simulink模型,主要包括整车模型,驾驶员模型,行驶工况模型,环境模型,控制器模型以及观测模块

f20838d07e8c4db0aab458a2d223beec.png

二、控制器模块控制模型替换设置

1、双击控制器模型,进入控制器模块

0c52bf783a9340ea9d6b799236556340.png

2、双击VCU模型,进入VCU控制模块

422faaa787ba472d9bc01ec430ccc615.png

3、选择EV 1EM模型,双击进入电动汽车VCU控制模块

a9936c75daaa4f11a67eaba378bd2c73.png

4、选择Motor Torque Arbitration and Power Management,双击进入电机扭矩仲裁及能量管理模型

c0dd5900727d402e95fbc621792a2bb1.png

5、选择Power Management,双击进入能量管理模块

44b9348b3a85480798328ad9f7c09a33.png

6、选择Torque Limit,双击进入扭矩限制模块

704fe54203b249bca8c1da5e49591a98.png

7、可以看到原模型的扭矩限制模块模型

28e8ba94091d4adcbbd60a91f3b36d96.png

8、将自己搭建的蠕行车速控制模型复制进入该扭矩限制模块,其中车速可以通过接收的电机转速,结合轮胎滚动半径0.316m、主减速比10.5,转换单位为km/h得到车速;由于是验证蠕行车速控制,档位信号设置为1,即D挡。蠕行控制模型搭建详细介绍可以参考之前发布的《实例讲解电动汽车蠕行控制策略及Simulink建模方法》

d1e57089fd244b598e80cfb94bdc0b44.png

9、选择原控制模型,右键选择注释掉,将原控制逻辑隐藏掉,完成控制模型的替换

e03ffb3572eb437db543bbdbb17caa33.png

三、行驶工况的设置

1、选择Reference Generator模块,双击进入设置界面

cf4bab128e4b4ad89ed26180da5d8d7e.png

2、选择Sine with Dwell,可以生成车辆持续加速的工况,当然也可以通过自定义设置Drive Cycle设置需要验证的工况

db05809ed397405b8216d6b6216728cc.png

3、设置参考最大加速车速

610f966e07a64e4b9c5c6e0d96cfb811.png

4、打开变量编辑器

50853d7ecfd240ab99f61141d638f731.png

5、此处设置为120

cd1c75cb7f114bbdb962ce8dba85af8f.png

6、设置车速单位,此处选择千米每小时,即km/hr

687077bf63384740a361728d09b63db5.png

7、主菜单选择建模-模型设置,设置仿真时间为60s

94faef42903e4da38850bcdf77e6da67.png

四、观测模块的设置

1、在主界面选择Visualization观测模块,双击进入

eb5409a3dd3d4d0d9839bbcba1d2979b.png

2、选择DataLogging,双击进入数据记录模块

37aa0a1234204dcbae4180f55614da31.png

3、模块中输出变量即在整车模型设置时Logging页面选择的信号,将xdot车速信号、EMSped电机转速信号及EMTrq电机扭矩信号引出作为示波器显示信号

ce5e98a5bf3d4c2e83200a446f11e65d.png

4、其中车速输出信号初始单位为m/s,通过添加Unit Conversion模块及Signal Specification模块,将单位转换为km/h

957ed0e220654f259bc3925c3880d6a0.png

五、仿真测试验证

1、选择主菜单仿真-运行,运行整个模型

e7da193ae72a4aac8d00b5dd15047c38.png

2、仿真正常运行中,可以通过弹出的Vehicle Position窗口观察车辆行驶车速

cb9e651e9edb4a0f8f6e09fe71ec9917.png

3、仿真运行完成后,打开DataLogging模块,双击Scope,查看仿真结果

e54fc759a8564451811a4371c60a2a27.png

4、仿真结果显示,车速从0逐渐平稳上升,最终稳定在5-6km/h,符合蠕行控制策略车速设定预期,输出扭矩从0开始逐渐增大,最大值不超过40Nm,然后逐渐下降最终保持稳定,符合设定的扭矩控制策略。当然如果加速度或者最终稳定车速如果不满足要求,可以通过修改控制策略参数进行再次仿真测试,从而得到更好的控制模型参数。仿真结果可以一定程度代表控制策略的效果,但是由于仿真模型有很多参数与实车有差异,最终还是要在实车上进行测试,如果不符合预期,需要在实车上进行标定优化。

60b82d3043db4e67a7da3cb1f8947dd4.png

六、总结

本文通过Matlab自有整车模型的创建、参数设置及蠕行控制策略仿真策略验证,介绍了一种利用Matlab自有整车模型对自己所创建的扭矩控制策略进行仿真测试验证的方法。本文中只是进行了关键参数的设置,如果要进行更加精准的仿真策略,可以对相关整车参数、环境参数、驾驶员模型等参数,对电机扭矩转速效率MAP、电池参数、BMS系统等进行更加详细的设置。希望通过本文的介绍能给相关技术人员带来一些参考和帮助。

 


http://www.ppmy.cn/news/1528435.html

相关文章

在 CentOS 中安装 MySQL(无坑版)

1. 下载安装 MySQL yum 仓库 请按照自己的系统版本选择自己喜欢的 MySQL版本 uname -a 或者 lsb_release -aMySQL yum 仓库地址: https://repo.mysql.com/ CentOS 8 wget https://repo.mysql.com/mysql80-community-release-el8-1.noarch.rpm yum localinstall…

使用 Azure Functions 开发 Serverless 应用:详解与实战

使用 Azure Functions 开发 Serverless 应用:详解与实战 随着云计算的发展,Serverless(无服务器架构)已成为构建现代应用的重要模式。它能够让开发者专注于业务逻辑,而不需要关注底层的服务器管理、扩展等问题。Azure…

学习笔记 韩顺平 零基础30天学会Java(2024.9.16)

P563 自定义泛型方法 当调用方法时,要传入参数,因为当传入参数时,编译器就可以确定泛型代表的类型 泛型方法和方法使用了泛型是不一样的 泛型方法可以使用类声明的泛型,也可以使用自己的泛型 P564 泛型方法练习 P565 泛型的继承和…

[已更新前两问代码+全部建模]2024华为杯C题详细思路代码文章建模分享研究生数学建模竞赛数学建模研赛

截止9.21 12点 已更新问题一二的代码和全部内容的建模 下面我们会先进行代码讲解,之后给出全部内容的建模公式 ## https://docs.qq.com/doc/DVWhyZ1NFY01XcmNw基于磁通密度数据的特征提取与分类分析。 问题一代码详解 1. 导入必要的库 import pandas as pd import numpy as…

MATLAB绘图基础8:双变量图形绘制

参考书:《 M A T L A B {\rm MATLAB} MATLAB与学术图表绘制》(关东升)。 8.双变量图形绘制 8.1 散点图 散点图用于显示两个变量间的关系,每个数据点在图上表示为一个点,一个变量在 X {\rm X} X轴,一个变量在 Y {\rm Y} Y轴&#…

Python 装饰器使用详解

文章目录 0. 引言1. 什么是装饰器?2. 装饰器的基本语法3. 装饰器的工作原理4. 常见装饰器应用场景4.1. 日志记录4.2. 权限校验4.3. 缓存 5. 多重装饰器的执行顺序6. 装饰器的高级用法6.1. 带参数的装饰器6.2. 使用 functools.wraps6.3. 类装饰器 7. 图示说明7.1. 单…

【笔记篇】Davinci Configurator MemIf模块

目录 1 简介1.1 架构概览2 功能描述2.1 内存架构2.2 初始化2.3 主函数2.4 故障处理3 集成3.1 静态文件3.2 动态文件4 API描述5 配置1 简介 本文主要描述了AUTOSAR MemIf模块的功能。 MemIf(内存抽象接口)为 NvM 提供了访问非易失性内存设备的接口。这里主要使用两种类型的非…

视频转音频,分享这六种转换操作

视频转音频,随着多媒体技术的发展,人们越来越频繁地需要将视频中的音频部分提取出来单独使用。无论是为了制作播客、获取音乐片段还是其他需求,视频转音频都是一项非常实用的技能。为了让你轻松应对各种场合的需求,下文将为你详细…