В этом примере показано, как линеаризовать модель скорости вращения двигателя для нескольких выходных условий.
Откройте модель.
mdl = 'scdspeed';
open_system(mdl)
В данном примере вы находите линейные модели от усовершенствования искры и регулируете угловые входные параметры к выходной скорости вращения двигателя. Вы делаете так для трех условий скорости: 2000, 3000, и 4 000 об/мин.
Создайте массив трех технических требований рабочей точки.
opspec = operspec(mdl,[3 1]);
Поскольку модель Simulink® не имеет никакого импорта корневого уровня, opspec
не содержит выходных технических требований. Можно добавить выходные технические требования для данного сигнала в модели с помощью addoutputspec
функция.
Добавьте выходную спецификацию в выход rad/s с блоком об/мин.
opspec = addoutputspec(opspec,'scdspeed/rad//s to rpm',1);
Для каждой спецификации укажите, что выходное значение известно, и задайте выходное значение. Установите известные значения скорости к 2 000, 3000, и 4 000 об/мин.
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;
Просмотрите объект технических требований для третьих условий работы.
opspec(3)
ans = Operating point specification for the Model scdspeed. (Time-Varying Components Evaluated at time t=0) States: ---------- <strong>x</strong> <strong>Known</strong> <strong>SteadyState</strong> <strong>Min</strong> <strong>Max</strong> <strong>dxMin</strong> <strong>dxMax</strong> <strong>______</strong> <strong>_____</strong> <strong>___________</strong> <strong>____</strong> <strong>___</strong> <strong>_____</strong> <strong>_____</strong> (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: ---------- <strong>u</strong> <strong>Known</strong> <strong>Min</strong> <strong>Max</strong> <strong>_</strong> <strong>_____</strong> <strong>____</strong> <strong>___</strong> (1.) scdspeed/Throttle perturbation 0 false -Inf Inf Outputs: ---------- <strong>y</strong> <strong>Known</strong> <strong>Min</strong> <strong>Max</strong> <strong>____</strong> <strong>_____</strong> <strong>____</strong> <strong>___</strong> (1.) scdspeed/rad//s to rpm 4000 true -Inf Inf
Ищите рабочие точки, которые выполняют этим техническим требованиям с помощью findop
функция.
opt = findopOptions('DisplayReport','off'); op = findop(mdl,opspec,opt);
Просмотрите получившуюся рабочую точку для третьих условий работы.
op(3)
ans = Operating point for the Model scdspeed. (Time-Varying Components Evaluated at time t=0) States: ---------- <strong>x</strong> <strong>______</strong> (1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar 0.4731 (2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s 418.88 Inputs: ---------- <strong>u</strong> <strong>______</strong> (1.) scdspeed/Throttle perturbation 5.8292
Чтобы линеаризовать модель, сначала задайте точки ввода линеаризации при выходных параметрах дросселя и блоков Усовершенствования Spark.
io(1) = linio('scdspeed/throttle (degrees)',1,'input'); io(2) = linio('scdspeed/Spark Advance',1,'input');
Затем задайте выходную точку линеаризации при выходе rad/s с блоком об/мин.
io(3) = linio('scdspeed/rad//s to rpm',1,'output');
Линеаризуйте модель для каждых из условий работы.
sys = linearize(mdl,op,io);
Постройте Предвещать ответ величины для получившихся линейных моделей.
bodemag(sys)
Закройте модель.
bdclose(mdl)
operspec
| findop
| linio
| linearize