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

Можно вычислить установившуюся рабочую точку модели Simulink ®, задав ограничения на состояния модели, выходы и входы, и найдя рабочее условие модели, которое удовлетворяет этим ограничениям. Для получения дополнительной информации об установившихся рабочих точках смотрите О рабочих точках и Вычислительных установившихся рабочих точках.

Чтобы найти рабочую точку для модели Simulink, можно программно обрезать модель с помощью findop, как показано в этом примере.

Также можно обрезать модель в:

В этом примере вы вычисляете рабочую точку, чтобы соответствовать выходным спецификациям. Используя аналогичный подход, можно задать состояние или входные спецификации. Кроме того, можно задать комбинацию состояний, выходных и входных спецификаций; то есть вы не должны использовать, для примера, только спецификации состояний.

Для получения дополнительной информации о обрезке модели в соответствии со спецификациями, смотрите Вычисление Установившихся Рабочих Точек из Спецификаций.

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

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

mdl = 'scdspeed';
open_system(mdl)

Определение спецификаций рабочих точек

Создайте спецификацию рабочей точки по умолчанию для модели.

opspec = operspec(mdl)
 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 
----------


Поскольку в модели нет выходы корневого уровня, объект спецификации рабочей точки по умолчанию не имеет выходных спецификаций.

В данном примере задайте известную установившуюся скорость вращения двигателя. Для этого добавьте выходную спецификацию на выходе блока rad/s в rpm.

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

Задайте известное значение 2000 об/мин для ограничения выхода.

opspec.Outputs(1).Known = 1;
opspec.Outputs(1).y = 2000;

Просмотрите обновленную спецификацию рабочей точки.

opspec
 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: 
----------
(1.) scdspeed/rad//s to rpm
	 spec:  y = 2e+03        


Модель обрезки

Найдите рабочую точку, которая соответствует этим спецификациям.

op1 = findop(mdl,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)

Отчет о поиске рабочей точки показывает, что спецификации были успешно выполнены, и что оба состояния находятся в установившемся состоянии, как ожидалось (dx = 0).

Можно также задать ограничения для выходов во время обрезки. Например, предположим, что вы знаете, что между 1900 существует установившееся условие и 2100 об/мин. Чтобы обрезать скорость до этой области значений, измените спецификации рабочей точки.

opspec.Outputs(1).Min = 1900;
opspec.Outputs(1).Max = 2100;

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

opspec.Outputs(1).Known = 0;
opspec.Outputs(1).y = 2050;

Найдите рабочую точку, которая соответствует этим спецификациям.

op2 = findop(mdl,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.99e-13 (0)
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
      x:           209      dx:      -9.9e-13 (0)

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

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

Отчет о поиске рабочей точки показывает, что спецификации были успешно выполнены.

После обрезки модели можно:

См. также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте