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

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

Генерация рабочих точек

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

scdspeed

Этот пример генерирует линейные модели выходной скорости вращения двигателя и между входными параметрами Усовершенствование Spark и Угол Дросселя. Команда FINDOP вычисляет рабочие точки при условиях устойчивого состояния в 2 000, 3000, и 4 000 об/мин.

Создайте объект спецификации рабочей точки использование команды

opspec = operspec('scdspeed')
 Operating point specification for the Model scdspeed.
 (Time-Varying Components Evaluated at time t=0)

States: 
----------
(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
	 spec:  dx = 0,  initial guess: 0.543
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
	 spec:  dx = 0,  initial guess: 209

Inputs: 
----------
(1.) scdspeed/Throttle  perturbation
	 initial guess: 0            

Outputs: None 
----------


Затем задайте желаемые условия работы. Зафиксируйте первый выходной порт Динамики аппарата, чтобы быть 2000, 3000, и 4 000 об/мин. Используйте команду ADDOUTPUTSPEC, чтобы сделать это.

opspec = addoutputspec(opspec,'scdspeed/rad//s to rpm',1);

Установите первую операционную спецификацию

opspec.Output.Known = 1;
opspec.Outputs.y = 2000;

Ищите рабочую точку, которая выполняет этой спецификации

op(1) = findop('scdspeed',opspec);
 Operating point search report:
---------------------------------

 Operating point search report for the Model scdspeed.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
      x:         0.544      dx:      2.66e-13 (0)
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
      x:           209      dx:     -8.48e-12 (0)

Inputs: 
----------
(1.) scdspeed/Throttle  perturbation
      u:       0.00382    [-Inf Inf]

Outputs: 
----------
(1.) scdspeed/rad//s to rpm
      y:         2e+03    (2e+03)

Теперь ищите остающиеся рабочие точки на уровне 3000 и 4 000 об/мин

opspec.Outputs.y = 3000;
op(2) = findop('scdspeed',opspec);
opspec.Outputs.y = 4000;
op(3) = findop('scdspeed',opspec);
 Operating point search report:
---------------------------------

 Operating point search report for the Model scdspeed.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
      x:          0.49      dx:     -5.14e-15 (0)
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
      x:           314      dx:      4.57e-13 (0)

Inputs: 
----------
(1.) scdspeed/Throttle  perturbation
      u:          2.94    [-Inf Inf]

Outputs: 
----------
(1.) scdspeed/rad//s to rpm
      y:         3e+03    (3e+03)


 Operating point search report:
---------------------------------

 Operating point search report for the Model scdspeed.
 (Time-Varying Components Evaluated at time t=0)

Operating point specifications were successfully met.
States: 
----------
(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
      x:         0.473      dx:      1.13e-11 (0)
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
      x:           419      dx:     -1.49e-10 (0)

Inputs: 
----------
(1.) scdspeed/Throttle  perturbation
      u:          5.83    [-Inf Inf]

Outputs: 
----------
(1.) scdspeed/rad//s to rpm
      y:         4e+03    (4e+03)

Линеаризация модели

Рабочие точки теперь готовы к линеаризации. Сначала задайте точки ввода и вывода с помощью команд:

io(1) = linio('scdspeed/throttle (degrees)',1,'input');
io(2) = linio('scdspeed/Spark Advance',1,'input');
io(3) = linio('scdspeed/rad//s to rpm',1,'output');

Линеаризуйте модель и постройте Предвещать ответ величины для каждого условия.

sys = linearize('scdspeed',op,io);
bodemag(sys)

Закройте модель.

bdclose('scdspeed')