В этом примере показано, как использовать slLinearizer интерфейс для пакетной линеаризации модели Simulink ®. Можно изменять значения параметров модели и получать из модели несколько функций переноса с разомкнутым и замкнутым контуром.
Можно выполнить тот же анализ с помощью linearize команда. Однако если требуется получить несколько функций передачи с разомкнутым и замкнутым контуром, особенно для моделей, которые дорого компилируются повторно, slLinearizer может быть более эффективным.
Так как изменения параметров в этом примере не влияют на рабочую точку модели, пакетная линеаризация модели выполняется в одной рабочей точке. Если приложение использует вариации параметров, влияющие на рабочую точку модели, сначала обрезайте модель для каждой комбинации значений параметров. Для примера, в котором используется linearize см. раздел Пакетная линеаризация модели в нескольких рабочих точках, полученных из вариаций параметров.
scdcascade модель, используемая в этом примере, содержит пару каскадных контуров управления с обратной связью. Каждый контур включает в себя PI-контроллер. Модели завода, G1 (внешний контур) и G2 (внутренняя петля), являются моделями LTI.
Используйте slLinearizer интерфейс для анализа динамики внутреннего и внешнего контуров.
Откройте модель.
mdl = 'scdcascade';
open_system(mdl);

Используйте slLinearizer для создания интерфейса.
sllin = slLinearizer(mdl)
slLinearizer linearization interface for "scdcascade":
No analysis points. Use the addPoint command to add new points.
No permanent openings. Use the addOpening command to add new permanent openings.
Properties with dot notation get/set access:
Parameters : []
OperatingPoints : [] (model initial condition will be used.)
BlockSubstitutions : []
Options : [1x1 linearize.LinearizeOptions]
В окне команд отображается информация о slLinearizer интерфейс. В этом интерфейсе параметры для изменения еще не определены, поэтому Paramaeters пустое свойство.
Для анализа внутреннего контура варьируйте коэффициенты усиления блока контроллера PI внутреннего контура, C2. Варьировать пропорциональный коэффициент усиления (Kp2) и интегральное усиление (Ki2) в диапазоне 15%.
Kp2_range = linspace(Kp2*0.85,Kp2*1.15,6); Ki2_range = linspace(Ki2*0.85,Ki2*1.15,4); [Kp2_grid, Ki2_grid] = ndgrid(Kp2_range,Ki2_range); params(1).Name = 'Kp2'; params(1).Value = Kp2_grid; params(2).Name = 'Ki2'; params(2).Value = Ki2_grid; sllin.Parameters = params;
Kp2_range и Ki2_range укажите значения образца для Kp2 и Ki2. Получение передаточной функции для каждой комбинации Kp2 и Ki2, использовать ndgrid и создать сетку параметров 6 x 4 с матрицами сетки Kp2_grid и Ki2_grid. Сконфигурируйте Parameters имущество sllin со структурой params. Эта структура определяет изменяемые параметры и их массивы сетки.
Общая передаточная функция замкнутого контура для внутреннего контура равна передаточной функции из u1 кому y2. Чтобы исключить влияние внешнего контура, можно разорвать контур на e1, y1m, или y1. В этом примере разорвать цикл на e1.
Добавить u1 и y2 в качестве точек анализа, и e1 как постоянное открытие sllin.
addPoint(sllin,{'y2','u1'});
addOpening(sllin,'e1');
Получение функции переноса из u1 кому y2.
r2yi = getIOTransfer(sllin,'u1','y2');
r2yiмассив модели с пространством состояний 6 x 4 содержит передаточную функцию для каждой указанной комбинации параметров. Программа использует исходные условия модели в качестве рабочей точки линеаризации.
Поскольку e1 является постоянным открытием sllin, r2yi не включает эффекты внешнего контура.
Постройте график ответа на шаг для r2yi.
stepplot(r2yi);

Отклик на шаг для всех моделей варьируется в диапазоне 10%, а время отстаивания составляет менее 1,5 секунды.
Получить функцию передачи внутреннего контура в y2, при разомкнутом внешнем контуре e1.
Li = getLoopTransfer(sllin,'y2',-1);
Поскольку программное обеспечение предполагает положительную обратную связь по умолчанию и scdcascade использует отрицательную обратную связь, укажите знак обратной связи с помощью третьего входного аргумента.
Сейчас. getLoopTransfer возвращает массив state-space (ss) модели, по одной для каждой записи в сетке параметров. SamplingGrid имущество Li сопоставляет значения параметров с соответствующими ss модель.
Постройте график ответа bode для.
bodeplot(Li);

График величины для всех моделей изменяется в 3-dB диапазоне. График фазы показывает наибольшее изменение, приблизительно 20 °, в [1 10] интервал rad/s.
Для анализа внешнего контура варьируйте коэффициенты усиления блока контроллера PI внешнего контура, C1. Варьировать пропорциональный коэффициент усиления (Kp1) и интегральное усиление (Ki1) в диапазоне 20%.
Kp1_range = linspace(Kp1*0.8,Kp1*1.2,6); Ki1_range = linspace(Ki1*0.8,Ki1*1.2,4); [Kp1_grid, Ki1_grid] = ndgrid(Kp1_range,Ki1_range); params(1).Name = 'Kp1'; params(1).Value = Kp1_grid; params(2).Name = 'Ki1'; params(2).Value = Ki1_grid; sllin.Parameters = params;
Подобно рабочему процессу конфигурирования сетки параметров для анализа внутреннего цикла, создайте структуру, params, которая задает сетку параметров 6 x 4. Перестроить sllin.Parameters для использования новой сетки параметров. sllin теперь использует значения по умолчанию для Kp2 и Ki2.
Удалить e1 из списка постоянных проемов для sllin перед продолжением анализа по внешнему контуру.
removeOpening(sllin,'e1');
Для получения функции передачи по замкнутому контуру из опорного сигнала, r, к выходу установки, y1m, добавить r и y1m как точки анализа sllin.
addPoint(sllin,{'r','y1m'});
Получение функции переноса из r кому y1m.
r2yo = getIOTransfer(sllin,'r','y1m');
Постройте график ответа на шаг для r2yo.
stepplot(r2yo);

Отклик шага для всех моделей понижен.
Для получения чувствительности внешнего контура на выходе установки, добавить y1 как точка анализа sllin.
addPoint(sllin,'y1');
Получить чувствительность внешнего контура при y1.
So = getSensitivity(sllin,'y1');
Постройте график ответа на шаг So.
stepplot(So)

График показывает, что для отклонения ступенчатого нарушения на выходе установки требуется приблизительно 15 секунд. y1.
При пакетном линеаризации для вариаций параметров можно получить смещения линеаризации, соответствующие рабочим точкам линеаризации. Для этого установите StoreOffsets опция линеаризации в slLinearizer интерфейс.
sllin.Options.StoreOffsets = true;
При вызове функции линеаризации с помощью sllin, можно вернуть смещения линеаризации в info структура.
[r2yi,info] = getIOTransfer(sllin,'u1','y2');
Затем можно использовать смещения для конфигурирования системного блока LPV. Для этого необходимо сначала преобразовать смещения в требуемый формат. Для примера, в котором используется linearize , см. аппроксимацию LPV модели повышающего преобразователя.
offsets = getOffsetsForLPV(info);
Закройте модель.
bdclose(mdl);
addOpening | addPoint | getCompSensitivity | getIOTransfer | getLoopTransfer | getSensitivity | linearize | slLinearizer