此示例说明如何使用 Simulink® 对汽车传动系统建模。Stateflow® 通过表示变速器控制逻辑来增强 Simulink 模型。Simulink 为动态系统和过程的建模和仿真提供了强大的环境。但在许多系统中,更改模式或调用新增益规律等监管功能必须响应可能发生的事件以及随时间发展变化的情况。因此,环境需要一种能够管理这些多重模式和不断发展变化的情况的语言。在以下示例中,Stateflow 通过在自动变速中执行挡位选择功能来展示其在这一能力方面的优势。通过在 Simulink 模块图中合并 Stateflow 模块,此功能与传动系统动态自然且直观地结合在一起。

分析和物理原理

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

 

 

图 1:传动系统的通用模块图

节气门开度是发动机的输入之一。发动机与液力变矩器的泵轮相联,并通过液力变矩器与变速器耦合(参见方程 1)。

方程 1

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

方程 2

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

方程 3

主减速比、转动惯量和动态变化的负载,共同构建了整车动力学模型。(参见方程 4)

方程 4

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

方程 5

模型根据图 2 所示的规律设定变速器的换挡点。对于给定挡位下的给定节气门,升挡时具有唯一的车辆速度。降挡时类似。

 

 

图 2:换挡规律

建模

打开此模型,请在 MATLAB® 终端中键入 sldemo_autotrans。初始条件在模型工作区中设置。

该模型的顶层图如图 3 所示。要运行仿真,请按模型窗口中的工具栏上的 Play 按钮。请注意,模型将相关数据以名为 sldemo_autotrans_output 的数据结构体记录到 MATLAB 工作区中。记录的信号具有蓝色指示标记(参见图 3)。在运行仿真后,您可以通过在 MATLAB 命令行窗口中输入 sldemo_autotrans_output 来查看数据结构体的组成。另请注意,单位显示在子系统图标和信号线上。要了解有关 Simulink 中的单位的详细信息,请参阅 Simulink 单位

图 3:模型图和采样仿真结果(超车动作)

建模

图 3 所示的 Simulink 模型由代表发动机、变速器和车辆的模块组成,并且额外有一个换挡逻辑模块,用于控制变速器的传动比。模型的用户输入由节气门(以百分比给出)和制动扭矩(以 ft-lb 为单位给出)组成,通过 ManeuversGUI 界面可以输入节气门和制动扭矩。

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

图 4:Engine 子系统

TorqueConverter 和 TransmissionRatio 模块构成了 Transmission 子系统,如图 5 所示。在模型窗口中双击 Transmission 子系统可查看其组件。

图 5:Transmission 子系统

TorqueConverter 是一个封装子系统,它实现了方程 2。要打开此子系统,请右键点击它,然后从下拉菜单中选择 Mask > Look Under Mask。封装需要速度比 (Nin/Ne) 向量以及 K 系数 (f2) 和扭矩比 (f3) 的向量。图 6 显示了 TorqueConverter 子系统的实现。

图 6:液力变矩器子系统

变速器速比模块根据表 1 确定传动比,并根据方程 3 计算出变速器的输出扭矩和输入转速,如图 7 所示的子系统模型在扭矩和转速方面体现了传动比。

表 1:变速器齿轮比

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

图 7:变速器齿轮比子系统

标记为 ShiftLogic 的 Stateflow 模块实现变速器的挡位选择。在模型窗口中双击 ShiftLogic 可打开 Stateflow 图。利用 Model Explorer 将输入定义为节气门和车辆速度,将输出定义为所需的挡位数。两个用虚线围起来的 AND 状态跟踪挡位状态和挡位选择过程的状态。整体图作为一个离散时间系统执行,每 40 毫秒采样一次。图 8 所示的 Stateflow 图展示了模块的功能。

图 8:变速器换挡逻辑的 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 状态。在此状态下,如果车辆速度在 TWAIT 个时刻内保持 30 mph 以上,模型将满足引至右下联接点的转移条件。这也满足在从这里转移至 steady_state 时的条件 [|gear == 2|],因此模型此时会从 upshifting 整体转移至 steady_state,并将事件 UP 广播为转移操作。最终,在 gear_state 中从二挡转移到三挡,从而完成换挡逻辑。

Vehicle 子系统(图 9)使用净扭矩来计算加速度,并对其积分以计算车辆速度(根据方程 4 和方程 5)。Vehicle 子系统为封装子系统。要查看 Vehicle 模块的结构,请右键点击它,然后从下拉菜单中选择 Mask > Look Under Mask。在封装菜单中输入的参数,包括主减速比、摩擦阻力系数和空气动力阻力系数、车轮半径、整车惯量以及初始变速器输出转速。

图 9:Vehicle 子系统(封装)

结果

仿真中使用的发动机扭矩图和液力变矩器特性如图 10 和图 11 所示。

图 10:发动机扭矩图

图 11:液力变矩器特性(参见图 5 和方程 2)

第一个仿真(超车动作)使用表 2 中给出的节气门规律(此数据经过线性插值)。

表 2:第一个仿真(超车动作)的节气门规律

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

第一列对应的是时间;第二列对应的是节气门开度(百分比)。在这种情况下,未施加制动(制动扭矩为零)。车辆速度从零开始,发动机转速从 1000 RPM 开始。图 12 显示了使用默认参数的基准结果图。如果驾驶员在 t=0 时节气门开度给到 60%,发动机会立即以超过其双倍转速的方式予以响应。这会在液力变矩器上产生低转速比,从而得到大扭矩比(参见图 6 和图 11)。车辆快速加速(没有对轮胎滑移进行建模),并且发动机和车辆会一直提速直至大约 t = 2 sec 时,此时将从 1 挡升至 2 挡。发动机转速特性曲线骤降,然后恢复加速。2 挡升至 3 挡和 3 挡升至 4 挡分别在大约 4 秒钟和 8 秒钟时发生。请注意,由于整车惯量较大,车辆速度要平滑得多。

图 12:超车动作仿真时间历史记录

在 t=15sec 时,驾驶员将节气门开度给到 100%,这可能是超车动作的典型情况。变速器降至 3 挡,发动机转速从大约 2600 RPM 跳至大约 3700 RPM。因此,发动机扭矩会略微增加,变速器的机械效益也会略微增大。在持续重节气门下,车辆加速至大约 100 mph,然后在大约 t = 21 sec 换挡至超速挡。在仿真的其余部分,车辆以第四挡位行驶。双击 ManeuversGUI 模块并使用图形界面更改节气门和制动历史记录。

关闭模型

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

结论

此基本系统可以通过模块化的方式轻松增强,例如将发动机或变速器替换为更复杂的模型。因此,我们可以在此结构内通过渐进式优化来构建大型系统。Stateflow 控制逻辑与 Simulink 信号处理的无缝集成使我们能够构造高效且直观的模型。

关注公众号: 只关于编程 (ID:allcoding) ,每天推送MATLAB学习最常见的问题,每天进步一点点,业精于勤荒于嬉

 打开微信扫一扫哦!

版权声明:本文为52geek原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/52geek/archive/2004/01/13/10424708.html