Main Content

容错燃油控制系统建模

此示例说明如何结合使用 Stateflow® 和 Simulink® 来进行混合系统建模。这种类型的建模对于具有基于离散事件的多种可能运行模式的系统特别有用。传统的信号流在 Simulink 中处理,而控制配置的更改在 Stateflow 中实现。此示例中所述的模型表示一个汽油发动机的燃油控制系统。该系统具有稳健性,因为它可以检测到单个传感器的故障,并且可以动态重新配置控制系统以实现不间断运行。

物理原理分析

物理和经验关系构成此模型的节气门和进气歧管动态的基础。通过将空气质量流量(从进气歧管泵出)除以燃油质量流速(在气门处喷射)来计算空燃比。化学计量的混合比提供动力、燃油经济性和排放之间的良好折衷。此系统的目标空燃比为 14.6。通常,传感器确定废气 (EGO) 中存在的残余氧气量。它是混合比的良好指标,并为闭环控制提供反馈测量。如果传感器指示存在高氧气水平,控制律会增加喷油量。当传感器检测到浓燃油混合物时,控制器会降低喷油量。

建模

打开模型。要运行仿真,请在 Simulink 工具条中的仿真选项卡上点击运行

该模型使用回调函数将仿真所需的数据从 sldemo_fuelsys_data.m 加载到模型工作区中。将初始条件加载到模型工作区中会将仿真数据与您可能已打开的其他模型中的数据隔离开来,并有助于避免 MATLAB 工作区杂乱。要查看模型工作区的内容,请在 Simulink 编辑器的建模选项卡上的设计部分中,展开库并选择 Model Explorer。在模型资源管理器窗口中,在左侧的模型层次结构列表中,展开 sldemo_fuelsys 并选择 Model Workspace。有关如何使用回调加载仿真数据的详细信息,请参阅Automatically Initialize Variables and Load Data

该模型将相关数据记录到 MATLAB 工作区中名为 sldemo_fuelsys_output 的数据结构体中,并将数据流式传输到仿真数据检查器。记录的信号具有蓝色标记。要了解有关数据记录的更多信息,请参阅使用信号记录保存信号数据

请注意,单位在模型和子系统图标以及信号线上均可见。单位是在端口和总线对象上指定的。

Dashboard 子系统允许您在仿真期间与模型进行交互。“故障注入”开关可以从“正常”位置移至“故障”位置,以对传感器故障进行仿真,同时可以切换“发动机转速”选择器开关以更改发动机转速。燃料和空气/燃料比信号是使用仪表和示波器进行可视化的。Dashboard 子系统中的模块来自 Dashboard 库。要了解 Dashboard 模块,请参阅通过交互显示控制仿真

fuel_rate_control 使用来自系统传感器的信号确定给出化学计量混合物的喷油量。喷油量与发动机气体动态模型中的实际空气流相结合,以确定在排气中检测到的最终混合比。

您可以通过关闭 Dashboard 子系统中对应的滑块开关,对四个传感器(节气门角度、速度、EGO 和歧管绝对压力 [MAP])中每个传感器的故障进行仿真。要访问这些开关,请双击名为 Dashboard 的子系统模块。要翻转开关,请点击希望开关句柄移到的位置。如果停止仿真,请选择 Slider Switch 模块,然后点击希望句柄移到的位置。每个滑块开关都连接到 Constant 模块的值参数。当您关闭滑块开关时,您会更改 Constant 模块的值。

同样,您可以通过切换 Dashboard 子系统上的发动机转速开关来诱发高发动机转速的故障情况。Repeating Table 模块提供节气门角度输入,并周期性重复封装中指定的数据序列。

fuel_rate_control 子系统使用传感器输入和反馈信号来调整喷油量,以给出化学计量比。该模型使用三个子系统来实现此策略:一个用于控制逻辑,一个用于气流计算,一个用于燃油计算。在正常运行情况下,该模型估算气流量,并将估算值乘以所需比率的倒数来得出喷油量。来自氧传感器的反馈提供速率估计的闭环调节,以保持理想的混合比。

控制逻辑

