自动变速器控制器建模
此示例说明如何用 Simulink® 对汽车传动系统建模。Stateflow® 通过其变速器控制逻辑的表示增强 Simulink 模型。Simulink 为动态系统和过程的建模与仿真提供强大的环境。然而,在许多系统中,监督函数(如更改模式或调用新增益时间表)必须对可能发生的事件和随时间变化的条件作出响应。因此,环境需要一种能够管理这些涉及多种模式和开发条件的语言。在以下示例中,Stateflow 通过在自动变速器中执行挡位选择函数来显示它在这方面的优势。此函数通过在 Simulink 模块图中包含 Stateflow 模块,以自然直观的方式与传动系统动态相结合。
物理原理分析
下图显示典型汽车传动系统的动力流。非线性常微分方程对发动机、四速自动变速器和车辆进行建模。此示例中讨论的模型直接将此图中的模块实现为模块化 Simulink 子系统。另一方面,变速器控制单元 (TCU) 中的逻辑和决策并不适合良好表示的方程。TCU 更适合用 Stateflow 表示。Stateflow 监控与系统内重要关系对应的事件,并在事件发生时采取适当的措施。
节气门开度是发动机的输入之一。发动机连接到变矩器的叶轮上,变矩器将发动机耦合到变速器(参见方程 1)。
方程 1
变矩器的输入输出特性可以表示为发动机转速和涡轮转速的函数。在此示例中,我们假定动力流的方向始终从叶轮到涡轮(参见方程 2)。
方程 2
假设换挡时间较短,变速器模型通过静态齿轮比实现(参见方程 3)。
方程 3
最终驱动、惯量和动态变化的负载构成车辆动态(参见方程 4)。
方程 4
负载扭矩包括道路负载和制动扭矩。道路负载是摩擦和空气动力损失的总和(参见方程 5)。
方程 5
该模型根据下图所示的时间表对变速器的换挡点进行编程。对于给定齿轮的给定节气门,升挡时的车速是唯一的。降挡的仿真操作与之类似。
建模
打开模型时,将在模型工作区中设置初始条件。
模型的顶层图如下图所示。要运行仿真,请在 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 时,模型将这些值与当前车速进行比较,以确定是否需要换挡。如果是,它将进入确认状态之一(upshifting
或 downshifting
),这会记录进入时间。
如果车速不再满足换挡条件,在确认状态下,模型将忽略换挡并转移回 steady_state
。这可以防止由于噪声条件造成的不必要换挡。如果换挡条件在 TWAIT
个计时单元期间保持有效,模型将通过较低的结点进行转移,并根据当前挡位广播其中一个换挡事件。随后,模型在通过中心结点之一后再次激活 steady_state
。广播到 gear_selection
状态的换挡事件会激活到对应新挡位的转移。
例如,如果车辆在节气门开度为 25% 的情况下以二挡前进,则状态 second
在 gear_state
内处于激活状态,并且 steady_state
在 selection_state
内处于激活状态。后者的 during
函数发现当车速超过 30 mph 时应升挡。当达到此车速时,模型进入 upshifting
状态。在这种状态下,如果车速保持 30 mph 以上达到 TWAIT
个计时单元,则模型满足向右下结点的转移条件。这也满足从此处到 steady_state
的转移条件 [|gear == 2|],因此模型现在将从 upshifting
到 steady_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 信号处理的无缝集成使您能够构造高效且直观的模型。