中国汽车工程师之家--聚集了汽车行业80%专业人士 

论坛口号:知无不言,言无不尽!QQ:542334618 

本站手机访问:直接在浏览器中输入本站域名即可 

  • 396查看
  • 0回复

[Simulink] 真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统

[复制链接]


该用户从未签到

发表于 2-4-2024 07:53:19 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


大家好,我是王浮生不怕生。这里是“真·Simulink车辆仿真教程”第五节,本节我们介绍驱动系统建模。

由于我们做的模型比较简单,所以我们将电机至轮端扭矩传递链均视作驱动系统的一部分,所以本文建立的模型包含电机模块、减速器模块、车轮模块。



车轮模块

导:这个车轮模块是干什么?

铁子李:车轮模块是往前滚的啊。

导:好好好!

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w3.jpg

车轮将传动系统驱动扭矩转化成驱动力,所以他的基本输入就很明确了。

此外我们还要进行转速的估算。

为什么要估算?因为电机模块里要用到。这属于提前剧透了。

实际车辆中转速可以直接测量并通过CAN信号发送,在模型中就别想那么多了。

模型中电机的转速怎么算呢?

由于电机是与减速器直接耦合的,其等于减速器的输入端转速,所以假如知道了减速器输出端转速就可以通过速比关系计算电机转速。

那减速器输出端转速怎么算呢?

减速器输出端通过差速器与轮端耦合,由于我们是纵向模型,不考虑左右轮的控制及扭矩分配,所以我们可以认为减速器输出端等于轮端转速。

铁子:我知道你肯定要说,那轮端转速怎么求呢?这个我知道,通过车速。

老王:恭喜你,从沟里爬出来了。

所以车轮模块我们要做的工作:一是完成传动系统扭矩的转换及向后传递;二是完成车速向转速的转化及转速的向前传递。

你又点头了?恭喜你刚爬出来又掉沟里去了。

还有制动扭矩啊铁子!

车辆模块进行转换和向后传递的扭矩不仅仅是驱动扭矩,还包含制动系统的制动扭矩。

为什么?实在不行你去拆个共享单车看看吧亲。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w4.jpg

这样车轮模块的输入与输出就明确了:

输入:

【1】驱动扭矩(由减速器输入)

【2】制动扭矩(由制动系统或策略模块输入)

【3】车速(由车辆模块输入)

输出:

【1】驱动力(输出至车辆)

【2】轮端转速(输出至减速器)

明确了输入输出就开始搞模型吧!

驱动扭矩怎么转换成驱动力呢?通过公式:力=扭矩/力臂。

这里面力臂是谁?轮胎的滚动半径。

我们在Data脚本中添加轮胎滚动半径变量,并运行写入工作空间。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w5.jpg

在simulink中建立以下模型。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w6.jpg

这里制动扭矩和驱动扭矩为什么可以直接相加?

因为正常情况下,制动系统扭矩和驱动系统扭矩不会同时存在。当然也可以用switch模块,由于是基础模型,我们尽量通过简单的方式实现。

车速到车轮转速的转换时,要特别注意单位的统一。

车速单位要转换成m/s,通过车速除以滚动半径后得到的转速单位时“rad/s”,需要转换成“转/分”。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w7.jpg

最后将其封装一下,我们就得到了一个车轮模块。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w8.jpg

老王:简单不?

铁子李:这也太简单了,上难度!

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w9.jpg



变速箱模块

变速箱模块主要的功能就是对电机输出进行降速增扭,扭矩的输入来自于电机,经过增扭后输出至车轮模块;转速由车速反推,由车轮模块输入,输出至电机。

输入:

【1】电机扭矩

【2】轮端转速

输出:

【1】轮端驱动扭矩

【2】电机转速

在Data脚本中定义减速器速比及效率变量,并运行脚本写入工作空间。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w11.jpg

在simulink中建立以下模型,都是常用的模块,这里就不写过程了。

轮端驱动扭矩=电机扭矩×速比×减速器效率。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w12.jpg

电机转速=轮端转速×速比

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w13.jpg

将其封装后,我们就得到了一个减速器模块。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w14.jpg



电机模块

在电机模块建模时,我们需要用到的一个重要的simulink模块——查表模块。目前查表模块最多支持四维查表,不过我们用不到,所以只介绍下常用的一、二维查表。

查表是将输入值映射到输出值的数据数组,以用于逼近数学函数。给定一组输入值,查找操作从表中检索对应的输出值。如果查表没有显式定义输入值,simulink可以使用内插、外插或舍入来估计输出值,其中:

◆内插是一种估计位于已知数据点之间的值的过程。

◆外插是一种估计超出已知数据点范围的值的过程。

◆舍入是根据已知规则通过更改数值的位数来逼近数值的过程。

一、二维查表的数值计算原理类似,下面以一维查表为例介绍其数据计算的方法。假设我们有两个具有映射关系的数组如下,其中x为断点,y为输出数据表。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w16.jpg

当输入x=0时,数组x中有显性数据值,通过查表得到对应x=0时y的值为0,则查表值输出为0;

当x=1.5时,表中无显式数据值,则通过相邻点进行插值,我们通常选用线性插值,y值计算方式如下:

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w17.jpg

当x的输入超出数组x的数据范围[-3,3],y值的计算可以用插值方式也可以用裁剪方式。我们通常会选用裁剪的方式,使输出值等于输出表的末端值。如x=-5时,y输出为-27,x=5时,y输出为27。

对于查表模块,对应设置如下:

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w18.jpg

电机模块的功能

