Main Content

自动变速器控制器建模

此示例说明如何用 Simulink® 对汽车传动系统建模。Stateflow® 通过其变速器控制逻辑的表示增强 Simulink 模型。Simulink 为动态系统和过程的建模与仿真提供强大的环境。然而,在许多系统中,监督函数(如更改模式或调用新增益时间表)必须对可能发生的事件和随时间变化的条件作出响应。因此,环境需要一种能够管理这些涉及多种模式和开发条件的语言。在以下示例中,Stateflow 通过在自动变速器中执行挡位选择函数来显示它在这方面的优势。此函数通过在 Simulink 模块图中包含 Stateflow 模块,以自然直观的方式与传动系统动态相结合。

物理原理分析

下图显示典型汽车传动系统的动力流。非线性常微分方程对发动机、四速自动变速器和车辆进行建模。此示例中讨论的模型直接将此图中的模块实现为模块化 Simulink 子系统。另一方面,变速器控制单元 (TCU) 中的逻辑和决策并不适合良好表示的方程。TCU 更适合用 Stateflow 表示。Stateflow 监控与系统内重要关系对应的事件,并在事件发生时采取适当的措施。

节气门开度是发动机的输入之一。发动机连接到变矩器的叶轮上,变矩器将发动机耦合到变速器(参见方程 1)。

方程 1

$$I_{ei} \dot{N}_e = T_e -T_i $$

$$ N_e = \mbox{ engine speed (RPM)}$$

$$I_{ei} = \mbox{ moment of inertia of the engine and the impeller}$$

$$T_e, T_i = \mbox{ engine and impeller torque}$$

变矩器的输入输出特性可以表示为发动机转速和涡轮转速的函数。在此示例中,我们假定动力流的方向始终从叶轮到涡轮(参见方程 2)。

方程 2

$$T_i = \frac{N_e^2}{K^2}$$

$$K= f_2 \frac{N_{in}}{N_e} = \mbox{ K-factor (capacity)}$$

$$N_{in} = \mbox{ speed of turbine (torque converter output) = transmission input speed (RPM)}$$

$$R_{TQ} = f_3 \frac{N_{in}}{N_e} = \mbox{ torque ratio}$$

假设换挡时间较短,变速器模型通过静态齿轮比实现(参见方程 3)。

方程 3

$$R_{TR} = f_4(gear) = \mbox{ transmission ratio}$$

$$T_{out} = R_{TR} T_{in}$$

$$N_{in} = R_{TR} N_{out}$$

$$T_{in}, T_{out} = \mbox{ transmission input and output torques}$$

$$N_{in}, N_{out} = \mbox{ transmission input and output speed (RPM)}$$

最终驱动、惯量和动态变化的负载构成车辆动态(参见方程 4)。

方程 4

$$ I_v \dot{N}_w = R_{fd}(T_{out}-T_{load})$$

$$I_v = \mbox{ vehicle inertia}$$

$$N_w = \mbox{ wheel speed (RPM)}$$

$$R_{fd} = \mbox{ final drive ratio}$$

$$T_{load} = f_5(N_w) = \mbox{ load torque}$$

负载扭矩包括道路负载和制动扭矩。道路负载是摩擦和空气动力损失的总和(参见方程 5)。

方程 5

$$ T_{load} = sgn(mph) (R_{load0} + R_{load2} mph^2 + T_{brake}) $$

$$ R_{load0}, R_{load2} = \mbox{ friction and aerodynamic drag coefficients} $$

$$ T_{load}, T_{brake} = \mbox{ load and brake torques} $$

$$ mph = \mbox{ vehicle linear velocity}$$

该模型根据下图所示的时间表对变速器的换挡点进行编程。对于给定齿轮的给定节气门,升挡时的车速是唯一的。降挡的仿真操作与之类似。

建模

打开模型时,将在模型工作区中设置初始条件。

模型的顶层图如下图所示。要运行仿真,请在 Simulation 选项卡上,点击运行。请注意,该模型将相关数据记录到 MATLAB 工作区中名为 sldemo_autotrans_output 的数据结构体中。记录的信号有蓝色指示符。运行仿真后,您可以通过在 MATLAB 命令行窗口中键入 sldemo_autotrans_output 来查看该数据结构体的组成部分。还要注意,单位出现在子系统图标和信号线上。

建模

上面显示的 Simulink 模型由表示发动机、变速器和车辆的模块组成,并具有控制传动比的附加换挡逻辑模块。用户对模型的输入采用节气门(以百分比表示)和制动扭矩(以 ft-lb 表示)形式。用户使用 ManeuversGUI 界面输入节气门和制动扭矩。

Engine 子系统包含一个二维表,该表根据节气门和发动机转速对发动机扭矩进行插值。下图显示复合 Engine 子系统。双击模型中的此子系统可查看其结构。

如下图所示,TorqueConverter 和 TransmissionRatio 模块组成 Transmission 子系统。双击模型窗口中的 Transmission 子系统以查看其组件。

TorqueConverter 是一个封装子系统,它执行方程 2。要打开此子系统,请右键点击它并从下拉菜单中选择封装 > 查看封装内部。该封装需要速度比向量 (Nin/Ne) 以及 K 因子 (f2) 和扭矩比向量 (f3)。下图显示 TorqueConverter 子系统的实现。

传动比模块确定表 1 中所示的传动比,并计算变速器输出扭矩和输入速度,如方程 3 所示。表下面的图显示实现该扭矩和速度比的子系统的模块图。

