Если ваше приложение включает изменения параметра, которые влияют на рабочую точку модели, необходимо обработать обрезку в пакетном режиме модель для изменений параметра перед линеаризацией. Используйте этот пакетный подход линеаризации при вычислении линейных моделей для линейных отличающихся по параметру систем.
Для получения дополнительной информации о моделях обрезки пакета для изменений параметра смотрите, что Пакет Вычисляет Установившиеся Рабочие точки для Изменения Параметра.
Откройте модель Simulink.
sys = 'watertank';
open_system(sys)
Отличайтесь параметры A
и b
в 10% их номинальной стоимости. Задайте три значения для A
и четыре значения для b
, создав сетку значения 3 на 4 для каждого параметра.
[A_grid,b_grid] = ndgrid(linspace(0.9*A,1.1*A,3),...
linspace(0.9*b,1.1*b,4));
Создайте массив структур параметра, задав имя и узлы решетки для каждого параметра.
params(1).Name = 'A'; params(1).Value = A_grid; params(2).Name = 'b'; params(2).Value = b_grid;
Создайте спецификацию рабочей точки по умолчанию для режима, который указывает, что и образцовые состояния неизвестны и должны быть в устойчивом состоянии в обрезанной рабочей точке.
opspec = operspec(sys);
Обрежьте модель с помощью заданной спецификации рабочей точки, сетки параметра и набора опции. Подавите отображение отчета поиска рабочей точки.
opt = findopOptions('DisplayReport','off'); [op,opreport] = findop(sys,opspec,params,opt);
findop
обрезает модель для каждой комбинации параметра с помощью только одной образцовой компиляции. op
является массивом 3 на 4 объектов рабочей точки, которые соответствуют заданным узлам решетки параметра.
Чтобы вычислить передаточную функцию ввода/вывода с обратной связью для модели, задайте точки ввода и вывода линеаризации как ссылочный вход и образцовый вывод, соответственно.
io(1) = linio('watertank/Desired Water Level',1,'input'); io(2) = linio('watertank/Water-Tank System',1,'output');
Чтобы извлечь несколько разомкнутый цикл и передаточные функции с обратной связью из той же модели, пакет линеаризует систему с помощью интерфейса slLinearizer
. Для получения дополнительной информации смотрите, Отличаются Значения параметров и Получают Несколько Передаточных функций.
Пакет линеаризует модель в обрезанных рабочих точках с помощью заданных точек ввода-вывода и изменений параметра.
G = linearize(sys,op,io,params);
G
является массивом 3 на 4 линеаризовавших моделей. Каждая запись в массиве содержит линеаризацию для соответствующей комбинации параметра в params
. Например, G(:,:,2,3)
соответствует линеаризации, полученной путем устанавливания значений A
и параметров b
к A_grid(2,3)
и b_grid(2,3)
, соответственно. Набор значений параметров, соответствующих каждой записи в образцовом массиве G
, хранится в свойстве SamplingGrid
G
. Например, исследуйте соответствующие значения параметров на линеаризацию G(:,:,2,3)
:
G(:,:,2,3).SamplingGrid
ans = struct with fields: A: 20 b: 5.1667
Когда линеаризация пакета для изменений параметра, можно получить смещения линеаризации, которые соответствуют рабочим точкам линеаризации. Для этого установите опцию линеаризации StoreOffsets
.
opt = linearizeOptions('StoreOffsets',true);
Линеаризуйте модель с помощью заданной сетки параметра и возвратите смещения линеаризации в структуре info
.
[G,~,info] = linearize('watertank',io,params,opt);
Можно затем использовать смещения, чтобы сконфигурировать блок LPV System. Для этого необходимо сначала преобразовать смещения в требуемый формат. Для примера см. Приближение LPV Модели Конвертера Повышения.
offsets = getOffsetsForLPV(info);
findop
| linearize
| linio
| ndgrid