Можно вычислить установившуюся рабочую точку модели Simulink® путем определения ограничений на состояния модели, выходных параметров и входных параметров, и путем нахождения условий работы модели, которые удовлетворяют этим ограничениям. Для получения дополнительной информации об установившихся рабочих точках займитесь Рабочими точками и Вычислите Установившиеся Рабочие точки.
Чтобы найти рабочую точку для вашей модели Simulink, можно программно обрезать модель с помощью findop
, как показано в этом примере.
В качестве альтернативы можно обрезать модель в:
Steady State Manager. Для получения дополнительной информации смотрите, Вычисляют Рабочие точки из Спецификаций Используя Steady State Manager.
Linear Analysis Tool. Для получения дополнительной информации смотрите, Вычисляют Рабочие точки из Specifications Using Linear Analysis Tool.
В этом примере вы вычисляете рабочую точку, чтобы соответствовать выходным спецификациям. Используя аналогичный подход, можно задать состояние или ввести спецификации. Кроме того, можно задать комбинацию состояния, вывести и ввести спецификации; то есть, вы не должны использовать, например, только спецификации состояния.
Для получения дополнительной информации об обрезке вашей модели, чтобы соответствовать спецификациям, смотрите, Вычисляют Установившиеся Рабочие точки из Спецификаций.
Откройте модель 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 с блоком об/мин.
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