由一组(六个)并行状态组成的单个 Stateflow 图完整地实现控制逻辑。图顶部所示的四个并行状态对应于四个单独的传感器。底部的其余两个并行状态同时考虑四个传感器的状态,并确定整个系统的操作模式。该模型以 0.01 秒的规则采样时间间隔同步调用整个 Stateflow 图。这允许按时间测试转移到正确模式的条件。

如果在 Stateflow 调试器中启用动画,随着不同状态的激活,状态转移会在 Stateflow 图中突出显示。激活的顺序通过更改颜色来指示。Stateflow 和 Simulink 之间这种紧密耦合的协作便于整个控制系统的建模和开发。

打开 control_logic Stateflow 图,请在 fuel_rate_control 子系统中双击它。

当执行开始时,除了氧传感器 (EGO) 之外,所有状态都以 normal 模式开始。最初进入 O2_warmup 状态,直到预热期结束。当节气门和压力传感器的测量值超出其额定范围时,系统会检测到它们出现故障。没有速度信号的歧管真空表明速度传感器出现故障。氧传感器也有故障条件的额定范围,但由于零是最小信号级别和范围的最小值,因此仅当故障超过上限时才能检测到故障。

无论哪个传感器出现故障,该模型都会生成有向事件广播 Fail.INC。这样,通用传感器故障逻辑的触发会独立于传感器。该模型还使用对应的传感器恢复事件 Fail.DECFail 状态跟踪故障传感器的数量。该计数器的值在每发生一个 Fail.INC 事件时递增,每发生一个 Fail.DEC 事件时递减。该模型使用父状态 Multi 在多个传感器出现故障时对所有故障进行分组。

底部并行状态表示发动机的加油模式。如果单个传感器出现故障,运行会继续,但空燃混合物会更浓,以更高的排放为代价使运行更平稳。如果一个以上的传感器出现故障,作为一种安全措施,发动机会关闭,因为无法可靠地控制空燃比。

在氧传感器预热期间,模型将混合物保持在正常水平。您可以通过将预热状态移到 Rich_Mixture 父状态来更改设计。如果传感器在预热期间发生故障,则预热时间过后,将进入 Single_Failure 状态。否则,此时会激活 Normal 状态。

通过在 Fuel_Disabled 父状态中创建一个新状态,在模型中添加了保护超速功能。通过使用历史结点,该模型确保当模型退出超速状态时,图返回到适当的状态。使用这种方法,如果要指定发动机的额外安全要求,您可以将额外的关闭状态添加到 Fuel_Disabled 父状态中。

传感器校正

当传感器出现故障时,模型会计算传感器的估计值。例如,打开压力传感器计算。在传感器正常工作时,模型使用压力传感器的值。否则,模型会估计值。

该模型根据发动机转速和节气门位置的函数关系计算歧管压力的估计值。要计算该值,模型在 Stateflow 中使用了一个 Simulink 函数。

气流计算

名为 airflow_calc 的子系统是中央控制律所在的位置。此模块位于 fuel_rate_control 子系统内(打开此模块)。该子系统估计进气流量,以确定给出适当空/燃比的喷油量。闭环控制根据残余氧气反馈调整估计值,以精确保持混合比。即使传感器故障要求开环操作,最近的闭环调整也会保留,以最好地满足控制目标。

方程 1

引擎的进气流量可以表示为发动机转速、歧管压力和时变缩放因子的乘积。

$$q=\frac{N}{4\pi}V_{cd}\nu \frac{P_m}{RT} = C_{pump}(N,P_m) N P_m =
\mbox{ intake mass flow}$$

$$N = \mbox{ engine angular speed (Rad/sec)}$$

$$V_{cd} = \mbox{ engine cylinder displacement volume}$$

$$\nu = \mbox{ volumetric efficiency}$$

$$P_m = \mbox{ manifold pressure}$$

$$R, T =\mbox{ specific gas constant, gas temperature}$$

Cpump 通过查找表计算,并乘以速度和压力以形成初始流量估计值。在瞬变过程中,节气门开度(导数由高通滤波器逼近)根据充气动态校正空气流量。控制算法根据方程 2 提供额外的校正。

方程 2

$$e_0 = 0.5 \mbox{ for } EGO\le 0.5$$

