メインコンテンツ

エンジン スロットルの LPV モデル

この例では、状態オフセット x˙0(p) で非線形性を考慮した線形パラメーター変動 (LPV) モデルとしてエンジン スロットルの動作をモデル化する方法を示します。また、LPV モデルの結果をシミュレートし、非線形シミュレーションで結果を比較します。

スロットルは、エンジンのインテーク マニホールドへの空気質量流量を制御します。スロットル本体には、運転者がアクセル ペダルを踏み込むと開くバタフライ バルブがあります。これにより、より多くの空気がシリンダー内に送り込まれ、エンジンのトルクが上がります。バタフライ バルブはマス-バネ-ダンパー システムとしてモデル化されます。バルブの回転量は 15 度から 90 度までに制限されています。

スロットル モデルの詳細については、Estimate Model Parameter Values (GUI) (Simulink Design Optimization)を参照してください。

LPV モデル

スロットルのダイナミクスは、この例で用意されている関数 throttleLPV.m で定義されています。

lpvss を使用してモデルを作成します。このモデルは、モデルの最初の状態であるスロットル角度でパラメーター化されます。

c0 = 50;
k0 = 120;
K0 = 1e6;
b0 = 4e4;
Ts = 0;
x0 = [15;0];
DF = @(t,p) throttleLPV(p,c0,k0,b0,K0);
sysp = lpvss('p',DF,Ts,0,15);

LPV シミュレーション

パラメーターの軌跡に沿った入力に対する開ループ応答を生成します。

このモデルでは、p(t) を時間 t、入力 u、および状態 x の関数 F(t,x,u) として暗黙的に指定します。ここで、p(t) はスロットル角度 (最初の状態) です。

load ThrottleInputData.mat
t2 = linspace(t(1),t(end),2000);
u2 = interp1(t,u,t2);
p = @(t,x,u)x(1);
yLPV = lsim(sysp,u2,t2,x0,p);

応答をプロットします。

plot(t2,yLPV)
title('LPV Simulation')
xlabel('Throttle angle')

Figure contains an axes object. The axes object with title LPV Simulation, xlabel Throttle angle contains an object of type line.

非線形シミュレーション

非線形の Simulink® モデルをシミュレートします。

open_system('throttleNLModel')
ysl = sim('throttleNLModel');
ysl = interp1(ysl.ScopeData(:,1),ysl.ScopeData(:,2),t);

LPV モデルと非線形モデルのシミュレーション結果を比較します。

figure(1)
clf
plot(t,ysl,t2,yLPV)
legend('Simulink model','LPV model','location','Best')
title('Comparison of LPV and Nonlinear Simulations')
xlabel('Throttle angle')

Figure contains an axes object. The axes object with title Comparison of LPV and Nonlinear Simulations, xlabel Throttle angle contains 2 objects of type line. These objects represent Simulink model, LPV model.

LPV モデルでは、実際の軌跡をスケジューリングに使用しているため、非線形応答のシミュレーションが良好です。

モデルを閉じます。

bdclose('throttleNLModel')

データ関数

type throttleLPV.m
function [A,B,C,D,E,dx0,x0,u0,y0,Delays] = throttleLPV(x1,c,k,b,K)
% LPV representation of engine throttle dynamics.
% Ref: https://www.mathworks.com/help/sldo/ug/estimate-model-parameter-values-gui.html
% x1: scheduling parameter (throttle angle; first state of the model)
% c,k,b,K: physical parameters

A = [0 1; -k -c];
B = [0; b];
C = [1 0];
D = 0;
E = [];
Delays = [];
x0 = [];
u0 = [];
y0 = [];

% Nonlinear displacement value
NLx = max(90,x1(1))-90+min(x1(1),15)-15;
% Capture the nonlinear contribution as a state-derivative offset
dx0 = [0;-K*NLx]; 

参考

| | |

トピック