MATLAB中文论坛 文章 技术专栏 物理建模 查看内容

基于 Simulink/Simscape 的动力总成建模与仿真 1

2022-6-24 12:47| 发布者: MsM18| 查看: 1439| 评论: 0|原作者: 柚籽

摘要: 虚拟车辆,动力总成,Simulink,Simscape Driveline, SimDriveline,建模、仿真,无论怎么排列组合都好。这一个系列主要用物理建模的方式来搭。
虚拟车辆,动力总成,Simulink,Simscape Driveline, SimDriveline,建模、仿真,无论怎么排列组合都好。
这一个系列主要用物理建模的方式来搭。我会尽量根据最新的版本来更新这个文档。

1. 搭建平生第一个传动模型
1.1 问题
首先来看一个最简单的动力传动环节,感受一下建模过程。
假设如下的齿轮传动模型,给左侧的小齿轮施加1 N*m的扭矩,求右侧齿轮的转速w(rpm)?

平生第一个传动模型

1.2 建模
这个问题再简单不过了。我们在推导方程之前,对问题会先做一些允许的假设。
那么,假设:
  • 我们这个例子先忽略动力传动过程中的啮合损失;
  • 理想的定传动比齿轮对。
使用传统的 Simulink 建模方法,然后推导它的数学方程:

  • 设置已知参数:转动惯量J1,J2、齿数r,1r2 以及 转动轴的阻尼系数d1,d2

然后使用相应的计算模块来表达输入输出关系,如下图黑色部分模块。
绿色部分,则是使用成为物理建模的方法搭建的模型。图中对应模块分别表示了齿轮箱及其输入输出轴的阻尼和惯量(这里使用的所有模块来自于 Simscape 的 Foundation Library)。


可见,用这种方式搭建模型,不需要推导“系统方程”,而是用各个物理元件来复现系统拓扑结构。
各个模块的解释可参考下图:

注明:这里的 f(x)=0 模块(Solver Configuration)没有特别的物理含义,只是在每一个单独的物理网络模型都必须挂一个。

1.3 结果
因为经常会有疑问,说 Simulink 和 Simscape 模型仿真结果是否一样。
简单来说,由于系统抽象的数学模型相同,不管是用 Simulink 还是用 Simscape,仿真结果应该是一致的。
下图是齿轮2的转速,两条线是重叠的。(后面会遇到一些因为求解器的差异导致的微微小区别的例子)

如果,得到的仿真结果如果和预期不符,还有可能是对模块的参数理解错误。

比如这里的 Gear Box 模块。来自于 Simscape 的基础模块库,它的参数设置界面如下图:

Gear ratio 翻译作为齿数比,很容易让人误以为是填写 S齿数/O端齿数比,其实这里填的是 S和O 的速比,正好是倒数关系。
按照物理意义来说,下面的模块截图是外啮合齿轮组,它的输入输出轴的转速方向相反,所以如果要表达外啮合的相反的转速,参数界面实际上应该输入 -r2/r1。

如果参数界面输入 r2/r1,表示的实际上是同向转动的内啮合齿轮组。

另外,这个模块本身并不考虑能量损失的情况。

1.4 升级齿轮传动模型
其实 Simscape 的基础模块库里面大部分的模块都是理想元器件,并不考虑能量损失的部分。这也就是为什么还有很多扩展库,比如 Simscape Driveline。
Simscape Driveline 在 Simscape 的机械运动模块库的基础上,提供了更为丰富的专用模块库,添加更多模型细节。
如下图,把 Gear Box模块替换成 Simscape Driveline里的 Simple Gear模块后,就可以把原来额外的阻尼器去掉了,因为可以直接在模块里设置对应的转轴阻尼系数。

这里设置相同的齿数比,并设置为同向转动,可以关闭啮合损失计算(Meshing Losses)。

复现之前同样的模型,这里设置阻尼参数:

与之前 Simscape 搭建的模型得到同样的仿真结果。


2. Simscape Driveline 简介
2.1 关于物理建模
所以从刚才的齿轮传动的例子可以略微感觉到,这物理建模方法和基于信号流建模方法(比如 Simulink )的区别。
物理建模,直译于 physical modeling。这里有两层含义:
  • 其一:区别于控制算法,它搭建的是物理实体模型,也就是被控对象模型
  • 其二:它依照系统物理拓扑网络来建模,而不是推导系统方程,下图这个电路模型可能区别更明显。但并不是所有模块化建模方式,都叫物理建模。物理建模不需要在意模块连线的方向,没有输入输出信号的概念,因为模块之间的连线不是“信号”,而是真的“物理连接”。

