exponenta event banner

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

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

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

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

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')