Можно вычислить установившуюся рабочую точку модели Simulink ®, задав ограничения на состояния модели, выходы и входы, и найдя рабочее условие модели, которое удовлетворяет этим ограничениям. Для получения дополнительной информации об установившихся рабочих точках смотрите О рабочих точках и Вычислительных установившихся рабочих точках.
Чтобы найти рабочую точку для модели Simulink, можно программно обрезать модель с помощью findop
, как показано в этом примере.
Также можно обрезать модель в:
Steady State Manager. Для получения дополнительной информации см. «Вычисление рабочих точек из спецификаций с использованием Steady State Manager».
Model Linearizer. Для получения дополнительной информации см. «Вычисление рабочих точек из спецификаций с использованием Model Linearizer».
В этом примере вы вычисляете рабочую точку, чтобы соответствовать выходным спецификациям. Используя аналогичный подход, можно задать состояние или входные спецификации. Кроме того, можно задать комбинацию состояний, выходных и входных спецификаций; то есть вы не должны использовать, для примера, только спецификации состояний.
Для получения дополнительной информации о обрезке модели в соответствии со спецификациями, смотрите Вычисление Установившихся Рабочих Точек из Спецификаций.
Откройте модель 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]
Отчет о поиске рабочей точки показывает, что спецификации были успешно выполнены.
После обрезки модели можно:
Линеаризируйте модель в получившейся рабочей точке. Для получения дополнительной информации см. Раздел «Линеаризация в обрезанной рабочей точке».
Симулируйте модель в полученной рабочей точке. Для получения дополнительной информации см. «Моделирование модели Simulink в конкретной рабочей точке».
addoutputspec
| findop
| operspec