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

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

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

В качестве альтернативы можно обрезать модель в:

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

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

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

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

mdl = 'scdspeed';
open_system(mdl)

Задайте технические требования рабочей точки

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

opspec = operspec(mdl)
opspec = 


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

States: 
----------
      <strong>x</strong>       <strong>Known</strong>    <strong>SteadyState</strong>    <strong>Min</strong>     <strong>Max</strong>    <strong>dxMin</strong>    <strong>dxMax</strong>
    <strong>______</strong>    <strong>_____</strong>    <strong>___________</strong>    <strong>____</strong>    <strong>___</strong>    <strong>_____</strong>    <strong>_____</strong>

(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
     0.543    false       true        -Inf    Inf    -Inf      Inf 
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
    209.48    false       true        -Inf    Inf    -Inf      Inf 

Inputs: 
----------
    <strong>u</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdspeed/Throttle  perturbation
    0    false    -Inf    Inf

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
opspec = 


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

States: 
----------
      <strong>x</strong>       <strong>Known</strong>    <strong>SteadyState</strong>    <strong>Min</strong>     <strong>Max</strong>    <strong>dxMin</strong>    <strong>dxMax</strong>
    <strong>______</strong>    <strong>_____</strong>    <strong>___________</strong>    <strong>____</strong>    <strong>___</strong>    <strong>_____</strong>    <strong>_____</strong>

(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
     0.543    false       true        -Inf    Inf    -Inf      Inf 
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
    209.48    false       true        -Inf    Inf    -Inf      Inf 

Inputs: 
----------
    <strong>u</strong>    <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>_</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdspeed/Throttle  perturbation
    0    false    -Inf    Inf

Outputs: 
----------
     <strong>y</strong>      <strong>Known</strong>    <strong>Min</strong>     <strong>Max</strong>
    <strong>____</strong>    <strong>_____</strong>    <strong>____</strong>    <strong>___</strong>

(1.) scdspeed/rad//s to rpm
    2000    true     -Inf    Inf

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

Найдите рабочую точку, которая выполняет этим техническим требованиям.

op1 = findop(mdl,opspec);
 Operating point search report:
---------------------------------

opreport = 


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

Operating point specifications were successfully met.
States: 
----------
    <strong>Min</strong>        <strong>x</strong>       <strong>Max</strong>    <strong>dxMin</strong>        <strong>dx</strong>         <strong>dxMax</strong>
    <strong>____</strong>    <strong>_______</strong>    <strong>___</strong>    <strong>_____</strong>    <strong>___________</strong>    <strong>_____</strong>

(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
    -Inf    0.54363    Inf      0       2.6649e-13      0  
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
    -Inf     209.44    Inf      0      -8.4758e-12      0  

Inputs: 
----------
    <strong>Min</strong>         <strong>u</strong>        <strong>Max</strong>
    <strong>____</strong>    <strong>_________</strong>    <strong>___</strong>

(1.) scdspeed/Throttle  perturbation
    -Inf    0.0038183    Inf

Outputs: 
----------
    <strong>Min</strong>      <strong>y</strong>      <strong>Max</strong> 
    <strong>____</strong>    <strong>____</strong>    <strong>____</strong>

(1.) scdspeed/rad//s to rpm
    2000    2000    2000

Отчет поиска рабочей точки показывает, что техническим требованиям выполнили успешно, и что оба состояния в устойчивом состоянии как ожидалось (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:
---------------------------------

opreport = 


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

Operating point specifications were successfully met.
States: 
----------
    <strong>Min</strong>       <strong>x</strong>       <strong>Max</strong>    <strong>dxMin</strong>        <strong>dx</strong>         <strong>dxMax</strong>
    <strong>____</strong>    <strong>______</strong>    <strong>___</strong>    <strong>_____</strong>    <strong>___________</strong>    <strong>_____</strong>

(1.) scdspeed/Throttle & Manifold/Intake Manifold/p0 = 0.543 bar
    -Inf    0.5436    Inf      0       2.9879e-13      0  
(2.) scdspeed/Vehicle Dynamics/w = T//J w0 = 209 rad//s
    -Inf    209.48    Inf      0      -9.8968e-13      0  

Inputs: 
----------
    <strong>Min</strong>         <strong>u</strong>        <strong>Max</strong>
    <strong>____</strong>    <strong>_________</strong>    <strong>___</strong>

(1.) scdspeed/Throttle  perturbation
    -Inf    0.0050021    Inf

Outputs: 
----------
    <strong>Min</strong>       <strong>y</strong>       <strong>Max</strong> 
    <strong>____</strong>    <strong>______</strong>    <strong>____</strong>

(1.) scdspeed/rad//s to rpm
    1900    2000.4    2100

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

После обрезки вашей модели вы можете:

Смотрите также

| |

Похожие темы