表 1:变速器齿轮比

gear     Rtr = Nin/Ne
 1         2.393
 2         1.450
 3         1.000
 4         0.677

标记为 ShiftLogic 的 Stateflow 模块实现变速器的挡位选择。双击模型窗口中的 ShiftLogic 以打开 Stateflow 图。模型资源管理器用于将输入定义为节气门和车速,将输出定义为所需的挡位号。两个虚线 AND 状态跟踪挡位状态和挡位选择过程的状态。整个图作为离散时间系统执行,每 40 毫秒采样一次。下面显示的 Stateflow 图说明该模块的功能。

通过在 Stateflow 调试器中启用动画,可以在仿真期间观察换挡逻辑行为。selection_state(始终处于活动状态)首先执行其 during 函数中指示的计算。该模型将升挡和降挡速度阈值计算为齿轮和节气门的瞬时值的函数。在处于 steady_state 时,模型将这些值与当前车速进行比较,以确定是否需要换挡。如果是,它将进入确认状态之一(upshiftingdownshifting),这会记录进入时间。

如果车速不再满足换挡条件,在确认状态下,模型将忽略换挡并转移回 steady_state。这可以防止由于噪声条件造成的不必要换挡。如果换挡条件在 TWAIT 个计时单元期间保持有效,模型将通过较低的结点进行转移,并根据当前挡位广播其中一个换挡事件。随后,模型在通过中心结点之一后再次激活 steady_state。广播到 gear_selection 状态的换挡事件会激活到对应新挡位的转移。

例如,如果车辆在节气门开度为 25% 的情况下以二挡前进,则状态 secondgear_state 内处于激活状态,并且 steady_stateselection_state 内处于激活状态。后者的 during 函数发现当车速超过 30 mph 时应升挡。当达到此车速时,模型进入 upshifting 状态。在这种状态下,如果车速保持 30 mph 以上达到 TWAIT 个计时单元,则模型满足向右下结点的转移条件。这也满足从此处到 steady_state 的转移条件 [|gear == 2|],因此模型现在将从 upshiftingsteady_state 的整体转移作为转移动作并广播事件 UP。因此,从第二挡到第三挡的转移在 gear_state 中进行,从而完成换挡逻辑。

根据方程 4 和方程 5,Vehicle 子系统使用净扭矩计算加速度,并对其积分以计算车速。Vehicle 子系统是封装子系统。要查看 Vehicle 模块的结构,请右键点击它并从下拉菜单中选择封装 > 查看封装内部。在封装菜单中输入的参数是最终驱动比、阻力摩擦和空气动力阻力的多项式系数、车轮半径、车辆惯量和初始变速器输出速度。

结果

仿真中使用的引擎扭矩图和变矩器特性如下所示。

获取 FactorK(第二行)和 TorqueRatio(第三行)与 SpeedRatio(第一行)的对照图

第一次仿真(超车动作)使用表 2 中给出的节气门时间表(此数据是线性插值的)。

表 2:第一次仿真的节气门时间表(超车动作)

Time (sec)    Throttle (%)
  0             60
 14.9           40
 15            100
100              0
200              0

第一列对应时间;第二列对应节气门开度百分比。在本例中,不应用制动器(制动扭矩为零)。车速从 0 开始,发动机转速为 1000 RPM。下图显示使用默认参数的基线结果图。当驾驶员在 t=0 踩下 60% 节气门时,发动机立即以超过两倍的速度作出响应。这导致变矩器的速度比变低,因此扭矩比变大。车辆很快加速(未对轮胎滑动建模),发动机和车辆都在增速,直到大约 t = 2 sec,此时发生 1-2 的升挡。发动机转速突然出现特征性地下降,然后恢复加速。2-3 升挡和 3-4 升挡分别发生在大约 4 秒和 8 秒处。请注意,因为惯量大,车速保持更大的平稳性。

t=15sec 处,驾驶员将节气门踩至 100%,这可能是典型的超车动作。变速器降至三挡,发动机转速从约 2600 RPM 升至约 3700 RPM。因此,发动机扭矩以及变速器的机械优势有所增加。随着节气门开度持续加大,车辆加速至约 100 mph,然后在约 t = 21 sec 处换挡为超速挡。在仿真的剩余时间,车辆以第四挡速度行驶。双击 ManeuversGUI 模块,使用图形界面更改节气门和制动历史记录。

运行多个场景并收集覆盖率

您可以针对所有场景运行模型,同时收集覆盖率。要查看为运行 sldemo_autotrans 的所有场景而保存的设计研究,请在 sldemo_autotrans 的“多个仿真”面板中打开 sldemo_autotrans_design_study.mldatx

打开设计研究后,在模型设置中启用模型覆盖率和累积收集。

set_param('sldemo_autotrans', 'CovEnable', 'on');

set_param('sldemo_autotrans', 'CovEnableCumulative', 'on');

完成此设置后,点击 Simulink 工具条上“仿真”选项卡上的 Run All (Coverage) 按钮。然后检查设计用例的模型覆盖率。

关闭模型

关闭模型,清除生成的数据。

总结

您可以通过模块化方式增强这一基本系统,例如,用更复杂的模型替换发动机或变速器。您可以通过逐步细化在此结构中构建大型系统。Stateflow 控制逻辑与 Simulink 信号处理的无缝集成使您能够构造高效且直观的模型。

另请参阅

相关主题