В этом примере показано, как программно линеаризовать 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)