Simscape 是 MathWorks 的物理建模平台,作为基础平台,它提供了 Foundation Library。如下图,包括了所有物理域的基础元件,就像吃火锅时提供的带了一点底料的火锅汤底的感觉。

为了实现复杂模型的搭建,在 Simscape 的基础上又提供了一些扩展工具箱,包括了我们这次要用到的 Driveline。如下图,可以搭建包括电、液、三维机械结构、1维动力传动系统。


2.2 Driveline
首先,在介绍这个建模工具之前,先瞎扯一下如何识别网上任何渠道搜索到关于的 Simscape Driveline 的资料的古老程度:模块外观。
先来一张发展历程表,可以找到 2002 年刻度线后 SimDriveline 出现了。

Simscape Driveline 工具箱最初叫 SimDriveline, 1.0 版的模块如下图(这时候它实际上底层并不是基于Simscape),那说明它的软件版本是2011a以前,就不用去看了,这个库在新版 MATLAB 里已经消失了。虽然官方 2012a 以后提供了一个命令sdl_update 来升级为新版本模型。这个升级命令也不怎么好用,干脆重新搭一个得了。

后来为了“整合 Simscape 物理建模平台”,在2011a出了 2.0 版本替换1.0版本,模型如下图。新版接口外观的模块库的底层完全基于Simscape,可以与 Simscape 的 Foundation 库的相关机械模块互联。

2014b 之后的版本模块以及连线颜色变成彩色了。

如果工具箱名称是叫 SimDriveline,那么它对应的软件版本很可能是 2016a 以前
2016a 以后,工具箱名称改为 Simscape Driveline
以上基本可以判断各种材料的老旧程度了。

3. 整车动力总成相关模块
从这张图左侧的树状图,可以大概看得出,Driveline 大概包括的传动类型。


整车动力总成
库里包括了整车动力总成的各种模块,比如发动机、变速箱、液力变矩器、传动轴、齿轮、离合器、轮胎、车身、路况等等。因为同属于 Simulink 平台,所以很容易和 Simulink/Stateflow 一起联合调试,随时查看任何一个模块的任何信号。

整车传动链模型

变速箱齿轮系
根据测试需要,可以使用抽象的变速箱模型,或者用齿轮机构搭建具体的齿轮传动模型。

抽象变速箱模型

变速箱齿轮系

发动机
发动机模型也是如此,根据仿真需要选择使用不同的发动机模块,既可以是外特性曲模型:

也可以把扭矩波动信息放进来,作为传动链的一个震动来源。

最近 2022a 也增加了发动机机构的模型:


车身
除了图示的经典模型之外:

还可以设置变化的质量以及Pitch模型(前后轴悬架参数)。


路面定义
路面坡度以及摩擦系数也可以使用 Road Profile 很方便定义出来。

变速箱,此仅仅为动画演示
作为传动库,还包括各种链传动、带传动、绳索等等,只是在汽车里就很少遇到这些。
当然模型搭建后,很多时候都还会往下走一步,做硬件在环 hardware in the loop,HIL。用 Simscape 搭建的模型也是如此。


4 关于动力总成建模方法
如之前所说,建模方法都不是唯一的,合适的才是最好的。
Simulink为底层的模块库: Powertrain Blockset, Vehicle Dynamics Blockset,也提供了大量的车辆零部件模块库以及控制器模型

另外,除了基于物理原理建模,还有基于数据建模的方法。在电池建模里简单见识了一下深度学习方法

为了有针对性,本系列主要讲物理建模的方式,Simscape Driveline。

相爱相杀
其实还是说,为了不同的仿真目的,选择合适的建模工具。

特定的建模需求用合适的工具实现

4. 2 虚拟整车 App
不过实际上,官方推出了整车建模 App:Virtual Vehicle Composer,真的需要去搭建整车模型的时候,用 App 搭建起点模型提高效率。


Tips
a 查看仿真结果
除了使用 Sensor 模块之外,还可以在关心的 Simscape模块上右键,选择记录改模块的仿真结果:

然后在 Configuration 页面上配置:

就可以像刚才那样在 Simulink Data Inspector 里查看所感兴趣的 Simscape 模块的仿真结果了。
除了使用 Sensor + Scope 的组合之外,也可以使用 Data Inspector 来查看仿真数据:


