Линеаризуйте модель скорости вращения двигателя

В этом примере показано, как линеаризовать модель скорости вращения двигателя для нескольких выходных условий.

Модель скорости вращения двигателя

Откройте модель.

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)

Смотрите также

| | |

Похожие темы