Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

容错燃油控制系统建模

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

物理原理分析

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

建模

图 1 显示 Simulink 模型的顶层。要打开模型,请点击 Open Model。按下模型窗口工具栏中的 Play 按钮运行仿真。模型从 sldemo_fuelsys_data.m 中将必要的数据加载到模型工作区。该模型将相关数据记录到 MATLAB 工作区中名为 sldemo_fuelsys_output 的数据结构体中,并将数据流式传输到仿真数据检查器。记录的信号用蓝色指示符标记,而流式传输信号具有浅蓝色标记(参见图 1)。

请注意,将初始条件加载到模型工作区中会将仿真数据与您可能已打开的其他打开模型中的数据隔离开来。这也有助于避免 MATLAB 工作区混乱。要查看模型工作区的内容,请选择 Modeling >模型资源管理器,然后从 Model Hierarchy 列表中点击 Model Workspace。

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

图 1:燃油控制系统模型的顶层图

Dashboard 子系统(如图 2 所示)允许您在仿真期间与模型进行交互。Fault Injection 开关可以从 Normal 位置移至 Fail 位置,以对传感器故障进行仿真,同时可以切换 Engine Speed 选择器开关以更改发动机转速。燃油和空燃比信号通过控制板仪表和示波器可视化,以在仿真运行期间提供可视反馈。

图 2:燃油控制系统模型的 Dashboard 子系统

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

您可以通过使用 Dashboard 子系统中的滑块开关对故障进行仿真,从而有选择地禁用四个传感器(节气门角度、速度、EGO 和歧管绝对压力 [MAP])。Simulink 通过将滑块开关绑定到 Constant 模块的值参数来实现这一点。双击 Dashboard 子系统,以打开控制板来更改开关的位置。同样,您可以通过切换 Dashboard 子系统上的发动机转速开关来诱发高发动机转速的故障情况。Repeating Table 模块提供节气门角度输入,并周期性重复封装中指定的数据序列。

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

图 3:喷油量控制器子系统

控制逻辑

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

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

图 4:控制逻辑图

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

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

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

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

通过在 Fuel_Disabled 父状态中创建一个新状态,在模型中添加了保护超速功能。通过使用历史结点,我们确保当模型退出超速状态时,图返回到适当的状态。随着更好地指定发动机安全要求,我们可以在 Fuel_Disabled 父状态中增加额外的关闭状态。

传感器校正

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

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

气流计算

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

图 6:气流估计和校正

方程 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}$$

图 7:Engine Gas Dynamics 子系统

图 8:Engine Gas Dynamics 子系统内的 Mixing & Combustion 模块

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

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

燃油计算

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

图 9:fuel_calc 子系统

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

图 10:可切换补偿子系统

结果和结论

仿真结果如图 11 和图 12 所示。仿真运行时,节气门输入在两秒内从 10 度倾斜到 20 度,然后在接下来的两秒内回到 10 度。当发动机保持恒定速度时,该循环连续重复,以便用户可以试验不同故障条件和故障模式。点击控制板子系统中的传感器故障开关,对关联传感器的故障进行仿真。重复此操作,将开关滑回正常工作状态。

图 11:比较不同传感器故障的燃油流量

图 11 比较无故障条件下(基线)的燃油流量和每个传感器单独出现单一故障时的流量。在每种情况下,注意燃油流量和三角节气门指令之间的非线性关系(如图 13 所示)。在基线情况下,会对喷油量进行严格调节,由于 EGO 传感器的输入电路的开关特性,喷油量会呈现小的波纹。在另外四种情况下,系统开环运行。在单一故障模式下,该控制策略证明能够有效保持正确的燃油曲线。在每种故障条件下,喷油量基本上是基线流量的 125%,满足 80% 浓油的设计目标。

图 12:比较不同传感器故障的空燃比

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

图 13:节气门指令

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

图 14:故障检测的瞬变响应

备注

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

相关主题