我们在前面的文章提到电机模块需要完成两个功能:一是接收扭矩指令后,根据自身状态响应扭矩;二是作为模型中唯一的能耗元件,计算需求电功率。

对于扭矩指令的响应,如果不考虑响应滞后,可以简单理解为:在我能力范围内你让我输出多少我就输出多少。

这个能力范围是怎么界定的?通过电机外特性曲线。

所以,对于扭矩响应我们将扭矩指令限制在外特性曲线范围内,作为电机输出扭矩即可。

对于电功率我们如何求呢?

输出功率+损失功率。

输出功率我们可以通过输出的扭矩×转速计算,但损失的功率如何求呢?

这里就需要用到我们前面介绍的电机效率特性。

通过电机转速与输出扭矩查表获得电机当前时刻的效率,即可利用输出功率求出损失功率。

当然通过输出功率和效率也可以直接求出输入功率。

所以电机模块的结构我们也清晰了:

输入:

【1】扭矩指令

【2】电机转速

输出:

【1】电机输出扭矩

【2】电机需求功率

功能:

【1】电机输出扭矩计算

【2】电机需求功率计算

明确了输入输出及功能,下面我们建立电机模型。

在Data脚本中新建四个变量,写入电机的驱动外特性及发电外特性数据。这里转速数据作为查表向量,转矩数据作为目标向量,两者向量长度应一致,且查表向量内的数据应单调递增。

这里的发电外特性我直接对采用驱动外特性的负值了,只有一条外特性曲线的时候你们也可以这样搞。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w19.jpg

在simulink模型中添加两个Lookup Table模块,这几个都一样,随便拽那个用都可以。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w20.jpg

在Lookup Table模块中分别写入电机驱动外特性及发电外特性数据。

表维数选择1维,表数据写入外特性曲线的转矩数据,断点1写入外特性曲线的转速数据。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w21.jpg

同时要注意外插方法设为“裁剪”,并勾选“输入等于或高于最后一个断点是使用最后一个表值”,模型中所有的查表模块均需要如此设置,后续不再赘述。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w22.jpg

添加两个输入模块,定义为扭矩指令(MotTrqReq_Nm)、电机转速(MotSpdAct_rpm),将电机转速作为Lookup Table模块的输入,分别求出电机当前状态下的驱动外特性转矩数据和发电外特性转矩。将扭矩指令与驱动外特性转矩取小,然后再与发电外特性取大即可。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w23.jpg

这里取大小的逻辑能否反着来?不能。

至于为什么,你们自己试一下吧。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w24.jpg

电机的输出扭矩计算完了,就这么简单。

计算出电机转矩之后,我们就可以计算电机的电功率了。

首先利用公式P=T×n/9550计算输出功率(机械功率),这里乘1000是为了将功率单位转换成W。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w25.jpg

在Data脚本中添加电机的效率特性数据及查表向量,转速及转矩数据为查表向量,效率数据为目标矩阵,矩阵的大小应与向量长度对应。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w26.jpg

Simulink模型中添加一个查表模块,维度设置为2,表数据写入效率矩阵,断点1写入转速向量,断点2写入转矩向量。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w27.jpg

这儿断点1、2分别对应二维查表的u1、u2输入,其与目标矩阵的关系应满足:u1长度=效率矩阵行数,u2长度=矩效率阵列数。

这里记不住也没关系,如果数据没有问题,当写入数据时提示“断点向量与表的维度不一致时”,对效率矩阵做一下转置即可。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w28.jpg

所以,在写入效率矩阵时,其行数与列数最好不要相同。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w29.jpg

建立好查表模块的数据后,将电机的转矩及转速信号接入即可。由于只写入了驱动效率矩阵,当电机处于制动模式时转矩为负值,所以要对转矩取绝对值。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w30.jpg

求出电机机械功率及效率,利用以下公式就可以求出电机电功率了。

电动:电功率=机械功率/效率

发电:电功率=机械功率*效率

这儿的关系可能需要捋一下:当电机处于驱动模式时,电池作为电机驱动能量的输入端;当电机处于发电模式时,电机作为电池充电能量的输入端。

这里电机模式我们通过扭矩判断,当扭矩大于0时电功率等于驱动电功率,否则功率等于发电电功率。计算前,通过Saturation模块对电机机械功率进行区分,机械功率≥0的部分视为驱动,机械功率<0的部分视为发电。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w31.jpg

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w32.jpg

Swith模块及Saturation模块在库中的位置如下。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w33.jpg

最后完成的模型如下图所示。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w34.jpg

线穿来穿去的太乱了有木有,为了方便理解及界面的整洁性我们根据功能对其进行下封装。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w35.jpg

这里我们用到了goto、from模块。这两个模块必须成对出现,goto用于信号的发送,from用于信号的接收,一个goto可以对应多个from,但一个from只能对应一个goto。

如下图,电功率计算部分封装时,一个goto模块就对应两个from模块。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w36.jpg

Goto及From模块在库中的位置如下。

真·simulink车辆仿真基础教程-跑的快可全靠我啊:驱动系统w37.jpg

最后我们回到第二节时我们提到的问题:直流电机、异步电机、永磁同步电机有什么区别?

从建模的角度,对于静态模型,电机的特性都是通过数据表体现的,当然它们的差异也是通过数据表体现的。所以不管是直流电机、异步电机还是永磁同步电机,都可以通过这种方式建模,你只要保证它的特性数据是可靠的即可。

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 22-11-2024 15:22 , Processed in 0.228655 second(s), 30 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.