b 信号单位
有些人得到的仿真曲线看上去不一致,这可能是因为设置的信号单位不一致。
Simulink Data Inspector 默认的Units 设置是 rad/s,而我们 Simulink 模型里已经换算成了 rpm。

5 搭第一个纯电动力总成模型
5.1 建模对象简化
真实的对象模型是非常复杂的,真实的车辆包括太多的信息,而我们需要根据仿真目的来进行抽象化,提取我们所关心的特性做为数学模型。

图片来自网络,侵联删
我们这里关心的是车辆的纵向运动学特性,因此把它简化为一个车身以及与其相连的前后两个轮胎。


5.2 模型框图
因为是第一个模型,所以各个部分都是用最简单的元件,首先搭出一个能跑,也容易理解仿真结果的模型。后面,逐渐熟悉各个环节的零部件模型后,再根据需要替换掉其中的部分。


a 车身
这车身模块把车身简化为一个前后轴分别安装了悬架(以弹簧阻尼表示)的可以绕重心旋转的质量块,考虑驱动力、重力以及风阻的作用。
只是这个例子关闭了悬架作用。


b 理想轮胎
发动机产生的扭矩通过传动系统作用于车轮,产生驱动力。
这里选择了不考虑打滑的理想轮胎模型,使用静力半径来进行动力学与运动学计算。理想情况下,驱动力 F = T/r。r为轮胎半径。
“车轮处于无载时的半径称为自由半径。汽车静止时,车轮中心至轮胎与道路接触面之间的距离称为静力半径。”
车轮转动圈数与实际行驶距离可计算得到车轮的滚动半径;各相关行业协会也给出了不同的计算公式。
因为简单,所以这种模型计算速度最快。

c 主减速齿轮
效率损失系数可以为变量,这里设置为常数,且不考虑热影响。


d 理想电机
当前假设为理想电机模型:电机能充分满足任意转速下的扭矩要求。参见自带案例,可以从这里拷贝过来: sdl_hybrid_parallel.slx。
因此,电机方程 Motor Equation 只需要根据电机机械功率需求以及功率损失来计算电流需求即可。



e 理想DCDC模型
理想也就是不考虑效率损失和发热影响。


f 电机控制


5.3 仿真结果


a 传动链功率损失
左下图是电机发出的扭矩VS轮边扭矩,已知:齿轮对的效率0.98。
  • 已知:电机扭矩 * 齿数比 【*或者/效率】 = 轮边扭矩
  • 当能量回收时:电机扭矩176.56 *传动比2.6/效率0.98 = 轮边扭矩 468.42 N
  • 当驱动时:电机扭矩123.32*传动比2.6*效率0.98 = 轮边扭矩 314.21 N


b 风阻
由下图可见,电池提供的电功率 Pe_battery_KW 是红色,它 7.37KW大于轮边最终得到的功率P_GearBox 7.12 KW。
驱动功率大7.12 KW 大于驾驶循环车速计算而来的车身运动功率VehPwrReqKW 6.17 KW,这是因为还有风阻的影响。

速度越大,克服风阻所需要的功率越多。在一千多秒后,速度很高,行车功率只有7.6的情况下,克服风阻的功率差更大,实际的驱动功率达到了21.2KW。

所以,使用 Simscape Driveline 来实现动力总成模型还是很简单的。

后面一节,再介绍通常会使用的零部件。

更多的相关的资料:
Simscape Driveline产品页面:http://www.mathworks.com/products/simdrive/
1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

最新评论

引用 Thunder16 2022-7-19 09:42
感谢分享!!!!!!

基于 Simulink/Simscape 的动力总成建模与仿真 1

虚拟车辆,动力总成,Simulink,Simscape Driveline, SimDriveline,建模、仿真,无论怎么排列组合都好。这一个系列主要用物理建模的方式来搭。

Simulink 的电池建模与仿真模型合集(一)

这个系列主要讨论基于Simulink搭建电池模型的各种方法。如果用到具体的模型,会在对应的章节提供下载链接。

Simulink 的电池建模与仿真模型合集(一)

这个系列主要讨论基于Simulink搭建电池模型的各种方法。如果用到具体的模型,会在对应的章节提供下载链接。

基于 Simulink/Simscape 的动力总成建模与仿真 1

虚拟车辆,动力总成,Simulink,Simscape Driveline, SimDriveline,建模、仿真,无论怎么排列组合都好。这一个系列主要用物理建模的方式来搭。
关闭

站长推荐上一条 /6 下一条

返回顶部