Linearize Engine Speed Model
This example shows how to linearize an engine speed model for multiple output conditions.
Engine Speed Model
Open the model.
mdl = 'scdspeed';
open_system(mdl)
For this example, you find linear models from the spark advance and throttle angle inputs to the output engine speed. You do so for three speed conditions: 2000, 3000, and 4000 rpm.
Find Operating Points
Create an array of three operating point specifications.
opspec = operspec(mdl,[3 1]);
Since the Simulink® model does not have any root-level inports, opspec
does not contain any output specifications. You can add output specifications for a given signal in your model using the addoutputspec
function.
Add an output specification to the output of the rad/s to rpm block.
opspec = addoutputspec(opspec,'scdspeed/rad//s to rpm',1);
For each specification, indicate that the output value is known and specify the output value. Set the known speed values to 2000, 3000, and 4000 rpm.
opspec(1).Outputs.Known = 1; opspec(1).Outputs.y = 2000; opspec(2).Outputs.Known = 1; opspec(2).Outputs.y = 3000; opspec(3).Outputs.Known = 1; opspec(3).Outputs.y = 4000;
View the specifications object for the third operating condition.
opspec(3)
ans = Operating point specification for the Model scdspeed. (Time-Varying Components Evaluated at time t=0) States: ---------- x Known SteadyState Min Max dxMin dxMax ___________ ___________ ___________ ___________ ___________ ___________ ___________ (1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar 0.543 false true -Inf Inf -Inf Inf (2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s 209.48 false true -Inf Inf -Inf Inf Inputs: ---------- u Known Min Max _____ _____ _____ _____ (1.) scdspeed/Throttle perturbation 0 false -Inf Inf Outputs: ---------- y Known Min Max _____ _____ _____ _____ (1.) scdspeed/rad//s to rpm 4000 true -Inf Inf
Search for operating points that meet these specifications using the findop
function.
opt = findopOptions('DisplayReport','off'); op = findop(mdl,opspec,opt);
View the resulting operating point for the third operating condition.
op(3)
ans = Operating point for the Model scdspeed. (Time-Varying Components Evaluated at time t=0) States: ---------- x _______ (1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar 0.4731 (2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s 418.879 Inputs: ---------- u ______ (1.) scdspeed/Throttle perturbation 5.8292
Linearize Model
To linearize the model, first specify the linearization input points at the outputs of the throttle and Spark Advance blocks.
io(1) = linio('scdspeed/throttle (degrees)',1,'input'); io(2) = linio('scdspeed/Spark Advance',1,'input');
Next, specify the linearization output point at the output of the rad/s to rpm block.
io(3) = linio('scdspeed/rad//s to rpm',1,'output');
Linearize the model for each of the operating conditions.
sys = linearize(mdl,op,io);
Plot the Bode magnitude response for the resulting linear models.
bodemag(sys)
Close the model.
bdclose(mdl)
See Also
operspec
| findop
| linio
| linearize