$$e_0 = -0.5 \mbox{ for } EGO > 0.5$$

$$e_1 = K_i (N,P_m) e_0 \mbox{ for } EGO\le 0.5$$

$$\dot{e_2} = e_1 \mbox{ for LOW mode with valid EGO signal} $$

$$\dot{e_2} = 0 \mbox{ for RICH, DISABLE or EGO warmup} $$

$$ e_0, e_1, e_2 = \mbox{ intermediate error signals}$$

非线性氧传感器是使用名为 EGO Sensor 的 MATLAB® Function 模块进行建模的。要查看该模块,请从模型的顶层进入名为 Engine Gas Dynamics 的子系统。然后,输入名为 Mixing & Combustion 的子系统。

EGO Sensor 建模为一个双曲正切函数,当在 0.5 伏附近时,它提供有意义的信号。因此,反馈环中的原始误差用开关阈值来检测,如方程 2 所示。如果空燃比低(混合气过稀),则原始空气估计值太小,需要增加。相反,当氧传感器输出高时,空气估计值过大,需要降低。利用积分控制,使得校正项达到在混合比中产生零稳定状态误差的水平。

正常闭环操作模式 LOW 会动态调整积分器,以最小化误差。积分在离散时间内执行,每 10 毫秒更新一次。然而,当开环操作时,在 RICH 或 O2 故障模式下,反馈误差被忽略,积分器保持不变。这将根据最近的有效反馈给出最佳校正。

燃油计算

名为 fuel_rate_control 的子系统包含名为 fuel_calc 的子系统。fuel_calc 子系统设置喷射器信号以匹配给定的气流计算和故障状态。该子系统的第一个输入是计算的气流估计。此值与目标燃空比相乘,得到指定的喷油量。通常目标是化学计量的,即等于 14.6 的最佳空燃比。当一个传感器出现故障时,Stateflow 控制逻辑将模式输入设置为值 2 或 3(RICH 或 DISABLED),以便混合物稍微浓于化学计量或完全关闭。

名为 fuel_calc 的子系统采用可调补偿以在不同模式下实现不同目的。在正常操作中,会在闭环稳定裕量中增加反馈校正信号的相位超前补偿。然而,在 RICH 模式和 EGO 传感器故障(开环)期间,复合燃油信号经过低通滤波以衰减在估计过程中引入的噪声。最终结果是一个表示燃油流量的信号,在实际系统中,该信号将转换为喷射器脉冲时间。

结果和结论

仿真运行时,节气门输入在两秒内从 10 度倾斜到 20 度,然后在接下来的两秒内回到 10 度。当发动机保持恒定速度时,该循环连续重复,以便用户可以试验不同故障条件和故障模式。

点击控制板子系统中的传感器故障开关,对关联传感器的故障进行仿真。重复此操作,将开关滑回正常工作状态。

现在,在关闭不同传感器的情况下运行仿真。绘制以下场景下的燃油流量和空燃比:

  • 所有传感器函数正常

  • 节气门传感器故障

  • 速度传感器故障

  • EGO 传感器故障

  • MAP 传感器故障

检查燃油流量图。在基线情况下,会对喷油量进行严格调节,由于 EGO 传感器的输入电路的开关特性,喷油量会呈现小的波纹。在另外四种情况下,系统开环运行。在单一故障模式下,该控制策略证明能够有效保持正确的燃油曲线。在每种故障条件下,喷油量基本上是基线流量的 125%,满足 80% 浓油的设计目标。

在每种情况下,注意燃油流量和三角节气门指令之间的非线性关系。

现在,检查空燃比曲线图。基线图显示闭环操作的效果。混合比严格控制为化学计量目标 14.6。底部的四个图显示了浓混合比。虽然它们没有像在闭环情况下那样受到严格的调节,但它们接近空燃比目标:0.8*14.6=11.7

检查系统的瞬态特性。当节气门角度始终为 12 度且系统处于稳定状态时,节气门故障会在 t = 2 时出现,并在 t = 5 时得到校正。在故障开始时,喷油量会立即增加。当浓空燃比在系统中传播时,在排气端可以看到这种影响。当闭环操作还原时,稳定状态条件迅速恢复。

相关主题