Обрежьте и линеаризуйте модели Simulink

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

Для получения дополнительной информации о программно определении точек ввода и вывода для линеаризации модели смотрите, Задают Фрагмент Модели, чтобы Линеаризовать и Задать Фрагмент Модели, чтобы Линеаризовать в Командной строке.

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

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

mdl = 'watertank';
open_system(mdl)

В этой модели существуют ожидаемые установившиеся условия работы, когда уровень воды в H= 10 .

Вычислите рабочую точку

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

Используя findop функционируйте, симулируйте модель и получите рабочую точку с помощью условий модели после 10 секунды.

opsim = findop(mdl,10)
opsim = 


 Operating point for the Model watertank.
 (Time-Varying Components Evaluated at time t=10)

States: 
----------
      <strong>x</strong>   
    <strong>______</strong>

(1.) watertank/PID Controller/Integrator/Continuous/Integrator
    1.6949
(2.) watertank/Water-Tank System/H
     10.08

Inputs: None 
----------

В этой рабочей точке, H не в требуемом значении 10. Однако можно использовать эту рабочую точку, чтобы инициализировать поиск рабочей точки где H= 10 .

Чтобы сконфигурировать поиск рабочей точки, сначала создайте объект спецификации рабочей точки.

opspec = operspec(mdl);

Инициализируйте значения состояний в спецификации рабочей точки со значениями состояния в рабочей точке opsim.

opspec = initopspec(opspec,opsim);

Обрежьте модель с помощью технических требований рабочей точки.

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

opreport = 


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

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.) watertank/PID Controller/Integrator/Continuous/Integrator
    -Inf    1.2649    Inf      0                0      0  
(2.) watertank/Water-Tank System/H
       0        10    Inf      0      -1.0991e-14      0  

Inputs: None 
----------

Outputs: None 
----------

В этой рабочей точке, H= 10 как ожидалось. Рабочая точка в устойчивом состоянии начиная с dx значения для состояний модели являются близким нулем.

Сконфигурируйте линейные аналитические точки

Чтобы линеаризовать модель, необходимо задать фрагмент модели, которую вы хотите линеаризовать. Линейные аналитические точки задают вводы и выводы линеаризовавшей модели. Чтобы извлечь разомкнутый контур линеаризовавшая модель объекта бака с водой, добавьте точку ввода при выходе блока Controller и выходной точки, с открытием цикла, при выходе блока Water-Tank System.

Задайте точку ввода.

watertank_io(1) = linio('watertank/PID Controller',1,'input');

Задайте выходную точку с открытием цикла.

watertank_io(2) = linio('watertank/Water-Tank System',1,'openoutput');

Линеаризуйте и анализируйте модель

Можно теперь линеаризовать модель с помощью заданной рабочей точки и линейных аналитических точек.

sys = linearize(mdl,opss,watertank_io);

Получившаяся модель является объектом пространства состояний, что можно анализировать использование любого из инструментов в программном обеспечении Control System Toolbox™. Например, просмотрите частотную характеристику линейной модели.

bode(sys)

Закройте модель Simulink®.

bdclose(mdl)

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

|

Похожие темы